高品質なアプリの基盤を構築するには、アプリの中核品質に関するガイドラインに準拠してください。
このガイドラインでは、すべてのアプリが満たすべき最低限の品質を定義しています。
アダプティブ アプリの品質
Android アプリは、コンパクトなスマートフォンからタブレット、折りたたみ式デバイス、デスクトップ、コネクテッド ディスプレイ、車載インフォテインメント システム、テレビ、XR まで、さまざまなデバイスで動作します。分割画面やデスクトップ ウィンドウなどのウィンドウ モードでは、アプリを画面のサイズ変更可能な部分で実行できます。
アダプティブ アプリの品質に関するガイドラインとアプリの中核品質に関するガイドラインに沿って、次のことを行います。
- すべてのフォーム ファクタとディスプレイ サイズに最適化されたアプリを作成する
- Google Play の掲載情報と検索でアプリを上位に表示する
- より多くのユーザーを獲得し、ユーザー維持率を向上させる
ガイドライン
以下のコア ガイドラインは、基本的な高品質アプリを構築するのに役立ちます。
ユーザー エクスペリエンス
標準的な Android のビジュアル デザインとインタラクション パターンは、一貫性のある直感的なユーザー エクスペリエンスを提供します。
可能な場合は、Android プラットフォーム コンポーネントの代わりにマテリアル デザイン コンポーネントを使用して、アプリのユーザー インターフェースを作成します。マテリアル デザインは、Android の最新のルック アンド フィールを提供するとともに、Android のバージョン間で UI の一貫性を確保します。
ユーザビリティ
| ID | テスト | 説明 |
|---|---|---|
| Consistent_UX | T-Consistent_UX, T-SD_Card |
アプリは、すべてのフォーム ファクタのすべてのアプリ ユースケースで一貫したユーザー エクスペリエンスを提供します。 |
| App_Switcher | T-App_Switcher、 T-SD_Card |
フォーカスが別のアプリに切り替わると、アプリはバックグラウンドに移行します。最近使用したアプリアプリ スイッチャーから再開すると、アプリはフォアグラウンドに戻ります。 |
| Sleep_Resume | T-Sleep_Resume、 T-SD_Card |
アプリがフォアグラウンド アプリの場合、デバイスがスリープ状態になると一時停止し、デバイスが復帰すると再開します。 |
| Lock_Resume | T-Lock_Resume, T-SD_Card |
アプリがフォアグラウンド アプリの場合、デバイスがロックされると一時停止し、デバイスのロックが解除されると再開します。 |
ユーザー インターフェース
| ID | テスト | 説明 |
|---|---|---|
| Display_State_Parity | T-Orientation_Transitions |
ディスプレイの向きと折りたたみ状態が、基本的に同じ機能と動作を公開し、同等の機能を維持している。 |
| Fullscreen_Display | T-Orientation_Transitions |
アプリは、縦向きと横向きの両方でアプリ ウィンドウ全体に表示され、デバイスの折りたたみや展開などの構成変更によってレターボックス表示されることはありません。 画面の形状について若干のばらつきを補正するための若干のレターボックス表示は認められます。 |
| Orientation_Transitions | T-Orientation_Transitions | ディスプレイの向きやデバイスの折りたたみ / 展開の急な変化に適切に対応し、ディスプレイのレンダリングの問題が発生せず、状態が失われない。 |
画質
| ID | テスト | 説明 |
|---|---|---|
| Graphic_Quality | T-Graphic_Quality |
目立った歪み、ぼやけ、粗さを生じさせずに、グラフィックス、テキスト、画像、その他の UI 要素を表示します。
|
| Line_Length | T-Line_Length | サポートしている各言語で、行の長さを 45 ~ 75 文字(スペースを含む)に制限することで、テキストとテキスト ブロックの読みやすさを確保します。 |
| Theme_Support | T-Theme_Support | アプリのコンテンツ、アプリがアクセスするすべてのウェブ コンテンツは、ライトモードとダークモードの両方に対応している。 |
ナビゲーション
| ID | テスト | 説明 |
|---|---|---|
| Back_Button_Nav | T-Back_Nav | アプリは標準的な戻るボタンのナビゲーションをサポートし、画面上のカスタムの戻るボタン プロンプトは一切使用しません。 |
| Back_Gesture_Nav | T-Back_Nav | 前の画面 / ホーム画面に戻るためのジェスチャー ナビゲーションをサポートします。 |
| State_Preservation | T-State_Preservation、 T-Back_Nav |
アプリは、フォアグラウンドから離れる際にユーザーやアプリの状態を保存し、「戻る」ナビゲーションや他の状態変化により誤ってデータが消失するのを防ぐ。 フォアグラウンドに戻る際、保存された状態や、保留されていたステートフル トランザクションを復元する。たとえば、編集可能なフィールドに対する変更、ゲームの進捗、メニュー、動画、アプリのその他のセクションなどです。
|
通知
| ID | テスト | 説明 |
|---|---|---|
| Notification_Quality | T-Notification_Quality |
通知では、アプリに関連する情報が提供されます。
|
| Conversation_Quality | T-Notification_Quality |
メッセージ アプリ、ソーシャル アプリ、会話の場合:
|
ユーザー補助
| ID | テスト | 説明 |
|---|---|---|
| Touch_Target_Size | T-Touch_Target_Size | タップ ターゲットが 48 dp 以上である。マテリアル デザインのターゲット サイズのガイドラインをご覧ください。 |
| Visual_Contrast | T-Visual_Contrast |
アプリのテキストとフォアグラウンドのコンテンツは、アプリの背景に対して次のコントラスト比を維持します。
詳細については、色とコントラストをご覧ください。 |
| Content_Description | T-Content_Description | contentDescription を使用して、TextView 以外の各 UI 要素を記述する。 |
機能
アプリは、以下の機能動作を実装する必要があります。
音声
| ID | テスト | 説明 |
|---|---|---|
| Audio_Playback_Start | T-Audio_Playback_Start |
ユーザーが音声の再生を開始したら、アプリは 1 秒以内に次のいずれかを行う必要があります。
|
| Audio_Focus_Request | T-Audio_Focus_Request | アプリは、音声の再生が開始されたときに音声フォーカスをリクエストし、再生が停止したときに音声フォーカスを放棄する必要があります。 |
| Audio_Focus_Change | T-Audio_Focus_Change | アプリは、他のアプリからの音声フォーカス リクエストを処理する必要があります。(例: 別のアプリで音声が再生されたときに再生音量を小さくする)。 |
| Audio_Playback_Background | T-Audio_Playback_Background | アプリはバックグラウンド再生をサポートする必要があります。 アプリが表示されなくなったときにシステムがアプリプロセスを強制終了しないように、アプリはフォアグラウンド サービスを使用する必要があります。また、アプリが実行中であることをユーザーに知らせるために、ステータスバーまたはロック画面に、永続的で閉じることができない通知を表示する必要があります。 ユーザーは、通知やロック画面のコントロール、または接続されたアクセサリーのコントロールを使用して再生を操作できる必要があります。 |
| Audio_Notification_Style | T-Audio_Notification_Style | バックグラウンドで音声を再生する場合、アプリは MediaStyle でスタイル設定された通知を作成する必要があります。 |
| Audio_Playback_Resume | T-Audio_Playback_Resume | アプリがバックグラウンドにあり、音声が一時停止している場合、アプリがフォアグラウンドに戻ったら、音声を再開するか、再生が一時停止状態であることをユーザーに示す必要があります。 |
動画
| ID | テスト | 説明 |
|---|---|---|
| Video_PiP | T-Video_PiP | 動画を再生する場合、ピクチャー イン ピクチャーでの再生をサポートする必要があります。 |
| Video_Encoding | T-Video_Encoding | アプリが動画をエンコードする場合は、HEVC 動画圧縮標準を使用する必要があります。 |
| Video_Playback_Background | T-Video_Playback_Background | アプリが最前面に表示されていない場合(アプリ ウィンドウが次の状態の場合を含む)に、動画のバックグラウンド再生をサポートしている。
|
共有
| ID | テスト | 説明 |
|---|---|---|
| System_Sharesheet | T-System_Sharesheet | アプリがコンテンツを共有するときは、Android Sharesheet を使用する。アプリは、カスタム ソリューションでは利用できないターゲットを提案できます。 |
バックグラウンド サービス
| ID | テスト | 説明 |
|---|---|---|
| Background_Service_Optimization | T-Background_Service_Optimization |
ユーザーのデバイスがスムーズに動作するよう、バックグラウンドで必要以上に長時間にわたってサービスが実行されない。 注: システムによってバックグラウンド サービスに関するさまざまな制限が適用されます。 バックグラウンド サービスを不適切に使用している例を以下に示します。
詳細については、バックグラウンド タスクの概要をご覧ください。 |
パフォーマンスと安定性
アプリは、最適なパフォーマンス、安定性、互換性、応答性を提供する必要があります。
パフォーマンス
| ID | テスト | 説明 |
|---|---|---|
| App_Startup_Time | T-App_Startup_Time | 迅速に読み込みます。読み込み時間が 2 秒を超える場合は、ユーザーに対するフィードバック(進行状況インジケーターや同様の合図)を画面に表示します。 |
| Rendering_Performance | T-Rendering_Performance | アプリは 16 ミリ秒(またはそれ以下)ごとにフレームをレンダリングし、1 秒あたり 60 フレーム以上を表示します。レンダリングの問題については、遅いレンダリングをご覧ください。 |
| StrictMode_Compliance | T-StrictMode_Compliance | StrictMode が有効になっている場合(StrictMode のテストのセクションを参照)、アプリのテスト時に赤色のフラッシュ(StrictMode からのパフォーマンス警告)は表示されません。 |
安定性
| ID | テスト | 説明 |
|---|---|---|
| Stability_ANR | T-Stability_ANR | アプリがクラッシュしたり、UI スレッドをブロックして ANR(アプリケーション応答なし)エラーを引き起こしたりしません。Google Play のリリース前レポートを利用し、安定性に関する潜在的な問題を特定してください。デプロイ後は、Google Play Console の Android Vitals ページをモニタリングします。 |
SDK
| ID | テスト | 説明 |
|---|---|---|
| Android_Platform_Compatibility | T-Android_Platform_Compatibility | アプリが、クラッシュしたり、コア機能に大きな影響を与えたりすることなく、Android プラットフォームの最新の公開バージョンで動作する。 |
| Target_SDK_Version | T-Target_SDK_Version | アプリのモジュール build.gradle ファイルで targetSdk 値を設定して、Google Play の要件を満たすために必要な最新の Android SDK をターゲットに設定する。 |
| Compile_SDK_Version | T-Target_SDK_Version | アプリのモジュール build.gradle ファイルで compileSdk 値を設定して、最新の Android SDK でアプリを構築している。 |
| SDK_Maintenance | T-SDK_Maintenance、 T-Non_SDK_Interfaces |
使用されている Google またはサードパーティの SDK がすべて最新である。これらの SDK の改善(安定性、互換性、セキュリティなど)が、適切なタイミングでユーザーに提供される。 Google SDK では、利用できる場合には Google Play 開発者サービスの SDK を使用する。これらの SDK には下位互換性があり、自動更新を受け取れ、アプリのパッケージ サイズを削減して、オンデバイスのリソースを効率的に使用できる。 |
| Non_SDK_Interfaces | T-Non_SDK_Interfaces | アプリは非 SDK インターフェースを使用していない。 |
| Production_Build_Quality | T-Production_Build_Quality | 製品版アプリにはデバッグ ライブラリが含まれていない。アプリにデバッグ ライブラリが含まれていると、パフォーマンスやセキュリティの問題を引き起こす可能性がある。 |
電池
| ID | テスト | 説明 |
|---|---|---|
| Power_Management | T-Power_Management |
アプリが電源管理機能の Doze とアプリ スタンバイを適切にサポートしている。 アプリは、電源メンテナンスの免除をリクエストできます。Doze とアプリ スタンバイ用に最適化するのその他のユースケースのサポートをご覧ください。 |
プライバシーとセキュリティ
アプリがユーザーデータと個人情報を安全に処理し、適切なレベルの権限を提供している。
Google Play ストアで公開されるアプリは、ユーザーのプライバシーを保護するために、Google Play のユーザーデータに関するポリシーにも準拠する必要があります。
権限
| ID | テスト | 説明 |
|---|---|---|
| Minimize_Permissions | T-Minimize_Permissions | アプリは、現在のユースケースのサポートに必要な最小限の権限のみをリクエストします。位置情報などの権限については、可能であれば、精細な位置情報ではなく、おおよその位置情報を使用します。権限のリクエストを最小限に抑えるをご覧ください。 |
| Sensitive_Permissions | T-Sensitive_Permissions |
アプリは主要なユースケースに直接関係がある場合にのみ、センシティブ データ(SMS、通話履歴などのパーミッション グループ、位置情報)や料金がかかるサービス(電話アプリや SMS など)へのアクセス権限をリクエストする。これらの権限に伴う影響について、ユーザーに認識しやすい開示を行う必要があります。 アプリでの権限の使用方法によっては、機密情報にアクセスせずにアプリのユースケースに対応できる別の方法があるかもしれません。たとえば、ユーザーの連絡先に関連する権限をリクエストするのではなく、暗黙的インテントを使用してアクセスをリクエストします。 |
| Runtime_Permissions | T-Runtime_Permissions | アプリの起動時ではなく、機能がリクエストされたときに実行時の権限をリクエストします。 |
| Permission_Rationale | T-Permission_Rationale | アプリは権限が必要な理由を明確に説明している。 |
| Graceful_Degradation | T-Graceful_Degradation | ユーザーが権限を拒否または取り消した場合、アプリはグレースフル デグラデーションを行います。アプリがユーザーのアクセスを完全に妨げてはなりません。 |
データとファイル
| ID | テスト | 説明 |
|---|---|---|
| Sensitive_Data_Storage | T-Sensitive_Data_Storage、 T-Sensitive_Data_Handling |
すべてのセンシティブ データはアプリの内部ストレージに保存します。 |
| Sensitive_Data_Logging | T-Sensitive_Data_Logging | ユーザーの個人情報や機密情報がシステムログやアプリ固有のログに記録されない。 |
| Hardware_IDs | T-Hardware_IDs | アプリでは、識別目的で IMEI などの再設定不可能なハードウェア ID を使用しない。 |
データのバックアップと復元
| ID | テスト | 説明 |
|---|---|---|
| App_Data_Backup | T-App_Data_Backup |
アプリは、クラウド バックアップとデバイス間(D2D)転送で、ユーザーデータ、設定、アプリの状態を保持します。 自動バックアップを実装し、 |
| App_Logins_Restoration | T-App_Logins_Restoration |
ユーザーが新しいデバイスをセットアップすると、アプリがユーザー アカウントとログイン状態を自動的に復元する。 認証情報マネージャーを使用して認証情報の復元を実装し、手動ログインやアカウント復元フローを強制することなく、ユーザーを自動的に再認証します。 |
ID
| ID | テスト | 説明 |
|---|---|---|
| Autofill_Hints | T-Autofill_Hints | アカウント認証情報やその他の機密情報(クレジット カード情報、住所、電話番号など)を自動入力するためのヒントを提供する。 |
| Credential_Manager | T-Credential_Manager | アプリに Android 向け認証情報マネージャーを統合して、パスキー、フェデレーション ID、パスワードのサポートを統合したシームレスなログイン エクスペリエンスを実現している。 |
| Biometric_Authentication | T-Biometric_Authentication | 生体認証に対応し、支払いや機密情報(重要なユーザー ドキュメントなど)を保護する。 |
アプリ コンポーネント
| ID | テスト | 説明 |
|---|---|---|
| Component_Export | T-Component_Export |
すべてのアクティビティ、サービス、ブロードキャスト レシーバ、特にコンテンツ プロバイダ用に明示的に 他のアプリとデータを共有するアプリケーション コンポーネント、他のアプリから呼び出されるコンポーネントのみがエクスポートされる。 |
| Component_Permissions | T-Component_Permissions |
すべてのインテントとブロードキャストを、次のベスト プラクティスに沿って設定する。
|
| Component_Protection | T-Component_Protection |
アプリ間でコンテンツを共有するすべてのコンポーネントは、カスタム権限に アプリはインストール済みパッケージのリストにアクセスする必要がないようにする。 |
ネットワーキング
| ID | テスト | 説明 |
|---|---|---|
| Network_Security_Traffic | T-Network_Security_Traffic | すべてのネットワーク トラフィックは SSL 経由で送信されます。 |
| Network_Security_Configuration | T-Network_Security_Configuration | アプリがネットワーク セキュリティ構成を宣言している。 |
| Security_Provider_Initialization | T-Security_Provider_Initialization | アプリが Google Play 開発者サービスを使用する場合、アプリの起動時にセキュリティ プロバイダが初期化される。 |
WebView
| ID | テスト | 説明 |
|---|---|---|
| WebView_Asset_Loader | T-WebView_Asset_Loader、 T-WebView_Navigation |
ローカル コンテンツへのアクセスに setAllowUniversalAccessFromFileURLs() を使用しないでください。代わりに WebViewAssetLoader を使用します。 |
| WebView_JavaScript | T-WebView_JavaScript、 T-WebView_Navigation |
ウェブビューで、信頼できないコンテンツに対して Android 6.0(API レベル 23 以降)では、代わりに HTML メッセージ チャネルを使用する。 |
実行
| ID | テスト | 説明 |
|---|---|---|
| App_Bundles | T-App_Bundles |
アプリの APK の外部からコードを動的にロードしない。Android App Bundle(Play Feature Delivery と Play Asset Delivery を含む)を使用する。 2021 年 8 月から、Google Play ストアのすべての新しいアプリにおいて、Android App Bundle の使用が必須となっている。 |
暗号化
| ID | テスト | 説明 |
|---|---|---|
| Cryptographic_Algorithms | T-Cryptographic_Algorithms | アプリは、プラットフォームが提供する強力な暗号アルゴリズムと乱数生成ツールを使用している。また、アプリはカスタム アルゴリズムを実装していません。 |
Google Play
アプリを Google Play で公開できるようにします。
ポリシー
| ID | テスト | 説明 |
|---|---|---|
| Play_Content_Policies | T-Play_Content_Policies | アプリが Google Play デベロッパー コンテンツ ポリシーの利用規約を厳守し、不適切なコンテンツを提供せず、他者の知的財産やブランドを使用していない。 |
| Play_Content_Rating | T-Play_Content_Policies | コンテンツのレーティングに関するガイドラインに基づいて、アプリの対象ユーザー(成熟度)が適切に設定されている。 |
アプリの詳細ページ
| ID | テスト | 説明 |
|---|---|---|
| Play_Feature_Graphic | T-Play_Feature_Graphic, T-Play_Graphic_Assets |
アプリのフィーチャー グラフィックを、こちらのサポート記事で概説されているガイドラインに準拠させます。次の点をご確認ください。
|
| Play_Device_References | T-Play_Graphic_Assets | アプリのスクリーンショットや動画で、Android デバイス以外のデバイスを表示したり、そうしたデバイスに言及したりしません。 |
| Play_Misleading_Content | T-Play_Graphic_Assets | スクリーンショットや動画で、アプリのコンテンツとエクスペリエンスについて誤解を招くような表現をしないようにします。 |
ユーザーのサポート
| ID | テスト | 説明 |
|---|---|---|
| Play_User_Reviews | T-Play_Content_Policies | Google Play ページの [レビュー] タブでユーザーから報告された一般的なバグについては、再現性がありさまざまなデバイスで発生する場合、対処します。バグがごく一部のデバイスでしか発生しない場合でも、特に人気のあるデバイスや新しいデバイスであれば、対処する必要があります。 |
テスト環境
次のようにテスト環境をセットアップします。
エミュレータのテスト: Android Emulator は、さまざまな Android バージョンと画面解像度でのアプリのテストに最適なツールです。ターゲット ユーザーの最も一般的なフォーム ファクタとハードウェア/ソフトウェアの組み合わせを代表する、エミュレートされたデバイス(AVD)を設定します。少なくとも次のエミュレータを使用して、さまざまなフォーム ファクタをテストします。
- 折りたたみ式デバイス: 7.6 インチ、ディスプレイが外側を向くデバイス(AVD Manager のスマートフォンに掲載されています)
- タブレット: Pixel C 9.94 インチ(2,560 px x 1,800 px)
- モバイルアプリの通知をテストするために、モバイル デバイス / エミュレータを Wear OS エミュレータとペア設定する場合: Wear OS Round 1.84 インチ
ハードウェア デバイス: テスト環境では、主要なフォーム ファクタと、ユーザーが利用できるハードウェアとソフトウェアの典型的な組み合わせとして、実際のハードウェア デバイスをいくつか用意します。市販されているあらゆるデバイスでテストを実施する必要はありません。1 つのフォーム ファクタにつき 1 ~ 2 台のデバイスを使い、代表的ないくつかのデバイスでのみテストを行います。
デバイスのテストラボ: Firebase Test Lab などのサードパーティのサービスを使用して、さまざまなデバイスでアプリをテストすることもできます。
最新バージョンの Android でテストする: ターゲット ユーザーの典型的な Android バージョンをテストするだけでなく、最新バージョンの Android についてもテストして、最新の動作変更がアプリのユーザー エクスペリエンスに悪影響を及ぼさないことを確認する必要があります。
単体テスト、統合テスト、UI テストなど、テストに関する詳細なガイダンスについては、Android アプリのテストの基礎をご覧ください。
StrictMode
パフォーマンス テストでは、アプリで StrictMode を有効にします。StrictMode を使用して、パフォーマンス、ネットワーク アクセス、ファイルの読み取りと書き込みに影響する可能性のあるオペレーションをキャッチします。メインスレッドと他のスレッドの両方で、問題のあるオペレーションを探します。
StrictMode.ThreadPolicy.Builder を使用してスレッドごとのモニタリング ポリシーを設定し、detectAll() を使用して ThreadPolicy でサポートされているすべてのモニタリングを有効にします。
penaltyFlashScreen() を使用して、ThreadPolicy のポリシー違反の視覚的な通知を有効にします。
テスト
アプリの中核品質テストは、アプリの基本的な品質を評価するのに役立ちます。複数のテストを組み合わせることも、テスト計画にテストのグループを統合することもできます。
ユーザー エクスペリエンス
一貫性のある直感的なユーザー エクスペリエンスをテストします。
ユーザビリティ
| ID | 機能 | 説明 |
|---|---|---|
| T-Consistent_UX | Consistent_UX |
アプリのすべての部分(すべての画面、ダイアログ、設定、すべてのユーザーフロー)に移動します。 次の操作を行います。
|
| T-App_Switcher | App_Switcher | 各アプリ画面から、実行中の別のアプリに切り替えてから、[最近] アプリ スイッチャーを使用してテスト対象のアプリに戻ります。 |
| T-Sleep_Resume | Sleep_Resume | 電源ボタンを押してデバイスをスリープ状態にしてから、電源ボタンをもう一度押して画面を復帰させます。 |
| T-Lock_Resume | Lock_Resume | デバイスで画面ロックを設定します。電源ボタンを押してデバイスをスリープ状態にします(デバイスがロックされます)。次に、電源ボタンをもう一度押して画面を復帰させ、デバイスのロックを解除します。 |
SDカード
| ID | 機能 | 説明 |
|---|---|---|
| T-SD_Card | Consistent_UX |
アプリをデバイスの SD カードにインストールして、コア機能のテストを実施します(アプリがこのインストール方法をサポートしている場合)。 アプリを SD カードに移動するには、アプリの [設定] をご覧ください。 |
ユーザー インターフェース
| ID | 機能 | 説明 |
|---|---|---|
| T-Orientation_Transitions | Display_State_Parity、 Fullscreen_Display、 Orientation_Transitions |
アプリの各画面で、少なくとも 3 回、デバイスを横向きと縦向きに回転させ、折りたたみ状態と展開状態を切り替える。 アプリが次の処理を行うことを確認します。
|
画質
| ID | 機能 | 説明 |
|---|---|---|
| T-Graphic_Quality | Graphic_Quality | アプリのすべての機能を使用します。グラフィックス、テキスト、画像、その他の UI 要素を含むすべてのビジュアルに、歪み、ぼやけ、粗さがないことを確認します。 |
| T-Line_Length | Line_Length |
アプリ内のすべてのテキスト ブロックを確認します。テキストとテキスト ブロックの行の長さが、読みやすさを考慮して 45 ~ 75 文字(スペースを含む)に制限されていることを確認します。 次のことを確認します。
|
| T-Theme_Support | Theme_Support | ライトモードとダークモードですべてのテキストが読み取れることを確認します。すべてのビジュアルが、ライトモードとダークモードで明確に識別でき、美しく表示されることを確認します。 |
ナビゲーション
| ID | 機能 | 説明 |
|---|---|---|
| T-Back_Nav | Back_Button_Nav、 Back_Gesture_Nav |
アプリのすべての部分(すべての画面、ダイアログ、設定、すべてのユーザーフロー)に移動します。 各アプリの画面で、戻るボタンを押すか、戻るスワイプ操作を行います。アプリは前の画面またはホーム画面に移動する必要があります。 |
| T-State_Preservation | State_Preservation | 各アプリの画面で、デバイスのホームキーを押すか、ジェスチャー ナビゲーションで上にスワイプし、[すべてのアプリ] 画面からアプリを再起動します。 |
通知
| ID | 機能 | 説明 |
|---|---|---|
| T-Notification_Quality | Notification_Quality、 Conversation_Quality |
通知ドロワーで、アプリが表示できるあらゆるタイプの通知を表示させて確認します。該当する場合は通知を展開し(Android 4.1 以降)、利用可能なすべてのアクションをタップします。 |
ユーザー補助
| ID | 機能 | 説明 |
|---|---|---|
| T-Touch_Target_Size | Touch_Target_Size | すべてのディスプレイのサイズと設定で、タップ ターゲットが一貫性を持ってアクセス可能なサイズと位置を保持していることを確認する。ユーザー補助に関する情報は、ユーザー補助検証ツールをご覧ください。 |
| T-Visual_Contrast | Visual_Contrast | すべての視覚要素のコントラストを確認します。 |
| T-Content_Description | Content_Description | TextView 以外のすべての UI 要素にコンテンツの説明があることを確認します。 |
機能
アプリが次の機能動作を実装していることを確認します。
音声
| ID | 機能 | 説明 |
|---|---|---|
| T-Audio_Playback_Start | Audio_Playback_Start | 音声の再生を開始します。1 秒以内にアプリが音声の再生を開始するか、音声データの再生準備中であることを示すインジケーターが表示されることを確認します。 |
| T-Audio_Focus_Request | Audio_Focus_Request | 音声の再生を開始します。アプリは音声フォーカスをリクエストする必要があります。音声再生が停止すると、アプリは音声フォーカスを放棄する必要があります(Android 12(API レベル 31)以降を対象とするアプリでは自動的に行われます)。 |
| T-Audio_Focus_Change | Audio_Focus_Change | 音声の再生を開始します。別のアプリで音声再生を開始します。アプリは音声フォーカスの変更に応答し、音声再生を停止するか、再生音量を下げる必要があります。 |
| T-Audio_Playback_Background | Audio_Playback_Background | 音声の再生を開始します。別の音声以外のアプリをフォアグラウンド アプリとして操作します。アプリはバックグラウンドで音声を再生し続け、ステータスバーに通知を表示する必要があります。通知に表示されるコントロールを使用して再生を管理できることを確認します。 デバイスの画面をロックします。アプリはバックグラウンドで音声を再生し続け、ロック画面に通知を表示する必要があります。通知に表示されるコントロールを使用して再生を管理できることを確認します。 |
| T-Audio_Notification_Style | Audio_Notification_Style | 音声の再生を開始します。別の音声以外のアプリをフォアグラウンド アプリとして操作します。アプリがバックグラウンドで音声を再生し続け、MediaStyle でスタイル設定された通知を作成したことを確認します。メディア コントロールを適切に操作するをご覧ください。 |
| T-Audio_Playback_Resume | Audio_Playback_Resume | 音声の再生を開始します。別の音声以外のアプリをフォアグラウンド アプリとして操作します。アプリを操作してトップアプリにします。音声が再開されるか、音量が元に戻るはずです。それ以外の場合、アプリは再生が一時停止されていることをユーザーに示す必要があります。 |
動画
| ID | 機能 | 説明 |
|---|---|---|
| T-Video_PiP | Video_PiP | アプリの動画再生をピクチャー イン ピクチャー モードで有効にします。 |
| T-Video_Encoding | Video_Encoding | アプリが HEVC 動画圧縮標準を使用して動画をエンコードしていることを確認します。 |
| T-Video_Playback_Background | Video_Playback_Background | 動画の再生を開始します。アプリ ウィンドウを最小化し、別のアプリを開いてアプリ ウィンドウをバックグラウンドに移動します。デスクトップ対応デバイスで、アプリ ウィンドウを表示されているデスクトップの外に移動します。すべての場合において、動画の再生が中断されることなく継続されることを確認します。 |
共有
| ID | 機能 | 説明 |
|---|---|---|
| T-System_Sharesheet | System_Sharesheet | インテントを作成し、インテントを引数として startActivity() を呼び出してアクティビティを開始します。Android Sharesheet を使用するをご覧ください。アプリに Android Sharesheet が表示されます。 |
バックグラウンド サービス
| ID | 機能 | 説明 |
|---|---|---|
| T-Background_Service_Optimization | Background_Service_Optimization | アプリの主要な機能をすべて使用します。長時間実行されるバックグラウンド サービスが開始されていないことを確認します。 別のアプリに切り替えて、アプリをバックグラウンドに移動します。[設定] に移動し、アプリがバックグラウンドで実行されているときにサービスが実行されているかどうかを確認します。Android 4.0 以降では、[アプリ] 画面に移動し、[実行中] タブでアプリを見つけます。 |
パフォーマンスと安定性
パフォーマンス、安定性、ピクセル単位で完璧なビジュアルを確認します。
パフォーマンス
| ID | 機能 | 説明 |
|---|---|---|
| T-App_Startup_Time | App_Startup_Time | アプリを起動します。アプリが迅速に読み込まれること、または読み込み時間が 2 秒を超える場合は進行状況インジケーターや同様の合図が表示されることを確認します。 |
| T-Rendering_Performance | Rendering_Performance | アプリの主要な機能をすべて使用します。アプリが 1 秒あたり 60 フレーム以上でレンダリングされることを確認します。[HWUI レンダリングのプロファイル作成] オプションを使用して、アプリをテストします。 |
| T-StrictMode_Compliance | StrictMode_Compliance |
アプリで ガベージ コレクションと、それがユーザー エクスペリエンスに与える影響に細心の注意を払います。 |
安定性
| ID | 機能 | 説明 |
|---|---|---|
| T-Stability_ANR | Stability_ANR | アプリの主要な機能をすべて使用します。アプリがクラッシュしたり、UI スレッドをブロックして ANR(アプリケーション応答なし)エラーを引き起こしたりしないことを確認します。Google Play のリリース前レポートを確認し、安定性に関する潜在的な問題を特定してください。 |
SDK
| ID | 機能 | 説明 |
|---|---|---|
| T-Android_Platform_Compatibility | Android_Platform_Compatibility | Android プラットフォームの最新の公開バージョンでアプリを実行します。すべての主要な機能を使用する。アプリがクラッシュせず、コア機能が失われることなく動作することを確認します。 |
| T-Target_SDK_Version | Target_SDK_Version、 Compile_SDK_Version |
Android マニフェスト ファイルとビルド構成を確認して、アプリが利用可能な最新の SDK(targetSdk と compileSdk)に対してビルドされていることを確認します。 |
| T-SDK_Maintenance | SDK_Maintenance | アプリの build.gradle ファイルで、古い依存関係がないか確認します。 |
| T-Non_SDK_Interfaces | Non_SDK_Interfaces | Android Studio の lint ツールを使用して、非 SDK インターフェースの使用を検出します。別のテスト方法については、非 SDK インターフェースの制限をご覧ください。 |
| T-Production_Build_Quality | Production_Build_Quality | アプリの build.gradle ファイルで、含まれているデバッグ ライブラリを確認します。 |
電池
| ID | 機能 | 説明 |
|---|---|---|
| T-Power_Management | Power_Management |
Doze モードとアプリ スタンバイ モードで、アプリの主要な機能をすべて使用します。Doze のメンテナンスの時間枠内、およびアプリがアプリ スタンバイ モードを終了したときに、アラーム、タイマー、通知、同期が正常に機能することを確認します。 ADB コマンドを使用して Doze とアプリ スタンバイの動作をテストします(要件とガイドラインについては、Doze モードとアプリ スタンバイ モードでテストするをご覧ください)。 想定外のバッテリー消費を診断するには、Android Studio Power Profiler または Battery Historian ツールを使用し、計画済みのバックグラウンド作業と組み合わせて診断します。 |
プライバシーとセキュリティ
ユーザーが期待するプライバシーとセキュリティの保護をテストする。
権限
| ID | 機能 | 説明 |
|---|---|---|
| T-Minimize_Permissions | Minimize_Permissions | アプリに必要なすべての権限を、マニフェスト ファイル、実行時、デバイスのアプリ設定([設定] > [アプリ情報])で確認します。 |
| T-Sensitive_Permissions | Sensitive_Permissions | 権限をリクエストするアプリの機能を使用します。アプリがセンシティブ データやサービスへのアクセス権限をリクエストするのは、アプリの主要なユースケースのみであることを確認します。機密データやサービスへのアクセス許可を付与することの影響が、ユーザーに明確に伝えられていることを確認します。 |
| T-Runtime_Permissions | Runtime_Permissions | 権限が必要なアプリのすべての機能を使用します。権限が、アプリの起動時ではなく、機能にアクセスしたときにのみ、遅延リクエストされることを確認します。 |
| T-Permission_Rationale | Permission_Rationale | 権限が必要なアプリのすべての機能を使用します。権限が必要な理由をアプリがユーザーに説明していることを確認します。 |
| T-Graceful_Degradation | Graceful_Degradation | 権限が必要なアプリのすべての機能を使用します。権限を拒否または取り消します。アプリが代替のユースケースを提供し、引き続き機能することを確認します。 |
データとファイル
| ID | 機能 | 説明 |
|---|---|---|
| T-Sensitive_Data_Storage | Sensitive_Data_Storage | 内部ストレージに保存されているすべてのデータを確認します。外部に保存されているデータが機密データでないことを確認します。 |
| T-Sensitive_Data_Handling | Sensitive_Data_Storage | 外部ストレージから読み込まれたデータの処理方法を確認します。 |
| T-Sensitive_Data_Logging | Sensitive_Data_Logging | デバイスログをモニタリングしながら、アプリの主要な機能をすべて使用します。ユーザーの個人情報がログに記録されていないことを確認します。 |
| T-Hardware_IDs | Hardware_IDs | アプリの主要な機能をすべて使用します。アプリで、識別目的で IMEI などのハードウェア ID が使用されていないことを確認します。 |
データのバックアップと復元
| ID | 機能 | 説明 |
|---|---|---|
| T-App_Data_Backup | App_Data_Backup |
プライマリ デバイスでローカル設定、データベース、アプリ設定を構成します。クラウド バックアップまたはデバイス間(D2D)転送を新しいデバイスに対して実行します。 転送後、対象デバイスでアプリを起動し、自動バックアップ ルールに従ってローカル設定、データベースの状態、ユーザー設定が正確に復元されていることを確認します。詳細なテスト手順については、バックアップと復元のテストをご覧ください。 |
| T-App_Logins_Restoration | App_Logins_Restoration |
パスキー、パスワード、または Google ログインを使用して、メインのデバイスでログイン セッションを設定します。クラウド バックアップまたはデバイス間(D2D)転送を新しいデバイスに対して実行します。 転送後に対象デバイスでアプリを起動し、ログイン画面が表示されたりアカウントの復元が求められたりすることなく、Restore Credentials を使用して認証が自動的に復元されることを確認します。詳細なテスト手順については、Restore Credentials のテストをご覧ください。 |
ID
| ID | 機能 | 説明 |
|---|---|---|
| T-Autofill_Hints | Autofill_Hints | ユーザー入力を必要とするアプリのすべての機能を使用します。アカウントの認証情報やその他の機密情報などのデータを入力する入力フィールドを自動入力するためのヒントをアプリが提供していることを確認します。 |
| T-Credential_Manager | Credential_Manager | アプリにログインします。アプリに Android 用認証情報マネージャーが統合され、パスキー、フェデレーション ID、パスワードをサポートする統合されたログイン エクスペリエンスが提供されていることを確認します。 |
| T-Biometric_Authentication | Biometric_Authentication | 認証が必要なアプリの機能をすべて使用します。アプリが生体認証を使用して、支払いや機密情報(重要なユーザー ドキュメントなど)を保護していることを確認します。 |
アプリ コンポーネント
| ID | 機能 | 説明 |
|---|---|---|
| T-Component_Export | Component_Export | Android マニフェスト ファイルで定義されているすべてのアプリ コンポーネントが適切なエクスポート状態になっていることを確認します。エクスポートされたプロパティは、すべてのコンポーネントに対して明示的に設定する必要があります。 |
| T-Component_Permissions | Component_Permissions | マニフェスト ファイル、実行時、デバイスのアプリ設定([設定] > [アプリ情報])で、アプリが必要とするすべての権限を確認します。 |
| T-Component_Protection | Component_Protection | Android マニフェスト ファイルで定義されているすべてのコンテンツ プロバイダを確認します。各プロバイダに適切な protectionLevel が設定されていることを確認します。 |
ネットワーキング
| ID | 機能 | 説明 |
|---|---|---|
| T-Network_Security_Traffic | Network_Security_Traffic | クリアテキスト トラフィックを無効にするネットワーク セキュリティ構成を宣言し、アプリをテストします。 |
| T-Network_Security_Configuration | Network_Security_Configuration | アプリのネットワーク セキュリティ構成を確認します。構成の lint チェックが失敗していないことを確認します。 |
| T-Security_Provider_Initialization | Security_Provider_Initialization | Google Play 開発者サービスで、アプリの起動時にセキュリティ プロバイダが初期化されることを確認します。 |
WebView
| ID | 機能 | 説明 |
|---|---|---|
| T-WebView_Asset_Loader | WebView_Asset_Loader | アプリのネットワーク セキュリティ構成を確認します。構成の lint チェックが失敗していないことを確認します。 |
| T-WebView_JavaScript | WebView_JavaScript | WebView ごとに、JavaScript を必要とするページに移動します。 |
| T-WebView_Navigation | WebView_Asset_Loader、 WebView_JavaScript |
各 WebView で、アプリによって直接読み込まれないサイトやコンテンツに移動してみます。 |
実行
| ID | 機能 | 説明 |
|---|---|---|
| T-App_Bundles | App_Bundles | アプリが Android App Bundle を使用しており、アプリの APK の外部からコードを動的に読み込まないことを確認します。 |
暗号化
| ID | 機能 | 説明 |
|---|---|---|
| T-Cryptographic_Algorithms | Cryptographic_Algorithms | アプリが、プラットフォームが提供する強力な暗号アルゴリズムと乱数ジェネレータを使用していることを確認します。また、アプリがカスタム アルゴリズムを実装していないことを確認します。 |
Google Play
アプリが Google Play に対応していることを確認します。
ポリシー
| ID | 機能 | 説明 |
|---|---|---|
| T-Play_Content_Policies | Play_Content_Policies、 Play_Content_Rating、 Play_User_Reviews |
Google Play Console にログインして、デベロッパー プロフィール、アプリの説明、スクリーンショット、フィーチャー グラフィック、コンテンツのレーティング、ユーザーからのフィードバックを確認します。 |
アプリの詳細ページ
| ID | 機能 | 説明 |
|---|---|---|
| T-Play_Feature_Graphic | Play_Feature_Graphic | フィーチャー グラフィックとスクリーンショットをダウンロードし、ターゲットとするデバイスやフォーム ファクタのディスプレイ サイズに合わせて縮小します。 |
| T-Play_Graphic_Assets | Play_Feature_Graphic、 Play_Device_References、 Play_Misleading_Content |
アプリまたは拡張ファイルのダウンロードにパッケージ化されているすべての画像および映像、メディア、テキスト、コード ライブラリ、その他のコンテンツを確認します。 |
アーカイブ
アプリの中核品質に関するガイドラインの以前のバージョン: