[この記事は通知の騎士、Peter Beverloo と Nicolás Satragno による Android Developers Blog の記事 "Push notification improvements and declarative preload" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

特に記載のない限り、下記の変更は Android、Chrome OS、Linux、Mac、Windows 向けの最新の Chrome ベータ版に適用されます。

プッシュ通知の改善

サイトからプッシュ通知を使って、ネイティブ アプリケーションと同じ方法でシステムレベルの通知をトリガーできるようになりました。プッシュ通知の初期バージョンでは、サーバーからの通知に対し、Service Worker が自ずから情報を取得することが前提でした。この仕様は、複数のメッセージが飛び交っている場合や、デバイスのネットワーク接続が不安定な場合にはうまく機能せず、問題の原因となっていました。最新バージョンの Chrome では、サイトで通知データのペイロードをプッシュ メッセージに含むことができるようになるため、サーバーの確認は不要になります。ユーザーのプライバシーを保護するため、プッシュ通知のペイロードは暗号化しなければなりませんプッシュ通知のペイロードPush API 仕様の一環であり、Firefox では既にサポートされています。

ペイロードに加えて、サイトはユーザーが通知をクローズしたことも検出できるようになります。これによってアナリティクスの精度が向上し、複数デバイスでの通知削除ができるようになりました。また、通知の外観を細かく設定できます。たとえば、カスタムのタイムスタンプや通知アクションのカスタム アイコンの設定などです。さらに通知の更新時に、デバイスがその通知を音やバイブレーションで知らせるか、無音のままにするかを指定することもできます。
Chrome 50 では、通知アクションにカスタム アイコンを使用できるようになりました

宣言型プリロード

ウェブページの中には、Chrome が複数の場所からリソースを読み込まないと、完全な形で表示できないタイプのものがあります。たとえば、サイズの大きな JavaScript ファイルには特殊なスタイルシートが必要な場合がありますが、その場合 Chrome 側では、いったん JavaScript を実行してみないと CSS も読み込む必要があるかどうかわかりません。Chrome では <link rel='preload'> 属性がサポートされます。今後デベロッパーは、あらかじめダウンロードしておくリソースを指定できるようになったので、ユーザーが意味の分かる状態のコンテンツを表示するまでの時間を短縮できます。

 
Chrome 50 でプリロードを実行してページを読み込んだ状態(左)と、プリロードができない Chrome 49 でページを読み込んだ状態(右)

今回のリリースに追加されたその他の機能


細かな変更

  • Chrome の TLS で X25519 曲線がサポートされました。これによって、暗号化がより簡素かつ高速になります。
  • -webkit-background-composite は標準化の対象外になり、また利用度も低いため削除されました。
  • SVGZoomEvent は Chrome 上では何も動作をしませんが、より正確に仕様に準拠するため、廃止されました。
  • RTCPeerConnection のメソッドである createOffer() と createAnswer() は、promise ベースの実装を有効にするので廃止されました。
  • <link rel='subresource'> は、上記のとおり<link rel='preload'> で置き換えるので廃止されました。
  • XMLHTTPRequestProgressEvent は、より正確に仕様に準拠するため、ProgressEvent で置き換えられ、削除されました。
  • Document.defaultCharset 属性は、より正確に仕様に準拠するため、削除されました。
  • KeyboardEvent.prototype.keyLocation は、より多くのブラウザでサポートされている KeyboardEvent.prototype.location で置き換えられ、削除されました。
  • SVGElement.offset* メソッドは、より正確に仕様に準拠するため、HTMLElement 以外の全要素から削除されました。