[1] [DFN[[RUBYB[ワーカー環境]@en[worker environment]]]]は、[[ワーカー]]で用いられる[[JavaScript大域環境]]です。
[[専用ワーカー環境]]と[[共有ワーカー環境]]の二種類があります。

* 仕様書

[REFS[
- [14] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#worker-environment>
]REFS]

* ワーカー環境と文書環境の違い

[2] [[ワーカー環境]]と[[文書環境]]には、次のような違いがあります。

;; [16] この違いは [[Web IDL]] [[拡張属性]] [CODE[[[Exposed]]]] によって仕様書上に示されています。

[FIG[
- [3] [[大域オブジェクト]]の違い。[[大域オブジェクト]]として使われる[[インターフェイス]]が違っており、
それぞれ自環境の[[インターフェイス]]のみが[[JavaScriptに晒されます]]。
-- [[文書環境]]では [CODE(DOMi)@en[[[Window]]]]
-- [[ワーカー環境]]では [CODE(DOMi)@en[[[DedicatedWorkerGlobalScope]]]] または
[CODE(DOMi)@en[[[SharedWorkerGlobalScope]]]]
- [4] [[ワーカー環境]]では [[DOM]] [[API]] は[[JavaScriptに晒され]]ません。
-- <http://www.whatwg.org/specs/web-apps/current-work/#apis-available-to-workers>
-- [CODE(DOMi)@en[[[Node]]]], [CODE(DOMi)@en[[[Attr]]]], [CODE(DOMi)@en[[[NodeList]]]], [CODE(DOMi)@en[[[HTMLCollection]]]], 
([CODE(DOMi)@en[[[NamedNodeMap]]]]), [CODE(DOMi)@en[[[Range]]]],
[CODE(DOMi)@en[[[NodeIterator]]]], [CODE(DOMi)@en[[[TreeWalker]]]], [CODE(DOMi)@en[[[DOMImplementation]]]],
[CODE(DOMi)@en[[[MutationObserver]]]], [CODE(DOMi)@en[[[MutationRecord]]]] とその子孫は含まれます。
-- [CODE(DOMi)@en[[[DOMParser]]]], [CODE(DOMi)@en[[[XMLSerializer]]]], 
[CODE(DOMi)@en[[[XPathEvaluator]]]], [CODE(DOMi)@en[[[XPathNSResolver]]]], [CODE(DOMi)@en[[[XPathExpression]]]],
[CODE(DOMi)@en[[[XPathResult]]]], [CODE(DOMi)@en[[[XSLTProcessor]]]] も含まれそうです。
-- [CODE(DOMi)@en[[[Event]]]] とその子孫、 [CODE(DOMi)@en[[[EventTarget]]]] は晒されます [SRC[>>17]]。
- [5] [CODE(DOMi)@en[[[WorkerNavigator]]]] [[インターフェイス]]は[[ワーカー環境]]でのみ[[JavaScriptに晒されます]]。
-- <http://www.whatwg.org/specs/web-apps/current-work/#workernavigator>
-- [[文書環境]]でのみ [CODE(DOMi)@en[[[Navigator]]]] があります。
- [11] [CODE(DOMi)@en[[[WorkerLocation]]]] [[インターフェイス]]は[[ワーカー環境]]でのみ[[JavaScriptに晒されます]]。
-- <http://www.whatwg.org/specs/web-apps/current-work/#worker-locations>
-- [[文書環境]]でのみ [CODE(DOMi)@en[[[Location]]]] があります。
- [12] [CODE(DOMi)@en[[[XMLHttpRequest]]]] [[インターフェイス]]は[[文書環境]]と[[ワーカー環境]]で違います。
-- <http://xhr.spec.whatwg.org/#xmlhttprequest>
- [13] [CODE(DOMi)@en[[[FormData]]]] [[インターフェイス]]は[[文書環境]]と[[ワーカー環境]]で違います。
-- <http://xhr.spec.whatwg.org/#formdata>
]FIG]

* 歴史

[7] [[ワーカー環境]]で[[JavaScriptに晒される]]ものについて、次のようにしなければ[['''ならない''']] [SRC[>>6]]
と規定がありました。これは >>15 までに [CODE[[[Exposed]]]] に置き換えられました。

[FIG[
- [8] 原則として[[JavaScriptに晒し]]ません。
- [9] [[JavaScriptに晒す]]と規定されているものは晒します。
- [10] [[JavaScriptに晒す]]ものからアクセス可能な[[オブジェクト]]の[[インターフェイス]]や投げられる[[例外]]は
[[JavaScriptに晒し]]ます。
]FIG]

[REFS[
- [15] [CITE@en[Web Applications 1.0 r8467 Remove the text made redundant by ''''''[''''''Exposed'''''']'''''']] ([TIME[2014-02-06 04:34:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=8466&to=8467>
- [6] [DEL[[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-10-18 20:52:42 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#interface-objects-and-constructors>]]
-- >>15 により削除されました
]REFS]

[REFS[
- [17] [CITE[Expose events in workers · 0f69e71 · whatwg/dom]] ([TIME[2014-04-11 22:56:03 +09:00]] 版) <https://github.com/whatwg/dom/commit/0f69e7175dcae9edffa636bb213991330d225bf3>
]REFS]