PWA向けService Workerサポートの検出

Service Workerサポートのチェック、ワーカーの登録、オフライン機能の実装方法を学びます。プログレッシブWebアプリ開発に不可欠。

Workers

詳細な説明

Service Worker検出

Service Workerはプログレッシブウェブアプリ(PWA)の基盤であり、オフラインキャッシング、プッシュ通知、バックグラウンド同期を可能にします。ブラウザとサーバーの間のプログラム可能なネットワークプロキシとして機能します。

検出

const hasServiceWorker = 'serviceWorker' in navigator;

登録パターン

if ('serviceWorker' in navigator) {
  window.addEventListener('load', async () => {
    try {
      const registration = await navigator.serviceWorker.register('/sw.js');
      console.log('SW registered:', registration.scope);
    } catch (error) {
      console.error('SW registration failed:', error);
    }
  });
}

要件

  • HTTPS必須: Service Workerはセキュアオリジン(HTTPS)または開発用のlocalhostでのみ動作します。
  • 同一オリジン: Service Workerファイルはページと同じオリジンから提供する必要があります。
  • スコープ: Service Workerはそのスコープ内(登録されたディレクトリ)のページを制御します。
  • ライフサイクル: Service Workerはinstall、activate、fetchの各フェーズを独自の更新サイクルで経ます。

関連API

Service Workerは複数の依存APIを有効にします:

  • Cache API (caches) オフラインストレージ用
  • Push API プッシュ通知用
  • Background Sync 遅延リクエスト用
  • Navigation Preload ページ読み込みの高速化用

ユースケース

オフラインファーストWebアプリケーション、静的アセットのキャッシング、プッシュ通知の実装、バックグラウンドデータ同期の有効化に必要です。モダンなPWAはService Workerサポートをベースラインとして必要とします。

試してみる — Browser Feature Detector

フルツールを開く