アプリの中核品質に関するガイドライン

インストール数、ユーザー レビュー、エンゲージメント、ユーザー維持率といった点で、アプリの長期的な成功に直接影響します。

高品質なアプリの確固たる基盤を築くには、アプリの品質に関する主要なガイドラインに準拠してください。

このガイドラインは、すべてのアプリが満たすべき最低限の品質基準を定めたものです。

アダプティブ アプリの品質

Android アプリは、コンパクトなスマートフォンからタブレット、折りたたみ式デバイス、デスクトップ、コネクテッド ディスプレイ、車載インフォテインメント システム、テレビ、XR まで、さまざまなデバイスで動作します。分割画面やデスクトップ ウィンドウなどのウィンドウ モードでは、アプリを画面のサイズ変更可能な部分で実行できます。

アダプティブ アプリの品質に関するガイドライン(アプリの中核品質に関するガイドラインと併用)に沿って、次のことを行います。

  • あらゆるフォーム ファクタとディスプレイ サイズに最適化されたアプリを作成する
  • Google Play の掲載情報と検索でアプリのランキングを上げる
  • ユーザーの獲得数を増やし、ユーザー維持率を高める

ガイドライン

以下の基本的なガイドラインは、高品質なアプリを開発するうえで役立ちます。

ユーザー エクスペリエンス

アプリでは、一貫性のある直感的ユーザー エクスペリエンスを提供するために、標準的な Android 視覚デザインと操作パターンを指定する必要があります。

可能であれば、Android プラットフォーム コンポーネントの代わりにマテリアル デザイン コンポーネントを使用して、アプリのユーザー インターフェースを作成します。マテリアル デザインは、Android の最新のデザインを提供し、Android のバージョン間で UI の整合性を保ちます。

ID テスト 説明
ユーザビリティ
ユーザビリティ:UX T-Usability:Core
T-SD-Card
アプリは、すべてのフォーム ファクタのすべてのアプリ ユースケースで一貫したユーザー エクスペリエンスを提供します。
ユーザビリティ:Switcher T-Usability:Switcher
T-SD-Card
フォーカスが別のアプリに切り替わると、アプリはバックグラウンドに移行します。最近使ったアプリのスイッチャーから再アクティブ化されると、アプリはフォアグラウンドに戻ります。
Usability:Sleep T-Usability:Sleep,
T-SD-Card
アプリがフォアグラウンド アプリの場合、デバイスがスリープ状態になると一時停止し、デバイスが復帰すると再開します。
ユーザビリティ:ロック T-Usability:Lock,
T-SD-Card
アプリがフォアグラウンド アプリの場合、デバイスがロックされると一時停止し、デバイスのロックが解除されると再開します。
ユーザー インターフェース
UI:Parity T-UI:Transitions

ディスプレイの向きと折りたたみ状態では、機能や動作の大部分が同じになり、同等の機能が保持されます。

UI:Fullscreen T-UI:Transitions

デバイスの折りたたみや展開など、構成の変更によってレターボックス表示が行われることなく、アプリ ウィンドウをいずれの向きでも埋める。

画面の形状について若干のばらつきを補正するための若干のレターボックス表示は認められます。

UI:Transitions T-UI:Transitions ディスプレイの向きやデバイスの折りたたみ / 展開の急な変化に適切に対応でき、ディスプレイのレンダリングの問題が発生せず、状態が失われない。
画質
Visual:Display T-Visual:Display

目立った歪み、ぼやけ、粗さを生じさせずに、グラフィックス、テキスト、画像、その他の UI 要素を表示します。

  • 可能な場合はベクター型ドローアブルを使用する
  • 対象となるあらゆる画面サイズやフォーム ファクタ向けに高品質のグラフィックを使用している
  • メニューやボタンなどの UI 要素の縁で、エイリアシングが一切生じない
Visual:Readability(ビジュアル: 読みやすさ) T-Visual:Readability サポートしている各言語で、行の長さを 45 ~ 75 文字(スペースを含む)に制限することで、テキストとテキスト ブロックの読みやすさを確保します。
ビジュアル:テーマ T-Visual:Themes アプリのコンテンツ、アプリがアクセスするすべてのウェブ コンテンツは、ライトモードとダークモードの両方に対応している。
ナビゲーション
T-Nav:Back アプリは、標準システムの戻るボタンのナビゲーションをサポートするものとし、画面上のプロンプトとしてカスタムの「戻る」ボタンは一切使用しない。
T-Nav:Back アプリは、前の画面 / ホーム画面に戻るためのジェスチャー ナビゲーションをサポートしている。
T-Nav:State,
T-Nav:Back

アプリは、フォアグラウンドから離れる際にユーザーやアプリの状態を保存し、戻るボタンの使用や他の状態変化により誤ってデータが消失するのを防ぐ。

フォアグラウンドに戻る際、アプリは保存された状態と保留中のステートフル トランザクションを復元します。たとえば、編集可能なフィールドに対する変更、ゲームの進捗、メニュー、動画、アプリのその他のセクションなどです。

  • 最近使用したアプリの切り替え機能からアプリを再開すると、アプリを最後に使用したときとまったく同じ状態に戻ります。
  • デバイスがスリープ(ロック)状態から復帰した後にアプリを再開すると、アプリを最後に使用したときとまったく同じ状態に戻ります。
  • ホーム画面やすべてのアプリ画面からアプリを再起動すると、アプリを最後に使用したときからの経過時間に応じて、次のいずれかが行われる必要があります。
    • アプリを最後に使用してから短い時間(数分)しか経過していない場合、可能な限り前回に近い状態を復元する。
    • アプリが最後に使用されてからそれ以上の時間が経過している場合、可能な限り前回に近い状態を復元するか、ホーム画面またはその他のデフォルトの状態から起動する。
通知
Notify:Info T-Notify:Info

通知には、アプリに関連する関連情報が表示されます。

  • 通知は相互プロモーションや別の製品の宣伝を目的として使用してはならず、このような使用は Google Play ストアで固く禁止されている。
  • 1 つのチャンネルからすべての通知を配信するのではなく、ベスト プラクティスに従って通知チャンネルを適切に定義する。
  • 適切な通知の優先度を選択する。
  • 複数の通知は、可能な限り 1 つの通知グループにスタックされるようにする。
  • 必要に応じて、通知のタイムアウトを設定する。
  • 通知は進行中のイベント(音楽の再生や通話など)に関連する場合のみ継続できる。詳細については、機能セクションをご覧ください。
Notify:Messaging T-Notify:Info

メッセージ アプリ、ソーシャル アプリ、会話の場合:

ユーザー補助
Access:Targets T-Access:Targets タップ ターゲットが 48 dp 以上である。マテリアル デザインのレイアウトとタイポグラフィのガイドラインをご覧ください。
Access:Contrast T-Access:Contrast

アプリのテキストとフォアグラウンドのコンテンツは、アプリの背景に対して次のコントラスト比を維持します。

  • 大きい文字サイズとグラフィックの場合は 3:1
  • 小さい文字サイズ(18 pt 未満、または太字の場合は 14 pt 未満)の場合は 4.5:1

詳細については、色とコントラストをご覧ください。

Access:Description T-Access:説明 contentDescription を使用して、TextView 以外の各 UI 要素を記述する。

機能

アプリには、次の機能の動作を実装する必要があります。

ID テスト 説明
音声
音声:Init T-Audio:Init

ユーザーが音声の再生を開始したら、アプリは 1 秒以内に次のいずれかを行う必要があります。

  • 音声の再生を開始する
  • 音声データの準備中であることを示すインジケーターを表示する
Audio:Focus T-Audio:Focus アプリは、音声の再生が開始された場合は音声フォーカスをリクエストし、再生が停止した場合は音声フォーカスを破棄する。
Audio:Interrupt T-Audio:Interrupt アプリは、他のアプリからの音声フォーカスのリクエストを処理する(例: 別のアプリで音声が再生されたときに再生音量を小さくする)。
Audio:Background T-Audio:Background アプリはバックグラウンド再生をサポートする。
音声:通知 T-Audio:Notification アプリがバックグラウンドで音声を再生する場合は、MediaStyle でスタイル設定された通知を作成する必要があります。
音声:再開 T-Audio:Resume アプリがバックグラウンドで音声が一時停止している場合、アプリがフォアグラウンドに戻ったら音声を再開するか、再生が一時停止状態であることをユーザーに示します。
動画
動画:PiP T-Video:PiP アプリが動画を再生する場合、ピクチャー イン ピクチャーの再生をサポートする。
動画:エンコード T-Video:Encoding アプリが動画をエンコードする場合は、HEVC 動画圧縮規格を使用する。
共有
Sharing:Sheet T-Sharing:Sheet コンテンツを共有するときは、Android Sharesheet を使用する必要があります。Android Sharesheet は、カスタム ソリューションでは利用できないターゲットを提案できます。
バックグラウンド サービス
背景:サービス T-Background:Services

バックグラウンドで必要以上に長時間にわたってサービスが実行されない。お客様のデバイスがスムーズに動作するようにするため。

注: システムによってバックグラウンド サービスに関するさまざまな制限が適用されている。

バックグラウンド サービスの不適切な使用方法を以下に示します。

  • 通知用にネットワーク接続を維持する
  • Bluetooth 接続を維持する
  • GPS をオンにしたままにする

詳細については、バックグラウンド タスクの概要をご覧ください。

パフォーマンスと安定性

アプリは、最適なパフォーマンス、安定性、互換性、応答性を提供する必要があります。

ID テスト 説明
パフォーマンス
パフォーマンス:スタートアップ T- Performance:Startup アプリは、すぐに読み込まれるようにする。または、読み込みにかかる時間が 2 秒を超える場合は、画面上でユーザーに対するフィードバック(進行状況を示すインジケーターや、同様のシグナル)を提供する。
パフォーマンス:FPS T-Performance:FPS アプリは、16 ミリ秒(またはそれ以下)ごとにフレームをレンダリングし、1 秒あたり 60 フレーム以上を表示する。レンダリングの問題については、レンダリングが遅いをご覧ください。
パフォーマンス:厳格 T-Performance:Strict StrictMode を有効にしている場合(StrictMode によるテストのセクションを参照)、アプリのテスト時に赤の点滅(StrictMode からのパフォーマンスの警告)が表示されない。
安定性
安定性:ANR T-Stability:ANR アプリは、クラッシュせず、ANR(Android 応答なし)エラーを引き起こす UI スレッドをブロックしない。Google Play のリリース前レポートを使用して、安定性に関する潜在的な問題を特定します。デプロイ後は、Google Play Console の Android Vitals のページをモニタリングしてください。
SDK
SDK:Platform T-SDK:Platform アプリは、クラッシュしたり、コア機能に大きな影響を与えたりすることなく、最新公開版の Android プラットフォームで動作する。
SDK:Target T-SDK:Latest アプリのモジュール build.gradle ファイルで targetSdk 値を設定して、Google Play 要件を満たすために必要な最新の Android SDK をターゲットに設定する。
SDK:Compile T-SDK:Latest アプリは、アプリのモジュール build.gradle ファイルで compileSdk 値を設定して、最新の Android SDK で構築されている。
SDK:3P T-SDK:3P
T-SDK:Non

使用されている Google またはサードパーティの SDK がすべて最新である。これらの SDK の安定性、互換性、セキュリティに関する改善は、適切なタイミングでユーザーに提供される必要があります。

Google SDK では、利用できる場合には Google Play 開発者サービスの SDK を使用する。これらの SDK には下位互換性があり、自動更新を受け取れ、アプリのパッケージ サイズを削減して、オンデバイスのリソースを効率的に使用できる。

SDK:Non T-SDK:Non アプリは非 SDK インターフェースを使用していない。
SDK:Debug T-SDK:Debug 製品版アプリにはデバッグ ライブラリが含まれていない。アプリに含まれているデバッグ ライブラリは、パフォーマンスやセキュリティの問題を引き起こす可能性がある。
電池
Battery:Manage T-Battery:Manage

アプリは、電源管理機能の Doze とアプリ スタンバイを適切にサポートする。

アプリは、電力メンテナンスの免除をリクエストできます。Doze とアプリ スタンバイ用に最適化するその他のユースケースのサポートをご覧ください。

プライバシーとセキュリティ

アプリは、ユーザーデータと個人情報を安全に処理し、適切なレベルの権限を提供します。

Google Play ストアで公開するアプリは、ユーザーのプライバシーを保護するよう Google Play のユーザーデータに関するポリシーにも準拠する必要があります。

ID テスト 説明
権限
Permissions:Min T-Permissions:Min 現在のユースケースのサポートに必要な最小限の権限のみをリクエストします。位置情報などの一部の権限については、可能であれば、精細な仕様ではなく、おおよその仕様を使用します。権限リクエストを最小限に抑えるをご覧ください。
Permissions:Sensitive T-Permissions:Sensitive

アプリは、アプリの主要なユースケースに直接関係がある場合にのみ、センシティブ データ(SMS や通話履歴の権限グループ位置情報など)や料金がかかるサービス(電話アプリや SMS など)へのアクセス権限をリクエストする。これらの権限に伴う影響について、ユーザーに明確に開示する必要があります。

アプリでの権限の使用方法によっては、機密情報にアクセスせずにアプリのユースケースに対応できる別の方法を使用できる場合があります。(ユーザーの連絡先に関連する権限をリクエストする代わりに、暗黙的インテントを使用してアクセスをリクエストするなど)。

Permissions:Runtime T-Permissions:Runtime アプリは、実行時の権限を、アプリの起動時ではなく、機能がリクエストされたときにリクエストします。
Permissions:Explain T-Permissions:Explain アプリが権限が必要な理由を明確に説明している。
権限:Degrade T-Permissions:Degrade ユーザーが権限を拒否または取り消すと、アプリはグレースフル デグラデーションを実行する。ユーザーがアプリにまったくアクセスできないようにしてはなりません。
データとファイル
Data:Sensitive T-Data:Sensitive
T-Data:Handling
機密データがすべてアプリの内部ストレージに保存される。
Data:Log T-Data:Log ユーザーの個人データやセンシティブ データが、システムログまたはアプリ固有のログに記録されない。
Data:IDs T-Data:IDs アプリでは、識別目的で IMEI などの再設定不可能なハードウェア ID を使用しない。
ID
Identity:Hints T-Identity:Hints アカウント認証情報やその他の機密情報(クレジット カード情報、住所、電話番号など)を自動入力するためのヒントを提供する。
Identity:CredMan T-Identity:CredMan アプリは Android 用認証情報マネージャーを統合し、パスキー、フェデレーション ID、パスワードのサポートを統合したシームレスなログイン エクスペリエンスを実現します。
Identity:Bio T-Identity:Bio 生体認証に対応し、支払いや機密情報(重要なユーザー ドキュメントなど)を保護する。
アプリ コンポーネント
コンポーネント:エクスポート T-Components:Export

すべてのアクティビティサービスブロードキャスト レシーバ、特にコンテンツ プロバイダ用に明示的に android:exported 属性を設定する。

他のアプリとデータを共有するアプリケーション コンポーネント、他のアプリから呼び出されるコンポーネントのみがエクスポートされる。

コンポーネント:Permissions T-Components:Permissions

すべてのインテントとブロードキャストを、次のベスト プラクティスに沿って設定する。

コンポーネント:保護 T-Components:Protection

アプリ間でコンテンツを共有するすべてのコンポーネントは、カスタム権限android:protectionLevel="signature" を使用する。これには、アクティビティサービスブロードキャスト レシーバ、特にコンテンツ プロバイダが含まれます。

アプリはインストール済みパッケージのリストにアクセスする必要がないようにする。

ネットワーキング
Network:Traffic T-Network:Traffic すべてのネットワーク トラフィックが SSL 経由で送信される。
Network:Config T-Network:Config アプリがネットワーク セキュリティ構成を宣言している。
Network:Play T-Network:Play アプリが Google Play 開発者サービスを使用する場合、アプリの起動時にセキュリティ プロバイダが初期化される
WebView
WebViews:Config T-WebViews:Config,
T-WebViews:Nav
ローカル コンテンツへのアクセスに setAllowUniversalAccessFromFileURLs() を使用しないでください。代わりに、WebViewAssetLoader を使用してください。
WebView:JavaScript T-WebViews:JavaScript
T-WebViews:Nav

ウェブビューでは、信頼できないコンテンツに対して addJavaScriptInterface() を使用しない。

Android 6.0(API レベル 23 以降)では、代わりに HTML メッセージ チャネルを使用します。

実行
実行:バンドル T-Execution:Bundles

アプリの APK の外部からコードを動的にロードしない。Android App BundlePlay Feature DeliveryPlay Asset Delivery を含む)を使用する。

2021 年 8 月から、Google Play ストアのすべての新しいアプリにおいて、Android App Bundle の使用が必須となっています。

暗号化
Crypto:Algorithms T-Crypto:Algorithms アプリが、文字列、プラットフォームで提供される暗号アルゴリズムと乱数生成ツールを使用する。また、アプリがカスタム アルゴリズムを実装していない。

Google Play

Google Play でアプリを公開できるようにします。

ID テスト 説明
ポリシー
Play:Policies T-Play:Policies アプリが Google Play デベロッパー コンテンツ ポリシーの各条項を遵守している。不適切なコンテンツを提供したり、他者の知的財産やブランドを使用したりしていない。
Play:Maturity T-Play:Policies アプリの対象年齢が、コンテンツのレーティングに関するガイドラインに基づいて適切に設定されている。
アプリの詳細ページ
Play:Graphics T-Play:Graphics
T-Play:Assets

アプリのフィーチャー グラフィックが、こちらのサポート記事で概説されているガイドラインを遵守している。次の点をご確認ください。

  • アプリの掲載情報に、高画質のフィーチャー グラフィックが含まれている
  • フィーチャー グラフィックに含まれるデバイス画像、スクリーンショット、小さいテキストが、縮小表示したときや、アプリがターゲットとする最小画面サイズで表示したとき、読みにくくならない
  • フィーチャー グラフィックが広告に類似していない
Play:NonAndroid T-Play:Assets アプリのスクリーンショットや動画で、Android 以外のデバイスを表示したり、そうしたデバイスに言及したりしません。
Play:Misleading T-Play:Assets アプリのスクリーンショットや動画で、アプリのコンテンツとエクスペリエンスについて誤解を招くような表現をしないようにします。
ユーザー サポート
Play:Bugs T-Play:Policies Google Play ページの [レビュー] タブでユーザーから報告された一般的なバグについては、再現性がありさまざまなデバイスで発生する場合、対処します。バグがごく一部のデバイスでしか発生しない場合でも、特に人気のあるデバイスや新しいデバイスであれば、対処する必要があります。

テスト環境

次のようにして、テスト環境をセットアップします。

  • エミュレータのテスト: Android Emulator は、さまざまな Android バージョンと画面解像度でのアプリのテストに最適なツールです。ターゲット ユーザーの最も一般的なフォーム ファクタとハードウェア/ソフトウェアの組み合わせを代表する、エミュレートされたデバイス(AVD)を設定します。少なくとも次のエミュレータを使用して、さまざまなフォーム ファクタをテストします。

    • 折りたたみ式デバイス: 7.6 インチ、ディスプレイが外側を向くデバイス(AVD Manager のスマートフォンに掲載されています)
    • タブレット: Google 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-Usability:Core ユーザビリティ:UX

すべての画面、ダイアログ、設定、ユーザーフローといった、アプリのあらゆる部分について、ナビゲーションを確認します。

次の操作を行います。
  • 編集やコンテンツの作成、ゲームプレイ、メディア再生が可能なアプリの場合、それらのフローをひととおりテストします。
  • アプリのテスト中に、通知の受信や電話の着信など、他のアプリからの割り込みを発生させ、デバイス属性(ネットワーク接続、電池の機能、GPS の利用、システム負荷など)に一時的な変更を適用します。
  • すべてのアプリ内購入フローをテストします。
T-Usability:Switcher Usability:Switcher アプリの各画面から、実行中の別のアプリに切り替えた後、最近使ったアプリのスイッチャーを使ってテスト対象のアプリに戻ります。
T-Usability:Sleep ユーザビリティ:睡眠 電源ボタンを押してデバイスをスリープ状態にしてから、電源ボタンをもう一度押して画面を復帰させます。
T-Usability:Lock ユーザビリティ:ロック デバイスで画面ロックを設定します。電源ボタンを押してデバイスをスリープ状態にします(デバイスがロックされます)。電源ボタンをもう一度押して画面を復帰させ、デバイスのロックを解除します。
SD カード
T-SD-Card ユーザビリティ:UX

デバイスの SD カードにインストールしたアプリについて、コア機能のテストを実施します(アプリがこのインストール方法をサポートしている場合)。

アプリを SD カードに移動するには、アプリの設定をご覧ください。

ユーザー インターフェース
T-UI:Transitions UI:Parity
UI:Fullscreen
UI:Transitions

アプリの各画面で、少なくとも 3 回、デバイスを横向きと縦向きに回転させ、折りたたみ状態と展開状態を切り替える。

アプリが次のことを行っていることを確認します。
  • すべてのディスプレイの向きと折りたたみ状態での機能のパリティを提供
  • すべてのディスプレイの向きと折りたたみ状態でアプリ ウィンドウ全体に表示され、レターボックス表示はされません
  • 向きやデバイスの折りたたみ / 展開の急な変化の間に状態を維持し、レンダリングの問題が発生しない
画質
T-Visual:Display ビジュアル:ディスプレイ アプリのすべての機能を使用します。グラフィックス、テキスト、画像、その他の UI 要素を含むすべてのビジュアルに、歪み、ぼやけ、粗さがないことを確認します。
T-Visual:Readability ビジュアル:読みやすさ

アプリ内のすべてのテキスト ブロックを確認します。テキストとテキスト ブロックの行の長さが、読みやすさを考慮して 45 ~ 75 文字(スペースを含む)に制限されていることを確認します。

以下を確認します。
  • サポートしているすべてのフォーム ファクタで適切な構成となる
  • 文字や単語が途中で切れていない
  • ボタンまたはアイコン内の語句が不適切に改行されない
  • テキストと周囲の要素の間に十分なスペースがある
T-Visual:Themes ビジュアル:テーマ ライトテーマとダークテーマの両方でテキストが読みやすいことを確認します。ライトテーマとダークテーマで、すべてのビジュアルが明確に識別可能で、美観を損なわないことを確認します。
ナビゲーション
T-Nav:Back Nav:BackButton
Nav:BackGesture

すべての画面、ダイアログ、設定、ユーザーフローといった、アプリのあらゆる部分について、ナビゲーションを確認します。

アプリの各画面で、[戻る] ボタンを押すか、スワイプ操作で戻ります。アプリが前の画面またはホーム画面に移動します。

T-Nav:State Nav:State アプリの各画面で、デバイスのホームボタンを押すか、ジェスチャー ナビゲーションで上にスワイプした後、[すべてのアプリ] 画面からアプリを再起動します。
通知
T-Notify:Info Notify:Info
Notify:Messaging
通知ドロワーで、アプリが表示できるあらゆるタイプの通知を表示させて確認します。展開できる通知については展開し(Android 4.1 以降)、利用可能なすべてのアクションをタップします。
ユーザー補助
T-Access:Targets アクセス:ターゲット すべてのディスプレイのサイズと設定で、タップ ターゲットが一貫性を持ってアクセス可能なサイズと位置を保持していることを確認する。ユーザー補助に関する情報は、ユーザー補助検証ツールをご覧ください。
T-Access:Contrast アクセス:コントラスト すべての視覚要素のコントラストを確認します。
T-Access:Description Access:Description TextView 以外のすべての UI 要素にコンテンツの説明があることを確認します。

機能

ID 機能 説明
音声
T-Audio:Init 音声:Init 音声の再生を開始します。1 秒以内にアプリが音声を再生するか、音声データの再生準備中であることを示すインジケーターを表示することを確認します。
T-Audio:Focus 音声:フォーカス 音声の再生を開始します。アプリは音声フォーカスをリクエストする必要があります。音声の再生が停止したら、アプリは音声フォーカスを解放する必要があります(Android 12(API レベル 31)以上をターゲットとするアプリでは自動的に行われます)。
T-Audio:Interrupt 音声:割り込み 音声の再生を開始します。別のアプリで音声再生を開始します。アプリは音声フォーカスの変更に対応し、音声再生を停止するか、再生音量を下げる必要があります。
T-Audio:Background 音声:背景 音声の再生を開始します。別の音声以外のアプリをフォアグラウンド アプリとして操作します。アプリはバックグラウンドで音声を再生し続ける必要があります。
T-Audio:Notification 音声:通知 音声の再生を開始します。別の音声以外のアプリをフォアグラウンド アプリとして操作します。アプリがバックグラウンドで音声を再生し続け、MediaStyle でスタイル設定された通知を作成したことを確認します。メディア コントロールとの連携をご覧ください。
T-Audio:Resume 音声:再開 音声の再生を開始します。フォアグラウンド アプリとして音声以外の別のアプリを操作します。アプリを操作して、最優先のアプリにします。音声が再開されるか、音量が復元されるはずです。それ以外の場合、アプリは再生が一時停止していることをユーザーに示します。
T-Video:PiP 動画:PiP アプリのピクチャー イン ピクチャー モードでの動画再生を有効にします。
T-Video:Encoding 動画:エンコード アプリが HEVC 動画圧縮規格を使用して動画をエンコードしていることを確認します。
共有
共有:Sheet インテントを作成し、引数としてインテントを指定して startActivity() を呼び出してアクティビティを開始します。Android Sharesheet を使用するをご覧ください。アプリで Android Sharesheet が表示されます。
バックグラウンド サービス
CR-6 背景:サービス

アプリの主な機能をすべて使用します。実行時間の長いバックグラウンド サービスが起動していないことを確認します。

別のアプリに切り替えて、アプリをバックグラウンドに移行します。[設定] に移動し、アプリがバックグラウンド中に実行しているサービスがあるかどうかをチェックします。Android 4.0 以降では、[アプリ] 画面に移動して、[実行中] タブで該当のアプリを見つけます。

パフォーマンスと安定性

ID 機能 説明
パフォーマンス
T- Performance:Startup パフォーマンス:スタートアップ アプリを起動します。アプリが迅速に読み込まれること、または読み込み時間が 2 秒を超える場合は進行状況インジケーターや同様の合図が表示されることを確認します。
T-Performance:FPS パフォーマンス:FPS アプリの主要な機能をすべて使用します。アプリが 1 秒あたり 60 フレーム以上でレンダリングされることを確認します。[HWUI レンダリングのプロファイル作成] オプションを使用すると、アプリのテストに役立ちます。
T-Performance:Strict パフォーマンス:厳格

アプリで StrictMode を有効にします。すべての主要機能を使用します。アプリで StrictMode パフォーマンスの警告が生成されないこと、つまりアプリのテスト時に赤の点滅が表示されないことを確認します。赤の点滅は、ストレージ、ネットワーク アクセス、メモリ管理(メモリリークなど)に関する動作不良を示します。

ガベージ コレクションや、ガベージ コレクションがユーザー エクスペリエンスに及ぼす影響に細心の注意を払います。

安定性
T-Stability:ANR 安定性:ANR アプリの主な機能をすべて使用します。アプリがクラッシュしたり、UI スレッドをブロックして ANR(Android 応答なし)エラーを引き起こしたりしないことを確認します。Google Play のリリース前レポートを確認して、安定性に関する潜在的な問題を特定します。
SDK
T-SDK:Platform SDK:Platform アプリを最新公開版の Android プラットフォームで実行する。すべての主要機能を使用します。アプリがクラッシュせず、コア機能が損なわれることなく動作することを確認します。
T-SDK:Latest SDK:Target,
SDK:Compile
Android マニフェスト ファイルとビルド構成を見直し、アプリが最新の利用可能な SDKtargetSdkcompileSdk)に基づいてビルドされていることを確認します。
T-SDK:3P SDK:3P アプリの build.gradle ファイルに古い依存関係がないか確認します。
T-SDK:Non SDK:Non Android Studio の lint ツールを使用して、非 SDK インターフェースの使用を検出します。代替テスト方法については、非 SDK インターフェースの制限をご覧ください。
T-SDK:Debug SDK:Debug アプリの build.gradle ファイルで、含まれているデバッグ ライブラリを確認します。
電池
T-Battery:Manage バッテリー:管理

Doze モードとアプリ スタンバイ モードですべての主要なアプリ機能を使用します。Doze メンテナンスの時間枠内と、アプリがアプリ スタンバイ モードを終了したときに、アラーム、タイマー、通知、同期が適切に機能することを確認します。

ADB コマンドを使用して Doze とアプリ スタンバイの動作をテストします(要件とガイドラインについては、Doze モードとアプリ スタンバイ モードでテストするを参照)。

想定外のバッテリー消耗を診断するには、Android Studio Power Profiler または Battery Historian ツールと、計画済みのバックグラウンド作業を組み合わせて使用します。

プライバシーとセキュリティ

ID 機能 説明
権限
T-Permissions:Min 権限:Min アプリが必要とするすべての権限を、マニフェスト ファイル、実行時、およびデバイス上のアプリ設定([設定] > [アプリ情報])で確認します。
T-Permissions:Sensitive 権限:センシティブ 権限をリクエストするアプリの機能を使用します。アプリがセンシティブ データやサービスへのアクセス権限をリクエストするのは、アプリの主要なユースケースのみであることを確認します。機密データとサービスへの権限付与の影響がユーザーに明確に伝えられていることを確認します。
T-Permissions:Runtime 権限:ランタイム 権限を必要とするアプリのすべての機能を使用します。権限が遅延でリクエストされていること、つまり、アプリの起動時ではなく、機能がアクセスされたときにのみリクエストされていることを確認します。
T-Permissions:Explain 権限:説明 権限を必要とするアプリのすべての機能を使用します。アプリがユーザーに権限が必要な理由を説明していることを確認します。
T-Permissions:Degrade 権限:Degrade 権限を必要とするアプリのすべての機能を使用します。権限を拒否または取り消します。アプリが代替ユースケースを提供し、引き続き機能することを確認します。
データとファイル
T-Data:Sensitive Data:Sensitive 内部ストレージに保存されているデータをすべて確認します。外部に保存されたデータが機密データでないことを確認します。
T-Data:Handling Data:Sensitive 外部ストレージから読み込まれたデータがどのように処理されているかを確認します。
T-Data:Log データ:Log デバイスログを監視しながら、アプリの主要な機能をすべて使用します。ユーザーの個人情報が記録されていないことを確認します。
T-Data:IDs データ:ID アプリの主な機能をすべて使用します。アプリが識別目的で IMEI などのハードウェア ID を使用していないことを確認します。
ID
T-Identity:Hints Identity:Hints ユーザー入力が必要なアプリの機能をすべて使用します。アカウントの認証情報やその他の機密情報などのデータを入力するための入力フィールドを自動入力するためのヒントを提供していることを確認します。
T-Identity:CredMan Identity:CredMan アプリにログインします。パスキー、フェデレーション ID、パスワードのサポートを統合したログイン エクスペリエンスを実現するために、アプリが Android 用認証情報マネージャーを統合していることを確認します。
T-Identity:Bio Identity:Bio 認証が必要なアプリのすべての機能を使用する。生体認証で、支払い取引や機密情報(重要なユーザー ドキュメントなど)を保護していることを確認します。
アプリ コンポーネント
T-Components:Export コンポーネント:エクスポート Android マニフェスト ファイルで定義されているすべてのアプリ コンポーネントが適切なエクスポート状態になっていることを確認します。エクスポートされたプロパティは、すべてのコンポーネントに対して明示的に設定する必要があります。
T-Components:Permissions コンポーネント:Permissions アプリが必要とするすべての権限を、マニフェスト ファイル、実行時、およびデバイス上のアプリ設定([設定] > [アプリ情報])で確認します。
T-Components:Protection コンポーネント:Protection Android マニフェスト ファイルで定義されているすべてのコンテンツ プロバイダを確認します。各プロバイダに適切な protectionLevel が指定されていることを確認します。
ネットワーキング
T-Network:Traffic ネットワーク:トラフィック クリアテキスト トラフィックを無効にするネットワーク セキュリティ構成を宣言してから、アプリをテストします。
T-Network:Config ネットワーク:Config アプリのネットワーク セキュリティ構成を見直します。構成に対する lint チェックが失敗しないことを確認します。
T-Network:Play ネットワーク:Play Google Play 開発者サービスでアプリの起動時にセキュリティ プロバイダが初期化されることを確認します。
WebView
T-WebViews:Config WebViews:Config アプリのネットワーク セキュリティ構成を見直します。構成に対する lint チェックが失敗しないことを確認します。
T-WebViews:JavaScript WebViews:JavaScript WebView で、JavaScript が必要なページに移動します。
T-WebViews:Nav WebViews:Config
WebViews:JavaScript
各 WebView で、アプリによって直接読み込まれていないサイトとコンテンツに移動してみます。
実行
T-Execution:Bundles 実行:バンドル アプリが Android App Bundle を使用しており、アプリの APK の外部からコードを動的に読み込まないことを確認します。
暗号化
T-Crypto:Algorithms Crypto:Algorithms アプリが、プラットフォームで提供される強力な暗号アルゴリズムと乱数生成ツールを使用していることを確認します。また、アプリがカスタム アルゴリズムを実装していないことも確認します。

Google Play

ID 機能 説明
ポリシー
T-Play:Policies Play:Policies
Play:Maturity
Play:Bugs
Google Play Console にログインして、デベロッパー プロフィール、アプリの説明、スクリーンショット、フィーチャー グラフィック、コンテンツのレーティング、ユーザーのフィードバックを確認します。
アプリの詳細ページ
T-Play:Graphics Play:Graphics フィーチャー グラフィックとスクリーンショットをダウンロードし、対象とするフォーム ファクタやデバイスのディスプレイ サイズに合わせて縮小します。
T-Play:Assets Play:Graphics,
Play:NonAndroid,
Play:Misleading
すべての画像および映像、メディア、テキスト、コード ライブラリ、アプリや拡張ファイルのダウンロードに含まれるその他のパッケージ コンテンツを確認します。

アーカイブ

アプリの中核品質に関するガイドラインの以前のバージョン: