Kotlin

Kotlin Multiplatform 開発環境とセットアップ完全ガイド

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


Contents

スポンサードリンク

1. 開発環境の要件とセットアップ

1-1️⃣ 推奨ツール一覧(2024 年版)

カテゴリ 製品・プラグイン 安定版バージョン例 入手/設定方法
IDE Android Studio (Flamingo 系列) 2023.1.2 IDE の Help ▸ Check for Updates から最新版を取得
IntelliJ IDEA / Fleet(任意) 2023.3.x 系列 JetBrains公式サイトからダウンロード
Kotlin Kotlin コンパイラ 1.9.10 Gradle が自動解決。kotlin("jvm") version "1.9.10" を記述
KMP Gradle Plugin org.jetbrains.kotlin.multiplatform 2.0.20 plugins { id("org.jetbrains.kotlin.multiplatform") version "2.0.20" }
Xcode Xcode (Command Line Tools 含む) 15.3 以上 App Store → Xcode → Preferences ▸ Locations で CLT を選択
Android SDK compileSdk / targetSdk 34 android { compileSdk = 34 } として Gradle に設定

ポイント
バージョンは「互換性が保証された組み合わせ」を意識してください。たとえば Kotlin 1.9 系は KMP Plugin 2.x 系と相性が良く、Android SDK 34 は最新の Jetpack Compose と問題なく連携します。

1-2️⃣ 環境構築手順

1. IDE とプラグインの準備

2. macOS の開発ツール設定(iOS 向け)

手順 コマンド例 説明
Command Line Tools をインストール xcode-select --install 初回だけ実行すれば OK
パス確認 xcode-select -p /Applications/Xcode.app/Contents/Developer が返ってくることを確認
Xcode のバージョン xcodebuild -version 15.3 以上かチェック

3. Kotlin バージョンの検証

ポイント
上記が表示されれば、Gradle が期待通りに Kotlin を解決できる状態です。


2. KMP プロジェクトの作成手順

2-1️⃣ Wizard(ウィザード)で雛形を生成

  1. File ▸ New ▸ ProjectKotlin Multiplatform を選択
  2. プロジェクト名・保存先を入力し Next
  3. Target platformsAndroidiOS にチェック
  4. UI の共有方針を選択
オプション 内容
Do not share UI iOS は SwiftUI、Android は Jetpack Compose を個別実装
Share UI Compose Multiplatform で共通 UI を実装(※後述シナリオ①)
  1. 完了すると shared モジュールと以下のフォルダ構造が自動生成されます。

ポイント
Wizard が作成する build.gradle.kts には必要なプラグインと基本的な sourceSet 定義がすでに組み込まれています。

2-2️⃣ 手動でプロジェクトを構築したい場合

ポイント
手動構成でも上記プラグインと target 設定さえ揃えば、Wizard と同等の雛形が得られます。


3. Gradle 設定とソースセット構成

3-1️⃣ 基本的な build.gradle.kts(抜粋)

ポイント
- targetHierarchy.default() を使うと、iOS の実機/シミュレータ間でコードを自動共有でき、iosMain に依存関係を集約できます。
- SQLDelight は 1.5.5 が安定版として公開されており、runtime, android-driver, native-driver のすべてが利用可能です。

3-2️⃣ 期待/実装(expect / actual)でプラットフォーム固有コードを分離

ポイント
expect/actual による抽象化は、コンパイル時に正しい実装が選択されるためランタイムエラーのリスクを低減します。


4. 共有コードの実装パターン

4-1️⃣ データ層(Ktor + SQLDelight)

API クライアント(commonMain

DB ドライバ(commonMain

iOS / Android の実装例

ポイント
expect/actual によって DB ドライバだけをプラットフォームごとに差し替え、ビジネスロジックは commonMain に集約できます。

4-2️⃣ 非同期処理とリアクティブ UI(Coroutines + Flow)

ポイント
Flow を返すことで UI 側は collectAsState だけで最新データをリアルタイムに取得できます。


5. プラットフォーム固有コードと UI 統合シナリオ

5-1️⃣ シナリオ① ― Compose Multiplatform で UI を共有

共通 UI(commonMain

Android 側エントリーポイント

iOS 側エントリーポイント

ポイント
- Android と iOS の両方で同一の Compose コードが走り、UI の一貫性と保守コスト削減が実現します。
- ただし iOS では現在(2024 年)「Compose for iOS」はベータ版であり、パフォーマンス要件や App Store 審査への影響を事前に確認してください。

5-2️⃣ シナリオ② ― ネイティブ UI を個別実装しロジックだけ共有

プラットフォーム 実装ファイル例
Android androidApp/src/main/kotlin/com/example/ui/PostsScreen.kt(Jetpack Compose)
iOS iosApp/PostsView.swift(SwiftUI)

SwiftUI 側サンプル

Jetpack Compose 側サンプル

ポイント
UI がプラットフォームごとに最適化されるため、ユーザー体験が向上します。ロジックは shared モジュールの PostViewModel に委譲するだけで済みます。


6. ビルド・デバッグフロー、トラブルシューティング、CI/CD

6-1️⃣ Android と iOS のビルドコマンド

タスク コマンド例 説明
Android デバッグ ./gradlew :androidApp:assembleDebug && adb install -r androidApp/build/outputs/apk/debug/androidApp-debug.apk IDE がなくても端末へ直接インストール可能
iOS シミュレータ用フレームワーク ./gradlew linkDebugFrameworkIosX64 Xcode のシミュレータで利用できる .framework を生成
iOS 実機用フレームワーク ./gradlew linkDebugFrameworkIosArm64 実機テスト用にビルド(署名が必要)

ポイント
Gradle のタスクは Android と iOS が同一プロジェクト内で統合されているため、どちらかを変更したらもう片方のビルドも自動的に再評価されます。

6-2️⃣ よくあるエラーと対処法

エラーメッセージ 主な原因 解決策
KMP Gradle Plugin バージョン不整合 plugins { id("org.jetbrains.kotlin.multiplatform") version "2.0.10" } 等の古い記述 build.gradle.kts のプラグイン行を 2.0.20 に更新
Xcode CLI ツールが未設定 xcode-select -p が空 sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer を実行
iOS フレームワークの署名失敗 codesign エラー、プロビジョニング不足 Xcode の Signing & Capabilities で正しいチームとプロファイルを選択、もしくはローカルテスト時は ./gradlew linkDebugFrameworkIosX64 -PdisableSigning=true
SQLDelight が見つからない ライブラリバージョンが誤っている implementation("com.squareup.sqldelight:runtime:1.5.5") など、Maven Central に掲載されている正しいバージョンに修正

6-3️⃣ GitHub Actions を使った CI/CD の実装例

ポイント
- Android ビルドは Linux ランナーで完結し、iOS ビルドは macOS ランナーが必要です。
- upload-artifact により生成物をプルリクエストのチェック結果として確認でき、品質ゲートに組み込みやすくなります。


7. 次のステップと学習リソース

リンク 内容
Kotlin Multiplatform Documentation 最新ツールチェーン・Gradle 設定例が網羅的に掲載されています。
Android Developers – KMP Codelab 手を動かしながら実践できるサンプルプロジェクトが提供されています。
SQLDelight Official Guide データベーススキーマの書き方とマルチプラットフォームでの生成コード解説があります。
Compose Multiplatform Samples iOS へデプロイする際の注意点やパフォーマンス測定手順が掲載されています。

実践アドバイス
1. 本稿の手順で「HelloKMP」アプリを作成し、Android エミュレータと iOS シミュレータの両方で動かす。
2. PostRepository のテストコード(JVM テスト)を書き、CI に組み込んで成功することを確認。
3. プロジェクトが安定したら、Compose Multiplatformネイティブ UI のどちらが自チームに適しているか評価し、次のフェーズへ移行してください。


以上で、Kotlin Multiplatform を用いた Android/iOS 同時開発の全体像と実装・運用手順をご紹介しました。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Kotlin