メインコンテンツまでスキップ

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の両方を使用できます。

プロジェクトを作成する

  1. IntelliJ IDEAの最新バージョンをダウンロードしてインストールします。

  2. IntelliJ IDEAでFile | New | Project from Version Controlを選択し、次のURLを使用して、プロジェクトテンプレートをクローンします。

    https://github.com/Kotlin/kmp-native-wizard
  3. プロジェクト依存関係のバージョンカタログであるgradle/libs.versions.tomlファイルを開きます。Kotlin/Nativeアプリケーションを作成するには、Kotlin Multiplatform Gradleプラグインが必要です。このプラグインのバージョンはKotlinと同じです。最新のKotlinバージョンを使用していることを確認してください。

    [versions]
    kotlin = "2.1.20"
  4. Gradleファイルをリロードする提案に従います。

    Gradleの変更をロードするボタン

これらの設定の詳細については、Multiplatform Gradle DSL referenceを参照してください。

アプリケーションをビルドして実行する

src/nativeMain/kotlin/ディレクトリにあるMain.ktファイルを開きます。

  • srcディレクトリには、Kotlinソースファイルが含まれています。
  • Main.ktファイルには、println()関数を使用して「Hello, Kotlin/Native!」を出力するコードが含まれています。

gutterにある緑色のアイコンを押して、コードを実行します。

アプリケーションの実行

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

アプリケーションの出力

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

Gradle実行構成
注記

IntelliJ IDEA Ultimateユーザーは、コンパイルされたネイティブ実行可能ファイルをデバッグできるNative Debugging Supportプラグインをインストールできます。また、インポートされたKotlin/Nativeプロジェクトの実行構成を自動的に作成します。

プロジェクトを自動的にビルドするようにIntelliJ IDEAを構成できます。

  1. Settings | Build, Execution, Deployment | Compilerに移動します。
  2. Compilerページで、Build project automaticallyを選択します。
  3. 変更を適用します。

これで、クラスファイルを変更したり、ファイルを保存したりすると(Ctrl + S/Cmd + S)、IntelliJ IDEAはプロジェクトのインクリメンタルビルドを自動的に実行します。

アプリケーションを更新する

名前の文字数をカウントする機能をアプリケーションに追加しましょう。

  1. Main.ktファイルで、入力を読み取るコードを追加します。readln()関数を使用して入力値を読み取り、name変数に割り当てます。

    fun main() {
    // Read the input value.
    println("Hello, enter your name:")
    val name = readln()
    }
  2. Gradleを使用してこのアプリを実行するには、build.gradle.ktsファイルで使用する入力としてSystem.inを指定し、Gradleの変更をロードします。

    kotlin {
    //...
    nativeTarget.apply {
    binaries {
    executable {
    entryPoint = "main"
    runTask?.standardInput = System.`in`
    }
    }
    }
    //...
    }
  3. 空白を削除し、文字をカウントします。

    • replace()関数を使用して、名前の空白を削除します。
    • スコープ関数letを使用して、オブジェクトコンテキスト内で関数を実行します。
    • 文字列テンプレートを使用して、ドル記号$を追加し、中括弧で囲んで${it.length}のようにすることで、名前の長さを文字列に挿入します。itラムダパラメーターのデフォルト名です。
    fun main() {
    // Read the input value.
    println("Hello, enter your name:")
    val name = readln()
    // Count the letters in the name.
    name.replace(" ", "").let {
    println("Your name contains ${it.length} letters")
    }
    }
  4. アプリケーションを実行します。

  5. 名前を入力して、結果をお楽しみください。

    アプリケーションの出力

次に、名前の一意の文字のみをカウントしましょう。

  1. Main.ktファイルで、Stringの新しい拡張関数.countDistinctCharacters()を宣言します。

    • lowercase()関数を使用して、名前を小文字に変換します。
    • toList()関数を使用して、入力文字列を文字のリストに変換します。
    • distinct()関数を使用して、名前の一意の文字のみを選択します。
    • count()関数を使用して、一意の文字をカウントします。
    fun String.countDistinctCharacters() = lowercase().toList().distinct().count()
  2. .countDistinctCharacters()関数を使用して、名前の一意の文字をカウントします。

    fun String.countDistinctCharacters() = lowercase().toList().distinct().count()

    fun main() {
    // Read the input value.
    println("Hello, enter your name:")
    val name = readln()
    // Count the letters in the name.
    name.replace(" ", "").let {
    println("Your name contains ${it.length} letters")
    // Print the number of unique letters.
    println("Your name contains ${it.countDistinctCharacters()} unique letters")
    }
    }
  3. アプリケーションを実行します。

  4. 名前を入力して、結果を確認します。

    アプリケーションの出力

Gradleを使用する

このセクションでは、Gradleを使用してKotlin/Nativeアプリケーションを手動で作成する方法を学習します。これはKotlin/NativeおよびKotlin Multiplatformプロジェクトのデフォルトのビルドシステムであり、Java、Android、その他のエコシステムでも一般的に使用されています。

プロジェクトファイルを作成する

  1. まず、互換性のあるバージョンのGradleをインストールします。互換性表を参照して、利用可能なGradleバージョンとのKotlin Gradle plugin (KGP)の互換性を確認してください。

  2. 空のプロジェクトディレクトリを作成します。その中に、次の内容のbuild.gradle(.kts)ファイルを作成します。

    // build.gradle.kts
    plugins {
    kotlin("multiplatform") version "2.1.20"
    }

    repositories {
    mavenCentral()
    }

    kotlin {
    macosArm64("native") { // on macOS
    // linuxArm64("native") // on Linux
    // mingwX64("native") // on Windows
    binaries {
    executable()
    }
    }
    }

    tasks.withType<Wrapper> {
    gradleVersion = "8.10"
    distributionType = Wrapper.DistributionType.BIN
    }

    macosArm64iosArm64linuxArm64mingwX64などのさまざまなターゲット名を使用して、コードのコンパイル対象を定義できます。これらのターゲット名は、オプションでプラットフォーム名をパラメーターとして受け取ることができます。この場合、プラットフォーム名はnativeです。プラットフォーム名は、プロジェクト内のソースパスとタスク名を生成するために使用されます。

  3. プロジェクトディレクトリに空のsettings.gradle(.kts)ファイルを作成します。

  4. src/nativeMain/kotlinディレクトリを作成し、その中に次の内容のhello.ktファイルを配置します。

    fun main() {
    println("Hello, Kotlin/Native!")
    }

慣例により、すべてのソースはsrc/<target name>[Main|Test]/kotlinディレクトリにあります。Mainはソースコード用、Testはテスト用です。<target name>は、ビルドファイルで指定されているターゲットプラットフォーム(この場合はnative)に対応します。

プロジェクトをビルドして実行する

  1. ルートプロジェクトディレクトリから、ビルドコマンドを実行します。

    ./gradlew nativeBinaries

    このコマンドは、build/bin/nativeディレクトリを作成し、その中にdebugExecutablereleaseExecutableの2つのディレクトリを作成します。これらには、対応するバイナリファイルが含まれています。

    デフォルトでは、バイナリファイルの名前はプロジェクトディレクトリと同じです。

  2. プロジェクトを実行するには、次のコマンドを実行します。

    build/bin/native/debugExecutable/<project_name>.kexe

ターミナルに「Hello, Kotlin/Native!」と表示されます。

IDEでプロジェクトを開く

これで、Gradleをサポートする任意のIDEでプロジェクトを開くことができます。IntelliJ IDEAを使用する場合:

  1. File | Openを選択します。
  2. プロジェクトディレクトリを選択し、Openをクリックします。 IntelliJ IDEAは、Kotlin/Nativeプロジェクトであるかどうかを自動的に検出します。

プロジェクトに問題が発生した場合、IntelliJ IDEAはBuildタブにエラーメッセージを表示します。

コマンドラインコンパイラーを使用する

このセクションでは、コマンドラインツールでKotlinコンパイラーを使用してKotlin/Nativeアプリケーションを作成する方法を学習します。

コンパイラーをダウンロードしてインストールする

コンパイラーをインストールするには:

  1. KotlinのGitHub releasesページに移動します。

  2. 名前にkotlin-nativeが含まれるファイルを探し、オペレーティングシステムに適したファイル(たとえば、kotlin-native-prebuilt-linux-x86_64-2.0.21.tar.gz)をダウンロードします。

  3. アーカイブを選択したディレクトリに解凍します。

  4. シェルプロファイルを開き、コンパイラーの/binディレクトリへのパスをPATH環境変数に追加します。

    export 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, Kotlin/Native」を標準出力に出力します。

次は何をしますか?