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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24