2015年1月6日火曜日

【abc2014s】 失敗を避けて Google Play で成功していただくための高品質 Android アプリ開発 Tips


【 講演内容 】
進化を続ける Android プラットフォームで高品質なアプリを開発していただき、Google Play で成功していただくための注意事項や推奨事項について ご紹介いたします。

松内さんは、Google日本の中の人でAndroid開発者支援を担当している方です。今回はGoogle Playにアプリを公開するにあたっての注意点について解説しています。

#はよ資料公開してくれないかな、、、




落とし穴1:ユーザー評価が悪いアプリ


★3つだと収益性が落ちる統計があるんだそうな。2年前の作ったアプリだと今の端末の性能と合致していない場合が多いので随時更新した方がいい。

  1. 星4以上の評価を目標に
  2. ユーザーレビューへの返信機能の活用
  3. アプリは頻繁に更新してください

落とし穴2:アンインストール率が高いアプリ


アンインストール率が高いとユーザーの「不満足度」が高いと認識される。ブースト広告を利用するとインストールは上がるがアンインストールも上がる事になり勿体ないことに。

  1. ユーザーを欺かない - スクリーンショット画像、紹介動画
  2. ユーザーを邪魔しない - 過剰なNotificationsは避ける
  3. 滑らかで高品質な体験でユーザーに感動してもらう

落とし穴3:動作が遅い(ように見える)アプリ


端末の性能が高いのに遅く見えるのは致命的。

  1. スクロール/アニメーション:なめらか、ぬるぬる
    UIスレッドはとにかく軽く、マルチスレッド化、AsyncTask
  2. タッチ操作に対しては常に何かフィードバックを表示
  3. 通信で待たせない:先読み、キャッシュ、Sync Adapter
  4. Strict Modeで画面が赤くならないこと

    端末の開発者設定に用意されている。遅いアプリは赤枠で警告する。Android 4.xあたりで実装されてたはず。

落とし穴4:電池を消費しすぎる、ネットワークを使いすぎるアプリ

ネットワークを使い過ぎるとネットワーク障害の原因になり、そもそも電池消費が大きくなる。ポーリングは避けて、GCMを活用してもらいたい。

  1. Google Cloud Messaging (ポーリングは避ける)
  2. データ通信の最適化
    キャッシュ、先読み、通信のパッチ化、Sync Adapter(Reto Meierのビデオ番組もご参照ください)

落とし穴5:RAMを使いすぎるアプリ


RAMを使いすぎるともっさりとしたアプリになりがち。Javaの書き方でメモリを使わない方法を用いた方がいい。

  1. adb shell dumpsys procstats, adb shell dumpsys meminfoの情報を確認
  2. Device Monitor (DDMS)ツールのHeap情報、Allocation Tracker情報、Heap Dump情報を確認
  3. onTrimMemory (API Level 14+)またはonLowMemory(14未満)コールバックを積極的に活用
  4. serviceを長時間走らせ続けることは避ける (IntentServiceを推奨)
  5. Dependency Injectionフレームワーク(Guice等)は避ける
  6. Enumではなくstatic final定数で書く
  7. HashMapクラスは避け、SparseArraySparseBooleanArray,LongSparseArrayなどを用いる
  8. 常にProGuardを使う
  9. レイアウトファイルに常にLintをかけて無駄を取り除く

紹介されていた資料:


落とし穴6:プラットフォーム標準から剥離したUI/UXデザインのアプリ


標準のActionBarを使う事でUsabilityが上がった例があった。OS標準のUI以外だと違和感を覚えるユーザーは多いのではないか。

優れたUIのアプリをブログで紹介する活動を行ってるので参考にされたし。


落とし穴7:タブレットユーザーをがっかりさせているアプリ


タブレット向けに設計されていないアプリは敬遠されやすい。タブレットユーザーは1.7倍、課金をしてくれる傾向がある。

  1. さまざまな画面サイズに対応を。縦画面・横画面ともに。(Responsive Designへの配慮)
  2. 画面サイズ毎にアプリを分けない。1アプリで全画面サイズに対応
  3. 「携帯電話向けに設計」表示を避けてください
    (2013.11.22 Google Play「タブレット向けに設計」表示強化)

落とし穴8:古いプラットフォーム向けに最適化してしまっているアプリ


規約に広告IDを使う必要があると記載している(2014.08.01改定)。時代の流れでプライバシーについてユーザーの意識が強くなっている。認証技術もGoogleが用意している方法の方がはるかに安全でしょう。規約について分かりやすい解説をGoogle Play アプリ ポリシー センターに掲載しているので活用してほしい。

  1. targetSdkVersionは常に最新に(現在19)
    「恥ずかしいMenu button」は表示しない
  2. 端末固有IDの利用はできるだけ避けてください
    広告には広告ID(Advertising ID)を
    アイデンティティの表現にはGoogle+ Sign-inなど最新の認証技術を

落とし穴9:配信時にありがちなミス

販売地域の設定で「au」「NTT DOCOMO」「SoftBank」のチェックボックスにチェックを入れてしまうとタブレットユーザーを除外してしてしまう。チェックしないのが正解。


  1. 配信対象範囲を不必要に狭くしない
    キャリア限定は強い理由がない限り非推奨
    <compatible-screens>はできれば避けて
  2. ランチャーアイコンは高解像度版も用意を
    hdpi, xhdpi, xxhdpi, および xxxhdpi
  3. アプリ紹介文内でのスパム的な表現は避けて
  4. 適切なスクリーンショット画像、アプリ紹介動画
  5. 海外ユーザーを狙う時は、アプリ紹介文、スクリーンショット画像、紹介動画も適切なローカライズを

落とし穴10:不審なパーミッション要求


ゲームで必要がないパーミッションを付けているアプリが多い。例えばゲーム内で使っていないのに正確な位置情報(Obtain Fine Location)を要求するとユーザーは怪しむ。

本当に必要なら説明文で説明を。


落とし穴11:In-app Billing APIの実装・運用が不十分


2年前の提供当時より随分安定してきているのでお勧めしたい。

  1. IAB v3 APIをご利用ください (v1やv2ではなく)
  2. メモリ不足 / Activity再起動シナリオを必ずテスト
    メモリ不足でアプリが終了 / 再起動したとき、ユーザーへのアイテム付与に失敗しがちです(→苦情につながります)
  3. purchaseToken、onderidなどの購入情報は必ずサーバーに保存
    整合性確認、サポート提供に非常に重要な情報です
  4. Server-side signature verificationを実装
    java.security.Signature.verify()は端末上ではなくサーバー側で実行してください
  5. サーバー側に保存したデータを用い、堅牢な運用と優れたユーザーサポートを提供してください
    • Purchase Status APIを用いたステータスの再確認、再々確認
    • 販売レポート(予想、月次)の自動ダウンロード機能を活用
    • 各種データの突き合わせによる整合性確認(ユーザーはアイテムを受け取ったか?)
    • ユーザーからの問い合わせには丁寧に対応してください
    • もし残念ながら悪質なユーザーが存在する場合には防衛手段を講じてください

Androidアプリの品質に関するガイドライン資料のご紹介



質疑応答


  • 消費電力が抑えられてたアプリってどんなのがあるん?
    Twitter公式アプリはよく出来てる。バックエンドの処理が多いんだろう。ネットワーク通信には特に注意してる。CPU状態がBusyかどうかよりは通信周りを注視した方がいいのではないか。アンテナのON/OFFは電源を喰う。
  • 公式の日本語化について
    トレーニング、UIガイドラインの日本語化が優先度が高いと考えている。リファレンスは後回しになるだろう。
  • 新規のUIに対してのユーザー対応とかどうすんの?
    狙っているユーザー次第。
    ActionBarやNavigationDrowerはOSが積極的に使っている関係上、ユーザーも期待していると考えている。一方で、Androidに慣れていないユーザーに対しては丁寧な説明が必要だろう。
  • 今回の資料公開できないの?
    Google広報部が結構厳しい。許可が下りれば公開する。
  • チェックの方法は?
    様々。
    ユーザーからの報告から、自動化処理で見つけたり、目視で見つけたり。

0 件のコメント:

コメントを投稿