[24] [DFN[[CODE(DOMi)@en[[[Worker]]]]]] [[インターフェイス]]は、
[[専用ワーカー]]を作成し、通信するための [[API]] を提供するものです。

;; [25] [[ワーカー]]一般については[[ワーカー]]の項を参照。

* 仕様書

[REFS[
- [2] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#worker>
- [32] [CITE@en-US-x-hixie[HTML Standard]], [TIME[2021-04-12T15:12:42.000Z]], [TIME[2021-04-13T08:02:29.360Z]] <https://html.spec.whatwg.org/#dedicated-worker-agent>
]REFS]

* [CODE(DOMi)@en[Worker]] インターフェイス

** 状態

[1] [CODE(DOMi)@en[[[EventTarget]]]] の状態に加えて、次の状態があります。
[FIG(list members)[
:関連付けられた[[ワーカー]]:
:暗黙の [CODE(DOMi)@en[[[MessagePort]]]]:
]FIG]

** 構築子

[3] [CODE(DOMi)@en[[[Worker]]]] [[構築子]]は、次のようにしなければ[['''なりません''']]
[SRC[>>2]]。
[FIG(steps)[
= [4] 次の[[引数]]が指定されたものとして解釈します。
[FIG(list members)[
: [VAR[番地]] : [CODE(DOMi)@en[USVString]] (必須)
: [VAR[オプション群]] : [CODE(DOMi)@en[[[WorkerOptions]]]] (省略可能)
]FIG]
= [5] [[利用者エージェント]]の方針次第で [CODE(JS)@en[[[SecurityError]]]]
[[例外]]を[[投げ]]て停止しても構いません。
= [10] [VAR[外側設定群]]を、[[現職設定群オブジェクト]]に設定します。
= [6] [VAR[ワーカーURL]]を、
[VAR[番地]]を[VAR[外側設定群]]に対して[[構文解析][URLの構文解析]]した結果に設定します。
= [7] [VAR[ワーカーURL]]が失敗なら、
== [16] [CODE(DOMe)@en[[[SyntaxError]]]] [[例外]]を[[投げ]]て停止します。
= [12] [VAR[ワーカー]]を、新しい [CODE(DOMi)@en[[[Worker]]]] に設定します。
= [14] [VAR[外側ポート]]を、
[VAR[所有者]]を[VAR[外側設定群]]として[[新しい[CODE(DOMi)@en[MessagePort]]オブジェクトを作成]]した結果に設定します。
= [9] [VAR[外側ポート]]を[VAR[ワーカー]]と関連付けます。
= [27] [VAR[外側ポート]]を[[出荷]]します。 [SRC[[[仕様書]]になし]]
= [17] [VAR[ワーカー]]を返します。
]FIG]

[15] [[利用者エージェント]]の方針とは、例えばこのページでは[[ワーカー]]を認めない、
といったような指定を想定している [SRC[>>2]] ようです。

[18] 更に、[[並列に]]、次のようにしなければ[['''なりません''']] [SRC[>>2]]。
[FIG(steps)[
= [23] [[ワーカを走らせます][run a worker]]。
[FIG(list members middle)[
: [VAR[ワーカー]] : [VAR[ワーカー]]
: [VAR[URL]] : [VAR[ワーカーURL]]
: [VAR[外側設定群]] : [VAR[外側設定群]]
: [VAR[外側ポート]] : [VAR[外側ポート]]
: [VAR[オプション群]] : [VAR[オプション群]]
]FIG]
]FIG]

;; [26] [[ワーカー]]の[[コンストラクター]]は、他に
[CODE(DOMi)@en[[[SharedWorker]]]] と [CODE(DOMi)@en[[[ServiceWorker]]]] があります。

* [CODE(DOMi)@en[DedicatedWorkerGlobalScope]] インターフェイス

** 状態

[30] [CODE(DOMi)@en[WorkerGlobalScope]] 参照。

** メンバー

[29] [CODE(DOMi)@en[WorkerGlobalScope]] 参照。

* 専用ワーカーエージェント

[33] 
[DFN[[RUBYB[[RUBY[専用][せんよう]]ワーカーエージェント][dedicated worker agent]]]]は、
[CODE[DedicatedWorkerGlobalScope]] を1つ含む[[エージェント]]です。
[SRC[>>32]]

* 歴史

[8] [CITE@en[Fix #337: perform origin checks for workers in Fetch · whatwg/html@e86b2e4]] ([TIME[2015-11-19 16:22:56 +09:00]] 版) <https://github.com/whatwg/html/commit/e86b2e4b8fdef45404c61c1a85c40da7edf8b561>


[19] [CITE@en[Rewrite global object initialization to delegate to ES · whatwg/html@cf0355d]]
([TIME[2015-12-16 20:12:41 +09:00]] 版)
<https://github.com/whatwg/html/commit/cf0355d7e0e229b98f7fbd51b8c7608010c787f5>

[20] [CITE@en[Add module workers · whatwg/html@e3a5bb7]]
([TIME[2016-02-15 23:15:08 +09:00]] 版)
<https://github.com/whatwg/html/commit/e3a5bb757f64374c37d8c4528c01298463ef0b2a>

[21] [CITE@en[Make script fetching more correct with regard to request destinations · whatwg/html@6dc9c9e]]
([TIME[2016-02-29 18:11:43 +09:00]] 版)
<https://github.com/whatwg/html/commit/6dc9c9e1efcc3122294fb015e4a4eea66456a611>

[22] [CITE@en[Use outside settings object to fetch workers]]
( ([[domenic]]著, [TIME[2016-05-11 19:57:24 +09:00]]))
<https://github.com/whatwg/html/commit/4e2b0066cb88fdc7ac65cc6e6a7eb40ac39418bd>

[11] [CITE@en[Use USVString for all URLs]]
( ([[domenic]]著, [TIME[2016-05-20 22:02:29 +09:00]]))
<https://github.com/whatwg/html/commit/018b983b77b2cd908f6d00100e7e0abe893dd2c3>

[13] [CITE@en[Use current instead of incumbent + entry in worker constructors]]
([[domenic]]著, [TIME[2016-07-07 01:46:49 +09:00]])
<https://github.com/whatwg/html/commit/485c76a84611d094839b3b60d13e6e997594800b>

[28] [CITE@en[Define agents and agent clusters]]
([[annevk]]著, [TIME[2017-04-26 18:46:01 +09:00]])
<https://github.com/whatwg/html/commit/4db86547f1184e7ceb4f1009cb3bef28101eda4f>

[31] [CITE@en[Add a name to dedicated workers, for debugging]]
([[domenic]]著, [TIME[2017-05-12 12:43:56 +09:00]])
<https://github.com/whatwg/html/commit/3bb652169741d5dd94d7f1b390f6491e38d640cb>