Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(ja): WebAssembly/JavaScript_interface/Global 以下を更新 #14909

Merged
merged 1 commit into from
Aug 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 32 additions & 20 deletions files/ja/webassembly/javascript_interface/global/global/index.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,60 @@
---
title: WebAssembly.Global() コンストラクター
slug: WebAssembly/JavaScript_interface/Global/Global
original_slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/Global
l10n:
sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---

{{WebAssemblySidebar}}

**`WebAssembly.Global()`** コンストラクターは、グローバル変数のインスタンスを表す新しい `Global` オブジェクトを表し、これは JavaScript からアクセス可能で、 1 つ以上の {{jsxref("WebAssembly.Module")}} インスタンスの間でインポート/エクスポート可能です。これにより、複数のモジュールを動的リンクすることができます。
**`WebAssembly.Global()`** コンストラクターは、グローバル変数のインスタンスを表す新しい `Global` オブジェクトを表します。これは JavaScript からアクセス可能で、1 つ以上の [`WebAssembly.Module`](/ja/docs/WebAssembly/JavaScript_interface/Module) インスタンスの間でインポート/エクスポート可能です。これにより、複数のモジュールを動的リンクすることができます。

## 構文

```js
new WebAssembly.Global(descriptor, value);
```js-nolint
new WebAssembly.Global(descriptor, value)
```

### 引数

- _descriptor_
- `descriptor`

- : `GlobalDescriptor` 辞書オブジェクトで、 2 つのプロパティを持っています
- : オブジェクトで、 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, (�) に変換されます。
- `value`: 文字列で、そのグローバル変数のデータ型を表します。
これは以下のいずれかです。
- `i32`: 32 ビット整数。
- `i64`: 64 ビット整数。(JavaScript では、これは {{jsxref("BigInt")}} として表される)
- `f32`: 32 ビット浮動小数点数。
- `f64`: 64 ビット浮動小数点数。
- `v128`: 128 ビットベクトル。
- `externref`: ホスト参照。
- `anyfunc`: 関数参照。
- `mutable`: 論理値で、そのグローバル変数が変更可能であるかどうかを表します。既定では `false` です。

- _value_
- : 変数が保持する値です。変数のデータ型に合う限りどんな値でも取れます。もしも何の値も渡されないと、[`DefaultValue`
アルゴリズム](https://webassembly.github.io/spec/js-api/#defaultvalue)で指定した時のように、型付きの 0 が使われます
- `value`
- : 変数が保持する値です。変数のデータ型に合う限り、どんな値でも取れます。
もしも何の値も渡されないと、`descriptor.value` の値が `i32``i64``f32``f64` のいずれかである場合は型付きの 0 が使用され、`descriptor.value``externref` または `anyfunc` であれば、`null` が使用されます([`DefaultValue` アルゴリズム](https://webassembly.github.io/spec/js-api/#defaultvalue)で定義されているとおりです)

##

### 新しい Global インスタンスの生成

以下の例は、 `WebAssembly.Global()` コンストラクターを用いて生成された新しいグローバルインスタンスです。これは変更可能 (mutable) な `i32` 型で、値は 0 です。
以下の例は、`WebAssembly.Global()` コンストラクターを用いて生成された新しいグローバルインスタンスです。
これは変更可能 (mutable) な `i32` 型で、値は 0 です。

その後、グローバルの値は、まず `Global.value` プロパティを使用して `42` に変更され、次に `global.wasm` モジュールからエクスポートされた `incGlobal()` 関数を使用して 43 に変更されます (これは、与えられた値に 1 を追加してから新しい値を返します)
その後、グローバルの値は、まず `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!<br>Got: ${got}<br>Expected: ${expected}<br>`;
else output.innerHTML += `SUCCESS! Got: ${got}<br>`;
const result =
got === expected
? `SUCCESS! Got: ${got}<br>`
: `FAIL!<br>Got: ${got}<br>Expected: ${expected}<br>`;
output.innerHTML += `Testing ${msg}: ${result}`;
}

assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function");
Expand All @@ -67,7 +80,7 @@ WebAssembly.instantiateStreaming(fetch("global.wasm"), { js: { global } }).then(
);
```

> **メモ:** この例は[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)も参照してください。
> **メモ:** この例は [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)も参照してください。
## 仕様書

Expand All @@ -79,8 +92,7 @@ WebAssembly.instantiateStreaming(fetch("global.wasm"), { js: { global } }).then(

## 関連情報

- [WebAssembly](/ja/docs/WebAssembly) overview page
- [WebAssembly concepts](/ja/docs/WebAssembly/Concepts)
- [WebAssembly](/ja/docs/WebAssembly) 概要ページ
- [WebAssembly の概要](/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)
- [Import/Export mutable globals proposal](https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md)
24 changes: 14 additions & 10 deletions files/ja/webassembly/javascript_interface/global/index.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
---
title: WebAssembly.Global
slug: WebAssembly/JavaScript_interface/Global
original_slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Global
l10n:
sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---

{{WebAssemblySidebar}}

**`WebAssembly.Global`** はグローバル変数のインスタンスを表します。 JavaScript からアクセスでき、1つ以上の {{jsxref("WebAssembly.Module")}} インスタンス間でインポート/エクスポートすることができます。これにより複数のモジュールを動的にリンクすることができます。
**`WebAssembly.Global`** はグローバル変数のインスタンスを表します。JavaScript からアクセスでき、1 つ以上の [`WebAssembly.Module`](/ja/docs/WebAssembly/JavaScript_interface/Module) インスタンス間でインポート/エクスポートすることができます。これにより複数のモジュールを動的にリンクすることができます。

## コンストラクター

- [`WebAssembly.Global()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/Global)
- [`WebAssembly.Global()`](/ja/docs/WebAssembly/JavaScript_interface/Global/Global)
- : 新しい `Global` オブジェクトを生成します。

## Global のインスタンス
Expand All @@ -19,7 +22,7 @@ slug: WebAssembly/JavaScript_interface/Global
### インスタンスプロパティ

- `Global.prototype.constructor`
- : このオブジェクトのインスタンスを生成した関数を返します。既定では、これは {{jsxref("WebAssembly.Global()")}} コンストラクターです。
- : このオブジェクトのインスタンスを生成した関数を返します。既定では、これは [`WebAssembly.Global()`](/ja/docs/WebAssembly/JavaScript_interface/Global/Global) コンストラクターです。
- `Global.prototype[@@toStringTag]`
- : [@@toStringTag](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) プロパティの初期値で、文字列値 "WebAssembly.Global" です。
- `Global.prototype.value`
Expand All @@ -36,16 +39,17 @@ slug: WebAssembly/JavaScript_interface/Global

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

その後この値は、`Global.value` プロパティを使うことによって `42` に、`global.wasm` モジュールから公開された (どんな値が与えられても 1 を加算して、新しい値を返す) `incGlobal()` 関数を使うことによって `43` になります。
その後この値は、`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!<br>Got: ${got}<br>Expected: ${expected}<br>`;
else output.innerHTML += `SUCCESS! Got: ${got}<br>`;
const result =
got === expected
? `SUCCESS! Got: ${got}<br>`
: `FAIL!<br>Got: ${got}<br>Expected: ${expected}<br>`;
output.innerHTML += `Testing ${msg}: ${result}`;
}

assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function");
Expand Down Expand Up @@ -83,7 +87,7 @@ WebAssembly.instantiateStreaming(fetch("global.wasm"), { js: { global } }).then(

## 関連情報

- [WebAssembly](/ja/docs/WebAssembly) overview page
- [WebAssembly concepts](/ja/docs/WebAssembly/Concepts)
- [WebAssembly](/ja/docs/WebAssembly) 概要ページ
- [WebAssembly の概要](/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)
Loading