kotlinjsって正直どうなん
TRANSCRIPT
KotlinJSって正直どうなん
@kikuchy
現状厳しい
以上
以上
Who?
@kikuchy
菊池 紘
株式会社Diverse (ミクシィグループ)
コンソールアプリとかJavaFxアプリもKotlinで書くと便利
ガッツリ使ってるわけではないので、その辺りはご了承ください
KotlinJS使ってる方
とりあえずのはじめ方
おもむろにIntelliJで新規プロジェクトを作ります
※Gradleを使った方法でいきます。他にもやり方はあります。
Group ID, Artifact ID, Versionを指定します
Versionはnpmで使用できる表記に変更しておくこと。
1.0-SNAPSHOT のままだとnpmが使用できません。
おもむろにコードを書きます
compileKotlin2JS タスクを実行すると出来上がり
実行においては kotlin.js が必要らしいけれど吐いてくれない…
nodeで動くプログラムを作ってみる
npmを使えるようにする
kotlin-frontend-plugin が必要なので入れる。
https://github.com/Kotlin/kotlin‑frontend‑plugin
Readme通りに導入すれば大丈夫。
moduleKind を commonjs にする
// build.gradle に以下を追加compileKotlin2Js { kotlinOptions.moduleKind = "commonjs"}
吐かれるコードがcommonjsで使える形になる。
詳しくはこちら Working with Kotlin and JavaScript Modules
npmのパッケージを記入
// build.gradle に以下を追加kotlinFrontend { npm { dependency("colors", "̂1.1.2") // バージョン指定しない場合は以下でも可 // dependency "colors" }}
パッケージの関数などを参照(その1)
型の恩恵を受けられるのでおすすめ。
@JsModule はいろんな使い方があるのでドキュメントを見るべしJavaScript Modules
@JsModule("colors/safe")external object Colors { fun rainbow(message: String): String}...println(Colors.rainbow("Hello KotlinJS World!!"))
// 上記のKotlinコードで、以下のCommonJsコード相当になる// var colors = require('colors/safe');// console.log(colors.rainbow('Hello KotlinJS World!!'));
パッケージの関数などを参照(その2)
型宣言が面倒くさいときとか、ちょっと試すとき用に。
external fun require(module: String): dynamic...val colors = require("colors/safe")println(colors.rainbow("Hello Another KotlinJS World!!"))
// 上記のKotlinコードでも、以下のCommonJsコード相当になる// var colors = require('colors/safe');// console.log(// colors.rainbow('Hello Another KotlinJS World!!'));
コンパイルして動かす
$ ./gradlew compileKotlin2Js$ node build/classes/main/{モジュール名}_main.js
使ってみて思うこと
思うこと
Pros
個人開発にもチーム開発にも対応できるKotlin文法
Cons
nodeアプリ作るなら使えるライブラリ豊富だし強力だしJavaの方がいい
「どうしてもnodeじゃないとできない!」ってあるのか…?
Webのフロント書くならすでに型定義ファイルたくさんあるしnpmとの統合も簡単だしTypeScriptの方がいい
KotlinJS、どうして使う?
サーバサイド、スマートフォンアプリとロジックの一部を共有する
‑>
Null安全なAltJSとして使う‑>
どうしてもKotlinを使いたいから使う‑>
KotlinJS、どうして使う?
サーバサイド、スマートフォンアプリとロジックの一部を共有する
‑> Javaの資産使えないので正直厳しい
Null安全なAltJSとして使う‑> TypeScriptとか優秀なAltJSがある
どうしてもKotlinを使いたいから使う‑>
立ち位置が微妙!!!
エコシステムが弱い!!!
ちょっと業務には使えない…
今後のKotlinJSの発展に期待がんばれKotlin負けるなKotlin