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
Kotlin Native 完全に理解した pic.twitter.com/Syisqfw4r0
— kimihiro_n (@kimihiro_n) October 17, 2018
お疲れ様でした。
ちなみに Kotlin 1.3 から main の引数が不要になったので、
fun main() {
println("Hello Kotlin/Native!")
}
のようにしてもちゃんと動いてくれました。Java っぽさが消えましたね。
Kotlin 1.3 や Ktor 1.0 の正式リリース楽しみですね。
Native でもウェブサーバー作れるようになったらまた試してみたいです。