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

おわり