この記事は Chrome セキュリティ チーム、Adrian Taylor、Andrew Whalley、Dana Jansens、Nasko Oskov による Google Online Security Blog の記事 "An update on Memory Safety in Chrome" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

セキュリティは、いたちごっこのようなものです。攻撃者が新しい手法を生み出せば、ブラウザは一歩先を行くために新たな防御策を講じ続けなければなりません。そのため、Chrome は、サンドボックスサイト分離をベースとした今までにない強固なマルチプロセス アーキテクチャを構築してきました。これらは、ファジングとともに、現在も私たちの主要な防衛線であり続けています。しかし、それも限界に近づきつつあり、この戦略だけに頼って実際に出回っている攻撃に対処することはできなくなっています。

昨年、Google は、重大なセキュリティ バグの 70% 超がメモリの安全性の問題であることを明らかにしました。つまり、C 言語や C++ 言語のポインタのミスによって、メモリが誤解釈されてしまうのです。

メモリの安全性は、世界のソフトウェア エンジニアリング コミュニティが真剣に受け止める必要がある問題です。しかし、これは同時にチャンスでもあります。なぜなら、多くのバグに同じような根本原因があるということは、1 つの対策で相当のバグを撲滅できる可能性があるからです。

Chrome では、このチャンスを活かすため、大まかに次の 3 つの方法を検討しています。

  1. ポインタが正しいことをコンパイル時にチェックすることで、C++ の安全性を向上
  2. ポインタが正しいことを実行時にチェックすることで、C++ の安全性を向上
  3. メモリ安全な言語をコードベースの一部に使うことについて調査

「コンパイル時にチェック」とは、Chrome が皆さんのデバイスにインストールされる前の、ビルドプロセスの段階で安全性を保証することを指します。「実行時」とは、Chrome が皆さんのデバイスで実行されている間にチェックを行うことを指します。

実行時チェックには、パフォーマンスのコストが伴います。ポインタが正しいかどうかをチェックする操作は、メモリや CPU 時間にとっては微少なコストです。しかし、ポインタの数は膨大なので、そのコストは積み重なります。莫大な数のユーザーを持つ Chrome にとって、パフォーマンスは重要です。ユーザーの多くはメモリの少ない低電力モバイル デバイスを使っているため、こういったチェックが増加すれば、ウェブが遅くなってしまいます。

つまり、選択肢 1、コンパイル時に C++ を安全にする方法を選ぶのが理想です。しかし、この言語はそのような設計にはなっていません。この領域で Google が取り組んできたことを詳しく知りたい方は、借用の問題 : C++ の Borrow-Checker の難しさをご覧ください。

そのため、ほとんどは選択肢 2 と 3、つまり C++ の安全性を向上させる(ただし遅くなる)か、別の言語を利用する方法をとらざるをえません。Chrome のセキュリティでは、この両方のアプローチを試しています。

C++ の安全性ソリューションに向けた主な取り組みには、MiraclePtrABSL/STL 強化モードなどがあります。どちらも、悪用できるセキュリティ バグの大半を解消することを目指していますが、ある程度のパフォーマンス低下も想定されます。たとえば MiraclePtr は、参照されているメモリを隔離することで解放後の使用に関するバグを防ぎますが、多くのモバイル デバイスではメモリはとても貴重なため、隔離用の領域を割り当てるのは難しくなっています。それでも、MiraclePtr は、ブラウザのプロセスで解放後の使用に関するバグを 50% 以上解消できる可能性を秘めています。今のところ、これは Chrome のセキュリティにとって大きなメリットです。

それと並行して、将来的に Chrome の一部でメモリ安全な言語を使えないかを検討しています。その第一候補は、Mozilla にいる私たちの友人が開発した Rust です。Rust は(ほとんどが)コンパイル時に安全です。つまり、Rust コンパイラは、コードが皆さんのデバイスにインストールされる前にポインタのミスを見つけます。そのため、パフォーマンスが低下することはありません。しかし、C++ と Rust を十分に連携して使えるかどうかという未解決の問題が残されています。また、たとえ明日から Rust で新しい大型コンポーネントを書き始めたとしても、セキュリティ脆弱性の大部分を解消できるのは、おそらく何年も後になるはずです。さらに、既存のコンポーネントの一部を Rust で書けるほど言語の境界を十分にクリーンにできるかという問題もあります。この点は、まだ明らかではありません。Google は、Chromium ソースコード ツリーのユーザーが触れることのない限られた部分で、Rust の実験を始めています。しかし、製品版の Chrome にはまだ含まれておらず、試験運用版のフェーズにとどまっています。

以上の理由から、Google は両方の戦略を並行して追求しています。C++ の安全性向上、Chrome での新しい言語の試行というこの領域の最新情報にぜひご注目ください。


Reviewed by Eiji Kitamura - Developer Relations Team

この記事は Chromium Blog の記事 "Chrome 95 Beta: Secure Payment Confirmation, WebAssembly Exception Handling and More" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。2021 年 9 月 23 日の時点で Chrome 95 はベータ版です。

オリジン トライアル

このバージョンの Chrome には、以下のオリジン トライアルが導入されています。オリジン トライアルとして新機能を試せるようにすることで、ウェブ標準コミュニティにユーザビリティ、実用性、有効性についてのフィードバックを提供することができます。以下の項目を含め、現在 Chrome でサポートされているオリジン トライアルに登録するには、Chrome オリジン トライアル ダッシュボードをご覧ください。Chrome のオリジン トライアルの詳細については、ウェブ デベロッパーのためのオリジン トライアル ガイドをご覧ください。Microsoft Edge は、Chrome とは別に独自のオリジン トライアルを行っています。詳細については、Microsoft Edge オリジン トライアル デベロッパー コンソールをご覧ください。

新しいオリジン トライアル

File System Access API のアクセス ハンドル

私たちの最終的な目的は、File System Access API のオリジン プライベートなファイル システムと Storage Foundation API を統合し、ブラウザからファイルベースのストレージにアクセスする際のエントリ ポイントの数を減らすことです。その目的に向かう最初の一歩となるのが、新たに提案されたアクセス ハンドルです。この新機能は、ファイルのコンテンツに対してインプレースで排他的な書き込みアクセスを提供できる点で、既存の機能とは異なります。この変更は、フラッシュされていない更新を整合性のとれた形で読み取る機能や、専用ワーカーで同期的に同じ処理をする機能とともに、パフォーマンスを大幅に向上し新たなユースケースの可能性を開くものとなります。このオリジン トライアルに参加したい方は、Chrome オリジン トライアルのエントリをご覧ください。アクセス ハンドラの詳細については、File System Access API: ローカル ファイルへのアクセスを簡素化するに追加されている情報をご覧ください。

ユーザー エージェント文字列情報の削減

Chrome では、HTTP リクエストでユーザー エージェント文字列によって公開される情報量の削減を試行しています。navigator.userAgentnavigator.appVersionnavigator.platform についても、同様の削減をします。ユーザー エージェント文字列は、パッシブなユーザー フィンガープリンティングに使われる可能性があります。このオリジン トライアルに参加したい方は、Chrome オリジン トライアルのエントリをご覧ください。

完了したオリジン トライアル

Chrome で以前にオリジン トライアルが行われていた以下の機能は、現在デフォルトで有効化されています。

Secure Payment Confirmation

Secure Payment Confirmation は、Web Authentication API を利用して、ウェブで支払いをする際の認証操作を拡張します。この機能によって、上記の API に新しい 'payment' 拡張機能が追加され、銀行などのリライング パーティが PublicKeyCredential の作成にオプトインできるようになります。販売元は、Payment Request API によるオンライン決済の一部として、支払い方法 'secure-payment-confirmation' を使ってこの認証情報を照会できます。

この機能により、プラットフォーム認証機能によるスムーズで一貫性のある認証操作を実現できます。欧州連合をはじめとする多くの地域では、ユーザーの銀行による強力な認証がオンライン決済の要件になりつつあります。この機能提案により、ユーザー エクスペリエンスが向上し、既存のソリューションよりもセキュリティが強化されます。

WebAssembly の例外ハンドリング

WebAssembly が例外ハンドリングをサポートするようになりました。例外ハンドリングを利用すると、コードで例外がスローされたときに制御フローを抜けることができます。例外は、WebAssembly モジュールの既知の例外でも、インポートされて呼び出された関数がスローした未知の例外でも構いません。

今回のリリースに追加されたその他の機能

PerformanceObserver のコールバックに droppedEntriesCount を追加

現在、ウェブ デベロッパーは PerformanceObserver.observe() を呼び出す際に buffered オプションを使って、サイトについての過去や未来のパフォーマンス エントリをリスニングできます。ただし、過去のエントリは保存する必要があり、バッファサイズには限界があります。droppedEntriesCount パラメータを使うと、ストレージが一杯であるため失われたエントリがあるかどうかを知ることができます。

droppedEntriesCount プロパティは、PerformanceObserver コンストラクタに渡されるコールバックの 3 つ目のパラメータとして指定されるオプションのうちの 1 つです。ここから、バッファが一杯になったことで破棄されたエントリの数がわかります。

EyeDropper API

EyeDropper API は、ブラウザによるスポイト機能を提供します。これは、カスタムのカラー選択ツールを作るときに利用できます。ウェブ向けのクリエイティブ アプリケーションでは、画面上のピクセルの色をサンプルとして取得できる機能があれば、その恩恵を受けることができます。この機能は、PowerPoint などの多くの OS のアプリケーションに搭載されていますが、ウェブでは実現できません。

一部のブラウザの <input type=color> 要素にはスポイト機能が組み込まれていましたが、通常、スポイト機能は <input> 要素が呼び出すカスタマイズできないポップアップを通してしか利用できないので、これをウェブ アプリケーションのカスタムのカラー選択ツールに組み込むには制限がありました。

User-Agent Client-Hint 用の Windows における新しい UA Platform Version ソース

Windows の Chrome で Sec-CH-UA-Platform-Version の値を更新し、サイトが有意義な Windows プラットフォームの変更を識別できる程度の情報を提供します。これにより、サイトは、オペレーティング システムのバージョンに固有のバイナリ実行ファイルやヘルプ コンテンツを提供できます。現在のユーザー エージェント文字列と既存の Sec-CH-UA-Platform-Version 実装では、Windows コンポーネントのメジャー バージョンとマイナー バージョンが提供されています。しかし、Windows 10 時点で、重要なリリースが行われても通常はどちらの数値も増加しないようになっています。なお、Windows 11 ではどちらの数値も増加しません。数値と Windows リリースとの対応表は、UA Client-Hint のリポジトリの Issue 220 で確認できます。

self.reportError()

この関数は、ウィンドウとワーカーで利用できます。デベロッパーがこの関数を使うと、キャッチされない JavaScript 例外と同じように、コンソールやグローバルの「error」イベント ハンドラにエラーを報告できます。これは主に、カスタムのイベント ディスパッチ ライブラリやコールバック操作ライブラリで便利です。
この機能により、ライブラリ デベロッパーはブラウザと同じように例外を報告できるようになります。これは、コールバックの実行をカスタム制御する必要がある場合に便利です。

URLPattern

URLPattern は新しいウェブ API で、与えられたパターン文字列と URL をマッチングする機能をオペレーティング システムでサポートします。JavaScript で直接使うことも、サービス ワーカーのスコープなどの別のウェブ プラットフォーム API にパターンを渡して使うこともできます。URL とのマッチングは、ウェブプラットフォーム機能と JavaScript アプリケーションの両方で頻繁に必要になります。利用例として、ウェブ プラットフォームのサービス ワーカーのスコープや、JavaScript フレームワークでの URL ルーティングなどが挙げられます。これまでのウェブ プラットフォーム機能では、それぞれが独自の URL マッチング メカニズムを作成していました。JavaScript では、path-to-regexp などのライブラリを利用していました。

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

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

FTP サポートの削除

Chrome で、FTP URL のサポートを削除します。ブラウザからの FTP の利用率は低く、既存の FTP クライアント機能の改善に注力するのは現実的ではありません。また、影響するすべてのプラットフォームで、機能の豊富な FTP クライアントが利用できます。

Google Chrome 72 以降では、FTP によるドキュメント サブリソースのフェッチと、トップレベル FTP リソースのレンダリングのサポートが削除されています。現在、FTP URL を開くと、リソースの種類によって、ディレクトリ一覧またはダウンロードが表示されます。Google Chrome 74 以降のバグにより、HTTP プロキシを経由した FTP URL へのアクセスがサポートされなくなっています。FTP のプロキシ サポートは、Google Chrome 76 で完全に削除されました。Chrome 86 では、FTP のサポートがプレリリース チャンネル(カナリア版とベータ版)で無効になり、安定版のユーザーの 1% でも試験的に無効化されましたが、コマンドラインから再有効化できました。Chrome 87 では 50% のユーザーで無効になりましたが、ここでもコマンドラインから有効化できました。Chrome 88 以降ではデプリケーション トライアルでのみ利用でき、現在は無効になっています。

数値で終了する IPv4 以外のホスト名の URL のサポート

数値で終了し、有効な IPv4 アドレスではないホスト名のほとんどは、有効なホスト名として扱われ、DNS のルックアップが行われます(たとえば、http://foo.127.1/ など)。Public Suffix List 仕様によると、この URL のホスト名の eTLD+1 は 127.1 です。これが URL として指定されると、http://127.1/ は URL 仕様によって http://127.0.0.1/ にマッピングされます。これは潜在的に危険です。127.0.0.0.1 も、ユーザーを混乱させるために使われる可能性があります。今後、こういったホスト名を含む URL は、拒否されるようになります

WebAssembly のクロスオリジン モジュール共有

Chrome では、エージェント クラスタが長期的にオリジンにスコープできるように、クロスオリジンでありながら同一サイト環境であるサイト間での WebAssembly モジュールの共有が非推奨となります

U2F API(Cryptotoken)のサポート終了

セキュリティ キーを操作するための Chrome の以前の U2F API が非推奨となり、Chrome 95 でデプリケーション トライアル(オリジンを指定してサポートの終了を延期できるオプトイン機能)が開始されます。この API はデフォルトで有効なまま残されますが、トライアルに参加したサイトでは、トライアル トークンによって鍵が無効化されます。U2F セキュリティ鍵自体は非推奨ではなく、今後も動作し続けます。

影響を受けるサイトは、Web Authentication API に移行する必要があります。もともと U2F API で登録された認証情報は、Web Authentication 経由でチャレンジできます。U2F API でサポートされる USB セキュリティ キーも、Web Authentication API のサポート対象です。

U2F は Chrome オリジナルのセキュリティ キー API で、フィッシングに強い 2 要素認証システムを構築するため、サイトから USB セキュリティ キーに公開鍵認証情報を登録し、チャレンジできるようにします。U2F はオープンなウェブ標準になることはなく、Web Authentication API(Chrome 67 でリリース)に取り込まれました。Chrome は FIDO U2F JavaScript API を直接サポートすることはありませんでしたが、同等の機能を持つ chrome.runtime.sendMessage() メソッドを提供する Cryptotoken と呼ばれるコンポーネント拡張機能を公開しました。U2F と Cryptotoken はメンテナンス モードに入っており、サイトにはここ 2 年間にわたって Web Authentication API への移行が推奨されてきました。

以下のスケジュールは、現時点でのサポート終了と削除の予定です。

Chrome 93

2021 年 8 月 31 日の時点で安定版です。googleLegacyAppIdSupport 拡張機能のサポートが追加されました。

Chrome 95

2021 年 9 月 23 日の時点でベータ版です。次の変更が実装されました。

  • ユーザー許可プロンプトによって U2F API リクエストへのアクセスを制限
  • リクエストのたびに DevTools コンソールにサポート終了の通知を記録

Chrome 98

2022 年 1 月初旬にベータ版、2 月に安定版となる予定です。デプリケーション トライアルは継続しますが、動作は逆転します。すなわち、デフォルトで API が無効化されますが、トライアル参加者は継続利用することもできます。

Chrome 103

2022 年 5 月下旬にベータ版、6 月下旬に安定版となる予定です。デプリケーション トライアルが終了します。

Chrome 104

2022 年 6 月下旬にベータ版、8 月初旬に安定版となる予定です。U2F API が完全に削除されます。

Reviewed by Eiji Kitamura - Developer Relations Team

この記事は Ryan Warrender による The AMP Blog の記事 "Web Stories call to action buttons get an upgrade" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Web Stories は、新しいユーザーにアプローチしたり、ユーザーをウェブサイトに呼び戻したりするうえで、有効な手段です。クリエイターやパブリッシャーにとっては、CTA を活用して Web Stories とウェブサイトをつなぐ方法が一般的になっています。そこで、読者のエクスペリエンスをさらに向上させるため、CTA をアップグレードし、一貫性の高い UX を構築しつつ、カスタマイズ性を高める機能を追加しました。

刷新されたコンポーネントを使うと、読者はリンク形式で追加コンテンツに簡単にアクセスできます。読者は、「上にスワイプ」ジェスチャーをするか、行動喚起要素をタップすることで、このコンテンツを表示できます。アタッチメントを開くプロンプトは、そのコンポーネントを使っているすべてのページの最下部に自動的に追加されます。

アウトリンク ページ アタッチメントとインライン ページ アタッチメントにより、クリエイターやパブリッシャーは読者を自身のウェブサイトに連れ戻すことが可能

使用方法

多くの作成ツールが、すでに <amp-story-page-outlink> のサポートをロールアウトしています。自分で Web Stories を作成している方向けに、読者のエクスペリエンスを向上するために行った主な変更を紹介しましょう。 

1. Web Stories のページにプライマリ CTA UI を導入しました。この UI を使うと、任意の外部リンク(<amp-story-page-outlink>)や、ページ アタッチメント(<amp-story-page-attachment>)を開くことができます。

Web Stories のページのプライマリ CTA UI のサンプル

2. 加えて、ストーリーのブランディングに合うすばらしいテーマを簡単に作れるようにしました。クリエイターは、CTA をカスタマイズできるようになっています(色、アイコンなど)。

ページ アウトリンクのさまざまなカスタマイズ例
ページ アタッチメントのさまざまなカスタマイズ例

3. 今後、<amp-story-cta-layer>機能を置き換える予定ですが、古いストーリーを変更する必要はありません。スタイルをカスタマイズした要素は削除され、amp-story-page-outlink 要素に置き換えられるので、<amp-story-cta-layer> を使っている既存のストーリーは、すべて異なる外観になります。クリエイターやパブリッシャーは、何もしなくてもこの追加のメリットが得られます。 

リンクされたコンテンツ

AMP ストーリー ページ アウトリンクを使うと、1 タップで外部リンクに移動できます。ユーザーが CTA ボタンを押すと、URL が開きます。これまで、この機能は amp-story-page-attachment で処理されていましたが、クリエイターの操作がわかりやすくなるように機能を分離しました。

新しい 1 タップ外部リンクの例
上へスワイプによる外部リンクの例

デモ

新しいデザインや API、実装の例は、デモストーリーでご覧ください。

参加する

Web Stories を読むのが好きな方も、自分で作成してみたい方も、作成ツールを作っている方も、ぜひアイデアや提案を Web Stories ワーキング グループと共有してください。GithubSlack を通して、私たちに連絡することもできます。また、デベロッパー プレビュー メールグループにもご登録ください。 


Reviewed by Anna Ogawa - Search Ecosystem Consultant, gTech

11 月 9 日(火)から 4 日間にわたり Google Cloud ML Summit を開催いたします。
あらゆるアプリケーション、サービスで、AI を活用し新たな価値を創造することが重要な時代になってきています。このイベントでは、データ サイエンティスト、アプリケーション開発者向けに、最新の Google Cloud AI や、機械学習サービスの活用例などをご紹介いたします。

最終日の 12 日(金)には Google Cloud ML Summit で取り上げられる内容に合わせたハンズオンを Qwiklabs を用いてエンジニアの解説付きで開催いたします。

ご登録いただいた方から抽選で 100 名様に Google Cloud オリジナルのサニタイザー ケースをプレゼントいたします。
ぜひ、この機会にご登録ください。

お申込み受付中


開催概要

名 称 Google Cloud ML Summit 

日 程 11 月 9 日(火)〜 11 月 11 日(木)14:00 - 18:30
    (Cloud Study Jam ハンズオン は 11 月 12 日(金) 14:00 - 17:00 に開催)

対 象 データ サイエンティスト、アプリケーション開発者

参加費 無料(事前登録制)

登 録 https://goo.gle/ML_gcbg


ピックアップ セッション

■ SUBARU Lab でのアイサイト開発における Google Cloud の活用 
  大久保 淑実 氏 株式会社SUBARU

■ Vertex AI AutoML Forecasting で DNN の強力な多変量時系列予測を自動モデリングする
  松田 実法 氏 コカ・コーラ ボトラーズジャパン株式会社

■ AI くずし字認識アプリ「みを」プロジェクトから学んだこと
 カラーヌワット タリン Google Brain リサーチ サイエンティスト

■ Google を支えるベクトル近傍検索技術と Vertex Matching Engine
 佐藤 一憲 Google デベロッパーアドボケイト



この記事は Developer Advocate の Alex Muramoto による Google Cloud Blog の記事 "Behind the scenes: WebGL-powered Maps demos for Google I/O" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google I/O 2021 での WebGL を利用したマップ機能のベータ版リリースの発表に備え、Google Maps Platform チームは、2012 年からの Google Cloud パートナーである Ubilabs と協力して、3D レンダリングを地図に導入すると実現できることをデベロッパーに紹介するためのデモを作成しました。最初のデモ「Google Maps Platform WebGL-powered Maps Features(Google Maps Platform WebGL を利用したマップ機能)」は、各 WebGL 機能とそれらを効果的に使用する方法をデベロッパー向けに詳しく紹介しています。

デベロッパー向けのデモでは、WebGL を利用したマップ機能の活用方法を Google Maps Platform デベロッパーに紹介しています。

2 番目のデモ「Travel with Next Generation Maps(次世代マップを活用した旅行)」では、架空の旅行アプリを例にして、Google Maps Platform の新しい 3D 機能でマッピング エクスペリエンスがどのように変容するかを全体像として見ることができます。

Ubilabs と開発した旅行デモでは、WebGL を利用したマッピング エクスペリエンスの効果をビジネス ユーザーに紹介しました。

WebGL を利用した新しいマップ機能の紹介

このプロジェクトに携わった Ubilabs のソフトウェア エンジニアである Martin Schuhfuss 氏は、2019 年の Google I/O で Google Maps Platform エンジニアリング リードの Travis McPhail と話したことを覚えています。その内容は、Google Maps Platform チームが一部の API で検討している変更と、ベクトル地図や 3D コンテンツをサポートするための取り組みについてでした。そして 2021 年。Schuhfuss 氏は Google I/O 2021 向けに Google Maps Platform の新しい WebGL 機能を紹介するデモの作成に向けて、Google Maps Platform チームとの打ち合わせに参加することになりました。信頼できる Google Cloud パートナーとして、Ubilabs はそれら機能の初期ユーザーに任命されていました。初期段階にある機能の常として、開発プロセスが進行する中、デバッグや初期ドキュメントの作成が必要になる可能性がありました。

Ubilabs の共同創業者かつ開発責任者であり、Google Maps Platform の Google Developer Expert である Martin Kleppe 氏も、プロジェクト マネージャーやデザイナー、その他 3 名のデベロッパーとともにプロジェクトに取り組みました。

Schuhfuss 氏は次のように語っています。「私たちはインターネットでの地図のユースケース、特に 3D のシーンで興味深いものを探しました。小規模なテスト版を作成し、自分たちに何ができるかを試していました。しかし、当時はドキュメントすら存在しませんでした。」

Ubilabs はデモのうち 1 つをデベロッパー向けとし、新しい機能について順を追って説明するとともに、コードサンプルを盛り込んで使用方法を紹介することにしました。2 番目のデモである旅行アプリは、航空便での移動、タクシー乗車、ホテルの検索、旅先での食事という場面に当てはめて新しい機能を紹介しています。Schuhfuss 氏は、WebGL ベータ版機能の初期ユーザーとして学んだすべてを効果的に要約した、ユーザー向けのデモ案内文を作成しました。そのテキストの大半は、機能を初めて試す他のユーザー向けにドキュメントにまとめられました。

Schuhfuss 氏は次のように語っています。「各機能について、できるようになったこと、そしてそれがどのように表示されるのかを示すのに最適な Google Maps Platform の使い方は何か。チーム内で自問を繰り返しました。そして、ある都市を訪れる旅の過程を、初めから終わりまで表現する旅行デモを作成することにしました。」

デベロッパーは真上から見下ろした、北が上になった 2D の地図表示に慣れています。そのため、Schuhfuss 氏は、どんな場面でも 3 次元機能を利用してカメラを動かし、地図に情報を追加できる仕組みの紹介に力を入れました。たとえば、以下のスクリーンショットでは、地図にシンプルな傾斜と回転を追加するだけで、エクスペリエンス全体がいかに変化するかがわかります。

この例では、デベロッパーに新しい傾斜と回転の機能が示されています。

Kleppe 氏は次のように説明します。「WebGL 機能の基盤をなすテクノロジーは、GPU による高速レンダリング サービスを使用します。ユーザーはマシンのグラフィック カードを使って建物を 3D レンダリングし、3D オブジェクトを空間に配置できます。以前は追加のレイヤとして地図上にデータを表示できるだけでしたが、現在では新たなレベルの制御が可能になりました。これにより、街の景色を見るような没入型エクスペリエンスを実現できます。」

まず、チームは小規模なデモを作成し、次にそれらをクリックして詳細を見られる大規模なデモに組み込みました。意図したとおりに機能しないものがあると、Ubilabs はトラブルシューティングを試み、Google Maps Platform エンジニア チームと協力して問題を修正しました。あるケースでは、Schuhfuss 氏が 3 つの異なるオブジェクトをあるシーンに追加すると、3 番目のオブジェクトは常に数秒後に消え、2 番目のオブジェクトはさらに数秒後に消えました。Ubilabs は、この問題に関するフィードバックを Google Maps Platform エンジニア チームと共有しました。同チームは次のリリースで問題を解決し、このサービスをユーザー向けに改善できました。

Schuhfuss 氏は次のように述べています。「私はデバッグに時間をかけ、起きている現象を把握しようとしました。建物の背後に隠れるようにレンダリングするものをオクルージョン(手前にある物体が背後にある物体を隠す状態)できるようにするには、WebGL コンテキストを共有する必要があります。WebGL はグラフィック カードと通信でき、小さな状態の変化の影響を受けやすいインターフェースです。」

Schuhfuss 氏は、緯度と経度による座標の把握と算出とは別に、かなりシンプルな Three.js 機能が残りの開発に必要であることがわかりました。同チームは Google Maps Platform チームと定期的に連絡を取り、進捗状況を確認し合いし、技術的な問題や更新に対処しました。

Google I/O のインタラクティブなデモ

Ubilabs は各デモの締めくくりに、デベロッパーが WebGL 機能で作成できるものとして、目を引く機能を紹介しました。

「旅行デモの最後のページは一番のお気に入りです」と Schuhfuss 氏は言います。氏は Google I/O の数日前にそのページを完全に再構築しました。「私が気に入っているのは、カメラを回転させたときのテキストラベルの動作と、建物が隠れるとテキストの下に小さなステムが表示されることです。」

ロンドンの観光スポットのテキストラベルが各場所の上に表示され、地図を回転させると、小さなステムが各建物をはっきりと指し示すように表示されます。

デベロッパー向けのデモの最後のページでは、ユーザーに「地図を再定義する」ことを推奨しており、埋め込みの動画や花火が表示されます。

Schuhfuss 氏は次のように語ります。「次に気に入っているのは花火です。動画を埋め込むことができ、どこかに表示したくて港にビデオウォールを構築しました。開発の途中では、リック・アストリーの曲も再生されていたようです。」

WebGL 機能を使用すると、動画を地図に埋め込んだり、花火などの機能を地図に追加したりできます。

「通りが表示された基本地図と、ビジネス情報を描画するレイヤ、ルートを計算するための追加 API など、さまざまなデータソースを組み合わせることができます。さらに、その上に独自の情報を配置できます。API のデータセットだけではありません。自分のデータを世界の抽象的なビューにいつでも自由に統合できます。」

さらに、Schuhfuss 氏は、slack ワークスペースの Three.js コミュニティも運営しており、オンラインで驚きの声が多数寄せられたことに加えて、「ユーザーによるこうした機能のユースケースを見るのを本当に楽しみにしています。」とも述べています。

Google Maps Platform に関する詳しい情報はこちらをご覧ください。ご質問やご意見はページ右上の「お問い合わせ」より承っております。



Posted by 丸山 智康 (Tomoyasu Maruyama) - Developer Relations Engineer 

...
この記事は Chrome チーム、Mike Taylor、Jade Kessler による Chromium Blog の記事 "User-Agent Reduction Origin Trial and Dates" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

今年 5 月に、User-Agent 文字列削減計画についての最新情報 をお知らせし、適宜詳細をお伝えすることを約束しました。この度、削減版の User-Agent ヘッダー(とそれに関連する JS インターフェース)を オリジン トライアル(オリジンを指定して実験的機能を先行利用できるオプトイン機能)でテスト できるようになったので、現時点で想定しているスケジュールについてお知らせします。以下は元のブログ投稿の繰り返しになりますが、各フェーズが始まる Chrome の想定バージョンを記載しているので、準備のためにご活用ください。
Chromium スケジュール ダッシュボード は、それぞれの Chrome バージョンに関連する日付や、Canary 版からベータ版、安定版リリースに至る進捗を理解するうえで役に立ちます。
注 : エンジニアリングの想定期限に関する一般的な注意事項は、ここでも当てはまります。つまり、不測の事態により、遅延が発生する可能性があります。ただし、遅延が発生した場合でも、フェーズ間のスケジュールを縮めることはいたしません。

ロールアウト計画案

以下の変更は、7 つのフェーズに分け、オリジン トライアルのフィードバックを待ちながら、時間をかけて徐々にロールアウトする予定です。

削減の準備

フェーズ 1: Chrome 92 から(2021 年 7 月 20 日)
推奨される対応(CTA): サイトの使用方法を監査し、移行が必要になる可能性がある箇所を把握してください。
M92 より、navigator.userAgentnavigator.appVersionnavigator.platform へのアクセスに関する警告を DevTools に表示します。


フェーズ 2: Chrome 95 から Chrome 100
CTA: Chrome 101 がリリースされるまでの間、サイトをオリジン トライアルに登録し、フィードバックを提供してください。
みなさんからテストとフィードバックにご協力いただけるよう、サイトを削減版の UA 文字列の最終形にオプトインできるオリジン トライアルを開始します。これは少なくとも 6 か月間継続します。 
オリジン トライアル パートナーやコミュニティからのフィードバックを評価し、そのフィードバックに基づき、計画のフェーズ 3 から 7 を進めます。その間に、エコシステムが適応するための十分な時間をとります。もしくは、フィードバックに応じて、最善策について再検討します。


削減のロールアウト

フェーズ 3: Chrome 100
CTA: 必要に応じて、デプリケーション トライアル(オリジンを指定してサポートの終了を延期できるオプトイン機能)またはエンタープライズ ポリシーにサイトを登録してください。
サイトを移行する時間がさらに必要な場合などのために、デプリケーション トライアルとエンタープライズ ポリシーを開始します。

フェーズ 4: Chrome 101
CTA: サイトで削減版の Chrome バージョン番号との互換性を確保してください。確保できない場合は、UA Client Hints に移行します。
Chrome の MINOR.BUILD.PATCH バージョン番号を削減します ("0.0.0")。これがロールアウトされると、デスクトップとモバイルのオペレーティング システムで、デプリケーション トライアルをオプトインしていないすべてのページの読み込みに、削減版の UA 文字列が適用されます。

フェーズ 5: Chrome 107
CTA: サイトで削減版のデスクトップ UA 文字列と関連する JS API との互換性を確保してください。確保できない場合は、UA Client Hints に移行します。
削減版のデスクトップ UA 文字列と関連する JS API(navigator.userAgentnavigator.appVersionnavigator.platform)のロールアウトを開始します。これがロールアウトされると、デスクトップのオペレーティング システムで、デプリケーション トライアルをオプトインしていないすべてのページの読み込みに、削減版の UA 文字列が適用されます。


フェーズ 6: Chrome 110
CTA: サイトで削減版のモバイル UA 文字列と関連する JS API との互換性を確保してください。確保できない場合は、UA Client Hints に移行します。
削減版の Android モバイル(とタブレット)の UA 文字列と関連する JS API のロールアウトを開始します。これがロールアウトされると、Android で、デプリケーション トライアルをオプトインしていないすべてのページの読み込みに、削減版の UA 文字列が適用されます。


削減の完了

フェーズ 7: Chrome 113
デプリケーション トライアルが終了し、すべてのページの読み込みに、削減版の UA 文字列と関連する JS API が適用されます。
詳細や、各フェーズでの User-Agent 文字列の例については、削減版の User-Agent 文字列に関する最新情報ページをご覧ください。重大な遅延や変更が発生した場合は、このページでもお知らせします。


※この投稿は米国時間 2021 年 9 月 15 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud Next(2021 年 10 月 12~14 日)の開催まであと 1 か月を切りました。この無料のフラッグシップ イベントで皆様にお会いできるのを心待ちにしております。イベントの全カタログを公開いたしましたので、ご自身にぴったりのコンテンツをお探しください。エキスパートによるライブ Q&A をはじめ、ブレイクアウト セッション、没入型のデモ、Google Cloud の実際のユースケースをご覧いただけます。今年は、カスタム再生リストを作成して、視聴するセッションをパーソナライズすることや、見逃さないようにリマインダーやカレンダー通知を設定することもできます。

Next '21 に参加して、クラウドの現在と未来に関する情報を入手しましょう。業界をリードするデータや分析から、最適化、モダナイゼーション、セキュリティ、サステナビリティまで、Google Cloud をさらにオープンかつ高速で、柔軟性と信頼性の高いものにするために、Google が世界最大のプライベート ネットワークをどのように拡張しているかをご覧ください。11 のトラックにわたる 130 以上のセッションは、トラックやカテゴリなどでフィルタしたり、お気に入りのセッションをブックマークして後から視聴したりすることができます。

毎日、Google Cloud CEO の Thomas Kurian や Google Cloud 技術インフラストラクチャ部門シニア バイス プレジデント Urs Hölzle などの業界リーダーによるライブ配信と基調講演をご覧いただけます。一部のセッションをご紹介します。

  • Data cloud: Simply transform with a universal data platform
    貴社のエンタープライズ データは、データベース、データレイク、データ ウェアハウス、複数のクラウドに分散していませんか?すべて統合して、より迅速にイノベーションを実現し、カスタマー エクスペリエンスを向上させましょう。BigQuery、Cloud Spanner、Looker、Vertex AI を活用して会社のデータを統合するためのベスト プラクティスをご紹介します。

  • Developer platform state of the union: Google Workspace
    Google Workspace のデベロッパーが、アドオン、Google Chat アプリ、API、Google Meet のインテグレーションといった、一連の生産性向上ツールやコラボレーション ツールで利用できる最新の技術機能をご紹介します。

  • Data analytics strategy and roadmap: Turn data into differentiating feature
    データを使用して、より大きな価値を顧客に提供したいとお考えですか?意思決定インテリジェンスをビジネス プロセスに適用する方法を学びましょう。他の組織がどのように Google Cloud データ分析ソリューションを使用して、データをアクションに変換しているかご紹介します。

  • What's new and what's next with infrastructure for AI and ML
    今年人工知能(AI)と機械学習(ML)が遂げた進化について説明します。また、Cloud GPU や目的に特化した Cloud TPU などのハードウェア アクセラレータの最新イノベーションを使用してワークロードを強化する方法をご紹介します。

  • Transform your business operations with no-code apps
    誰でもアプリを作れると言ったら信じられますか?「コーディングの経験がまったくない」と自称するプロダクト マネージャーの Paula Bell 氏が AppSheet を使用して、電力会社 Kentucky Power の現場作業のやり方に革命をもたらすミッション クリティカルなアプリを作成した方法をご紹介します。また、AppSheet を使用して AI と ML をアプリに追加する方法もご説明します。

Google Cloud の Twitter で、クラウドのエキスパートやエグゼクティブが作成した個人的な再生リストを紹介していますのでぜひチェックしてください。また、再生リスト作成ツールを使って、ご自身で作成した再生リストを知り合いや同僚と共有しましょう。

情報を入手し、刺激を受けて、専門知識を広げるために、ぜひご参加ください。今すぐ登録して、あなただけの Next '21 を計画しましょう。


Posted by イベントおよび戦略的イニシアチブ担当ディレクター Matt Kaufman