Slide 1

Slide 1 text

Sansan株式会社 部署 名前 複雑な状態管理からの脱却 Sansan技術本部 食べログ x Sansan モバイル勉強会 Sansan株式会社 技術本部 Sansan Engineering Unit Mobile Applicationグループ 桑原 宏和

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

- 導入 - Sansan Fluxアーキテクチャの概要 - 改修内容と要件 - 対象画面での課題 - リファクタリングのアプローチ - 成果と学び 目次

Slide 4

Slide 4 text

Sansan Fluxアーキテクチャ

Slide 5

Slide 5 text

- 主な要件 - コメント長押しで編集開始できるようにする - 編集中は該当コメントにハイライトをつける - 編集成功後、該当のコメントを更新する 改修内容:送信済コメントを編集できるようにする

Slide 6

Slide 6 text

対象画面での課題

Slide 7

Slide 7 text

課題:状態管理の複雑化によるリスク - 1画面に複数のStore(State)が共存 - => 仕様把握の難易度や改修時の不整合リスク大

Slide 8

Slide 8 text

リファクタリングのアプローチ

Slide 9

Slide 9 text

- Goal - 状態管理の複雑化 を解消する - => 1つのStateに状態を集約する - スコープ外 - 改修に関連しない他のStore(State)との統合(工数が膨大になるため) リファクタリングの方針

Slide 10

Slide 10 text

リファクタリング: 1つのStateに状態を集約する

Slide 11

Slide 11 text

最終的なクラス構成 before after

Slide 12

Slide 12 text

成果と学び

Slide 13

Slide 13 text

- 情報源の一元化 - 単一のStoreにStateを集約し、情報の一貫性を担保 => 変更必要箇所が特定しやすくなり、不整合リスクが軽減 - 追加改修の容易化 - 機能改修が容易になり、実装者・レビュワー双方の負担が軽減 リファクタリングの成果

Slide 14

Slide 14 text

- SSOT(Single Source of Truth)の重要性 - 分散した状態コードの読解に苦労した経験から、情報を一箇所に集約する ことでコードの管理と変更が容易になる重要性を改めて実感。 - リファクタ判断の重要性 - 「回り道」に見えても、リファクタで結果的に効率が向上することもある - 開発効率を阻害する負債があるなら、負の連鎖を断ち切る判断と提案する 勇気が重要 学び

Slide 15

Slide 15 text

Sansanの最新アーキテクチャにご興味がある方へ https://buildersbox.corp-sansan.com/entry/2024/08/21/110000 Sansanアプリにおける Kotlin Multiplatform導入の効果とアーキテクチャ紹介

Slide 16

Slide 16 text

No content