公開後にアプリ品質を向上させる
2013年1月25日金曜日
Posted by 山崎富美 Developer Relations Team
[この記事は Android Developers に掲載された "Improving App Quality After Launch" という記事を元に翻訳・再構成しています。詳しくは元記事をご覧ください。-山崎]
Google Play では毎週、何千ものアプリが新しく公開されています。その中でできるだけ知名度を高め、高い評価を得るためにできることを探ることが重要です。アプリがどんどん登場するエコシステムの中で、アプリの知名度を高める 1 つの方法は、ターゲットをうまく絞ったモバイル広告キャンペーンやクロス アプリ プロモーションを展開することです。これとは別に、インプレッション → インストール → ランキングのサイクルを活発化させる、長年の実績がある確実な方法があります。それは、「製品を改良すること」です。
アプリの質を高めることには多くの利点があります。品質の高いアプリはユーザー評価が高くなり、概してランキングも高く、ダウンロード数も多く、そして高いリテンション率(インストールされている期間の長さ)を誇ります。また、高品質のアプリは、Google Play でおすすめとして紹介されたり、ソーシャルメディアで話題になったりするなど、思いがけない形で、良い意味で注目を集める可能性も高くなります。
アプリの品質を高めることで得られるメリットは明らかです。しかし、アプリをどうやって「よりよいもの」にすればよいのかは必ずしも明確ではありません。このドキュメントでは、アプリの品質上の重要な要素をいくつか取り上げるとともに、アプリを公開した後に時間をかけてアプリを改良していく方法を紹介します。
アプリの「成功」を測る方法の多くは、ユーザーの行動に基づくものです。ダウンロード数やアクティブ インストール数の日計、リテンション率など、ユーザーに基づく評価基準の存在は、ユーザーの大切さを際立たせます。まだそういった観点から評価を行っていないのであれば、アプリの品質をユーザーの行動と関連づけて考えることから始めるとよいでしょう。
ユーザーの意見を聞く方法で最も分かりやすいのが、Google Play のアプリに対するコメントを読み、対処する方法です。コメントは必ずしも生産的、建設的ではありませんが、中にはアプリに関してそれまでに思いつきもしなかったような貴重な見識を与えてくれるものもあるでしょう。ユーザーには、アプリに対して下した評価やコメントをいくらでも変える機会が与えられていることを覚えておきましょう。
ユーザーと対話し、意見を出してもらうようにする 1 つの方法は、サポートや議論の場を独自に設けることです。Google グループなどのフォーラムをはじめ、総合的なカスタマー サポートを提供する製品や場など、ユーザーと直に接することができる優れたサポート ツールは数多く存在します。そういったツールを用意したときは、Google Play の製品詳細ページにサポート ツールへのリンクを加え、ユーザーがそこへ飛べるようにしましょう。
それ以外にも、公開ベータ版や、信頼性の高いテスターにアプリを使ってもらいユーザーの声を集める方法があります。Google Play へのリリースに先立ち、実際のユーザーによるテストをある程度実施することは非常に重要です。幸いなことに、ウェブを使えば、Google Play 以外の場所でユーザーにアプリを配布することが可能です。そのウェブサイトをログイン制にするか、一般公開にするかは皆さんの自由です。Google Play への公開に先立ち、このような方法で次に予定しているアップデートをアーリー アダプターのユーザーに公開してみてください。一般のユーザーによるテストの中から、細かいながらもインパクトのある改良点が数多く見出されることに皆さんもきっと驚くと思います。
アプリの全体的な安定性が評価やユーザー満足度にもたらす影響は非常によく知られていることで、さまざまな端末やユーザー シナリオでアプリのテストやプロファイリングを実施するためのツールや手法が数多く存在します。
注目に値しながらも、まだ比較的あまり活用されていないツールで、クラッシュなどの安定性の問題をとらえる UI/Application Exerciser Monkey(通称「Monkey」)というツールがあります。Monkey では、アプリのアクティビティに UI イベントをランダムに送信し、ユーザー フローをトリガーさせることで安定性にかかわる問題を発見できます。
さらに、ほとんどの Android 端末に内蔵されている Google のエラー報告機能により、ユーザーからデベロッパーにアプリケーション クラッシュを報告できるようになっています。エラー報告は集計されて Google Play Developer Console に表示されます。こういった報告をこまめに読み、適切に対処するようにしましょう。
このほか、外部のバグ・機能要望トラッカーを設置し、ユーザーにこのトラッカーを見つける方法を教えてください。そうすることでユーザーは、自分にかかわる機能やバグを追うことで、より密接にアプリに関与できるようになります。アプリの問題に対するユーザーの不満は、こまめなバグの追跡とコミュニケーションによって効率よく対処できます。前項で挙げたコミュニティー サポート ツールの中には、バグ追跡機能を提供しているものもありますし、みなさんのプロジェクトがオープン ソースであれば、大手リポジトリ ホスティング サイトの多くでこういった機能を利用することができます。
ユーザーを確実に失いたければ、遅くて反応の悪い UI を作ることです。デスクトップ、ウェブ、モバイルなど、どのようなインターフェースにおいても、スピードが重要であることは調査で証明されています。さらに、モバイル端末においては、ユーザーは出先で情報をすぐに必要とする場合が多いことから、スピードの重要性はさらに増します。
長時間実行している動作をメイン スレッドからワーカー スレッドへと移動させることで、アプリのUI のレスポンスを向上できます。Android は、メイン スレッド上でのアプリのパフォーマンスやアクティビティを分析する StrictMode などのデバッグ機能を内蔵しています。他の推奨事項ついては、Google I/O 2010 のデベロッパー向けセッション Writing Zippy Android Apps(軽快な Android アプリを作成するには)(動画)を参照してください。
さらに、Google のブログ記事 Traceview War Story(Traceview 戦記)で指摘しているように、Traceview と DDMS といったツールはそれぞれ、メソッドのコールのプロファイリング、VM メモリ割り当てのモニタリングをしてくれるので、アプリの品質アップの頼もしい右腕となってくれるでしょう。
操作性について、またアプリのデザインについてもそうですが、ユーザーの声にはよく耳を傾ける必要があります。身近な Android 端末ユーザー(友人や家族など)数人に頼んでアプリを試してもらい、彼らがどのように使うかを観察します。彼らが戸惑っているときや、進め方が分からないとき、何らかの動作に驚いているときがないかを確認してみてください。アプリ内のインタラクションの一部を見直し、こういったケースができるだけ少なくなるようにします。Google I/O で Android の UI チームが議論した Android UI patterns(Android UI のパターン)(動画)の一部が参考になるかもしれません。
このほか、現実世界のデータに基づいて操作性を徐々に向上させる方法として、アプリ全体にアナリティクスを実装して特定のセクションの利用状況を記録する方法があります。使用頻度が低いセクションは格下げしてアクション バーのオーバーフロー メニューに配置するか、すべて削除することを検討します。使用頻度が高いセクションや UI 要素は、アプリ UI 上でひと目見て分かるようにし、ユーザーが素早く使えるようにします。
最後になりましたが、操作性はトピックとして幅広く、扱っているドキュメントも数多く存在します。インターフェースのデザインや、認知科学、その他の分野とも密接に関連して語られるトピックですので、色々調べてみるのがよいでしょう。
プロのユーザー インターフェース デザイナー、つまり「モバイルと Android に精通し、さらに欲を言えばインタラクションとビジュアル デザインの両方をこなせる」人物はかけがえのない存在です。デザイナーを探す場所として有名なものには jobs.smashingmagazine.com があります。また、ソーシャル ネットワークの活用で優秀な人材が見つかることもあります。
UI デザイナーに仕事を頼む余裕がない場合は、自分でアプリの見た目をよくする方法がいくつかあります。まず、Adobe Photoshop や Adobe Fireworks などのラスター画像編集ツールの操作に慣れておきましょう。これらのアプリケーションを習得するには時間がかかりますが、インターフェースのデザイン全般を洗練させる上で非常に有益なスキルです。また、フレームワーク UI アセットやレイアウトを学び、こちらの関連資料を熟読して各種リソースのフレームワークをマスターしてください。9 パッチやリソース ディレクトリ修飾子などの手法は、いわば Android 独特の手法で、フレキシブルながらも美しい UI を構築する上で非常に重要です。
アプリのデザインやコードの作成作業を先へ進めてしまう前に、Android デザインのサイトにアクセスして、方針や構成要素、美しく魅力的なユーザー インターフェースをデザインするツールについて学んでください。
アプリには適切な機能群を入れることが大事です。できるだけ多くの機能をアプリに盛り込もうとしてしまう、「フィーチャー クリープ」という落とし穴にはまってしまわないよう気をつけてください。モバイル端末では、その場で最も重要な情報、あるいは最も関連性の高い情報を即座に示すことが極めて重要です。ユーザーにとって情報過多は、情報不足と同じくらい、あるいはそれ以上にいらだたしいものです。
前述の通り、機能に対する要望を集めてそれに応えることで、ユーザーの声に耳を傾けるようにしてください。ただし、機能に対する要望を鵜呑みしないよう気を付けてください。集まった要望は、どのような機能を導入すべきかを考える上で参考になりますが、すべての要望を実現する必要はありません。
快適なユーザー エクスペリエンスを提供する良い方法は、オペレーティング システムと密接に連携させることです。そういった点では、ホーム画面のウィジェットや高度な通知、グローバル検索の統合、クイック コンタクトなどの機能は、手軽に実現できる機能です。
アプリのカテゴリによっては、ホーム画面ウィジェットなどの基本機能はあって当然という認識を持たれており、その機能が含まれていないと、それ以外の点で良いユーザー エクスペリエンスを提供していても、評価を落とすのは確実です。アプリの中には、Android の連絡先やアカウント、同期 API を利用してより密接な OS との連携を実現できるものもあります。
サード パーティとの統合によって、ユーザーにはさらなる快適さを提供できるうえ、端末としてのまとまり感を与えることもできます。また、他のアプリの機能を活用することで、コードを新たに書かなくてもアプリに機能を追加できる非常に優れた方法でもあります。例えば、カメラ アプリの場合、ユーザーが該当するサード パーティの編集アプリをインストールしていれば、写真をそのアプリで編集してから保管場所に保存するといったことも可能になります。このトピックに関する詳しい情報は、Android トレーニング クラスInteracting with Other Apps(他のアプリと連携する)を参照してください。
中でも注意すべきなのは、アプリのアイコンの品質と一貫性です。アプリのアイコン (特にランチャー アイコン) がどの解像度でも鮮明に表示されること、また、できる限りアイコンのガイドラインに従っていることを確認してください。アイコン作成で何かお困りの場合や自分でアイコンをデザインしようにもリソースがない場合は、アイコン一式を作成できる Android Asset Studio ツールの使用をご検討ください。
[この記事は Android Developers に掲載された "Improving App Quality After Launch" という記事を元に翻訳・再構成しています。詳しくは元記事をご覧ください。-山崎]
Google Play では毎週、何千ものアプリが新しく公開されています。その中でできるだけ知名度を高め、高い評価を得るためにできることを探ることが重要です。アプリがどんどん登場するエコシステムの中で、アプリの知名度を高める 1 つの方法は、ターゲットをうまく絞ったモバイル広告キャンペーンやクロス アプリ プロモーションを展開することです。これとは別に、インプレッション → インストール → ランキングのサイクルを活発化させる、長年の実績がある確実な方法があります。それは、「製品を改良すること」です。
アプリの質を高めることには多くの利点があります。品質の高いアプリはユーザー評価が高くなり、概してランキングも高く、ダウンロード数も多く、そして高いリテンション率(インストールされている期間の長さ)を誇ります。また、高品質のアプリは、Google Play でおすすめとして紹介されたり、ソーシャルメディアで話題になったりするなど、思いがけない形で、良い意味で注目を集める可能性も高くなります。
アプリの品質を高めることで得られるメリットは明らかです。しかし、アプリをどうやって「よりよいもの」にすればよいのかは必ずしも明確ではありません。このドキュメントでは、アプリの品質上の重要な要素をいくつか取り上げるとともに、アプリを公開した後に時間をかけてアプリを改良していく方法を紹介します。
品質基準
ユーザーの声に耳を傾ける 安定性の向上とバグの除去 UI のレスポンスを改善する 操作性を高める プロフェッショナルな見た目と美しさ 適切な機能群を提供する システムとサード パーティのアプリと統合する 細部にも注意を払う その他参考資料 アプリ品質ガイドライン タブレット向けアプリ品質チェックリスト |
ユーザーの声に耳を傾ける
アプリの「成功」を測る方法の多くは、ユーザーの行動に基づくものです。ダウンロード数やアクティブ インストール数の日計、リテンション率など、ユーザーに基づく評価基準の存在は、ユーザーの大切さを際立たせます。まだそういった観点から評価を行っていないのであれば、アプリの品質をユーザーの行動と関連づけて考えることから始めるとよいでしょう。
ユーザーの意見を聞く方法で最も分かりやすいのが、Google Play のアプリに対するコメントを読み、対処する方法です。コメントは必ずしも生産的、建設的ではありませんが、中にはアプリに関してそれまでに思いつきもしなかったような貴重な見識を与えてくれるものもあるでしょう。ユーザーには、アプリに対して下した評価やコメントをいくらでも変える機会が与えられていることを覚えておきましょう。
ユーザーと対話し、意見を出してもらうようにする 1 つの方法は、サポートや議論の場を独自に設けることです。Google グループなどのフォーラムをはじめ、総合的なカスタマー サポートを提供する製品や場など、ユーザーと直に接することができる優れたサポート ツールは数多く存在します。そういったツールを用意したときは、Google Play の製品詳細ページにサポート ツールへのリンクを加え、ユーザーがそこへ飛べるようにしましょう。
それ以外にも、公開ベータ版や、信頼性の高いテスターにアプリを使ってもらいユーザーの声を集める方法があります。Google Play へのリリースに先立ち、実際のユーザーによるテストをある程度実施することは非常に重要です。幸いなことに、ウェブを使えば、Google Play 以外の場所でユーザーにアプリを配布することが可能です。そのウェブサイトをログイン制にするか、一般公開にするかは皆さんの自由です。Google Play への公開に先立ち、このような方法で次に予定しているアップデートをアーリー アダプターのユーザーに公開してみてください。一般のユーザーによるテストの中から、細かいながらもインパクトのある改良点が数多く見出されることに皆さんもきっと驚くと思います。
安定性の向上とバグの除去
アプリの全体的な安定性が評価やユーザー満足度にもたらす影響は非常によく知られていることで、さまざまな端末やユーザー シナリオでアプリのテストやプロファイリングを実施するためのツールや手法が数多く存在します。
注目に値しながらも、まだ比較的あまり活用されていないツールで、クラッシュなどの安定性の問題をとらえる UI/Application Exerciser Monkey(通称「Monkey」)というツールがあります。Monkey では、アプリのアクティビティに UI イベントをランダムに送信し、ユーザー フローをトリガーさせることで安定性にかかわる問題を発見できます。
さらに、ほとんどの Android 端末に内蔵されている Google のエラー報告機能により、ユーザーからデベロッパーにアプリケーション クラッシュを報告できるようになっています。エラー報告は集計されて Google Play Developer Console に表示されます。こういった報告をこまめに読み、適切に対処するようにしましょう。
このほか、外部のバグ・機能要望トラッカーを設置し、ユーザーにこのトラッカーを見つける方法を教えてください。そうすることでユーザーは、自分にかかわる機能やバグを追うことで、より密接にアプリに関与できるようになります。アプリの問題に対するユーザーの不満は、こまめなバグの追跡とコミュニケーションによって効率よく対処できます。前項で挙げたコミュニティー サポート ツールの中には、バグ追跡機能を提供しているものもありますし、みなさんのプロジェクトがオープン ソースであれば、大手リポジトリ ホスティング サイトの多くでこういった機能を利用することができます。
UI のレスポンスを改善する
ユーザーを確実に失いたければ、遅くて反応の悪い UI を作ることです。デスクトップ、ウェブ、モバイルなど、どのようなインターフェースにおいても、スピードが重要であることは調査で証明されています。さらに、モバイル端末においては、ユーザーは出先で情報をすぐに必要とする場合が多いことから、スピードの重要性はさらに増します。
長時間実行している動作をメイン スレッドからワーカー スレッドへと移動させることで、アプリのUI のレスポンスを向上できます。Android は、メイン スレッド上でのアプリのパフォーマンスやアクティビティを分析する StrictMode などのデバッグ機能を内蔵しています。他の推奨事項ついては、Google I/O 2010 のデベロッパー向けセッション Writing Zippy Android Apps(軽快な Android アプリを作成するには)(動画)を参照してください。
UI のパフォーマンスを向上させる良い方法の 1 つは、レイアウトをできるだけシンプルにすることです。hierarchyviewer を開き、レイアウトの階層が 6 つ以上あるときは、レイアウトを簡素化したほうがよいでしょう。このような深い入れ子状態になった LinearLayouts(リニアレイアウト)は、RelativeLayout(相対レイアウト)へと組み直しを検討してみてください。というのも、View(ビュー)オブジェクトの影響は累積するからです。オブジェクト 1 つで 1~2 KB のメモリを使用しますので、大きなビュー階層ほど VM のガベージ コレクションが頻繁に生じ、メイン(UI)スレッドをブロックしてしまいます。詳しくは、Google I/O のセッションの World of ListView(ListView の世界)(動画)を参照してください。
関連資料
さらに、Google のブログ記事 Traceview War Story(Traceview 戦記)で指摘しているように、Traceview と DDMS といったツールはそれぞれ、メソッドのコールのプロファイリング、VM メモリ割り当てのモニタリングをしてくれるので、アプリの品質アップの頼もしい右腕となってくれるでしょう。
操作性を高める
操作性について、またアプリのデザインについてもそうですが、ユーザーの声にはよく耳を傾ける必要があります。身近な Android 端末ユーザー(友人や家族など)数人に頼んでアプリを試してもらい、彼らがどのように使うかを観察します。彼らが戸惑っているときや、進め方が分からないとき、何らかの動作に驚いているときがないかを確認してみてください。アプリ内のインタラクションの一部を見直し、こういったケースができるだけ少なくなるようにします。Google I/O で Android の UI チームが議論した Android UI patterns(Android UI のパターン)(動画)の一部が参考になるかもしれません。
これに関連して、Android ユーザー インターフェースで発生しがちな問題は、タップ ターゲットが小さい、フォントサイズが必要以上に小さい、という 2 つの問題です。これらの問題は多くの場合容易に解決でき、操作性やユーザー満足度に大きく影響することがあります。一般的に、使いやすさと読みやすさを考えて最適化する一方で、情報密度は最小限にする(少なくとも、慎重にバランスを取る)ようにします。
アプリの UI をデザイン・評価する際には、Android Design(Android デザイン)ガイドラインを読み、熟知するようにしてください。UI パターンやスタイル、構成要素の例を数多く取り上げているほか、デザイン プロセス用のツールも紹介しています。
このほか、現実世界のデータに基づいて操作性を徐々に向上させる方法として、アプリ全体にアナリティクスを実装して特定のセクションの利用状況を記録する方法があります。使用頻度が低いセクションは格下げしてアクション バーのオーバーフロー メニューに配置するか、すべて削除することを検討します。使用頻度が高いセクションや UI 要素は、アプリ UI 上でひと目見て分かるようにし、ユーザーが素早く使えるようにします。
最後になりましたが、操作性はトピックとして幅広く、扱っているドキュメントも数多く存在します。インターフェースのデザインや、認知科学、その他の分野とも密接に関連して語られるトピックですので、色々調べてみるのがよいでしょう。
プロフェッショナルな見た目と美しさ
プロのユーザー インターフェース デザイナー、つまり「モバイルと Android に精通し、さらに欲を言えばインタラクションとビジュアル デザインの両方をこなせる」人物はかけがえのない存在です。デザイナーを探す場所として有名なものには jobs.smashingmagazine.com があります。また、ソーシャル ネットワークの活用で優秀な人材が見つかることもあります。
UI デザイナーに仕事を頼む余裕がない場合は、自分でアプリの見た目をよくする方法がいくつかあります。まず、Adobe Photoshop や Adobe Fireworks などのラスター画像編集ツールの操作に慣れておきましょう。これらのアプリケーションを習得するには時間がかかりますが、インターフェースのデザイン全般を洗練させる上で非常に有益なスキルです。また、フレームワーク UI アセットやレイアウトを学び、こちらの関連資料を熟読して各種リソースのフレームワークをマスターしてください。9 パッチやリソース ディレクトリ修飾子などの手法は、いわば Android 独特の手法で、フレキシブルながらも美しい UI を構築する上で非常に重要です。
アプリのデザインやコードの作成作業を先へ進めてしまう前に、Android デザインのサイトにアクセスして、方針や構成要素、美しく魅力的なユーザー インターフェースをデザインするツールについて学んでください。
適切な機能群を提供する
アプリには適切な機能群を入れることが大事です。できるだけ多くの機能をアプリに盛り込もうとしてしまう、「フィーチャー クリープ」という落とし穴にはまってしまわないよう気をつけてください。モバイル端末では、その場で最も重要な情報、あるいは最も関連性の高い情報を即座に示すことが極めて重要です。ユーザーにとって情報過多は、情報不足と同じくらい、あるいはそれ以上にいらだたしいものです。
前述の通り、機能に対する要望を集めてそれに応えることで、ユーザーの声に耳を傾けるようにしてください。ただし、機能に対する要望を鵜呑みしないよう気を付けてください。集まった要望は、どのような機能を導入すべきかを考える上で参考になりますが、すべての要望を実現する必要はありません。
システムとサード パーティのアプリと統合する
快適なユーザー エクスペリエンスを提供する良い方法は、オペレーティング システムと密接に連携させることです。そういった点では、ホーム画面のウィジェットや高度な通知、グローバル検索の統合、クイック コンタクトなどの機能は、手軽に実現できる機能です。
アプリのカテゴリによっては、ホーム画面ウィジェットなどの基本機能はあって当然という認識を持たれており、その機能が含まれていないと、それ以外の点で良いユーザー エクスペリエンスを提供していても、評価を落とすのは確実です。アプリの中には、Android の連絡先やアカウント、同期 API を利用してより密接な OS との連携を実現できるものもあります。
サード パーティとの統合によって、ユーザーにはさらなる快適さを提供できるうえ、端末としてのまとまり感を与えることもできます。また、他のアプリの機能を活用することで、コードを新たに書かなくてもアプリに機能を追加できる非常に優れた方法でもあります。例えば、カメラ アプリの場合、ユーザーが該当するサード パーティの編集アプリをインストールしていれば、写真をそのアプリで編集してから保管場所に保存するといったことも可能になります。このトピックに関する詳しい情報は、Android トレーニング クラスInteracting with Other Apps(他のアプリと連携する)を参照してください。
細部にも注意を払う
中でも注意すべきなのは、アプリのアイコンの品質と一貫性です。アプリのアイコン (特にランチャー アイコン) がどの解像度でも鮮明に表示されること、また、できる限りアイコンのガイドラインに従っていることを確認してください。アイコン作成で何かお困りの場合や自分でアイコンをデザインしようにもリソースがない場合は、アイコン一式を作成できる Android Asset Studio ツールの使用をご検討ください。