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のどちらも使用できます。
プロジェクトを作成する
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 Multiplatform Gradleプラグインが必要です。最新のKotlinバージョンを使用していることを確認してください。none[versions] kotlin = "2.1.21"
Gradleファイルのリロードの提案に従います。
これらの設定の詳細については、Multiplatform Gradle DSLリファレンスを参照してください。
アプリケーションをビルドして実行する
src/nativeMain/kotlin/
ディレクトリにあるMain.kt
ファイルを開きます。
src
ディレクトリにはKotlinソースファイルが含まれています。Main.kt
ファイルには、println()
関数を使用して「Hello, Kotlin/Native!」と出力するコードが含まれています。
ガターにある緑色のアイコンを押してコードを実行します。
IntelliJ IDEAはGradleタスクを使用してコードを実行し、結果をRunタブに出力します。
初回実行後、IDEは上部に該当する実行構成を作成します。
NOTE
IntelliJ IDEA Ultimateユーザーは、コンパイルされたネイティブ実行可能ファイルのデバッグを可能にし、インポートされたKotlin/Nativeプロジェクトの実行構成を自動的に作成するNative Debugging Supportプラグインをインストールできます。
プロジェクトを自動的にビルドするように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 { //... nativeTarget.apply { binaries { executable { entryPoint = "main" runTask?.standardInput = System.`in` } } } //... }
{initial-collapse-state="collapsed" collapsible="true" collapsed-title="runTask?.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 Multiplatformプロジェクトのデフォルトのビルドシステムであり、Java、Android、その他のエコシステムでも一般的に使用されています。
プロジェクトファイルを作成する
まず、互換性のあるバージョンのGradleをインストールします。互換性テーブルを参照して、利用可能なGradleバージョンとKotlin Gradleプラグイン(KGP)の互換性を確認してください。
空のプロジェクトディレクトリを作成します。その中に、以下の内容で
build.gradle(.kts)
ファイルを作成します。
// 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`です。プラットフォーム名は、プロジェクト内のソースパスとタスク名を生成するために使用されます。
プロジェクトディレクトリに空の
settings.gradle(.kts)
ファイルを作成します。src/nativeMain/kotlin
ディレクトリを作成し、その中に以下の内容でhello.kt
ファイルを配置します。kotlinfun main() { println("Hello, Kotlin/Native!") }
慣例により、すべてのソースはsrc/<target name>[Main|Test]/kotlin
ディレクトリに配置されます。ここでMain
はソースコード用、Test
はテスト用です。<target name>
は、ビルドファイルで指定されたターゲットプラットフォーム(この場合はnative
)に対応します。
プロジェクトをビルドして実行する
プロジェクトのルートディレクトリから、ビルドコマンドを実行します。
bash./gradlew nativeBinaries
このコマンドは
build/bin/native
ディレクトリを作成し、その中にdebugExecutable
とreleaseExecutable
の2つのディレクトリを作成します。これらには対応するバイナリファイルが含まれています。デフォルトでは、バイナリファイルの名前はプロジェクトディレクトリと同じになります。
プロジェクトを実行するには、次のコマンドを実行します。
bashbuild/bin/native/debugExecutable/<project_name>.kexe
ターミナルに「Hello, Kotlin/Native!」と表示されます。
IDEでプロジェクトを開く
これで、Gradleをサポートする任意のIDEでプロジェクトを開くことができます。IntelliJ IDEAを使用している場合は、次の手順を実行します。
File | Openを選択します。
プロジェクトディレクトリを選択し、Openをクリックします。
IntelliJ IDEAは、それがKotlin/Nativeプロジェクトであるかどうかを自動的に検出します。
プロジェクトに問題が発生した場合、IntelliJ IDEAはBuildタブにエラーメッセージを表示します。
コマンドラインコンパイラを使用する
このセクションでは、コマンドラインツールでKotlinコンパイラを使用してKotlin/Nativeアプリケーションを作成する方法を学びます。
コンパイラをダウンロードしてインストールする
コンパイラをインストールするには:
KotlinのGitHubリリースページにアクセスします。
名前に
kotlin-native
を含むファイルを探し、ご使用のオペレーティングシステムに適したものをダウンロードします。例えば、kotlin-native-prebuilt-linux-x86_64-2.0.21.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, Kotlin/Native」と表示します。
次のステップ
- ネイティブHTTPクライアントを作成し、Cライブラリと連携する方法を説明するCインターロップとlibcurlを使用したアプリの作成チュートリアルを完了します。
- 実際のKotlin/NativeプロジェクトのGradleビルドスクリプトを作成する方法を学びます。
- ドキュメントでGradleビルドシステムについてさらに詳しく読みます。