Skip to content
Beta

Kotlin/Wasm と WASI を使ってみる

このチュートリアルでは、WebAssembly System Interface (WASI) を使用して、さまざまな WebAssembly 仮想マシンでシンプルな Kotlin/Wasm アプリケーションを実行する方法を説明します。

Node.jsDeno、および 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 を利用するものなど、プロジェクト内のその他のタスクバリアントは、カスタムタスクとして含まれています。

始める前に

  1. 最新バージョンの IntelliJ IDEA をダウンロードしてインストールします。

  2. IntelliJ IDEA で File | New | Project from Version Control を選択して、Kotlin/Wasm WASI テンプレートリポジトリをクローンします。

    コマンドラインからクローンすることもできます:

    bash
    git clone [email protected]:Kotlin/kotlin-wasm-wasi-template.git

アプリケーションの実行

  1. View | Tool Windows | Gradle を選択して、Gradle ツールウィンドウを開きます。

    プロジェクトがロードされると、Gradle ツールウィンドウの kotlin-wasm-wasi-example の下に Gradle タスクが表示されます。

    タスクを正常にロードするには、Gradle JVM として少なくとも Java 11 が必要です。

  2. kotlin-wasm-wasi-example | Tasks | kotlin node から、以下のいずれかの Gradle タスクを選択して実行します:

    • wasmWasiNodeRun: アプリケーションを Node.js で実行します。

    • wasmWasiDenoRun: アプリケーションを Deno で実行します。

    • wasmWasiWasmEdgeRun: アプリケーションを WasmEdge で実行します。

      Windows プラットフォームで Deno を使用する場合は、deno.exe がインストールされていることを確認してください。詳細については、Deno のインストールドキュメントを参照してください。

    Kotlin/Wasm and WASI tasks

または、kotlin-wasm-wasi-template ルートディレクトリのターミナルから、以下のいずれかのコマンドを実行します:

  • アプリケーションを Node.js で実行する場合:

    bash
    ./gradlew wasmWasiNodeRun
  • アプリケーションを Deno で実行する場合:

    bash
    ./gradlew wasmWasiDenoRun
  • アプリケーションを WasmEdge で実行する場合:

    bash
    ./gradlew wasmWasiWasmEdgeRun

アプリケーションが正常にビルドされると、ターミナルにメッセージが表示されます:

Kotlin/Wasm and WASI app

アプリケーションのテスト

また、Kotlin/Wasm アプリケーションがさまざまな仮想マシンで正しく動作するかテストすることもできます。

Gradle ツールウィンドウの kotlin-wasm-wasi-example | Tasks | verification から、以下のいずれかの Gradle タスクを実行します:

  • wasmWasiNodeTest: Node.js でアプリケーションをテストします。
  • wasmWasiDenoTest: Deno でアプリケーションをテストします。
  • wasmWasiWasmEdgeTest: WasmEdge でアプリケーションをテストします。

Kotlin/Wasm and WASI test tasks

または、kotlin-wasm-wasi-template ルートディレクトリのターミナルから、以下のいずれかのコマンドを実行します:

  • アプリケーションを Node.js でテストする場合:

    bash
    ./gradlew wasmWasiNodeTest
  • アプリケーションを Deno でテストする場合:

    bash
    ./gradlew wasmWasiDenoTest
  • アプリケーションを WasmEdge でテストする場合:

    bash
    ./gradlew wasmWasiWasmEdgeTest

ターミナルにテスト結果が表示されます:

Kotlin/Wasm and WASI test

次のステップ

Kotlin Slack の Kotlin/Wasm コミュニティに参加しましょう:

Join the Kotlin/Wasm community

他の Kotlin/Wasm の例も試してみてください: