Kotlin

Kotlin Multiplatform プロジェクト作成ガイド【2026年最新版】

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1️⃣ 環境構築 ― 必要なツールとインストール手順

カテゴリ 推奨バージョン(2024‑04 時点) 備考
Android Studio Flamingo 2023.3.2 以上 KMP 用テンプレートが標準装備
Kotlin プラグイン 1.9.22(Kotlin DSL) kotlin("multiplatform") が利用可能
JDK OpenJDK 17(または 21) Gradle のデフォルト JVM
Android SDK API 34(Android 14)以上 compileSdk = 34 を推奨
Xcode 15.0 以降 iOS シミュレータ実行に必須
Node.js 20 LTS JS/WasM ビルドに使用
CocoaPods (macOS) 1.12 以上 iOS 用ネイティブ依存管理

1‑1 インストール手順(Windows / macOS 共通)

  1. Android Studio のダウンロード
  2. 公式サイトから「Flamingo」版を取得し、インストーラを実行。

  3. Kotlin Multiplatform プラグインの導入

  4. File > Settings > Plugins > Marketplace(macOS は Preferences)で Kotlin を検索し、Install → 再起動。

  5. JDK の設定

  6. JDK 17(または 21)をインストール後、Settings > Build, Execution, Deployment > Build Tools > Gradle にて Gradle JVM に指定。

  7. macOS だけの追加作業
    bash
    xcode-select --install # コマンドラインツール有効化
    sudo gem install cocoapods # CocoaPods インストール(必要に応じて)

  8. Node.js のインストール

  9. 公式サイトの LTS バイナリをダウンロード、または brew install node@20(macOS)で導入。

Tip:全ツールが正しくパスに通っているかは、端末で java -version, node -v, xcodebuild -version などを実行して確認してください。


2️⃣ Kotlin Multiplatform プロジェクトの作成

2‑1 プラグインと Wizard の有効化

  • プラグイン:上記で導入した Kotlin プラグインが自動的に kotlin-multiplatform を提供します。
  • Wizard:Android Studio の「New Project」ダイアログに Kotlin Multiplatform App テンプレートが表示されます。

2‑2 Wizard で選択できる主な項目

項目 推奨設定例
Project name MyKmpApp
Package name com.example.mykmpapp
Shared module type Kotlin Multiplatform Library
Android UI Compose
iOS UI SwiftUI (UI を共有しない)
Web target JS + Wasm
有効化するプラットフォーム android, iosX64/iosArm64/iosSimulatorArm64, js(IR), wasmJs

Wizard が生成したプロジェクトは次のような構造になります(抜粋):

2‑3 expect / actual の具体例(初心者向け)

commonMain から platformName() を呼び出すだけで、実行環境に応じた文字列が得られます。


3️⃣ Gradle 設定のベストプラクティス

3‑1 root build.gradle.kts

3‑2 shared モジュール(マルチプラットフォーム設定)

3‑3 Android アプリモジュール

3‑4 iOS アプリモジュール(CocoaPods 統合)

ポイントpod install --repo-update を CI の最初に実行すれば、バージョン不整合を防げます。

3‑5 ビルド速度向上のための gradle.properties


4️⃣ ビルド・実行・テストの手順と CI 設定

4‑1 ローカルでのビルドコマンド

プラットフォーム コマンド例
Android ./gradlew :androidApp:assembleDebug
iOS(シミュレータ) xcodebuild -workspace iosApp/iosApp.xcworkspace -scheme iosApp -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' build
JS (ブラウザ) ./gradlew :jsApp:browserDevelopmentRun
Wasm ./gradlew :wasmApp:wasmJsBrowserRun

4‑2 GitHub Actions(完全版)

以下のワークフローは macOS ランナー 上で Android と iOS のテストを自動化し、JS/WasM は Linux ランナーで実行します。iOS シミュレータのセットアップ手順も含めています。

ポイント解説

  • test-ios ジョブでは simctl によるシミュレータ作成・起動を明示的に行うため、GitHub の macOS ランナーでの「Simulator not found」エラーを回避できます。
  • iOS テストは Xcode の xcodebuild test を使用し、-destination にシミュレータ情報を渡すだけで実行可能です。
  • Android と共通コードは Linux ランナーでもビルドできるため、ジョブの並列実行が速くなります。

5️⃣ 実務で活かすベストプラクティスとトラブルシューティング

5‑1 共有コードの境界を意識する

領域 推奨実装例
ロジック(ビジネスルール、データ処理) commonMain に Kotlin の純粋関数として置く。
UI 各プラットフォーム固有の *Main で Compose / SwiftUI を実装し、インタフェースだけを expect/actual で共有する。(例:expect fun Modifier.applyPlatformStyle(): Modifier
ネイティブ API 呼び出し expect 関数で抽象化し、プラットフォームごとに actual を提供。

5‑2 依存関係は一元管理

  • Version Catalog(libs.versions.toml)
    toml
    [libraries]
    coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0"
    ktorClientIos = "io.ktor:ktor-client-ios:2.3.8"

[plugins]
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version = "1.9.22" }
androidApplication = { id = "com.android.application", version = "8.4.0" }

- 各モジュールは
implementation(libs.coroutines)
の形で参照し、バージョンの食い違いを防止します。

5‑3 ビルド速度の最適化

手法 設定例
並列ビルド org.gradle.parallel=true(gradle.properties)
ネイティブインクリメンタル kotlin.incremental.native=true
Android ビルド高速化 android.enableR8.fullMode=false(デバッグ時のみ)
キャッシュの有効活用 CI では actions/cache@v3 を使い、~/.gradle/caches~/.gradle/wrapper を保存。

5‑4 よくある問題と対処法

問題 原因 解決策
Gradle Sync が失敗 Kotlin プラグインのバージョンが build.gradle.kts と不一致 Android Studio の「Plugins」画面でプラグインを最新に統一し、./gradlew --stop && ./gradlew cleanBuildCache を実行
iOS ビルドで pod install が失敗 CocoaPods リポジトリが古い pod repo update 後に再度 pod install。CI では --repo-update オプションを必ず付与
Wasm ビルドがタイムアウト Node のバージョンが非対応 Node.js 20 LTS にアップデートし、Gradle デーモンを無効化 (--no-daemon) して実行
GitHub Actions でシミュレータが起動できない macOS ランナーのデフォルトイメージに対象デバイスが存在しない xcrun simctl create コマンドで必要なシミュレータを事前作成(上記ワークフロー参照)

6️⃣ まとめ(要点)

  1. 環境構築は Android Studio Flamingo 2023.3.2、Kotlin 1.9.22、JDK 17/21、Xcode 15、Node.js 20 がベース。
  2. Wizardshared, androidApp, iosApp, js/wasm の四層構造を即生成し、expect / actual によるプラットフォーム分離が容易になる。
  3. Gradle 設定は root で Kotlin Multiplatform プラグインを管理し、各モジュールは kotlin {} ブロックでターゲット・sourceSet を宣言。Version Catalog により依存バージョンの一元化が可能。
  4. ビルド・テストは CLI タスクだけで完結し、GitHub Actions では macOS と Linux のマトリクスを組むことで Android/iOS/JS/WasM をすべて自動検証。iOS シミュレータの作成・起動手順も含めた完全版ワークフローを提供。
  5. 運用上のベストプラクティスは「共有ロジックと UI の分離」「依存管理の集中化」「ビルド速度最適化」の三本柱。典型的なトラブル(Gradle sync、CocoaPods、Wasm タイムアウト)への対処法も網羅。
  6. 以上を実践すれば Kotlin Multiplatform を用いた Android・iOS・Web アプリの開発・テスト・CI が安定し、同一コードベースから複数プラットフォームへ迅速にリリースできるようになります。

本稿は執筆時点(2024 年 4 月)の情報を基にしています。ツールのバージョンが更新された場合は、公式ドキュメントをご確認ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-Kotlin