RustでWebAssemblyに入門するチュートリアルRust 🦀 and WebAssemblyをやってみました。
WebAssemblyには以前から興味があったのですが、JavaScriptの知識が必要でそこがハードルになってしまっていましたが、とある事情でJavaScriptを勉強することがあったため、"今だ"と思ってやってみることにしました。
Setup
ここでは必要なツールのインストールを行う。
基本的なRustの環境とNode.jsの環境はすでに入っていたので、wasm-pack
,cargo-generate
を導入した。導入はcargo install
より行います。ソースコードをダウンロードしてビルドするので、ちょっと時間がかかりました。
Hello,World!
ここでは、とりあえずプロジェクトを作成して、かんたんなWebAssemblyのプログラムを動かします。今回用いるのはwasm-pack
で、これは、RustからWebAssemblyにコンパイルするとともにJavaScriptもしくはTypeScriptのグルーコードも生成してくれます。
ここまでは、基本的には問題なく進めることができましたが、最後のnpm run start
でサーバーを建てようとしたときにOpenSSLのエラーが出てサーバーを建てられませんでした。
これを調べると、とりあえずでよければOpenSSLのレガシーモードで実行すれば良いらしいのでpackage.json
の"script"の"start"のところにNODE_OPTIONS='--openssl-legacy-provider'
を追加しました。
"scripts": { "build": "webpack --config webpack.config.js", "start": "NODE_OPTIONS='--openssl-legacy-provider' webpack-dev-server" },
これでnpm run start
でサーバーが建つようになって無事表示ができました。
Rules of Conway's Game of Life
ここではライフゲームのルールが述べられていました。
ここまで全体の感想
慣れないJavaScriptが大変でした。特にNode.js周りがしんどかったです。