Kotlin/Wasm
Kotlin/Wasmはアルファ版です。 いつでも変更される可能性があります。プロダクション前のシナリオでご利用いただけます。YouTrackにてフィードバックをいただけると幸いです。
Kotlin/Wasmコミュニティに参加しましょう。
Kotlin/Wasmは、KotlinコードをWebAssembly (Wasm)形式にコンパイルする機能を提供します。 Kotlin/Wasmを使用すると、Wasmをサポートし、Kotlinの要件を満たす様々な環境やデバイスで動作するアプリケーションを作成できます。
Wasmは、スタックベースの仮想マシンのためのバイナリ命令形式です。この形式は、独自の仮想マシン上で動作するため、 プラットフォームに依存しません。Wasmは、Kotlinやその他の言語にコンパイルターゲットを提供します。
Kotlin/Wasmは、ブラウザなどの様々なターゲット環境で利用できます。例えば、Compose Multiplatformで構築された Webアプリケーションの開発や、ブラウザ外のスタンドアロンWasm仮想マシンで利用可能です。ブラウザ外のケースでは、 WebAssembly System Interface (WASI)がプラットフォームAPIへのアクセスを提供し、これも利用できます。
Kotlin/WasmとCompose Multiplatform
Kotlinを使用すると、Compose MultiplatformとKotlin/Wasmを介して、モバイルおよびデスクトップのユーザーインターフェース (UI) をWebプロジェクトで再利用し、アプリケーションを構築する能力が得られます。
Compose Multiplatformは、KotlinとJetpack Composeに基づく宣言型フレームワークであり、UIを一度実装するだけで、ターゲットとするすべてのプラットフォームで共有できます。
Webプラットフォーム向けには、Compose MultiplatformはKotlin/Wasmをコンパイルターゲットとして使用します。Kotlin/WasmとCompose Multiplatformで構築されたアプリケーションは、wasm-js
ターゲットを使用し、ブラウザで動作します。
Compose MultiplatformとKotlin/Wasmで構築されたアプリケーションのオンラインデモを体験してください
Kotlin/Wasmで構築されたアプリケーションをブラウザで実行するには、新しいガベージコレクションとレガシー例外処理のプロポーザルをサポートするブラウザバージョンが必要です。ブラウザのサポート状況を確認するには、WebAssembly roadmapを参照してください。
さらに、Kotlin/Wasmでは、最も人気のあるKotlinライブラリをすぐに利用できます。他のKotlinおよびMultiplatformプロジェクトと同様に、ビルドスクリプトに依存関係宣言を含めることができます。詳細については、マルチプラットフォームライブラリへの依存関係の追加を参照してください。
ご自身で試してみませんか?
Kotlin/WasmとWASI
Kotlin/Wasmは、サーバーサイドアプリケーション向けにWebAssembly System Interface (WASI)を使用します。 Kotlin/WasmとWASIで構築されたアプリケーションは、Wasm-WASIターゲットを使用するため、WASI APIを呼び出し、ブラウザ環境外でアプリケーションを実行できます。
Kotlin/WasmはWASIを活用してプラットフォーム固有の詳細を抽象化し、同じKotlinコードを多様なプラットフォームで実行できるようにします。これにより、各ランタイムでカスタム処理を必要とすることなく、Kotlin/Wasmの適用範囲がWebアプリケーション以外にも拡大します。
WASIは、WebAssemblyにコンパイルされたKotlinアプリケーションを様々な環境で実行するための、安全な標準インターフェースを提供します。
Kotlin/WasmとWASIの動作を確認するには、Kotlin/WasmとWASI入門チュートリアルをご覧ください。
Kotlin/Wasmのパフォーマンス
Kotlin/Wasmはまだアルファ版ですが、Kotlin/Wasm上で動作するCompose Multiplatformは、すでに有望なパフォーマンス特性を示しています。その実行速度はJavaScriptを上回り、JVMのそれに近づいていることがわかります。
私たちはKotlin/Wasmで定期的にベンチマークを実行しており、これらの結果はGoogle Chromeの最新バージョンでのテストによるものです。
ブラウザAPIのサポート
Kotlin/Wasm標準ライブラリは、DOM APIを含むブラウザAPIの宣言を提供します。 これらの宣言により、Kotlin APIを直接使用して、様々なブラウザ機能をアクセスおよび利用できます。例えば、Kotlin/Wasmアプリケーションでは、DOM要素の操作やAPIのフェッチを、これらの宣言をゼロから定義することなく利用できます。詳細については、Kotlin/Wasmブラウザの例をご覧ください。
ブラウザAPIサポートのための宣言は、JavaScriptの相互運用機能を使用して定義されています。 同じ機能を使用して、独自の宣言を定義できます。さらに、Kotlin/WasmとJavaScriptの相互運用性により、JavaScriptからKotlinコードを使用できます。詳細については、JavaScriptでKotlinコードを使用するを参照してください。
フィードバック
Kotlin/Wasmに関するフィードバック
Slack: Slackへの招待を受け取り、#webassemblyチャンネルで開発者に直接フィードバックを提供してください。
- YouTrackで問題があれば報告してください。
Compose Multiplatformに関するフィードバック
Slack: #compose-web公開チャンネルでフィードバックを提供してください。
- GitHubで問題があれば報告してください。
詳細情報
- Kotlin/Wasmの詳細については、こちらのYouTubeプレイリストをご覧ください。
- GitHubリポジトリのKotlin/Wasmの例をご覧ください。