目次
Kotlin Native の基本のチュートリアルを日本語で記述しました。
環境
- Kotlin/Native 0.9.3
- macOS High Sierra 10.13.6
コンパイラの取得
Kotlin/Native は、 macOS, Linux そして Windows で利用可能です。 OS ごとに異なるコンパイラを使います。 クロスコンパイルが可能で、 ひとつのプラットフォームで他のプラットフォーム向けのコンパイルができますが、 この最初のチュートリアルでは実行中の OS 向けのコンパイルをやってみます。 環境は macOS を使用します。
GitHub のリリースページから最新のコンパイラを取得できます。
コンパイラをダウンロードしたら、 好きな場所 (例: ~/kotlin-native
) で展開します。 便宜上 bin
フォルダ をシステムパスに設定しておくと、 コンパイラをどこからでも実行できます。 もし ~/kotlin-native
として展開したのであれば、 bin
ディレクトリは ~/kotlin-native/bin
です。
コンパイラによる出力は他のライブラリ等には依存していませんが、 コンパイラそのものの実行には Java 8 が必要です。 もし macOS を使っている場合は、 Xcode をインストールすると自動的にインストールされる macOS SDK も必要です。
Hello Kotlin
最初のアプリケーションは、 シンプルにテキストを標準出力に出力するものです。
好きな IDE, Editor を開いて次のコードを記述します。
1 2 3 |
fun main(args: Array<String>) { println("Hello Kotlin/Native!") } |
コンパイルと出力の検証
Kotlin のコンパイラは複数のプラットフォーム向けにコンパイルするために、 LLVM という技術を使っています。 LLVM は中間表現(IR)を入力として要求します。 このIRは、ビットストリームファイル形式で表されるビットコードファイルです。
ソースコードが Kotlin のコンパイラによって LLVM IR に変換され、 それが更に LLVM によって実行ファイルに変換されます。
では、上のプログラムをコンパイルします。 bin
ディレクトリ を正しく path に追加していれば 次のようにしてコンパイルできます。
1 |
kotlinc-native hello.kt |
コンパイラの初回実行時は必要なコンポーネントのダウンロードも行いますので、初回のコンパイルは時間がかかります。 私の環境でも、ダウンロードが行われ、下のように出力されました(ユーザ名は user_name としています)。
1 2 3 4 5 |
Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler. Downloading dependency: https://download.jetbrains.com/kotlin/native/libffi-3.2.1-2-darwin-macos.tar.gz (27.6 kiB/27.6 kiB). Done. Extracting dependency: /Users/user_name/.konan/cache/libffi-3.2.1-2-darwin-macos.tar.gz into /Users/user_name/.konan/dependencies Downloading dependency: https://download.jetbrains.com/kotlin/native/clang-llvm-6.0.1-darwin-macos.tar.gz (422.6 MiB/422.6 MiB). Done. Extracting dependency: /Users/user_name/.konan/cache/clang-llvm-6.0.1-darwin-macos.tar.gz into /Users/user_name/.konan/dependencies |
全てがうまく実行されると、 program.kexe
というファイルが作成されます。 このファイルはターゲットプラットフォーム向けに生成されたバイナリファイルです。 Kotlin/Native のコンパイラではいくつかのオプションを利用することができ、 -output
(または -o
) オプションを使うとファイル名を指定できます。 例えば次のようにすると、 first.kexe
が生成されます。
1 |
kotlinc-native -o first hello.kt |
拡張子は設定できず、ターゲットプラットフォームに応じて自動設定されます。 もちろん OS の備えているコマンドを使って、 実行ファイル自体は好きな名前に変更できます。
アプリケーションの実行
アプリケーションを実行するには、次のコマンドを実行します。
1 |
./program.kexe |
ネイティブアプリケーションですから、ランタイムや仮想マシンは必要ありません。 上のプログラムの出力は次のようになります。
1 |
Hello Kotlin/Native! |