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

Sansan Androidアプリの変遷とJetpack Composeの導入 / Transition of Sansan Android App and Introduction of Jetpack Compose

Sansan
November 05, 2021
1.2k

Sansan Androidアプリの変遷とJetpack Composeの導入 / Transition of Sansan Android App and Introduction of Jetpack Compose

■イベント

Sansan Builders Stage 2021
https://jp.corp-sansan.com/engineering/buildersstage2021/

■登壇概要

タイトル:Sansan Androidアプリの変遷とJetpack Composeの導入

登壇者:技術本部 Mobile Applicationグループ
Androidエンジニア 赤城 史哉
アシスタントグループマネジャー 山口 佳祐

▼Sansan Engineering
https://jp.corp-sansan.com/engineering/

Sansan

November 05, 2021
Tweet

Transcript

  1. • Sansan Android アプリの変遷 • SansanとAndroidアプリについて • アーキテクチャの変遷 • ライブラリの変遷

    • Jetpack Compose導入について • Jetpack Composeとは • Jetpack Compose導入の理由 • Jetpack Compose導入の進め方 概要
  2. • 初期 • MVVM + Repositoryパターン • リニューアル (2017) •

    Kotlin化, MVP + Clean Architecture(一部MVVM) • アーキテクチャ刷新(2019) • Flux + Clean Architecture • マルチモジュール化 アーキテクチャの変遷 アーキテクチャの変遷
  3. • 初期 • MVVM + Repositoryパターン • リニューアル (2017) •

    Kotlin化, MVP + Clean Architecture(一部MVVM) • アーキテクチャ刷新(2019) • Flux + Clean Architecture • マルチモジュール化 アーキテクチャの変遷
  4. • コードの書きづらさ。 • 状態の管理場所が実装者に依存 • Activity, Fragmentで状態を持つ or Presenterで持つ etc…

    • PresenterとUseCaseの責務が曖昧 • 可読性の悪さ • ViewとPresenterを行き来 • コンフリクトの多さ • Fat PresenterかつUseCaseの粒度が大きい • 多人数で同時に変更してコンフリクトしやすい • 並列開発における速度と品質の低下 アーキテクチャの変遷 MVPの課題点
  5. • コードの書きづらさ。 • 状態の管理場所が実装者に依存 > Activity, Fragmentで状態を持つ or Presenterで持つ etc…

    • PresenterとUseCaseの責務が曖昧 →各クラスの責務が明確に。迷わず書ける アーキテクチャの変遷 Fluxで目指したMVPの課題解決
  6. • MVPの問題は解決出来た • 開発を加速できている • コンフリクトのしづらさ • レイヤ・クラス毎の役割の明確化 • 比較的シンプル。新しくジョインした人もすぐキャッチアップ可能

    • もちろん銀の弾丸ではなく、細かな問題点もあった • 特定のライブラリとの相性の悪さ等 アーキテクチャの変遷 2年間Flux化を進めてみて
  7. • Jetpack • Lifecycle, ViewModel, WorkManager etc… • Dagger •

    RxJava, Coroutine • Epoxy • Glide 採用ライブラリの変遷 現在採用しているライブラリ(一部)
  8. • 2021年7月に1.0がリリースされたネイティブ UI をビルドするための Android の 最新ツールキット • Googleによって開発 •

    従来のXMLによるレイアウトではなく、Kotlinによるレイアウト • UIを命令的に更新するのではなく、宣言的に作られた状態をUIに反映する Jetpack Composeとは
  9. • 開発環境アップデート • compose 1.0.2から依存しているバージョンへアップデート > Kotlin 1.5.21 > Kotlin

    Coroutines 1.5.0 > activity-ktx 1.3.1 > lifecycle 2.3.0 • Theme/Typographyの設定を行う Jetpack Compose導入の進め方 環境設定