.droidconSF 2017報告会に参加してきました #dcsf17_jp
※この記事はTECH PLAY女子部 Advent Calendar 20173日目の記事でもあります。
サンフランシスコで開催されたAndroid開発者向けのカンファレンスの報告会があったので行ってきました。
droidcon-overview @punchdrunkerさん
- スポンサーブースの様子
- 規模
- 2days, 5tracks, 70+talks, 800+developers
- 1トラックはコードラボメインだったので実質4トラック
- スピーカー
- セッション
- サンプルコードがほとんどKotlin
- 「自分の会社ではこんなことやってる」話が多かった
- Uberのセッション
- 乗客用と運転手用でアプリを分けた
- モジュール数がとにかく多い
- ハンドソン
- これを使ってカメラで撮った写真をTensorFlowを使って判定するなど
Reactive Workflow @mhidakaさん
- 今回取り扱うテーマ
- SquareのAndroidアプリの設計について
- これを解決するのに4年かかった
- 従来
- Key-based MVPアーキテクチャ(要素を中心としたMVP)を使っていた
- 画面数が300+、クリーンビルドに12分、差分ビルドでも3,4分かかっていた
- モジュールの依存関係が複雑になっていたり、Baseクラス的なものが出来上がっていたりした
- やったこと
- モジュール化を推進
- ビジネスモデルをBricks、ロジックをWorkflowsにして、viewと切り離していく
- Workflows
- 考え方としては「パイプライン」
- RunnerとPresenterを足してモジュール化したもの
- どう作るかがポイントだが、データの流れに反応して処理を行うデータフローに変更した
- 参考:Coordinators
- Workflowsの中でステータスを管理し、どのような遷移をしているかはステートマシンを見ればわかる状態へ
- モジュール分割
- とにかく分割することでより素早く開発する
- 開発人数が多い(1アプリあたり約30人)ので、一斉に手を動かすなら分かれていないと厳しい
- 分割度合いは現在/今後求められる単位で行うのが良い
gRPC on Android @takusembaさん
- gRPCとは
- リモートプロシージャコールの一種
- Protocol Buffersを使っている
- Protocol Buffersとは
- gRPCを用いて実装
Build高速化の話 @kobito-kabaさん
- ビルドを速くするために最適化する対象
- ハードウェアなら金の力で解決
- ソフトウェアなら不要な依存関係がないか、モジュールが適切に分割されているかなどを探る
- (具体的な策はスライド見た方が早い)
- 結果
- 半分くらいまで縮めることができた
- configureは若干遅くなったが、タスク実行が大幅に早くなった
- キャッシュが速度に効くらしい