Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© asken.inc SwiftUIで 単方向アーキテクチャを 導入して得られた成果 25/01/28 Takuya Osawa
Slide 2
Slide 2 text
© asken.inc 2 自己紹介 Takuya Osawa 株式会社asken モバイルテックリード 主な仕事 iOS版食事管理アプリの「あすけん」の開発を担当 趣味 野球観戦
Slide 3
Slide 3 text
© asken.inc アジェンダ 3 背景と課題 アーキテクチャの概要 実装例 成果
Slide 4
Slide 4 text
© asken.inc 4 背景と課題
Slide 5
Slide 5 text
© asken.inc 5 運用が長いサービス あすけんは10年以上運用されているサービスで既存資産が多い。 UIKitで実装されたUIが多数である。 MVC+SnapKitでの実装がメインである。 ユニットテストも充実していない。 開発人数の増加 SwiftUIでの開発がメインになっていくので複数人が開発可能なアー キテクチャの整理が必要になった。 整理する前は特にアーキテクチャは定めていないで状態である。
Slide 6
Slide 6 text
© asken.inc 6 アーキテクチャの概要
Slide 7
Slide 7 text
© asken.inc 7 アーキテクチャ選定フロー PoC チームで 議論 本番で影響のでな い画面で検証 本番投入
Slide 8
Slide 8 text
© asken.inc 8 MVIアーキテクチャ に決定 🎉
Slide 9
Slide 9 text
© asken.inc 9 MVIを知っている人
Slide 10
Slide 10 text
© asken.inc 10 MVI = Model + View + Intent
Slide 11
Slide 11 text
© asken.inc 11
Slide 12
Slide 12 text
© asken.inc 12
Slide 13
Slide 13 text
© asken.inc 13 状態変更やデータフローを追いやすい。 テストがしやすい。 学習・導入コストが低い 選定理由
Slide 14
Slide 14 text
© asken.inc 14 実装例
Slide 15
Slide 15 text
© asken.inc 15 https://github.com/t-osawa-009/Counter-MVI
Slide 16
Slide 16 text
© asken.inc 16 DEMO
Slide 17
Slide 17 text
© asken.inc 17 成果
Slide 18
Slide 18 text
© asken.inc 18 複雑な状態変化のテストが容易になった ViewStateやIntent単体でテスト可能になった コードレビュー効率が向上 アーキテクチャ理解が進み、開発者間での認識齟齬が減り効率化 できた SwiftUIの割合が増えた 5%前後で推移していたが、4ヶ月で約10%前後まで上昇
Slide 19
Slide 19 text
© asken.inc 19 まとめと今後
Slide 20
Slide 20 text
© asken.inc 20 MVIアーキテクチャ導入により開発効率が上がりました アーキテクチャを定めることでチームで開発する体制が構築で き、 SwiftUIでの開発が進めやすくなりました。 今後の展望 不足しているユニットテストの拡充 スナップショットテストの導入を進める予定です。
Slide 21
Slide 21 text
© asken.inc 21 弊社tech blogにも記事化してます! あすけんiOSでSwiftUI導入によるアーキテクチャ改善:効率化と学び
Slide 22
Slide 22 text
© asken.inc 22 Thank you!