<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">Service Workers Nightly</cite> (<time>2017-03-02 15:00:14 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://w3c.github.io/ServiceWorker/#algorithms">https://w3c.github.io/ServiceWorker/#algorithms</anchor-external></li></ul></refs></section><section><h1>ジョブ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">job</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サービスワーカー登録</anchor>への要求を表します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ</anchor>は実行オプションの集合体のようなもので、
実行は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク</anchor>として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor>内で行われます。</p><section><h1>状態</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカージョブ</title></anchor>は、次の状態を持ちます。</p><figure class="list members"><dl><dt><dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>ジョブ型</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">job type</rt></rubyb></f></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録ジョブ</title></anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">更新ジョブ</title></anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録解除<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録解除ジョブ</title></anchor>のいずれか <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプトURL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカー</title></f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ワーカー型</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ利用</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカークライアント</title></f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照元</f></dt><dd></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束</f></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">約束</anchor>または <code>null</code>。初期値は <code>null</code>。</dd><dt><dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>等価ジョブ群のリスト</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">list of equivalent jobs</rt></rubyb></f></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカージョブ</title></anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト</anchor>。初期値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空リスト</anchor>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">force bypass cache flag</f></dt><dd></dd></dl></figure></section><section><h1>等価性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカージョブ</title></anchor>が<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">等価<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">equivalent</rt></rubyb></dfn>であるとは、
次の条件を<em>すべて</em>満たすことをいいます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ型</f>が等しい</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適用範囲URL</f>が等しい</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ型</f>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録ジョブ</title></anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">更新ジョブ</title></anchor>の場合、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプトURL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカー</title></f>が等しい</li></ul></li></ul></figure></section><section><h1>作成</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ作成<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Create Job</rt></rubyb></dfn>は、
<var>ジョブ型</var>、
<var>適用範囲URL</var>、
<var>スクリプトURL</var>、
<var>約束</var>、
<var>クライアント</var>を次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <var>ジョブ</var>を、新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカージョブ</title></anchor>に設定します。<figure class="list members"><dl><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ型</f></dt><dd><var>ジョブ型</var></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適用範囲URL</f></dt><dd><var>適用範囲URL</var></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプトURL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカー</title></f></dt><dd><var>スクリプトURL</var></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束</f></dt><dd><var>約束</var></dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカークライアント</title></f></dt><dd><var>クライアント</var></dd></dl></figure></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <var>クライアント</var>が <code>null</code> でない場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <var>ジョブ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照元</f>を、<var>クライアント</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">作成URL</f>に設定します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <var>ジョブ</var>を返します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 次の場面で呼び出されます。</p><figure class="list short"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録開始</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ソフト更新</anchor></li><li><code>unregister</code></li><li><code>update</code></li></ul></figure></section><section><h1>ジョブ約束</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカージョブ</title></anchor>は、
<dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>ジョブ約束</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">job promise</rt></rubyb></f></dfn>を持ちます。
値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">約束</anchor>または <code>null</code>で、初期値は <code>null</code> です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束の解決<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Resolve Job Promise</rt></rubyb></dfn>や<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束の拒絶<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Reject Job Promise</rt></rubyb></dfn>は、
<var>ジョブ</var>と<var>値</var>について、次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <var>ジョブ</var>の処理を実行します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <var>ジョブ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">等価ジョブ群のリスト</f>の各<var>ジョブ</var>について、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <var>ジョブ</var>の処理を実行します。</li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <var>ジョブ</var>の処理は、次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <var>ジョブ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカークライアント</title></f>が <code>null</code> 以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクをキューに追加</anchor>します。<figure class="list members"><dl><dt><var>処理</var></dt><dd><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <var>ジョブ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束</f>を、<var>値</var>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">解決<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">約束の解決</title></anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束の解決</anchor>の場合。) または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拒絶</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束の拒絶</anchor>の場合。) します。</li></ol></figure></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベントループ</anchor></var></dt><dd><var>ジョブ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカークライアント</title></f>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">有責イベントループ</f></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク源</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM操作タスク源</anchor></dd></dl></figure></li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> 次の場面で呼び出されます。</p><figure class="list short"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録ジョブ</title></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">更新ジョブ</title></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インストール<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">インストール (サービスワーカー)</title></anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">解決<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">約束の解決</title></anchor>のみ)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録解除<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録解除ジョブ</title></anchor></li></ul></figure></section></section><section><h1>ジョブキュー</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブキュー<rt xmlns="http://www.w3.org/1999/xhtml">job queue</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ</anchor>を順に実行するための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スレッド安全</anchor>な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キュー</anchor>です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FIFO</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キュー</anchor>の一般的な特性を満たす<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>は、
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>適用範囲URL</anchor>から<f>ジョブキュー<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">サービスワーカージョブキュー</title></f>への<anchor>写像</anchor></f>を持ちます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><section><h1>スケジューリング</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <dfn>Schedule Job</dfn> は、
<var>ジョブキュー</var>と<var>ジョブ</var>について、次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <var>ジョブキュー</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">空リスト</title></anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <var>ジョブ</var>を<var>ジョブキュー</var>に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">push</anchor> します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <var>ジョブキュー</var>について<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブを走らせる</anchor>処理を実行します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> それ以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <var>最後のジョブ</var>を、<var>ジョブキュー</var>の末尾の項目に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <var>ジョブ</var>が<var>最後のジョブ</var>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">等価<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ジョブ等価</title></anchor>で、
<var>最後のジョブ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ約束</f>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">settle</anchor> 済みでない場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <var>ジョブ</var>を<var>最後のジョブ</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">等価ジョブ群のリスト</f>に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">append</anchor> します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> それ以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <var>ジョブ</var>を<var>ジョブキュー</var>に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">push</anchor> します。</li></ol></li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 次の場面で呼び出されます。</p><figure class="list short"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録開始</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ソフト更新</anchor></li><li><code>unregister</code></li><li><code>update</code></li></ul></figure></section><section><h1>実行</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブを走らせる<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Run Job</rt></rubyb></dfn>には、
<var>ジョブキュー</var>について、次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクをキューに追加</anchor>します。<figure class="list members"><dl><dt><var>処理</var></dt><dd><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <var>ジョブ</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブキュー</anchor>の先頭の項目に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">並列に</anchor>、<var>ジョブ</var>の処理を実行します。</li></ol></figure></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスク源</anchor></var></dt><dd>?</dd></dl></figure></li></ol></figure><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">注記</anchor>として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録ジョブ</title></anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">更新ジョブ</title></anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タスクをキューに追加</anchor>するのは
<code xmlns="http://www.w3.org/1999/xhtml" class="DOMe" xml:lang="en">DOMContentLoaded</code> まで遅延する <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src> とありますが、
そのような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規定</anchor>は見当たりません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <var>ジョブ</var>の実行とは、<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ型</f>により、
<var>ジョブ</var>と<var>ジョブキュー</var>について<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録ジョブ</title></anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">更新ジョブ</title></anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録解除<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録解除ジョブ</title></anchor>の適切なものを実行することをいいます
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブを走らせる</anchor>処理は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Schedule Job</anchor> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ終了</anchor>から呼び出されます。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブ終了<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Finish Job</rt></rubyb></dfn>は、
<var>ジョブ</var>と<var>ジョブキュー</var>について、
次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <var>ジョブキュー</var>から先頭の項目を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">pop</anchor> します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <var>ジョブキュー</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">空リスト</title></anchor>でない場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <var>ジョブキュー</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ジョブを走らせる</anchor>処理を実行します。</li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> 次の場面で呼び出されます。</p><figure class="list short"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録ジョブ</title></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">更新ジョブ</title></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インストール<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">インストール (サービスワーカー)</title></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">登録解除<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">登録解除ジョブ</title></anchor></li></ul></figure></section></section></body></html>