この記事は Chromium Blog の記事 “Chrome 96 Beta: Conditional Focus, Priority Hints, and More” を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。2021 年 10 月 21 日の時点で Chrome 96 はベータ版です。
3 桁のバージョン番号に対する準備
来年には、Chrome でバージョン 100 がリリースされます。つまり、Chrome のユーザー エージェント文字列で報告されるバージョン番号の桁が増えます。サイトオーナーが新しい文字列をテストしやすくするために、Chrome 96 では、Chrome のユーザー エージェント文字列として「100」が返されるようにするランタイム フラグが導入されています。chrome://flags/#force-major-version-to-100
と呼ばれるこの新しいフラグは、Chrome 96 以降で利用できます。
オリジン トライアル
このバージョンの Chrome には、以下のオリジン トライアルが導入されています。オリジン トライアルとして新機能を試せるようにすることで、ウェブ標準コミュニティにユーザビリティ、実用性、有効性についてのフィードバックを提供することができます。以下の項目を含め、現在 Chrome でサポートされているオリジン トライアルに登録するには、Chrome オリジン トライアル ダッシュボードをご覧ください。Chrome のオリジン トライアルの詳細については、ウェブ デベロッパーのためのオリジン トライアル ガイドをご覧ください。Microsoft Edge は、Chrome とは別に独自のオリジン トライアルを行っています。詳細については、Microsoft Edge オリジン トライアル デベロッパー コンソールをご覧ください。
新しいオリジン トライアル
Conditional Focus
現在、他のウィンドウやタブをキャプチャするアプリケーションには、呼び出し元のアイテムやキャプチャするアイテムにフォーカスするかどうかをコントロールする方法がありません(ビデオ会議アプリのプレゼンテーション機能を思い浮かべてください)。Chrome 96 では、新しい focus()
メソッドをサポートする FocusableMediaStreamTrack
と呼ばれる MediaStreamTrack
のサブクラスを使用して、このコントロールを可能にしました。次のコードをご覧ください。
stream = await navigator.mediaDevices.getDisplayMedia();
let [track] = stream.getVideoTracks();
このコードでは、以前は getVideoTracks()
が MediaStreamTrack
オブジェクトの配列を返していましたが、FocusableMediaStreamTrack
オブジェクトを返すようになります(Chrome 97 では、返されるオブジェクトが BrowserCaptureMediaStreamTrack
に変更される予定です。本記事の執筆時点で、Canary 版ではすでに新しいオブジェクトが返されるようになっています)。
フォーカスするディスプレイ メディアを決定するには、このコードの次の行で "focus-captured-surface"
を指定して track.focus()
を呼び出し、新しくキャプチャするウィンドウやタブにフォーカスするか、"no-focus-change"
を指定してこのメソッドを呼び出し、呼び出し元のウィンドウにフォーカスし続けます。Chrome 96 以降では、デモコードを試して、この機能の動作を確認できます。
Priority Hints
Priority Hints では、デベロッパーが設定する "importance"
属性が導入され、計算されるリソースの優先度を変更することができます。サポートされる importance 属性の値は、"auto"
、"low"
、と "high"
です。Priority Hints は、リソースの相対的な重要度をブラウザに示し、リソースが読み込まれる順序をより細かくコントロールできるようにします。ブラウザでは、リソースのタイプ、可視性、プリロードのステータスなど、多くの要素がリソースの優先度に影響を及ぼします。
今回のリリースに追加されたその他の機能
プリフライトなしに単純な Range ヘッダー値を許可
プリフライト リクエストなしに、単純な Range ヘッダーを指定してリクエストを送信できるようになりました。CORS リクエストでは、プリフライト リクエストをトリガーせずに、Range ヘッダーを限定的な方法(1 つの有効な範囲のみ)で使用できます。
デスクトップのバックフォワード キャッシュ
バックフォワード キャッシュにページが格納され、クロスサイト ナビゲーションをした後でも、以前にアクセスしたページへの即時ナビゲーションが可能になります。
Cross-Origin-Embedder-Policy: credentialless
Cross-Origin-Embedder-Policy
には、クロスオリジン no-cors
リクエストで認証情報(Cookie やクライアント証明書など)を省略できるようにする新しい credentialless
オプションが追加されます。COEP:require-corp
と同じように、クロスオリジン分離も有効化できます。
SharedArrayBuffer を使い続けたいサイトでは、クロスオリジン分離をオプトインする必要があります。COEP: require-corp
を使用して、クロスオリジン分離のオプトインを大規模に導入することは難しく、すべてのサブリソースで明示的にオプトインしなければならなくなります。これが問題にならないサイトもありますが、ユーザーからコンテンツを収集するサイト(Google Earth、ソーシャル メディア全般、フォーラムなど)では、依存関係の問題が発生します。
CSS
:autofill 疑似クラス
新しい autofill
疑似クラスを使用すると、自動入力されるフォーム要素のスタイルを設定できます。これは、:-webkit-autofill
疑似クラスの標準化として導入されており、WebKit ではすでにサポートされています。Firefox は、この標準バージョンをサポートします。
封じ込めが適用される場合に body スタイルからビューポートへの伝播を無効化
writing-mode、direction、background など、一部のプロパティは、body からビューポートに伝播されます。CSS コンテナクエリの無限ループを防ぐために、仕様と実装が変更され、HTML または BODY にレイアウトの封じ込めが適用される際にこれらのプロパティが伝播されなくなりました。
font-synthesis プロパティ
font-synthesis
CSS プロパティは、フォント ファミリーにフェイスがない場合、ユーザー エージェントが斜体、太字、小型英大文字のフォント フェイスを合成できるようにするかどうかをコントロールします。
EME MediaKeySession が閉じられた理由
MediaKeySession.closed
プロパティは、enum を使用して、MediaKeySession
オブジェクトが閉じられた理由を示すようになります。この closed プロパティは、セッションが閉じたときに解決される Promise を返します。以前は Promise が解決されるだけでしたが、文字列として解決されるようになり、閉じられた理由を示します。返される文字列は、"internal-error"
、"closed-by-application"
、"release-acknowledged"
、"hardware-context-reset"
、"resource-evicted"
のいずれかです。
HTTPS DNS レコードでの HTTP から HTTPS へのリダイレクト
Chrome では、DNS(ドメイン名サービス)から HTTPS レコードが利用できる場合は、常に HTTPS 経由でウェブサイトに接続します。
EventTiming の interactionID
PerformanceEventTiming
インターフェースに interactiveID
と呼ばれる属性が含まれるようになりました。これは、ブラウザが生成する ID であり、複数の PerformanceEventTiming
エントリが同じユーザー操作に対応する場合、これらのエントリをリンクできるようにします。現在、デベロッパーは Event Timing API を使用して、関心のあるイベントのパフォーマンス データを収集できます。ただし、同じユーザー操作に対応するイベントをリンクすることは困難です。たとえば、ユーザーがタップしたときなら、pointerdown
、mousedown
、pointerup
、mouseup
、click
など、多くのイベントが生成されます。
新しいメディアクエリ : prefers-contrast
Chrome は、 'prefers-contrast'
と呼ばれる新しいメディアクエリをサポートします。そのため、ウェブ制作者は、オペレーティング システムで設定されたユーザーのコントラスト設定(具体的には、macOS のコントラストを強調したモードと Windows のハイ コントラスト モード)にウェブ コンテンツを合わせることができます。有効な選択肢は、'more'
、'less'
、'custom'
、または 'no-preference'
です。
デスクトップ PWA の一意の ID
ウェブアプリ マニフェストで任意の id
フィールドがサポートされ、ウェブアプリをグローバルに特定できるようになりました。id
フィールドがない場合、PWA は start_url
にフォールバックします。現時点で、このフィールドはデスクトップのみでサポートされます。
PWA の URL プロトコル ハンドラ登録
ウェブ アプリケーションがインストール マニフェストを使用して、カスタム URL プロトコル / スキームのハンドラとして自身を登録できるようにします。多くの場合、オペレーティング システム アプリケーションは自身をプロトコル ハンドラとして登録して、見つけやすさと使用率を向上します。ウェブサイトは、すでに registerProtocolHandler()
を介してスキームを処理するように登録できます。この新機能はもう一歩踏み込んで、カスタム スキーム リンクが呼び出されたときに、ウェブアプリを直接起動できるようにします。
WebAssembly
コンテンツ セキュリティ ポリシー
Chrome のコンテンツ セキュリティ ポリシーが強化され、WebAssembly との相互運用性が向上しています。wasm-unsafe-eval
は、WebAssembly の実行をコントロールします(JavaScript の実行には影響しません)。また、script-src
ポリシーに WebAssembly が含まれるようになりました。
参照型
WebAssembly モジュールで JavaScript オブジェクトや DOM オブジェクトへの参照を保持できるようになりました。具体的には、これらの参照は、引数として渡したり、ローカル変数やグローバル変数に格納したり、WebAssembly.Table オブジェクトに格納したりできます。
サポートの終了と機能の削除
このバージョンの Chrome では、以下のサポートの終了と機能の削除が行われます。現在サポートが終了している機能と以前に削除された機能のリストは、ChromeStatus.com をご覧ください。
PaymentRequest API の “basic-card” 支払い方法
PaymentRequest API では、“basic-card” 支払い方法が非推奨となっています。その使用率は低いうえ、低下し続けています。この支払い方法の購入手続きまでの時間や購入完了率は、他の支払い方法を下回っています。デベロッパーは、代わりとして他の支払い方法に切り替えることができます。たとえば、Google Pay、Apple Pay、Samsung Pay などの支払い方法です。
削除までのタイムライン :
- Chrome 96: “basic-card” 支払い方法は、レポーティング API で非推奨となります。
- Chrome 100: “basic-card” 支払い方法は削除される予定です。
Reviewed by Eiji Kitamura – Developer Relations Team