[この記事は見習い認証担当の Sabine Borsay、Mike West による Chromium Blog の記事 "Chrome 51 Beta: Credential Management API and reducing the overhead of offscreen rendering" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

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

Credential Management API

多くのサイトでは、サインインすることによってパーソナライズされたコンテンツを受け取ることができるようになっています。現在の仕組みでは、サインインするために覚えている認証情報を打ち込む必要があります。しかし、ユーザーが複数のサイトでパスワードを再利用すると、アカウントのセキュリティは低下します。最新のブラウザにはパスワードマネージャーが搭載されており、パスワードを記憶したり、保存されているパスワードを自動入力したりすることができます。しかし、こういったマネージャーはカスタム化されたログインフローには対応できず、選択されたフェデレイテッドアイデンティティを記憶することもできません。

最新バージョンの Chrome では、Credential Management API がサポートされるようになり、サイトがブラウザのパスワードマネージャーと連携して、ユーザーのログイン操作を改善できるようになっています。この API を使うと、ユーザーは 1 回のタップでサインインしたり、自動的にサイトに戻ったりすることができるようになります。


Credential Management API を使った 1 回のタップによるサインイン


画面外レンダリングのオーバーヘッド削減

最近の一般的なウェブサイトには、ビデオ、ソーシャル ウィジェット、広告などのオリジンを跨いだコンテンツが埋め込まれています。こういったリソースを埋め込むことによって魅力的なコンテンツを提供できる一方、これによって大きなオーバーヘッドが発生し、ページ側からは制御できない不自然な動作が起きることがあります。最新バージョンの Chrome では、画面外のレンダリング パイプラインは実行されず、画面外にあるオリジンを跨いだフレームに対する requestAnimationFrame() コールバックは呼び出されません。これによって、不要な動作が削減されます。いくつかの人気モバイルサイトでは、ユーザーの使い勝手に影響を与えることなく、最大 30% の消費電力を節約できるようになります。

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

  • Intersection Observer API によって、要素の重なりを検出し、非同期イベントとして受け取ることができるようになりました。これによって、負荷のかかるドキュメントのモニタリングが不要になります。 
  • 最新バージョンの Chrome では、パッシブ イベント リスナーがサポートされます。これによって、タップやホイール入力に対してスクロールをブロックすることなく JavaScript を実行できるようになります。 
  • Blob の構築とブラウザへの転送が非同期に実行されるようになりました。これによって、大きなデータファイルを移動してもページに不自然な動作が発生しなくなります。 
  • SameSite Cookie 属性によって、Cookie を同じドメインからのリクエストに限定できます。 
  • TLS で AES_256_GCM 暗号がサポートされるようになり、鍵のサイズで暗号を選ぶサーバーのセキュリティが改善されました。このようなサーバーでは、安全で鍵のサイズが短い暗号よりも、従来の 256 ビット暗号が優先されていました。 
  • Array.prototype.values() が導入され、配列の要素に対する反復操作が簡単になりました。 
  • computed property name を持つプロパティやメソッドに対して、function の name プロパティがわかりやすい名前を推測するようになりました。これによって、ラベルやエラー メッセージが明確になり、デバッグが簡単になります。 
  • for-of ループを構成するイテレータが途中で終了した場合にも、デベロッパーが作成した close() メソッドが呼ばれるようになりました。これによって、反復処理の終了時の処理が簡単になります。 
  • Symbol.species によって、Array や RegExp などのビルトイン クラスのサブクラス化が強化されます。具体的には、派生オブジェクトに対してカスタム コンストラクタが呼ばれるようになります。 
  • RegExp のサブクラスで exec() メソッドを上書きすることによって、マッチング アルゴリズムを変更できるようになりました。これによって、カスタム サブクラスの記述が簡単になります。 
  • 独自の Symbol.hasInstance() メソッドを実装し、instanceof 演算子の動作をカスタマイズできるようになりました。 
  • Clients.get(id) で Service Worker の Client オブジェクトを取得できるようになりました。 
  • ServiceWorker.postMessage() によって、ServiceWorkerGlobalScopeExtendableMessageEvent が発生するようになりました。これによって、メッセージが Service Worker の使用期間を延長し、正確なメッセージ ソースを提供できるようになります。 
  • HTML の referrerpolicy 属性によって、<a>、<area>、<img>、<iframe> の各要素のリファラー ヘッダーにどの情報を送信するかを制御できるようになりました。 
  • UIEvents KeyboardEvent |key| 属性によって、押されているキーの意味を確実に判定できるようになりました。 
  • OfflineAudioContext.length 属性によってバッチ オフライン オーディオ コンテキストの長さを検出できるようになりました。 

その他の変更点

  • onbeforeunload ダイアログに表示されるメッセージをカスタマイズする機能が削除されました。ユーザーを悪意あるウェブサイトから保護し、他のブラウザの機能に合わせるためです。
  • Android 向けの Chrome で、デスクトップ向けの Chrome と同じメディア パイプラインが使用されるようになりました。これによって、WebAudio のサポートが改善され、<audio> タグや <video> タグの再生レートを操作できるようになります。
  • 最新バージョンの Chrome では、ウェブ アニメーションの相互運用性が改善されました。具体的には、値のリストがサポートされ、キーフレーム名にダッシュを許容する仕様が削除されています。
  • border 画像の描画に、border style が必要になりました。これによって、仕様への準拠と相互運用性が改善されます。
  • flex item の子要素がパーセンテージを使用してサイズを指定できるようになりました。
  • TLS セキュリティの改善につながる ECDHE 暗号の導入により、DHE ベースの暗号は廃止予定となりました。Chrome 52 で削除される予定です。


Posted by Eiji Kitamura - Developer Relations Team