サービスワーカー(Service Worker)とは、Webページとは別に、ブラウザの裏側で動き続ける小さなプログラムのことです。ページとネットワークの間に立ち、通信を横取りして代わりに応答することができます。
現実世界に例えると、サービスワーカーは玄関に控えている取次役のようなものです。届け物を頼まれると、まず自分の手元を探し、あればその場で渡します。無いときだけ外へ取りに行きます。外が悪天候でも、手元にあるぶんは渡せます。
サービスワーカー図解
普通のスクリプトとの違い
| 項目 | 普通のスクリプト | サービスワーカー |
|---|---|---|
| 動く場所 | ページの中 | ページとは別の場所 |
| ページを閉じたら | 止まる | 必要なとき動ける |
| 画面の操作 | できる | できない |
| 通信への介入 | できない | 横取りして応答できる |
いちばんの役目は「オフラインでも動かす」
もっとも分かりやすい使い道がこれです。一度読み込んだ画像やファイルを手元に保管しておき、次に同じものが求められたら、通信せずにその場で返します。電波の届かない場所でも画面が出る、というアプリのような振る舞いが、これで実現できます。
表示が速くなる
電波が届く場所でも効果があります。手元にあるものを返すぶん、通信の往復を待たずに済み、二回目以降の表示が目に見えて速くなります。読み込みの遅さが離脱につながるWebサイトでは、この差が実際の成果に響きます。
通知を受け取れる
もう一つの働きが通知です。ページを閉じていても、サーバーからの知らせを受け取って画面に出すことができます。アプリを入れなくてもスマートフォンに通知が届くのは、この仕組みによるものです。ただし利用者の許可が要ります。
PWAを支えている
Webサイトをアプリのように扱う「PWA」という考え方があります。ホーム画面に置ける、オフラインでも開ける、通知が来る。この三つのうち後ろの二つを担っているのがサービスワーカーです。PWAを名乗るには、事実上これが欠かせません。
HTTPSでしか動かない
安全上の決まりがあります。通信を横取りできるという強い力を持つため、暗号化された接続でなければ動作しません。悪意のある第三者に仕込まれると、表示内容をすべて差し替えられてしまうからです。開発時の手元の環境だけは例外として許されています。
更新が届かない、という落とし穴
導入して最初に困るのがこれです。手元に保管したものを返し続けるため、サイトを修正しても古い内容が表示され続けることがあります。保管したものの入れ替え方をきちんと設計しておかないと、「直したのに変わらない」という問い合わせを招きます。
使いどころを選ぶ
万能ではありません。内容が頻繁に変わるページや、常に最新であることが求められる画面では、かえって扱いが難しくなります。変化の少ない画像やデザインのファイルから適用し、様子を見ながら広げていくのが現実的な進め方です。
あわせて知っておきたい用語
- PWA:
Webサイトをアプリのように使える仕組みです。 - キャッシュ:
一度使ったデータを手元に保管しておくことです。 - HTTPS:
通信を暗号化してやり取りする方式です。 - JavaScript:
ブラウザの中で動く、代表的なプログラム言語です。



コメント