Posted by 山崎富美 Developer Relations Team

[「品質の高い Android アプリってなんだろう」と考えたことはありますか?Android Developers に掲載された "Core App Quality Guidelines" という記事で、それが解説されていたので翻訳しました。ぜひ参考にしてみてください。-山崎]

アプリの品質は、インストール数やユーザー評価、レビュー、エンゲージメント、ユーザー リテンションなどの面でアプリの長期的な成功に大きな影響を及ぼします。Android ユーザーは高品質なアプリを期待しますし、有料アプリであればなおのこと期待は高まります。

このドキュメントでは主要なアプリ品質基準と関連するテスト方法を簡潔にまとめて紹介し、アプリの基本的な品質を評価する上で役立つ内容になっています。すべての Android アプリは、ここに挙げる基準を満たす必要があります。

アプリを公開する前には、これらの基準に照らし合わせてアプリをテストし、アプリがさまざまな端末上で正常に機能すること、ナビゲーションやデザインに関する Android アプリとしての基準を満たしていること、そして Google Play ストアのプロモーション対象になるにふさわしいことを確認してください。みなさんが実際に行うテストは、ここで説明する内容よりもはるかに範囲が広くなるかと思います。このドキュメントは、基本な品質に欠かせない指針を明確に示すことで、それらをテスト プランの中に取り入れていただくことを目的にしています。

タブレット端末を対象にしているアプリの場合は、魅力的で充実した機能をタブレット ユーザーに提供するようにしてください。アプリをタブレット向けに最適化する際の推奨事項については、Tablet App Quality Checklist(タブレット向けアプリ品質チェックリスト)を参照してください。

品質基準
 視覚的デザインとユーザー インタラクション
 機能
 パフォーマンスと安定性
 Google Play

テスト
 テスト環境を整える
 テスト方法

その他参考資料
 タブレット向けアプリ品質チェックリスト
 公開後にアプリ品質を向上させる


視覚的デザインとユーザー インタラクション
一貫性のある直感的なユーザー エクスペリエンスを提供できるよう、アプリが必要に応じ、Android の標準的な視覚デザインとインタラクション パターンを使っていることを確認する基準です。

分野 ID 説明 テスト
標準デザイン UX-B1 アプリは、Android Design(Android デザイン) ガイドラインを順守し、共通の UI パターンとアイコンを使用する。
  1. システム アイコン(「Back」キーなど)に期待される機能の定義を変えないこと。
  2. 標準的 UI 動作を起動するシステム アイコンについては、これを全く別のアイコンに変えないこと。
  3. アプリが、標準システム アイコンをカスタマイズしたものを提供する場合、そのアイコンはシステム アイコンに極めて類似したものにし、標準的なシステム動作を起動すること。
  4. Android UI パターンの定義変更や誤った使い方(ユーザーに誤解や混乱を与えるアイコンや動作)をしないこと。
CR-all
ナビゲーション UX-N1 標準的なシステムである「Back」キー ナビゲーションをサポートし、オンスクリーンに独自の「Back」キー プロンプトは一切使用しないこと。 CR-3
UX-N2 すべてのダイアログは、「Back」キーで消すことができること。 CR-3
UX-N3 どの時点で「Home」キーを押しても、端末のホーム画面へ移動すること。 CR-1
通知 UX-S1 通知は、Android Design(Android デザイン)ガイドラインに従う。特に、以下の点に留意すること。
  1. 複数の通知は、可能であれば 1 つの通知オブジェクト内へスタックすること。
  2. 通知は、進行中のイベント(音楽再生や通話など)に関係している場合に限り、持続性を持たせることが可能。
  3. 通知には、ユーザーがオプト インしている場合を除き、アプリの基本機能に無関係な広告や内容を含めないようにすること。
CR-11
UX-S2 アプリは、以下の目的のために限り、通知を使用すること。
  1. ユーザーに個人的に関係するコンテキスト上の変化(メッセージ受信など)を通知するため。
  2. 進行中のイベント(音楽再生や通話など)に関連する情報/コントロールを表示するため。
CR-11
関連資料:

機能
アプリが適正な権限を持ち、期待される機能動作を提供しているかを確認する基準です。

分野 ID 説明 テスト
権限 FN-P1 基本機能をサポートするのに必要な最低限の権限しか要求しないこと。 CR-11
FN-P2 アプリの基本機能にかかわる場合を除き、機密性の高いデータ(連絡先やシステム ログなど)や、ユーザー側に支払いが発生するようなサービス(ダイヤラーや SMS など)にアクセスする権限を要求しないこと。
インストール場所 FN-L1 アプリは、SD カードにインストールされている場合でも正常に動作すること(アプリが対応している場合)。

サイズの大きいアプリ(10 MB 超)については、SD カードへのインストールをサポートすることが望ましい。どういったタイプのアプリのときに SD カードへのインストールをサポートすべきかについては、アプリのインストール場所に関するデベロッパー向けガイドを参照すること。
SD-1
オーディオ FN-A1 画面が消えているときは、オーディオは再生しないこと。ただし、それが基本機能の場合は除く(音楽プレーヤー アプリの場合など)。 CR-7
FN-A2 オーディオは、画面ロック中に再生しないこと。ただし、それが基本機能である場合は除く。 CR-8
FN-A3 オーディオは、ホーム画面または別のアプリ上では再生しないこと。ただし、それが基本機能の場合は除く。 CR-1,
CR-2
FN-A4 アプリがフォアグラウンドに復帰したときに、オーディオが再開する。もしくは、再生が一時停止の状態であることをユーザーに示すこと。 CR-1,
CR-8
UIとグラフィックス FN-U1 縦向き画面と横向き画面の両方をサポートすること(可能な場合)。

どちらの向きでもほぼ同じ特性と動作を備え、機能的同等性を維持すること。コンテンツや表示の軽微な変更は容認する。
CR-5
FN-U2 画面がどちらの向きでも画面全体を使用し、向きの変更に対応するのにレターボックスを用いないこと。

画面配置上のわずかな差分を相殺するために使用する若干のレターボックスは容認する。
CR-5
FN-U3 レンダリング上の問題を生じることなく、ディスプレイの向きの素早い遷移を正しく処理すること。 CR-5
ユーザー/アプリの状態 FN-S1 アプリは、バックグラウンドにあるときは、サービスを実行したままにしてはならない。ただし、アプリの基本機能にかかわる場合は除く。

例えば、通知のためのネットワーク接続の維持や、Bluetooth 接続の維持、GPS のパワー オン状態の維持といった目的のために、サービスを実行したままにしてはならない。
CR-6
FN-S2 ユーザーやアプリの状態を正しく保存し復旧すること。

アプリがフォアグラウンドから離れるときは、ユーザー/アプリの状態を保存し、バック ナビゲーションやその他の状態変化による偶発的なデータ損失を防止すること。アプリがフォアグラウンドに戻ったとき、保存した状態と、重要なステートフル トランザクション(編集可能フィールドへの変更やゲームの進捗、メニュー、動画、アプリやゲームのその他セクションなど)で保留中だったものがあればそれを復旧させること。
  1. 「最近使用したアプリ」スイッチャーからアプリを再開するときは、アプリは、最後に使用されたときの状態にユーザーを戻すこと。
  2. スリープ(ロック)状態から端末を復帰させたのちにアプリを再開するときは、最後に使用されたときの状態にユーザーを戻すこと。
  3. アプリをホームまたは「すべてのアプリ」から再度起動するときは、直前の状態にできるだけ近い状態で復旧させること。
  4. 「Back」キー押下時に、バック ナビゲーションで状態が失われる内容がある場合は、アプリ/ユーザーの状態を保存する選択肢を用意すること。
CR-1,
CR-3,
CR-5
関連資料:


パフォーマンスと安定性
ユーザーからより高い評価を得るには、対象とするすべての端末、フォーム ファクター、画面上で正常に機能し、応答性を維持することが求められます。ここでは、ユーザーが期待する基本的なパフォーマンスや安定性、レスポンスをアプリが提供していることを確認するための基準を挙げます。

分野 ID 説明 テスト
安定性 PS-S1 対象とする端末すべてにおいて、クラッシュ、強制終了、フリーズなどの異常な動作が起きないこと。 CR-all,
SD-1,
HA-1
パフォーマンス PS-P1 アプリは素早くロードされること。ロードに 2 秒以上かかるときは画面上にユーザーへのフィードバックを表示すること(進捗のインジケーターなど、手がかりになるものを表示)。 CR-all,
SD-1
PS-P2 StrictMode が有効なとき(後述する StrictMode でのテストを参照)、アプリの実行中(ゲームプレイやアニメーション、UI 遷移、その他アプリのあらゆる部分の実行中も含む)は、赤の点滅(StrictMode からのパフォーマンス警告)が表示されないこと。 PM-1
メディア PS-M1 音楽と動画の再生がスムーズで、通常のアプリ使用状況下および通常の負荷の状態では、途切れたり止まったりするなどのノイズが生じないこと。 CR-all,
SD-1, HA-1
視覚的品質 PS-V1 目立った変形やぼやけ、ピクセレーションを生じることなく、グラフィックやテキスト、画像、その他 UI 要素を表示すること。
  1. アプリは、対象とする画面サイズ、フォーム ファクター(タブレットなどの大画面の端末も含む)のすべてにおいて高品質のグラフィックスを表示すること。
  2. メニューやボタン、その他 UI 要素の端の部分にエイリアシングが生じないこと。
CR-all
PS-V2 テキストとテキスト ブロックを適切に表示すること。
  1. タブレットなどの画面が大きい端末も含め、対応する全てのフォーム ファクターにて構図が適正である。
  2. 切れている文字や単語がない。
  3. ボタンやアイコン内のテキストが不適切な位置で改行されていない。
  4. テキストとその周辺にある要素の間には十分なスペースがある。
関連資料:


Google Play
アプリを Google Play で公開し、評価を上げ、ストアのプロモーション活動の対象になるようにするには、下記の基準を満たしてください。

分野 ID 説明 テスト
ポリシー GP-P1 Google Play デベロッパー プログラム ポリシーの条項を厳守し、不適切なコンテンツを提供したり、他人の知的財産権や商標などを使用したりしないこと。 GP-all
GP-P2 アプリの成熟度がコンテンツのレーティングに関するガイドラインに基づいて適切に設定されていること。

特に、端末の位置情報の使用許可を求めるアプリの場合は、成熟度レベルの「全ユーザー対象」は設定できないことに注意する。
GP-1
アプリ詳細ページ GP-D1 アプリの宣伝用画像については、こちらのブログ記事に説明されているガイドラインに従う。以下の点を守ること。
  1. アプリの掲載情報には、高品質な宣伝用画像が含まれていること。
  2. 宣伝用画像には、最も小さい対象端末上で縮小表示されたときに読めないようなテキスト、端末の画像、スクリーンショットがでていないこと。
  3. 宣伝用画像は、広告のように見えないようにすること。
GP-1,
GP-2
GP-D2 アプリのスクリーンショットや動画では、Android 以外の端末を見せたり言及したりしないこと。 GP-1
GP-D3 アプリのスクリーンショットや動画では、アプリの内容やアプリで体験できることを、誤解を招く形で表現しない。
ユーザー サポート GP-X1 Google Play ページの「レビュー」タブで、ユーザーから報告された共通のバグについては、そのバグが再現可能で、多数の異なる端末で発生している場合は対処すること。少数の端末でしか発生していないバグの場合でも、それらの端末が特に普及している端末、あるいは新しい端末の場合にはそのバグに対処する必要がある。 GP-1
関連資料:


テスト環境を整える
アプリの品質を評価するには、テスト用に適切なハードウェアあるいはエミュレーター環境を用意する必要があります。

テスト環境には、現在ユーザーに普及している主要なフォーム ファクター、ハードウェア/ソフトウェアの組み合わせのハードウェア実機をいくつか用意するのが理想的です。市場に出ているすべての端末をテストする必要はなく、1 つのフォーム ファクターにつき 1、2 台程度で、いくつかの代表的な端末を集中的にテストします。

テスト用に実機を入手できない場合は、代表的なフォーム ファクターとハードウェア/ソフトウェアの組み合わせのエミュレーション用端末(AVD)を準備します。

基本的なテスト以上のテストを実施する場合は、テスト環境の端末やフォーム ファクターの数を増やす、他のハードウェア/ソフトウェアの組み合わせを使用する、などが考えられます。また、テストの項目数を増やしたり、複雑化したり、品質基準を増やしたりしても構いません。


テスト方法
アプリのさまざまな品質に関する問題の発見につながるテストの方法を以下に示します。皆さんのテストプランの中では、これらのテスト同士を組み合わせたり、複数のテストグループを 1 つにまとめたりしても構いません。一部のテストで、一定の基準があるものについては、これまでのセクションを参考にしてください。

タイプ テスト 説明
基本機能全般 CR-0 アプリのあらゆる部分(すべての画面やダイアログ、設定、すべてのユーザーフロー)のナビゲーションを確認する。
  1. 編集やコンテンツの作成、ゲームプレイ、メディア再生ができるアプリの場合は、コンテンツを作成・変更するフロー内も確認すること。
  2. アプリの実行中に、ネットワーク接続状態やバッテリー機能、GPS や位置取得状況、システム負荷などを一時的に変化させること。
CR-1 アプリの各画面から、端末の「Home」キーを押したのち、「すべてのアプリ」画面からアプリを再度起動する。
CR-2 アプリの各画面から、実行中の別のアプリに切り替え、「最近使ったアプリ」スイッチャーを使ってテスト中のアプリに戻る。
CR-3 アプリの各画面(とダイアログ)から、「Back」キーを押す。
CR-5 アプリの各画面から、画面を回転させて縦向きと横向きを切り替える。最低 3 回は実施すること。
CR-6 別のアプリに切り替えて、テスト中のアプリをバックグラウンドへ移動させる。「設定」へ行き、テスト中のアプリがバックグラウンドで何らかのサービスを実行していないかをチェックする。Android 4.0 以降では、「アプリ」画面へ行くと、「実行中」タブにアプリが表示される。それ以前のバージョンの場合は、「アプリケーションの管理」で実行中のサービスがないかを確認する。
CR-7 電源ボタンを押して端末をスリープ モードにしたのち、電源ボタンを再度押して画面を復帰させる。
CR-8 電源ボタンを押したときにロックするよう端末を設定する。電源ボタンを押して端末をスリープ モードにしたのち、電源ボタンを再度押して画面を復帰させ、端末のロックを解除する。
CR-9 スライド式キーボードを搭載している端末では、キーボードの出し入れを最低 1 回は実施する。キーボード ドック付きの端末では、端末をドックに装着してみる。
CR-10 外部ディスプレイ ポート付きの端末では、外部ディスプレイを接続してみる。
CR-11 通知ドロワーに、アプリが表示できる全種類の通知を表示させて確認する。展開できる通知は展開し(Android 4.1以降)、提供されているアクションをすべてタップする。
CR-12 「設定」>「アプリ情報」で、アプリが要求する権限を確かめる。
SD カードへのインストール SD-1 端末 SD カード(アプリが対応している場合)にインストールしたアプリで、「基本機能全般」の項目を繰り返す。

アプリを SD カードに移動するには、「設定」>「アプリ情報」>「SD カードに移動」を選ぶ。
ハードウェア アクセラレーション HA-1 ハードウェア アクセラレーションを有効にした状態で、「基本機能全般」の項目を繰り返す。

ハードウェア アクセラレーションを強制的に有効にするには(端末が対応している場合)、アプリのマニフェストの <application>hardware-accelerated="true" を追加し、リコンパイルする。
パフォーマンス モニタリング PM-1 後述する StrictMode によるプロファイリングを有効にした状態で、「基本機能全般」の項目を繰り返す。

ガベージ コレクションや、それによるユーザー エクスペリエンスへの影響を注視する。
Google Play GP-1 Developer Console にサインインし、デベロッパーのプロフィールやアプリの説明、スクリーンショット、宣伝用画像、成熟度設定、ユーザーのフィードバックを確認する。
GP-2 宣伝用画像とスクリーンショットをダウンロードし、アプリの対象端末やフォーム ファクター上のディスプレイ サイズに合うようサイズを縮小する。
GP-3 すべての画像アセットや、メディア、テキスト、コード ライブラリーなど、アプリまたは拡張ファイル ダウンロードにパッケージとして含まれているコンテンツを確認する。
支払い GP-4 アプリのすべての画面のナビゲーションを確認し、また、アプリ内の購入フローの中も確認する。


StrictMode でのテスト
パフォーマンスのテストでは、アプリで StrictMode を有効にし、パフォーマンスやネットワーク アクセス、ファイルの読み書きなどに影響しそうなメイン スレッドとその他スレッド上の動作を捕捉することをおすすめします。

StrictMode.ThreadPolicy.Builder にてスレッドごとにモニタリング ポリシーを設定でき、detectAll() を使用すれば、ThreadPolicy にてサポートされているモニタリングをすべて有効にできます。

penaltyFlashScreen() を使い、ThreadPolicy に対するポリシー違反の視覚通知を有効にしてください。