Chrome 103: ナビゲーションの Early Hints、さまざまなオリジン トライアルの終了など
特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。
Chrome でナビゲーション時の 103 Early Hints HTTP レスポンス コードがサポートされます(注 : Chrome のリリース番号が同じなのは偶然です)。 HTTP/2 では、サーバーが先回りしてクライアントにデータを送信するサーバー プッシュという仕組みが生み出されました。サーバー プッシュは、サイトのパフォーマンス向上を目的として導入されました。それ以来、デベロッパーは一般的に、クライアント側のウェブ操作からプリロードをすることを好むようになっています。ナビゲーションの 103 Early Hints は、そのプリロードをする新たな方法を提供します。
ウェブでこれを実現するために行われている作業の詳細については、サーバープッシュを超える解決策 : 103 Early Hints ステータス コードを使った実験をご覧ください。
オリジン トライアルとして新機能を試して、ユーザビリティ、実用性、有効性についてのフィードバックをウェブ標準コミュニティに提供することができます。以下の項目を含め、現在 Chrome でサポートされているオリジン トライアルに登録するには、Chrome オリジン トライアル ダッシュボードをご覧ください。Chrome のオリジン トライアルの詳細については、ウェブ デベロッパーのためのオリジン トライアル ガイドをご覧ください。Microsoft Edge は、Chrome とは別に独自のオリジン トライアルを行っています。詳細については、Microsoft Edge オリジン トライアル デベロッパー コンソールをご覧ください。
Federated Credential Management API を使うと、ユーザーはフェデレーション アカウントを使ってプライバシーが保護された方法でウェブサイトにログインできます。これにより、ブラウザはリライング パーティと ID プロバイダが情報を交換するコンテキストを理解し、共有される情報や権限レベルについてユーザーに伝えることができるので、意図しない不正利用の防止につながります。 Chrome で以前にオリジン トライアルが行われていた以下の機能は、現在デフォルトで有効化されています。 ウェブ アプリケーションで、ローカル フォントとそれぞれのメタデータをエミュレーションできるようになります。この新しい API を使うと、ウェブ アプリケーションからローカル フォント内に格納されているテーブルデータにアクセスすることもできるので、カスタム テキスト スタックを使ってアプリケーション内でフォントをレンダリングできます。 注 : Chrome 102 ベータ版の投稿でこの機能が 102 ベータ版に搭載されると記載していましたが、それは誤りでした。 プリレンダリングとは、必要になる前にウェブページを読み込み、実際にそのページへのナビゲーションが発生したときに即座に表示できるようにすることを指します。これはページの読み込みを速くする技術です。以前の Chrome のプリレンダリングの仕組みは、No State Prefetch に置き換わっています。通常、No State Prefetch は即座にページが読み込まれることにはつながりませんが、この新機能はそれが可能です。この機能は Android のみでサポートされます。 User Agent Client Hints の 指定されたミリ秒単位の時間後に自動的に中断される新しい AbortSignal オブジェクトを返します。このメソッドを使うと、 avif 画像ファイル形式がウェブ共有で共有できるようになります。許可される画像ファイル形式に avif が加わることで、avif の利用が広がります。ウェブサイトから、写真やその他のファイルをソーシャル メディア、メール、チャットなどに共有したい場合があります。Web Share API はすでに ChromeOS や Windows などのプラットフォームに搭載されていますが、まだ avif はサポートされていません。 Chrome が新しい圧縮形式 form 要素に Chromium で URL の変更直後に Gampepad API に安全なコンテキストが必要になります。また、 ウェブ デベロッパーは、 これは、 クロスオリジン iframe での Secure Payment Confirmation のクレデンシャル登録にユーザー アクティベーション要件が追加されました。これは、プライバシーの問題への緩和策として実施されています。 このバージョンの Chrome では、以下のサポートの終了と機能の削除が行われます。現在サポートが終了している機能と以前に削除された機能のリストは、ChromeStatus.com をご覧ください。 サンドボックス化された iframe では、外部アプリケーションの起動はブロックされません。現在、デベロッパーは信頼できないコンテンツをサンドボックス化してユーザーのナビゲーションをブロックしています。そのため、外部アプリや Play ストアへのリンクもブロックするべきでした。現在、この点が修正されています。 ナビゲーションが必要なサイトでは、 Battery Status API が安全でないコンテキストでサポートされなくなります。具体的には、HTTP ページと HTTP ページに埋め込まれた HTTPS iframe が対象になります。この機能は、安全でないオリジンで機能を非推奨にするというポリシーに従って削除されます。また、仕様の変更にも従っています。 ウェブ プラットフォームからプラグインが削除され、ナビゲーションの Early Hints
<link rel=preload> などの link ヘッダーを含む 103 レスポンスを受け取ると、Chromium は最終的なレスポンスを受け取る前に、指定されたリソースのプリロード(またはプリコネクトやプリフェッチ、あるいはそのすべて)を試みます。これにより、ウェブ デベロッパーが Largest Contentful Paint(LCP)などの Core Web Vitals を最適化する余地が生まれます。
オリジン トライアル
新しいオリジン トライアル
Federated Credential Management API
完了したオリジン トライアル
ローカル フォントへのアクセス
Speculation Rules API から Same-Origin プリレンダリングをトリガー
User-Agent Client Hints の GREASE 実装の更新
GREASE 実装が現在の仕様に一致するようになります。この仕様には、現在のセミコロンとスペースに加えて追加の GREASE 文字が含まれており、バージョンを任意の数に変更することが推奨されています。これにより、User-Agent 文字列から好ましくない推定が行われることを防止できます。今回のリリースに追加されたその他の機能
AbortSignal.timeout() 静的メソッド
fetch() などのシグナルを受け取れる非同期 API で簡単にタイムアウトを実装できます。たとえば、次のようなことが可能です。
fetch(url, { signal: AbortSignal.timeout(10_000) });role 属性に ARIA 属性を反映
Element インターフェースと ElementInternal インターフェースに ariaRoleDescription と呼ばれる ARIA プロパティが含まれるようになります。ここから、ARIA の role 属性を直接返却または変更できます。この機能はパソコン版でのみサポートされます。ウェブ共有が avif ファイル拡張子を許可
"deflate-raw" 圧縮形式
deflate-raw をサポートします。ウェブ デベロッパーは、ヘッダーやフッターなしに未加工の deflate ストリームにアクセスできます。これは、zip ファイルの読み取りや書き込みをする場合などに必要になります。form の rel 属性
'rel' 属性が追加されました。これにより、rel=noopener を持つ form 要素から移動したウェブサイトで window.opener の提供を防げることができるようになります。また、rel=noreferrer を指定すると、referer ヘッダーが送られなくなります。読み込み前に popstate を発行
popstate が発行されます。これにより、Firefox の挙動と一致するようになり、両方のプラットフォームで popstate の後に hashchange という順番でイベントが発行されます。この変更前の Chromium では、タスク後に hashchange が非同期で発行され、popstate は読み込みイベント後に発行されていました。つまり、ドキュメントの読み込み時間によって、イベントの順番が hashchange の後に popstate となる場合も、popstate の後に hashchange となる場合もありました。 ゲームパッドの使用制限
'gamepad' という新しい機能ポリシーが、デフォルトの許可リスト 'self' で追加されています。SerialPort forget()
SerialPort forget() メソッドを使うことで、ユーザーが許可したシリアルポートへのパーミッションを自発的に取り消すことができます。シリアルポートにアクセスする長期パーミッションを保持する必要がないサイトもあります。たとえば、多くのデバイスがある共用コンピュータで使われる教育用ウェブ アプリケーションでは、ユーザー生成パーミッションが大量に蓄積されると、ユーザー エクスペリエンスの悪化につながります。
この問題を避けるには、最初のリクエストのパーミッションをデフォルトでセッション スコープにしたり、あまり使われないパーミッションに有効期限を設けたりといったユーザー エージェント側の対策と合わせて、サイト自体が不要になったユーザー生成パーミッションをクリーンアップできるようにする必要があります。HIDDevice インターフェースと USBDevice インターフェースに forget() メソッドが最近追加されたことに続く対応です。overflow-clip-margin が visual-box をサポート
overflow-clip-margin CSS プロパティが visual-box をサポートします。これは、オーバーフローをクリップするエッジのソースとしてボックスのエッジを使うことを指定します。有効な値は、content-box、padding-box(デフォルト)、border-box です。overflow-clip-margin プロパティは、要素のコンテンツがクリッピングされずに描画できる範囲を指定します。 SPC のクレデンシャル登録時にユーザー アクティベーションを必須化
サポートの終了と機能の削除
サンドボックス化された iframe で外部プロトコルをブロック
<iframe> 要素のプロパティに次の値を追加できます。
allow-popupsallow-top-navigationallow-top-navigation-with-user-activation安全でないオリジンでの Battery Status API の削除
<param> 要素の削除
<param> の使用がかなり少なくなっているため、この要素がウェブ プラットフォームから削除されます。
Reviewed by Eiji Kitamura - Developer Relations Team
