【さーびすわーかー】

Service Worker とは?

最終更新:
💡 ブラウザの「裏方」で働くスクリプト

Webページとは別のスレッドで、イベントに応じて動くスクリプト。通信への応答やキャッシュを制御し、オフライン対応などを実装できる。常に動き続けるわけではない。

📌 このページのポイント
ページとは別に通信を扱う 制御されるWebページ リクエスト Service Worker 応答をどう返すか制御 キャッシュ サーバー 保存済みの応答を使うなど、処理を実装 イベントで起動し、常駐はしない
リクエストの処理先を選ぶ概念図。矢印は要求の処理方向。キャッシュに必要な内容がなければ、オフライン対応はできない。
ひよこ ひよこ
Service Workerって何ができるの?
ペンギン先生 ペンギン先生
たとえば、保存しておいたページや画像を返して、オフラインでも使える部分を作れるよ。通知や、接続が戻った後の送信にも使える。ただ登録するだけでは実現せず、各イベントへの処理を実装するんだ。
ひよこ ひよこ
ブラウザの裏でずっと動いているの?
ペンギン先生 ペンギン先生
常駐し続けるわけではないよ。ブラウザが必要なイベントのために起動し、使われていない間などは停止する。ページを閉じた後の通知にも使えるけれど、ブラウザ・OSの対応や通知の許可に左右されるんだ。
ひよこ ひよこ
ライフサイクルが複雑って聞くけど…
ペンギン先生 ペンギン先生
登録後にinstall、activateを経て利用できる状態になるよ。キャッシュの準備や整理は、そのイベントで自分で行う処理の例。fetchは有効化後に通信を扱うイベントで、最後の一段階ではないんだ。更新版は通常、旧版の利用者がいなくなるまで待機する。skipWaiting()を使う場合は、古いページとの整合性も考えよう。
ひよこ ひよこ
キャッシュ戦略にはどんな種類がある?
ペンギン先生 ペンギン先生
Cache Firstはキャッシュを先に、Network Firstは通信を先に試す。Stale While Revalidateは保存済みの応答を返しつつ更新する方法だよ。古い内容をどれだけ許容できるかで選ぼう。Workboxはこうした戦略の実装を助けるライブラリなんだ。
ひよこ ひよこ
使うときの注意点は?
ペンギン先生 ペンギン先生
通常はHTTPSが必要で、localhostなどは開発用の例外だよ。制御するページの範囲は、既定ではスクリプトのあるディレクトリ以下。Service-Worker-Allowedヘッダーで広げられる場合もある。通知や同期の対応状況、更新時の挙動も対象の環境で確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Service Worker」って出てきたら「ブラウザの裏で動いてオフライン対応や通知を実現する技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Service Worker」 = サービスワーカー
💬 Service(サービス)を提供するWorker(作業者)。ブラウザとネットワークの間で働くよ

参考資料

← 用語集にもどる