Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル
利用可能なKotlin/Nativeのターゲットを理解し、シンプルなCLIバイナリをコンパイルします。
「Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
Kotlin/Nativeとは
Kotlin/Native は、JVM や Dalvik ランタイムを介さず、LLVM によって Kotlin のソースコードをネイティブマシンコードに直接コンパイルします。その結果、自己完結型のバイナリが生成されるため、対象マシンに JVM をインストールする必要はありません。
サポートされるターゲット
Kotlin/Native は、幅広いターゲットをサポートしています:
- macOS / iOS:
macosX64、macosArm64、iosX64、iosArm64、iosSimulatorArm64 - Linux:
linuxX64、linuxArm64 - Windows:
mingwX64 - 組み込み / watchOS / tvOS:さまざまなターゲット
コンパイルパイプライン
Kotlin/Native のコンパイルパイプラインは、Kotlin ソース → Kotlin IR(中間表現)→ LLVM IR → ネイティブバイナリという流れです。konanc コンパイラがこの処理を実行しますが、実際には常に Kotlin Multiplatform の Gradle プラグインを使用します。
GradleでNativeターゲットを設定する
Kotlin Multiplatform プロジェクトでは、build.gradle.kts で Native ターゲットを宣言します:
kotlin {
macosArm64("macos") {
binaries {
executable { entryPoint = "main" }
}
}
linuxX64("linux") {
binaries { executable { entryPoint = "main" } }
}
}Nativeターゲット用のソースセット
Native ターゲットは、他のプラットフォームと commonMain/commonTest を共有します。ターゲット固有のコードは、macosMain や linuxX64Main などのソースセットに配置します。プラットフォーム固有の API には expect/actual を使用してください。
出力バイナリの種類
Kotlin/Native では、複数の種類のバイナリを生成できます:
executable— スタンドアロンのコマンドラインプログラムstaticLib— C/C++ プロジェクトにリンクする静的ライブラリsharedLib— 動的(.dylib / .so / .dll)ライブラリframework— iOS/macOS との統合に使用する Apple フレームワーク
Nativeのテストを実行する
./gradlew macosArm64Test(または対象ターゲットに対応するタスク)で Native のテストを実行します。テストはネイティブバイナリにコンパイルされ、ホストマシン上で実行されます。JVM は関与しません。
クロスコンパイルの制限
Kotlin/Native のクロスコンパイルには制限があります。Apple ターゲットは macOS 上でのみコンパイルできます(Xcode が必要です)。Linux と Windows のターゲットは、サポートされる任意のホスト上でコンパイルできます。CI パイプラインでは通常、Apple ターゲット用に macOS エージェントを使用します。
klib形式
Kotlin/Native ライブラリは、Kotlin のプラットフォーム非依存ライブラリ形式である .klib ファイルとして配布されます。依存関係は .klib として解決され、コンパイル時に最終バイナリへリンクされます。
KMP iOSアプリでのKotlin/Native
標準的な Kotlin Multiplatform Mobile(KMM)プロジェクトでは、共有コードが Apple の framework にコンパイルされ、Xcode によって iOS アプリへリンクされます。Swift/Objective-C コードは、生成されたヘッダーを介して Kotlin API を呼び出します。
パフォーマンス特性
Native バイナリは JVM の起動を待つ必要がないため即座に起動し、メモリ使用量も少なくなります。そのため、コマンドラインツール、サーバー側の Linux アプリケーション、iOS/macOS で共有するロジックに適しています。長時間稼働する JVM アプリケーションは JIT 最適化によって Native より高い性能を発揮する場合がありますが、多くの用途では起動時間とメモリ使用量の面で Native が優れています。
確認問題
iOS の Xcode プロジェクトで使用する Kotlin/Native の Apple framework を生成する Gradle バイナリタイプはどれですか?
復習:Kotlin/Nativeの概要
要点:
- Kotlin/Native は LLVM を介してネイティブマシンコードにコンパイルされるため、JVM は必要ありません
- macOS、iOS、Linux、Windows、watchOS、tvOS のターゲットをサポートします
- KMP Gradle プラグインでターゲットとバイナリの種類を設定します
- Apple ターゲットには macOS と Xcode が必要で、クロスコンパイルにはプラットフォーム上の制限があります
- ライブラリは
.klibとして配布され、iOS との統合にはframeworkバイナリを使用します
よくある質問
「Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル」レッスンは無料ですか?
はい。「Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル」で何を学びますか?
利用可能なKotlin/Nativeのターゲットを理解し、シンプルなCLIバイナリをコンパイルします。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル
- Kotlin/Nativeのメモリ管理:新しいMM
- cinteropと.defファイルによるC相互運用
- Kotlin/WASM:ブラウザー向けWebAssemblyへのコンパイル