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
Kotlin Multiplatform + iOS アーキテクチャの実践
Search
Nao
February 19, 2026
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlin Multiplatform + iOS アーキテクチャの実践
Nao
February 19, 2026
Other Decks in Programming
See All in Programming
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
790
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.3k
スマートグラスで並列バイブコーディング
hyshu
0
150
Claspは野良GASの夢をみるか
takter00
0
190
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
780
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
Creating Composable Callables in Contemporary C++
rollbear
0
140
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
190
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.1k
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
From π to Pie charts
rasagy
0
210
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
Transcript
Kotlin Multiplatform + iOS アーキテクチャの実践 1
自己紹介 PROFILE 名前: 権 奈悟 所属: ディップ株式会社 担当: モバイル開発(iOS /
KMP ) ABOUT ハマっているもの: ドバイチョコ餅クッキー(두쫀쿠/ ドゥチ ョンク) 2
会社概要 3
ここから技術パート KMP の実運用での使い分けを共有します。 4
今日話すこと / 話さないこと 話すこと KMP 全体アーキテクチャ iOS アーキテクチャ KMP 連携(SKIE
/ XCFramework ) 話さないこと コードの細かい実装テクニック 画面ごとの仕様説明 KMP 導入手順の完全ガイド 5
導入 CONTEXT バイトル(15 年以上) → 長期運用でレガシー蓄積 → 大規模リアーキを実施 従来: Android
/ iOS 個別ネイティブ開発 → 方針: 工数削減とネイティブ体験の両立 → 採用: ビジネスロジックをKMP 共有、UI は各OS ネイティブ 6
KMP 全体アーキテクチャ Presentation は各OS ネイティブ実装(Android / iOS ) shared で
Domain / Data をKMP 共有 model はPure Domain Model (インフラ依存ゼロ) 7
データ変換フロー(Entity / Model / DTO ) Entity (DB ) ->
Mapper -> Model (Domain ) <- Mapper <- DTO (API ) Entity: Data 層の永続化モデル(Room ) DTO: Data 層の通信モデル(OpenAPI 生成) Model: Domain 層のビジネスモデル(Pure Kotlin ) model/ はインフラ依存ゼロ(CI で担保) 8
iOS のUI アーキテクチャ 画面ごとに状態管理がバラバラだと、状態遷移の追跡とKMP 連携の責務分離が難しくなる 自作MVI アーキテクチャ(Store Pattern )を採用 9
iOS Store Pattern 基本構造 Intent: ユーザー操作を表現す る enum Store: Intent
受信とReducer 実 行 State: 画面の単一状態 View: 描画とIntent 送信 基本フロー Intent Store State View 10
iOS Store Pattern 概要 iOS 側は自前MVI をStore Pattern で実装 Android
MVI と読み方を揃え、チーム認知を統一 @Observable (iOS 17+ )でState 変更を自動検知 外部ライブラリ依存を増やさずKMP 統合をシンプルに維持 11
iOS Store Pattern (Intent 駆動) @MainActor @Observable final class MyPageStore
{ var state: MyPageViewState func send(_ intent: MyPageIntent) { switch intent { case .logoutTapped: state.showLogoutConfirmation = true case .logoutConfirmed: logoutTask = Task { @MainActor in await performLogout() } case .dipIdAuthCompleted(let result): handleAuthResult(result) } } } 12
Store Pattern のメリット 複雑な機能にスケールしやすい 同じパターンのまま機能拡張できる 小規模から大規模まで設計を継続できる Intent/State の分割で見通しを維持しやすい チーム運用しやすい Android
(MVI )と似た設計で読み方を統一 UI イベントの扱い方を共通化できる レビュー観点を揃えやすい Intent の入口をsend(_:) に統一することで、 KMP UseCase 呼び出しの責務と非同期処理を整理しやすい 13
KMP 連携の全体像 XCFRAMEWORK + OBJECTIVE-C ヘッダ経由 + SKIE SwiftUI View
→ Store → iOS Bridge Shared.xcframework → Objective-C ヘッダ(.h ) → KMP UseCase 配布単位は Shared.xcframework Kotlin API はObjective-C ヘッダとして公開され、Swift から利用される SKIE でSwift 側の呼び出し体験を改善(suspend → async , Flow → AsyncSequence ) 14
XCFramework 運用と今後 現行 ./gradlew :shared:assembleSharedXCFramework Xcode へ取り込み 運用は安定、改善余地はビルド時間 今後(Swift Export
) Objective-C ヘッダ経由の負担を減らせる可 能性 よりSwift らしいAPI 公開に期待 現時点はExperimental のため段階評価 Swift Export は現時点ではExperimental 。段階導入を前提に評価。 15
ご清聴ありがとうございました 16