From 7144ca0458a33571ade432951827e61443d85ff5 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Thu, 9 Sep 2021 20:08:51 +0900 Subject: Global_Objects/WebAssembly/Global を更新 (#2295) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Markdownに変換 - 2021/08/31 時点の英語版に同期 - Global コンストラクターは新規翻訳 --- .../webassembly/global/global/index.md | 84 +++++++++++++++ .../global_objects/webassembly/global/index.html | 118 --------------------- .../global_objects/webassembly/global/index.md | 87 +++++++++++++++ 3 files changed, 171 insertions(+), 118 deletions(-) create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/global/global/index.md delete mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/global/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/global/index.md (limited to 'files/ja/web') diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/global/global/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/global/global/index.md new file mode 100644 index 0000000000..116ea04f15 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/global/global/index.md @@ -0,0 +1,84 @@ +--- +title: WebAssembly.Global() コンストラクター +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/Global +tags: + - Constructor + - JavaScript + - Reference + - WebAssembly +browser-compat: javascript.builtins.WebAssembly.Global.Global +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/Global +--- +{{JSRef}} + +**`WebAssembly.Global()`** コンストラクターは、グローバル変数のインスタンスを表す新しい `Global` オブジェクトを表し、これは JavaScript からアクセス可能で、 1 つ以上の {{jsxref("WebAssembly.Module")}} インスタンスの間でインポート/エクスポート可能です。これにより、複数のモジュールを動的リンクすることができます。 + +## 構文 + +```js +new WebAssembly.Global(descriptor, value) +``` + +### 引数 + +- _descriptor_ + + - : `GlobalDescriptor` 辞書オブジェクトで、 2 つのプロパティを持っています。 + + - `value`: [`USVString`](/ja/docs/Web/API/USVString) で、そのグローバル変数のデータ型を表します。これは `i32`、`i64`、`f32`、`f64` のいずれかです。 USVString は Unicode のスカラー値の取りうる並びに相当します。 USVString は JavaScript で返されたときに、 String にマップされます。一般的に、テキスト処理を行い、操作するために Unicode スカラー値の文字列を必要とする API にのみ使用されます。 USVString は、対になっていないサロゲートコードポイントを許可しないことを除いて、 DOMString と同等です。 USVString に存在する対になっていないサロゲートコードポイントは、ブラウザーが Unicode の「置換文字」 U+FFFD, (�) に変換されます。 + - `mutable`: 論理値で、そのグローバル変数が変更可能であるかどうかを表します。既定では `false` です。 + +- _value_ + - : 変数が保持する値です。変数のデータ型に合う限りどんな値でも取れます。もしも何の値も渡されないと、[`DefaultValue` + アルゴリズム](https://webassembly.github.io/spec/js-api/#defaultvalue)で指定した時のように、型付きの 0 が使われます。 + +## 例 + +### 新しい Global インスタンスの生成 + +以下の例は、 `WebAssembly.Global()` コンストラクターを用いて生成された新しいグローバルインスタンスです。これは変更可能 (mutable) な `i32` 型で、値は 0 です。 + +その後、グローバルの値は、まず `Global.value` プロパティを使用して `42` に変更され、次に `global.wasm` モジュールからエクスポートされた `incGlobal()` 関数を使用して 43 に変更されます (これは、与えられた値に 1 を追加してから新しい値を返します)。 + +```js +const output = document.getElementById('output'); + +function assertEq(msg, got, expected) { + output.innerHTML += `Testing ${msg}: `; + if (got !== expected) + output.innerHTML += `FAIL!
Got: ${got}
Expected: ${expected}
`; + else + output.innerHTML += `SUCCESS! Got: ${got}
`; +} + +assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function"); + +const global = new WebAssembly.Global({value:'i32', mutable:true}, 0); + +WebAssembly.instantiateStreaming(fetch('global.wasm'), { js: { global } }) +.then(({instance}) => { + assertEq("getting initial value from wasm", instance.exports.getGlobal(), 0); + global.value = 42; + assertEq("getting JS-updated value from wasm", instance.exports.getGlobal(), 42); + instance.exports.incGlobal(); + assertEq("getting wasm-updated value from JS", global.value, 43); +}); +``` + +> **Note:** この例は[GitHub 上の実行例](https://mdn.github.io/webassembly-examples/js-api-examples/global.html)で確認できます。また、[ソースコード](https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/global.html)も参照してください。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/ja/docs/WebAssembly) overview page +- [WebAssembly concepts](/ja/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/ja/docs/WebAssembly/Using_the_JavaScript_API) +- [Import/Export + mutable globals proposal](https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md) diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/global/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/global/index.html deleted file mode 100644 index 16817b0777..0000000000 --- a/files/ja/web/javascript/reference/global_objects/webassembly/global/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: WebAssembly.Global -slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global -tags: - - API - - Constructor - - JavaScript - - Reference - - WebAssembly - - global -translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global ---- -
{{JSRef}}
- -

WebAssembly.Global はグローバル変数として存在し、JavaScript または {{jsxref("WebAssembly.Module")}} インスタンスから参照することができます。これにより動的に複数のモジュールをリンクすることができます。

- -

コンストラクターの文法

- -
var myGlobal = new WebAssembly.Global(descriptor, value);
- -

パラメーター

- -
-
descriptor
-
GlobalDescriptor 辞書オブジェクト、2 つの要素を持っている: -
    -
  • value: {{domxref("USVString")}} はグローバルデータ形式を表し値として i32i64f32f64 のうち一つを取ります。
  • -
  • mutable: グローバルがミュータブルかどうかの真偽値です。デフォルトでは false です。
  • -
-
-
value
-
変数が保持する値です。変数のデータ型に合う限りどんな値でも取れます。もしも何の値も渡されないと、DefaultValue algorithm で指定した時の様な 型ありの 0 が使われます。
-
- -

グローバルコンストラクターによる関数プロパティ

- -

無し

- -

グローバルインスタンス

- -

すべてのグローバルインスタンスは Global() コンストラクターのプロパティオブジェクトを受け継ぐ — これによりすべての Global インスタンスを変更できる

- -

インスタンスプロパティ

- -

{{page('/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/prototype', 'Properties')}}

- -

インスタンスメソッド

- -

{{page('/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/prototype', 'Methods')}}

- -

- -

以下の例では新しいグローバルインスタンスは WebAssembly.Global() コンストラクターを用いて初期化され、初期値 0 のミュータブルな i32 型として定義されます。

- -

その後この値は、Global.value プロパティを使うことによって 42 に、global.wasm モジュールから公開された incGlobal() 関数 (入力に限らず 1 を加算する) を使うことによって 43 になります。

- -
const output = document.getElementById('output');
-
-function assertEq(msg, got, expected) {
-    output.innerHTML += `Testing ${msg}: `;
-    if (got !== expected)
-        output.innerHTML += `FAIL!<br>Got: ${got}<br>Expected: ${expected}<br>`;
-    else
-        output.innerHTML += `SUCCESS! Got: ${got}<br>`;
-}
-
-assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function");
-
-const global = new WebAssembly.Global({value:'i32', mutable:true}, 0);
-
-WebAssembly.instantiateStreaming(fetch('global.wasm'), { js: { global } })
-.then(({instance}) => {
-    assertEq("getting initial value from wasm", instance.exports.getGlobal(), 0);
-    global.value = 42;
-    assertEq("getting JS-updated value from wasm", instance.exports.getGlobal(), 42);
-    instance.exports.incGlobal();
-    assertEq("getting wasm-updated value from JS", global.value, 43);
-});
- -
-

メモ: GitHub 上で動くデモが試せます。ソースコードも確認してみてください。

-
- -

仕様

- - - - - - - - - - - - - - - - -
仕様策定状況コメント
{{SpecName('WebAssembly JS', '#globals', 'WebAssembly.Global()')}}{{Spec2('WebAssembly JS')}}初回ドラフト定義
- -

ブラウザー実装状況

- -
- - -

{{Compat("javascript.builtins.WebAssembly.Global")}}

-
- -

参考

- - diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/global/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/global/index.md new file mode 100644 index 0000000000..68b78bdb66 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/global/index.md @@ -0,0 +1,87 @@ +--- +title: WebAssembly.Global +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global +tags: + - Class + - JavaScript + - Reference + - WebAssembly +browser-compat: javascript.builtins.WebAssembly.Global +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global +--- +{{JSRef}} + +**`WebAssembly.Global`** はグローバル変数のインスタンスを表します。 JavaScript からアクセスでき、1つ以上の {{jsxref("WebAssembly.Module")}} インスタンス間でインポート/エクスポートすることができます。これにより複数のモジュールを動的にリンクすることができます。 + +## コンストラクター + +- [`WebAssembly.Global()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/Global) + - : 新しい `Global` オブジェクトを生成します。 + +## Global のインスタンス + +すべての `Global` のインスタンスは `Global()` コンストラクターのプロパティオブジェクトを継承します。これによりすべての `Global` インスタンスを変更することができます。 + +### インスタンスプロパティ + +- `Global.prototype.constructor` + - : このオブジェクトのインスタンスを生成した関数を返します。既定では、これは {{jsxref("WebAssembly.Global()")}} コンストラクターです。 +- `Global.prototype[@@toStringTag]` + - : [@@toStringTag](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) プロパティの初期値で、文字列値 "WebAssembly.Global" です。 +- `Global.prototype.value` + - : グローバル変数の中に含まれている値です。これにより、グローバル値を直接設定および取得することができます。 + +### インスタンスメソッド + +- `Global.prototype.valueOf()` + - : グローバル変数の中に含まれている値を返す古い形のメソッドです。 + +## 例 + +### 新しい Global インスタンスの生成 + +以下の例では新しいグローバルインスタンスは `WebAssembly.Global()` コンストラクターを用いて初期化され、初期値 0 の変更可能な `i32` 型として定義されます。 + +その後この値は、`Global.value` プロパティを使うことによって `42` に、`global.wasm` モジュールから公開された (どんな値が与えられても 1 を加算して、新しい値を返す) `incGlobal()` 関数を使うことによって `43` になります。 + +```js +const output = document.getElementById('output'); + +function assertEq(msg, got, expected) { + output.innerHTML += `Testing ${msg}: `; + if (got !== expected) + output.innerHTML += `FAIL!
Got: ${got}
Expected: ${expected}
`; + else + output.innerHTML += `SUCCESS! Got: ${got}
`; +} + +assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function"); + +const global = new WebAssembly.Global({value:'i32', mutable:true}, 0); + +WebAssembly.instantiateStreaming(fetch('global.wasm'), { js: { global } }) +.then(({instance}) => { + assertEq("getting initial value from wasm", instance.exports.getGlobal(), 0); + global.value = 42; + assertEq("getting JS-updated value from wasm", instance.exports.getGlobal(), 42); + instance.exports.incGlobal(); + assertEq("getting wasm-updated value from JS", global.value, 43); +}); +``` + +> **Note:** この例は[GitHub 上の実行例](https://mdn.github.io/webassembly-examples/js-api-examples/global.html)で確認できます。また、[ソースコード](https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/global.html)も参照してください。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/ja/docs/WebAssembly) overview page +- [WebAssembly concepts](/ja/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/ja/docs/WebAssembly/Using_the_JavaScript_API) +- [Import/Export mutable globals proposal](https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md) -- cgit v1.2.3-54-g00ecf