米グーグルは2015年5月28日、開発者向けイベント「Google I/O 2015」の会場で次期版Android(開発コード:Android M)の新機能などを発表した。また同日、Android Mの開発者向けプレビュー版を公開した。これらによって、Android Mではアプリの権限モデルとその管理方法が従来と大幅に変わることが明らかになった。

 Androidはこれまで、アプリに付与する権限について事前許可を求める権限モデルを採用してきた。一方iOSでは、アプリが何らかの動作権限を必要とした際にユーザーにその都度許可を求める権限モデルを採用している。

 Android方式の問題は、権限群を一括許可するか、一括拒否するかのどちらかしか選べないことにある。不要あるいは危険な動作権限を要求するアプリに対しては、「インストールしない」か「リスクを覚悟してインストールする」かの二択を迫られていた。これに対し、iOSのような都度許可方式であれば、不要な機能に対する権限を与えずにアプリを使用できる。

権限モデルを都度許可方式に

 2015年第3四半期のリリースが予定される次期版Android(開発コード:Android M)では、アプリの権限モデルが都度許可方式に変更される。これはAndroid登場以来の大転換だ。API(Application Programming Interface)には、権限の付与状態を調べたり、権限を要求したりするための関数が追加されており、それらを使うことでアプリは必要になったタイミングで権限を要求できる。またAndroid M以降用に作成されたアプリについては、インストール時に権限の許可を求めない仕組みになった。グーグルでは、今回の新しい都度許可方式の権限付与を「Runtime Permissions」と呼んでいる。

 ここではAOSP(Android Open Source Project)が提供しているRuntime Permissionsのサンプルアプリを、Android Mの開発者向けプレビュー版で動作させてみた(図1)。「SHOW CAMERA PREVIEW」ボタンを押すと「写真の撮影と動画の記録」という権限を許可するかどうかを尋ねるダイアログが表示され、許可することでカメラにアクセスできるようになることが分かる。なお、従来バージョンのAndroid向けに作成されたアプリ(以下、レガシーアプリ)をAndroid Mで利用する場合は、これまで通りの事前許可モデルが採用される。

図1●Android Mの新しいアプリ権限モデルを利用したサンプルアプリの動作
図1●Android Mの新しいアプリ権限モデルを利用したサンプルアプリの動作
アプリが、インストール時ではなく、必要に応じて権限の許可をユーザーに求められるようになったことが分かる。サンプルアプリは、AOSPが提供するもの(https://github.com/googlesamples/android-RuntimePermissions)を使用した。
[画像のクリックで拡大表示]