Kotlin

Kotlinマルチプラットフォーム開発環境のセットアップと最新手順

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


Contents

スポンサードリンク

開発環境のセットアップ

Kotlin Multiplatform (KMP) アプリを作り始める前に、JDK・Android Studio・Xcode の最新版 と Kotlin 用プラグインが正しくインストールされていることを確認します。ここで環境が整っていれば、ビルドエラーや依存関係の不整合といった基本的な障害に悩まされる機会は格段に減ります。

JDK と Android Studio のインストール

対象 OS:macOS・Windows・Linux(それぞれの手順を併記)

  • JDK 17 以上 が Kotlin 2.0 系列で必須です。
  • macOS: brew install openjdk@17 → インストール後、/usr/local/opt/openjdk@17/bin$PATH に追加します。
  • Windows: Microsoft Store か AdoptOpenJDK の公式ページから MSI を取得し、インストーラに従ってインストールしてください。
  • Linux (Ubuntu 系): sudo apt-get install openjdk-17-jdk

  • Android Studio(最新安定版)

  • 公式サイトの「Download Android Studio」から Android Studio Flamingo 系列以降をダウンロードします(2026 年 4 月時点での最新版は Flamingo (2024.2.x))。
  • 初回起動後に表示される SDK Manager で次のコンポーネントを必ずインストールしてください。
    • Android 15(API 35)またはそれ以上のプラットフォーム
    • Google Play services、NDK、CMake(必要に応じて)
  • File > Settings > Appearance & Behavior > System Settings > Android SDKSDK Path が正しく設定されていることを確認します。

  • 環境変数のチェック(ターミナル/コマンドプロンプト)

注意:JDK と Android Studio が同一メジャーバージョンで揃っていないと、Kotlin コンパイラが期待通りに動作しないことがあります。

iOS 開発環境の準備(Xcode)

iOS アプリをビルドするには macOS が必須です。Apple が提供する 最新安定版 Xcode(2026 年 4 月時点では 15.4 系列)が推奨されますが、正確なバージョン番号は公式リリースノートで随時確認してください。

  1. App Store または Apple Developer ポータルから Xcode をインストール/アップデートします。
  2. コマンドラインツールを有効化するために以下を実行します。

  1. Command Line Tools が正しい Xcode バージョンに紐付いているか確認します。

  1. シミュレータは Xcode の「Devices & Simulators」から iPhone 15、iPad Pro 等の最新デバイスイメージを追加してください。

注意:シミュレータが起動しない場合は xcrun simctl list でインストール済みランタイムを確認し、必要に応じて xcode-select --switch /Applications/Xcode.app を実行します。

Kotlin プラグインと関連ツールの導入

Kotlin 2.0 系列と Compose Multiplatform の機能をフル活用するために、IDE 側へ以下プラグインを追加します(バージョンは「最新安定版」を使用)。

ツール 推奨設定 インストール手順
Kotlin Plugin for Android Studio 最新安定版 (例: 2.0.x) Preferences → Plugins → Marketplace → 「Kotlin」検索・インストール
Compose Multiplatform Plugin 最新安定版 (例: 1.5.x) 同上で「Compose Multiplatform」検索
Kotlin Symbol Processing (KSP) 最新安定版 (例: 2.0.x‑rc) build.gradle.ktsid("com.google.devtools.ksp") version "…" を記述

ポイント:プラグインは自動更新が無効化されていることが多いため、月に一度「Check for Updates」からバージョンを確認しましょう。


KMP プロジェクトの作成と Gradle 設定

Gradle Kotlin DSL と Version Catalog を組み合わせることで、依存バージョン管理が一元化され、プラットフォームごとのビルドスクリプトがシンプルになります。以下では標準的なディレクトリ構成と設定ファイル例を示します。

プロジェクト雛形の生成

前提:プロジェクトのルートに gradlew(Gradle Wrapper)があることを想定しています。

このコマンドで以下の主要ディレクトリが作成されます。

  • commonMain/, androidMain/, iosX64/ などの source set
  • build.gradle.kts(ルートビルドスクリプト)
  • settings.gradle.kts

settings.gradle.kts に Version Catalog を有効化

libs.versions.toml(例)

gradle/libs.versions.toml をプロジェクト直下に作成し、バージョン・プラグイン・ライブラリをすべてここで定義します。

ポイントlibs.versions.toml はプロジェクト全体で共有できるため、サブモジュールが増えてもバージョン管理が煩雑になりません。

Kotlin Multiplatform と Compose のプラグイン設定

build.gradle.kts(ルート)に以下を記述します。

注意libs.versions.toml に定義したエイリアス(alias(libs.plugins.xxx))は Gradle 8.x 系で正式にサポートされています。古い Gradle を使用している場合は id("…") version "…" の形式に書き換えてください。

Version Catalog の活用例とベストプラクティス

カテゴリ 設定例 利用シーン
バージョン version("kotlin", "2.0.20") 複数モジュールで同一バージョンを共有
プラグイン plugin("compose", "org.jetbrains.compose").versionRef("compose") Gradle スクリプトの可読性向上
ライブラリ library("ktor-core", "io.ktor:ktor-client-core").versionRef("ktor") implementation(libs.ktor.core) で呼び出し

実装手順まとめ

  1. libs.versions.toml を作成(上記例をベースにプロジェクト固有の依存を追加)。
  2. settings.gradle.kts でカタログを読み込む。
  3. ビルドスクリプトでは libs.xxx 系統だけを書き、バージョン番号は一切ハードコーディングしない。

この流れに従えば、将来のバージョンアップは toml ファイル のみ修正すれば完了します。


共通コード層の設計とマルチプラットフォームライブラリ活用

KMP で最大限コード共有を実現する鍵は Expect/Actual パターン と、Ktor・SQLDelight 等のマルチプラットフォーム対応ライブラリです。以下では具体的な実装例とベストプラクティスを示します。

Expect / Actual によるプラットフォーム差分抽象化

概要:共通モジュール (commonMain) で expect キーワードで宣言し、各ターゲット固有の実装は actual キーワードで提供します。

Android 実装

iOS (Kotlin/Native) 実装

ポイントexpect / actual はコンパイル時に型安全が保証され、IDE がプラットフォーム固有実装へのナビゲーションを提供します。

Ktor によるネットワーク層の共有

Ktor のマルチプラットフォームクライアントは エンジン を差し替えるだけで Android と iOS 両方で同一コードが動作します。

共通モジュール

プラットフォーム別エンジン設定(Expect/Actual パターン)

HttpClient の生成箇所を provideEngine() に置き換えるだけで、ビルドフラグGradle プロパティでエンジン切替が可能です。

ポイント:テスト時には -PuseMockServer=true のような Gradle プロパティを用意し、provideEngine() が Mock エンジンを返すように切り替えることで、ネットワーク依存のユニットテストが容易になります。

SQLDelight によるデータベース層の統一

SQLDelight はスキーマから型安全な DAO を自動生成し、JVM と Native の両方で同一 API を提供します。

Gradle 設定(build.gradle.kts)

スキーマは src/commonMain/sqldelight/com/example/shared/db/App.sq に配置します。

ドライバ抽象化(Expect/Actual)

DAO の利用例(commonMain)

ポイント:iOS ビルド時は NativeSqliteDriver が自動的に使用され、SQLite の挙動は Android と完全に同一です。

@SharedImmutable と atomicfu ライブラリの活用

Kotlin 2.0 で導入された @SharedImmutableコンパイル時最適化 により、マルチスレッド環境でもロック不要な不変オブジェクトを生成します。利用には atomicfu が必須です。

依存追加(libs.versions.toml)

コード例

ポイント@SharedImmutable を付与した objectval はコンパイル時に 静的バイトコード に変換され、実行時のオーバーヘッドがほぼゼロになります。頻繁に参照する定数は必ずこのアノテーションでマークしましょう。


UI 実装の選択肢と比較ガイド

KMP アプリでは Compose MultiplatformSwiftUI のどちらか、またはハイブリッド構成を取ることが多いです。以下ではそれぞれの特徴と実装サンプルを示し、プロジェクト要件に合わせた選択指針を提供します。

Compose Multiplatform で統一的に UI を構築

概要:単一コードベース(Kotlin)で Android と iOS の UI を描画でき、プレビュー機能が IDE に組み込まれています。

プレビューの書き方(iOS も含めて)

  • テーマ統一MaterialTheme をベースに ColorScheme をカスタマイズすれば、iOS でも Material ライクな見た目を実現可能です。
  • プラットフォーム固有の UI 部分だけ切り替える: expect fun isIOS(): Booleanactual 実装で条件分岐できます。

SwiftUI と KMP のブリッジパターン

概要:iOS 側は Apple が推奨する SwiftUI で UI を実装し、ビジネスロジックだけを Kotlin/Native から呼び出す構成です。

Swift 側コード例

KMP 側の GreetingUseCase(共通コード)

  • ブリッジポイントshared.framework のビルド設定です。Gradle の linkReleaseFrameworkIosX64 タスクで生成された .framework を Xcode にインポートすれば、Swift から直接呼び出せます。

フレームワーク選択の判断基準

観点 Compose Multiplatform SwiftUI
コード統一性 高(Kotlin のみ) 中(ロジックは共有、UI は別)
プラットフォームネイティブ感 良好だが Material デザインに依存 最高(Apple HIG 完全遵守)
開発速度 UI プレビューで高速 Xcode の Live Preview が同等
チームスキル Kotlin エンジニア中心 iOS/Swift エンジニア必須
将来拡張性 Web・Desktop も同一コードで追加可能 iOS/macOS に限定

結論:Kotlin エンジニアが多数在籍し、Android と iOS の UI をできるだけ共通化したい場合は Compose Multiplatform が最適です。Apple デザインの徹底遵守と高度な iOS ネイティブ体験が必要なら SwiftUI + KMP ブリッジ が有効です。


テスト・デバッグ・ビルド・リリースフロー

KMP プロジェクトでは 共通ユニットテストプラットフォーム固有テスト を組み合わせ、CI/CD で自動化することが品質保証の鍵です。

ユニットテストとプラットフォーム固有テスト

共通モジュール (commonTest) の例

Android Instrumented Test

androidTestbuild.gradle.kts で必要な依存を追加します。

iOS XCTest(Swift 側)

ポイント./gradlew allTestscommonTestandroidTestiosX64Test·iosArm64Test が一括実行でき、ローカルでも CI でも同じコマンドを使用できます。

完全版 GitHub Actions パイプライン

以下は AndroidiOS のビルド・テスト・デプロイまでを網羅したサンプルです。コメントで省略部分を補足しています。

ポイント解説

ステップ 目的・補足
setup macOS ランナーで JDK と Android SDK を一度だけインストールし、キャッシュを共有。
test ./gradlew testDebugUnitTest で共通ユニットテスト、xcodebuild test で iOS シミュレータ上の XCTest を実行。
build Android AAB と iOS XCFramework(または .ipa)を生成し、後続ジョブへアーティファクトとして渡す。
deploy Google Play の internal トラックと App Store Connect に自動アップロード。シークレット管理は必須。

デバッグ・プロファイリングの実践

  1. KSP 生成コードの確認
  2. Android Studio: Build > Show Generated Sources...build/generated/ksp/... を開く。
  3. macOS ターミナルで iOS の場合は ./gradlew :shared:compileKotlinIosArm64 --info とすれば生成ファイルのパスが出力されます。

  4. CPU / メモリ プロファイラ

  5. Android Studio Profiler → アプリ起動中に CPU、Memory、Network タブでリアルタイム計測。KSP が生成したコードは通常のクラスと同様にプロファイル対象です。
  6. Xcode InstrumentsAllocationsTime Profiler を使い、MyKmpApp.framework 内のシンボルを追跡します。

  7. ログ出力とデバッグブレークポイント

  8. Kotlin/Native では println() が標準出力に流れますが、Xcode のコンソールでも確認可能です。
  9. Android Studio と Xcode 両方で同一ブレークポイントを設定できるように、コードは commonMain に置き、expect/actual でプラットフォーム差分だけ抽象化します。

注意:KSP はビルド時のみ実行されるため、ランタイムオーバーヘッドはありませんが、生成コードが大規模になると デバッグシンボルサイズ が増える点に留意してください。


まとめ

  • 開発環境は JDK 17 以上、Android Studio の最新安定版、macOS 上の最新版 Xcode を揃え、Kotlin プラグインと KSP を導入すればトラブルが激減します。
  • Gradle Kotlin DSL と Version Catalog による依存管理はバージョンアップを一箇所で完結させ、プロジェクト規模が拡大しても保守コストを抑えられます。
  • Expect/Actual パターンとマルチプラットフォーム対応ライブラリ(Ktor・SQLDelight・atomicfu)を組み合わせることで、ビジネスロジックは完全に共有可能です。
  • UI は Compose MultiplatformSwiftUI のハイブリッド から選択し、プロジェクト要件とチームの技術スタックに合わせて最適なアーキテクチャを決定してください。
  • テスト戦略は共通ユニットテスト+プラットフォーム固有テストで網羅的にカバーし、GitHub Actions の完全サンプルワークフローを活用すれば CI/CD が自動化されます。
  • デバッグ・プロファイリングは Android Studio と Xcode の標準ツールで十分対応でき、KSP 生成コードの確認手順も明示しておくと安心です。

これらの手順とベストプラクティスを踏襲すれば、Kotlin Multiplatform アプリ開発が 高速・安全・拡張性の高い プロセスへと変貌し、チーム全体の生産性向上に直結します。ぜひ本ガイドをプロジェクトの立ち上げ時に活用してください。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Kotlin