本記事は Chrome 43 の Service Worker のリリースノートを日本語に意訳したものです。原文は service-worker-discuss グループで読むことができます。

草稿を @FalkenMatto さん (原文の投稿者) にレビューしてもらいました。ありがとうございます。


リリースノートを復活させます!2015 年 5 月後半に stable リリースされた Chrome 43 の Service Worker 関係の変更は次の通りです。なお、Chrome 44 は今月後半のリリースが予定されており、またリリースノートを公開する予定です。

新機能

  • Clients.matchAll() をサポートしました。オプショナル引数によってマッチするクライアント1の種類を指定することができ、Shared Worker のような non-Window クライアントにも対応しました (Bug, Spec)。
  • Clients.openWindow() で cross-origin URL を開くことができるようになりました (Bug, Spec)。
  • CacheStorage API が Window や Service Worker 以外の Worker 上でも使えるようになりました (Bug, Spec)。注意: 現在 HTTP 上でも使用可能ですが、HTTPS 上でのみ使えるように制限がかけられる可能性があります (Spec Discussion)。

API の変更

  • Clients.getAll() が削除されました。代わりに Clients.matchAll() を使用してください (Bug, Spec)。

改善

  • データベースアクセスの排除により、Clients.claim() がより高速に処理されるようになりました (Bug)。

DevTools 関係の変更

Note: 最新の DevTools を試すために、Dev channel もしくは Canary の使用をおすすめします。

  • UA のオーバライドやネットワーク帯域の制限などが行えるデバイスエミュレーション機能が Service Worker と一緒に使えるようになりました (Bug)。
  • ドキュメントとそれをコントロールする Service Worker を同じ DevTools ウィンドウ上で操作できるようになりました。コンソールのドロップダウンリストからドキュメントと Service Worker のコンテキストを切り替えることができます。
  • DevTools の Sources タブの左側のペインに Service Worker のエントリが表示されるようになりました。
  • ドキュメントのコンソールに Service Worker から出力したメッセージが表示されるようになりました。
  • Service Worker を使ったアプリの開発効率向上を目指し、現在 “Service Worker explorer UI” の開発に取り組んでいます。この機能はまだ experimental で、現在 UX の改良が行われています。こちらのスライドを参考に試用していただき、是非フィードバックをお寄せください。

バグフィックス

  • navigator.serviceWorker.register() に渡されたスクリプト URL とスコープは ServiceWorkerContainer のあるドキュメントの URL を基準にパス解決されていましたが、呼び出し元ドキュメントの URL を基準にパス解決されるように修正されました (Bug)。
  • navigator.serviceWorker.ready が shift-reload で開かれたページでも適切に resolve されるようになりました (Bug)。
  • 同一の Service Worker を指す複数の Javascript オブジェクト (ServiceWorker オブジェクト) の状態が適切に同期されていなかった問題が修正されました (Bug)。
  • navigator.serviceWorker.ready はページロード時のスコープマッチ2で選ばれた ServiceWorkerRegistration の .active で resolve されていましたが、.ready にアクセスした時にスコープマッチしたもので resolve されるように修正されました。これにより、ページロード後に作られた ServiceWorkerRegistration のスコープの方がより長く一致する場合はそちらで resolve されるようになります。
  • バグフィックスの全リストはこちらで確認できます。

訳者補足

  1. クライアントについてはこちらの記事で解説を書きました。 

  2. ServiceWorkerRegistration のスコープマッチについてはこちらの記事で解説を書きました。