🦀

RustでWebAssembly

2021/06/23に公開

WebAssembly(wasm)とは

https://developer.mozilla.org/ja/docs/WebAssembly/Concepts

WebAssembly は最近のウェブブラウザーで動作し、新たな機能と大幅なパフォーマンス向上を提供する新しい種類のコードです。基本的に直接記述ではなく、C、C++、Rust 等の低水準の言語にとって効果的なコンパイル対象となるように設計されています。

ざっくり言えば、ブラウザ上でCやRustのようなより低レイヤな言語を実行できる、胸熱技術というわけです。

導入

https://moshg.github.io/rustwasm-book-ja/game-of-life/hello-world.html
こちらのチュートリアルに沿って、アラートでHello Worldを表示するまでやってみます。

今回必要なパッケージは、

  • wasm-pack
  • cargo-generate
  • npm(インストール過程は割愛)
$ cargo install wasm-pack
$ cargo install cargo-generate

Hello World

cargo-generateでテンプレートを生成。
名前はチュートリアル通り「wasm-game-of-life」と入力。

$ cargo generate --git https://github.com/rustwasm/wasm-pack-template
Project Name : wasm-game-of-life

生成したディレクトリに移動し、
wasm-packでそのままビルド。

$ cd wasm-game-of-life
$ wasm-pack build

npmプロジェクトを作成。

$ npm init wasm-app www

npmモジュールをインストール、起動。

$ cd www
$ npm install
$ npm run start

localhost:8080でアラートが表示されればOK。

次はjs-sys/web-sysあたりをやろうと思います。

Discussion