Kotlin/Native を始める
このチュートリアルでは、Kotlin/Native アプリケーションの作成方法を学びます。自分に最適なツールを選択し、以下のいずれかを使用してアプリを作成してください。
- IDE:バージョン管理システムからプロジェクトテンプレートをクローンし、IntelliJ IDEA で使用します。
- Gradle ビルドシステム:内部の仕組みをより深く理解するために、プロジェクトのビルドファイルを手動で作成します。
- コマンドラインツール:標準の Kotlin ディストリビューションの一部として提供されている Kotlin/Native コンパイラを使用し、コマンドラインツールで直接アプリを作成します。
コンソールでのコンパイルは簡単で分かりやすく思えるかもしれませんが、数百のファイルやライブラリを持つ大規模なプロジェクトには向きません。そのようなプロジェクトでは、IDE またはビルドシステムの使用をお勧めします。
Kotlin/Native を使用すると、Linux、macOS、Windows を含むさまざまなターゲット向けにコンパイルできます。クロスプラットフォームコンパイル(あるプラットフォームを使用して別のプラットフォーム向けにコンパイルすること)も可能ですが、このチュートリアルでは、コンパイルを実行しているのと同じプラットフォームをターゲットにします。
Mac を使用しており、macOS やその他の Apple ターゲット向けのアプリケーションを作成・実行したい場合は、まず Xcode Command Line Tools をインストールして起動し、ライセンス条項に同意する必要があります。
IDE で作成する
このセクションでは、IntelliJ IDEA を使用して Kotlin/Native アプリケーションを作成する方法を学びます。Community Edition と Ultimate Edition の両方を使用できます。
プロジェクトの作成
最新バージョンの IntelliJ IDEA をダウンロードしてインストールします。
IntelliJ IDEA で File | New | Project from Version Control を選択し、以下の URL を使用して プロジェクトテンプレート をクローンします。
nonehttps://github.com/Kotlin/kmp-native-wizardプロジェクトの依存関係のバージョンカタログである
gradle/libs.versions.tomlファイルを開きます。Kotlin/Native アプリケーションを作成するには、Kotlin と同じバージョンの Kotlin マルチプラットフォーム Gradle プラグインが必要です。最新の Kotlin バージョンを使用していることを確認してください。none[versions] kotlin = "2.3.0"提案に従って Gradle ファイルをリロードします。

これらの設定に関する詳細は、マルチプラットフォーム Gradle DSL リファレンスを参照してください。
アプリケーションのビルドと実行
src/nativeMain/kotlin/ ディレクトリにある Main.kt ファイルを開きます。
srcディレクトリには Kotlin ソースファイルが含まれています。Main.ktファイルには、println()関数を使用して "Hello, Kotlin/Native!" を出力するコードが含まれています。
ガター(エディタの左端)にある緑色のアイコンを押してコードを実行します。

IntelliJ IDEA は Gradle タスクを使用してコードを実行し、その結果を Run タブに出力します。

初回実行後、IDE は上部にガターに対応する実行構成を作成します。

IntelliJ IDEA Ultimate のユーザーは、Native Debugging Support プラグインをインストールできます。これにより、コンパイルされたネイティブ実行ファイルのデバッグが可能になり、インポートされた Kotlin/Native プロジェクトの実行構成も自動的に作成されます。
プロジェクトを自動的にビルドするように IntelliJ IDEA を設定 することもできます。
- Settings | Build, Execution, Deployment | Compiler に移動します。
- Compiler ページで Build project automatically を選択します。
- 変更を適用します。
これで、クラスファイルを変更したりファイルを保存(/)したりすると、IntelliJ IDEA は自動的にプロジェクトの増分ビルドを実行します。
アプリケーションの更新
アプリケーションに、名前の文字数をカウントする機能を追加してみましょう。
Main.ktファイルに、入力を読み取るコードを追加します。readln()関数を使用して入力値を読み取り、それをname変数に代入します。kotlinfun main() { // 入力値を読み取る println("Hello, enter your name:") val name = readln() }Gradle を使用してこのアプリを実行するには、
build.gradle.ktsファイルで使用する入力としてSystem.inを指定し、Gradle の変更をロードします。kotlinkotlin { //... targets.withType<KotlinNativeTarget>().configureEach { binaries { executable { entryPoint = "main" runTaskProvider?.configure { standardInput = System.`in` } } } } //... }
"}
空白を取り除き、文字数をカウントします。
replace()関数を使用して、名前の中の空スペースを削除します。- スコープ関数
letを使用して、オブジェクトのコンテキスト内で関数を実行します。 - 文字列テンプレートを使用して、ドル記号と波括弧で囲むことで
${it.length}名前の長さを文字列に挿入します。itはラムダパラメータのデフォルト名です。
kotlinfun main() { // 入力値を読み取る println("Hello, enter your name:") val name = readln() // 名前の文字数をカウントする name.replace(" ", "").let { println("Your name contains ${it.length} letters") } }アプリケーションを実行します。
名前を入力して結果を確認します。

次に、名前の中のユニークな(重複しない)文字だけをカウントしてみましょう。
Main.ktファイルで、Stringに対する新しい拡張関数.countDistinctCharacters()を宣言します。.lowercase()関数を使用して名前を小文字に変換します。toList()関数を使用して、入力文字列を文字のリストに変換します。distinct()関数を使用して、名前の中の重複しない文字のみを選択します。count()関数を使用して、重複しない文字をカウントします。
kotlinfun String.countDistinctCharacters() = lowercase().toList().distinct().count().countDistinctCharacters()関数を使用して、名前の中のユニークな文字数をカウントします。kotlinfun String.countDistinctCharacters() = lowercase().toList().distinct().count() fun main() { // 入力値を読み取る println("Hello, enter your name:") val name = readln() // 名前の文字数をカウントする name.replace(" ", "").let { println("Your name contains ${it.length} letters") // ユニークな文字数を出力する println("Your name contains ${it.countDistinctCharacters()} unique letters") } }アプリケーションを実行します。
名前を入力して結果を確認します。

Gradle を使用する
このセクションでは、Gradle を使用して手動で Kotlin/Native アプリケーションを作成する方法を学びます。Gradle は Kotlin/Native および Kotlin マルチプラットフォームプロジェクトのデフォルトのビルドシステムであり、Java、Android、その他のエコシステムでも一般的に使用されています。
Kotlin/Native プロジェクトをビルドする際、Kotlin Gradle プラグインは以下のアーティファクトをダウンロードします。
- メインの Kotlin/Native バンドル。これには
konanc、cinterop、jsinteropなどのさまざまなツールが含まれています。デフォルトでは、Kotlin/Native バンドルは単純な Gradle 依存関係として Maven Central リポジトリからダウンロードされます。 llvmなど、konanc自体に必要な依存関係。これらはカスタムロジックを使用して JetBrains の CDN からダウンロードされます。
メインバンドルのダウンロードソースは、Gradle ビルドスクリプトの repositories {} ブロックで変更できます。
プロジェクトファイルの作成
まず、互換性のあるバージョンの Gradle をインストールします。利用可能な Gradle バージョンと Kotlin Gradle プラグイン (KGP) の互換性を確認するには、互換性表を参照してください。
空のプロジェクトディレクトリを作成します。その中に、以下の内容で
build.gradle(.kts)ファイルを作成します。kotlin// build.gradle.kts import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { kotlin("multiplatform") version "2.3.0" } repositories { // メインバンドルをダウンロードするソースを指定 // デフォルトでは Maven Central が使用される mavenCentral() } kotlin { macosArm64() // macOS の場合 // linuxArm64() // Linux の場合 // mingwX64() // Windows の場合 targets.withType<KotlinNativeTarget>().configureEach { binaries { executable() } } } tasks.withType<Wrapper> { gradleVersion = "9.0.0" distributionType = Wrapper.DistributionType.BIN }groovy// build.gradle import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { id 'org.jetbrains.kotlin.multiplatform' version '2.3.0' } repositories { // メインバンドルをダウンロードするソースを指定 // デフォルトでは Maven Central が使用される mavenCentral() } kotlin { macosArm64() // macOS の場合 // linuxArm64() // Linux の場合 // mingwX64() // Windows の場合 targets.withType(KotlinNativeTarget).configureEach { binaries { executable() } } } wrapper { gradleVersion = '9.0.0' distributionType = 'BIN' }コードをコンパイルするターゲットを定義するために、
macosArm64、iosArm64、linuxArm64、mingwX64などの異なるターゲット名を使用できます。 ターゲット名は、プロジェクト内のソースパスやタスク名を生成するために使用されます。プロジェクトディレクトリに空の
settings.gradle(.kts)ファイルを作成します。src/nativeMain/kotlinディレクトリを作成し、その中に以下の内容のhello.ktファイルを作成します。kotlinfun main() { println("Hello, Kotlin/Native!") }
慣例により、すべてのソースは src/<platform name>[Main|Test]/kotlin ディレクトリに配置されます。ここで Main はソースコード用、Test はテスト用です。この場合、<platform name> は native です。
プロジェクトのビルドと実行
プロジェクトのルートディレクトリから、使用するターゲットの
<yourTargetName>Binariesビルドコマンドを実行します。例えば:bash./gradlew macosArm64Binariesこのコマンドは、
build/bin/<yourTargetName>ディレクトリを作成し、その中にdebugExecutableとreleaseExecutableの 2 つのディレクトリを作成します。これらには対応するバイナリファイルが含まれています。デフォルトでは、バイナリファイルの名前はプロジェクトディレクトリと同じになります。
プロジェクトを実行するには、使用するターゲットの
build/bin/<yourTargetName>/debugExecutable/<project_name>.kexeコマンドを実行します。例えば:bashbuild/bin/macosArm64/DebugExecutable/hello.kexe
ターミナルに "Hello, Kotlin/Native!" と表示されます。
IDE でプロジェクトを開く
これで、Gradle をサポートする任意の IDE でプロジェクトを開くことができます。IntelliJ IDEA を使用する場合:
- File | Open を選択します。
- プロジェクトディレクトリを選択して Open をクリックします。 IntelliJ IDEA は、それが Kotlin/Native プロジェクトであるかどうかを自動的に検出します。
プロジェクトに問題が発生した場合、IntelliJ IDEA は Build タブにエラーメッセージを表示します。
コマンドラインコンパイラを使用する
このセクションでは、コマンドラインツールの Kotlin コンパイラを使用して Kotlin/Native アプリケーションを作成する方法を学びます。
コンパイラのダウンロードとインストール
コンパイラをインストールするには:
Kotlin の GitHub リリース ページに移動し、Assets セクションまでスクロールします。
名前に
kotlin-nativeが含まれているファイルを探し、使用しているオペレーティングシステムに適したものをダウンロードします(例:kotlin-native-prebuilt-linux-x86_64-2.3.0.tar.gz)。アーカイブを任意のディレクトリに展開します。
シェルのプロファイルを開き、コンパイラの
/binディレクトリへのパスをPATH環境変数に追加します。bashexport PATH="/<path to the compiler>/kotlin-native/bin:$PATH"
コンパイラの出力には依存関係や仮想マシンの要件はありませんが、コンパイラ自体には Java 1.8 以上のランタイムが必要です。JDK 8 (JAVA SE 8) 以降のバージョンでサポートされています。
プログラムの作成
作業ディレクトリを選択し、hello.kt という名前のファイルを作成します。以下のコードで更新してください。
fun main() {
println("Hello, Kotlin/Native!")
}コンソールからのコードのコンパイル
アプリケーションをコンパイルするには、ダウンロードしたコンパイラを使用して次のコマンドを実行します。
kotlinc-native hello.kt -o hello-o オプションの値は出力ファイルの名前を指定します。そのため、この呼び出しは macOS および Linux では hello.kexe バイナリファイルを(Windows では hello.exe を)生成します。
利用可能なオプションの全リストについては、Kotlin コンパイラオプションを参照してください。
プログラムの実行
プログラムを実行するには、コマンドラインツールでバイナリファイルが含まれているディレクトリに移動し、次のコマンドを実行します。
./hello.kexe./hello.exeアプリケーションが標準出力に "Hello, Kotlin/Native" を出力します。
次のステップ
- ネイティブ HTTP クライアントを作成し C ライブラリと相互運用する方法を説明した C 相互運用と libcurl を使用したアプリの作成 チュートリアルを完了してください。
- 実際の Kotlin/Native プロジェクト向けに Gradle ビルドスクリプトを作成する方法について学んでください。
- ドキュメントで Gradle ビルドシステムについてさらに詳しく読んでください。
