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件を見るSSR(サーバーサイドレンダリング)
Webページをサーバー側でHTMLとして生成してからクライアントに送信する手法。SPAのSEO問題を解決し、初期表示を高速化できる。Next.js・Nuxt.jsで実装されることが多い。
Ruby (ルビー)
「プログラミングを楽しむ」ことを目的に日本のまつもとゆきひろ氏が開発した、美しく書きやすい言語。
Webpack(ウェブパック)
JavaScriptアプリの依存関係を解析して複数のファイルを1つ(または少数)のバンドルにまとめるモジュールバンドラー。CSS・画像等も処理でき、フロントエンドビルドツールの長年の標準。
SPA(シングルページアプリケーション)
ページ遷移時にブラウザをリロードせず、JavaScriptで動的にコンテンツを更新するWebアプリのアーキテクチャ。React・Vue・Angularで実装されることが多い。
C# (シーシャープ)
Microsoft社が開発した、エンタープライズ(企業向け)システムからゲーム開発(Unity)まで広く使われる万能言語。
TypeScript (TS)
JavaScriptの弱点(エラーの起きやすさ)を克服するためにMicrosoftが開発した、「型(ルール)」を持つ進化版言語。