Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
mf_cloud_expense_mobile_app_rearchitecture
Search
yuki shinohara
May 14, 2025
Programming
0
890
mf_cloud_expense_mobile_app_rearchitecture
yuki shinohara
May 14, 2025
Tweet
Share
More Decks by yuki shinohara
See All by yuki shinohara
Road to Swift 6
shino8rayu9
0
540
Other Decks in Programming
See All in Programming
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
750
Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploying CDK with PipeCD in Pull-style
tkikuc
4
480
PHPUnitの限界をPlaywrightで補完するテストアプローチ
yuzneri
0
350
副作用と戦う PHP リファクタリング ─ ドメインイベントでビジネスロジックを解きほぐす
kajitack
3
490
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
4
1.6k
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
2
1.4k
iOS開発スターターキットの作り方
akidon0000
0
220
What's new in Adaptive Android development
fornewid
0
120
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
0
570
MySQL9でベクトルカラム登場!PHP×AWSでのAI/類似検索はこう変わる
suguruooki
1
260
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
340
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
580
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
Agile that works and the tools we love
rasmusluckow
329
21k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Why Our Code Smells
bkeepers
PRO
337
57k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
The Invisible Side of Design
smashingmag
301
51k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
BBQ
matthewcrist
89
9.8k
Docker and Python
trallard
45
3.5k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Statistics for Hackers
jakevdp
799
220k
Transcript
マネーフォワード クラウド経費 モバイルアプリのリアーキ テクチャをめぐる紆余曲折 2025/05/14
Introduction 篠原 裕貴 ・仕事: マネーフォワード クラウド経費 iOSエンジニア ・経歴: 地方公務員→英会話講師→iOSエンジニア
マネーフォワード クラウド経費
明細入力画面
None
None
課題
明細入力画面の課題 ❏ ViewControllerファイルのコードが1,900行+ ❏ テストカバレッジは0.8% ❏ ViewModelのファイルも1,900行+ ❏ テストカバレッジは20.6% ❏
新規機能追加の度に多くの時間を手動で動作確認が必須
その他の画面の課題 ❏ 大部分はReactorKitによりリファクタ済 ❏ Reducerのテストカバレッジは90%前後 ❏ しかしもうメンテされていない(最終更新日は 2022年1月) ❏ 依存コードが直接実装されてしまっている
❏ カメラ画面の呼び出し、写真アプリの呼び出し etc ❏ テストが書けない ❏ 毎回コンパイルに時間がかかる
当初
TCA https://github.com/pointfreeco/swift-composable-architecture
なぜTCAか ❏ テスト書きやすい ❏ ReactorKitに似てる ❏ Pay for Businessで利用実績があった
なぜTCAか ❏ テスト書きやすい ❏ ReactorKitに似てる ❏ Pay for Businessで利用実績があった
リファクタ開始 ❏ まずは新規画面をTCAを使って作成 ❏ ゆくゆくは明細入力画面→ReactorKitの画面をリファクタしていく
苦しくなってきた ❏ バージョンアップが多くしんどくなってきた ❏ 新規iOSエンジニアの学習コストが大きい ❏ 画面が大きくなるとコンパイルがうまく行かない ❏ おそらくもっとモジュール分けすべきだった
方向転換
基本に立ち返る ❏ 諸悪の根源はテストがない・書けないこと ❏ 明細入力画面をテストを書ける形にするべき ❏ ViewControllerとViewModelのコードを整理 ❏ 各種ロジックを別クラスに整理しテストを追加 ❏
依存コードをモジュールに分ける ❏ テストで依存コードをモックに置き換えられるようにする ❏ モジュールごとにコンパイルでき、開発スピードが上がる
テストで依存コードをモックに置き換えられるようにする/モジュールご とにコンパイルでき、開発スピードが上がる
先を見据える ❏ iOSエンジニアの採用は難しい ❏ TCAエンジニアの採用はもっと難しい ❏ サードパーティの利用メリット vs 学習コストやメンテナンスが止まるリスク
まとめ
まとめ ❏ 長い目で見て今はなるべく言語機能に沿った開発を進めて行く方針 ❏ それでもTCAは個人的には好きだし、個人的にはキャッチアップは続けていきたい
おわり