mf_cloud_expense_mobile_app_rearchitecture
by
yuki shinohara
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
マネーフォワード クラウド経費 モバイルアプリのリアーキ テクチャをめぐる紆余曲折 2025/05/14
Slide 2
Slide 2 text
Introduction 篠原 裕貴 ・仕事: マネーフォワード クラウド経費 iOSエンジニア ・経歴: 地方公務員→英会話講師→iOSエンジニア
Slide 3
Slide 3 text
マネーフォワード クラウド経費
Slide 4
Slide 4 text
明細入力画面
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
課題
Slide 8
Slide 8 text
明細入力画面の課題 ❏ ViewControllerファイルのコードが1,900行+ ❏ テストカバレッジは0.8% ❏ ViewModelのファイルも1,900行+ ❏ テストカバレッジは20.6% ❏ 新規機能追加の度に多くの時間を手動で動作確認が必須
Slide 9
Slide 9 text
その他の画面の課題 ❏ 大部分はReactorKitによりリファクタ済 ❏ Reducerのテストカバレッジは90%前後 ❏ しかしもうメンテされていない(最終更新日は 2022年1月) ❏ 依存コードが直接実装されてしまっている ❏ カメラ画面の呼び出し、写真アプリの呼び出し etc ❏ テストが書けない ❏ 毎回コンパイルに時間がかかる
Slide 10
Slide 10 text
当初
Slide 11
Slide 11 text
TCA https://github.com/pointfreeco/swift-composable-architecture
Slide 12
Slide 12 text
なぜTCAか ❏ テスト書きやすい ❏ ReactorKitに似てる ❏ Pay for Businessで利用実績があった
Slide 13
Slide 13 text
なぜTCAか ❏ テスト書きやすい ❏ ReactorKitに似てる ❏ Pay for Businessで利用実績があった
Slide 14
Slide 14 text
リファクタ開始 ❏ まずは新規画面をTCAを使って作成 ❏ ゆくゆくは明細入力画面→ReactorKitの画面をリファクタしていく
Slide 15
Slide 15 text
苦しくなってきた ❏ バージョンアップが多くしんどくなってきた ❏ 新規iOSエンジニアの学習コストが大きい ❏ 画面が大きくなるとコンパイルがうまく行かない ❏ おそらくもっとモジュール分けすべきだった
Slide 16
Slide 16 text
方向転換
Slide 17
Slide 17 text
基本に立ち返る ❏ 諸悪の根源はテストがない・書けないこと ❏ 明細入力画面をテストを書ける形にするべき ❏ ViewControllerとViewModelのコードを整理 ❏ 各種ロジックを別クラスに整理しテストを追加 ❏ 依存コードをモジュールに分ける ❏ テストで依存コードをモックに置き換えられるようにする ❏ モジュールごとにコンパイルでき、開発スピードが上がる
Slide 18
Slide 18 text
テストで依存コードをモックに置き換えられるようにする/モジュールご とにコンパイルでき、開発スピードが上がる
Slide 19
Slide 19 text
先を見据える ❏ iOSエンジニアの採用は難しい ❏ TCAエンジニアの採用はもっと難しい ❏ サードパーティの利用メリット vs 学習コストやメンテナンスが止まるリスク
Slide 20
Slide 20 text
まとめ
Slide 21
Slide 21 text
まとめ ❏ 長い目で見て今はなるべく言語機能に沿った開発を進めて行く方針 ❏ それでもTCAは個人的には好きだし、個人的にはキャッチアップは続けていきたい
Slide 22
Slide 22 text
おわり