Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

KotlinJSって正直どうなん

2,150 views

Published on

夏のKotlin LT祭 https://kotlin.connpass.com/event/61427/ で発表した(する)ものです。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

KotlinJSって正直どうなん

  1. 1. KotlinJSって正直どうなん @kikuchy
  2. 2. 現状厳しい
  3. 3. 以上
  4. 4. 以上
  5. 5. Who? @kikuchy 菊池紘 株式会社Diverse (ミクシィグループ) コンソールアプリとかJavaFxアプリもKotlinで書くと便利
  6. 6. ガッツリ使ってるわけではないので、その辺 りはご了承ください
  7. 7. KotlinJS使ってる方
  8. 8. とりあえずのはじめ方
  9. 9. おもむろにIntelliJで新規プロジェクトを作ります ※Gradleを使った方法でいきます。他にもやり方はあります。
  10. 10. Group ID, Artifact ID, Versionを指定します Versionはnpmで使用できる表記に変更しておくこと。  1.0-SNAPSHOT のままだとnpmが使用できません。
  11. 11. おもむろにコードを書きます
  12. 12.  compileKotlin2JS タスクを実行すると出来上がり 実行においては kotlin.js が必要らしいけれど吐いてくれない…
  13. 13. nodeで動くプログラムを作ってみる
  14. 14. npmを使えるようにする  kotlin-frontend-plugin が必要なので入れる。 https://github.com/Kotlin/kotlin‑frontend‑plugin Readme通りに導入すれば大丈夫。
  15. 15.  moduleKind を commonjs にする // build.gradle に以下を追加 compileKotlin2Js { kotlinOptions.moduleKind = "commonjs" } 吐かれるコードがcommonjsで使える形になる。 詳しくはこちら Working with Kotlin and JavaScript Modules
  16. 16. npmのパッケージを記入 // build.gradle に以下を追加 kotlinFrontend { npm { dependency("colors", "^1.1.2") // バージョン指定しない場合は以下でも可 // dependency "colors" } }
  17. 17. パッケージの関数などを参照(その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!!'));
  18. 18. パッケージの関数などを参照(その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!!'));
  19. 19. コンパイルして動かす $ ./gradlew compileKotlin2Js $ node build/classes/main/{モジュール名}_main.js
  20. 20. 使ってみて思うこと
  21. 21. 思うこと Pros 個人開発にもチーム開発にも対応できるKotlin文法 Cons nodeアプリ作るなら 使えるライブラリ豊富だし強力だしJavaの方がいい 「どうしてもnodeじゃないとできない!」ってあるのか…? Webのフロント書くなら すでに型定義ファイルたくさんあるしnpmとの統合も簡単だし TypeScriptの方がいい
  22. 22. KotlinJS、どうして使う? サーバサイド、スマートフォンアプリとロジックの一部を共有する ‑> Null安全なAltJSとして使う ‑> どうしてもKotlinを使いたいから使う ‑>
  23. 23. KotlinJS、どうして使う? サーバサイド、スマートフォンアプリとロジックの一部を共有する ‑> Javaの資産使えないので正直厳しい Null安全なAltJSとして使う ‑> TypeScriptとか優秀なAltJSがある どうしてもKotlinを使いたいから使う ‑>
  24. 24. 立ち位置が微妙!!! エコシステムが弱い!!!
  25. 25. ちょっと業務には使えない…
  26. 26. 今後のKotlinJSの発展に期待 がんばれKotlin 負けるなKotlin

×