アイキャッチ

ゴミアプリと言わせないために~Google Playで成功するための高品質Androidアプリ開発Tips

  • このエントリーをはてなブックマークに追加

by [2015年2月27日]

松内良介氏

デベロッパーアドボケイト 松内良介氏

 2015年2月25日、六本木にてグーグル主催のモバイルアプリ事業者向けイベント『Google for モバイルアプリ Googleと切り開くアプリビジネスの未来』が開催されました。本記事ではそのイベント内に行われたセッション『ゴミアプリと言わせないために 〜 Google Play で成功するための高品質 Android アプリ開発 Tips』の様子をお送りいたします。講演者は松内良介氏と服部弘幸氏で、Google Playのユーザーレビューを参照しながら、ユーザーは何を期待しているか、その期待に応えるためにはどのようにしたらいいのかについて、お話いただきました。

※まず松内良介氏のお話です。

WEBとアプリの立ち位置

Google-Playでのユーザー評価と収益性の相関
 ユーザー評価と収益性の相関についてですが、評価が★2の時と★3の時とでは収益に9倍の差があり、★3の時と★4~5の時とでは4倍の差がありますので、ユーザー評価を高めていくことは重要です。それではユーザー評価の低いレビューをいくつか紹介していきたいと思います。
 まずは基本的なWEBとアプリの立ち位置について解説します。
 よくあるユーザーの苦情としては、「WEBサイトの方が便利/早い」「アプリにする意味がない」「ブラウザを起動しすぎる」「モバイル/PCWebを中途半端にWebView内に表示する」といったものが挙げられ、中には「ゴミアプリ」と呼ばれるものまであります。ユーザーはWEBが適切な場面、WEBの方が早い場合、ブラウザを用います。つまりアプリを使う場合、何かWEBとは違う体験を期待していることが多いということです。そう考えれば、例えば、オフラインで使える、早く目的の情報にたどり着ける、動作や表示が軽快であることが求められてくることでしょう。

アプリの品質はどのようなものが求められているか

ユーザー「遅すぎて見る気が起きない、情報の読み込みが絶望的」

 動作速度に関してユーザーの期待は、さくさく軽快で、ぬるぬるとしたスクロール、フリック、スワイプの操作といった「WEBサイトよりレスポンスがいいこと」に加えて、バックグラウンドでデータが自動的に同期されていることや、中断感の少ない豊かな視覚的フィードバックという「ネイティブアプリらしい体験」だと思います。
 それを実現するための方法として、起動の段階においては、一部のアプリ(ブランディングが重要なゲームなどのアプリ)を除いて「起動時にスプラッシュ画面を出さないこと」や、「できるだけ起動前にデータをダウンロードしておくこと」、「会員登録などの要求で、ユーザーを邪魔しないこと」が挙げられます。一般のActivity、Fragment遷移時においても、遷移前にできるだけデータをダウンロードし、無駄なViewの生成を避けることが重要です。スクロールもぬるぬる動かさなければなりません。RecyclerViewやGlideなどのライブラリを使っていただくと、無理しないで、きちんとしたスクロール体験を提供することができます。ほかにはUIスレッドを軽くするために、ネイティブAPIで簡単に表示できるUIにWebViewは使わないといった対応が必要でしょう。

ユーザー「電池を消耗しすぎる」

 あまりに消費する電力が大きいとアプリの苦情に繋がります。アンテナを寝ている状態から立ち上げるのに、電気が多く使われ、これはGPSも同様です。ネットワーク通信をするときはアンテナを起こさない、一回起こしたのであれば、出来るだけまとめて大量にダウンロードさせて、その後、長い間は寝かせてあげてください。

 

 消費電力を抑えるノウハウとしては、こうした動画から学んだり、batterystatsツール(Android 5.0+)やJobScheduler API(Android 5.0+)を利用してください。またGoogle Cloud Messagingはネットワーク負荷が少ないので、サーバー側の変更をクライアントに通知する時に、電池消費を最小限にすることができます。

ユーザー「いつも居座っている感がある」

 通知設定を切っているにも関わらず、バックグラウンドで起動しているという事例があります。IntentServiceを丁寧に設計し、サービスの処理はできるだけ早く完了すると、こうした苦情は避けられます。サービスは一回処理をしたら、全リソースを解放して、そのサービスからいなくなり、そして、またアラームやPendingIntentなどのトリガーをつかって、ちょっと起き上がって仕事するというのが理想です。RAM消費を抑えるノウハウとしては、「onStopでリソースの解放」「onTrimMemory/onLowMemoryを活用」「HashMapではなくSparseArray」「enumを使うとメモリの無駄になるのでstatic final」「抽象化のし過ぎを避ける(Guiceなど)」といった対策をしてください。ビットマップ管理については、Recyclerviewであったり、GitHubで公開されているGlide libraryをご活用いただければと思います。こうしたアプリRAM利用状況の把握と解析に役立つツールとして、procstatsツール、Android StudioのMemory Monitorがあります。

ユーザー「一つ前の状態に戻れない」

 リスト表示から詳細画面にいって、バックボタンで戻ると、リストの先頭に戻ってしまうということがあります。これは他のプラットフォームで、そこまでバックボタンがポピュラーじゃないという理由があります。ネイティブコードで書いて、アクティビティをわければ、こういうことは起こりません。またこれと似たような問題で、他のアプリを起動して、元のアプリに戻るとトップ画面に戻ってしまうというような再起動シナリオへの配慮漏れというものがあります。こちらも注意してください。

ユーザー「今の機種に対応していない」

 ダウンロードしてから非対応ですと言われるとユーザーは怒ります。最新バージョンに対応するのが最善ですが、出来ないなら、そもそもダウンロード出来ない設定にするのがいいと思います。また全機種検証は時代に合わないので、minSdkVersion以上の端末は基本的に利用可能にしてください。テストしていない端末は非対応機種であるという考えはフィーチャーフォン時代には合っていたのですが、今はそうではありません。テスト用代表機種をいくつかの軸で選んでいただき、リスクを最小化するのが合理的です。Androidのバージョン、RAM容量、GPUのAdreno、PowerVR、Tegra、Mali、チップセットのSnapdragon、MediaTek、Intel、Nvidiaを軸としてテストしていただければ、ほとんどの端末のバグは潰せます。ちなみに、Nexusは前のAndroidバージョンを任意に入れ替えできるので、ぜひ活用してください。

ユーザー「地下鉄に入る時、地上で起動させる必要がある」

 位置情報の取得処理がデタラメという問題については、GPS以外の位置情報に対応し、ユーザーがアプリの外に出たら、位置情報の取得は停止してください。そのためにFused Location ProviderというものをAndroidは提供しています。これはGPS、WiFi、センサーなど、その状況での情報を総合的に判断するので、GPSが使えない環境でもおおよその位置を把握できます。Activity Recognitionと組み合わせて使っていただくと、この人は歩いているのか、立ち止まっているのかということがわかり、それに合わせた情報提供が出来ます。Google Nowも実際このような処理をしています。

その他のユーザーレビュー

・ユーザー数が増加したのにサーバーが対応していない。
・WiFiに対応していない。
・他のアプリが必要とするリソースを占有する。
・SDカードへの移動を誤って禁止している(APKファイルは自動的に暗号化されるので、禁止する理由は何もありません)。
・MVNOのSIMカードに非対応(SIMのMCC/MNCに頼りすぎてしまうことが原因です。例えば国内外を判定する必要がある場合は、Fused Location Providerでおおよその位置を取得する方がいいでしょう)。
・タブレットユーザーを無視(タブレットユーザーはスマホユーザーに比べて1.7倍課金してくれますし、全Android端末中、画面サイズがLarge・Xlargeの割合は13.4%となっています。タブレットユーザーを無視してしまうのは非常にもったいないです)。

ユーザーとのコミュニケーション

ユーザー「通知が迷惑」

 システム領域の通知に関する注意としては、
 ・ユーザーがオフにできるようにする
 ・単なる広告の表示は避ける
 ・ユーザー自身に直接、関係のある情報を優先して表示する
 ・提供者視点ではなくユーザー視点で通知の内容、タイミング、頻度、プライオリティを調整する
 以上の四つが重要です。

他のユーザーレビュー

 上述した以外にも、「広告やポップアップが邪魔」、配信停止の手続きが複雑化しているため「会員向けメールがスパムになっている」といった苦情があります。また、SNSへの投稿に関してユーザーが混乱するケースや、問い合わせに対しての不適切な対応によってユーザーサポートの体験に不満を抱くなどといったことも見受けられます。レビュー返信機能は重要です。返信することで、ユーザーが評価を★4~5に変える例も見られます。レビューを読んでいることを伝えるだけでも、使う価値はあると思います。

※ここから、服部弘幸氏のお話です。

服部弘幸氏

プロダクトクオリティーオペレーションズ シニアストラテジスト 服部弘幸氏

ポリシー/規約についてのユーザー評価

入力すればアイテムがもらえる招待コード

 他のユーザーにシェアできるコードをコメントに記すことは、スパムとしてみなされ、規約違反になっています。このAdd-meレビュースパム問題の何がいけないかというと、まず他のユーザーのアプリ選択の役に立たないということが挙げられます。シェアできるコードが欲しいと思ってユーザーはレビューを見るのではなく、どのようなアプリかを知りたいから見るのです。それに加えて、こうしたコメントは、サイレントユーザーからは不快だというレポートがあり、ユーザー離脱の原因とされています。次にレビューそれ自体を開発者が促すのは問題ないのですが、インセンティブを与えて誘導を行うのは規約違反になってしまい、レビュー自体が消されてしまうことが挙げられます。そうなると、開発者側にしてみれば、アプリの評価が下がることになります。なぜなら、基本的にスパムと認定されるレビューの星は4つ、あるいは5つと高いからです。
 よって、アプリ提供者は、コメント投稿に関するポリシーを参照するようにしてください。

他のコメント

 「使い勝手はいいけど、起動すると5つ星を要求されるのでがっかり」というコメントがあります。こうした5つ星への誘導は、ユーザーの不信を買うだけでなく、規約違反になるので非常にリスキーです。こちらはコメント投稿ポリシーとは別で、開発者ポリシーになります。また「広告の位置が邪魔。詳細をクリックするところに広告がある」といったコメントもあります。広告はマネタイズの一環として有用なのですが、ユーザーは広告に関してセンシティブです。広告製品は適切に利用しましょう。グーグルではAdMobを提供しているのですが、あまりにも広告をクリックする実装をしている場合は、AdMobだけでなくアプリ自体が削除される可能性があります。AdMobにもポリシーがあり、動画でも説明しています。

Google for モバイル アプリ
Google と切り開くアプリ ビジネスの未来

PageTopへ