特に記載のない限り、下記の変更は Android、ChromeOS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。2023 年 3 月 9 日の時点で Chrome 112 はベータ版です。PC 向けの最新版は Google.com で、Android では Google Play ストアでダウンロードできます。
# CSS
# CSS のネスト
CSS のスタイルルールの中に別のスタイルルールをネストできるようになります。外側のセレクタと内側のルールを組み合わせることができるので、スタイルシートのモジュール性と保守性が向上します。詳しくは、CSS のネストに関するこちらの記事をご覧ください。
# CSS animation-composition
プロパティ
animation-composition
プロパティを使うと、複数のアニメーションが同時に同じプロパティに影響を与える場合に、使用する複合操作を指定することができます。このデモの例をご覧ください。
# ウェブ API
# トップレベルのフレームが権限の変更を監視している場合に [Reload this page] 情報バーを非表示
トップレベルのフレームが PermissionStatus
の onchange
イベントをサブスクライブしている場合、[Reload this page] 情報バーが抑制されます。このサブスクライブにより、ページ情報ダイアログで行われたカメラやマイクの権限変更に対して、アプリケーションが動的に反応することが示されます。イベント リスナーが存在するかどうかにかかわらず、権限が取り消されるとメディア ストリームが直ちに終了するという既存の動作は変わりません。
# FormData
コンストラクタにオプションの submitter パラメータを追加
FormData
コンストラクタに送信ボタンを渡せるようになります。ボタンに名前がある場合、またはボタンがイメージボタンである場合は、フォームのデータセットに影響します。これにより、ボタンによってトリガーされる通常のフォーム送信と同じデータセットを持つ FormData
オブジェクトを作成できるようになります。
# 集合表記と文字列プロパティに対応する正規表現の v フラグ
正規表現の文字クラスに、集合演算、文字列リテラル、ネストクラス、文字列の unicode プロパティを追加します。集合演算と文字列の unicode プロパティにより、特定の unicode 文字を含む正規表現のマッチ文字列を簡単に作れるようになります。
たとえば、 /[\p{Script_Extensions=Greek}&&\p{Letter}]/v
はすべてのギリシャ文字にマッチします。
# <dialog>
の初期フォーカス アルゴリズムの更新
<dialog>
要素が開いたときフォーカスを受け取る要素の選択に関して、いくつかの変更が行われます。
- ダイアログのフォーカス設定手順で、フォーカスが可能なすべての要素ではなく、キーボードによるフォーカスが可能な要素が参照されます。
- autofocus 属性が設定されている場合は、dialog 要素自体がフォーカスを受け取ります。
- フォーカスが body 要素に「リセット」されるのではなく、フォールバックとして dialog 要素自体がフォーカスを受け取ります。
# WebAssembly の末尾呼び出し
WebAssembly に明示的末尾呼び出しと間接末尾呼び出しのオペコードを追加します。
# Web Worker の WebGLContextEvent
WebGLContextEvent
型は、Khronos の WebGL 仕様で何年も前から定義されていますが、Blink でこの型が Web Worker に公開されていなかったことは最近までわかりませんでした。
ほとんどのアプリケーションは、イベント リスナーを追加してこの型を受け取っているだけで、グローバル スコープでプロトタイプを探しません。この変更は Blink で WebGLContextEvent
の Web IDL を修正しただけの簡単なものですが、ウェブに公開されます。
# Service Worker が no-op フェッチ ハンドラをスキップ
この機能により、no-op Service Worker フェッチ ハンドラがスキップされるため、これが設定されているページのナビゲーションが高速になります。
サイトによっては、no-op(何もしない)フェッチ リスナー(例 : onfetch = () => {}
)が設定されている場合があります。フェッチ リスナーを設定することはプログレッシブ ウェブアプリ(PWA)要件の 1 つだったので、これはサイトを PWA として認識させるための措置だったと考えられます。ただしこれは、Service Worker を起動して no-op リスナーを実行する負荷を増やすだけであり、コードが何もしないので、キャッシュやオフライン機能といった機能的なメリットがもたらされることはありません。
このようなページへのナビゲーションを高速にするため、Chrome 112 以降では、ユーザー エージェントにより Service Worker のすべてのフェッチ リスナーが no-op であると判断された場合に、ナビゲーションのクリティカル パスから Service Worker の起動とリスナーのディスパッチを省略します。
この変更の一環として、Service Worker のすべてのフェッチ リスナーが no-op であった場合、デベロッパーに無用なフェッチリスナーを削除してもらうために、Chromium がコンソールに警告を表示するようになります。無用なフェッチ リスナーが使用されなくなり、将来的にこの機能のサポートを終了できることを期待しています。
# WebView の HTTPS コネクションの Accept-encoding: br(Brotli)
Brotli(content-encoding type: br
)は汎用ロスレス圧縮アルゴリズムで、現在利用できる最高の汎用圧縮手法よりも高い圧縮率とスピードを提供します(詳しくは、google/brotli と RFC 7932 をご覧ください)。
Brotli(Accept-Encoding: br
)の HTTP content-encoding type は バージョン 50 以降の Chrome でサポートされていますが、これまで WebView では有効になっていませんでした。安定性を確保するため、この機能は段階的にロールアウトされ、WebView ベータ版の 50% で利用できるようになる予定です。
# 進行中のオリジン トライアル
Chrome 112 では、以下のオリジン トライアルにオプトインできます。
# FedCM: 自動再認証 API
最新バージョンの FedCM には、自動再認証機能のオプトインが含まれています。これにより、最初に FedCM を使って認証を行ったユーザーが再度アクセスしたときに、ユーザーを自動的に再認証できるようになります。
現在、ユーザーが FedCM を通して IdP(ID プロバイダ)のある RP(リライング パーティ)でフェデレーション アカウントを作成すると、ウェブサイトに次回アクセスするときに、ユーザー インターフェースで同じ手順を実行しなければなりません。つまり、ログインフローを再開するには、明示的に確認して再認証する必要があります。FedCM の主な目的の 1 つは密かなトラッキングを防ぐことなので、ユーザーがフェデレーション アカウントを作成する前であれば、このユーザー エクスペリエンス(UX)が妥当です。しかし、ユーザーがこの手順を行った後では、不要で面倒な手続きになります。そこで Chrome は、再アクセスするユーザー用にさらに効率的な UX を導入し、RP がそれを選択できるようにします。
FedCM 自動再認証オリジン トライアルに登録する
# 逆トライアル
RTCPeerConnection
の getStats()
メソッドは、type == "track"
または "stream"
の統計オブジェクトを返さなくなります。この機能は Chrome 112 で削除されますが、このトライアルにオプトインすると、必要な変更を行うための時間を増やすことができます。
この逆トライアルに登録する
# WebView の X-Requested-With のサポート終了
この逆オリジン トライアルでは、X-Requested-With
ヘッダーを使用するサービスを呼び出す際に、クロスオリジン事前有効化をサポートします。このオプションは、Chrome 112 以降の WebView で利用可能です。この機能の使用方法については、オリジン トライアルの設定手順をご覧ください。
WebView の X-Requested-With 逆トライアルに登録する
# サポートの終了と機能の削除
このバージョンの Chrome では、以下のサポートの終了と機能の削除が行われます。サポートの終了が予定されている機能、現在サポートが終了している機能、以前に削除された機能のリストは、ChromeStatus.com をご覧ください。
今回の Chrome のリリースでは、1 つの機能のサポートが終了します。
# document.domain
セッターのサポート終了
document.domain
セッターを使うと、デベロッパーが同一オリジン ポリシーを緩和できますが、これによって私たちが維持しようとしている根本的なセキュリティ境界が複雑になり、Spectre 後の Chromium のプロセスモデル変更の障害にもなります。現在、これは Origin-keyed エージェント クラスタを通してオプトインできます。
今回の Chrome のリリースでは、1 つの機能が削除されます。
# RTCPeerConnection
の getStats()
メソッドから統計オブジェクト track
と stream
を削除
RTCPeerConnection
の getStats()
メソッドは、type == "track"
または "stream"
の統計オブジェクトを返さなくなります。Chrome 112 で削除されますが、逆トライアル(前述)によってこれらの指標の利用期間を Chrome 115 まで延長できます。