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
バイトルiOSアプリのリアーキテクト/SwiftPMとAIルールで実現するモジュール設計
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
masa38
February 18, 2026
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
バイトルiOSアプリのリアーキテクト/SwiftPMとAIルールで実現するモジュール設計
masa38
February 18, 2026
More Decks by masa38
See All by masa38
Swift6.2にしてアプリをHangさせてしまった話
masatakamiyagawa
0
2.9k
Other Decks in Programming
See All in Programming
一人だけ、Kiroが静止する日
hideg
0
120
wkhtmltopdfの次どうするか問題2026
willnet
2
1.5k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2k
What We Talk About When We Talk About XP
m_seki
2
660
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
500
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
500
SREの越境 / SRE Collaboration
y0hgi
2
240
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
250
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
180
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Site-Speed That Sticks
csswizardry
13
1.5k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
YesSQL, Process and Tooling at Scale
rocio
174
15k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
680
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Accessibility Awareness
sabderemane
1
210
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
520
Raft: Consensus for Rubyists
vanstee
142
7.7k
Transcript
SwiftPMとAIルールで実現するモジュール設計 バイトルiOSアプリのリアーキテクト
宮川 昌高 • 2024年12月にディップ株式会社に中途入社 • SIer -> デジタル地図制作会社 ->オンライン イベント企画・開発会社を経て現職
• 神奈川県茅ヶ崎市に住んでいます ディップ株式会社 ソリューション開発本部/プロダクト開発統括部 /バイトルエンジニアリング部/スマートフォン アプリ課 iOSエンジニア 趣味: サーフィン、格闘技観戦、キャンプ
バイトルのリアーキテクトの概要 20年以上続くバイトルのシステム課題の解消・事業成長を加速さ せるための取り組みです。 ⚫ ドメイン駆動設計を根幹としたアーキテクチャの再設計 ⚫ AIを前提とした開発プロセス ⚫ 変革を推進するAIネイティブな体制 詳しくは弊社CTOの記事「20年超レガシー『バイトル』をAI駆動
で再設計!事業成長を実現するリアーキ戦略」を御覧ください!
バイトルiOSアプリ でのリアーキテクト の主な取り組み ⚫ SwiftUIへのリプレイス ⚫ デザインシステムの導入 ⚫ iOS/Android共通ロジックにKotlin Multiplatformの
採用 ⚫ Strict Concurrency Checking対応 ⚫ SwiftPMを利用したモジュール管理
従来のマルチモジュール手法との比較 観点 従来: Xcodeターゲット (.xcodeproj) ※ SwiftPM モジュール定義形式 .pbxproj Swiftコード
(Package.swift) コンフリクト Xcodeプロジェクトファイルの肥大化 →頻発しやす (XCodeGenでの回避) テキストベースのため起きにくい ライブラリ統合 Pods/Carthage/SwiftPM SwiftPMに統一 ※詳しくは「バイトルiOSアプリにおけるリアーキテクト 〜マルチモジュール化について〜」を参照
モジュール構成 分割の基準 ⚫ 機能単位で分離(画面ごと、ドメインごと) ⚫ 外部依存の隔離(KMP, Firebase, 外部SDK) ⚫ 再利用性の確保(
UIComponents, DesignSystem)
SwiftPM採用後の改善点 ⚫ Package.swift モジュール・依存関係をSwiftコードで宣言的に記述できるようになり、全体の 構成が把握しやすくなった。 ⚫ 循環参照の抑止 モジュール間の循環参照をコンパイラレベルで検出してくれる。 ⚫ Xcodeプロジェクトファイル(.pbxproj)
プロジェクトファイルのコンフリクト問題からの解放。 ⚫ 外部ライブラリ パッケージ管理ツールをSwiftPMに統一できた。
直面した課題と解決策
[課題]SwiftUIのPreviewが動かない Kotlin Multiplatformや外部サービスに直 接依存している状態で、SwiftUI Preview が不安定・動かない問題に遭遇・・ エラーログを見ると、Firebase、Google Maps、Realm など数多くの外部パッケー ジのリンクに加え、KMP
(XCFramework) への依存もあり、Preview がタイムアウト していました。
[対策] SwiftUIのPreviewが動かない ⚫ Kotlin Multiplatformや外部サービス関連が依存する モジュールを限定的にする ⚫ SwiftUI/UIKitのViewを持つFeaturesモジュールから外 部サービスを持つモジュールには直接的に依存しない (protocol/mockのみを定義したInterfaceモジュール
を中間に挟む)
[対策] 依存解決 依存解決にはpointfree製の swift-dependencies を利用しています。 TestDependencyKeyでPreview/テスト用の軽量な値を、DependencyKeyで本番用の実装を定義します。 これにより、Preview/テスト時は重い依存(KMP他)のビルド・リンクをスキップできます。 実装モジュール インターフェースモジュール ※
公式ドキュメントの「Separating- interface-and-implementation」の章を 参考にしています
[課題] AIコーディング上の課題 バイトル開発において、アプリ実装部分をClaude Codeに任せることで効率化 を図ろうとしています。 実装負荷の軽減という意味で一定の効果を得ていましたが、一方で以下のよう な課題を抱えていました。 ⚫ 機能を実装する際、意図しないモジュールにコードが生成される ⚫
モジュールごとに定めた依存関係のルールを守ってくれない 手動修正・レビュー負荷の増大
[対策1] rulesの導入 当初は ./CLAUDE.md に全ルールを記述していたため、コンテキストの肥大化 によりAIが処理可能な情報量を無駄に消費していたと考えています。 .claude/rules/ を活用することで、ファイルパスに関連するルールのみがコン テキストとしてメモリ上に読み込まれるように最適化を図りました。 ディレクトリ構成:
Rulesの記述例
[対策2] レイヤー概念の導入でルールをシンプルに 今後もモジュール数の増加による依存関係 の複雑化が予想されるため、「レイヤー」 という概念を導入しました。 ⚫ 責務ごとにモジュールをグルーピング ⚫ 同一レイヤー内のモジュールは同じ依存ルー ルに従う
例 Features Layer: CoreInterface / Foundation のみ依存可(Core直接依存は 禁止) Foundation Layer: 上位レイヤーへの依存禁止(循環依存防止)
効果 ⚫ 適切なモジュールへの実装 「どのモジュールに」「どの依存関係で」実装すべきかをAIが自動で判断 できるようになってきました。 ⚫ 禁止パターンの抑止 ルール違反のコードを生成しにくくなったことで、アーキテクチャ観点での レビュー負荷の軽減につながってきていることを実感しています。 ⚫
設計ドキュメントとして機能 ルールファイル自体が設計ドキュメントとして、新規参画者への導入資料や技術面での 意思決定のログとして、機能していくことを期待しています。
まとめ ⚫ SwiftPMでのモジュール分割 pbxprojのコンフリクト解消、依存関係をコードで宣言的に管理 ⚫ Interface分離 依存ルールをシンプルに保ちつつ、重い依存を隔離 ⚫ Claude Codeルール
コンテキストの最適化とレイヤーの概念を導入し、モジュール依存関係のルールを シンプルに
ご清聴ありがとうございました!!