はじめに Rust と WebAssembly(Wasm)の学習として、コンウェイのライフゲームを作成しました。 ただブラウザで動かすだけでは面白くないので、Windows の「Lively Wallpaper」を使って、自分のデスクトップ壁紙としてヌルヌル動かすところまでをゴールにしています。 成果物はこんな感じです ライフゲームが動いてる図 1000×1000 を超える巨大なグリッドでも 60fps で動作します。 この記事では、Rust によるロジック実装、特に JavaScript(以下JS)と Wasm 間での配列受け渡しをゼロコピーにする最適化と、それを Lively Wallpaper に組み込む手順を紹介します。 なぜ Rust + Wasm なのか? ライフゲームのような計算集約型の処理は、セル数が数万〜数十万になると、純粋な JS では厳しくなってきます。 例えばフルH