これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

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

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

概要

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

メソッド

WebAssembly.instantiate()
WebAssembly コードをコンパイル、インスタンス化するための主要な API で、 Module と、その最初の Instance を返します。
WebAssembly.instantiateStreaming()
ソースのストリームから直接 WebAssembly モジュールをコンパイル、インスタンス化し、 Module と、その最初の Instance を返します。
WebAssembly.compile()
WebAssembly.Module を用いて WebAssembly バイナリコードからコンパイルします。インスタンス化は別ステップとして分離されます。
WebAssembly.compileStreaming()
ソースのストリームから直接 WebAssembly.Module にコンパイルします。インスタンス化は別ステップとして分離されます。
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() ライブラリ関数を使用しています。

仕様

仕様 策定状況 コメント
WebAssembly JavaScript Interface
WebAssembly の定義
草案 初回ドラフト定義。

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
CompileErrorChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
GlobalChrome 完全対応 69Edge 未対応 なしFirefox 完全対応 62IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 完全対応 69Chrome Android 完全対応 69Edge Mobile 未対応 なしFirefox Android 完全対応 62Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
InstanceChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
LinkErrorChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
MemoryChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
ModuleChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
RuntimeErrorChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
TableChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
compileChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android 完全対応 44Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
compileStreamingChrome 完全対応 61Edge 完全対応 16Firefox 完全対応 58IE 未対応 なしOpera 完全対応 47Safari 未対応 なしWebView Android 完全対応 61Chrome Android 完全対応 61Edge Mobile 未対応 なしFirefox Android 完全対応 58Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
instantiateChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0
instantiateStreamingChrome 完全対応 61Edge 完全対応 16Firefox 完全対応 58IE 未対応 なしOpera 完全対応 47Safari 未対応 なしWebView Android 完全対応 61Chrome Android 完全対応 61Edge Mobile 未対応 なしFirefox Android 完全対応 58Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
validateChrome 完全対応 57Edge 完全対応 16Firefox 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
IE 未対応 なしOpera 完全対応 44Safari 完全対応 11WebView Android 完全対応 57Chrome Android 完全対応 57Edge Mobile 完全対応 あり
無効
完全対応 あり
無効
無効 This feature is behind the Experimental JavaScript Features preference.
Firefox Android 完全対応 52
補足
完全対応 52
補足
補足 Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 7.0nodejs 完全対応 8.0.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報

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

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