2026 リモート Mac:
SW 更新・Safari 差異・灰度戻し対照
PWA 担当向け。Safari と Chromium で SW 境界がずれるときの対照・三歩・実機手順です。リリース票へ BUILD_ID を必ず貼り、検証ログと突合できるようにします。slug:2026-service-worker-safari-release-checklist-remote-mac.html。worker とキャッシュ、デプロイ後 Safari、Inspector FAQ。
01 典型のつまずき
1 即時 skipWaiting で別版キャッシュ。2 clients.claim 過剰適用。3 接頭辞固定で Safari に旧 precache。
対策:デプロイごとに 版キー+キャッシュ名 を回し、灰度は ルート/サブドメイン で新旧を分離。
02 差異対照表(Safari/WebKit と Chromium)
差分は キャッシュキーとライフサイクル で固定。Application とコンソール併用。
| 観点 | Safari/WebKit | Chromium |
|---|---|---|
| 更新 | 更新間隔が保守的。手動リロードやサイトデータ削除に寄りがち。 | Update on reload で検証しやすい。 |
| Cache | ITP/プライベートで分岐。一覧が素直でないことがある。 | ストレージタブで削除・再計測が速い。 |
| claim | 通常/プライベート二窓で未登録クライアント影響を切る。 | SW パネルでクライアント追跡が容易。 |
| 灰度戻し | unregister+手順を Runbook 化し実機で演習。 | 同手順。実タブで claim 後を確認。 |
skipWaiting は全タブ即時更新が許容のときのみ自動化。clients.claim は初回から fetch 介入が要るとき限定。接頭辞は sw-v-{BUILD_ID}-。戻しは 静的配信を先に戻す → unregister。
灰度はパス前缀やステージングサブドメインで新 SW のみ当て、本番切替は CDN とオリジンの設定をセットで記録します。異常検知後はトラフィック戻しを最優先にし、クライアント側の登録解除はその次です。
03 公開前検証
三歩:(1)票に BUILD_ID・キャッシュ規則・skipWaiting/claim 方針。(2)冷/温の両方。(3)灰度 URL で新 SW、異常時は静的差し戻し→unregister を演習。
- precache と実ハッシュ一致をビルド成果物で確認。
- navigation preload の対象とオフ経路を表記。
- fetch 戦略をパス単位で列挙し例外 URL を残す。
- API と静的のキャッシュ衝突なし。
- セッション画面は即時 skipWaiting 禁止、UI 更新に。
- オフライン画面の文言とルーティングが新 SW と矛盾しないか確認。
04 リモート実機検証フロー
リモート Mac で Safari と Chromium を同居。HAR/trace で証跡。サイトデータ削除と unregister を Runbook 化。
- ▸
curl -I sw.jsで Cache-Control。 - ▸Safari で waiting 条件をスクショ固定。
- ▸Chromium で Update on reload、claim の A/B。
05 FAQ
Q skipWaiting 内部ツールや単一画面のみ即時可。決済や長文編集がある BtoC はユーザー操作か灰度完了後に限定。
Q claim 初回から横取りが要るときだけ。影響するパスを README に列挙しレビューで固定。
Q Safari だけ古い ITP/プライベート/サイトデータ削除タイミングの差。接頭辞ローテとファイル名ハッシュで版を目視一致させる。