Upgrade to Pro — share decks privately, control downloads, hide ads and more …

cookpadTV マルチモジュール化について/Multi modularization in...

Naoya Shibahara
February 18, 2019
6.2k

cookpadTV マルチモジュール化について/Multi modularization in cookpadTV

Cookpad.apk #2

Naoya Shibahara

February 18, 2019
Tweet

Transcript

  1. FireTV - Amazon から発売している TV 向け端末 - Apple TVなどが類似品 -

    現在は第3世代まで出ている - https://www.amazon.co.jp/gp/product/B01ETRGGYI/ - 中身の OS はほぼ Android - 第1, 2世代は Android 5.1 (Lollipop、APIレベル22) - 第3世代は Android 7.1 (Nougat、APIレベル25)
  2. FireTV - FireTV 向けアプリを作るにはだいたい2種類ある - 公式フレームワークの Fire App Builder を使う

    - https://developer.amazon.com/ja/docs/fire-app-builder/overview.html - https://github.com/amzn/fire-app-builder - Leanback Library を用いて普通に Android TV 開発 - https://developer.android.com/training/tv/ - https://github.com/googlesamples/androidtv-leanback
  3. FireTV - FireTV 向けアプリを作るにはだいたい2種類ある - 公式フレームワークの Fire App Builder を使う

    - https://developer.amazon.com/ja/docs/fire-app-builder/overview.html - https://github.com/amzn/fire-app-builder - Leanback Library を用いて普通に Android TV 開発 - https://developer.android.com/training/tv/ - https://github.com/googlesamples/androidtv-leanback
  4. Fire App Builder - Amazon 公式が配布してる FireTV 向けアプリを簡単につくれるフレームワーク - config

    ファイル(json)をいじるだけである程度カスタマイズできる - Fire App Builder 発表資料 12
  5. [当時] FireTV プロジェクトの課題 • FireTV版 の開発には Fire App Builder というフレームワークを採用していたの

    で、完全な別プロジェクト(repository も別)になっていた ◦ アプリ版と全く同じ実装を FireTV で全て再実装が必要 ◦ 例: 認証や通信 ◦ そもそも fire-app-builder が辛い 15
  6. [当時] FireTV プロジェクトの課題 • Fire App Builder が辛い ◦ framework

    側でクラッシュすることがまぁまぁあり、そのたびに framework のソースコードを読 み修正するのがつらい ◦ メンテナンスがあまりされなく将来的に不安 ▪ ライブラリのアップデートがされていない ▪ issue を見る感じあんま活発に開発はされてなさそう ◦ config いじるだけである程度カスタマイズできる仕様のため reflection 等を用いている。 そのため、プロジェクトの見通しが悪く、実装箇所も多いので機能拡張するのが大変 16
  7. その後 - 新しく実装するものは基本的に :common にはいれない - 欲しくなったら :common に移動、という方針 -

    大きい機能の単位で共通化できるのものは別 module として新しく分離 - exoplayer - appsync 24
  8. :common -> :core - 名前を :common から :core に変更 -

    やっかいな点として module 名を変えると import が爆発する - 置換とかをうまく使って一つ一つ変えていく必要があった - AndroidStudio おまかせだとぜんぜんうまくいかなかった - また他のPRなどがマージされて conflict が発生するとなおすのがとてもつらい - 一度にガッとやる必要がある - 地味に辛い 29
  9. :smarttv - cookpadTV は AndroidTV でもリリースしている - AndroidTV の話がでたのは repository

    統一の構想段階あたりで、FireTV版と 一緒のUIという話だった - そのため、ログとかをDIしたり、 application id を変える等のためにapplication module を分けておいて、実態は :smarttv module に実装という形にした 32