Google Maps Platform で deck.gl を使用して充実したデータの可視化を実現

この記事は Google マップ、Google Maps Platform エンジニアリング リード Travis McPhail による Google Cloud Blog の記事 “Richer data visualization on Google Maps Platform using deck.gl” を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。Google Cloud Next では、最新のオープンソース データ可視化ライブラリ deck.gl(バージョン 8.6)をご…

DevFest 2021 が日本各地で開催されます

DevFest は、Google Developer Group(GDG)コミュニティによって世界各地で開かれるデベロッパー向けイベントです。参加者は Android、Firebase、Google Cloud Platform、TensorFlow、Web などの Google のデベロッパー テクノロジーに関する技術情報、知識やアイデアを共有できます。それぞれの DevFest は、主催するコミュニティとその地域のニーズに沿ったユニークな内容となり、日本では下記のイベントが現時点では企画がされて…

ユーザーのウェブ検索と重要なタスクの継続をサポートする Chrome の試験機能について

この記事はプロダクト マネージャー、Yana Yushkina による Chromium Blog の記事 “Helping users explore the web and continue prior tasks” を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

皆さんがインターネットで情報を探したり、プロジェクトの作業に取り組んだりする場合、そのプロセスは直線的には進まないはずです。同じものを何度も探したり、ページ間をジャンプしたり、Google 検索に戻ったり、二度と見つけられないページを探すために履歴をたどったりするかもしれません。これは困難な作業であるだけでなく、なにより、用事を済ませるために使えるはずの時間を奪ってしまう可能性があります。

そこで今回、2 つの新しい試験運用を始めます。その目的は、ウェブで見つけたものを開いたり、詳しく調べたり、履歴を管理したりする作業を簡単にすることです。

ウェブの検索を続ける

あるトピックについてすでに調査を始めており、数日または数週間程度さまざまなサイトにアクセスしている場合、再度アクセスしたい有用な情報を見つけていることでしょう。しかしその過程で、ニュースを読む、友達にメールを送信する、新しい靴を買うなど、多少寄り道していることはほぼ確実です。そこで、完了した検索についての情報を評価したり、有用な情報に再度アクセスしてトピックの検索を続けたりする際に役立つように、Journeys という新機能を試しています。

数週間にわたってヨセミテ国立公園への旅行について調べている場合を考えてみましょう。Journeys は、アクセスしたページのうち、ヨセミテ国立公園に関連するものをすべてまとめてくれます。そのため、閲覧履歴を細かく調べなくても、そのページを簡単に参照できます。さらに、関連する検索の提案も表示されるので、すぐに旅行の計画の続きに取りかかることもできます。

重要な点は、皆さんが Journeys のエクスペリエンスをコントロールできることです。たとえば、Journeys はいつでもオフにすることができます。また、Chrome の設定を使うか、アドレスバーに「clear browsing data」と入力することで、いつでも簡単に閲覧履歴を削除できます。必要に応じて、特定の内容に関する履歴だけを削除することも、履歴全体を削除することもできます。なお、現在の Journeys の試験運用はデバイス内の履歴をグループ化するだけで、Google アカウントには何も保存されません。今後のバージョンでは、ユーザーのフィードバックと関心を踏まえて、(ブックマークやパスワードのように)複数のデバイスの Chrome から Journeys にアクセスする機能を提供するかもしれません。

Journeys は、デスクトップ向けの Chrome Canary 版で試験運用として公開します。広く展開する前に改善できるように、皆さんのフィードバックをお待ちしています。

Chrome OS で検索結果を簡単に比較する

過去の履歴に再アクセスする機能に加えて、何かを積極的に検索するときに、探しているものを簡単に見つけるための方法についても試しています。贈り物の買い物、旅行の計画、友人と会食するためのレストランの比較、夕食のレシピの検索などをしているとき、皆さんは必要なものを見つけるために複数のサイトにアクセスしているはずです。

Chrome で検索結果を簡単に比較して、探しているものをすばやく見つけられるように、Chrome OS の Dev チャンネルで新しいサイドパネルの試験運用を行っています。これを使うと、ページと検索結果を同時に見ることができます。メインブラウザのウィンドウに直接ページを表示できるので、ページを行き来したり、検索結果を失ったりすることはなくなります。この試験運用の目的は、先月お知らせした機能と同じく、結果を比較するユーザーを Chrome がどのくらいサポートできるかを確認することです。

検索バーの隣の G アイコンをクリックするだけで、サイドパネルを開いて結果を表示できます。探しているものが見つかった場合や、もう結果が不要になった場合は、いつでもパネルをクローズできます。この機能の試験運用は、まず Chrome OS の Dev チャンネルの Google 検索で行います。今後は、この機能を広く展開することで、多くのプラットフォームの多くのデフォルト検索エンジンに拡大したいと考えています。
今回の試験運用は、Chrome によるウェブの検索をさらに便利にするために試行を繰り返しているもののうち、わずか 2 つにすぎません。Journeys はデスクトップ向けの Chrome Canary 版で、新しいサイドパネルは Chrome OS の Dev チャンネルで、近日中に確認できるようになります。動作の仕組みについては、もう少し詳しく説明する機会を設けたいと思っています。また、いつものように、皆さんのフィードバックもお待ちしています。

Google Cloud オフィスアワー 開催

Google Cloud Japan は 10 月 20 日 (水)21 時より Google Cloud オフィスアワーを開催いたします。Google Cloud オフィスアワーは、Google Cloud の最新情報をお届けする場です。また、みなさまからの質問に Google Cloud エンジニアが直接お答えします。当日は YouTube Live で放送します。参加登録不要でご視聴いただけますので、ぜひお気軽にご参加ください。10 月開催のセッションでは、モダンなアプリケーション開発について…

App Modernization OnAir 開催

Google Cloud Japan は 10 月 20 日 (水)、10 月 27 日 (水)の 2 週にわたって Google Cloud App Modernization OnAir を開催いたします。Google Cloud App Modernization OnAir では、Google Cloud のエンジニアが、モダンなアプリケーション開発で利用可能な Google Cloud のサービスや、コンテナ、Kubernetes を利用した開発手法、マイクロサービス アーキテクチャの採用…

Google Cloud Community News がローンチされました

GCCN (Google Cloud Community News) は Google Cloud に関連したコミュニティの情報をまとめた Web サイトです。Google Cloud に関するイベント情報やレポート、コミュニティ支援など、すでにコミュニティで活躍している方だけでなく Google Cloud に興味をもった方にとっても、役立つサイトとなるよう、各コミュニティメンバーが中心となってさまざまな情報を発信していきます。GCCN を活用して、興味がある分野のイベントやお住まいの地域のコミュ…

Chrome のメモリの安全性に関するアップデート

この記事は 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<!—->

Chrome 95 ベータ版: Secure Payment Confirmation、WebAssembly の例外ハンドリングなど

この記事は 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<!—->

Web Stories の行動喚起ボタンをアップグレード

この記事は Ryan Warrender による The AMP Blog の記事 “Web Stories call to action buttons get an upgrade” を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 Web Stories は、新しいユーザーにアプローチしたり、ユーザーをウェブサイトに呼び戻したりするうえで、有効な手段です。クリエイターやパブリッシャーにとっては、CTA を活用して Web Stories とウェブサイトをつなぐ方法が一般的になっ…

Google Cloud ML Summit 開催のご案内

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