「JavaScriptはブラウザで動くもの」——長い間そう思われていました。しかしWebAssembly(Wasm)の登場により、その常識は崩れつつあります。特にサーバーサイドやエッジでのWasm活用が2024〜2025年にかけて急速に広がっています。Wasmをブラウザの外で動かすための仕様「WASI(WebAssembly System Interface)」が整備され、コンテナの代替となりうる実行環境として注目されています。
Wasmをたとえで説明すると「万能翻訳機を持つ旅行者」のようなものです。どの国(OS・CPU)に行っても、その場で最適な言語(機械語)に翻訳して話せる——つまり「Write Once, Run Anywhere」をコンテナよりも軽量に実現する技術です。起動時間はミリ秒以下、メモリフットプリントは数MBというケースも珍しくありません。
新人エンジニアI:「エッジでコードを動かしたいんですが、Dockerコンテナだと重すぎて…」
シニアエンジニアJ:「それ、Wasmが向いてるケースだよ。Wasmモジュールなら起動がコンテナの100倍速いこともある」
I:「どんな言語で書けばいいんですか?」
J:「RustかC/C++が一番相性いいけど、最近はGoやPythonもWasmにコンパイルできるよ」
まずRustでシンプルなWasmモジュールを作ってみましょう。
# Rustのインストール(未インストールの場合)
curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh
# WASIターゲットを追加
rustup target add wasm32-wasi
# プロジェクト作成
cargo new --bin hello-wasm
cd hello-wasm
src/main.rs に以下を書きます。
fn main() {
println!("Hello from WebAssembly!");
}
次にWasmにコンパイルして実行します。
# WASIターゲットにコンパイル
cargo build --target wasm32-wasi --release
# wasmtimeランタイムでそのまま実行
wasmtime target/wasm32-wasi/release/hello-wasm.wasm
このwasmバイナリはLinuxでも macOSでもWindowsでも、wasmtimeさえあれば同じように動きます。さらにKubernetesでWasmを動かすための「Spin」(Fermyon製)や、Cloudflare Workersのようなエッジプラットフォームでも同じコードが動きます。コンテナよりも起動が速く、セキュリティサンドボックスが強固なWasm——次世代のサーバーサイド実行環境として、今から触っておく価値は十分あります。
コメントを残す