aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/javascript/reference/global_objects/sharedarraybuffer
diff options
context:
space:
mode:
Diffstat (limited to 'files/ja/web/javascript/reference/global_objects/sharedarraybuffer')
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html55
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html135
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html77
-rw-r--r--files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html80
4 files changed, 347 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html
new file mode 100644
index 0000000000..c5c80111ca
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.html
@@ -0,0 +1,55 @@
+---
+title: SharedArrayBuffer.prototype.byteLength
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength
+tags:
+ - JavaScript
+ - Property
+ - Shared Memory
+ - SharedArrayBuffer
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>byteLength</code></strong> アクセサープロパティは 、{{jsxref("SharedArrayBuffer")}} の長さをバイト単位で表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-bytelength.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Description" name="Description">解説</h2>
+
+<p><code>byteLength</code> プロパティは、セットアクセサー関数が <code>undefined</code> であるアクセサープロパティです。つまり、このプロパティは読み取り専用です。値は共有配列が生成されたときに決定され、変更できません。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_byteLength" name="Using_byteLength">byteLength の使用</h3>
+
+<pre class="brush:js notranslate">var sab = new SharedArrayBuffer(1024);
+sab.byteLength; // 1024
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-get-sharedarraybuffer.prototype.bytelength', 'SharedArrayBuffer.prototype.byteLength')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer.byteLength")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html
new file mode 100644
index 0000000000..2603ebfbd1
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html
@@ -0,0 +1,135 @@
+---
+title: SharedArrayBuffer
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
+tags:
+ - Constructor
+ - JavaScript
+ - Shared Memory
+ - SharedArrayBuffer
+ - TypesdArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>SharedArrayBuffer</code></strong> オブジェクトは、ジェネリックで固定長の生バイナリデータバッファーを表すために使用されます。{{jsxref("ArrayBuffer")}} オブジェクトと似ていますが、これらは共有メモリー上にビューを生成するために使用されます。<code>ArrayBuffer</code> と異なり、<code>SharedArrayBuffer</code> は分離できません。</p>
+
+<div class="note">
+<p><code>SharedArrayBuffer</code> はすべての主要なブラウザーで 2018 年 1 月 5 日に、<a href="https://meltdownattack.com/">Spectre</a> への対応として無効化されましたので注意してください。Chrome では、Spectre 型脆弱性から保護するためのサイト分離機能が有効にされたプラットフォームにおいて、<a href="https://bugs.chromium.org/p/chromium/issues/detail?id=821270">v67 に再度有効化されています</a>。</p>
+</div>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html")}}</div>
+
+
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">new SharedArrayBuffer(length)
+</pre>
+
+<h3 id="パラメーター">パラメーター</h3>
+
+<dl>
+ <dt><code>length</code></dt>
+ <dd>array buffer を生成するバイト単位のサイズ。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>指定したサイズの新しい <code>SharedArrayBuffer</code>。コンテンツは 0 に初期化されている。</p>
+
+<h2 id="説明">説明</h2>
+
+<h3 id="Allocating_and_sharing_memory" name="Allocating_and_sharing_memory">メモリーの割り当てと共有</h3>
+
+<p>クラスター内のあるエージェントから別のエージェント (エージェントとは、ウェブページのメインプログラムまたはその web worker のひとつ) へ、{{jsxref("SharedArrayBuffer")}} オブジェクトを使用してメモリーを共有するために、<code><a href="/ja/docs/Web/API/Worker/postMessage">postMessage</a></code> と <a href="/ja/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">structured cloning</a> を使用します。</p>
+
+<p>structured clone アルゴリズムは <code>SharedArrayBuffers</code> と、<code>SharedArrayBuffers</code> にマッピングされた <code>TypedArrays</code> を受け入れます。どちらの場合も <code>SharedArrayBuffer</code> オブジェクトは受信者に転送されて、受信側のエージェントで新たなプライベートの SharedArrayBuffer オブジェクトになります ({{jsxref("ArrayBuffer")}} と同じように)。しかし、2 つの <code>SharedArrayBuffer</code> オブジェクトから参照される共有データブロックは同一のデータブロックであり、あるエージェントによるブロックへの副作用は、結果的に他方のエージェントからも見えます。</p>
+
+<pre class="brush: js">var sab = new SharedArrayBuffer(1024);
+worker.postMessage(sab);
+</pre>
+
+<h3 id="Atomic_操作で共有メモリを更新、同期する">Atomic 操作で共有メモリを更新、同期する</h3>
+
+<p>共有メモリーは、worker 内でもメインスレッド内でも同時に生成や更新ができます。システム(CPU や OS、ブラウザー)によっては、変更がすべてのコンテキストに通知されるまでに少々時間がかかります。同期するためには、{{jsxref("Atomics", "atomic", "", 1)}} 操作が必要です。</p>
+
+<h3 id="SharedArrayBuffer_オブジェクトを受け付ける_API">SharedArrayBuffer オブジェクトを受け付ける API</h3>
+
+<ul>
+ <li>{{domxref("WebGLRenderingContext.bufferData()")}}</li>
+ <li>{{domxref("WebGLRenderingContext.bufferSubData()")}}</li>
+ <li>{{domxref("WebGL2RenderingContext.getBufferSubData()")}}</li>
+</ul>
+
+<h3 id="SharedArrayBuffer_の生成には_new_演算子が必要">SharedArrayBuffer の生成には new 演算子が必要</h3>
+
+<p><code>SharedArrayBuffer</code> コンストラクターは、{{jsxref("Operators/new", "new")}} 演算子で呼び出される必要があります。<code>new</code> 演算子なしで関数として <code>SharedArrayBuffer</code> コンストラクターを呼び出すと、{{jsxref("TypeError")}} をスローします。</p>
+
+<pre class="brush: js example-bad">var sab = SharedArrayBuffer(1024);
+// TypeError: calling a builtin SharedArrayBuffer constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good">var sab = new SharedArrayBuffer(1024);</pre>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<dl>
+ <dt><code>SharedArrayBuffer.length</code></dt>
+ <dd><code>SharedArrayBuffer</code> コンストラクターの length プロパティの値は 1。</dd>
+ <dt>{{jsxref("SharedArrayBuffer.prototype")}}</dt>
+ <dd>すべての <code>SharedArrayBuffer</code> オブジェクトにプロパティ追加を許可する。</dd>
+</dl>
+
+<h2 id="SharedArrayBuffer_プロトタイプオブジェクト"><code>SharedArrayBuffer</code> プロトタイプオブジェクト</h2>
+
+<p>すべての <code>SharedArrayBuffer</code> インスタンスは {{jsxref("SharedArrayBuffer.prototype")}} を継承しています。</p>
+
+<h3 id="プロパティ_2">プロパティ</h3>
+
+<p>{{page('ja/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','プロパティ')}}</p>
+
+<h3 id="メソッド">メソッド</h3>
+
+<p>{{page('ja/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','メソッド')}}</p>
+
+<h2 id="仕様">仕様</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様</th>
+ <th scope="col">状態</th>
+ <th scope="col">コメント</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td>ES2017 で初期定義。</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td>
+ <td>{{Spec2('ES8')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">Web Workers</a></li>
+ <li><a href="https://github.com/lars-t-hansen/parlib-simple">parlib-simple </a>– 同期と作業分配抽象化を提供するシンプルなライブラリー</li>
+ <li><a href="https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md">共有メモリー – 簡潔なチュートリアル</a></li>
+ <li>
+ <p><a href="https://dev.mozilla.jp/2016/05/a-taste-of-javascripts-new-parallel-primitives/">JavaScript の並列処理機能を味見してみる</a></p>
+ </li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html
new file mode 100644
index 0000000000..05237e368a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html
@@ -0,0 +1,77 @@
+---
+title: SharedArrayBuffer() コンストラクター
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer
+tags:
+ - Constructor
+ - JavaScript
+ - Reference
+ - SharedArrayBuffer
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer
+---
+<div>{{JSRef}}</div>
+
+<div class="note">
+<p><a href="https://meltdownattack.com/">Spectre</a> の対策として、 <code>SharedArrayBuffer</code> は2018年1月5日にすべての主要ブラウザーで既定で無効化されたことに注意してください。 Chrome は、 Spectre スタイルの脆弱性から保護するためにサイトアイソレーション機能が有効になっているプラットフォームでは、 <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=821270">v67 で再有効化しました</a>。</p>
+</div>
+
+<p><strong><code>SharedArrayBuffer()</code> コンストラクター</strong>は {{jsxref("SharedArrayBuffer")}} オブジェクトを生成し、これは {{jsxref("ArrayBuffer")}} オブジェクトと似た、汎用的な、固定長の生のバイナリデータバッファーを表します。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html","shorter")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate">new SharedArrayBuffer([<var>length</var>])</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>length</var></code></dt>
+ <dd>生成する配列バッファーの長さをバイト数で指定します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>指定された長さの新しい <code>SharedArrayBuffer</code> オブジェクトです。中身は 0 で初期化されます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Always_use_the_new_operator_to_create_a_SharedArrayBuffer" name="Always_use_the_new_operator_to_create_a_SharedArrayBuffer">SharedArrayBuffer を生成するには常に new 演算子を使用する</h3>
+
+<p><code>SharedArrayBuffer</code> コンストラクターは {{jsxref("Operators/new", "new")}} 演算子で構築する必要があります。 <code>SharedArrayBuffer</code> コンストラクターを <code>new</code> なしで呼び出すと、 {{jsxref("TypeError")}} が発生します。</p>
+
+<pre class="brush: js example-bad notranslate">var sab = SharedArrayBuffer(1024);
+// TypeError: calling a builtin SharedArrayBuffer constructor
+// without new is forbidden</pre>
+
+<pre class="brush: js example-good notranslate">var sab = new SharedArrayBuffer(1024);</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer-constructor', 'SharedArrayBuffer constructor')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer.SharedArrayBuffer")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("Atomics")}}</li>
+ <li>{{jsxref("ArrayBuffer")}}</li>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
+</ul>
diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html
new file mode 100644
index 0000000000..e283d7605a
--- /dev/null
+++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html
@@ -0,0 +1,80 @@
+---
+title: SharedArrayBuffer.prototype.slice()
+slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice
+tags:
+ - JavaScript
+ - Method
+ - Prototype
+ - Shared Memory
+ - SharedArrayBuffer
+ - TypedArrays
+translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice
+---
+<div>{{JSRef}}</div>
+
+<p><strong><code>SharedArrayBuffer.prototype.slice()</code></strong> メソッドは、新しい {{jsxref("SharedArrayBuffer")}} を生成し、その内容にこの <code>SharedArrayBuffer</code> のバイトを先頭位置 (含む) から末尾位置 (含まない) までをコピーして返します。先頭または末尾が負の値であった場合は、配列の先頭からではなく、末尾からのインデックスになります。このメソッドは {{jsxref("Array.prototype.slice()")}} と同じアルゴリズムです。</p>
+
+<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-slice.html")}}</div>
+
+<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox notranslate"><var>sab</var>.slice()
+<var>sab</var>.slice(<var>begin</var>)
+<var>sab</var>.slice(<var>begin</var>, <var>end</var>)</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code><var>begin</var></code> {{optional_inline}}</dt>
+ <dd>取り出す先頭位置を表す 0 から始まるインデックスです。</dd>
+ <dd>負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。 <code>slice(-2)</code> は並びの最後の2つの要素を取り出します。</dd>
+ <dd>If <code><var>begin</var></code> が undefined であった場合は、 <code>slice</code> はインデックス <code>0</code> から取り出し始めます。</dd>
+ <dt><code><var>end</var></code> {{optional_inline}}</dt>
+ <dd>0 から始まるインデックスで、取り出す範囲の末尾の<em>前</em>を示します。 <code>slice</code> はここまでを取り出しますが、 <code><var>end</var></code> は含めません。</dd>
+ <dd>例えば、 <code>slice(1,4)</code> は2番目から4番目までの要素を取り出します (添字が 1, 2, 3 の要素)。</dd>
+ <dd>負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。 <code>slice(2,-1)</code> は3番目から、並びの最後から2番目までの要素を取り出します。</dd>
+ <dd><code><var>end</var></code> が省略されると、 <code>slice</code> は並びの最後までの範囲を取り出します。 (<code>sab.byteLength</code>).</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">返値</h3>
+
+<p>取り出した要素をが入った新しい {{jsxref("SharedArrayBuffer")}} です。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<h3 id="Using_slice" name="Using_slice">slice() の使用</h3>
+
+<pre class="brush:js notranslate">var sab = new SharedArrayBuffer(1024);
+sab.slice(); // SharedArrayBuffer { byteLength: 1024 }
+sab.slice(2); // SharedArrayBuffer { byteLength: 1022 }
+sab.slice(-2); // SharedArrayBuffer { byteLength: 2 }
+sab.slice(0, 1); // SharedArrayBuffer { byteLength: 1 }
+</pre>
+
+<h2 id="Specifications" name="Specifications">仕様書</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">仕様書</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer.prototype.slice', 'SharedArrayBuffer.prototype.slice')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
+
+<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
+
+<p>{{Compat("javascript.builtins.SharedArrayBuffer.slice")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{jsxref("SharedArrayBuffer")}}</li>
+ <li>{{jsxref("Array.prototype.slice()")}}</li>
+</ul>