SummerWind

Web, Photography, Space Development

入門WebAssembly

アセンブリプログラミングを勉強した流れで、年末年始に入門WebAssemblyという本を呼んだ。タイトルの通りWebAssemblyの入門書なのだけど、Rust とかのコードを wasm にコンパイルするのではなく WebAssembly Text Format (WAT) を手書きしてコードを書いていくところがとても良い。

入門というだけあって WAT で使える命令の解説が少ないのが残念だったけど、CPU のレジスタマシンとは違って WebAssembly はスタックマシンであることの説明から始まったり、以前 wasm をちょっと触った時はよく分からなかった線形メモリや文字列の扱いについても詳細に解説されていたりと、自分にとってはちょうどいい内容だった。WebAssembly 面白いなぁと改めて感じたので今後も触っていきたい。

本書では Node.js で動かすことを前提として数多くのサンプルコードが紹介されている。WAT の記述に慣れるために自分もいくつか写経をしてみたのだけど、せっかくの WebAssembly だし Node.js 以外のランタイムでも動かしてみたいということで、純粋な Go で実装された wazero というランタイムを使って動かして試したりした。試したコードは以下のリポジトリに置いてあるのでよかったらどうぞ。ちょうど wazero に JIT サポートが入ったりしているようなので、そちらもいずれ試してみたいところ。

Moto Ishizawa

Moto Ishizawa
ソフトウェアエンジニア。ロケットの打上げを見学するために、たびたびフロリダや種子島にでかけるなど、宇宙開発分野のファンでもある。