Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
mf_cloud_expense_mobile_app_rearchitecture
Search
yuki shinohara
May 14, 2025
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
mf_cloud_expense_mobile_app_rearchitecture
yuki shinohara
May 14, 2025
More Decks by yuki shinohara
See All by yuki shinohara
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
490
Road to Swift 6
shino8rayu9
0
810
Other Decks in Programming
See All in Programming
What We Talk About When We Talk About XP
m_seki
2
660
Security issues being discussed on Web Platforms
petamoriken
0
970
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
260
Building an Out-of-Order CPU
latte72
1
790
XHTMLが残したもの
yosuke_furukawa
PRO
2
820
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
320
AHC070解法紹介
eijirou
0
120
setup-vp GitLab対応の裏側
naokihaba
0
110
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.3k
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
370
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
290
新卒PdEのリアル
ryu1013
1
500
Featured
See All Featured
Navigating Team Friction
lara
192
16k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
690
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
230
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
The Pragmatic Product Professional
lauravandoore
37
7.4k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
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は個人的には好きだし、個人的にはキャッチアップは続けていきたい
おわり