WebAssembly(Wasm)
ブラウザ上でネイティブに近い速度で実行できるバイナリ命令形式。C・C++・Rustなどのコードをブラウザで動かすことができ、ゲーム・動画編集・CADなど計算負荷の高いWebアプリに使われる。
WebAssembly(Wasm)とは?
WebAssembly(Wasm)は、ブラウザ上で実行できるバイナリ命令形式です。JavaScriptの代替ではなく補完として設計されており、JavaScript単体では難しい計算負荷の高い処理をネイティブに近い速度で実行できます。2019年にW3Cの標準となりました。
JavaScriptとの違い
| 項目 | JavaScript | WebAssembly |
|---|---|---|
| 形式 | テキスト | バイナリ |
| 実行速度 | 速い | より速い(最大10〜20倍) |
| 言語 | JavaScript/TypeScript | C・C++・Rust・Go等からコンパイル |
| DOM操作 | ✅ | ❌(JSを経由する必要がある) |
| デバッグ | 容易 | やや難しい |
主なユースケース
- ゲームエンジン: Unity・Unreal EngineのWebGL出力
- 動画・画像処理: FFmpegをブラウザで実行(ffmpeg.wasm)
- CAD・3Dモデリング: AutoCAD Webなど
- 暗号処理: 高速な暗号計算
- 言語ランタイム: Python・Ruby等をブラウザで実行(Pyodide等)
開発フロー(Rustの例)
# Rustコードをwasmにコンパイル
wasm-pack build --target web
# JavaScriptから呼び出し
import init, { add } from './my_wasm.js';
await init();
console.log(add(1, 2)); // 3
まとめ
WebAssemblyはブラウザの可能性を大きく広げる技術です。通常のWebアプリ開発で直接使う機会は多くありませんが、パフォーマンスクリティカルなケースでは強力な選択肢です。
関連する用語 (プログラミング)
全33件を見るPWA(プログレッシブウェブアプリ)
Service WorkerやWeb App Manifestを使い、Webアプリにネイティブアプリに近い体験を提供する技術。オフライン動作・ホーム画面への追加・プッシュ通知が実現できる。
SSG(静的サイトジェネレーター)
ビルド時にすべてのページをHTMLとして事前生成する手法。サーバーが不要なため高速・安全・低コストで、ブログ・ドキュメントサイト・ランディングページに最適。
JAMstack
JavaScript・APIs・Markupの頭文字をとったWebアーキテクチャ。ビルド時に静的HTMLを生成し、動的機能はAPIで補完することで高速・安全・スケーラブルなWebサイトを実現する。
IT用語: 依存性の注入(DI)とは|テストしやすいコードを書く設計原則
クラスが依存するオブジェクトを外部から渡す「依存性の注入(Dependency Injection)」の概念とテスタビリティへの効果を解説。
Jest(ジェスト)
MetaがReact向けに開発したJavaScript/TypeScriptのテストフレームワーク。ゼロ設定で動作・スナップショットテスト・モック機能を標準搭載し、フロントエンドテストのデファクトスタンダード。
Go / Golang (ゴー言語)
Google社が開発した、処理速度が超絶爆速で、大量のアクセスに強い現代的なプログラミング言語。