Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
ウェブワーカー (Web Worker) とは、ウェブアプリケーションにおけるスクリプトの処理をメインとは別のスレッドに移し、バックグラウンドでの実行を可能にする仕組みのことです。時間のかかる処理を別のスレッドに移すことが出来るため、 UI を担当するメインスレッドの処理を中断・遅延させずに実行できるという利点があります。
ワーカーオブジェクトはコンストラクター(Worker() など)を用いて生成され、名前を持つ JavaScript ファイルを実行します。このファイルにはワーカースレッドで実行されるコードが書かれています。
ワーカースレッドの中では、 JavaScript の標準の一連の関数(String、Array、Object、JSON、など)に加え、任意のコードのほとんどを実行することができます。いくつかの例外があります。例えば、ワーカー内から直接 DOM を操作することはできません。また、 Window オブジェクトの既定のメソッドやプロパティには使用できないものがあります。実行できるコードについては、対応している関数や対応している Web APIを参照してください。
ワーカーとメインスレッドとの間では、メッセージのシステムを通してデータがやり取りされます。両者は postMessage() メソッドを使ってメッセージを送信したり、受け取ったメッセージには onmessage イベントハンドラーで返信したりします(メッセージはメッセージイベントの data 属性に格納されます)。なお、データは共有されるのではなく複製されます。
ワーカーが親ページと同じオリジン内でホスティングされるのであれば、新しいワーカーをいくつも起動することができます。
また、ワーカーは fetch() または XMLHttpRequest API を使用してネットワークリクエストを作成することができます(ただし、 XMLHttpRequest の responseXML 属性が常に null になることに注意してください)。
ワーカーにはいくつもの種類があります。
Window はワーカーから直接利用できませんが、同じメソッドの多くは共有されるミックスイン (WindowOrWorkerGlobalScope) で定義され、各自の WorkerGlobalScope から派生したコンテキストを通じてワーカーが利用できるようにします。
実行しているワーカーのスレッドを表します。実行しているワーカーのコードへメッセージを送る際に用います。
WorkerLocationWorker で実行されるスクリプトの絶対位置を定義します。
SharedWorker複数の閲覧コンテキスト(すなわちウィンドウ、タブ、iframe)や他のワーカーからアクセス可能な特定の種類のワーカーを表します。
WorkerGlobalScopeあらゆるワーカーの一般的なスコープを表します(通常のウェブコンテンツに対して Window が行うのと同じ役割をします)。それぞれの種類のワーカーには、このインターフェイスを継承し、より具体的な機能を追加したスコープオブジェクトがあります。
DedicatedWorkerGlobalScope専用ワーカーのスコープを表します。 WorkerGlobalScope を継承しており、独自の機能がいくつか加えられています。
SharedWorkerGlobalScope共有ワーカーのスコープを表します。 WorkerGlobalScope を継承しており、独自の機能がいくつか加えられています。
WorkerNavigatorユーザーエージェント(クライアント)に関する識別名と状態を表します。
簡単なデモと基本的な使い方は以下を参照してください。
これらのデモの動く仕組みを詳しく知りたい場合は。ウェブワーカーの使用を参照してください。
| HTML # workers |
This page was last modified on 2025年5月16日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.