ソフトウェア

「Google Chrome 144」安定版リリース、サードパーティーCookie代替の諸機能が非推奨化


ウェブブラウザ「Google Chrome」の最新安定版であるバージョン144がリリースされました。サードパーティーCookie廃止を前提とした諸機能が軒並み非推奨化されました。該当機能を利用しているウェブサイトは対応が必要となる可能性が高いため注意してください。

Chrome 144  |  Release notes  |  Chrome for Developers
https://developer.chrome.com/release-notes/144

◆CSS ページ内検索ハイライト疑似クラス
ページ内検索の結果のスタイル設定を::search-text擬似要素として公開します。選択やスペルミスに使用されるハイライト擬似要素と同様のものであり、前景色と背景色を変更したり、テキスト装飾を追加したりできます。ページのデフォルト色とのコントラスト不足など、ハイライト色が適切でない場合に調整できて便利です。

◆ ツリースコープ以外のコンテナ名との照合
ブラウザが@containerクエリのcontainer-nameを照合する際にツリースコープを無視するようになります。これまでは@containerクエリの container-name照合でツリースコープの名前もしくは参照が使用されていたために、@containerルールとcontainer-typeプロパティが異なるツリーから発生した場合、同じ名前であっても一致しませんでした。今回の更新により、@containerルールやcontainer-type宣言のオリジンに関係なく、container-name値が同一であれば一致するようになります。

◆変換を使用したCSSアンカー配置
アンカー位置に指定された要素が変換を持っていたり変換を持つ要素に含まれていたりする場合、ブラウザは変換されたアンカーのバウンディングボックスに対してanchor()関数とanchor-size()関数を解決します。

◆CSS caret-shapeプロパティ
ネイティブアプリケーションにおけるキャレットの形状は縦棒・アンダースコア・長方形のブロックが一般的であり、さらに挿入や置換などの入力モードによって形状が変化する場合もあります。CSSのcaret-shapeプロパティを使用すると、編集可能な要素内のキャレットの形状を以下の形状のいずれかから選択できます。

auto:ブラウザーがカーソルの形状を決定(デフォルト値)
bar:文字の間に垂直に表示される細い縦棒
block:挿入位置直後の文字と重なる矩形
underscore:挿入位置直後の文字の下に表示される横線

◆スクロールできないスクロールコンテナにoverscroll-behaviorを適用
overscroll-behaviorプロパティは、要素にオーバーフローしたコンテンツがあるかどうか、ユーザーがスクロール可能かどうかに関係なく、すべてのスクロールコンテナ要素に適用されるようになります。 これによりスクロールできないスクロールコンテナに対しても、overscroll-behaviorプロパティを使用してオーバースクロールの動作を制御できるようになり、overflow: hiddenバックドロップまたは overflow: auto要素でオーバーフローしているかどうかを気にすることなくスクロールの伝播を防ぐことができるようになります。

◆キーボードスクロールでもoverscroll-behaviorを適用
overscroll-behaviorを「auto」以外の値に設定するとブラウザはスクロールチェーンを実行しなくなります。従来はマウスまたはタッチによるスクロールではこの設定が適用されていたもののキーボードスクロールでは無視していましたが、今回の更新によりキーボードスクロールにも適用されるようになります。

◆@scroll-state scrolledのサポート
Web開発者は最新のスクロール方向に基づいてコンテナの子孫のスタイルを設定できます。ユーザーのスクロール方向に対応するUIパターンは頻繁に実装されています。典型的な例としては、ユーザーがページを下にスクロールすると自動的に非表示になり、上にスクロールすると再び表示されるヘッダーがあります。従来はこの機能はスクロール位置の追跡にJavaScriptを使用する必要があり、パフォーマンスのオーバーヘッドやコードの複雑さが増す可能性がありました。scroll-state(scrolled:)機能はCSSのみで同様の機能を実現することのできる効率的な方法を提供します。

.scrolling-up {
  translate: 80px 0;
  transition: 0.4s translate;
}

html {
  container-type: scroll-state;
}

@container scroll-state(scrolled: top) {
  .scrolling-up { translate: 0 0; }
}

◆遷移を表示する waitUntil() メソッド
ViewTransitionは疑似要素ツリーを自動的に構築して遷移に参加する要素を表示し、アニメーション化します。このサブツリーはビュー遷移のアニメーションが開始されるときに構築され、すべてのビュー遷移疑似要素に関連付けられたアニメーションが終了状態(より正確には実行中・一時停止状態を除いた状態)になると破棄されます。これでほとんどの場合は問題ありませんが、例えばアニメーションの終了状態を超えてビュー遷移の疑似ツリーを保持したい場合はより高度な実装が求められます。たとえば、ビュー遷移のアニメーションが完了した後にさらにアニメーションを実行したい場合などです。今回の更新により、ViewTransitionオブジェクトのwaitUntil()メソッドを使用して、ビュー遷移の疑似ツリーが破棄されるまでの時間を延長できるようになります。waitUntil()メソッドはPromiseを受け取り、そのPromiseが解決されるまでビュー遷移の疑似ツリーが保持され続けます。

◆<geolocation>要素
ユーザーの位置情報にアクセスするための、ユーザーがアクティブ化する宣言型のコントロールを提供するために、HTMLに新しい<geolocation>要素が追加されます。<geolocation>要素は権限フローを処理するだけでなく、サイトに直接位置情報を提供することで、多くの場合JavaScript API呼び出しを別途行う必要がなくなります。また、ブラウザ制御の要素をページに埋め込むことでユーザーのクリックが明確で意図的なシグナルとなり、プロンプトのユーザーエクスペリエンスが大幅に向上させるだけではなく、以前に権限を拒否したユーザーに復元パスを提供するといったことも可能です。

◆WebGPU: uniform_buffer_standard_layout拡張機能
WebGPUの新しいuniform_buffer_standard_layout拡張機能を使用するとユニフォームバッファとストレージバッファとで同じメモリレイアウト制約を使用できるため、双方でデータ構造を簡単に共有できるようになります。具体的には、均一バッファの配列要素に16バイトのアライメントが必要なくなるため、ネストされた構造体のオフセットを16バイトの倍数にパディングする必要もなくなります。

if (!navigator.gpu.wgslLanguageFeatures.has("uniform_buffer_standard_layout")) {
  throw new Error(`WGSL uniform buffer standard layout is not available`);
}

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

const shaderModule = device.createShaderModule({ code: `
  requires uniform_buffer_standard_layout;

  struct S {
      x: f32
  }
  struct Uniforms {
      a: S,
      b: f32
      // b はオフセット4に配置されます。標準レイアウトがない場合、アライメント規則により
      // b はオフセット16(または16の倍数)に配置されるため、余分なフィールドでパディングするか
      // @align属性を使用する必要があります。
  }

  @group(0) @binding(0) var<uniform> u: Uniforms;

  @fragment fn fs_main() -> @location(0) vec4<f32> {
      return vec4<f32>(u.a.x);
  }`,
});

◆WebGPU: subgroup_id機能
サブグループ拡張機能を有効にすると、組み込み値「subgroup_id」と「num_subgroups」を利用できるようになり、WebGPUコンピュートシェーダーにおけるサブグループ間の作業スケジュール設定プロセスが改善されます。

subgroup_id:現在のワークグループ内におけるサブグループのID
num_subgroups:ワークグループ内のサブグループの数

if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_id")) {
  throw new Error(`WGSL subgroup_id and num_subgroups built-in values are not available`);
}

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
  throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });

const shaderModule = device.createShaderModule({ code: `
  enable subgroups;
  requires subgroup_id;

  @compute @workgroup_size(64, 1, 1)
  fn main(@builtin(subgroup_id) subgroup_id : u32,
          @builtin(num_subgroups) num_subgroups : u32) {
    // [TODO]: 'subgroup_id'と'num_subgroups'を使用して実装する
  }`,
});

◆ECMA262:Temporal API
一度でもECMAScriptで日付を表示させようとしたことのある人はわかると思いますが、日付・時刻はECMAScriptにおいて長年の悩みの種でした。Dateオブジェクトは不変ではなく、タイムゾーンの扱いが不十分であり、曖昧さやバグの原因となることが多々あります。 Temporal APIは日付と時刻を扱うための新しい標準的な方法を提供し、日付と時刻の操作に関する多くの一般的なユースケースをカバーしています。

◆SVGAElement:ping・hreflang・type・referrerPolicyのサポート
SVGAElementでping・hreflang・type・referrerPolicy属性のサポートを追加し、動作をHTMLAnchorElementに合わせることによりHTMLとSVGとのリンクの処理を統一しました。

ping:リンクがクリックされたときに通知するURLを指定しておきナビゲーションを中断することなく軽量な追跡や分析を可能にする
hreflang:リンクされたリソースの言語を示すことでアクセシビリティを向上させる
type:リンクされたリソースのMIMEタイプを宣言することでよりスマートな処理とパフォーマンスの最適化を可能にする
referrerPolicy:ナビゲーション時に送信されるリファラー情報の量を制御する

◆Performance・Event Timing: InteractionCount
Event Timing API は Performance Timeline の一部であり、ユーザー操作のパフォーマンスを測定します。一部のイベントには interactionId 値が割り当てられており、同じユーザー操作に関連する複数のイベントをグループ化できます。今回の更新によりページで発生したインタラクションの合計数であるperformance.interactionCountが追加され、Interaction to Next Paint(INP)指標値の産出が便利になります。

◆DOM変更後の相互運用可能なポインタ・マウスの境界イベントに関する変更
イベントターゲットがDOMから削除された後、ポインタの論理ターゲットはポインタとマウスの境界イベント(over・out・enter・leaveイベント)が示すように、DOMにまだ接続されている最も近い祖先であるべきです。しかしながらChromeではノードがDOMから削除された後もノードを追跡していたため、ポインタが削除されたノードの子孫上にある場合、ポインタがノードから離れたときに不適切な境界イベントが発生する可能性がありました。今回の更新によりChromeは他のブラウザと同様に動作するようになり、ノードがDOMから削除された後はノードを追跡しなくなります。

例を挙げると、ヒットテストノードAがDOMから削除された後にポインタが新しいノードBに移動した場合、境界イベントシーケンス(pointerover・pointerout・pointerenter・pointerleave格イベントと対応するマウスイベント)は「すでに削除されたA」からBに移動したかのような挙動を見せていました。今回の更新を受けイベントシーケンスは正しく「Aの親要素」からBへのポインタ移動を示すようになります。

◆その他の更新
・SVG2 CSSのカスケード
background-position-x/background-position-yの一括指定の辺相対構文のサポート
・XRVisibilityMaskChangeイベントの追加
RTL言語におけるMathML演算子のミラーリング
・clipboardchangeイベントのサポート
・User-Agentクライアントヒント:ch-ua-high-entropy-values権限ポリシー
・Android:ポインタロックのサポート
RTCDegradationPreference列挙値maintain-framerate-and-resolutionの追加
独立したウェブアプリ(IWA)Direct Sockets APIのマルチキャストサポート

◆非推奨化(サードパーティーCookie関連)
サードパーティーCookieの廃止が撤廃されたのに伴い、以下の機能が非推奨化されました。これらの機能を利用しているウェブサイトは対応が必要となる可能性が高いので注意すべきです。なお、ベータ版リリース情報でのみ挙がっていた機能についてもs最終的に同様の扱いとなる可能性が高いため列挙しています。

・Private Aggregation API
・Shared Storage API
・Protected Audience API
ベータ版のみ:Attribution Reporting API
ベータ版のみ:関連ウェブサイトセット(RWS)
ベータ版のみ:document.requestStorageAccessFor(rSAFor) API

◆非推奨化(その他)
・XML解析:外部エンティティ・ DTDの読み込み

◆トライアルオリジン
Context-awareメディア要素
・Canvas API:TextMetricsの拡張

また、Google Chrome 144には10件のセキュリティバグフィックスが含まれています。

なお、次期安定版の「Google Chrome 145」は現地時間の2026年2月10日にリリース予定です。

この記事のタイトルとURLをコピーする

・関連記事
「Google Chrome 143」安定版リリース、ICUのバージョンが77にアップグレード - GIGAZINE

「Google Chrome 142」安定版リリース、CSSの範囲構文サポートによりスタイルクエリーやif()関数が強化 - GIGAZINE

ウェブをマネタイズするためのAPI「Web Monetization API」 - GIGAZINE

iPhone・iPadで「Chrome in Gemini」が利用可能に、GoogleのGeminiがiOS版Chromeに統合 - GIGAZINE

Google ChromeでYouTubeを開くと自作プログラムの処理速度が約5%向上したという報告、いったいなぜ? - GIGAZINE

in ソフトウェア, Posted by log1c_sh

You can read the machine translated English article 'Google Chrome 144' stable release, thir….