メインコンテンツまでスキップ

Kotlin/Wasm

注記

Kotlin/WasmはAlpha版です。 予告なく変更される場合があります。本番環境以外でのシナリオでお使いいただけます。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ライブラリをKotlin/Wasmですぐに使用できます。他のKotlinおよびMultiplatformプロジェクトと同様に、ビルドスクリプトに依存関係の宣言を含めることができます。詳細については、Adding dependencies on multiplatform librariesを参照してください。

試してみませんか?

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の動作を確認するには、Get started with Kotlin/Wasm and WASI tutorialをご覧ください。

Kotlin/Wasmのパフォーマンス

Kotlin/WasmはまだAlpha版ですが、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 browser exampleをご覧ください。

ブラウザAPIサポートの宣言は、JavaScript interoperability capabilitiesを使用して定義されています。 同じ機能を使用して、独自の宣言を定義できます。さらに、Kotlin/Wasm–JavaScriptの相互運用性により、JavaScriptからKotlinコードを使用できます。詳細については、Use Kotlin code in JavaScriptを参照してください。

フィードバックをお寄せください

Kotlin/Wasmのフィードバック

Compose Multiplatformのフィードバック

さらに詳しく