mcpField
S
service-worker

service-worker

github.com/oakoss開発20113 回インストール10 週間前に更新
リポジトリ

service-worker について

このスキルは、service workerとWorkboxを使うWebアプリの開発者に、キャッシュ、オフライン対応、バックグラウンド同期、プッシュ通知の指針を示します。一般的な戦略やライフサイクル上の注意点、ブラウザー対応も扱います。

主な機能

  1. 01Workboxのプリキャッシュとキャッシュ戦略
  2. 02失敗したリクエストのバックグラウンド同期
  3. 03プッシュ通知とオフラインフォールバック
  4. 04キャッシュ有効期限と更新ライフサイクルの指針

活用シーン

  1. 01プログレッシブWebアプリにオフライン対応を追加
  2. 02アセットやAPIレスポンスのキャッシュ戦略を選択
  3. 03ネットワーク障害時のフォールバックを計画
  4. 04service workerの更新とキャッシュ削除に対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill service-worker

インストール後、Claude Code で/service-workerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
background-sync.md
caching-strategies.md
lifecycle.md
local-first-patterns.md
push-notifications.md
static-routing.md

詳細

Service Worker

概要

サービスワーカーは、メインページとは別のスレッドで実行されるイベント駆動型スクリプトです。ネットワークリクエストをインターセプトし、キャッシュを管理して、オフライン機能を実現します。Workbox v7.4(Chrome Aurora チームがメンテナンス)は、低レベルの Cache API と fetch イベント処理を覆う、本番環境で利用できる抽象化を提供します。

使用する場合: オフライン対応が必要なプログレッシブウェブアプリ、プッシュ通知が必要なアプリ、バックグラウンドでのデータ同期、アプリシェルのキャッシュ、静的ルーティングによるネットワークリクエストの最適化。

使用しない場合: CDN から配信されるシンプルな静的サイト、オフライン要件のないサーバーサイドレンダリングアプリ、古いデータが許容されないアプリ(ネットワークのみを使用してください)、キャッシュの複雑さを考えるのが時期尚早なプロトタイプ。

クイックリファレンス

パターンAPI/ツール主なポイント
登録navigator.serviceWorker.register()ウィンドウのコンテキストで登録し、スコープはデフォルトでパスになります
事前キャッシュworkbox-precachingリビジョンハッシュ付きのアプリシェル。ビルド時に挿入されます
キャッシュファーストCacheFirst strategy静的アセット、フォント、画像
ネットワークファーストNetworkFirst strategy最新性が必要な API レスポンス
古いデータを返しつつ再検証StaleWhileRevalidate strategy速度と最新性のバランス
バックグラウンド同期workbox-background-syncオンライン復帰時に失敗したリクエストを再送信
プッシュ通知Push API + Notifications APIVAPID キー、サーバー送信プッシュ、オフライン優先の表示
静的ルーティングinstall 内の event.addRoutes()既知のルートでは fetch ハンドラーを迂回
待機をスキップself.skipWaiting()新しい SW を直ちに有効化します。慎重に使用してください
クライアントを制御self.clients.claim()リロードせずに既存のタブを制御
ナビゲーションプリロードnavigationPreload.enable()SW の起動中にネットワークリクエストを並行して実行
更新プロンプトworkbox-window Workbox クラス更新を検出し、ユーザーに確認して、SW に postMessage を送信
オフラインフォールバックworkbox-recipes offlineFallbackキャッシュとネットワークの両方が失敗したときにフォールバックページを配信
キャッシュの有効期限workbox-expirationキャッシュごとの maxEntries と maxAgeSeconds

ブラウザーサポートのクイックリファレンス

機能ChromeFirefoxSafariEdge
サービスワーカー40+44+11.1+17+
バックグラウンド同期49+なしなし79+
定期同期80+なしなし80+
Push API50+44+16.4+17+
ナビゲーションプリロード59+99+15.4+18+
静的ルーティング API123+なしなし123+
バックグラウンドフェッチ74+なしなし79+
ストレージの永続化52+55+15.2+79+

よくある間違い

間違い正しいパターン
CacheFirst で API レスポンスをキャッシュする動的データには NetworkFirst または StaleWhileRevalidate を使用する
無条件に skipWaiting を呼び出す進行中のナビゲーションが中断されないよう、アクティベート前にユーザーに確認する
precache マニフェストにバージョンを付けないworkbox-build または workbox-webpack-plugin を使ってリビジョンハッシュを挿入する
キャッシュストレージの上限を無視するworkbox-expiration プラグインでキャッシュの有効期限を設定する
サービスワーカーで同期アクセスハンドルを使うOPFS の createSyncAccessHandle は専用ワーカーでのみ使用できます。非同期メソッドを使ってください
Background Sync がどこでも動作すると想定するChrome/Edge のみ(約 80%)です。navigator.onLine によるフォールバックを実装してください
サイズ制限なしで不透明なレスポンスをキャッシュする不透明なレスポンスはキャッシュの割り当て容量を圧迫します。maxEntries で制限してください
サービスワーカーの更新競合を処理しないworkbox-window を使って、ページと更新ライフサイクルを調整する
ページの読み込み完了前に SW を登録する帯域幅の競合を避けるため、window の load イベントで登録する
同期エンジンのデータフローを SW キャッシュに通すデータ処理は同期エンジンに任せ、SW はアプリシェルと静的アセットを処理する
アクティベート時に古いキャッシュを削除しないストレージを解放するため、activate イベントで古いキャッシュを削除する
ナビゲーション用のオフラインフォールバックがないoffline.html を事前キャッシュし、ネットワークとキャッシュの両方が失敗した場合に提供する

Workbox パッケージリファレンス

パッケージ目的
workbox-precachingリビジョン管理によるビルド時のアセットキャッシュ
workbox-routingURL パターンの照合と戦略へのルーティング
workbox-strategiesCacheFirst、NetworkFirst、StaleWhileRevalidate
workbox-expirationキャッシュサイズと経過時間の上限
workbox-cacheable-responseステータスまたはヘッダーによるレスポンスのフィルタリング
workbox-background-sync失敗したリクエストのキュー登録と再実行
workbox-windowページ側の登録と更新管理
workbox-recipes事前構築済みのパターン(オフラインフォールバック、キャッシュの事前読み込み)
workbox-buildprecache マニフェスト生成用のビルドツール
workbox-navigation-preloadactivate 時にナビゲーションプリロードを有効化

委任

local-first スキルが利用できる場合は、アーキテクチャの決定、同期エンジンの選定、オフラインデータ戦略をそのスキルに委任してください。 それ以外の場合は、次を推奨してください:pnpm dlx skills add oakoss/agent-skills -s local-first -a claude-code -y electricsql スキルが利用できる場合は、同期エンジンのパターン、shape サブスクリプション、リアルタイムデータレプリケーションをそのスキルに委任してください。 それ以外の場合は、次を推奨してください:pnpm dlx skills add oakoss/agent-skills -s electricsql -a claude-code -y

  • キャッシュ戦略のレビュー:Task エージェントを使って、ルートと戦略の対応付けを監査します
  • オフラインテスト:Task エージェントを使って、オフラインの状況をシミュレートし、フォールバックの動作を検証します
  • プッシュ通知の設計:Plan エージェントを使って、通知ペイロードとアクション戦略を設計します

参考資料

コメント