pvcresin's blog

memo=メモ

Kotlin/Native v0.3がWin対応したので触ってみた

はじめに

全ての道はKotlinに通ず

つい先日,Kotlin/Nativeがv0.3になってwindowsで動くようになったらしい. blog.jetbrains.com 触るしか無い…!

はじめに結果を言っとくと,サンプルを動かしてウィンドウが出せたよ f:id:pvcresin:20170624012016p:plain

準備

環境はwindows10 64bit.
上のリンクからx86-64 Windows用のzipを落としてきて解凍する.
中はこんな感じ
f:id:pvcresin:20170624011856p:plain
このbinにPATHを通す.(再起動も忘れずに)

何となくコマンドプロンプト(以下cmd)でkotlincと打つと,
Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
なるほど.はじめは何か落としてくるのか.350MBだったので,まぁまぁ待った.
色々落としてきてる様子がコンソールに流れて,終わったと思ったら最後に
error: you have not specified any compilation arguments. No output has been produced.
怒られた.まぁそうだよね.kotlinc のあとファイル指定してないし.

よしこれで準備OK!

README.mdとか読みながら動かしていくぞ

exeを書き出してみる

hello.ktを作成

fun main(args: Array<String>) {
  for (i in 0 until 10000) {
    println("hello kotlin native :$i")
  }
}

cmdでコンパイルタイム!
README.md によるとkotlinc hello.kt -o helloって書いてあったけど,
これだと怒られるので,kotlinc-native hello.kt -o helloってやったらhello.exeとhello.kt.bcが出来た.
exeをクリックして実行すると文字が流れる.OK!

win32APIを使ってウィンドウを生成する

これが本番.同封されているサンプルにwin32というのがあるのでこれを動かす
サンプルからコードをコピってくる

hello.kt

import win32.*

fun main(args: Array<String>) {
    MessageBoxW(null, "Konan говорит:\nЗДРАВСТВУЙ МИР!\n",
            "Заголовок окна", MB_YESNOCANCEL or MB_ICONQUESTION)
}

キリル文字が並んでる~と思ったら,あ~JetBrainsはロシアだったね

サンプルからwin32.defもコピってきて,コマンドを打つ
cinterop -def win32.def -o win32
数分かかったが,win32-buildというフォルダとwin32.klibができた. これでライブラリの準備が出来たっぽい
ちなみにklibはv0.3から出来たライブラリのフォーマットらしい.

kotlinc-native hello.kt -library win32 -o hello
コンパイルして,出来たhello.exeをクリックすると~

f:id:pvcresin:20170624012016p:plain

すごい.どことなくウイルスみたいに見えるけど,サンプル動いた.おわり!

おわりに

ここからは独り言なんだけど,Kotlinすごい(自分の周りで騒いでる人いなくて悲しいんだけど)

JVMで実行できて,JSへの変換も公式になって,Nativeにも書き出せて,Android開発の公式言語になった
コミュニティのロゴとかも出来たね
Cとかの代わりになるってことでいいのかな?この流れで行くとWebAssemblyまで手を出しそうだ.というか出すんじゃないかな

あと,今回のv0.3でAndroidのnative activitiesに対応したらしい
こっちは試してないけど,C++とか書いてJavaやKotlinから呼び出すみたいな今までの開発をしなくても,KotlinでNativeになる時代が本当に来たのか~と思うと目から汁が出る

KotlinでDSL作って,HTMLとかJSとか全部Kotlinで書くみたいなプロジェクトが確かあったと思うけど,ホントにKotlinでなんでもかける時代が来るのかもしれない
Kotlin/Nativeが出たときに組み込みとかiOSアプリとかも作れるようにしたいって言ってたけど,もしかしたらKotlinでAndroidiOSの両方開発みたいなReactNativeとかXamarinみたいなのもできるようになるのか(胸熱)
まぁでもKotlinでJS書くの結構,頭切り替えなきゃいけないし,そこら辺の差をなくすのはまだまだ無理だろうな

こんなにいろんなことが出来るよって裾野広げて,開発チームは大丈夫なのかといらぬ心配をしてしまう
とにかくKotlinの今後にますます注目~