Skip to content

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 demo

Kotlin/Wasmで構築されたアプリケーションをブラウザで実行するには、新しいガベージコレクションとレガシー例外処理のプロポーザルをサポートするブラウザバージョンが必要です。ブラウザのサポート状況を確認するには、WebAssembly roadmapを参照してください。

さらに、Kotlin/Wasmでは、最も人気のあるKotlinライブラリをすぐに利用できます。他のKotlinおよびMultiplatformプロジェクトと同様に、ビルドスクリプトに依存関係宣言を含めることができます。詳細については、マルチプラットフォームライブラリへの依存関係の追加を参照してください。

ご自身で試してみませんか?

Get started with Kotlin/Wasm

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 performance

私たちは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: Slackへの招待を受け取り、#webassemblyチャンネルで開発者に直接フィードバックを提供してください。
  • YouTrackで問題があれば報告してください。

Compose Multiplatformに関するフィードバック

詳細情報