Android では、ユーザーに最新技術を提供することも重視されていますが、最優先されているのはユーザーのセキュリティとプライバシーです。このページのチェックリストを一般的なプライバシー ガイドラインとベスト プラクティスとしてご使用ください。
このページで説明しているベスト プラクティスの一部は、クイック リファレンスにも掲載されています。
チェックリスト: 権限リクエストを最小限に抑える
透明性を高め、アプリ体験をユーザーが管理できるようにすることで、ユーザーとの信頼関係を構築します。
- 機能に最低限必要な権限をリクエストする: アプリに大きな変更を加える場合は、リクエスト対象の権限を見直して、アプリの機能でそれが今後も必要かどうかを確認します。
- Android の新しいバージョンでは、権限を必要とせずプライバシーに配慮した方法でデータにアクセス可能になる場合も多くあります。詳しくは、アプリで権限を宣言する必要性を検討するをご覧ください。
- アプリを Google Play で配信している場合、アプリの権限を拒否したユーザーの割合を Android Vitals で確認できます。このデータを使用して、必要な権限が拒否されがちな機能の設計を見直します。
- アプリの機能に権限が必要な理由を説明する: 推奨されるフローに沿って行います。権限のリクエストはアプリの起動時ではなく、権限が必要なときに行い、権限の必要性がユーザーに明確に伝わるようにします。
- ユーザーまたはシステムが権限を複数回拒否する可能性があることに留意する: Android では同じアプリからの権限リクエストを無視して、ユーザーの選択を尊重します。
- 権限が許可されない場合グレースフル デグラデーションを行う: ユーザーが権限を拒否または取り消した場合には、アプリでグレースフル デグラデーションを行う必要があります。たとえば、ユーザーがマイクの権限を許可しない場合は音声入力を無効にします。
- 不要な権限へのアクセス権を削除する: アプリを更新するときは、アプリで不要になった実行時の権限に対してアプリのアクセス権を削除します。
- SDK またはライブラリに必要な権限を把握する: 危険な権限で保護されているデータにアクセスする SDK またはライブラリを使用している場合、ユーザーは通常、その権限がアプリに帰属していると判断します。SDK に必要な権限とその理由を把握しておくようにしてください。
チェックリスト: 位置情報の使用を最小限に抑える
ユーザーの位置情報に関するデータは機密情報です。可能な限り位置情報は使わないようにします。位置情報サービスを使用する必要がある場合は、位置情報の収集を最小限に抑えるための措置を講じてください。以下のチェックリストを使用して、アプリによる位置情報の使用を最小限に抑えます。
- 位置情報を使用しない場合グレースフル デグラデーションを行う: Android 10(API レベル 29)以降では、アプリの使用中もユーザーはアプリの位置情報へのアクセスを制限できます。位置情報への常時アクセス権限がない場合に、グレースフル デグラデーションを行うようにアプリを設計します。
- 付近の Bluetooth デバイスまたは Wi-Fi デバイスを使用する: アプリが Bluetooth または Wi-Fi 経由でユーザーのデバイスを付近のデバイスとペア設定する必要がある場合は、コンパニオン デバイス マネージャーを使用します。これは位置情報の利用許可が不要です。詳しくは、Bluetooth と Wi-Fi の権限についてご覧ください。
- 可能な場合は精度の低い位置情報を使用する: アプリが必要とする位置情報の粒度レベルを確認します。位置情報関連のほとんどのユースケースでは、おおよその位置情報へのアクセスで十分です。
- 必要な場合にのみバックグラウンドで位置情報にアクセスする: ジオフェンスなど、アプリでバックグラウンドでの位置情報が必要な場合は、ユーザーが認識できるように実装します。詳しくは、バックグラウンドでの位置情報の使用に関する考慮事項についての説明をご覧ください。
- アプリがユーザーに表示されている間に位置情報にアクセスする: これにより、アプリが位置情報をリクエストする理由をユーザーがより理解しやすくなります。
- フォアグラウンド サービスをバックグラウンドから開始しない: アプリを通知から起動し、アプリの UI が表示されたときに位置情報コードを実行することを検討してください。ユーザーがアプリの UI から移動した後も、ユーザーが開始した進行中のタスクをサポートするために、位置情報へのアクセスを維持する必要がある場合は、バックグラウンドに移行する前にフォアグラウンド サービスを開始します。
チェックリスト: データを安全に処理する
注: センシティブ データの定義について詳しくは、Google Play デベロッパー ポリシー センターのユーザーデータの記事をご覧ください。
センシティブ データの処理方法において、透明性、安全性、完全性を確保します。次のチェックリストをアプリでユーザーデータをより安全に処理するためのガイダンスとしてご使用ください。
データアクセスを監査する: Android 11(API レベル 30)以降では、データアクセスの監査を実施して、アプリとその依存関係がユーザーの個人データにどのようにアクセスしているかを把握し、予期しないデータアクセスを特定しやすくします。
パッケージの公開設定の必要性を宣言する: Android 11 以降をターゲットとするアプリの場合、デフォルトで、他の特定のアプリが自分のアプリでは非公開になります。他のアプリを自分のアプリに公開する方法についてご確認ください。
対象範囲別ストレージをサポートする: ユーザーがファイルをきめ細かく管理して整理できるように、Android 10(API レベル 29)以降をターゲットとするアプリには、外部ストレージに対する限定的なアクセス権が自動で付与されます(そのようなストレージを対象範囲別ストレージと呼びます)。このようなアプリでアクセスできるのは、固有のディレクトリと、そのアプリが作成したメディアのみです。詳しくは、対象範囲別ストレージに移行する方法をご覧ください。
ユーザーがリセット可能な識別子を使用する: ユーザーのプライバシーを保護するには、ユースケースに対応した最も制限の厳しい識別子を使用します。詳しくは、こちらのドキュメントのリセット可能な識別子のチェックリストをご覧ください。
認識しやすい開示と同意を提供する: Google Play ユーザーデータ ポリシーのおすすめの方法に沿って、認識しやすい開示と同意のリクエストをユーザーに提示します。
アプリによるデータの使用を宣言する: Google Play Console のデータ セーフティ フォームに適切に記入をして、アプリが収集および共有するユーザーデータの種類について、ユーザーに説明します。
センシティブ データを他のアプリに安全に渡す: 明示的インテントを使用して、センシティブ データを別のアプリに渡します。他のアプリのアクセスをさらに制限するには、1 回限りのデータアクセス権限を付与します。
Logcat メッセージやログファイルにセンシティブ データを含めない: 詳細はこちらをご覧ください。
チェックリスト: リセット可能な識別子を使用する
ユーザーのプライバシーを尊重し、リセット可能な識別子を使用します。詳しくは、一意の識別子に関するベスト プラクティスをご覧ください。
IMEI またはデバイスのシリアル番号にはアクセスしない: これらの識別子は永続的なものです。Android 10(API レベル 29)以降をターゲットとするアプリがこれらの識別子にアクセスしようとすると、
SecurityException
が発生します。ユーザー プロファイル作成や広告のユースケースでは広告 ID のみを使用する: カスタマイズを行う場合、広告トラッキングに関するユーザー設定を常に考慮します。重要: これは Google Play では必須です。
非公開環境に保存されている GUID を使用する: ほとんどの非広告のユースケースでは、非公開環境に保存されているグローバルに一意の ID(GUID)を使用します(GUID はアプリ別の ID です)。
所有するアプリで SSAID を使用する: ユーザーがアカウントにログインしなくてもデベロッパー所有のアプリ間で状態を共有できるようにするには、Secure Settings Android ID(SSAID)を使用します。ログアウトしたユーザーの設定をアプリ間で保存する方法の詳細をご確認ください。
チェックリスト: ユーザー向けのプライバシー機能をサポートする
センシティブ データの処理方法において、透明性、安全性、完全性を確保します。次のチェックリストをアプリでユーザーデータを安全に処理するためのガイダンスとしてご使用ください。
機密情報にアクセスする理由を示す: Android 12(API レベル 31)以降では、ユーザーはシステム設定のプライバシー ダッシュボードにアクセスして、アプリが位置情報、マイク、カメラの情報にアクセスするタイミングに関する詳細を確認できます。詳しくは、この説明をユーザーに提示する方法をご覧ください。
アプリの休止状態を無効にするようユーザーに依頼する: Android 11(API レベル 30)以降をターゲットとするアプリでは、ユーザーがそのアプリを数か月間使用しなかった場合、システムがそのアプリを一時停止状態にします。詳しくは、アプリの休止状態とそれを無効にするようユーザーに依頼する方法をご覧ください。
センシティブ データを他のアプリに安全に渡す: センシティブ データを別のアプリに渡す必要がある場合は、明示的インテントを使用します。他のアプリのアクセスをさらに制限するには、1 回限りのデータアクセス権限を付与します。
アプリが音声や画像をキャプチャしていることを視覚的に示す: アプリがフォアグラウンドで実行されている場合でも、マイクやカメラからキャプチャしていることをリアルタイムで示します。Android 9(API レベル 28)以降では、アプリがバックグラウンドで実行されている場合、マイクやカメラへのアクセスは許可されません。
プライバシー クイック リファレンス
プライバシー クイック リファレンスは、Android で役立つプライバシー API と、アプリを設計する際に念頭に置くべきベスト プラクティスのクイック リファレンスです。
このクイック リファレンスは PDF 形式でもダウンロードできます。