Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

2018_02_01ヒカラボ登壇資料

58 views

Published on

Androidアプリ開発の裏側

Published in: Technology
  • Be the first to comment

  • Be the first to like this

2018_02_01ヒカラボ登壇資料

  1. 1. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。1 Android アプリ開発の 裏側 2018/02/01 新UX開発部 デバイスソリューションU TechLead G 菊地 慧
  2. 2. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。2 本日のアジェンダ • Android Instant Apps 対応 • アーキテクチャ載せ替え • 最新技術導入の話 – Android OS – Android Instant Apps – Firebase – AR(Tango)
  3. 3. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。3 プロフィール • 名前 – 菊地 慧 • 所属 – 新UX開発部 デバイスソリューションユニット TechLead グループ
  4. 4. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。4 Android Instant Apps 対応
  5. 5. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。5 Android Instant Apps Android Instant App ネイティブアプリをインストールをしなくても使えるよう にする技術
  6. 6. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。6 Android Instant Apps • 対応デバイス – 9億台を超えている • Instant Apps を起動する導線 – Web の URL が必要となる • Email • Twitter • Search • Etc…
  7. 7. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。7 Android Instant Apps の制限 • Instant Apps の制限 未インストールのアプリに対するユーザーの期待にそぐ わない可能性のある一部機能が制限される • 制限(一部) – バックグラウンドサービスの使用 – バックグラウント通知の実行 – 一意の端末識別子へのアクセス
  8. 8. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。8 Android Instant Apps - 今すぐ試す Play Store 今すぐ試す – ランディング画面があるアプリだけ表示 – 通常のアプリもインストール可能
  9. 9. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。9 Android Instant Apps 対応 Instant Apps なら – (URL があれば)インストールしてもらう必要がない 検索からの流入が最も多いページである物件詳細を対応 – 検索結果に対して面が取れる – 広告費をかけずにアプリに呼び込むことができる アプリにはロイヤルユーザーが集まりやすい – ユーザー間で物件情報のやりとりが行われる際に、「物件詳細 のURL」が用いられることが多い アプリはインストールしてもらうのが大 変
  10. 10. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。10 Android Instant Apps 対応 Google Play 「今すぐ試す」 – Google Play 上に表示 – Instant Apps の起動 Feature 物件検索 default-url https://www.homes.co.jp/index.html Feature 物件詳細 問合せ 物件詳細 – 物件情報が掲載 – 物件にお問合せなどが行える Base Library Library
  11. 11. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。11 Android Instant Apps - 考慮ポイント • ライブラリの対応状況 – Google で動作確認が行われている • 一部、動作に制限があるものがある(Data Binding など) • 4MB の容量制限 – base module + feature module の組み合わせ – 外部ライブラリをたくさん使っていると困る • Resource 参照 – feature module の xml 内のリソース参照は実行時に base のリ ソースを参照する • コードから feature.R.** と指定することで回避が可能
  12. 12. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。12 Android Instant Apps よくありそうな質問 • Instant Apps から Installed でデータの共有できるの? – できます • versionCode はどうすれば? – Instant Apps < Installed でなければいけません • Instant Apps 対応するのってどのくらい大変? – アプリの規模やプロジェクトの構造によります。2週〜6週らしい • Instant Apps が公開されるまでにどのくらいかかる – 通常のアプリと同じ感じ
  13. 13. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。13 アーキテクチャ
  14. 14. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。14 LIFULL HOME‘S Android のアーキテクチャ変遷 1. 初期開発時は MVC – Activity Only 2. リニューアル時も MVC – Fragment を使い始める(ここでライフサイクルに悩まされ る) 3. マテリアルデザイン対応時に MVVM – Data Binding を導入(後から) – だいぶ慣れたがライフサイクルには頭を抱えさせられ(ry 4. Android Architecture Components 登場 – Android にライフサイクルに対応できる • 楽になる?入れよう!
  15. 15. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。15 Android Architecture Components • Handling lifecycles – Create a UI that automatically responds to lifecycle events. • LiveData – Build data objects that notify views when the underlying database changes. • ViewModel – Store UI related data that isn’t destroyed on app rotations. • Room – Access you app’s SQLite database with in-app objects and compile-time checks. ※ https://developer.android.com/topic/libraries/architecture/index.html
  16. 16. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。16 Android Architecture Components ※ https://developer.android.com/topic/libraries/architecture/guide.html
  17. 17. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。17 Android Architecture Components - LiveData • Android のライフサイクルを考慮 – Observer が Lifecycle に紐づいているので、 Lifecycle が破棄されると Observer も解除される • メモリリークしない – Observer の Lifecycle が STARED or RESUMED の 状態の場合のみ、Observer が Active となる • Activity / Fragment がいまどういった状態か?というライフ サイクルのハンドリングから解放される • Data Binding との相性がいい
  18. 18. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。18 Android Architecture Components - ViewModel • Fragment 間でデータの共有が可能 • ViewModelProviders に Activity を渡しているため、 各Fragment で ViewModel の参照が可能 – Interface 地獄から解放 – Activity は Fragment のことを知らなくても良い • ライフサイクルが Activity / Fragment にスコー プされる • Lifecycle がメモリ上から破棄されるまで存在する – Fragment でデータを保持しすぎて、Bundle の容量制限に 引っかからなくなる
  19. 19. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。19 Android Architecture Components 導入してみて • Android 特有のライフサイクルに対応 – lifecycle に関するコードが全体で統一されて、スッキリ • 個別に導入が可能というのは楽 – Lifecycle だけ、LiveData だけ使いたいという場合にも導入が 簡単 – (逆に言えば)捨てる際にも乗せやすい • Rooms は導入せず – SQLite へのアクセスを Content Provider 経由で実現していた ため、移行するするにはコストがでかかった
  20. 20. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。20 最新技術導入
  21. 21. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。21 最新技術導入 - Android OS • 最新 OS が発表 – チャットを見るともう議論が始まる – API 確認→出来ることとできないことがチーム内で共有 • 最新 OS が更新される – チャットを見ると議論(ry – 動作確認などを実施 – 安定してきたら機能開発 • 最新 OS がリリース – なるべく早い段階でアプリは対応 – Pixel 2 が発売されないから今後どうするか
  22. 22. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。22 最新技術導入 - Firebase(Remote Config + Realtime Database) • 特集配信 – 特集とは • おすすめの検索条件のセット – 目的 • 時期やユーザに合わせて、特 集を差し替えたい • A/B テストなども実施したい
  23. 23. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。23 最新技術導入 - Firebase(Remote Config + Realtime Database) • 実現手段 – Remote Config • 特集ID のリストを配信 – Realtime Database – 特集のパラメータを配信 – 特集IDと検索条件・画像URL・特集名が紐づいている • メリット – 配信先の切り替え • セグメント毎、A / Bテストも容易 – データ同期 • 同期に関する実装不要、オフライン対応
  24. 24. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。24 最新技術導入 - Tango • LIFULL HOME’S Room Style AR – Tango 専用アプリ – 実際のお部屋にカーテンのイメージデータを表示することで、 模様替え後のお部屋をよりリアルにシミューレションしていた だけます https://play.google.com/store/apps/details?id=com.lifull.homes.android.roomstyle_ar
  25. 25. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。25 最新技術導入 - Tango • なぜ Tango アプリを開発することに? – 今までにない新しい技術に興味があった – 不動産領域でも面白いことができそうだと感じた – 面白そうだよね?という問いに、面白そうと答えた • 今後について – リリース直後に Tango 終了のお知らせ – アプリの対応端末がPHAB2 Pro のみ – ARCore 楽しみですね。。。
  26. 26. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。26 ご静聴ありがとうございました

×