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