diff --git a/files/ja/web/api/web_workers_api/functions_and_classes_available_to_workers/index.md b/files/ja/web/api/web_workers_api/functions_and_classes_available_to_workers/index.md
index dc656f8ae7d9f..8ad9883e5416a 100644
--- a/files/ja/web/api/web_workers_api/functions_and_classes_available_to_workers/index.md
+++ b/files/ja/web/api/web_workers_api/functions_and_classes_available_to_workers/index.md
@@ -1,61 +1,38 @@
---
-title: Web Workers が使用できる関数とクラス
+title: ウェブワーカーが使用できる関数やクラス
slug: Web/API/Web_Workers_API/Functions_and_classes_available_to_workers
+l10n:
+ sourceCommit: 6fefcdd237a377af5c066dc2734c118feadbbef9
---
-標準的な [JavaScript](/ja/docs/Web/JavaScript) の関数({{jsxref("String")}} や {{jsxref("Array")}}、{{jsxref("Object")}}、 {{jsxref("JSON")}} など)に加えて、DOM から worker に利用できる様々な関数があります。この記事ではそれらの機能のリストを提供します。
-
-**Worker は、現在の window とは異なるグローバルコンテキスト、 {{domxref("DedicatedWorkerGlobalScope")}} で実行されます。**既定では {{domxref("Window")}} のメソッドとプロパティは使用できませんが、`Window` に似ている {{domxref("DedicatedWorkerGlobalScope")}} は {{domxref("WindowTimers")}} と {{domxref("WindowBase64")}} を実装しています。
-
-## worker の種類別のプロパティとメソッドの比較
-
-| 関数 | 専用 workers | 共有 workers | サービス workers | Chrome workers {{Non-standard_inline}} | workers の外側 |
-| ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | ----------------------------------------- |
-| {{domxref("WindowBase64.atob", "atob()")}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("Window")}} で使用可能。 |
-| {{domxref("WindowBase64.btoa", "btoa()")}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("Window")}} で使用可能。 |
-| {{domxref("WindowTimers.clearInterval", "clearInterval()")}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("Window")}} で使用可能。 |
-| {{domxref("WindowTimers.clearTimeout", "clearTimeout()")}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("Window")}} で使用可能。 |
-| {{domxref("Window.dump()", "dump()")}} {{non-standard_inline}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("Window")}} で使用可能。 |
-| {{domxref("WindowTimers.setInterval", "setInterval()")}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("Window")}} で使用可能。 |
-| {{domxref("WindowTimers.setTimeout", "setTimeout()")}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("Window")}} で使用可能。 |
-| {{domxref("WorkerGlobalScope.importScripts", "importScripts()")}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | 使用不可。 |
-| {{domxref("WorkerGlobalScope.close", "close()")}} {{non-standard_inline}} | {{domxref("WorkerGlobalScope")}} で使用可能。 | {{domxref("WorkerGlobalScope")}} で使用可能。 | 使用可能だが、何も実行しない。 | 不明。 | 使用不可。 |
-| {{domxref("DedicatedWorkerGlobalScope.postMessage", "postMessage()")}} | {{domxref("DedicatedWorkerGlobalScope")}} で使用可能。 | 使用不可。 | 使用不可。 | 不明。 | 使用不可。 |
-
-## worker で使用できる API
-
-| 関数 | 機能 | Gecko(Firefox)のサポート状況 | IE のサポート状況 | Blink(Chrome と Opera) のサポート状況 | WebKit(Safari) のサポート状況 |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | -------------------------------- |
-| {{domxref("Broadcast_Channel_API","Broadcast Channel API")}} | 同じ {{glossary("origin", "オリジン")}}(通常は同じサイトのページ)で {{glossary("browsing context", "ブラウジングコンテキスト")}}(_window_ 、 _tab_、*frame、*あるいは*iframe*)間の単純な通信ができる。 | {{ CompatGeckoDesktop(38)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
-| {{domxref("Cache", "Cache")}} | Cache API は現在のオリジンと関連付けられたキャッシュストレージをプログラムで制御する機能を提供する。 | {{CompatVersionUnknown}} | {{CompatNo}} | {{ CompatChrome(43) }} | {{CompatUnknown}} |
-| {{domxref("Channel_Messaging_API", "Channel Messaging API")}} | 同じ document に添付されている異なるブラウジングコンテキスト(たとえば、2 つの iFrame、あるいはメインの document と iFrame、{{domxref("SharedWorker")}} を介した 2 つの document 、あるいは 2 つの worker )にて、2 つの別々のスクリプトが 2 つのポートを介して 直接通信できる。 | {{ CompatGeckoDesktop(41)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{domxref("Console", "Console API")}} | ブラウザーのデバッグコンソールへのアクセスを提供する(たとえば、Firefox の [Web コンソール](/ja/docs/Tools/Web_Console))。どのように動作するかの詳細はブラウザーごとに異なるが、一般的に提供されている機能セットの*デファクト*である。 | {{ CompatGeckoDesktop(38)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{domxref("CustomEvent")}} | **`CustomEvent`** インターフェースは、あらゆる用途でアプリケーションによって初期化されるイベントを表す。 | {{ CompatGeckoDesktop(48)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{domxref("Data_Store_API", "Data Store")}} | 複数の Firefox OS アプリケーションで、素早く効率的かつセキュアな相互のデータの保存や共有を行うための強力で柔軟なストレージ機構。 | v1.0.1 から、Firefox OS 内部(認定の通った)アプリケーションのみ。 | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
-| {{domxref("DOMRequest")}} と {{domxref("DOMCursor")}} | それぞれ、これらのオブジェクトは進行中の操作と(たとえば、成功時や失敗時の操作に反応するリスナを使って)、結果リストを跨いだ進行中の操作を表す。 | {{ CompatGeckoDesktop(41)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
-| {{domxref("Fetch_API", "Fetch")}} | Fetch 仕様はリソースを取得について、最新定義と、取得用の API (たとえば、ネットワーク経由で)を提供する。 | 多くは{{ CompatGeckoDesktop(34)}} に(設定が必要)、いくつかの機能はそれ以降で。 | {{CompatNo}} | {{ CompatChrome(42) }} {{ CompatChrome(41) }} 設定が必要 | {{CompatNo}} |
-| {{domxref("FileReader")}} | この API では、 {{domxref("Blob")}} と {{domxref("File")}} オブジェクトの非同期読み取りが可能。 | {{CompatGeckoDesktop(46)}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} |
-| {{domxref("FileReaderSync")}} | この API では、{{domxref("Blob")}} と {{domxref("File")}} オブジェクトの同期読み取りが可能。worker 内でのみ実行可能な API。 | {{CompatGeckoDesktop(8)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
-| {{domxref("FormData")}} | `FormData` オブジェクトは、XMLHttpRequest [`send()`]( "XMLHttpRequest#send()") メソッドを使用して送信できる Form フィールドとその値を表す key/value ペアのセットを簡単に構築する方法を提供する。 | {{CompatUnknown}} ({{CompatGeckoDesktop(39)}} で実装されているはずである) | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
-| {{domxref("ImageData")}} | {{domxref("canvas")}} 要素の領域の下にあるピクセルデータ。このデータ操作は、Web Worker に委任したほうが適しているような、複雑な処理になりうる。 | {{CompatGeckoDesktop(25)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
-| {{domxref("IndexedDB_API", "IndexedDB")}} | シンプルな値と階層的なオブジェクトを保持するレコードを保存するデータベース。 | {{CompatGeckoDesktop(37)}}, {{domxref("IDBCursorWithValue")}} は {{CompatGeckoDesktop(42)}} から。 | 10.0 | {{CompatVersionUnknown}} | {{CompatNo}} |
-| [Network Information API](/ja/docs/Web/API/Network_Information_API) | システムの接続についての情報を汎用的な接続タイプ(例えば 'wifi', 'cellular' など)の用語で提供する。 | {{CompatGeckoMobile(53)}} モバイルのみ | {{CompatVersionUnknown}} モバイルのみ | {{CompatNo}} | {{CompatNo}} |
-| {{domxref("Notifications_API", "Notifications")}} | Web ページがエンドユーザーへのシステム通知の表示を制御できるようにする。 | {{CompatGeckoDesktop(41)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
-| {{domxref("Performance")}} | **`Performance`** インターフェースは、指定されたページのタイミング関連のパフォーマンス情報を表す。 | {{ CompatGeckoDesktop("34.0") }} | {{CompatUnknown}} | {{ CompatChrome("33.0") }} | {{CompatUnknown}} |
-| {{domxref("PerformanceEntry")}}, {{domxref("PerformanceMeasure")}}, {{domxref("PerformanceMark")}}, {{domxref("PerformanceObserver")}}, {{domxref("PerformanceResourceTiming")}} | アプリケーションのネットワークの性能についていくつかの面から詳細なデータを獲得、分析することを可能にする。 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{jsxref("Promise")}} | 非同期関数を記述できる JavaScript オブジェクト。 | {{CompatGeckoDesktop(28)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| [Server-sent events](/ja/docs/Web/API/Server-sent_events) | サーバーから、接続が開いた後に、あらゆる箇所のウェブページにデータをプッシュさせる。 | {{CompatGeckoDesktop(53)}} (今のところ専用 worker と共有 worker でのみ有効; service worker では無効) | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
-| {{domxref("ServiceWorkerRegistration")}} | 標準 worker の内部から service worker を登録して、関連する機能を使用できる。 | {{CompatGeckoDesktop(40)}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} |
-| {{domxref("TextEncoder")}} と {{domxref("TextDecoder")}} | 特定のエンコーディングに エンコード、またはでコードできる新しい {{domxref("TextEncoder")}} や {{domxref("TextDecoder")}} を生成して返す。 | {{CompatGeckoDesktop(20)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
-| {{ domxref("URL") }} | Worker にアクセスできる {{domxref("Blob")}} とともに [URL.createObjectURL](/ja/docs/DOM/window.URL.createObjectURL) と [URL.revokeObjectURL](/ja/docs/DOM/window.URL.revokeObjectURL) 静的メソッドを使用できる。 Worker は {{domxref("URL.URL", "URL()")}} コンストラクタを使用して新しい URL を生成し、返されたオブジェクトの通常のメソッドを呼び出せる。 | {{CompatGeckoDesktop(21)}}。URL() コンストラクタは {{CompatGeckoDesktop(26)}} から。 | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
-| {{domxref("OffscreenCanvas")}} の [WebGL](/ja/docs/Web/API/WebGL_API) | WebGL(Web グラフィックライブラリ)は、プラグインを使用せずにブラウザー互換性を保ちながらインタラクティブな 3D と 2D レンダリングができる JavaScript API である。 | {{CompatGeckoDesktop(44)}}(設定で有効化する)。`about:config` で、`gfx.offscreencanvas.enabled` を true に設定する。 | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
-| {{domxref("WebSocket")}} | 新しい {{domxref("WebSocket")}} オブジェクトを生成して返す。これは標準の `WebSocket()` コンストラクタの動作を模倣する。 | {{CompatGeckoDesktop(37)}} | 11.0 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{domxref("Worker")}} | 新しい {{ domxref("Worker") }} を生成する。worker はより多くの worker を生成できる。 | {{CompatGeckoDesktop("1.9.1")}} | 10.0 | {{CompatNo}} [crbug.com/31666](https://code.google.com/p/chromium/issues/detail?id=31666) を見てください。 | {{CompatNo}} |
-| {{domxref("WorkerGlobalScope")}} | グローバルスコープの worker。このオブジェクトは [Worker 特有の関数](#workerscope)を定義する。 | {{CompatVersionUnknown}} | 10.0 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{domxref("WorkerLocation")}} | worker で使用可能な {{domxref("Location")}} インターフェースのサブセット。 | {{CompatGeckoDesktop(1.9.2)}} | 10.0 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{domxref("WorkerNavigator")}} | worker で使用可能な {{domxref("Navigator")}} インターフェースのサブセット。 | 基本実装 {{CompatVersionUnknown}} {{domxref("NavigatorID.appCodeName", "appCodeName")}}、{{domxref("NavigatorID.product", "product")}}、{{domxref("NavigatorID.taintEnabled", "taintEnabled()")}}:{{CompatGeckoDesktop(28)}} {{domxref("WorkerNavigator.onLine", "onLine")}}:{{CompatGeckoDesktop(29)}} {{domxref("NavigatorLanguage")}}: {{CompatVersionUnknown}} | {{domxref("NavigatorID.appName", "appName")}}、{{domxref("NavigatorID.appVersion", "appVersion")}}、{{domxref("WorkerNavigator.onLine", "onLine")}}、{{domxref("NavigatorID.platform", "platform")}}、{{domxref("NavigatorID.userAgent", "userAgent")}}: 10.0 Other: {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-| {{domxref("XMLHttpRequest")}} | 新しい {{domxref("XMLHttpRequest")}} オブジェクトを生成して返す。これは標準の `XMLHttpRequest()` コンストラクタの動作を模倣する。`XMLHttpRequest` の `responseXML` と `channel` 属性は常に `null` を返すことに注意。 | 基本: {{CompatGeckoDesktop("1.9.1")}}{{domxref("XMLHttpRequest.response", "response")}} と {{domxref("XMLHttpRequest.responseType", "responseType")}} は、{{CompatGeckoDesktop("10")}} から使用可能。{{domxref("XMLHttpRequest.timeout", "timeout")}} と {{domxref("XMLHttpRequest.ontimeout", "ontimeout")}} は、{{CompatGeckoDesktop("13")}} から使用可能。 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
-
-## 関連項目
-
-- [web worker を使用する](/ja/docs/Web/API/Web_Workers_API/Using_web_workers)
+
+{{DefaultAPISidebar("Web Workers API") }}
+
+標準的な [JavaScript](/ja/docs/Web/JavaScript) の関数群({{jsxref("String")}}、{{jsxref("Array")}}、{{jsxref("Object")}}、{{jsxref("JSON")}} など)に加えて、DOM からワーカーに利用できる様々な関数があります。この記事ではそれらの機能のリストを提供します。
+
+## ワーカーのコンテキストと関数
+
+**ワーカーは、現在のウィンドウとは異なるグローバルコンテキストで実行されます。** {{domxref("Window")}} はワーカーでは直接使用することができませんが、共通のミックスイン (`WindowOrWorkerGlobalScope`) で定義されている同じメソッドの多くが利用でき、 {{domxref("WorkerGlobalScope")}} から派生した以下のようなコンテキストからワーカーが利用できます。
+
+- {{domxref("DedicatedWorkerGlobalScope")}} (専用ワーカー向け)
+- {{domxref("SharedWorkerGlobalScope")}} (共有ワーカー向け)
+- {{domxref("ServiceWorkerGlobalScope")}} ([サービスワーカー](/ja/docs/Web/API/Service_Worker_API)向け)
+
+すべてのワーカーとメインスレッドで共通の関数には(`WindowOrWorkerGlobalScope` にあるもの)には、 {{domxref("atob", "atob()")}}, {{domxref("btoa", "btoa()")}}, {{domxref("clearInterval", "clearInterval()")}}, {{domxref("clearTimeout()")}}, {{domxref("Window.dump()", "dump()")}} {{non-standard_inline}}, {{domxref("setInterval()")}}, {{domxref("setTimeout()")}} などがあります。
+
+以下の機能は、ワーカーで**のみ**使用することができます。
+
+- {{domxref("WorkerGlobalScope.importScripts", "WorkerGlobalScope.importScripts()")}} (すべてのワーカー)
+- {{domxref("DedicatedWorkerGlobalScope.postMessage")}} (専用ワーカーのみ)
+
+## ワーカーで使用できる API
+
+> **Note:** 掲載されている API に特定のバージョンのプラットフォームが対応している場合、一般にウェブワーカーで動作するとみなすことができます。
+
+以下の Web API はワーカーで利用することができます。 {{domxref("Broadcast_Channel_API","Broadcast Channel API")}}, {{domxref("Cache", "Cache API")}}, {{domxref("Channel_Messaging_API", "Channel Messaging API")}}, {{domxref("Console API", "Console API")}}, {{domxref("Crypto")}}, {{domxref("CustomEvent")}}, `DOMRequest` と `DOMCursor`, {{domxref("Fetch_API", "Fetch")}}, {{domxref("FileReader")}}, {{domxref("FileReaderSync")}} (only works in workers!), {{domxref("FormData")}}, {{domxref("ImageData")}}, {{domxref("IndexedDB_API", "IndexedDB")}}, [ネットワーク情報 API](/ja/docs/Web/API/Network_Information_API), {{domxref("Notifications_API", "通知", "", 1)}}, {{domxref("Performance")}}, {{domxref("PerformanceEntry")}}, {{domxref("PerformanceMeasure")}}, {{domxref("PerformanceMark")}}, {{domxref("PerformanceObserver")}}, {{domxref("PerformanceResourceTiming")}}, {{jsxref("Promise")}}, [サーバー送信イベント](/ja/docs/Web/API/Server-sent_events), {{domxref("ServiceWorkerRegistration")}}, {{domxref("TextEncoder")}} と {{domxref("TextDecoder")}}, {{ domxref("URL") }}, [WebGL](/ja/docs/Web/API/WebGL_API) と {{domxref("OffscreenCanvas")}}, {{domxref("WebSocket")}}, {{domxref("XMLHttpRequest")}} (ただし `responseXML` および `channel` 属性は常に null)。
+
+ワーカーは他のワーカーを起動することもできるため、 {{domxref("Worker")}}, {{domxref("WorkerGlobalScope")}}, {{domxref("WorkerLocation")}}, {{domxref("WorkerNavigator")}} の各 API も利用することができます。
+
+## 関連情報
+
+- [ウェブワーカーの使用](/ja/docs/Web/API/Web_Workers_API/Using_web_workers)
- {{domxref("Worker")}}
diff --git a/files/ja/web/api/web_workers_api/index.md b/files/ja/web/api/web_workers_api/index.md
index 23517e5d1f5f2..4aed4a153fa38 100644
--- a/files/ja/web/api/web_workers_api/index.md
+++ b/files/ja/web/api/web_workers_api/index.md
@@ -1,70 +1,91 @@
---
-title: Web Workers API
+title: ウェブワーカー API
slug: Web/API/Web_Workers_API
+l10n:
+ sourceCommit: 6fefcdd237a377af5c066dc2734c118feadbbef9
---
+
{{DefaultAPISidebar("Web Workers API")}}
-**Web Worker** とは、ウェブアプリケーションにおけるスクリプトの処理をメインとは別のスレッドに移し、バックグラウンドでの実行を可能にする仕組みのことです。時間のかかる処理を別のスレッドに移すことが出来るため、 UI を担当するメインスレッドの処理を中断・遅延させずに実行できるという利点があります。
+**ウェブワーカー** (Web Worker) とは、ウェブアプリケーションにおけるスクリプトの処理をメインとは別のスレッドに移し、バックグラウンドでの実行を可能にする仕組みのことです。時間のかかる処理を別のスレッドに移すことが出来るため、 UI を担当するメインスレッドの処理を中断・遅延させずに実行できるという利点があります。
+
+## ウェブワーカーの概念と使い方
+
+ワーカーオブジェクトはコンストラクター({{DOMxRef("Worker.Worker", "Worker()")}} など)を用いて生成され、名前を持つ JavaScript ファイルを実行します。このファイルにはワーカースレッドで実行されるコードが書かれています。
+
+ワーカースレッドの中では、 [JavaScript](/ja/docs/Web/JavaScript) の標準の一連の関数([`String`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String)、[`Array`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)、[`Object`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Object)、[`JSON`](/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON)、など)に加え、任意のコードのほとんどを実行することができます。いくつかの例外があります。例えば、ワーカー内から直接 DOM を操作することはできません。また、 [`window`](/ja/docs/Web/API/Window) オブジェクトの既定のメソッドやプロパティには使用できないものがあります。実行できるコードについては、以下の[ワーカーグローバルコンテキストと関数](#ワーカーグローバルコンテキストと関数)や[利用可能な Web API](#利用可能な_web_api) を参照してください。
+
+ワーカーとメインスレッドとの間では、メッセージのシステムを通してデータがやり取りされます。両者は `postMessage()` メソッドを使ってメッセージを送信したり、受け取ったメッセージには `onmessage` イベントハンドラーで返信したりします(メッセージは{{domxref("Worker/message_event", "メッセージ")}}イベントの `data` 属性に格納されます)。なお、データは共有されるのではなく複製されます。
+
+ワーカーが親ページと同じ{{glossary("origin", "オリジン")}}内でホスティングされるのであれば、新しいワーカーをいくつも起動することができます。また、ワーカーはネットワーク I/O において [`XMLHttpRequest`](/ja/docs/Web/API/XMLHttpRequest) を使用しますが、 `XMLHttpRequest` における `responseXML` および `channel` 属性は必ず `null` を返す点が通常と異なります。
+
+### ワーカーの種類
+
+ワーカーにはいくつもの種類があります。
+
+- 専用ワーカー (dedicated worker) は、単一のスクリプトで利用されるワーカーです。このコンテキストは {{DOMxRef("DedicatedWorkerGlobalScope")}} オブジェクトで表現されます。
+- {{DOMxRef("SharedWorker","共有ワーカー", "", 1)}} (shared worker) は、ワーカーと同じドメイン内にある限り、異なるウィンドウや iframe などで動作する複数のスクリプトで利用できるワーカーです。専用ワーカーよりも少し複雑で、スクリプトはアクティブなポートを介して通信する必要があります。
+- [サービスワーカー](/ja/docs/Web/API/Service_Worker_API)は、基本的に複数のウェブアプリケーション間やブラウザー、(利用可能なら)ネットワークの間でプロキシーサーバーとして動くものです。他にも、効果的なオフライン操作を実現したり、ネットワークリクエストを遮断してネットワークが利用できるかどうかで適切なアクションを取ったり、サーバーにある資産を更新したりすることなどを目的としています。また、プッシュ通知やバックグラウンド同期APIへのアクセスも可能になる予定です。
+
+> **Note:** [Web workers 仕様書](https://html.spec.whatwg.org/multipage/workers.html#runtime-script-errors-2)によれば、ワーカーのエラーイベントはバブリングすべきではありません({{bug(1188141)}} を参照。これは Firefox 42 で実装されました)。
+
+### ワーカーグローバルコンテキストと関数
+
+ワーカーは現在の {{DOMxRef("window")}} とは異なるグローバルなコンテキストで実行されます。 {{domxref("Window")}} はワーカーから直接利用できませんが、同じメソッドの多くは共有されるミックスイン (`WindowOrWorkerGlobalScope`) で定義され、各自の {{domxref("WorkerGlobalScope")}} から派生したコンテキストを通じてワーカーが利用できるようにします。
-## Web Worker の概念と使い方
+- {{domxref("DedicatedWorkerGlobalScope")}} (専用ワーカー向け)
+- {{domxref("SharedWorkerGlobalScope")}} (共有ワーカー向け)
+- {{domxref("ServiceWorkerGlobalScope")}} ([サービスワーカー](/ja/docs/Web/API/Service_Worker_API)向け)
-{{DOMxRef("Worker")}} オブジェクトは {{DOMxRef("Worker.Worker", "Worker()")}} などのコンストラクターで生成されるオブジェクトで、名前を持つ JavaScript ファイルを実行します。 Worker のスレッドで実行されるコードはこのファイルに書かれており、今いる {{DOMxRef("window")}} とは別のグローバルなコンテキストの中で Worker がコードを実行します。Dedicated Worker (専用ワーカー) の場合、そのコンテキストは {{DOMxRef("DedicatedWorkerGlobalScope")}} オブジェクトで表現されます (通常の Worker は単一のスクリプトで使用されますが、 Worker を共有する際は {{DOMxRef("SharedWorkerGlobalScope")}} を使用します)。
+すべてのワーカーとメインスレッドで共通の関数(`WindowOrWorkerGlobalScope` からのもの)には、{{domxref("atob", "atob()")}}、{{domxref("btoa", "btoa()")}}、{{domxref("clearInterval", "clearInterval()")}}、{{domxref("clearTimeout()")}}、{{domxref("Window.dump()", "dump()")}} {{non-standard_inline}}、{{domxref("setInterval()")}}、{{domxref("setTimeout()")}} などがあります。
-Worker のスレッドではあらゆるコードを実行できますが、いくつか例外があります。例えば、 Worker から DOM を直接操作することは出来ません。また、 {{DOMxRef("window")}} にデフォルトで用意されているメソッドやプロパティには Worker から使用できないものもあります。しかし、 [WebSockets](/ja/docs/Web/API/WebSockets_API) や [IndexedDB](/ja/docs/Web/API/IndexedDB_API) のようなデータストレージに加え、 Firefox OS における [Data Store API](/ja/docs/Web/API/Data_Store_API) など、 `window` に含まれていても使用できるものは数多くあります。詳しくは [Worker から使用できる関数とクラス](/ja/docs/Web/API/Web_Workers_API/Functions_and_classes_available_to_workers) を参照してください。
+以下の関数はワーカーでのみ利用することができます。
-Worker とメインスレッドとの間では、メッセージのシステムを通してデータがやり取りされます。両者は `postMessage()` メソッドを使ってメッセージを送信し、受け取ったメッセージには `onmessage` イベントハンドラーで返信します (メッセージは {{Event("Message")}} イベントの `data` 属性に格納されます)。なお、送信したデータは受取先でコピーされます (共有ではありません)。
+- {{domxref("WorkerGlobalScope.importScripts", "WorkerGlobalScope.importScripts()")}} (すべてのワーカー)
+- {{domxref("DedicatedWorkerGlobalScope.postMessage")}} (専用ワーカーのみ)
-メインスレッドのページと同じオリジンであれば、 Web Workers は新しい Worker をいくつでも生成できます。また、 Worker はネットワーク I/O において [`XMLHttpRequest`](/ja/docs/Web/API/XMLHttpRequest) を使用しますが、 `XMLHttpRequest` における `responseXML` と `channel` 属性は必ず `null` を返す点で通常と異なります。
+### 利用可能な Web API
-Dedicated Worker の他にも、 Worker の種類には以下のようなものがあります。
+> **Note:** 掲載されている API が特定のバージョンのプラットフォームで対応している場合、一般的にウェブワーカーでも利用可能とみなされます。また、
オブジェクト型 | +備考 | +
---|---|
+ すべてのプリミティブ型 + | +ただし、シンボルを除く | +
{{jsxref("Boolean")}} オブジェクト | ++ |
{{jsxref("String")}} オブジェクト | ++ |
{{jsxref("Date")}} | ++ |
{{jsxref("RegExp")}} | +lastIndex は保持されません。 |
+
{{domxref("Blob")}} | ++ |
{{domxref("File")}} | ++ |
{{domxref("FileList")}} | ++ |
{{jsxref("ArrayBuffer")}} | ++ |
{{jsxref("TypedArray")}} | ++ |
{{jsxref("DataView")}} | ++ |
{{domxref("ImageBitmap")}} | ++ |
{{domxref("ImageData")}} | ++ |
{{jsxref("Array")}} | ++ |
{{jsxref("Object")}} | +プレーンなオブジェクト(オブジェクトリテラルなど)のみです。 | +
{{jsxref("Map")}} | ++ |
{{jsxref("Set")}} | ++ |
{{domxref("DOMException")}} | +ブラウザーは、プロパティ {{domxref("DOMException.name", "name")}} と {{domxref("DOMException.message", "message")}} をシリアライズしなければなりません。 + 他の属性もシリアライズ/複製することができます。 | +
ネイティブの Error 型 |
+
+ エラー名は、 {{jsxref("Error")}}, {{JSxRef("EvalError")}}, {{JSxRef("RangeError")}}, {{JSxRef("ReferenceError")}}, {{JSxRef("SyntaxError")}}, {{JSxRef("TypeError")}}, {{JSxRef("URIError")}} (または "Error" に設定)の何れかでなければなりません。 +ブラウザーは {{JSxRef("AggregateError")}} の対応が whatwg/html#5749 で仕様書に追加される予定です(そして、既に一部のブラウザーが対応しています)。 + |
+