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!