Android 6.0で大きく変わった部分の1つが、アプリに対する「権限の許可」です。アンドロイドが持つさまざまな機能には、勝手に利用されては困るものもあります。たとえば、アドレス帳のデータは、プライバシーに関わる情報なので、アプリが勝手にアクセスできるようでは困ります。また、音声やカメラによる録音、録画も勝手に行われてはプライバシーを保つこともできません。アンドロイドでは、こうした機能を利用するアプリは、ユーザーから「許可」をもらう必要があります。

Android 6.0以前は、権限の許可は、Playストアからアプリをインストール(正確にはダウンロード)する時点で行われていました。しかし、Android 6.0からは、アプリが実行されて、具体的に機能を利用する直前に権限の許可を得ることができるようになりました。ただし、これができるのは、Android 6.0用に作られたアプリだけで、Android 6.0以前に作られた従来型のアプリは、従来通りの動作になります。

これは、何がメリットなのでしょうか? すでにアンドロイドをしばらく使っているユーザーは、通知などを見て、ときどきPlayストアを開き、権限の許可が変更されたアプリのアップデートを行っているはずです。アプリのインストール時に権限の許可を得る方式では、アップデート時に必要とする権限に違いがあれば、再度許可を得なければならないからです。

権限の許可を実行時に得るアプリの場合、権限内容が変更になっても、アップデートにユーザーの操作は不要で、完全に自動で行うことができるようになります。これが最大のメリットです。

また、実行時に処理に必要な権限のみ許可を求めるということは、アプリが必要とする権限を個別に許可を取る、つまり、1つのアプリで、権限別に許可を出す、出さないを決定できるということになります。つまり、このアプリには、メディアファイルへのアクセスは許可しても、カメラ機能へのアクセスは認めないといった運用が可能になります。ただし、このとき、どうなるのかは、アプリ次第です。場合によっては、権限を許可されることが前提で作られているため、権限を得られないと、アプリが終了する可能性もあります。

権限の許可の実際

では、実際に、ストアでアプリをインストールして見ることにしましょう。まず、Android 6.0の権限の許可に対応していない、以前のアプリの場合、従来と同じように「権限の許可」を求めるダイアログボックス(写真01)が表示され、ここで「同意する」ボタンを押さない限り、ダンウロードもインストールも行われません。また、前述のように、権限を必要としないアプリも、ここで確認が必要になっています(写真02)。

写真01: Android 5.0までを想定していたアプリをインストールする場合、従来と同じくインストール時に必要な権限の許可を求めてくる

写真02: 従来型のアプリは、権限が必要なくても確認が必要だった

しかし、Android 6.0の権限の許可に対応したアプリは、何も確認することなく、ダウンロードが開始されます。すでにいくつかのGoogle提供のアプリが対応していました。なお、インストール前に必要な権限を確認する場合は、Playストアのアプリのページの下にある「権限の詳細」を開きます(写真03)。

写真03: インストール前に権限を確認したい場合には、Playストアのアプリぺーじにある「権限の詳細」を使う

このようなアプリは、実際に起動して、権限を利用する処理を行う前に権限の許可を求めてきます(写真04)。アプリは、特定の権限が必要な処理(たとえばカメラ機能の利用)を行う前に、権限の許可をユーザーに求めるため、「requestPermissions」というAPIを呼び出します。このとき、権限が与えられていなければ、アンドロイドは、このようなダイアログボックスを表示して、ユーザーに権限の許可を求めます。

写真04: Android 6.0に対応したアプリは、実行時、権限が必要になったときに許可を求めてくる

個々のアプリに対してユーザーが許可した権限については、「設定 ⇒ アプリ」でアプリごとに確認が可能です。ここで、アプリをタップで選択し、情報ページを開くと、「許可」(写真05)という項目があります。これをタップすると、アプリが要求する権限ごとにオンオフスイッチがあります(写真06)。従来型のアプリの場合、インストール時にこの権限がすべてオンになります。これに対して、Android 6.0の権限の許可に対応したアプリでは、実行に応じて許可をもらっていくに応じて、権限のスイッチがオンになっていきます。

写真05: 「設定 ⇒ アプリ」で個々のアプリのページを開くと、「許可」という項目がある

写真06: 許可をタップすると、アプリが必要としている権限とその許可状態が表示される

ここで権限の許可をオンオフする場合には注意してください。Android 6.0に対応したアプリは、個別の権限の許可に対応できるようになっているため、ユーザーが、一回権限を許可したあと、ここで権限を取り消すことは可能です。ですが、Android 6.0以前のアプリは、原則、インストール時にすべての権限が許可されることを前提に作られているため、実行中に特定の権限が許可されていないという状況には対応できない可能性があることです。きちんと作られたアプリならば、エラーを表示することもできますが、アプリの作り方によっては、権限がないためにそこで異常終了してしまう可能性があります。

グーグルが公開している開発者向けのガイドラインによれば、「理由を説明しろ」、「一度にまとめて権限の許可を得ようとするな」といったことが記載されています。このため、アプリは、許可を得る前に何か説明をしなければなりません。また、場合によっては、権限を許可する意味をユーザーがすぐには理解できない場合もあります。

このために提案されているのが「チュートリアル」です。チュートリアルとは、アプリをはじめて起動したときに、その概要や機能、動作などを説明する機能です。ここで、アプリがどのような機能を持ち、そのためにどういう動作をするのかを説明しておき、その後で、権限の許可を求めるようにして、ユーザーに権限の意味を理解できるようにするというわけです。

そういえば、最近のGoogle製のアプリは、最初にチュートリアルが起動するものが少なくありません(写真07)。これは、権限の許可のための説明という意味もあったわけです。

写真07: 多くのGoogleアプリは、最初に起動したときにチュートリアルを表示するようになった

関連リンク

連載バックナンバーはこちら