Chrome 117 ベータ版

CSS グリッド サブグリッド、開始 / 終了アニメーションの CSS、配列のグループ化、イテレータ ヘルパーなどをサポート。

特に記載のない限り、ここに記載されている変更は、Android、ChromeOS、Linux、macOS、Windows 向けの最新の Chrome Beta チャンネル リリースに適用されます。ここに記載されている機能について詳しくは、リンク先または ChromeStatus.com のリストをご覧ください。Chrome 117 は 2023 年 8 月 16 日時点でベータ版です。最新版はパソコンの場合は Google.com、Android の場合は Google Play ストアでダウンロードできます。

CSS

今回のリリースでは 6 つの新しい CSS 機能を追加しました。最初の 3 つのプロパティは、開始と終了のアニメーションを有効にする個別のプロパティを遷移できるようにするための作業の一部です。

@starting-style ルール

この @ ルールを使用すると、作成者はスタイルの最初の更新時に CSS 遷移を開始できます。

CSS 遷移は、要素のスタイルが最初に更新されたとき、または表示タイプが none から他のタイプに変わったときには、初期スタイルから遷移をトリガーしません。これは、初期スタイルから予期しない移行が発生しないようにするためです。最初にスタイルを更新した時点から移行を開始するために、@starting-style ルール内からスタイルを適用できるようになりました。たとえば次の CSS では、div の最初のスタイル更新時に、背景色が緑色からライム色に変化します。

div { 
  transition: background-color 0.5s; 
  background-color: lime; 
} 

@starting-style {
  div { 
    background-color: green; 
  } 
}

オーバーレイ プロパティ

overlay プロパティを使用すると、デベロッパーは終了遷移の最上位レイヤに要素を保持できます。要素が最上位レイヤにあるかどうかを示すオーバーレイ プロパティが追加されます。このプロパティは、none または auto の 2 つの値を取ることができます。

CSS 遷移動作プロパティ

transition-behavior CSS プロパティは transition プロパティの拡張機能で、遷移の際に個別のプロパティを使用できます。遷移動作に allow-discrete 値を指定することで、個別のプロパティがアニメーションを開始し、初期値から最終値の 50% に反転するようになりました。display: nonecontent-visibility: hidden が初期値または最終値のいずれかである遷移の場合、遷移の全期間にわたって可視値が使用されます。

CSS グリッド サブグリッドの値

grid-template-columnsgrid-template-rowssubgrid 値が Chrome に実装されました。この値を指定すると、行、列、またはその両方に対して新しいトラック定義を作成することなく、ネストされたグリッドで親で定義されたトラックを使用できます。

CSS テキストの折り返し: 見栄えが良い

CSS の text-wrap プロパティの pretty 値は、速度ではなく最適なレイアウトに合わせて最適化します。これは本文を対象としているため、複数行を使用する必要があります。デベロッパーは pretty を使用することで、wrap より遅くなる可能性のあるレイアウト メソッドを明示的にオプトインしています。これにより、パフォーマンスが最適化されます。Chrome の現在の実装では、テキストの段落の下部に 1 つの単語が表示されないように孤立を最適化しています。

Chrome 117 では、text-wrap: pretty のデモを試して、この値によってテキストの表示がどのように変化するかご確認ください。

contains-intrinsic-size: auto なし

この機能により、既存の contain-intrinsic-size 構文が拡張され、auto && none も含まれるようになります。

ウェブ API

配列のグループ化

配列のグループ化は非常に一般的なオペレーションであり、SQL の GROUP BY 句と MapReduce プログラミング(map-group-reduce とよく考えられたもの)に最もよく例示されます。データをグループにまとめることができるため、コホートの平均年齢やウェブページの 1 日あたりの LCP 値など、高次のデータセットを計算できます。この機能を実現するには、静的メソッド Object.groupByMap.groupBy を追加します。Object メソッドは、グループがプロパティ キーであるプレーン オブジェクトを返します。Map メソッドは Map を返します。キーには任意の値を指定できます。

Clear-Site-Data ヘッダーを使用して Client Hints を消去

ウェブサイトは、Clear-Site-Data: "clientHints" を使用して Client Hints のキャッシュを消去できるようになります。また、「cookies」、「cache」、または「*」が同じヘッダーでターゲットに設定されている場合にも、Client Hints がクリアされるようになりました。これは、ユーザーが UI で Cookie を消去した場合、Client Hints のキャッシュもすでに消去されている場合、Client Hints のキャッシュはキャッシュであり、ワイルドカード ターゲットとの整合性を保つためです。

Clear-Site-Data ヘッダーのワイルドカード構文

ウェブサイトで Clear-Site-Data: "*" を送信することで、すべてのストレージ ターゲット(「Cookie」、「キャッシュ」、「ストレージ」)を消去できるようになります。現時点では、Chrome では「executionContexts」の消去はサポートされていませんが、今後「*」をターゲットにしたヘッダーで追加されると、この消去設定も解除されます。

customElements.getName

customElements.getName() メソッドは、指定されたカスタム要素定義のタグ名を返します。

イテレータ ヘルパー

イテレータ ヘルパーは、イテレータの一般的な使用と消費を可能にするイテレータ プロトタイプの新しいメソッドです。

CaptureController を EventTarget インターフェースから派生させる

CaptureController インターフェースを使用すると、スクリーン キャプチャ セッションをさらに操作できます。将来的には、キャプチャ セッションに関連するイベントがコントローラでディスパッチされることが想定されます。このようなイベントのリスナーを管理できるように、CaptureControllerEventTarget メソッドが使用可能になりました。

PerformanceResourceTiming の DeliveryType

PerformanceResourceTimingdeliveryType プロパティは、リソースの配信方法に関する情報を返します。たとえば、キャッシュから配信されたリソース(現在は transferSize を通じて公開されている)や、前のページでプリフェッチされたナビゲーションなどがこれに該当します。

URL セッターでのポート オーバーフローのチェック

url.port を設定するときに、ポートの値が確認されます。16 ビットの数値制限をオーバーフローする値はすべて無効になります。たとえば、次のスクリプトは変更後に動作が異なります。

u = new URL("http://test.com"); 
u.port = 65536; 
console.log(u.port); 

変更前の出力は 65536 です。変更後、出力は 80 になります。

Private State Token API

サードパーティ Cookie などのクロスサイト永続 ID を使用せずに、制限付きのプライベート シグナルをサイト間で伝播するための新しい API です。サードパーティ Cookie を使用する不正防止機能は、サードパーティ Cookie が廃止されると機能しなくなります。Private State Token API は不正防止シグナルを生成または定義しません。これは、対応するファースト パーティおよびトークン発行者に委ねられます。この API は、これらのシグナルで転送される情報に制限を適用することでプライバシーを維持します。この API は Privacy Pass プロトコルのバリアントに基づいており、IETF で標準化が進められています。これは、ウェブで公開されているプライバシー パス プロトコルの形式と考えることができます。API の仕様は、トークンの新しいバージョンとタイプに合わせて更新され、プライバシー パスのワーキング グループの仕様によって常に最新の状態に保たれます。想定される変更は、基盤となる暗号プロトコルとトークン発行コードです。デベロッパー向けの発行とクーポンの Fetch API に変更は予定されていません。Private State Token API は、以前は Trust Token API と呼ばれていました。基盤となるセマンティクスをより正確にキャプチャし、ユーザーにとってのプライバシー上の利点を強調するために、名前が変更されました。

URL 標準互換 IPv4 埋め込み IPv6 ホストパーサー

IPv4 の埋め込み IPv6 ホストパーサーの解析動作は、ウェブ URL 標準に厳密に準拠するよう更新されます。IPv6 アドレスに導入された制限は次のとおりです。

  • 埋め込み IPv4 アドレスは常に 4 つの部分で構成されます。
  • 部分が 4 つ未満のアドレス(http://[::1.2] など)は無効になります。この機能は URL 相互運用 2023 の一部です。

URL: 有効な URL パスとして「%00」を許可する

現在 Chrome では、URL のパス部分に「%00」(または null)が含まれていて、URL 標準に準拠していない場合、URL は無効であると見なされます。たとえば、次のテストは Chrome で失敗し、new URL(...) が Invalid URL 例外をスローします。

assertEquals(new URL("http://example.com/%00").pathname, "/%00"); 

URL 標準では、URL パスに文字やバイトのシーケンスが含まれていると URL が無効になることはありません。この変更により、Chrome はその標準に準拠するように更新されます。

WebRTC RTP ヘッダー拡張機能の制御

WebRTC RTCRtpTransceiver API を拡張して、ネゴシエートする RTP ヘッダー拡張を制御できるようにします。

VideoEncoder のフレームごとの量子化器

VideoEncoder 用の「quantizer」VideoEncoderBitrateMode を追加しました。これにより、AV1、VP9、AVC 動画コーデックの各フレームの量子化パラメータを指定できます。

requestDevice() の WebUSB exclusionFilters オプション

navigator.usb.requestDevice()exclusionFilters オプションを使用すると、ウェブ デベロッパーはブラウザ選択ツールから一部のデバイスを除外できます。これは、より広範なフィルタに一致するものの、サポートされていないデバイスを除外するために使用できます。

進行中のオリジン トライアル

Chrome 117 では、以下の新しいオリジン トライアルにオプトインできます。

Shared Brotli を使用した圧縮辞書転送

この機能により、指定した以前のレスポンスを、HTTP レスポンスを Brotli 圧縮するための外部辞書として使用できるようになりました。

CompressionDictionaryTransport オリジン トライアルに登録します。

WebSQL の非推奨トライアル

WebSQL は Chrome から削除されます。これに依存しているサイトは、Wasm 経由で SQLite に移行することが推奨されています。

この非推奨トライアルの移行に時間が必要な場合は、Chrome 123(2024 年 3 月)まで WebSQL を引き続き使用できます。WebSQL の非推奨トライアルにご登録ください。

タブ形式のウェブアプリ

ウェブアプリ ウィンドウで、たとえば同じアプリ内の複数のドキュメントを編集するために、タブバーを表示できるようになります。これにより、「タブ付き」という新しい表示モードと、タブバーのカスタマイズを可能にする新しいマニフェスト フィールドが追加されます。

タブ付きウェブアプリのオリジン トライアルに登録します。

サポートの終了と削除

このバージョンの Chrome では、下記のサポート終了と削除が行われます。サポート終了の予定、現在のサポート終了、以前の削除内容については、ChromeStatus.com をご覧ください。

今回の Chrome リリースでは、2 つの機能のサポートが終了しました。

アンロード イベントのサポート終了

Chrome 117 では、unload イベント ハンドラのサポート終了プロセスが開始されます。サイトでこれらを使用している場合は、unload のサポート終了に関する投稿で詳細を確認することを強くおすすめします。

TLS SHA-1 サーバー署名のサポート終了

Chrome では、TLS handshake 時のサーバー署名に SHA-1 を使用した署名アルゴリズムのサポートを終了します。これは、すでに削除されているサーバー証明書での SHA-1 サポートや、引き続きサポートされるクライアント証明書での SHA-1 サポートには影響しません。

今回の Chrome リリースでは、4 つの機能が削除されました。

[WebRTC] コールバック ベースの以前の getStats() のアンシップ

RTCPeerConnection には、getStats() の 2 つのバージョンがあります。1 つは仕様に準拠しており、Promise を解決してレポートを返します。もう 1 つは、最初の引数としてコールバックを介してまったく異なるレポートを返す非標準のバージョンです。コールバック ベースのものは削除されました。

移行の詳細と、さらに時間が必要な場合は、以前の getStats() 移行ガイドをご覧ください。

WebRTC getStats datachannelIdentifier の -1 値を削除

WebRTC getStats API は dataChannelIdentifier プロパティを公開します。データチャネル接続が確立される前に統計情報がクエリされる場合、値「-1」は提供されなくなります。代わりに、辞書のメンバーは省略されます。

WebRTC getStats encoderImplementation および decoderImplementation "unknown" を削除

WebRTC getStats API は、送信動画と受信動画のエンコーダとデコーダの実装名を公開します。動画フレームがエンコードまたはデコードされる前に統計情報がクエリされる場合、値「unknown」が提供されなくなります。代わりに、辞書のメンバーは省略されます。

CSS プロパティ -webkit-highlight

テキストをハイライト表示するが、標準化されていない CSS プロパティ -webkit-highlight を削除します。Chromium では目に見える効果はありません(解析されますが、コンテンツのレンダリングに使用されることはありません)。このプロパティは 2014 年に WebKit から削除され、MDN で非推奨としてマークされ、最近 CSS Highlight Pseudo 仕様に置き換えられました。