10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめに

今回はKotlin/JSについてまとめていきます

Kotlin/JSとは

Kotlin/JS Overview

Kotlin/JSはKotlinのコード、ライブラリ、JSと互換性のある依存関係をトランスパイルする機能を提供します

つまりKotlinで書いたコードがJavaScriptにトランスパイルされるのです。

これはブラウザ上でも動きますし、node.js上でも動きます。

Kotlin最強では???

使用例

こちらも公式ドキュメントに載っています。

Some use case for Kotlin/JS

Webフロント

DOMを作成し、ブラウザAPIやWebAPIを活用できます。
また型安全なReactの開発にも活用できます

サーバーサイド

前述でもあるように、Kotlin/JSはnode.jsで動きます。
なので、サーバー上で実行したりサーバーレスアーキテクチャでの活用も見込めます.

マルチプラットフォーム

Kotlinマルチプラットフォームを使用すると、Kotlin/JSの機能にアクセスできます。

つまりiOS, Android, Webフロントでバックエンド機能(認証やAPI通信など)が共通化できます。

Kotlin最強では?

トランスパイル

Kotlinのコードを直接JavaScriptに置き換えているわけではないそう

KotlinコードをまずはAST(Abstract Syntax Tree)と呼ばれる、意味のない情報を取り除いたものに変換されます。
そしてIRと呼ばれる中間表現へ変換されそこからJavaScriptのコードに変換されるそうです。
現在Kotlin/JVMとKotlin/JSで同じIRに移行しているそうです。
ただKotlin/NativeとKotlin/JSは互いに独立して開発されているため、まだ同じIRを参照するのは難しそう。

使ってみた

Building Web Applications with React and Kotlin/JS

こちらのCodelabでKotlin/JSを使ってReactアプリケーションを作れます。

正直な感想

まぁ便利って感じ。
Kotlinでやる意義が見出せませんでした。

型安全でやりたいのであれば、TypeScriptがあるしわざわざKotlinでやる必要もないのかなと。
ただ僕のようにKotlinでしか業務レベルでコード書けないよ!!(そもそもKotlinで業務レベルのコード書けるのか?)という方にはいいかも。
遊び程度であれば。

サーバーサイドもKotlin/JSを使って書けるが、既にJVM上で動くサーバーサイドKotlinがあるのでこちらもあまり利点が見当たらない......
Javaの資産が使えるのがKotlinの1番のいいところであるのにそれを捨ててまでnode上でKotlinを動かす必要があるのか?

マルチプラットフォームに関してもJavaの資産が使えないのが痛い気がする(試してはないのでわからないが)

まとめ

まだ業務レベルで使えるほど充実しているわけではない

アルファ版なのでまだまだ改良が必要そうだが、リリースされたら楽しみですね
絶賛開発中なのでOSSコミットしたい人には結構おすすめかも?
あなたの力でKotlinを素晴らしい言語にしてください
Kotlin

Kotlinには頑張って欲しい!!
名前が可愛いので
AndroidエンジニアとしてKotlinが大好きなので

続きまして、アルサーガパートナーズ Advent Calendar 2020 4日目の記事は再び @miumi さんのKotlin/JSです :tada:

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?