Slide 1

Slide 1 text

Sansan株式会社 部署 名前 現実的なCompose化戦略 ~既存リスト画⾯の置き換え~ Sansan技術本部 Composeを⽤いたAndroidアプリ開発のハマりどころ Sansan株式会社 技術本部 Sansan Engineering Unit Mobile Applicationグループ 桑原 宏和

Slide 2

Slide 2 text

写真が入ります 桑原 宏和 Sansan株式会社 技術本部 Sansan Engineering Unit Mobile Applicationグループ - Android Engineer - 2022年5⽉ Sansan株式会社に中途⼊社 - SNS: @kilalabu

Slide 3

Slide 3 text

Compose化、進んでいますか?

Slide 4

Slide 4 text

既存設計が Compose化の障害 になっていて... ⼯数の都合で 諦めがち 優先度が低くて 着⼿できない Full Compose なんて遠い夢だ…

Slide 5

Slide 5 text

- Epoxyリスト画⾯をComposeに移⾏する事例 - どうやって移⾏するか - どのように運⽤を定着させるか 今⽇するお話

Slide 6

Slide 6 text

- Airbnbが提供しているRecyclerViewを簡単に構築するためのライブラリ Epoxyとは?

Slide 7

Slide 7 text

- 技術的制約 - DataBindingに依存 → KSPに対応できない 😭 - 開発体験 - ⾃動⽣成コードが読みにくい - RecyclerViewよりComposeの⽅が直感的に書ける チームの⾒解: EpoxyをComposeに置き換えていきたい!! Epoxyのデメリット

Slide 8

Slide 8 text

だがしかし、この1年間における EpoxyからComposeへの置き換え実績はゼロ…

Slide 9

Slide 9 text

- 課題 - 優先度の低さ - Epoxyに⼤きな技術負債を感じていなかった - 当時はKSP移⾏の必要性が低く、後回しになっていた - 結果 - ⾒積もり時点で置き換えを考慮せず、案件内での対応が困難に - 紐づくEpoxyModelが多い → ⼀度に進められない - 古い設計 → 置き換えコストが増⼤ なぜCompose化が進まなかったのか?

Slide 10

Slide 10 text

メスを⼊れる時が来た

Slide 11

Slide 11 text

- EpoxyController: 48個 - EpoxyModel: 1~12個/Controller 現状を把握する

Slide 12

Slide 12 text

道のりは⻑い...

Slide 13

Slide 13 text

- 段階的にCompose化を進める - 案件内でEpoxyModel(アイテム)単位でCompose化を進める - 徐々にEpoxyを減らし、最終的に技術改善案件で完全置き換えを狙う - 具体的なソリューション - 案1: xmlにComposeViewを埋め込む。(不採⽤) > xml, EpoxyModel⾃体は残ってしまう - 案2: epoxy-composeライブラリを導⼊する(採⽤) > xml, EpoxyModelを削除できる 現実的な戦略を探る

Slide 14

Slide 14 text

epoxy-composeを活⽤した置き換え - EpoxyModel単位でComposeに置き換え可能 - ⼩さな単位での置き換え → 段階的な移⾏が可能 - 最終的にはEpoxyControllerの置き換えが容易に

Slide 15

Slide 15 text

合意を得て、epoxy-composeの導⼊完了

Slide 16

Slide 16 text

めでたしめでたし?

Slide 17

Slide 17 text

運⽤に乗せるまで責任を持つ 💪

Slide 18

Slide 18 text

- Rule: 案件⾒積もり時に3つの選択肢から⽅針を決める - 全⾯移⾏ - EpoxyControllerを丸ごとComposeに置き換える - 部分移⾏ - EpoxyModel単位でCompose化して共存させる - 現状維持(妥協案) - 既存のxml設計を維持する 案件ごとのCompose化運⽤ルール

Slide 19

Slide 19 text

- 判断のブレを防ぎ、効率的な適⽤を可能にする基準を整備 適⽤基準を作成する

Slide 20

Slide 20 text

- 判断を助ける補助として、EpoxyController 48個の暫定⽅針を設定 置き換え⽅針の暫定リストを作成する EpoxyController EpoxyModel数 アーキテクチャ 置き換え⽅針 備考 aEpoxyController 2 Flux 全⾯移⾏ bEpoxyController 8 Flux 部分移⾏ cEpoxyController 2 MVP 現状維持 or 全⾯移⾏ 案件の事情に 合わせて検討する

Slide 21

Slide 21 text

- Epoxy撲滅の決起会を実施 - ⽬的 - Compose移⾏の重要性を共有し、認識を統⼀する - ⽅針や進め⽅について意思疎通を図る - 共有事項 - なぜCompose化が必要なのか - どのように進めるのか - ⽬指すゴール チームへの共有

Slide 22

Slide 22 text

Compose化対応の基盤が整った ✨

Slide 23

Slide 23 text

- 少しずつでもCompose化を進める 🏃 - 道のりは⻑くても、⼀歩ずつでも進めるという意志が重要 - 導⼊後の運⽤が鍵 🔑 - 導⼊だけで終わらず、運⽤を浸透させる仕組みを整える 現実的なCompose化戦略 まとめ

Slide 24

Slide 24 text

No content