0Pricing
Kotlin Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Kotlin/Nativeの概要:ターゲット、ツールチェーン、コンパイル
  2. Kotlin/Nativeのメモリ管理:新しいMM
  3. cinteropと.defファイルによるC相互運用
  4. Kotlin/WASM:ブラウザー向けWebAssemblyへのコンパイル
← Kotlin Academyに戻る