この記事は Thomas Nattestad による Chromium Blog の記事 "How WebAssembly is accelerating new web functionality" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 ...
この記事は Thomas Nattestad による Chromium Blog の記事 "How WebAssembly is accelerating new web functionality" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

WebAssembly は、ウェブの新しいデベロッパー機能の作成方法を根本的に変革します。ブラウザの相互運用性を維持するため、新しいウェブ機能は厳格な標準化プロセスを経て、クロスブラウザで実装される必要があります。数十年にわたる大規模な取り組みにより、ブラウザの機能は驚くべきレベルに達していますが、この過程には時間がかかる場合があり、すべての機能をウェブに組み込まなければならないわけでもありません。これまで何年もかけて、高レベルの機能の構成要素となる低レベル機能に注力してきましたが、現在私たちは新たな夜明けを目にしており、劇的に速いペースでさまざまな機能が登場しています。

WebAssembly 

WebAssembly は、他の言語からコンパイルしたポータブルなバイトコード形式であり、最大のパフォーマンスを実現できます。デベロッパーが WebAssembly を活用すると、別のプラットフォームのライブラリや機能をウェブに移植できます。再実装は一切必要なく、高いパフォーマンスを発揮します。さらに、並列実行スレッド や Single Instruction Multiple Data(SIMD)など、CPU のパフォーマンスを最大限に活用できる高度な計算プリミティブも提供します。

ポータビリティと高パフォーマンス CPU アクセスを実現する WebAssembly が加わったことで、ウェブには低レベルの構成要素がすべてそろい、実に多様な新機能を構築できるようになりました。これらはすべて、数々の充実した機能やレンダリング手法などを備えた、ウェブ プラットフォーム全体という驚異的な土台のうえに成り立っています。

実例 

WebAssembly のおかげで実現できた新機能はたくさんありますが、1 つのブログ投稿を丸ごと使ってその一部を紹介しています

その中には、さまざまな理由で標準プロセスを通過できなかった機能も含まれています。また、現在標準化が進行中で、さまざまなブラウザで実装が進められているものもあります。

  • Wasm 版 FFMPEG は、ウェブアプリで効率的に動画を扱えるようにします。標準化されている WebCodecs でも同じようなエンコードやデコードが可能ですが、対応ブラウザはまだ限られています。
  • WebAssembly は、Google Meet のビデオ通話の背景ぼかしに使われており、この機能に関する専用の標準提案が行われています。

この新しい開発パラダイムがもたらすメリット

イテレーションの高速化

標準化と承認を経なくても機能を公開できるので、イテレーション サイクルが年単位から日単位、場合によっては時間単位にまで短縮できます。オリジン トライアルなどのアプローチを使えば、多くの試験運用を行うことはできますが、それでも週単位や月単位のイテレーションが必要になります。イテレーションの速度を変えるということは、その対象自体を抜本的に変革するということです。

機械学習などの分野は進展が速いので、標準ベースのアプローチではついていくことができません。設計が標準化を経てクロスブラウザ実装に移ったころには、すでに新たな進展があり、プロセス全体をやり直さなければならなくなってしまいます。

とは言うものの、標準化が不可欠なことも多い点は変わりません(後述のデメリットのセクションを参照)。標準化が適している場合は、当然標準化を試みる必要があります。

さまざまなブラウザをすぐにサポート

wasm はさまざまなブラウザでサポートされているので、これを使って構築した機能もすべてのブラウザですぐに動作します。機能の相互運用性とクロスブラウザ実装は、デベロッパーにとって最大の悩みです。機能を低レベルプリミティブに移行することで、この懸念の大半を解消できます。

セキュリティの向上 

この機能は厳格なセキュリティ サンドボックスがベースになっているため、ネイティブ実装された API よりも格段にセキュリティが向上します。たとえば、Flash がウェブから削除された大きな理由は、複雑なプラグインのセキュリティを十分に強化するのが難しすぎたためです。しかし、今は Flash を WebAssembly で実行でき、セキュリティの懸念の大半が解消されています。

デメリットと制限 

複雑な問題に対するあらゆる新しいソリューションと同じく、WebAssembly にもデメリットや制限がないわけではありません。その中には、仕組み的に避けられないものもあれば、有望なソリューションが存在するものもあります。

ほとんどのウェブ開発で JavaScript の代替となるものではない   

WebAssembly は JavaScript の代替ではなく、JavaScript が時代遅れになるわけでもありません。どちらかというと、WebAssembly は JavaScript の機能を拡張するものです。

WebAssembly は JavaScript を使わずにブラウザで動作させることはできません。また、他のウェブ機能にアクセスする場合は、JavaScript のインターフェースを通す必要があります。WebAssembly で実現するライブラリや新機能は、JavaScript API を介して使用されます。wasm モジュール同士の通信や、Web API との直接インターフェースも提案されていますが、これはまだ開発の初期段階です。

ページのバンドルサイズ

ユーザーランドに移動するロジックや機能が増えることで、ページのサイズも増大します。バンドルサイズの縮小は優れたユーザー エクスペリエンスにとって最重要なので、これは大きな問題になります。そのため、この機能を使ってバンドルサイズを肥大化させる前に、慎重に検討する必要があります。この点は、小さな e コマースやブログのサイトよりも、大型のウェブアプリで問題になる可能性があります。JavaScript を多用するフレームワークでも、これが長いこと問題になっています。この状況を改善するため、さまざまなソリューションが考えられるかもしれません。

問題を軽減できる可能性があるもう 1 つの手段は、ユーザーランドの人気機能に注目し、それを参考にして、どの機能を標準化してブラウザ自体に含めるかを判断するというものです。ユーザーランドで実績を積んだ機能なら、ブラウザに自信と確証を持って搭載することができます。そのため、標準と実装にまつわる作業も大幅に簡素化されます。WebCodecs は wasm でコンパイルした FFMPEG を、手書き認識 APIwasm でコンパイルしたバージョンを置き換えるものですが、これらはその好例となります。

デバイスの機能へのアクセス 

WebAssembly などのプリミティブは、ほとんどが計算メカニズムであり、OS やデバイス自体にシステムのルート権限でアクセスする機能は一切提供されていません。ハードウェア アクセス(USB や Bluetooth)、画面やウインドウの管理、入力コントロール、ファイル システム、クリップボードなどの機能にアクセスする場合は、今後もプラットフォーム レベルの API が必要になります。Chromium の Fugu プロジェクトは、Chromium ベースのブラウザでこれらのすべての事例を実現しようとするものですが、他のブラウザでの実装も必要になります。

まとめ 

WebAssembly は、すでにブラウザの新機能実現に活用されていますが、それ以上に、根本的に新しい方法で機能の開発方法にアプローチします。何かを改善する最善の方法は、その改善方法を改善することです。すると、2 次曲線的な成長を遂げることができます。どのような新しいパラダイムにもメリットとデメリットがあります。しかし、総合的に見れば、WebAssembly は、あらゆるブラウザとデベロッパーにとって新しいアプローチであると言えます。これを使って皆さんとともに開発を進めていくのが楽しみでなりません。



Posted by Eiji Kitamura - Developer Relations Team

この記事は 、François Doray による Chromium Blog の記事 "Do more with Chrome on a single charge on MacBooks" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 ...
この記事は 、François Doray による Chromium Blog の記事 "Do more with Chrome on a single charge on MacBooks" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。



Chrome は誕生当初より、効率よく動作するように設計されています。効率がよいとは、単にページをできる限り高速に読み込むことだけでなく、できる限り少ないリソースを使うことを指します。今回の速さと好奇心の投稿では、Mac のバッテリー駆動時間をできる限り延ばすために行った Chrome の改善に注目します。この改善により、ブラウズや動画の視聴をこれまで以上に長く楽しめるようになっています。 


Chrome の最新リリースでは、内部的にたくさんの最適化をし、MacBook の 1 度の充電でできることを増やしています。私たちのテストによれば、MacBook Pro(13 インチ、M2、2022)で 17 時間のブラウズまたは 18 時間の YouTube 視聴が可能です。Chrome の省エネモードをオンにすると、バッテリーでブラウズできる時間がさらに 30 分延びます(1)私たちは、最新のハードウェアを使っている方だけでなく、すべてのユーザーのことを深く考えています。そのため、古いモデルでもパフォーマンスが向上します。 


以下では、行った変更のいくつかについて詳しく説明します。
 
iframe の微調整

iframe には数秒しか存在しないものが多いことがわかりました。そこで、最近作成された iframe について、ガベージ コレクションとメモリ圧縮ヒューリスティックスを微調整しました。その結果、短期的なメモリ使用量を抑えることができ、消費電力が減少しました(長期的なメモリ使用量には影響しません)。



タイマーの調整 

Javascript のタイマーは、ウェブの黎明期に導入されたものです。その後、ウェブ デベロッパーは、さらに効率的で同じ結果(またはそれよりも優れた結果)を実現できる API を利用できるようになっています。それでも、Javascript のタイマーはウェブページの電力消費の大部分を占めています。そこで、Chrome でのタイマーの呼び出し方法を調整し、CPU の復帰回数を少なくしました。


同様に、必要なくなってキャンセルできるようになった内部タイマーを特定することで、タイマーが CPU を復帰させる回数を減らしました。 


データ構造の効率化

同じキーで頻繁にアクセスされるデータ構造があることがわかったため、そのアクセス パターンを最適化しました。



不要な再描画の回避

ボットを使って実際のサイトを開き、ドキュメント オブジェクト モデル(DOM)の変化パターンのうち、画面上のピクセルに影響しないものを特定しました。こういったパターンを早い段階で検出し、不要なスタイル、レイアウト、描画、ラスタライズ、GPU の操作を省略するように Chrome を変更しました。Chrome UI の変化についても同じ最適化を行っています。

私たちの作業に終わりはありません。2023 年以降は、オープンソース ベンチマーク スイートによって、幅広い開発コミュニティの力を借りて Chrome の電力消費を改善できるようになります。

___
1 2023 年 2 月に MacBook Pro(13 インチ、M2、2022、8 GB の RAM を搭載し MacOS Ventura 13.2.1 を実行)と Chrome 110.0.5481.100 を使ってテストを実施し、Google の オープンソース ベンチマーク スイートで測定したもの。



Posted by Eiji Kitamura - Developer Relations Team

この記事は Chrome Developers Blog の記事 "Chrome 113 beta" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
この記事は Chrome Developers Blog の記事 "Chrome 113 beta" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

特に記載のない限り、下記の変更は Android、ChromeOS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。2023 年 4 月 6 日の時点で Chrome 113 はベータ版です。PC 向けの最新版は Google.com で、Android では Google Play ストアでダウンロードできます。

#CSS

このリリースでは、CSS の 4 つの新機能が追加されます。

#CSS オーバーフロー メディア特性

Chrome 113 には、overflow-inline と overflow-block メディア特性が含まれています。これを使うと、初期包含ブロックをオーバーフローするコンテンツがデバイスでどのように扱われるかを確認できます。

CSS update メディア特性

update メディア特性を使うと、印刷、低速出力ディスプレイ、高速出力ディスプレイ向けのスタイルを作成できます。

  • print: 紙のドキュメント
  • slow: e-ink や十分な電力を利用できないディスプレイなど
  • fast: 通常のコンピュータ ディスプレイ

#linear() イージング関数

linear() イージング関数を使うと、複数の点の間を線形補間できます。これにより、バウンスや弾力効果などの複雑なアニメーションが可能になります。

#image-set() タイプ

image-set() 関数表記は、さまざまな画像オプションを指定する CSS タイプです。画面密度によって画像を出し分けたり、ブラウザで最適な画像を選んだりすることができます。background-image などの CSS プロパティで利用できます。

Chrome 113 ではプレフィックスなしの image-set タイプが追加されるので、-webkit-image-set を使う必要はなくなります。この実装では、新しい解像度単位(dppxdpidpcm)、画像タイプのサポート(type("image/avif") など)、url() なしの URL の直接記述、グラデーション画像オプションも導入され、現在の仕様に対応します。


#ウェブ API

#Fetch: Headers.getSetCookie()

複数の Set-Cookie ヘッダーを組み合わせることなく、値を取得する方法が追加されます。HTTP の Set-Cookie は歴史的な理由から特殊なヘッダーになっています。1 つのレスポンスに複数回登場する可能性があるにもかかわらず、ほかのヘッダーと違って組み合わせることができないためです。現在の Headers オブジェクトは、複数の値を持つ Set-Cookie ヘッダーをサポートしていませんが、この機能によってそれが可能になります。

#WebAuthn: 大容量 blob ストレージ拡張機能(largeBlob)

このリリースでは、WebAuthn largeBlob 拡張機能がサポートされます。この拡張機能により、リライング パーティが認証情報に関連した難読データを保存できるようになります。

#WebGPU

WebGPU は、ウェブ用の WebGL と WebGL2 グラフィックス API の後継です。GPU 演算、GPU ハードウェアへの低オーバーヘッド アクセス、1 つのグラフィック デバイスから複数のキャンバスに描画する機能、パフォーマンスと予測可能性の向上などの最新機能が提供されます。

WebGPU についての完全なドキュメントは、MDN に掲載されています。

#Private State Token API

Private State Token API は、不正防止を目的とする新しい API です(旧称 Trust Token API)。サードパーティ Cookie などのクロスサイト永続化識別子を使わずに、サイト間でユーザー シグナルを伝達できます。サードパーティ Cookie を使う不正防止手段は、サードパーティ Cookie が廃止されると動作しなくなります。この API は、サードパーティ Cookie がない世界で不正行為と戦う手段を提供するために開発されています。

Private State Token API は、不正対策シグナルの生成や定義は行いません。それを行うのは、対応するファースト パーティやトークン発行者です。この API は、プライバシーに配慮するために、そのようなシグナルで送信される情報を制限します。Private State Token API は、IETF ワーキング グループの Privacy Pass プロトコルに基づいており、ウェブに公開される形式の Privacy Pass プロトコルと考えることができます。

この API は、テストや評価が行えるように、長い時間をかけて徐々にロールアウトする予定です。

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

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

WebRTC の以前のコールバックベース getStats() の逆トライアル

RTCPeerConnection には、2 つのバージョンの getStats() があります。1 つはプロミスの解決によってレポートを返すもので、仕様に準拠しています。もう 1 つは、1 つ目の引数のコールバック経由でまったく異なるレポートを返す非標準のものです。このコールバックベースのものが、近日中に削除されます。時間が必要なアプリに対し、Chrome 113 から 121 の間でこの逆トライアルが提供されます。

以前のバージョンの getStats() の逆トライアルに登録する

WebGPU と WebCodecs の連携

WebGPU では、HTMLVideoElement から不透明な「外部テクスチャ」オブジェクトを作成する API が公開されています。このオブジェクトは、動画フレームのサンプルを効率的に取得するために利用でき、ソース YUV データからコピーすることなく直接取得できる場合もあります。

ただし、WebGPU の最初のバージョンの WebGPU 仕様では、WebCodecs の VideoFrame オブジェクトから GPUExternalTextures を作成する操作は許可されていません。この機能は、すでに WebCodecs を使っており、動画処理パイプラインに WebGPU を組み込む必要がある高度な動画加工アプリケーションにとって重要です。

この機能では、VideoFrame を GPUExternalTexture のソースとして使うためのサポートが追加されます。

WebGPU と WebCodecs の連携のトライアルに登録する

サポートの終了と機能の削除

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

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

Secure Payment Confirmation: CollectedClientAdditionalPaymentDatarprpId に名称変更

Secure Payment Confirmation(SPC)は、取引の決済時の認証を効率化できるウェブ API です。この機能は WebAuthn を使って構築されており、決済フローに認証機能を導入します。SPC の最初の仕様と実装では、暗号文の CollectedClientAdditionalPaymentData 出力ディクショナリに rp という名前のパラメータが含まれていました。WebAuthn に合わせるため、仕様でこの名前が rpId に変更されたため、Chrome もそれに合わせて実装を変更します(つまり、rpId を追加して rp を削除します)。


Posted by Eiji Kitamura - Developer Relations Team

この記事は Bob Hancock による Google Ads Developer Blog の記事 "Image and Location Auto-migration in Google Ads API Postponed" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 ...
この記事は Bob Hancock による Google Ads Developer Blog の記事 "Image and Location Auto-migration in Google Ads API Postponed" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

変更事項

以前、Google Ads API の画像と住所の自動移行を 2023 年 4 月 3 日に開始することをお知らせしましたが、この自動移行を延期することになりました。新しい日程は近日中にブログ投稿でお知らせします。

画像と住所のアセットは、自動移行が始まるまで、引き続きテスト アカウントで利用できます。

何をする必要がありますか?

すぐに何かの対応を行う必要はありません。

自動移行の準備として、Google Ads API の v13 にアップグレードすることをおすすめします。

ご質問などございましたら、フォーラムからご連絡ください。


Posted by Thanet Knack Praneenararat - Ads Developer Relations Team

この記事は Thanet Knack Praneenararat による Google Ads Developer Blog の記事 ”Removing support for PHP 7 in the Google Ads API client library for PHP" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 ...
この記事は Thanet Knack Praneenararat による Google Ads Developer Blog の記事 ”Removing support for PHP 7 in the Google Ads API client library for PHP" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

2023 年 7 月より、Google Ads API の PHP 向けクライアント ライブラリでは PHP バージョン 8.0 以降が必要になります。Google Ads API v14 のサポートを追加したバージョンのクライアント ライブラリが、PHP 7 をサポートする 最後のバージョン になります。Google Ads API v14 の提供が終了するまでの間は、このバージョンのクライアント ライブラリでもセキュリティ問題の修正は継続されますが、新機能が追加されることはありません。

PHP 7 系のすべてのバージョンは、2022 年にサポートが終了しています。PHP 開発チームは、これらのバージョンに対するセキュリティ修正を行っていません。そのため、可能な限り早く新しいバージョンに移行することを強くおすすめします。

PHP の移行に役立つリソースを紹介します。


この変更に関して質問がある方は、GitHub の Issue に直接コメントを入力してください。


Posted by Thanet Knack Praneenararat - Ads Developer Relations Team

Google Cloud Day '23 Tour がいよいよ来月の Tokyo 開催を皮切りにスタートします。

Google Cloud でデジタル変革への未来を描き、実現する旅へと導くアイディアが集結します。その中でも、特に話題性の高いセッションをご紹介します。


GCD '23 Tour in TOKYO 必見!

5 月 23 日(火)~ 25 日(木)オンライン開催

☁ TVer の月間ユニークブラウザ数 2500 万のサービスを支える統合ログ基盤の開発(TVer)

☁ ユーザーの「買いたい」を Google の AI で見つける、E コマースのための「意味検索」技術(アムタス(めちゃコミック)、ゼビオコミュニケーションネットワークス、Google Cloud)


Google Cloud Day '23 Tour がいよいよ来月の Tokyo 開催を皮切りにスタートします。

Google Cloud でデジタル変革への未来を描き、実現する旅へと導くアイディアが集結します。その中でも、特に話題性の高いセッションをご紹介します。


GCD '23 Tour in TOKYO 必見!

5 月 23 日(火)~ 25 日(木)オンライン開催

☁ TVer の月間ユニークブラウザ数 2500 万のサービスを支える統合ログ基盤の開発(TVer)

☁ ユーザーの「買いたい」を Google の AI で見つける、E コマースのための「意味検索」技術(アムタス(めちゃコミック)、ゼビオコミュニケーションネットワークス、Google Cloud)

☁ サーバーレスでアジャイルに開発!Google Cloud サーバーレス最新情報(Google Cloud)

☁ Google Cloud における安全なネットワーク設計のベストプラクティス(Google Cloud)

☁ 事業を守り DX を推進するサイバー防御態勢強化とは 〜今すぐ確認すべき 4 つの視点〜(Mandiant, Google Cloud)

☁ クラウド上に眠っているデータを手早く安全に現場活用させる Google Cloud ソリューション(Google Cloud)

TOKYO に続く OSAKA、NAGOYA、FUKUOKA の注目セッションもぜひ、チェックしてください。


OSAKA : 6 ⽉ 2 ⽇(金)(ハイブリッド)

☁ OT の壁をぶち破れ! ~Manufacturing Data Engine!?~(京セラコミュニケーションシステム)

☁ Google Cloud が「クラウド」だけじゃないセキュリティに本気な理由(Mandiant, Google Cloud)

☁ Google Workspace パネルディスカッション 〜現場から浸透する DX とコラボレーションの推進〜(エイチ・ツー・オー リテイリング、Google Cloud)


NAGOYA : 6 ⽉ 22 ⽇(木)(ハイブリッド)

☁ 製造業 DX を支えるデータ分析基盤構築とその活用(BigQuery によるデータ分析基盤構築)(ヤマハ発動機)

☁ オンプレ Kubernetes クラスタを Attached clusters で繋いで管理!Anthos の効率的な活用(トヨタ自動車)

☁ 市民開発を実現するノーコード ソリューション(Google Cloud)


FUKUOKA : 6 ⽉ 30 ⽇(金)(ハイブリッド)

☁ 組織とプロダクトを変えた YAMAP のデータ活用と、それを支える Google Cloud(ヤマップ)

☁ Google の内製化支援プログラム TAP を活用した人財育成 : 無人店舗環境での AI 精度可視化アプリの開発(QTnet)

☁ ホームセンター グッデイにおける Google Workspace 実践活用事例(嘉穂無線ホールディングス、グッデイ)


大阪、名古屋、福岡は会場参加のチャンス

ハイブリッド開催の大阪、名古屋、福岡では、ご登録の際に会場参加をご希望された方を会場にご招待します。会場では、Google Cloud のエキスパートに直接質問ができる Ask the Speaker コーナーハンズオン プログラム、 Google Workspace 体験ブースをご用意します。会場と一体になって臨場感を楽しみながら Google Cloud の最新テクノロジーへの理解を深めましょう。

ご興味のある方は公式サイトからご登録の際に、ぜひ、会場参加に関する質問にチェックを入れて、各都市の締め切りまでにご登録をお願いします。お申込み多数の場合は抽選となります。


オリジナル T シャツをプレゼント

ご登録いただいた方から抽選で 100 名様に Google Cloud Day '23 Tour オリジナル T シャツをプレゼントします。イベント T シャツを着て一緒に盛り上がりましょう!

Google Cloud Day '23 Tour 開催概要 

5 ⽉ 23 ⽇ (火) - 25 ⽇(木)  Google Cloud Day '23 Tour in Tokyo(オンライン)

6 ⽉ 2 ⽇(金)  Google Cloud Day '23 Tour in Osaka(ハイブリッド)

6 ⽉ 22 ⽇(木)  Google Cloud Day '23 Tour in Nagoya(ハイブリッド)

6 ⽉ 30 ⽇(金)  Google Cloud Day '23 Tour in Fukuoka(ハイブリッド)


対象 : 開発者、ビジネスの意思決定者やリーダー

対象プロダクト : Google Cloud、Google Workspace

ハッシュタグ : #GoogleCloudDay   (右記のハッシュタグと組み合わせてお使いください #appdev  #da  #db  #ML  #infra  #GWS   #security)

幅広いソリューションの最新情報とお客様事例の中からビジネスに役立つヒントを見つけてください。

さあ、一緒にデジタル トランスフォメーションを加速させましょう。

ぜひ、公式サイトからご登録ください。


お問い合わせ先 :

Google Cloud Day '23 Tour 事務局  



この記事は Chrome Developers Blog の記事 "Chrome 112 beta" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
この記事は Chrome Developers Blog の記事 "Chrome 112 beta" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

特に記載のない限り、下記の変更は 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 まで延長できます。


Posted by Eiji Kitamura - Developer Relations Team