Contents
Android StudioでKMPプロジェクトを即時生成する手順
Android Studio Flamingo以降のバージョンでは、KMPウィザードを使用してプロジェクト構築が一括で完了します。これにより、従来の手動設定にかかった時間を大幅に短縮できます。
新規プロジェクトテンプレート選択の手順
以下のように操作することで、4層構造を即時生成できます:
- Android Studioを起動し、「New Project」を選択
- 「Kotlin Multiplatform」を選び、プロジェクト名と保存先を入力
- プラットフォーム選択画面で、Android/iOS/JS/WASMの4層構造を選択
共通コードとプラットフォーム専用ディレクトリが自動生成される仕組みは、KMP開発の効率化に大きく寄与します。
Kotlin 1.9.22対応の初期設定オプション
ウィザード起動時にKotlinバージョンを指定できますが、デフォルトでは最新版Kotlin 1.9.22が適用されます。以下に初期設定で確認すべき項目を示します:
- JDKの選択: JDK17/21が推奨(特にiOSモジュール構築時に必要)
- Gradleバージョン: 8.3以降が対応していることを確認
- プラットフォーム依存ライブラリの自動選択: iOSではSwiftとの連携用ライブラリも含む
プロジェクトの初期設定は、各プラットフォームごとの要件を事前に把握することが重要です。
KMPプロジェクトのディレクトリ構成は、共有コードとプラットフォーム固有コードを明確に分離することで開発効率が向上します。
共享コードとプラットフォーム固有コードの分離原則
以下は、各ディレクトリの役割と特徴です:
| ディレクトリ | 内容 | 補足 |
|---|---|---|
| shared/ | クロスプラットフォームで使用するコード(データモデル、共通APIなど) | expect/actualのインターフェース定義もここに配置 |
| androidApp/ | Android専用実装とUIレイアウト | RoomやJetpack Composeとの連携も可能 |
| iosApp/ | iOS専用実装(Swiftと連携) | CocoaPodsによる依存管理が自動で設定される |
| js/wasm/ | Webアプリケーション向けコード | Node.js 20以上を前提としている |
各プラットフォームの実装は
actualキーワードで分離し、共通コードとの連携をスムーズにします。
Gradle Kotlin DSLによるプロジェクト構成のベストプラクティス
Kotlin 1.9.22以降では、DSL記法がさらに洗練され、バージョン管理や依存関係定義が簡潔になりました。
build.gradle.ktsでの共通設定テンプレート
以下はbuild.gradle.ktsの基本構成例です:
|
1 2 3 4 5 6 7 8 9 10 11 |
plugins { kotlin("multiplatform") version "1.9.22" } group = "com.example" version = "1.0-SNAPSHOT" repositories { mavenCentral() } |
バージョンの一元管理は、複数のプラットフォームで依存関係が一致するようにするための必須手順です。
Version Catalogで管理するライブラリバージョン一覧
以下のようにversion.catalogs.tomlにライブラリ情報を記述することで、プロジェクト全体でのバージョン統一が可能になります:
|
1 2 3 4 5 6 7 8 |
[versions] kotlin = "1.9.22" coroutines = "1.7.3" [libraries] kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } |
バージョン一元管理は、複数のプラットフォームで依存関係が一致するようにするための必須手順です。
expect/actualによるプラットフォーム分離実装の具体例
KMPでは、expectとactualキーワードを使ってプラットフォーム固有の実装を分離します。これにより、共通インターフェースを維持しながら、各環境に合わせた処理が可能になります。
共通インターフェース定義の書き方
以下はshared/src/commonMain/kotlin/MyInterface.ktの例です:
|
1 2 |
expect fun platformSpecificFunction(): String |
expectキーワードで、この関数がプラットフォーム固有であることを明示します。
Android/iOSでの実装差分コードサンプル
Android用実装(androidApp/src/androidMain/kotlin/MyActual.kt)
|
1 2 3 4 |
actual fun platformSpecificFunction(): String { return "Android: ${Build.MODEL}" } |
iOS用実装(iosApp/src/iosMain/kotlin/MyActual.kt)
|
1 2 3 4 |
actual fun platformSpecificFunction(): String { return "iOS: ${UIDevice.current.model}" } |
各プラットフォームで
expectインターフェースを満たすactual実装が行われるため、共通コードとの連携性が保たれます。
Xcode15・JDK17/21環境でのiOSモジュール構築手順
KMPプロジェクトでiOSをサポートするには、Xcode 15とJDK17/21の環境設定が必須です。以下の手順に従ってください:
Kotlin/NativeとSwiftの連携設定
- Xcodeから
iosAppディレクトリを開く - プロジェクト設定で「Build Settings」→「Other Swift Flags」に
-D kotlinを追加 Kotlin/Nativeライブラリが自動的にリンクされるように、CocoaPodsの依存関係を確認
2026年時点では、SwiftとKotlin/Native間の連携がさらにスムーズになっているとされています。
iOSアプリケーションのビルド・デプロイフロー
以下の手順でiOSモジュールをビルドします:
- Android Studioから「Run」メニューを選択し、iOSプロジェクトを実行
- Xcodeでシミュレーターまたは物理端末にアプリをインストール
- SwiftとKotlinの連携部分をテスト(特に
expect/actualの動作確認)
デプロイ時には、JDK17以上を使用しないとビルドエラーが発生する可能性があるため注意が必要です。