Skip to content

Kotlin/Nativeを始める

このチュートリアルでは、Kotlin/Nativeアプリケーションを作成する方法を学びます。最適なツールを選択し、以下の方法でアプリを作成します。

  • IDE。ここでは、バージョン管理システムからプロジェクトテンプレートをクローンし、IntelliJ IDEAで使用できます。

  • Gradleビルドシステム。内部でどのように動作するかをよりよく理解するために、プロジェクトのビルドファイルを手動で作成します。

  • コマンドラインツール。標準のKotlinディストリビューションの一部として提供されるKotlin/Nativeコンパイラを使用して、コマンドラインツールで直接アプリを作成できます。

    コンソールでのコンパイルは簡単で分かりやすいように見えるかもしれませんが、何百ものファイルやライブラリを持つ大規模なプロジェクトにはうまくスケールしません。そのようなプロジェクトには、IDEまたはビルドシステムの使用をお勧めします。

Kotlin/Nativeでは、Linux、macOS、Windowsなど、さまざまなターゲット向けにコンパイルできます。クロスプラットフォームコンパイル(あるプラットフォームを使用して別のプラットフォーム向けにコンパイルすること)も可能ですが、このチュートリアルでは、コンパイルを行うのと同じプラットフォームをターゲットにします。

NOTE

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を使用してプロジェクトテンプレートをクローンします。

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

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

    Load Gradle changes button

これらの設定の詳細については、Multiplatform Gradle DSLリファレンスを参照してください。

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

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

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

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

Run the application

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

Application output

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

Gradle run configuration

NOTE

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

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

  1. Settings | Build, Execution, Deployment | Compilerに移動します。

  2. Compilerページで、Build project automaticallyを選択します。

  3. 変更を適用します。

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

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

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

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

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

    kotlin
    
    kotlin {
    
        //...
    
        nativeTarget.apply {
    
            binaries {
    
                executable {
    
                    entryPoint = "main"
    
                    runTask?.standardInput = System.`in`
    
                }
    
            }
    
        }
    
        //...
    
    }

    {initial-collapse-state="collapsed" collapsible="true" collapsed-title="runTask?.standardInput = System.in"}

  3. 空白を削除して文字数を数えます。

    • replace()関数を使用して、名前の空白を削除します。

    • スコープ関数letを使用して、オブジェクトコンテキスト内で関数を実行します。

    • 文字列テンプレートを使用して、ドル記号を追加し中括弧で囲むことで、名前の長さを文字列に挿入します – ${it.length}itラムダパラメータのデフォルト名です。

    kotlin
    
    fun main() {
    
        // 入力値を読み込む。
    
        println("Hello, enter your name:")
    
        val name = readln()
    
        // 名前の文字数を数える。
    
        name.replace(" ", "").let {
    
            println("Your name contains ${it.length} letters")
    
        }
    
    }
  4. アプリケーションを実行します。

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

    Application output

次に、名前内の一意の文字のみを数えましょう。

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

    • .lowercase()関数を使用して名前を小文字に変換します。

    • toList()関数を使用して入力文字列を文字のリストに変換します。

    • distinct()関数を使用して名前内の一意の文字のみを選択します。

    • count()関数を使用して一意の文字を数えます。

    kotlin
    
    fun String.countDistinctCharacters() = lowercase().toList().distinct().count()
  2. .countDistinctCharacters()関数を使用して、名前内の一意の文字数を数えます。

    kotlin
    
    fun 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")
    
        }
    
    }
  3. アプリケーションを実行します。

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

    Application output

Gradleを使用する

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

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

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

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

kotlin

    // build.gradle.kts

    plugins {

        kotlin("multiplatform") version "2.1.21"

    }



    repositories {

        mavenCentral()

    }



    kotlin {

        macosArm64("native") {  // macOSの場合

        // linuxArm64("native") // Linuxの場合

        // mingwX64("native")   // Windowsの場合

            binaries {

                executable()

            }

        }

    }



    tasks.withType<Wrapper> {

        gradleVersion = "8.10"

        distributionType = Wrapper.DistributionType.BIN

    }

    ```

```groovy [Groovy]

    // build.gradle

    plugins {

        id 'org.jetbrains.kotlin.multiplatform' version '2.1.21'

    }



    repositories {

        mavenCentral()

    }



    kotlin {

        macosArm64('native') {  // macOSの場合

        // linuxArm64('native') // Linuxの場合

        // mingwX64('native')   // Windowsの場合

            binaries {

                executable()

            }

        }

    }



    wrapper {

        gradleVersion = '8.10'

        distributionType = 'BIN'

    }

    ```
コードをコンパイルするターゲットを定義するために、`macosArm64`、`iosArm64`、`linuxArm64`、`mingwX64`などの異なる[ターゲット名](native-target-support.md)を使用できます。これらのターゲット名は、オプションでプラットフォーム名をパラメータとして受け取ることができます。この場合、プラットフォーム名は`native`です。プラットフォーム名は、プロジェクト内のソースパスとタスク名を生成するために使用されます。
  1. プロジェクトディレクトリに空のsettings.gradle(.kts)ファイルを作成します。

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

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

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

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

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

    bash
    
    ./gradlew nativeBinaries

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

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

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

    bash
    
    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リリースページにアクセスします。

  2. 名前にkotlin-nativeを含むファイルを探し、ご使用のオペレーティングシステムに適したものをダウンロードします。例えば、kotlin-native-prebuilt-linux-x86_64-2.0.21.tar.gzなどです。

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

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

    bash
    
    export PATH="/<path to the compiler>/kotlin-native/bin:$PATH"

コンパイラの出力には依存関係や仮想マシンの要件はありませんが、コンパイラ自体にはJava 1.8以降のランタイムが必要です。これはJDK 8 (JAVA SE 8)以降のバージョンでサポートされています。

:::

プログラムを作成する

作業ディレクトリを選択し、hello.ktというファイルを作成します。以下のコードで更新します。

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

コンソールからコードをコンパイルする

アプリケーションをコンパイルするには、ダウンロードしたコンパイラで次のコマンドを実行します。

bash
kotlinc-native hello.kt -o hello

-oオプションの値は出力ファイルの名前を指定するため、この呼び出しはmacOSおよびLinuxではhello.kexeバイナリファイル(Windowsではhello.exe)を生成します。

利用可能なオプションの完全なリストについては、Kotlinコンパイラオプションを参照してください。

プログラムを実行する

プログラムを実行するには、コマンドラインツールでバイナリファイルがあるディレクトリに移動し、次のコマンドを実行します。

アプリケーションは標準出力に「Hello, Kotlin/Native」と表示します。

次のステップ