/[suikacvs]/markup/html/html5/spec-ja/workers-non-normative.ja.html.u8
Suika

Contents of /markup/html/html5/spec-ja/workers-non-normative.ja.html.u8

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.20 - (hide annotations) (download)
Fri Jul 25 15:16:49 2008 UTC (17 years, 11 months ago) by wakaba
Branch: MAIN
Changes since 1.19: +5 -7 lines
*** empty log message ***

1 wakaba 1.1
2     <html lang=en-US-x-hixie>
3     <head>
4     <title>Web Workers</title>
5     <link href="http://www.whatwg.org/style/specification" rel=stylesheet>
6     <!-- Japanese-translation-only style rules -->
7     <style>
8 wakaba 1.14 em, i {
9     font-style: normal;
10 wakaba 1.1 text-decoration: underline;
11     }
12 wakaba 1.14
13     .note, .warning {
14     font-style: normal;
15     }
16     p.note:before {
17     content: '注意: ';
18     }
19     p.warning:before {
20     content: '\26A0 警告! ';
21     }
22    
23 wakaba 1.1 ins.ja-note {
24     background-color: #EEFFFF;
25     color: black;
26     }
27 wakaba 1.16 span.ja-translation {
28     border-style: none !important;
29     }
30 wakaba 1.18
31     /* From Web Workers <style>, modified for Japanese texts */
32     p > span.ja-translation > span:not([title=""]):not([class="big-issue"]),
33     li > span.ja-translation > span:not([title=""]):not([class="big-issue"]) {
34     border-bottom: solid #99CC99;
35     }
36    
37 wakaba 1.1 </style>
38     <link href="http://www.whatwg.org/images/icon" rel=icon>
39    
40 wakaba 1.16 <style>
41     p > span:not([title=""]):not([class="big-issue"]), li > span:not([title=""]):not([class="big-issue"]) { border-bottom: solid #99CC99; }
42     </style>
43    
44 wakaba 1.1 <body class=draft>
45     <div class=head>
46     <p><span class=ja-translation lang=ja><a class=logo href="http://www.whatwg.org/" rel=home><img lang=en alt=WHATWG
47     src="http://www.whatwg.org/images/logo"></a></span></p>
48    
49     <h1 id=web-workers>Web Workers</h1>
50    
51     <h2 class="no-num no-toc" id=draft><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
52 wakaba 1.13 <ins class=ja-note>(原文出版日)</ins> 2008年7月18日</span></h2>
53 wakaba 1.1
54     <p><span class=ja-translation lang=ja>みなさんにも作業にご参加いただけます。 <a
55     href="http://www.whatwg.org/mailing-list">作業部会の議論用メイリング・リストに参加してください。</a></span></p>
56    
57     <p><span class=ja-translation lang=ja><strong>Web デザイナー!</strong> みなさんのための <a
58     href="http://blog.whatwg.org/faq/" lang=en>FAQ</a>、<a
59     href="http://forums.whatwg.org/">掲示板</a>、<a
60     href="http://www.whatwg.org/mailing-list#help">ヘルプ用メイリング・リスト</a>があります!
61    
62     </span><p>
63    
64     <!-- Japanese-translation-only notes -->
65 wakaba 1.3 <ins class=ja-note style="display: block" lang=ja>
66 wakaba 1.1 <p>この文書は、 WHATWG HTML5 仕様書の日本語訳です。
67     HTML5 の正式な仕様書は英語版だけであり、
68     この日本語訳はあくまで参考としてご利用ください。
69    
70 wakaba 1.3 <p lang=en>This document is a Japanese translation of
71 wakaba 1.1 the WHATWG HTML5 specification. Note that the only normative specification
72     for the HTML5 is the original English version and this Japanese
73     translation is non‐normative.
74 wakaba 1.3
75     <p>日本語訳は <a href="edit/" rel=edit>Web 界面</a>を使って編集できます。
76     編集結果はおよそ3時間おきに反映されます。
77     また、原文の変更には毎日自動的に追随しています。
78    
79 wakaba 1.8 <p lang=en>The Japanese text can be edited using the <a href="edit/" rel=edit>Web
80 wakaba 1.3 interface</a>. Any modifications will be reflected to this translation
81     in about three hours. Note that any changes to the original specification
82     will automatically be incorporated to this translation every day.
83 wakaba 1.1 </ins>
84    
85     <p><span><!-- dummy --></span></p>
86    
87     <dl>
88     <dt><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>この版</span><dd><a
89 wakaba 1.13 href="http://www.whatwg.org/specs/web-workers/current-work/">http://whatwg.org/ww</a>
90 wakaba 1.1
91     <dt><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>改版履歴:</span><dd><span class=ja-translation lang=ja><span lang=en>Twitter</span> メッセージ (編集上の変更以外): <a
92 wakaba 1.20 href="http://twitter.com/WHATWG">http://twitter.com/WHATWG</a></span><dd><span class=ja-translation lang=ja>Commit-Watchers メイリング・リスト: <a
93     href="http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org">http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org</a></span><dd><span class=ja-translation lang=ja>対話的 <span lang=en>Web</span> 界面: <a href="http://html5.org/tools/web-workers-tracker">http://html5.org/tools/web-workers-tracker</a></span><dd><span class=ja-translation lang=ja><span lang=en>Subversion</span> 界面: <a href="http://svn.whatwg.org/webworkers/">http://svn.whatwg.org/webworkers/</a></span><dt><span class=ja-translation lang=ja>問題:</span><dd><span class=ja-translation lang=ja>フィードバックの送信先: <a
94 wakaba 1.1 href="http://www.whatwg.org/mailing-list">[email protected]</a></span><dd><span class=ja-translation lang=ja>フィードバックの閲覧・投票: <a
95     href="http://www.whatwg.org/issues/">http://www.whatwg.org/issues/</a></span><dt><span class=ja-translation lang=ja>編集者:</span><dd>Ian Hickson, Google, [email protected]
96     </dl>
97    
98     <p class=copyright>&copy; Copyright 2004-2008 Apple Computer, Inc.,
99     Mozilla Foundation, and Opera Software ASA.</p>
100    
101     <p class=copyright>You are granted a license to use, reproduce and create
102     derivative works of this document.</p>
103     </div>
104    
105     <hr>
106    
107     <h2 class="no-num no-toc" id=abstract><span class=ja-translation lang=ja>概要</span></h2>
108    
109 wakaba 1.14 <p><span class=ja-translation lang=ja>この仕様書は、 Web アプリケーションで、主たる頁とは並列に、
110     背景労働者スクリプトを走らせるための API を定義します。
111     これにより、メッセージ・パッシングによるスレッド的操作を協調機構として利用できるようになります。</span><h2 class="no-num no-toc" id=status><span class=ja-translation lang=ja>この文書の状態</span></h2>
112 wakaba 1.1
113     <p><span class=ja-translation lang=ja><strong>この文書は作業中です!</strong>
114     この文書は、コメントへの対応や通常の開発の過程として、
115     毎時毎分とは言い過ぎですが毎日のペースで変更されています。
116     コメントは非常に歓迎していますので、
117     <a href="mailto:[email protected]">[email protected]</a>
118     へお送りください。よろしくお願いします。</span><p><span class=ja-translation lang=ja>現在の焦点は、第1案の開発です。</span><p><span class=ja-translation lang=ja>実装者は、この仕様書が安定していないことに注意するべきです。
119     <strong>実装者は議論に参加しておかないと、
120     仕様がその実装とは非互換に変更されてしまうかもしれません。</strong>
121     この仕様書がいずれ実装呼び掛けの段階に達するのよりも前にこの仕様を実装したい販売者は、
122 wakaba 1.7 <a href="http://www.whatwg.org/mailing-list">WHATWG メイリング・リスト</a>に参加し、
123 wakaba 1.1 議論に加わるべきです。</span><p><span class=ja-translation lang=ja>この仕様書は <a
124     href="http://www.w3.org/html/wg">W3C HTML WG</a>
125     によっても出版されています。2つの仕様書の目次以降は同一です。</span><h2 class="no-num no-toc" id=contents><span class=ja-translation lang=ja>目次
126     </span></h2>
127     <!--begin-toc-->
128    
129     <ul class=toc>
130     <li><a href="#introduction"><span class=secno>1. </span>Introduction</a>
131     <ul class=toc>
132 wakaba 1.9 <li><a href="#tutorial"><span class=secno>1.1 </span>Tutorial</a>
133 wakaba 1.1
134 wakaba 1.16 <li><a href="#conformance"><span class=secno>1.2 </span>Conformance
135 wakaba 1.1 requirements</a>
136     <ul class=toc>
137 wakaba 1.16 <li><a href="#dependencies"><span class=secno>1.2.1
138 wakaba 1.1 </span>Dependencies</a>
139     </ul>
140    
141 wakaba 1.16 <li><a href="#terminology"><span class=secno>1.3 </span>Terminology</a>
142 wakaba 1.9 </ul>
143    
144 wakaba 1.13 <li><a href="#infrastructure"><span class=secno>2.
145     </span>Infrastructure</a>
146 wakaba 1.9 <ul class=toc>
147     <li><a href="#the-windowworker"><span class=secno>2.1 </span>The
148     <code>WindowWorker</code> interface</a>
149    
150 wakaba 1.16 <li><a href="#base-urls"><span class=secno>2.2 </span>Base URLs and
151     origins of workers</a>
152    
153     <li><a href="#the-queue"><span class=secno>2.3 </span>The queue of
154 wakaba 1.9 events</a>
155    
156 wakaba 1.16 <li><a href="#the-workers"><span class=secno>2.4 </span>The worker's
157 wakaba 1.11 ports</a>
158    
159 wakaba 1.16 <li><a href="#processing"><span class=secno>2.5 </span>Processing
160 wakaba 1.9 model</a>
161 wakaba 1.13
162 wakaba 1.16 <li><a href="#creating"><span class=secno>2.6 </span>Creating
163 wakaba 1.13 workers</a>
164 wakaba 1.9 </ul>
165    
166 wakaba 1.13 <li><a href="#apis-available"><span class=secno>3. </span>APIs available
167     to workers</a>
168 wakaba 1.1
169     <li class=no-num><a href="#references">References</a>
170    
171     <li class=no-num><a href="#acknowledgements">Acknowledgements</a>
172     </ul>
173     <!--end-toc-->
174    
175     <hr>
176    
177 wakaba 1.3 <h2 id=introduction><span class=ja-translation lang=ja><span class=secno>1. </span>はじめに</span></h2>
178 wakaba 1.1
179 wakaba 1.12 <h3 id=tutorial><span class=ja-translation lang=ja><span class=secno>1.1 </span>解説</span></h3>
180 wakaba 1.1
181 wakaba 1.9 <p><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span><p class=big-issue>This section is missing.
182    
183 wakaba 1.16 <h3 id=conformance><span class=ja-translation lang=ja><span class=secno>1.2 </span>適合性要件</span></h3>
184 wakaba 1.1
185     <p><span class=ja-translation lang=ja>この仕様書のすべての図、例、注意書きは、
186     規定の一部ではないと明記された節すべてと同様に、
187     規定の一部ではありません。
188     この仕様書のそれ以外のすべては規定の一部です。</span><p><span class=ja-translation lang=ja>この文書の規定の部分にあるキーワード「<em class=rfc2119 title="MUST">しなければなりません</em>」、
189     「<em class=rfc2119 title="MUST NOT">してはなりません</em>」、
190     「<em class=rfc2119 title="REQUIRED">必須です</em>」、「<em class=rfc2119 title="SHOULD">するべきです</em>」、
191     「<em class=rfc2119 title="SHOULD NOT">するべきではありません</em>」、
192     「<em class=rfc2119 title="RECOMMENDED">推奨します</em>」、「<em class=rfc2119 title="MAY">して構いません</em>」、
193     「<em class=rfc2119 title="OPTIONAL">任意です</em>」は、 RFC 2119 で説明されているように解釈します。
194     可読性の観点から、この仕様書<ins class=ja-note>の原文</ins>では、
195     これらの語<ins class=ja-note>の原語</ins>はすべて大文字では表記しません。
196     <a href="#refsRFC2119">[RFC2119]</a></span></p>
197     <!-- XXX but they should be
198     marked up -->
199    
200     <p><span class=ja-translation lang=ja>算法の一部として<ins class=ja-note>動作の指示の形で (原文では</ins>命令形で<ins class=ja-note>) </ins>記述された要件
201     (例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」)
202     は、算法の紹介で使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、
203     <em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span><p><span class=ja-translation lang=ja>いくつかの適合性要件は属性やメソッドやオブジェクトの要件として説明されています。
204     そのような要件は、利用者エージェントに関する要件として解釈します。</span><p><span class=ja-translation lang=ja>算法や特定の段階として説明されている適合性要件は、
205     最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。
206     (特に、この仕様書で定義されている算法は追うのを簡単にしており、
207     高性能であることを目指してはいません。)</span><p><span class=ja-translation lang=ja>この仕様書で定義される適合性の級は、利用者エージェントのみです。</span><p><span class=ja-translation lang=ja>利用者エージェントは、サービス拒否攻撃を防ぐため、
208     記憶容量を使い尽くすことを防ぐため、
209     あるいは環境特有の制限に対応するためなどの目的で、
210 wakaba 1.16 別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span><h4 id=dependencies><span class=ja-translation lang=ja><span class=secno>1.2.1 </span>依存性</span></h4>
211 wakaba 1.1
212     <p><span class=ja-translation lang=ja>この仕様書は他のいくつかの下位仕様書に依存しています。</span><dl>
213     <dt>HTML5
214    
215     <dd>
216     <p><span class=ja-translation lang=ja>HTML5 の多くの基礎的な概念をこの仕様書で使用します。
217     <a href="#refsHTML5">[HTML5]</a></span></p>
218    
219     <dt>ECMAScript
220    
221     <dd>
222     <p><span class=ja-translation lang=ja>この仕様書はスクリプト言語として JavaScript
223     を使うことを想定しています。 <a href="#refsJS">[JS]</a></span></p>
224    
225     <dt>WebIDL
226    
227     <dd>
228 wakaba 1.20 <p><span class=ja-translation lang=ja>この仕様書の IDL ブロックは WebIDL 仕様書における意味を用います。 <a href="#refsWebIDL">[WebIDL]</a>
229     </span></p>
230 wakaba 1.1 </dl>
231    
232 wakaba 1.16 <h3 id=terminology><span class=ja-translation lang=ja><span class=secno>1.3 </span>用語</span></h3>
233 wakaba 1.1
234     <p><span class=ja-translation lang=ja>簡単のため、<em>示す</em>、<em>表示する</em>、
235     <em>可視</em>などの用語を文書が利用者に対してレンダリングされる方法に言及する時に使うことがあります。
236     これらの語は視覚媒体を暗示することを意図していません。
237 wakaba 1.10 これらの語は他の媒体にも等価な方法で適用されると考えなければ<em class=rfc2119 title="MUST">なりません</em>。</span><p><span class=ja-translation lang=ja>「<code title="">Foo</code> オブジェクト」という構文 (<code title="">Foo</code>
238     は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code>
239     を実装しているオブジェクト」の代わりに用いています。</span><p><span class=ja-translation lang=ja>DOM という語は、 Web アプリケーションでスクリプトに利用可能とされている API
240 wakaba 1.1 の集合を指して用い、必ずしも DOM 中核仕様書で定義されている実際の
241     <code>Document</code> オブジェクトその他の <code>Node</code>
242     オブジェクトの存在を暗示してはいません。<a
243     href="#refsDOM3CORE">[DOM3CORE]</a></span><p><span class=ja-translation lang=ja>DOM 属性は、その値が (例えば著者のスクリプトにより) 取り出される時<em>取得される</em>といい、
244     新しい値がその属性に割り当てられる時<em>設定される</em>といいます。</span><p><span class=ja-translation lang=ja>DOM オブジェクトが<dfn id=live>生きている</dfn>という場合、
245     そのオブジェクトを返す属性は常に同じオブジェクトを返さなければ<em class=rfc2119 title="MUST">ならない</em>
246     (毎回新しいオブジェクトを返すのではなく) 上に、
247     そのオブジェクトの属性やメソッドがそのオブジェクトの裏にある実際のデータのスナップ写真ではなく、
248 wakaba 1.20 データそのものに対して操作されなければ<em class=rfc2119 title="MUST">ならない</em>ことを意味します。</span><h2 id=infrastructure><span class=ja-translation lang=ja><span class=secno>2. </span>基盤</span></h2>
249 wakaba 1.9
250 wakaba 1.10 <h3 id=the-windowworker><span class=ja-translation lang=ja><span class=secno>2.1 </span><code><a href="#windowworker">WindowWorker</a></code> 界面</span></h3>
251 wakaba 1.9
252     <pre
253     class=idl>[NoInterfaceObject] interface <dfn id=windowworker>WindowWorker</dfn> {
254 wakaba 1.13 readonly attribute DOMString <a href="#url" title=dom-WindowWorker-URL>URL</a>;
255     readonly attribute DOMString <a href="#name" title=dom-WindowWorker-name>name</a>;
256     readonly attribute boolean <a href="#closing" title=dom-WindowWorker-closing>closing</a>;
257 wakaba 1.16 boolean <a href="#import" title=dom-WindowWorker-import>import</a>(in DOMString url);
258 wakaba 1.13 void <a href="#close" title=dom-WindowWorker-close>close</a>();
259 wakaba 1.11
260     // event handler attributes
261 wakaba 1.16 attribute <span>EventListener</span> <a href="#onconnect" title=handler-WindowWorker-onconnect>onconnect</a>;
262 wakaba 1.13 attribute <span>EventListener</span> <a href="#onunload" title=handler-WindowWorker-onunload>onunload</a>;
263 wakaba 1.9 };</pre>
264    
265 wakaba 1.14 <p><span class=ja-translation lang=ja><dfn id=url title=dom-WindowWorker-URL><code>URL</code></dfn>
266     属性は、 <code><a
267     href="#windowworker">WindowWorker</a></code>
268     オブジェクトが「<a
269     href="#run-a">労働者を走らせる</a>」算法で作成された時に割り当てられた値を返さなければ<em class=rfc2119 title="MUST">なりません</em>。
270     その値は、労働者を初期化するために使用されたスクリプトの絶対 URL を表します。</span><p><span class=ja-translation lang=ja><dfn id=name title=dom-windowworker-name><code>name</code></dfn>
271     属性は、<code><a
272     href="#windowworker">WindowWorker</a></code> オブジェクトが「<a
273     href="#run-a">労働者を走らせる</a>」算法で作成された時に割り当てられた値を返さなければ<em class=rfc2119 title="MUST">なりません</em>。この値が空文字列でなければ、
274     その値は、 <code
275 wakaba 1.13 title=dom-WindowWorkerCreators-createNamedWorker><a
276 wakaba 1.14 href="#createnamedworker">createNamedWorker()</a></code>
277     メソッドを使って労働者への参照を得るために使うことができる名前を表します。</span><p>The <dfn id=closing
278 wakaba 1.13 title=dom-WindowWorker-closing><code>closing</code></dfn> attribute must
279 wakaba 1.16 return false until it is set to true by one of the algorithms in the
280     processing model section below.
281 wakaba 1.9
282 wakaba 1.12 <p><span class=ja-translation lang=ja>次に示すのは、 <code><a
283     href="#windowworker">WindowWorker</a></code>
284     界面を実装するオブジェクトが対応しなければ<em class=rfc2119 title="MUST">ならない</em>事象取扱器 DOM 属性です。</span><dl>
285 wakaba 1.16 <dt><dfn id=onconnect
286     title=handler-WindowWorker-onconnect><code>onconnect</code></dfn>
287 wakaba 1.11
288     <dd>
289 wakaba 1.16 <p><span class=ja-translation lang=ja><code title=event-WindowWorker-connect>connect</code> 事象が当該 <code><a href="#windowworker">WindowWorker</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
290 wakaba 1.12 呼び出されなければなりません。</span><dt><dfn id=onunload
291 wakaba 1.13 title=handler-WindowWorker-onunload><code>onunload</code></dfn>
292 wakaba 1.11
293     <dd>
294 wakaba 1.12 <p><span class=ja-translation lang=ja><code title=event-unload>unload</code> 事象が当該 <code><a href="#windowworker">WindowWorker</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
295     呼び出されなければなりません。</span></dl>
296 wakaba 1.11
297 wakaba 1.18 <h3 id=base-urls><span class=ja-translation lang=ja><span class=secno>2.2 </span>労働者の基底 URL と起源</span></h3>
298 wakaba 1.16
299 wakaba 1.18 <p><span class=ja-translation lang=ja>労働者中で API に渡された <span>URL</span> の<span>基底 URL</span>は、
300     労働者の <code><a href="#windowworker">WindowWorker</a></code>
301     オブジェクトの <code
302     title=dom-WindowWorker-URL><a href="#url">URL</a></code> 属性により与えられる<span>絶対 URL</span>
303     です。</span><p><span class=ja-translation lang=ja>労働者中で走っているスクリプトの<span>起源</span>と<span>実効スクリプト起源</span>は、
304     共に、労働者の <code><a href="#windowworker">WindowWorker</a></code>
305     オブジェクトの <code
306     title=dom-WindowWorker-URL><a href="#url">URL</a></code>
307     属性の値により与えられる<span>絶対 URL</span> の<span>起源</span>です。</span><h3 id=the-queue><span class=ja-translation lang=ja><span class=secno>2.3 </span>事象の待ち行列</span></h3>
308 wakaba 1.9
309 wakaba 1.10 <p><span class=ja-translation lang=ja>各 <code><a href="#windowworker">WindowWorker</a></code> オブジェクトは、
310 wakaba 1.12 <dfn id=queue>事象の待ち行列</dfn> (はじめは空) と関連付けられています。</span><p><span class=ja-translation lang=ja>待ち行列中の事象は、 DOM 事象か小休止呼び戻しのいずれかです。</span><p><span class=ja-translation lang=ja>労働者中で呼び出しまたは発送されるすべての非同期の呼び戻しと事象は、
311 wakaba 1.17 労働者の待ち行列に追加されなければなりません。
312 wakaba 1.12 ただし、実際の呼び戻しの呼び出しや事象の発送は、後述の「<a
313 wakaba 1.14 href="#run-a">労働者を走らせる</a>」処理モデルに従い処理されます。</span><p><span class=ja-translation lang=ja>一旦 <code><a href="#windowworker">WindowWorker</a></code> の <code
314     title=dom-windowworker-closing><a href="#closing">closing</a></code>
315     属性が真に設定されると、待ち行列は、以後追加されるべきものがあっても、
316     すべて捨てなければ<em class=rfc2119 title="MUST">なりません</em>。実効的には、一旦 <code
317     title=dom-windowworker-closing><a href="#closing">closing</a></code>
318     属性が真となると、タイマーが発火を停止したり、
319 wakaba 1.16 すべての未決の非同期処理に関する通知は捨てられたりするようになるなどします。</span><h3 id=the-workers><span class=ja-translation lang=ja><span class=secno>2.4 </span>労働者のポート</span></h3>
320 wakaba 1.11
321 wakaba 1.14 <p><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
322 wakaba 1.12 オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span><p><span class=ja-translation lang=ja>各 <code><a href="#windowworker">WindowWorker</a></code> <var
323     title="">worker</var> は、<dfn id=the-workers0>労働者のポート</dfn>の並びを持ちます。
324     これは、他のポートと絡められており、かつ <code title=dom-MessagePort-ownerWindow>ownerWindow</code>
325     が <var
326     title="">worker</var> であるポートを1つ (だけ) 持つような <code>MessagePort</code>
327     オブジェクトすべてを含むものです。この並びは<a href="#queue">事象の待ち行列</a>中で未決の事象中にある
328 wakaba 1.16 <code>MessagePort</code> オブジェクトすべてを含みます。</span><hr>
329    
330 wakaba 1.18 <p><span class=ja-translation lang=ja>労働者は、<a href="#the-workers0">労働者のポート</a>の最低1つが、 <code
331     title=dom-MessagePort-ownerWindow>ownerWindow</code> が
332     <code>WindowBrowsingContext</code>
333     オブジェクトであるような、絡められた <code>MessagePort</code>
334     を持つ場合、<dfn id=front-line>前線労働者</dfn>であるといいます。</span><p><span class=ja-translation lang=ja>労働者は、次のいずれかの場合、<dfn id=needed>必要な労働者</dfn>であるといいます。</span><ul>
335     <li><span class=ja-translation lang=ja><a href="#front-line">前線労働者</a>である場合。</span><li><span class=ja-translation lang=ja><a href="#the-workers0">労働者のポート</a>の最低1つが、 <code
336     title=dom-MessagePort-ownerWindow>ownerWindow</code> が<a
337     href="#needed">必要な労働者</a>である <code><a
338     href="#windowworker">WindowWorker</a></code> オブジェクトであるような、
339     絡められた <code>MessagePort</code> を持つ場合。</span></ul>
340 wakaba 1.16
341     <hr>
342    
343 wakaba 1.18 <p><span class=ja-translation lang=ja>労働者は、<a href="#the-workers0">労働者のポート</a>の最低1つが、
344     その <code title=dom-MessagePort-active>active</code> 属性の値が真であり、
345     かつ <code
346     title=dom-MessagePort-ownerWindow>ownerWindow</code> が
347     <code>WindowBrowsingContext</code> オブジェクトであるような、
348     絡められた <code>MessagePort</code> を持つ場合、
349     <dfn id=active>活性前線労働者</dfn>であるといいます。</span><p><span class=ja-translation lang=ja>労働者は、次のいずれかの場合、<dfn id=active0>活性で必要な労働者</dfn>であるといいます。</span><ul>
350     <li><span class=ja-translation lang=ja><a href="#active">活性前線労働者</a>である場合。</span><li><span class=ja-translation lang=ja><a href="#the-workers0">労働者のポート</a>の最低1つが、 <code
351     title=dom-MessagePort-ownerWindow>ownerWindow</code> が<a
352     href="#active0">活性で必要な労働者</a>である <code><a
353     href="#windowworker">WindowWorker</a></code> オブジェクトであるような、
354     絡められた <code>MessagePort</code> を持つ場合。</span></ul>
355 wakaba 1.16
356     <h3 id=processing><span class=ja-translation lang=ja><span class=secno>2.5 </span>処理モデル</span></h3>
357 wakaba 1.12
358     <p><span class=ja-translation lang=ja>利用者エージェントが、<span>URL</span> <var
359     title="">url</var>、閲覧文脈 <var title="">owner browsing
360     context</var>、<code>Document</code> <var title="">owner
361     document</var> のスクリプトに対する、 <var
362 wakaba 1.14 title="">name</var> と名付けられた<dfn id=run-a>労働者を走らせる</dfn>、
363 wakaba 1.12 という時には、利用者エージェントは、次の段階を、完全に分離された並列実行環境で実行しなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
364     <li>
365     <p><span class=ja-translation lang=ja><var title="">url</var> で識別される資源を取って来ようと試みます。</span></p>
366    
367 wakaba 1.14 <p><span class=ja-translation lang=ja>この試みが失敗した場合、これらの段階を停止し、この段階を呼び出した算法が定義する<a
368     href="#worker" title="worker creation failed">誤り取扱段階</a>を呼び出します。</span></p>
369 wakaba 1.12
370     <p><span class=ja-translation lang=ja>この試みが成功した場合、 <var title="">script</var>
371     を得られた資源とします。</span></p>
372    
373     <p class=note><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
374     <code>script</code> 要素とは異なり、
375     型を上書きする方法はありません。スクリプトは常に JavaScript
376     と仮定します。</span></p>
377 wakaba 1.11 <!-- XXX people will complain about
378     this. I guess we might want to examine the MIME type... -->
379    
380    
381     <li>
382 wakaba 1.18 <p><span class=ja-translation lang=ja>新しい <code><a href="#windowworker">WindowWorker</a></code>
383     オブジェクト <var title="">worker</var> を作成します。</span></p>
384 wakaba 1.9
385     <li>
386 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">worker</var> の
387     <code title=dom-WindowWorker-URL><a href="#url">URL</a></code>
388     属性を <var
389     title="">url</var> の値に設定します。</span></p>
390 wakaba 1.13
391     <li>
392 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">worker</var> の <code title=dom-WindowWorker-name><a
393     href="#name">name</a></code>
394     属性を <var title="">name</var> の値に設定します。</span></p>
395 wakaba 1.9
396     <li>
397 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト実行文脈を (ひいては大域オブジェクトをも)
398     <var
399     title="">worker</var> とします。</span></p>
400 wakaba 1.9
401     <li>
402 wakaba 1.12 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト閲覧文脈を <var title="">owner browsing context</var>
403     とします。</span></p>
404 wakaba 1.9
405     <li>
406 wakaba 1.12 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト文書文脈を <var title="">owner document</var>
407     とします。</span></p>
408 wakaba 1.9
409     <li>
410 wakaba 1.18 <p><span class=ja-translation lang=ja>この段階を呼び出す算法が定義する<a href="#success" title="worker creation
411     succeeded">成功段階</a>を呼び出します。</span></p>
412    
413     <p class=note><span class=ja-translation lang=ja>これは、通常、事象を1つ<a
414     href="#queue">事象の待ち行列</a>に追加します。その場合、
415     追加される事象は <code>MessagePort</code> を持つはずなので、<a
416     href="#the-workers0">労働者のポート</a>の並びは空にならないことになります。
417     そうでない場合には、次の段階が <var title="">worker</var>
418     オブジェクトの <code title=dom-WindowWorker-closing><a
419     href="#closing">closing</a></code> 属性を真に設定することとなります。</span></p>
420    
421     <li>
422     <p><span class=ja-translation lang=ja><var title="">worker</var> の監視を開始し、
423     労働者が<a href="#needed">必要な労働者</a>ではなくなると即座に
424     <var title="">worker</var> オブジェクトの <code
425     title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
426     属性が真に設定されるようにします。</span></p>
427 wakaba 1.13
428     <li>
429 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">worker</var> の監視を開始し、
430     <var title="">worker</var> オブジェクトの <code
431 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
432 wakaba 1.18 属性が偽であって、かつ労働者が<a href="#active0">活性で必要な労働者</a>ではないという時に、 <code
433 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
434 wakaba 1.18 属性が真に切り替わるまで、
435     または労働者が<a
436     href="#active0">活性で必要な労働者</a>となるまでのいずれかの間、
437     利用者エージェントがスクリプトを一時停止するようにします。</span></p>
438 wakaba 1.11
439     <li>
440 wakaba 1.14 <p><span class=ja-translation lang=ja><var title="">script</var> を、返るか、例外の捕獲に失敗するか、後述の「<a href="#kill-a">労働者を殺す</a>」算法により早々に停止させられるかのいずれかまで走らせます。</span></p>
441 wakaba 1.11
442 wakaba 1.14 <p class=note><span class=ja-translation lang=ja>スクリプトが「<a href="#kill-a">労働者を殺す</a>」算法で停止させられる場合には、
443     その同じ算法が、次の段階で、<a href="#queue">事象の待ち行列</a>には唯一
444     <code title=message-unload>unload</code> 事象だけが含まれるようにします。
445     しかし、この事象が無視された場合には、これは、ポートがごみ収集される際に真となります。</span></p>
446 wakaba 1.9
447     <li>
448 wakaba 1.18 <p><span class=ja-translation lang=ja><i>事象ループ</i>: <var
449     title="">worker</var> に関連付けられた<a
450     href="#queue">事象の待ち行列</a>に事象が存在するようになるか、または
451     <var title="">worker</var> オブジェクトの <code
452 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
453 wakaba 1.18 属性が真に設定されるまで待ちます。</span></p>
454 wakaba 1.9
455     <li>
456 wakaba 1.14 <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中で最古の事象か呼び戻しがあれば、
457     これを発送します。この事象の取扱いや呼び戻しの実行は、後述の「<a href="#kill-a">労働者を殺す</a>」
458     算法により、早々に停止させられるかもしれません。</span></p>
459 wakaba 1.9
460     <li>
461 wakaba 1.18 <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中に更に事象が存在する場合、
462     または <var title="">worker</var> オブジェクトの <code
463 wakaba 1.13 title=dom-WindowWorker-closing><a href="#closing">closing</a></code>
464 wakaba 1.18 属性が偽に設定されている場合、前述の<i>事象ループ</i>との名札のある段階に飛んで戻ります。</span></p>
465 wakaba 1.9
466     <li>
467 wakaba 1.14 <p class=big-issue><span class=ja-translation lang=ja>タイマー、休憩、 XMLHttpRequest、データベース取引、その他を殺さなければ<em class=rfc2119 title="MUST">なりません</em>。
468     ポートを非活性化し、ほどかなければ<em class=rfc2119 title="MUST">なりません</em> (unload を送りません)。</span></p>
469 wakaba 1.9 </ol>
470    
471     <hr>
472    
473 wakaba 1.14 <p><span class=ja-translation lang=ja>利用者エージェントが<dfn id=kill-a>労働者を殺す</dfn>という時には、
474     利用者エージェントは、次の段階を労働者の主たるループ (先に定義した「<a
475     href="#run-a">労働者を走らせる</a>」処理モデル) と並列に走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
476     <li>
477     <p><span class=ja-translation lang=ja>事象名が <code
478     title=event-unload>unload</code> であり、
479     泡立たず、取消可能ではない
480     <code>Event</code> オブジェクトを作成し、労働者の <code><a
481     href="#windowworker">WindowWorker</a></code>
482     オブジェクトの<a
483     href="#queue">事象の待ち行列</a>に追加し、 <code><a
484     href="#windowworker">WindowWorker</a></code>
485     オブジェクト自体を対象とします。</span><li>
486     <p><span class=ja-translation lang=ja>労働者の <code><a href="#windowworker">WindowWorker</a></code>
487     オブジェクトの
488     <code title=dom-WindowWorker-closing><a
489     href="#closing">closing</a></code>
490     属性を真に設定します。</span><li>
491     <p><span class=ja-translation lang=ja>利用者エージェント定義の時間、待ちます。先に定義した「<a href="#run-a">労働者を走らせる</a>」
492     処理モデルが <code title=event-unload>unload</code>
493     事象に登録された事象聴取器を即座に走らせ始める場合には、この時間は零である<em class=rfc2119 title="SHOULD NOT">べきではありません</em>。
494     というのは、予期せず停止させる時に浄化するために <code
495     title=event-unload>unload</code> 事象を使えるようにするのが目的だからです。</span><li>
496     <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中にこの算法が追加した
497     <code title=event-unload>unload</code>
498     事象以外の事象が存在する場合には、それらを発送せずに捨てます。</span><li>
499     <p><span class=ja-translation lang=ja>この算法が追加した <code title=event-unload>unload</code>
500     事象がまだ発送されていなければ、現在労働者中で走っているスクリプトを停止します。</span><li>
501     <p><span class=ja-translation lang=ja>利用者エージェント定義の時間、待ちます。</span><li>
502     <p><span class=ja-translation lang=ja>現在労働者中で走っているスクリプト (スクリプトが走っているとすると、
503     これは <code
504     title=event-unload>unload</code>
505     事象の取扱器です。) を停止します。</span></ol>
506 wakaba 1.9
507 wakaba 1.19 <p><span class=ja-translation lang=ja>利用者エージェントは、いつであっても、例えば利用者の要求に応じて、 CPU
508     割当管理に応じて、あるいは労働者がその <code title=dom-WindowWorker-closing><a
509     href="#closing">closing</a></code> 属性が真に設定された後であっても実行し続けている場合で労働者が<a href="#needed">必要な労働者</a>ではなくなった時などに、
510     「<a href="#kill-a">労働者を殺す</a>」処理モデルを呼び出して<em class=rfc2119 title="MAY">構いません</em>。</span><hr>
511    
512     <p><span class=ja-translation lang=ja>利用者エージェントは、スクリプトが <code><a
513     href="#windowworker">WindowWorker</a></code>
514     オブジェクトの <dfn id=import
515 wakaba 1.16 title=dom-WindowWorker-import><code>import(<var
516 wakaba 1.19 title="">url</var>)</code></dfn> メソッドを呼び出した時、
517     次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
518 wakaba 1.16 <li>
519 wakaba 1.19 <p><span class=ja-translation lang=ja><var title="">url</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
520 wakaba 1.16 <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
521     例外を投げます。</span><li>
522     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
523     保安性例外を投げます。</span><li>
524 wakaba 1.19 <p><span class=ja-translation lang=ja>得られた<span>絶対 URL</span> で識別される資源を<span>取って来</span><!-- XXX -->ようとします。</span></p>
525 wakaba 1.16
526 wakaba 1.19 <p><span class=ja-translation lang=ja>この試みが失敗した場合、偽を返し、これらの段階を停止します。</span></p>
527 wakaba 1.16
528     <p><span class=ja-translation lang=ja>この試みが成功した場合、 <var title="">script</var>
529     を得られた資源とします。</span></p>
530    
531 wakaba 1.19 <p class=note><span class=ja-translation lang=ja>はじめのスクリプトと同様に、ここでのスクリプトも、 MIME 型に関わらず常に JavaScript
532     であると仮定します。</span></p>
533 wakaba 1.16 <!-- XXX -->
534    
535     <li>
536 wakaba 1.19 <p><span class=ja-translation lang=ja><var title="">script</var> の<span>スクリプト実行文脈</span>、
537     <span>スクリプト閲覧文脈</span>、<span>スクリプト文書文脈</span>を、
538     この労働者についての<a href="#run-a">労働者を走らせる</a>処理モデルで実行されたスクリプトについてのものと同じとします。</span></p>
539 wakaba 1.16
540     <li>
541     <p><span class=ja-translation lang=ja><var title="">script</var> を、返るか、例外の捕獲に失敗するか、後述の「<a href="#kill-a">労働者を殺す</a>」算法により早々に停止させられるかのいずれかまで走らせます。</span></p>
542    
543 wakaba 1.19 <p><span class=ja-translation lang=ja>実行が投げた場合やスクリプトが早々に停止された場合、これらの段階を停止し、
544     例外や停止を <code
545     title=dom-WindowWorker-import><a href="#import">import()</a></code>
546     メソッドを呼んだスクリプトに処理させ続けます。</span></p>
547 wakaba 1.16
548 wakaba 1.19 <p><span class=ja-translation lang=ja>そうでない場合、真を返します。</span></p>
549 wakaba 1.16 </ol>
550    
551 wakaba 1.11 <hr>
552    
553 wakaba 1.14 <p><span class=ja-translation lang=ja>スクリプトが <code><a href="#windowworker">WindowWorker</a></code>
554     オブジェクトで <dfn id=close
555     title=dom-WindowWorker-close><code>close()</code></dfn>
556 wakaba 1.15 メソッドを呼び出した場合、利用者エージェントは、次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
557 wakaba 1.11 <li>
558 wakaba 1.15 <p><span class=ja-translation lang=ja>事象名が <code
559     title=event-unload>unload</code> であり、
560     泡立たず、取消可能ではない
561     <code>Event</code> オブジェクトを作成し、 <code><a
562     href="#windowworker">WindowWorker</a></code>
563     オブジェクトの<a
564     href="#queue">事象の待ち行列</a>に追加し、 <code><a
565     href="#windowworker">WindowWorker</a></code>
566     オブジェクト自体を対象とします。</span><li>
567 wakaba 1.14 <p><span class=ja-translation lang=ja>労働者の <code><a href="#windowworker">WindowWorker</a></code>
568     オブジェクトの
569     <code title=dom-WindowWorker-closing><a
570     href="#closing">closing</a></code>
571     属性を真に設定します。</span><li>
572 wakaba 1.15 <p><span class=ja-translation lang=ja>他のポートと絡められており、かつ <code
573     title=dom-MessagePort-ownerWindow>ownerWindow</code>
574     がメソッドの呼び出された <code><a
575     href="#windowworker">WindowWorker</a></code> オブジェクトであるポートを1つ
576     (だけ) 持つような <code>MessagePort</code> について、それぞれ次の部分段階を走らせます。</span></p>
577 wakaba 1.11
578     <ol>
579     <li>
580 wakaba 1.15 <p><span class=ja-translation lang=ja>2つのポートをほどきます。</span><li>
581     <p><span class=ja-translation lang=ja>両ポートの <code title=dom-MessagePort-active>active</code>
582     属性を偽に設定します。</span><li>
583     <p><span class=ja-translation lang=ja>次の利用可能な機会、何らかのスクリプトが実行し終えた後に、
584     他方のポート (<code title=dom-MessagePort-ownerWindow>ownerWindow</code>
585     が <code title=dom-WindowWorker-close><a
586     href="#close">close()</a></code>
587     メソッドが呼ばれた <code><a href="#windowworker">WindowWorker</a></code>
588     オブジェクトではない方) で <code title=event-unload>unload</code>
589     と呼ばれる単純事象を発火します。</span></ol>
590 wakaba 1.11 </ol>
591    
592 wakaba 1.16 <h3 id=creating><span class=ja-translation lang=ja><span class=secno>2.6 </span>労働者の作成</span></h3>
593 wakaba 1.9
594     <pre
595     class=idl>[NoInterfaceObject] interface <dfn id=windowworkercreators>WindowWorkerCreators</dfn> {
596 wakaba 1.13 <span>MessagePort</span> <a href="#createworker" title=dom-WindowWorkerCreators-createWorker>createWorker</a>(in DOMString scriptURL);
597     <span>MessagePort</span> <a href="#createnamedworker" title=dom-WindowWorkerCreators-createNamedWorker>createNamedWorker</a>(in DOMString name, in DOMString scriptURL);
598 wakaba 1.9 };</pre>
599    
600 wakaba 1.15 <p><span class=ja-translation lang=ja><code>Window</code> 界面を実装するオブジェクトは、 <code><a href="#windowworkercreators">WindowWorkerCreators</a></code> 界面も実装しなければ<em class=rfc2119 title="MUST">なりません</em>。</span><hr>
601 wakaba 1.13
602 wakaba 1.15 <p><span class=ja-translation lang=ja>利用者エージェントは、 <dfn id=createworker title=dom-WindowWorkerCreators-createWorker><code>createWorker(<var title="">scriptURL</var>)</code></dfn> メソッドが呼び出された時、
603     次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
604 wakaba 1.13 <li>
605 wakaba 1.15 <p><span class=ja-translation lang=ja><var
606     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
607     <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
608     例外を投げます。</span><li>
609     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
610     保安性例外を投げます。</span><li>
611     <p><span class=ja-translation lang=ja>得られた絶対 URL から、名前が空文字列である<a href="#create">労働者を作成</a>します。</span><li>
612     <p><span class=ja-translation lang=ja><a
613     href="#create">労働者を作成</a>する算法が返した
614     <code>MessagePort</code> オブジェクトを返します。</span></ol>
615 wakaba 1.11
616     <hr>
617    
618 wakaba 1.15 <p><span class=ja-translation lang=ja>利用者エージェントは、 <dfn id=createnamedworker title=dom-WindowWorkerCreators-createNamedWorker><code>createNamedWorker(<var title="">name</var>, <var title="">scriptURL</var>)</code></dfn> メソッドが呼び出された時、
619     次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
620 wakaba 1.13 <li>
621 wakaba 1.15 <p><span class=ja-translation lang=ja><var
622     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
623     <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
624     例外を投げます。</span><li>
625     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
626     保安性例外を投げます。</span><li>
627     <p><span class=ja-translation lang=ja><var title="">name</var> 引数が空文字列の場合、得られた絶対 URL から、
628     名前が空文字列である<a
629     href="#create">労働者を作成</a>し、<a
630     href="#create">労働者を作成</a>する算法が返した <code>MessagePort</code>
631     オブジェクトを返します。そして、これらの段階を停止します。</span><li>
632     <p><span class=ja-translation lang=ja><code title=dom-WindowWorker-closing><a
633     href="#closing">closing</a></code> 属性が偽で、 <code
634     title=dom-WindowWorker-name><a href="#name">name</a></code>
635     属性が <var title="">name</var> 引数と全く等しく、 <code
636     title=dom-WindowWorker-URL><a href="#url">URL</a></code>
637     属性が得られた絶対 URL と同じ起源を持つ労働者が存在する場合、
638     次の部分段階を走らせます。</span></p>
639 wakaba 1.13
640     <ol>
641     <li>
642 wakaba 1.15 <p><span class=ja-translation lang=ja>当該労働者の <code title=dom-WindowWorker-URL><a
643     href="#url">URL</a></code>
644     属性が得られた絶対 URL と全く等しくはない場合、 <code>URL_MISMATCH_ERR</code>
645     例外を投げ、これらの段階を停止します。 <span
646     class=big-issue>code 19</span></span><li>
647     <p><span class=ja-translation lang=ja>メソッドを呼び出したスクリプトのスクリプト実行文脈が所有する新しい <code>MessagePort</code>
648     オブジェクトを作成します。</span><li>
649     <p><span class=ja-translation lang=ja>そのポートを返します。</span><li>
650 wakaba 1.19 <p><span class=ja-translation lang=ja>非同期に、この既存の労働者を新しく作成されたポートに<a href="#connect" title="connect to a
651     worker">接続</a>します。</span></ol>
652 wakaba 1.15
653     <p><span class=ja-translation lang=ja>そうでない場合、得られた絶対 URL から、名前が <var
654     title="">name</var> 引数の値である<a href="#create">労働者を作成</a>し、
655     <a href="#create">労働者を作成</a>する算法が返した <code>MessagePort</code>
656     オブジェクトを返します。</span></p>
657 wakaba 1.11 </ol>
658    
659     <hr>
660    
661 wakaba 1.15 <p><span class=ja-translation lang=ja>メソッド呼び出しの文脈において、 URL <var title="">url</var> から名前 <var
662     title="">name</var> の<dfn id=create>労働者を作成</dfn>する段階は、次の通りです。</span><ol>
663     <li>
664     <p><span class=ja-translation lang=ja>メソッドを呼び出したスクリプトのスクリプト実行文脈が所有する新しい <code>MessagePort</code>
665     オブジェクトを作成します。</span><li>
666     <p><span class=ja-translation lang=ja>そのポートを返します。</span><li>
667     <p><span class=ja-translation lang=ja>並列実行文脈において (つまり、別のスレッドやプロセスや同様の構造において)、 <var title="">owner browsing
668     context</var> をメソッドを呼び出したスクリプトのスクリプト閲覧文脈、 <var title="">owner
669     document</var> をメソッドを呼び出したスクリプトのスクリプト文書文脈として、
670     URL
671     <var
672     title="">url</var> のスクリプトのための <var
673     title="">name</var> という名前の<a href="#run-a">労働者を走らせます</a>。</span></p>
674    
675 wakaba 1.19 <p><span class=ja-translation lang=ja>その算法が<dfn id=success title="worker
676     creation succeeded">成功段階</dfn>の段階を呼び出す場合は、
677     この新しい労働者に、新しく作成されたポートと共に<a href="#connect"
678     title="connect to a worker">接続</a>します。</span></p>
679 wakaba 1.15
680     <p><span class=ja-translation lang=ja>そうでない場合、<dfn id=worker>労働者作成が失敗</dfn>した場合、次の利用可能な機会、
681     何らかのスクリプトが実行し終えた後に、新しく作成されたポートで
682     <code title=event-error>error</code>
683     と呼ばれる単純事象を発火します。</span></p>
684 wakaba 1.11 </ol>
685    
686     <hr>
687    
688 wakaba 1.19 <p><span class=ja-translation lang=ja>与えられた <code>MessagePort</code> オブジェクト <var title="">port</var>
689     により<dfn id=connect>労働者に接続</dfn>する段階は、次の通りです。</span><ol>
690 wakaba 1.13 <li>
691 wakaba 1.15 <p><span class=ja-translation lang=ja><var title="">port</var> がごみ収集されている場合、あるいは <var
692     title="">port</var> の <code
693     title=dom-MessagePort-ownerWindow>ownerWindow</code> の活性文書が既に
694     <var title="">port</var> が作成された時と同じ <code>Document</code>
695     オブジェクトでない場合には、何もしません。これらの段階を停止します。
696     労働者が丁度作成されたばかりの場合には、これはすぐに殺されることになります。</span></p>
697 wakaba 1.13
698     <li>
699 wakaba 1.15 <p><span class=ja-translation lang=ja>労働者の <code><a href="#windowworker">WindowWorker</a></code>
700 wakaba 1.19 が所有する<span>新しい <code>MessagePort</code>
701     オブジェクトを作成</span>します。</span><li>
702 wakaba 1.15 <p><span class=ja-translation lang=ja>この新しく作成されたポートとこれらの段階に渡されたポート <var
703     title="">port</var> を絡めます。</span><li>
704     <p><span class=ja-translation lang=ja>両ポートの
705     <code title=dom-MessagePort-active>active</code>
706     属性を真に設定します。</span><li>
707     <p><span class=ja-translation lang=ja>次の利用可能な機会、何らかのスクリプトが実行し終えた後に、
708     <var title="">port</var> において <code title=event-load>load</code>
709     と呼ばれる単純事象を発火します。</span><li>
710 wakaba 1.19 <p><span class=ja-translation lang=ja><code>MessageEvent</code> 界面を使った、名前 <code title=event-connect>connect</code>
711     の泡立たず、取消し可能で、既定作用を持たず、 <code
712     title=dom-MessageEvent-data>data</code> 属性の値が空文字列で、 <code
713     title=dom-MessageEvent-messagePort>messagePort</code> 属性の値が新たに作成されたポートである事象を作成し、
714     これを労働者の <code><a
715     href="#windowworker">WindowWorker</a></code> オブジェクトの<a
716     href="#queue">事象の待ち行列</a>に、 <code><a
717     href="#windowworker">WindowWorker</a></code>
718     オブジェクト自体を対象として追加します。</span></ol>
719 wakaba 1.15
720     <h2 id=apis-available><span class=ja-translation lang=ja><span class=secno>3. </span>労働者が利用可能な API</span></h2>
721    
722 wakaba 1.19 <p><span class=ja-translation lang=ja><span>スクリプト実行文脈</span>が <code><a href="#windowworker">WindowWorker</a></code>
723     オブジェクトであるスクリプトの大域範囲には、次のものを除き、
724     界面オブジェクトや構築器を利用可能としては<em class=rfc2119 title="MUST">なりません</em>。</span><ul>
725     <li>
726     <p><span class=ja-translation lang=ja>XMLHttpRequest 仕様書で定義されている
727     <code>XMLHttpRequest</code> とすべての界面オブジェクトと構築器、
728     ただし<span>文書応答実体本体</span>は常に null でなければ<em class=rfc2119 title="MUST">なりません</em>。 <a
729     href="#refsXHR">[XHR]</a></span><li>
730     <p><span class=ja-translation lang=ja><code>WebSocket</code> 界面オブジェクトと構築器</span><li>
731     <p><span class=ja-translation lang=ja><code>MessageChannel</code> 界面オブジェクトと構築器</span></ul>
732 wakaba 1.16
733     <hr>
734    
735 wakaba 1.15 <p><span class=ja-translation lang=ja><code><a
736     href="#windowworker">WindowWorker</a></code> 事象を実装するオブジェクトは、
737     次の界面も実装しなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ul>
738 wakaba 1.13 <li>
739 wakaba 1.15 <p><span class=ja-translation lang=ja><code>Window</code> 界面と、この界面を実装するオブジェクトが実装することを<em class=rfc2119 title="REQUIRED">要求</em>されている界面。
740     これには、次の界面が含まれます。</span></p>
741 wakaba 1.13
742     <ul>
743 wakaba 1.15 <li><span class=ja-translation lang=ja><code>WindowTimers</code> 界面</span><li><span class=ja-translation lang=ja><code><a href="#windowworkercreators">WindowWorkerCreators</a></code> 界面</span></ul>
744 wakaba 1.13
745 wakaba 1.15 <li><span class=ja-translation lang=ja><code>EventTarget</code> 界面。
746     </span></ul>
747 wakaba 1.9
748 wakaba 1.16 <div class=note>
749 wakaba 1.19 <p><span class=ja-translation lang=ja>次の API は、 <code>Window</code> オブジェクトに定義されているか、
750     その界面を実装しているオブジェクトが実装することが要求<!-- lowercase required,
751     since this paragraph is non-normative -->されている界面の1つで定義されているので、
752     労働者に利用可能です。</span></p>
753 wakaba 1.16
754     <ul>
755 wakaba 1.19 <li><span class=ja-translation lang=ja><code title=dom-showNotification>showNotification()</code> API。</span><li><span class=ja-translation lang=ja><code title=dom-localStorage>localStorage</code> オブジェクトと、
756     関連する名前・値組蓄積庫 API。</span><li><span class=ja-translation lang=ja><code title=dom-openDatabase>openDatabase()</code> メソッドと関連する
757     SQL データベース API。</span></ul>
758 wakaba 1.16 </div>
759    
760     <p class=big-issue>Need to define a sync database API.
761    
762     <p class=big-issue>May need to define a browser sniffing API (like
763     window.navigator).</p>
764     <!-- XXX ApplicationCache -->
765     <!-- XXX a way to set cookies on the URL for the script -->
766     <!-- XXX debugging: void log(in DOMString s); // log to console -->
767     <!-- XXX debugging: onerror -->
768    
769     <hr>
770    
771 wakaba 1.19 <p><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code>
772     オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span><h2 class=no-num id=references><span class=ja-translation lang=ja>参考文献</span></h2>
773 wakaba 1.1
774     <p class=big-issue><span class=ja-translation lang=ja>この章は将来の仕様案で執筆します。</span><h2 class=no-num id=acknowledgements><span class=ja-translation lang=ja>謝辞</span></h2>
775     <!-- ACKS -->
776    
777 wakaba 1.18 <p><span class=ja-translation lang=ja>Maciej Stachowiak, Mike Smith, Philip Taylor の有用かつ重要なコメントに感謝します。</span><p><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。
778 wakaba 1.14 Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。
779     </span>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24