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件を見るIT用語: 依存性の注入(DI)とは|テストしやすいコードを書く設計原則
クラスが依存するオブジェクトを外部から渡す「依存性の注入(Dependency Injection)」の概念とテスタビリティへの効果を解説。
IT用語: デザインパターンとは|GoFの23パターンと代表例
ソフトウェア設計でよく直面する問題への定番解決策「デザインパターン」の概念とシングルトン・ファクトリー等の代表パターンを解説。
SSR(サーバーサイドレンダリング)
Webページをサーバー側でHTMLとして生成してからクライアントに送信する手法。SPAのSEO問題を解決し、初期表示を高速化できる。Next.js・Nuxt.jsで実装されることが多い。
IT用語: ソフトウェアテストの種類|単体・結合・E2Eテストの違い
ユニットテスト・結合テスト・E2Eテストの役割とテストピラミッドの考え方を解説。
IT用語: 再帰処理(Recursion)とは|関数が自分自身を呼び出す仕組み
再帰処理の概念・ベースケースの重要性・階乗計算やツリー探索での活用例を解説。
Jest(ジェスト)
MetaがReact向けに開発したJavaScript/TypeScriptのテストフレームワーク。ゼロ設定で動作・スナップショットテスト・モック機能を標準搭載し、フロントエンドテストのデファクトスタンダード。