aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/sharedworker
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/api/sharedworker
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/ja/web/api/sharedworker')
-rw-r--r--files/ja/web/api/sharedworker/index.html107
-rw-r--r--files/ja/web/api/sharedworker/port/index.html61
2 files changed, 168 insertions, 0 deletions
diff --git a/files/ja/web/api/sharedworker/index.html b/files/ja/web/api/sharedworker/index.html
new file mode 100644
index 0000000000..9e504bc155
--- /dev/null
+++ b/files/ja/web/api/sharedworker/index.html
@@ -0,0 +1,107 @@
+---
+title: SharedWorker
+slug: Web/API/SharedWorker
+translation_of: Web/API/SharedWorker
+---
+<div>{{APIRef("Web Workers API")}}</div>
+
+<p><code><strong>SharedWorker</strong></code> インターフェースは複数のブラウザコンテキストからアクセス可能な Worker を提供します。複数のブラウザコンテキストとは、複数のウィンドウや iframe、Worker などを指します。Dedicated Worker とは異なるインタフェースと、異なるグローバルスコープを持ちます。スコープに関しては {{domxref("SharedWorkerGlobalScope")}} を参照してください。</p>
+
+<div class="note">
+<p><strong>付記:</strong>同じオリジン、つまりプロトコル、ホスト名、ポートが全て同じ場合にのみ、SharedWorker は異なるブラウザコンテキスト間で共有されます。</p>
+</div>
+
+<h2 id="コンストラクタ">コンストラクタ</h2>
+
+<dl>
+ <dt>{{domxref("SharedWorker.SharedWorker", "SharedWorker()")}}</dt>
+ <dd>指定された URL のスクリプトを実行する SharedWorker を作成します。</dd>
+</dl>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<p><em>{{domxref("EventTarget")}} のプロパティを継承し、 {{domxref("AbstractWorker")}} で定義されるプロパティを実装しています。</em></p>
+
+<dl>
+ <dt>{{domxref("AbstractWorker.onerror")}}</dt>
+ <dd>type <code>error</code> である {{domxref("ErrorEvent")}} がバブリングした時に呼ばれる {{domxref("EventListener")}}</dd>
+ <dt>{{domxref("SharedWorker.port")}} {{readonlyInline}}</dt>
+ <dd>通信とコントロールに利用される {{domxref("MessagePort")}} オブジェクトを返します。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<p><em>{{domxref("EventTarget")}} のメソッドを継承し、 {{domxref("AbstractWorker")}} に定義されるメソッドを実装します。</em></p>
+
+<h2 id="例">例</h2>
+
+<p><a class="external external-icon" href="https://github.com/mdn/simple-shared-worker">SharedWorker の基本利用例</a> (<a class="external external-icon" href="http://mdn.github.io/simple-shared-worker/">ライブデモ</a>) には 2 つの HTML ページがあり、それぞれでは JavaScript で単純な計算を行っています。それぞれのスクリプトは計算を行うために同じ JS ファイルを Worker に実行させています。2 つのページが別のウインドウで動作していたとしても、同じ Worker にアクセスできています。</p>
+
+<p><code>SharedWorker</code> オブジェクトは {{domxref("SharedWorker.SharedWorker", "SharedWorker()")}} コンストラクタを利用して、次のように作成します:</p>
+
+<pre class="brush: js">var myWorker = new SharedWorker("worker.js");
+</pre>
+
+<p>それぞれのスクリプトは {{domxref("MessagePort")}} オブジェクトを通じて Worker にアクセスします。このオブジェクトは {{domxref("SharedWorker.port")}} プロパティから取得できます。addEventListener を読んで onmessage イベントのハンドラを登録したら、<code>start()</code> メソッドを呼んでポートを手動で開始できます:</p>
+
+<pre class="brush: js">myWorker.port.start();</pre>
+
+<p>ポートが開始されたら、Worker に向けてメッセージを送ったり、送られたメッセージを受け取ったりできます。これらには <code>port.postMessage()</code> と <code>port.onmessage</code> を利用します:</p>
+
+<pre class="brush: js">first.onchange = function() {
+ myWorker.port.postMessage([first.value,second.value]);
+ console.log('Message posted to worker');
+ }
+
+ second.onchange = function() {
+ myWorker.port.postMessage([first.value,second.value]);
+ console.log('Message posted to worker');
+ }
+
+ myWorker.port.onmessage = function(e) {
+ result1.textContent = e.data;
+ console.log('Message received from worker');
+ }</pre>
+
+<p>Worker の内部では {{domxref("SharedWorkerGlobalScope.onconnect")}} に対してハンドラを設定することで、上述したポートへの接続を処理できます。Worker に関連付けられたポートは  {{event("connect")}} イベントの <code>ports</code> 属性で参照できます。{{domxref("MessagePort")}} <code>の start()</code> メソッドによるポート開始後は、<code>onmessage</code> ハンドラでメインスレッドからのメッセージを処理します。</p>
+
+<pre class="brush: js">onconnect = function(e) {
+ var port = e.ports[0];
+
+ port.addEventListener('message', function(e) {
+ var workerResult = 'Result: ' + (e.data[0] * e.data[1]);
+ port.postMessage(workerResult);
+ });
+
+ port.start(); // Required when using addEventListener. Otherwise called implicitly by onmessage setter.
+}</pre>
+
+<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('HTML WHATWG', "#sharedworker", "SharedWorker")}}</td>
+ <td>{{Spec2('HTML WHATWG')}}</td>
+ <td>{{SpecName("Web Workers")}} との差分なし</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+
+
+<p>{{Compat("api.SharedWorker")}}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li>{{domxref("Worker")}}</li>
+ <li><a class="internal" href="/docs/Web/Guide/Performance/Using_web_workers">Web workers の利用</a></li>
+</ul>
diff --git a/files/ja/web/api/sharedworker/port/index.html b/files/ja/web/api/sharedworker/port/index.html
new file mode 100644
index 0000000000..5afdd7fed5
--- /dev/null
+++ b/files/ja/web/api/sharedworker/port/index.html
@@ -0,0 +1,61 @@
+---
+title: SharedWorker.port
+slug: Web/API/SharedWorker/port
+tags:
+ - API
+ - Property
+ - Reference
+ - SharedWorker
+ - Web Workers
+ - port
+translation_of: Web/API/SharedWorker/port
+---
+<div>{{APIRef("Web Workers API")}}</div>
+
+<p>{{domxref("SharedWorker")}} インターフェースの <code><strong>port</strong></code> プロパティは、shared worker を制御したり通信したりするために使用する {{domxref("MessagePort")}} オブジェクトを返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">myWorker.port;</pre>
+
+<h3 id="値">値</h3>
+
+<p>{{domxref("MessagePort")}} オブジェクト</p>
+
+<h2 id="例">例</h2>
+
+<p>次のコードスニペットでは、{{domxref("SharedWorker.SharedWorker", "SharedWorker()")}} コンストラクターを使用して <code>SharedWorker</code> オブジェクトを生成しています。<code>SharedWorker.port</code> プロパティ経由で {{domxref("MessagePort")}} オブジェクトを使用して、複数のスクリプトから worker にアクセスできます — port は <code>start()</code> メソッドを使用して開始します:</p>
+
+<pre class="brush: js">var myWorker = new SharedWorker('worker.js');
+myWorker.port.start();</pre>
+
+<p>完全なサンプルについては、<a class="external external-icon" href="https://github.com/mdn/simple-shared-worker">Basic shared worker example</a> (<a class="external external-icon" href="http://mdn.github.io/simple-shared-worker/">run shared worker</a>) を参照してください。</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('HTML WHATWG', "#dom-sharedworker-port", "AbstractWorker.onerror")}}</td>
+ <td>{{Spec2('HTML WHATWG')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("api.SharedWorker.port")}}</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li>{{domxref("SharedWorker")}} インターフェース</li>
+</ul>