MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

これは実験段階の機能です。
この機能は複数のブラウザーで開発中の状態にあります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザーの将来のバージョンで変更になる可能性があることに注意してください。

WebAssembly JavaScript オブジェクトは全ての WebAssembly に関連する機能の名前空間として振る舞います。

他のグローバルオブジェクトとは異なり、WebAssembly はコンストラクタではありません (関数オブジェクトではない) 。数学定数、関数の名前空間である Math や 、国際化コンストラクタと他の言語に依存する関数のための Intl と同等のものです。

概要

WebAssembly オブジェクトの主な用途は次のとおりです:

メソッド

WebAssembly.instantiate()
WebAssembly コードをコンパイル、インスタンス化するための主要な API で、 Module と、その最初の Instance を返します。
WebAssembly.compile()
WebAssembly.Module を用いて WebAssembly バイナリコードからコンパイルします。インスタンス化は別ステップとして分離されます。
WebAssembly.validate()
WebAssembly バイナリコードの型付き配列を検証し、バイト列が有効な WebAssembly コードか (true) 否か (false) を返します。

コンストラクタ

WebAssembly.Module()
新しい WebAssembly Module オブジェクトを生成します。
WebAssembly.Instance()
新しい WebAssembly Instance オブジェクトを生成します。
WebAssembly.Memory()
新しい WebAssembly Memory オブジェクトを生成します。
WebAssembly.Table()
新しい WebAssembly Table オブジェクトを生成します。
WebAssembly.CompileError()
新しい WebAssembly CompileError オブジェクトを生成します。
WebAssembly.LinkError()
新しい WebAssembly LinkError オブジェクトを生成します。
WebAssembly.RuntimeError()
新しい WebAssembly RuntimeError オブジェクトを生成します。

fetch を使用して WebAssembly バイトコードをフェッチした後、WebAssembly.instantiate() 関数を使用してモジュールをコンパイル、インスタンス化します。その過程で、WebAssembly モジュールに JavaScript の関数をインポートします。このプロミスは解決時に Module と Instance を含むオブジェクト (result) を渡します。次に、Instance からエクスポートされている エクスポートされた WebAssembly 関数 を呼び出します。

var importObject = {
  imports: {
    imported_func: function(arg) {
      console.log(arg);
    }
  }
};

fetch('simple.wasm').then(response =>
  response.arrayBuffer()
).then(bytes =>
  WebAssembly.instantiate(bytes, importObject)
).then(result =>
  result.instance.exports.exported_func()
);

: Github上の例 (動作例) のindex.htmlでは、我々で定義した fetchAndInstantiate() ライブラリ関数を使用しています。

仕様

仕様 策定状況 コメント
Web Assembly JavaScript API
WebAssembly の定義
ドラフト 初回ドラフト定義。

ブラウザ実装状況

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本サポート 57 15[2] 52 (52)[1] 未サポート 44 11
Feature Chrome for Android Android Webview Edge Mobile Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 57 57 未サポート 52.0 (52)[1] 未サポート 未サポート 11

[1] WebAssemblyはFirefox 52+で有効です。Firefox 52 Extended Support Release (ESR.)では無効化されています。

[2] 現在、“Experimental JavaScript Features” フラグを付けることでサポートされます。詳細については このブログ記事 を参照してください。

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: syu_kato
 最終更新者: syu_kato,