LoginSignup
8
4

More than 5 years have passed since last update.

KotlinNative で HelloWorld する

Last updated at Posted at 2018-10-17

Kotlin 1.3

Kotlin 1.3 が発表されて KotlinNative がベータ版として同梱するようになりました。
今までは JVM とか JavaScript といった環境でしか動かなかったものが、KotlinNative ではバイナリとしてOSから直接動かせるようになります。JVM に依存しなくなるので iOS アプリも Kotlin で作れるようになるのではと話題になっています。マルチプラットフォーム開発の本命となるのか気になりますね。

サーバーサイド KotlinNative

ネイティブ化する恩恵はアプリだけでなく、サーバーとして動くプログラムでもえられます。JVM は仮想マシンの一種なのでアプリケーションの立ち上げに時間がかかってしまったり、ディスク・メモリの容量を余分に食ってしまったり、という欠点があります。しかし KotlinNative でバイナリとしてアプリケーションを生成できるようになれば、このオーバーヘッドなしに動かすことができるようになります。Docker 化するときもイメージが作りやすくなりそうですね。
また、Kotlin 1.3 から Coroutines が使えるようになったのでノンブロッキングなウェブサーバーを作れるようになりました。外部の通信やファイルの入出力などを CPU で待たずに処理できるようになるので、非常に効率よくリクエストを捌けるようになります。Kotlin の非同期ウェブフレームワーク ktor も 1.0.0 としてそろそろ正式リリースされるそうなので、これは是非試してみたいと思いました。
Python より型が厳密で、Goより取っつきやすい言語(※個人差があります)なので、もしかしたら一気に流行るのではと期待しています。

HelloWorld する

今回は KotlinNative で Ktor を動かすところまで試そうと思ったのですが、まだ KotlinNative にフレームワークが対応していなかったり、そもそも自分で他の Kotlin ライブラリを導入するところで躓いたので、とりあえず HelloWorld までをまとめてみました。

GitHub: Kotlin Native Support #571 - https://github.com/ktorio/ktor/issues/571

検証環境

  • OS: Ubuntu 16.04
    • (Windows10 WSL上で実行)

Kotlin のインストール

完全に Kotlin 1.3 がリリースされた気でいましたがまだでした…。(2018/10/17現在)
なので Github から直接落としてきます。
(リリース後は SDKMan を入れて sdk install kotlin で入るそうです)

# ダウンロード
cd /tmp
wget https://github.com/JetBrains/kotlin-native/releases/download/v0.9.3/kotlin-native-linux-0.9.3.tar.gz
tar -zxvf kotlin-native-linux-0.9.3.tar.gz

# 設置してパスを通す (場所はお好みで)
sudo mv kotlin-native-linux-0.9.3 /opt/
export PATH=$PATH:/opt/kotlin-native-linux-0.9.3/bin

kotlinc-native というコマンドが使えるようになってればインストール完了です。別途 Java が使えるようになってる必要があるかもしれません。

HelloWorld する

fun main(args: Array<String>) {
    println("Hello Kotlin/Native!")
}

KotlinNative の公式ページから HelloWorld のサンプルを コピペ 心をこめて手打ちします。

# コンパイル
kotlinc-native hello.kt -o hello

# 実行!!
./hello.kexe

:clap: :clap: お疲れ様でした。:clap: :clap:

ちなみに Kotlin 1.3 から main の引数が不要になったので、

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

のようにしてもちゃんと動いてくれました。Java っぽさが消えましたね。

Kotlin 1.3 や Ktor 1.0 の正式リリース楽しみですね。
Native でもウェブサーバー作れるようになったらまた試してみたいです。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4