Kotlin/Wasm と WASI を使ってみる
このチュートリアルでは、WebAssembly System Interface (WASI) を使用して、さまざまな WebAssembly 仮想マシンでシンプルな Kotlin/Wasm アプリケーションを実行する方法を説明します。
Node.js、Deno、および WasmEdge 仮想マシンで実行されるアプリケーションの例を紹介します。出力は、標準の WASI API を使用するシンプルなアプリケーションです。
現在、Kotlin/Wasm は Preview 1 としても知られる WASI 0.1 をサポートしています。WASI 0.2 のサポートは将来のリリースで計画されています。WASI 0.2 サポートに関する最新情報については、この YouTrack イシューをフォローしてください。
wasmWasi ターゲットは、デフォルトで新しい例外処理プロポーザル (exception handling proposal) を使用します。これにより、最新の WebAssembly ランタイムとの互換性が向上します。
Kotlin/Wasm ツールチェーンは、Node.js タスク (
wasmWasiNode*) を標準で提供しています。Deno や WasmEdge を利用するものなど、プロジェクト内のその他のタスクバリアントは、カスタムタスクとして含まれています。
始める前に
最新バージョンの IntelliJ IDEA をダウンロードしてインストールします。
IntelliJ IDEA で File | New | Project from Version Control を選択して、Kotlin/Wasm WASI テンプレートリポジトリをクローンします。
コマンドラインからクローンすることもできます:
bashgit clone [email protected]:Kotlin/kotlin-wasm-wasi-template.git
アプリケーションの実行
View | Tool Windows | Gradle を選択して、Gradle ツールウィンドウを開きます。
プロジェクトがロードされると、Gradle ツールウィンドウの kotlin-wasm-wasi-example の下に Gradle タスクが表示されます。
タスクを正常にロードするには、Gradle JVM として少なくとも Java 11 が必要です。
kotlin-wasm-wasi-example | Tasks | kotlin node から、以下のいずれかの Gradle タスクを選択して実行します:
wasmWasiNodeRun: アプリケーションを Node.js で実行します。
wasmWasiDenoRun: アプリケーションを Deno で実行します。
wasmWasiWasmEdgeRun: アプリケーションを WasmEdge で実行します。
Windows プラットフォームで Deno を使用する場合は、
deno.exeがインストールされていることを確認してください。詳細については、Deno のインストールドキュメントを参照してください。

または、kotlin-wasm-wasi-template ルートディレクトリのターミナルから、以下のいずれかのコマンドを実行します:
アプリケーションを Node.js で実行する場合:
bash./gradlew wasmWasiNodeRunアプリケーションを Deno で実行する場合:
bash./gradlew wasmWasiDenoRunアプリケーションを WasmEdge で実行する場合:
bash./gradlew wasmWasiWasmEdgeRun
アプリケーションが正常にビルドされると、ターミナルにメッセージが表示されます:

アプリケーションのテスト
また、Kotlin/Wasm アプリケーションがさまざまな仮想マシンで正しく動作するかテストすることもできます。
Gradle ツールウィンドウの kotlin-wasm-wasi-example | Tasks | verification から、以下のいずれかの Gradle タスクを実行します:
- wasmWasiNodeTest: Node.js でアプリケーションをテストします。
- wasmWasiDenoTest: Deno でアプリケーションをテストします。
- wasmWasiWasmEdgeTest: WasmEdge でアプリケーションをテストします。

または、kotlin-wasm-wasi-template ルートディレクトリのターミナルから、以下のいずれかのコマンドを実行します:
アプリケーションを Node.js でテストする場合:
bash./gradlew wasmWasiNodeTestアプリケーションを Deno でテストする場合:
bash./gradlew wasmWasiDenoTestアプリケーションを WasmEdge でテストする場合:
bash./gradlew wasmWasiWasmEdgeTest
ターミナルにテスト結果が表示されます:

次のステップ
Kotlin Slack の Kotlin/Wasm コミュニティに参加しましょう:
他の Kotlin/Wasm の例も試してみてください:
