kotlinjsって正直どうなん

28
KotlinJS @kikuchy

Upload: hiroshi-kikuchi

Post on 21-Jan-2018

1.827 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: KotlinJSって正直どうなん

KotlinJSって正直どうなん

@kikuchy

Page 2: KotlinJSって正直どうなん

現状厳しい

Page 3: KotlinJSって正直どうなん

以上

Page 4: KotlinJSって正直どうなん

以上

Page 5: KotlinJSって正直どうなん

Who?

@kikuchy

菊池 紘

株式会社Diverse (ミクシィグループ)

コンソールアプリとかJavaFxアプリもKotlinで書くと便利

Page 6: KotlinJSって正直どうなん

ガッツリ使ってるわけではないので、その辺りはご了承ください

Page 7: KotlinJSって正直どうなん

KotlinJS使ってる方

Page 8: KotlinJSって正直どうなん
Page 9: KotlinJSって正直どうなん

とりあえずのはじめ方

Page 10: KotlinJSって正直どうなん

おもむろにIntelliJで新規プロジェクトを作ります

※Gradleを使った方法でいきます。他にもやり方はあります。

Page 11: KotlinJSって正直どうなん

Group ID, Artifact ID, Versionを指定します

Versionはnpmで使用できる表記に変更しておくこと。

 1.0-SNAPSHOT  のままだとnpmが使用できません。

Page 12: KotlinJSって正直どうなん

おもむろにコードを書きます

Page 13: KotlinJSって正直どうなん

 compileKotlin2JS  タスクを実行すると出来上がり

実行においては  kotlin.js  が必要らしいけれど吐いてくれない…

Page 14: KotlinJSって正直どうなん

nodeで動くプログラムを作ってみる

Page 15: KotlinJSって正直どうなん

npmを使えるようにする

 kotlin-frontend-plugin  が必要なので入れる。

https://github.com/Kotlin/kotlin‑frontend‑plugin

Readme通りに導入すれば大丈夫。

Page 16: KotlinJSって正直どうなん

 moduleKind  を  commonjs  にする

// build.gradle に以下を追加compileKotlin2Js { kotlinOptions.moduleKind = "commonjs"}

吐かれるコードがcommonjsで使える形になる。

詳しくはこちら Working with Kotlin and JavaScript Modules

Page 17: KotlinJSって正直どうなん

npmのパッケージを記入

// build.gradle に以下を追加kotlinFrontend { npm { dependency("colors", "̂1.1.2") // バージョン指定しない場合は以下でも可 // dependency "colors" }}

Page 18: KotlinJSって正直どうなん

パッケージの関数などを参照(その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!!'));

Page 19: KotlinJSって正直どうなん

パッケージの関数などを参照(その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!!'));

Page 20: KotlinJSって正直どうなん

コンパイルして動かす

$ ./gradlew compileKotlin2Js$ node build/classes/main/{モジュール名}_main.js

Page 21: KotlinJSって正直どうなん

使ってみて思うこと

Page 22: KotlinJSって正直どうなん

思うこと

Pros

個人開発にもチーム開発にも対応できるKotlin文法

Cons

nodeアプリ作るなら使えるライブラリ豊富だし強力だしJavaの方がいい

「どうしてもnodeじゃないとできない!」ってあるのか…?

Webのフロント書くならすでに型定義ファイルたくさんあるしnpmとの統合も簡単だしTypeScriptの方がいい

Page 23: KotlinJSって正直どうなん

KotlinJS、どうして使う?

サーバサイド、スマートフォンアプリとロジックの一部を共有する

‑>

Null安全なAltJSとして使う‑>

どうしてもKotlinを使いたいから使う‑>

Page 24: KotlinJSって正直どうなん

KotlinJS、どうして使う?

サーバサイド、スマートフォンアプリとロジックの一部を共有する

‑> Javaの資産使えないので正直厳しい

Null安全なAltJSとして使う‑> TypeScriptとか優秀なAltJSがある

どうしてもKotlinを使いたいから使う‑>

Page 25: KotlinJSって正直どうなん

立ち位置が微妙!!!

エコシステムが弱い!!!

Page 26: KotlinJSって正直どうなん

ちょっと業務には使えない…

Page 27: KotlinJSって正直どうなん

今後のKotlinJSの発展に期待がんばれKotlin負けるなKotlin

Page 28: KotlinJSって正直どうなん