はじめに
全ての道はKotlinに通ず
つい先日,Kotlin/Nativeがv0.3になってwindowsで動くようになったらしい. blog.jetbrains.com 触るしか無い…!
はじめに結果を言っとくと,サンプルを動かしてウィンドウが出せたよ
準備
環境はwindows10 64bit.
上のリンクからx86-64 Windows用のzipを落としてきて解凍する.
中はこんな感じ
この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をクリックすると~
すごい.どことなくウイルスみたいに見えるけど,サンプル動いた.おわり!
おわりに
ここからは独り言なんだけど,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でAndroidとiOSの両方開発みたいなReactNativeとかXamarinみたいなのもできるようになるのか(胸熱)
まぁでもKotlinでJS書くの結構,頭切り替えなきゃいけないし,そこら辺の差をなくすのはまだまだ無理だろうな
こんなにいろんなことが出来るよって裾野広げて,開発チームは大丈夫なのかといらぬ心配をしてしまう
とにかくKotlinの今後にますます注目~