Kotlin Multiplatform で作成された火星の不動産情報を表示する iOS アプリケーションです。
本プロジェクトは kmp-sample-library で実装された状態管理(ViewModel、Repository、データ層など)を使用し、iOS 側では UI 実装のみを行っています。これにより、ビジネスロジックとプラットフォーム固有の UI 実装を明確に分離しています。
| 一覧画面 | 詳細画面 |
|---|---|
![]() |
![]() |
┌─────────────────────────────────────┐
│ kmp-sample-ios │
│ (UI Layer - iOS Only) │
│ │
│ ┌──────────┐ ┌───────────────┐ │
│ │ App │────│ HomeScreen │ │
│ └──────────┘ │ (UI) │ │
│ └───────────────┘ │
│ │ │
└─────────────────────────┼──────────┘
│
▼
┌─────────────────────────────────────┐
│ kmp-sample-library (KMP) │
│ │
│ ┌──────────────────────────────┐ │
│ │ ViewModel / Repository │ │
│ │ State Management │ │
│ │ Business Logic │ │
│ │ Data Layer │ │
│ └──────────────────────────────┘ │
└─────────────────────────────────────┘
- SwiftUI - モダンな宣言的 UI フレームワーク
- AsyncImage - 画像読み込み
- ViewModel - UI 状態の管理
- Repository パターン - データ操作の抽象化
- Koin - 依存性注入
- Swift Package Manager - 依存関係管理
kmp-sample-ios/
├── KmpSampleIOS/
│ ├── KmpSampleIOSApp.swift # アプリケーションのエントリポイント
│ ├── Screen/
│ │ └── HomeScreen.swift # ホーム画面の UI 実装
│ ├── ViewModelWrapper/
│ │ └── HomeViewModelWrapper.swift # ViewModel のラッパー
│ ├── Components/
│ │ ├── MarsPropertyCardView.swift # 不動産カードコンポーネント
│ │ └── MarsPropertyDetailBottomSheet.swift # 詳細表示ボトムシート
│ └── Utils/
│ └── Koin.swift # Koin 初期化ユーティリティ
├── KmpSampleIOSTests/ # ユニットテスト
└── KmpSampleIOSUITests/ # UI テスト
- KmpSampleIOSApp: アプリケーションのエントリポイント。Koin の初期化を行います。
- HomeScreen: 火星の不動産情報を表示するホーム画面の UI を実装します。ViewModel や状態管理は
kmp-sample-libraryから提供されます。 - HomeViewModelWrapper: KMP の ViewModel を SwiftUI で使用するためのラッパークラスです。
- Components: 再利用可能な UI コンポーネントを提供します。
- macOS 14.0 以上
- Xcode 16.0 以上
- iOS 18.5 以上
- Swift 5.0 以上
本プロジェクトは Swift Package Manager を使用して kmp-sample-library を取得します。ライブラリは GitHub Releases から XCFramework のバイナリとして配布されており、Xcode が自動的にダウンロードします。
特別な設定は不要で、プロジェクトを開くだけで依存関係が解決されます。
# リポジトリのクローン
git clone https://github.com/kei-1111/kmp-sample-ios.git
cd kmp-sample-ios
# Xcode でプロジェクトを開く
open KmpSampleIOS.xcodeproj
# Xcode でビルド・実行
# または Command + R でシミュレータ/実機で実行- 火星の不動産情報一覧表示(グリッドレイアウト)
- 不動産詳細情報の表示(Bottom Sheet)
- 画像の非同期読み込み
- 状態管理(読み込み中、エラー表示など)
- kmp-sample-library - ビジネスロジックと状態管理を提供する Kotlin Multiplatform ライブラリ
- kmp-sample-android - Android 版アプリケーション

