55
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

オープンストリームAdvent Calendar 2015

Day 10

Google for Mobile - Android アプリ実装について

Last updated at Posted at 2015-12-10

12/9 パシフィコ横浜で開催された Google for Mobile のセッションからいくつかまとめと補完した。

マテリアル デザインでよりよいユーザー体験を実現しよう

なぜマテリアルデザインしたのかとその内容の話
すでにいろいろなところにまとめれれてる

##高品質 Android アプリ実装ヒント集 〜 ゴミアプリと言わせないために 〜

###ユーザー評価
Essentials for a Successful App で記載されている内容には、ユーザーからのリアルなクレームを元にも作成されている。
2015 年ベストアプリ - Google Play は、評価が高く、品質が高く、Android標準に沿った使いやすいUIのアプリが選ばれている。

ユーザーからの評価を読むことは非常に大事である。

  • アプリである意味が無い
    • WebViewだけのアプリ
    • ブラウザを開くだけのアプリ
    • モバイルWebでこと足りる?
      • プログレッシブウェブアプリが進化するとアプリ化する必要性が低くなる?
  • 動作が遅い/重い
    • Activity / Fragment の画面遷移が遅い
      • 事前にデータのダウンロード Sync Apapter / Intent Service / GCM etc.
      • Viewの階層を減らす
      • onStart/onStopでリソースの確保と開放
    • 画像等のサイズを最適化
    • 画像キャッシュ
    • RecyclerView+Adapterの活用
    • UIスレッドは軽く
    • タッチ操作時の視覚的フィードバック
      • ボタンの押した感
      • プログレスの表示
      • リップル効果
    • チューニングツール
  • RAMの消費が激しい / いつも居座っている
    • onStopでリソースの開放
    • 無駄に常駐しないService / IntentService
    • onTrimMemory / onLowMemory の活用
    • SparseArray の使用
    • 定数は enum より static final
    • Runtime Injection は避ける (Guice等)
    • ビットマップの管理
      • LruCacheでキャッシュ化
      • RecyclerView+Adapter
      • Glide library を利用する
  • 電池の消費が激しい
    • batterystats /Battery Historian で計測
    • JobScheduler APIで、充電中のみ、Wi-Fi接続時のみにジョブを実行するコントロールが可能 (Android 5.0+)
  • 新しい機種/OSバージョンに非対応
    • 検証デバイス選定の指針
      • バージョン
      • RAM容量
      • GPUファミリー
      • チップセットファミリー ArmとAtomなど
  • サーバーの設備が追いついていない
    • Google Play のアルファ/データテスト機能を活用して、キャパシティテストを行う。
      • クローズドベータ
      • オープンベータ 機能が追加された
    • Google Cloud Platform のコンテナ技術の活用してスケールアウトしやすくする。
  • 位置情報の取得処理
  • パーミッション要求が不審
    • パーミッション要求は必要最低限に
    • 6.0の実行時パーミッション機能にも対応
    • ※アプリのパーミッション画面で表示される「連絡先」は 端末に登録してあるGoogleアカウント情報を取得するための権限の GET_ACCOUNTS であることがややこしい...
  • タブレットユーザー
    • フォンユーザーよりタブレットユーザーの方が課金率は高い
    • 画面サイズが large/xlarge であるタブレットは 全てのAndroidデバイス中 12.4% を占める
    • ファミリー向けアプリの多くはタブレット向け
  • サインイン、会員登録が面倒
    • バージョンアップ時にもサインイン状態は保持するように
    • パスワード入力を少なく
      • Google Sign-in
      • Smart Lock for Passwords
      • ※ Yahoo! Japan のアプリはブラウザでログインさせてる。ブラウザでログイン済であれば、ID/Passwordの入力が不要になる。
  • 通知、広告やポップアップはうるさい
    • ※フルスクリーンの動画広告はやめて欲しい。Landscapeになるので持ち替えが必要になる...
  • UI がモダンではない
    • アプリの使い勝手が悪いとユーザーはすぐに離れる
    • コンテンツが良くても残念なアプリは多々ある
    • 同類アプリ間で品質の競争が発生している

###マルチスクリーン時代のおもてなし

  • 端末の性能向上、アプリ間の品質競争
    • 品質に不満 = 即アンインストール
    • アンインストール数 = 不満足度の指数
  • ユーザーの期待
    • モバイルWeb との差別化
    • 軽快な動作
    • 電池消費
    • ネットワーク効率
    • タブレット対応
    • オフライン
    • うるさくない通知
    • モダンで洗練されたUI
  • Google Play レビュー欄は貴重な情報の宝庫
    • 苦情の中にヒントあり
    • 評価 4.0 以上を目指す
    • レビュー返信機能の活用
  • マルチスクリーン時代 = 顧客設定の増大
    • どの窓口でも優れた「おもてなし」を

##Android TV, Chromecast と Nearby API の接近通信で実現するマルチスクリーン体験

Chromecast

Chromecast のアプリについては以下の内容と大きく変わりはなかった。

新しい Google Cast API が 2015/5に発表された

  • Remote Display API (Beta)
    • Sender アプリから画面描画をCastに送信できる。
      • これまでもChromecastをSecondary displayとして使用できたがそれとの違いが判らなかった...
  • Game Manager API
    • Receiver アプリは HTML,CSS,JavascriptのSAP
    • マルチデバイスからReceiverへ接続できる
      • これもいままで出来ていたのでAPIの利点がよくわからなかった...

Android TV

特に目新しい内容は無かった

ハードウェア仕様
テレビ製品、OTT.、STB向けのAndroidプラットフォーム
タッチ入力は出来ない。リモコン操作に対応しなければならない。
Google製アプリ(Chrome/Gmail/Map等)は非搭載

リリースは、Google Playでアップロードした後に Googleの審査が行われてから、ストアに公開される。

動画再生プレイヤー

  • ExoPlayer が使用できる
    • GitHubで公開し、改善継続中なので使用して欲しい
    • 対応機種では4K映像の再生も可能である
    • MediaDrm が使用できる
    • YouTUbe, Google Play Movies でも使用実績がある
  • 標準 MediaPlayer API
    • 昔からあるAPI
    • DrmManagerClient
  • その他サードパーティのプレイヤー製品

Leanback ライブラリを使用すると ガイドライン推奨のUIでアプリを開発することができる。

Nearby API

  • 物理的に近い距離のデバイスを自動的に探索して通信することが可能
  • 2015/7 提供 AndroidとiOSに対応
  • Nearby Messages API
    • 近くのデバイスを Bluetooth, BLE, WiFi, 超音波 で探索できる
    • デバイスが同一LANにいなくてももよい。(WiFiで探索の場合は除く。WiFi Directではない?)
    • Publisher / Subscriber
    • Chromcast のゲストモードは、超音波で探索している
    • デバイスの通信はそれぞれのネットワーク経由で行われる
  • Nearby Connections API
    • 同一LAN上のデバイス間で高速通信
    • peer to peer の Messages 送受信?
55
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?