[go: up one dir, main page]

この記事は Jung von Matt 開発ディレクター、Matthias Rohmer による The AMP Blog の記事 "Creating Delightful User Experiences Using AMP On Adobe Experience Manager" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

編集者のメモ: 以下のゲスト投稿は、Jung von Matt の開発ディレクター、Matthias Rohmer 氏によるものです

TL;DR: Jung von Matt は、Adobe Experience Manager で AMP を使用して、BMW によるすばらしいユーザー エクスペリエンスの実現をサポートしました。


クライアントのプロジェクトを実装する際、使用するテクノロジーを自由に選べるというのは、かなり珍しいことです。通常、エンタープライズ ソリューションを選んだクライアントは、その選択肢を補完しつつ、将来の成長を見込めるプロダクトやサービスを探します。

2017 年、BMW は自らのブランドのウェブサイト www.bmw.com を再構築するパートナー企業を探しているとき、先ほど述べた補完ソリューションを求めていました。ほぼすべての BMW のウェブサイトは Adobe Experience Manager(AEM)を使って構築されていたため、BMW が探していたのは、このようなハイエンド システムを扱えることに加え、AEM の機能を活用してメンテナンスしやすくパフォーマンスの高いウェブサイトを構築できるチームでした。

これは、BMW が既存のサイトで実現できなかった目標でした。既存サイトは、同じバックエンドを共有していながら、さまざまなフロントエンド フレームワークやライブラリが混在していました。私たちはプロセスのかなり早い段階で、このスタックに新しい空気を取り入れることを決めました。そして、全体を支えるフロントエンド テクノロジーとして、AMP を導入することを希望しました。私たちが頭を悩ませ始めたのはそこからです。最適な形で AMP と AEM を統合するには、どんな方法を使えばよいのでしょうか。ましてや、フロントエンド開発に関する前提事項があまりに多い CMS を使うのです。

AMP と AEM を統合する際に解決すべき問題群

いくつかのリサーチを経て、AEM から有効な AMP ページを生成するためには、主に 3 つの課題を解決しなければならないことがわかりました。
  • AMP では、ドキュメントの CSS をすべて `<head>` 内にインラインで記述しなければならないので、AEM のビルトイン ClientLib 機能を使わずに CSS を生成する方法を探す必要があります。
  • すべてのページを有効な AMP にするには、実際にページで使われる AMP コンポーネント用のリソースヒント(`<script async custom-element=”amp-carousel” src=”https://cdn.ampproject.org/v0/amp-carousel-0.2.js“></script>`)のみを生成するメカニズムが必要になります。
  • 戻ってくる訪問者のためにプログレッシブ エンハンスメント(中心的なコンテンツから徐々に表示する戦略)を可能にするには、AEM が AMP ページと非 AMP ページの両方を同時にレンダリングできる必要があります。

AMP で使えるように CSS をインライン化する

AEM には、ページのスタイルを扱うかなり効率化されたアプローチが搭載されています。それを実現する ClientLib メカニズムは、ページに必要なすべての CSS をカテゴリと呼ばれるものに基づいて組み合わせてくれます。このカテゴリに基づいて、テンプレートの `<link>` タグを AEM に生成させます。このタグは、すべてのスタイルを含む生成済みのスタイルシートを指すことになります。

AEM のビルトイン Rewriter パイプラインを活用すると、この `<link>` 要素を使ってスタイルシートを組み合わせ、通常の `<style amp-custom>` タグにすることができます。次のコードスニペット(かなり圧縮されています)を見ると、この変換がどのようなものになるか、大まかにわかっていただけるはずです。
StringBuilder styles = new StringBuilder();
boolean writeStyles = false;

public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
    if (localName.equalsIgnoreCase("link")) {
        // If the element currently in queue is a link tag inspect it
        String href = atts.getValue("href");
        String rel = atts.getValue("rel");

        if (rel.equalsIgnoreCase("stylesheet")) {
          String css = "";
          // TODO: Load the stylesheet from the JCR, store it with others loaded
          // so far and append to styles
        }

        return;
    }

    if (localName.equalsIgnoreCase("style")) {
        if (atts.getIndex("amp-custom")) {
          writeStyles = true;
          // TODO: Use this flag to emit all styles gathered in styles
          // in the transformer's characters method
        }

        return;
    }

    contentHandler.startElement(uri, localName, qName, atts);
}

必要なリソースヒントのみを追加する

AMP の有効性を保証するために解決しなければならないもう 1 つの課題は、先ほどの `<script>` 要素を実際に必要とされるページにのみ追加することでした。これは、プロジェクトに次のカスタム ノードタイプを導入することで解決しました。
    <ampJS
        jcr:primaryType="bmw:ampJSResource"
        bmw:ampCustomElementTag="[amp-video]"/>

すべての AEM コンポーネントにこのタイプの子要素を追加することで、依存先の AMP コンポーネントの情報を持たせます(上の例では amp-video)。ここでカスタム ノードタイプを使うメリットは、ページがレンダリングされる際に安全かつ迅速にノードに問い合わせることにより、必要な AMP コンポーネントを決めることができる点です。これは、次のようなコードになります。

final PageManager pageManager = resource.getResourceResolver().adaptTo(PageManager.class);
final String currentPage = pageManager.getContainingPage(resource).getPath() + "/jcr:content";

final String query = String.format("SELECT * FROM [bmw:ampResourceHint] AS s WHERE ISDESCENDANTNODE(s,'%s')", currentPage);

final Iterator<Resource> result = resource.getResourceResolver().findResources(query, Query.JCR_SQL2);

while (result.hasNext()) {
  Resource queryResource = result.next();
  final String type = queryResource.getParent().getResourceType();
  ValueMap properties = queryResource.adaptTo(ValueMap.class);

  String[] usedComponents = properties.get("bmw:usedAmpComponents", String[].class);
  if (usedComponents != null && usedComponents.length != 0) {
    // TODO: Store all used components somewhere for later rendering
  }
}
このロジック片は、`data-sly-use` 属性と `data-sly-repeat` を組み合わせることで、簡単に HTML テンプレートから呼び出すことができます。これにより、必要なすべてのリソースヒントをページの head に出力できます。

AMP と合わせて PWA を提供する

www.bmw.com では、ユーザーの画面にサイトをできるだけ早く表示されるようにしたいと考えました。これを実現するために、すべての初回訪問者が AMP 版のページを受け取るようにします。同時に、AMP だけでは提供できないものの、PWA(これも AMP がベースになっています)なら提供できる機能も実装したいと考えました。

つまり、このアプリケーションでは、同じドキュメントを 2 つのバージョンで提供できなければなりません。幸運にも、AEM ではこの機能を既に利用できます。そのためには、Sling セレクタを使います。

セレクタを作成するために必要なのは、並列する 2 つのテンプレートを実装することだけです。デフォルトで Sling エンジンが解決するものは、単に `html.html` と呼ばれています。もう 1 つには、セレクタの名前を付けます。今回のケースでは、`pwa.html` としました。これにより、すべての記事は brooklyn-beckham-car-photography.html から純粋な AMP 版としてアクセスするか、brooklyn-beckham-car-photography.pwa.html から PWA 機能でアクセスするかのどちらかになります。

この手法を用いることで、有効な AMP ページと PWA をそれぞれ独立して提供する方法を見つけました。しかし、どうすればユーザーはプログレッシブ ウェブアプリに到達できるのでしょうか。ここで、`amp-install-service-worker` が輝かしいデビューを飾ることになります。この AMP コンポーネントを使うと、ユーザーがいずれかの AMP キャッシュからいずれかのページを開いたときに、www.bmw.com が Service Worker をインストールします。それ以降、brooklyn-beckham-car-photography.html に向かうすべてのリクエストを brooklyn-beckham-car-photography.pwa.html に書き換えることができるようになります。これにより、気づかれることなくユーザー エクスペリエンスを向上させています。

私たちにとって、以上の 3 つが BMW の新しい国際マーケティング サイトを構築する上での主な課題でした。最終的には、既にクリエイティブな形で AEM と AMP に組み込まれている機能を使い、すべての課題を車輪の再発明を行うことなく解決できました。
AMP と Adobe は Bounteous とチームを組み、Adobe Experience Manager でさらに簡単に AMP サイトを構築できるようにしています。詳しく知りたい方や試してみたい方は、こちらをご覧ください。

執筆者: Jung von Matt 開発ディレクター、Matthias Rohmer

Reviewed by Chiko Shimizu - Developer Relations Team

この記事は Alex Durán による The AMP Blog の記事 "People Behind The Code: NDTV’s Rise To Global Heavyweight" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。




New Delhi Television Limited(NDTV)は、インドで最も人気の高いニュース ネットワークの 1 つです。容易にアクセスできるユーザー フレンドリーなデザインによりオンライン コンテンツを提供する先駆的存在でもあります。

スマートフォンの普及が進んでアクセスが容易になるにつれて、2015 年にインド各地でのモバイル利用は爆発的に増加しました。しかし、モバイルデータの速度は地域ごとに大きく異なっていました。NDTV の開発チームは、競争に勝つための手段として読み込み時間の速さの追求にいち早く着手し、早くから AMP を採用しました。





Vikas Kumar(NDTV)
私たちは NDTV 技術チームを率いる Vikas Kumar にお会いし、モバイル ファーストのアプローチに対して AMP の採用がどんな効果をもたらしたかについて話していただきました。


この会社の概要、そしてなぜ AMP を採用したのかについて教えていただけますか? 
NDTV は、元々 1988 年に国営ニュース チャンネルであるドゥールダルシャンのプロダクション ハウスとして発足しました。最終的には、ニュース、スポーツ、エンターテインメント、金融、テクノロジーなど、さまざまな専用コンテンツを提供する、独立した独自チャンネルを立ち上げることになりました。 





私たちは 1999 年に NDTV.com を立ち上げ、この 20 年間で世界のトップ 20 に入るニュース ウェブサイトとなるまでに拡大しました。コンテンツの品質、UX、そしてローカライゼーション(コンテンツは英語、ヒンディー語、タミール語、およびベンガル語で提供されています)に取り組んだ結果、現在では平均して月に 2 億人近いアクティブ ユーザーがいます。 





増加するオンライン オーディエンスにとってページ読み込み時間は非常に重要であることを私たちは認識しています。チームメンバーの 1 人が AMP についての記事を読み、デベロッパーたちと話をしました。後日、当社の Google アカウント マネージャからメールを受け取ったのですが、まさに運命の出会いという感じでした。

全体として、AMP の読み込み時間の速さや SERP でのプリキャッシュなどの最適化が、ユーザー エクスペリエンスの向上に役立ったと感じています。






AMP を統合する上で、何か困難はありましたか?
いいえ、ありませんでした。本当です。SEO は以前からデスクトップからモバイルに移行していましたし、モバイル インデックスのほうがデスクトップ検索よりも先行していましたので、これは正しい選択だという確信がありました。 

サードパーティのウィジェットを統合することや、サイトの既存のルック アンド フィールを維持できるかどうかについては、当初いくらかの不安がありました。しかし、どの問題も容易に解決方法を見出せました。たとえば、カスタム JavaScript を使用するウィジェットや要素のレンダリングには <amp-iframe> が大変便利です。


AMP は事業にどんな効果をもたらしましたか? 
当社のような広告収入で運営されているサイトの場合、表示回数の増加が収益増加を意味します。ページの読み込みの速さとユーザー エクスペリエンスの向上により、常連オーディエンスを確立することができ、サイト拡大に再投資できるだけの収入が得られました。





この業界では、たった 1 秒の違いが直帰率の低減や平均セッション時間の増加に大きな影響を及ぼします。AMP 実装により、First Meaningful Paint(FMP)の平均が 3 秒から 1 秒になりました。 

また AMP によって JavaScript が非同期になったおかげでレンダリングの妨げとならなくなり、読み込み時間の足手まといになっていたサードパーティの JavaScript も除去されました。高速そしてアジャイルが実現されました。 

競争での優位性は時間の経過と共に減少してきました。というのも、インドのほとんどのサイト運営者が AMP を採用し、プラットフォームを活用するようにもなっているからです。それでも、ターゲット オーディエンスとのチャンネルを確立する上で、AMP は当初から本当に役に立ってきました。 


AMP を検討している人にどんなアドバイスをしたいですか? 
利用可能な AMP コンポーネントのすべてについてしっかりと理解することです。それは、強力な初期サイト フレームワークの構築に役立ちます。 





また、AMP ページが有効かどうかを継続的に評価し、もし有効でないなら、時間を取ってその理由を調べるべきです。 AMP ウェブサイト には、期待し得るあらゆることに対応したリソースが揃っており、私たちは絶えずアクセスしています。 



実装が難しい AMP コンポーネントが何かありましたか?今後、試してみたいコンポーネントが何かありますか? 
<amp-live-list> については、使い始めるのにトリッキーな感じがしました。当サイトで選挙結果をリアルタイムでグラフィック表示しようとしたのですが、そこに含まれていたサードパーティの JavaScript が問題を引き起こしていました。
結局、問題をコミュニティに投稿しました。そこで他のデベロッパーの方に助けていただいたおかげで解決策を見出すことができて、本当によかったです。AMP はオープンソースであり、絶えず発展し続けているので、互いに協力し、助け合えるのはすばらしいことです。
最近立ち上がった <amp-web-push> を早くテストしてみたいですね。


AMP の今後について一番期待したいのはどんなことですか? 
AMP が OpenJS Foundation に参加しているといったニュースを聞くのは、それがサイト運営者やデベロッパーを念頭に置いて構築されており、オープン プラットフォームであるという確信につながります。 AMP ストーリーなどの新しいコンポーネントやエクスペリエンスを知ると、わくわくしてきますね。コード 1 行で AMP+ PWA なんて本当にすごいです。
Vikas と彼のチームはまさに AMP の達人です。そして皆さんも達人になれます。AMP の達人になるために必要なものはすべて amp.dev にありますので、ぜひチェックしてみてください。AMP スキルを向上させるには、こちらをご覧ください。

AMP を戦略の一部として使用してこられましたか?皆さんのストーリーについてぜひお知らせください。

AMP の使い方に関するニュース、特長、およびヒントについて常に最新情報を入手するには、当社のニュースレターをお申込みください。


投稿: Alex Durán(Google の AMP プロジェクト マーケティング)

Reviewed by Chiko Shimizu - Developer Relations Team

この記事は kimlinks のシニア プロダクト マーケティング マネージャーである Debbie Gainsford による The AMP Blog の記事 "Skimlinks’ Pioneering AMP Extension Helps Maximize Commerce Content Revenues" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

編集者のメモ: 以下の記事は、 Skimlinks のシニア プロダクト マーケティング マネージャーである Debbie Gainsford 氏によって、Skimlinks.com に投稿されました


2019 年のサイト運営者は大変です。広告収入が低下する中、コンテンツを効果的かつ着実に収益化する手段は必須です。そのため、昨年末の公開以来、Skimlinks の革新的な AMP 拡張機能の採用が爆発的に増加しているのは当然と言えます。

このソリューションは今までに類を見ないものです。当社の中核的なコマース コンテンツ テクノロジーを AMP 記事に拡張することで、サイト運営者は販売者へのアフィリエイト リンクをシームレスに収益化できます。

現時点で、100 以上のサイト運営者が 500 以上のドメインでこの拡張機能を導入しており、アフィリエイト対象のクリックが 1,000 万回以上発生しています。PC 版や標準モバイル版の同じ記事と比較して、販売量と注文額の両方が 400% 以上増加したサイト運営者もいます。

AMP がそこまで重要な理由

モバイル端末が読者や消費者の身近になるにつれて、モバイル コンテンツを検索したり読んだりする際にシームレスな体験を提供する重要性が非常に高まっています。モバイルページを高速に読み込み、ユーザーの読み心地を改善できる AMP は、サイト運営者にとって極めて貴重な進化です。2015 年に登場して以来、AMP の利用は拡大し、ウェブのいたるところで活用されています。そして現在は、数千万のドメインで数十億のページを提供するまでになっています。

AMP プラットフォームを採用したサイト運営者は、モバイル コンテンツから確実に収益を得られるという点で優位に立つことができます。Digiday が今年 5 月に行ったサイト運営者のトップ 124 名に対するアンケートでは、AMP を使用しているサイト運営者の 51% が収益を押し上げる要因として AMP を「非常に重要」または「極めて重要」と答えています。それと比較すれば、Facebook は 28%、YouTube は 25% に過ぎません。

当社の CEO、Sebastien Blanc は次のように述べています。 「コンテンツやコマースのトラフィックでモバイルが急成長しています。それとともに、私たちが仕事で関わっているほぼすべてのサイト運営者は、モバイルの収益化を最優先事項にあげるようになっています。このソリューションを使えば、コマース コンテンツをスマートフォン向けに最適化できます。その結果、さらに多くの読者がサイト運営者のコンテンツにアクセスするようになると確信しています」

主要なサイト運営者はどのように AMP でコマース コンテンツを収益化しているのか


主要なサイト運営者は、Skimlinks の AMP スクリプトを導入し、さまざまなビジネス上の課題や目的に対応しています。

New York Media: 新しい販売者を取り込み、140% 以上の成長を実現


「Amazon にリンクしている一部の AMP 記事は収益化できていましたが、Amazon 以外のコンテンツは収益化できていませんでした。Skimlinks の拡張機能を導入したのはそのためです。それ以来、収益と検索回数が増加しています。今では、すべてのコンテンツを AMP で公開しています」 e コマース GM、Camilla Cho 氏

The Strategist の読者の約 30% が AMP で記事を読んでいます。New York Media は、記事の収益化において、大きな成功を収めています。一番収益を上げている AMP 記事は、PC 版の 146% の収益を上げています。

VerticalScope: AMP 記事にディスプレイ広告を掲載するだけに留まらない収益

コマース担当ジェネラル マネージャーである Kendal Clarke 氏は次のように述べています。 「Skimlinks を使う前は、基本的なディスプレイ広告で AMP トラフィックを収益化していただけで、コマースへのリンクはありませんでした。そこで、見逃している収益を得るために Skimlinks AMP 拡張機能を導入しました。他のチャンネル経由でこういったページからコマース収益を上げていることはわかっていたので、考えるまでもなく、収入の増加をもたらしてくれるパートナーと連携できました」

Group Nine Media: コマース コンテンツでまったく新しい収益源を創造

Group Nine Media がビジネスの新しい収益源を構築するためにコマース コンテンツを追加したのは、ごく最近のことです。Skimlinks と連携することで、AMP を含むすべてのチャンネルでコンテンツを収益化することができました。中でも重要なチャンネルが AMP です。今年はこれまでのところ、Thrilist のトラフィックの 42% が AMP 経由で、検索トラフィックにいたっては、なんと 61% が AMP 経由です。

コマース戦略ディレクターの Sam Clanon 氏は次のように述べています。 「初めて大規模にわたって AMP 記事にアフィリエイト リンクを導入するために、Skimlinks の拡張機能を導入しました。拡張機能の導入後は、既にコンテンツ内に存在していたリンクから、アフィリエイトのコマース収入が得られるようになっています。ある程度の AMP トラフィックがあるなら、Skimlinks は特に早く簡単にコンテンツからアフィリエイト収入を上げる方法の 1 つです」

Immediate Media: 手動プロセスを自動化して時間とリソースを節約

radiotimes.com は、全コンテンツの 15~20% が AMP です。AMP トラフィックは非常に重要ですが、それを収益化することは恒常的な課題です。Skimlinks の AMP 拡張機能を導入する前は、Skimlinks のリンクラッパーを使って手動でアフィリエイト リンクを作成して追加していました。本当にプロセスを効率化できました。手動でリンクを作成する時間はもう必要ありません」 アフィリエイト マネージャーの Glenn Caldecott 氏はこのように述べています。
「アフィリエイト マーケティングでモバイル トラフィックを収益化したいなら、Skimlinks の AMP ソリューションが簡単です。統合は軽量で、実装も簡単です」

Reach: AMP 記事のパフォーマンス測定

サイト運営者は、適切なユーザーに向けた適切なコンテンツを作成して収益を最大化する上で、アナリティクスの重要性を知っています。コマース コンテンツ戦略のパフォーマンスを理解し、その主要な収入源を継続的に改善するには、詳細な知見が必要です。Reach が Skimlinks の AMP スクリプトを導入したのはそのためです。

「Skimlinks の AMP 拡張機能を導入する前は、バックエンドでアフィリエイト リンクを追加するサーバーサイド ソリューションを構築して、AMP ページにリンクを含めていました。しかし、インプレッションやクリックデータのトラッキングはできませんでした。Skimlinks の AMP 拡張機能を導入してからは、インプレッションやクリック数のトラッキングができるようになりました。つまり、AMP ページの CTR を測定できるということです。これは、当社のサーバーサイド ソリューションではできなかったことです。トップ記事での AMP からの注文額は 9% 増加しています」 収益担当シニア プロダクト マネージャー、Jeremy Mundy 氏

モバイル向けコマース コンテンツのメリット

モバイルのコマース コンテンツは、低関与、低価格の商品にしか適切でないと考えているサイト運営者もいます。しかし、モバイルでの購入は多くの消費者の第二の天性になり、自信を持って高価なチケット商品を買ったり、複雑な購入の決断をしたりするようになっています。

モバイル コンテンツのアフィリエイト リンクが消費者に価値あるサービスを提供できるのは、まさにここです。今読んでいる商品のおすすめ記事から、直接商品を購入するページに移動できるからです。私たちのデータによると、消費者がコマース コンテンツで 5,000 米ドル以上のテレビを買ったこともあります。

モバイルにコマースのメリットがあるもう 1 つの領域は、私的な商品です。モバイルは PC よりもはるかに個人的なメディアです。消費者が個人的に、または秘密裏に購入する商品を調査している場合、PC よりもスマートフォンを使う方が快適なはずです。

これに関する注目すべき例は、先日の 2019 Commerce Award for Publishers(The CAPS)の Best Mobile Article 部門で受賞した New York Media です。受賞した記事は、The Strategist に掲載された、マーケットで入手できる最高のバイブレーターのまとめでした。これは口に出さないものというタイトルのシリーズ記事の一部で、誰にとっても必要であるにもかかわらず、人には聞きにくい衛生、性、身体機能に関連した最高の品物を探しておすすめする内容です。

AMP コンテンツを収益化してみませんか

Skimlinks JavaScript と同じように、Skimlinks AMP 統合では AMP ページに数行のコードを適用するだけです。必要なのはコードを一度インストールすることだけで、他には何もする必要はありません。リンクは自動的にアフィリエイト化され、AMP 記事から収益を得られるようになります。インストールしてしまえば、メンテナンスもアップデートも必要ありません。

「現在収益化していない AMP トラフィックがあるなら、このシンプルで効果的なソリューションがぴったりです。わずかな時間をかけて 1 回導入するだけで、あとは何の心配もいりません。この拡張機能は、簡単に利用できる受動的収益源を提供してくれました。連携しているあらゆるパートナー広告主で収益化が実現しています」 VerticalScope、コマース担当ジェネラル マネージャー、Kendal Clarke 氏

The CAPS の Best Mobile Article の受賞者の言葉を引用しましょう。 「コンテンツを公開するのに Skimlinks AMP 拡張機能を使わない人がいるなんて、想像できません」
Skimlinks のサイト運営者は、Publisher Hub からこの AMP スクリプトにアクセスできます。

まだ Skimlinks を使っていないサイト運営者は、すぐに登録してください


Reviewed by Chiko Shimizu - Developer Relations Team

この記事は Nadine Wang による Google Ads Developer Blog の記事 "AdFormat Change in AdWords API and Google Ads scripts Starting January 31, 2020" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

2020 年 1 月 31 日より、AdWords APIGoogle 広告スクリプトで、Geo Performance ReportAdFormatUNKNOWN を返すようになります。AdFormat を使用している他のすべてのレポートは、影響を受けません。Google Ads API にはこのフィールドが存在しないので、影響を受けません。

以下の項目を使っている場合は、コードをアップデートしてください。
AdWords API Google Ads API Google 広告スクリプト
GEO_PERFORMANCE_REPORTAdFormat 影響なし GEO_PERFORMANCE_REPORTAdFormat

コードをアップデートするにあたって質問がある方は、Google Ads API および AdWords API フォーラムか、Google 広告スクリプト フォーラムからご連絡ください。


Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team

この記事は Stan Grinberg による Google Ads Developer Blog の記事 "Conversion reporting issues for November 11 through November 20" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


アップデート(2019 年 11 月 27 日太平洋標準時 15:00): non-last クリック属性モデルを使っている広告主で、11 月 11 日から 11 月 20 日(太平洋時間)に発生したコンバージョンについて、Google 広告レポートに影響する問題が発生していました。現在、この問題は修正され、Search Query Performance、Geo Performance、Keywordless Query、Keywordless Category の各レポートを含むすべてのレポートが正しいデータになっています。

non-last クリック属性モデルを使っている広告主で、11 月 11 日から 11 月 20 日(太平洋時間)のコンバージョンについて、Google 広告レポートに影響する問題が発生していました。現在、この問題は修正され、正しいデータになっています。

11 月 20 日午後 9:00(太平洋標準時)以降に AdWords APIGoogle Ads APIGoogle 広告スクリプトのいずれかを使って次の表のいずれかのフィールドまたはそれらから派生したフィールドのデータをダウンロードした方は、システムに正しくないレコードが格納されている可能性があります。正確なコンバージョン レポートを保証するため、影響を受けた項目を再ダウンロードしてください。

この問題を解決する間、お待たせいたしまして申し訳ありませんでした。



AdWords API Google Ads API ベータ版
Conversions
ConversionValue
ConversionRate
ValuePerConversion
CostPerConversion
AllConversions
AllConversionValue
AllConversionRate
ValuePerAllConversion
CostPerAllConversion
CurrentModelAttributedConversions
CurrentModelAttributedConversionValue
ValuePerCurrentModelAttributedConversion
CostPerCurrentModelAttributedConversion
metrics.all_conversions
metrics.all_conversions_from_click_to_call
metrics.all_conversions_from_interactions_rate
metrics.all_conversions_from_interactions_value_per_interaction
metrics.all_conversions_value
metrics.all_conversions_value_per_cost
metrics.conversions
metrics.conversions_from_interactions_rate
metrics.conversions_from_interactions_value_per_interaction
metrics.conversions_value
metrics.conversions_value_per_cost
metrics.cost_per_all_conversions
metrics.cost_per_conversion
metrics.cost_per_current_model_attributed_conversion
metrics.cross_device_conversions
metrics.current_model_attributed_conversions
metrics.current_model_attributed_conversions_from_interactions_rate
metrics.current_model_attributed_conversions_from_interactions_value_per_interaction
metrics.current_model_attributed_conversions_value
metrics.current_model_attributed_conversions_value_per_cost
metrics.value_per_all_conversions
metrics.value_per_conversion
metrics.value_per_current_model_attributed_conversion


Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team

この記事は Google Cloud プロダクト マネージャー、Christiaan Brand による Google Online Security Blog の記事 "Using a built-in FIDO authenticator on latest-generation Chromebooks" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

先日、最新世代の Chromebook の Chrome 76 以降で、ハードウェアベースの Titan セキュリティを活用したビルトイン FIDO 認証システムを有効にするオプションが提供されることをお知らせしました。企業の管理者は、サポート対象となるサービス(例: G Suite、Google Cloud Platform)において、エンドユーザーが端末の電源ボタンを使って特定の種類のアカウント乗っ取り攻撃を防ぐ操作を許可できるようになりました。ただし、この機能はデフォルトで無効になっています。管理者は、Google 管理コンソールで DeviceSecondFactorAuthentication ポリシーを変更して有効化できます。

この機能について詳しくご説明する前に、まずは FIDO テクノロジーによって解決できる主なユースケースを見てみましょう。続いて、この新しい拡張機能が企業の組織をサポートできる高度な要件をどのように満たしているのかについて確認します。

主なユースケース

FIDO テクノロジーは、以下をサポートすることにより、リライング パーティ(インターネット サービスとも呼ばれます)が 3 つの個別のユースケースに関する問題を解決することを目指しています。
  1. 新しい端末でサービスに初めてログインする際のフィッシング攻撃を防ぐ。
  2. 既にログインしている端末で、サービスに対してユーザーが本人であることを再検証する。 
  3. ユーザーが接続に使っている端末が以前にログインした端末と同じであるかを確認する。通常、これは企業で必要とされる。 
セキュリティのプロなら、3 番目のユースケースを 2 番目の特殊な例と解釈するかもしれません。しかし、この 2 つにはいくつかの違いがあります。次に示すのは、その点に少し踏み込んだ内容です。
  • ケース 2 で FIDO テクノロジーが解決しようとする問題は、端末に格納された秘密鍵のロックを解除してユーザーが本人であることを再検証することです。
  • ケース 3 では、FIDO テクノロジーは以前に作成したキーが元の端末にまだ存在するかどうかを確認します。その際、ユーザーが誰であるかという証拠は一切使われません。

ユースケース 1 の仕組み: ローミング セキュリティ キー

このユースケース全体が今まで認証したことのないまったく新しい端末にログインする前提なので、ユーザーが FIDO セキュリティ キー(取り外し可能、クロスプラットフォーム、またはローミング認証システム)を持っている必要があります。この定義によれば、Chrome OS 端末のビルトイン FIDO 認証システムはこの要件を満足できません。以前に設定されていない限り、ユーザーが本人かどうかを検証できないからです。初回のログイン時に、ユーザーが本人かどうかは、以前にアカウントに結びつけられたセキュリティ キー(Google の Titan Security Key など)が存在することによって検証されます。
Titan Security Key 


ユーザーのログインが成功すると、セキュリティ キーはユーザーがログインした端末を信頼します。通常、Cookie などのトークンを端末に配置することによって、この端末で既にユーザーが 2 要素目の認証を済ませていることをリライング パーティが「覚えておける」ようにします。この手順が完了すると、この端末で物理的な 2 要素目を要求する必要はなくなります。Cookie が存在することは、リライング パーティにとってこの端末が信頼できるという証しだからです。

必要に応じて、既に認識されている端末(たとえば金融サービス企業など、特に機密性が高く規制が厳しいサービス)のユーザーが正しいユーザであるかを検証することを定期的に要求するサービスもあるかもしれません。ほぼすべての場合、再認証の際に知識要素(パスワードなど)に加えて 2 要素目も再提示することを求める必要はないでしょう。この操作は既に初回認証で行っているからです。

なお、Chrome OS 端末では、ログインしていないときのデータは暗号化されます。これにより、悪意のあるアクセスに対してデータの保護を強化できます

ユースケース 2 の仕組み: 再認証 

ユースケース 2 はよく「再認証」と呼ばれ、同じユーザーが以前に検証した端末からサービスを使用していることをリライング パーティが再検証できるようにするものです。主にこれが発生するのは、パスワードの変更など、特に機密性が高いアクションを実行する場合や、金融サービス企業などの規制が厳しいサービスを使用する場合です。この場合、ビルトインのバイオメトリック認証システム(例: 指紋認証センサー、Android 端末の PIN など)を登録できます。こういった認証システムは、対象のサービスに対してユーザーが本人であることを簡単に再検証できる方法を提供します。実際、Android 端末では、いくつかの Google サービスに対してこのユースケースが最近有効化されました

さらに、こういった特定のソリューションには、セキュリティ面のメリットが存在します。つまり、リライング パーティは以前に発行された Cookie だけを信頼する必要はなく、(バイオメトリックを通して)適切なユーザーが存在することや、特定の端末で特定の秘密鍵が利用できることを検証できます。この検証は、ハードウェアに格納された鍵マテリアル(例: Pixel Slate の Titan セキュリティ)に基づいて行われることもあります。これは、リライング パーティを利用しているのが適切な端末の適切なユーザーであることを示す強力な要素になり得ます。

ユースケース 3 の仕組み: ビルトイン端末認証システム

最新世代の Chromebook のビルトイン FIDO 認証システムは、ユーザーが以前にログインした端末とリライング パーティを使用している端末が同じであるかを検証する際の課題を解決するために役立ちます。

先ほど、ユーザーが以前に認証されたことを覚えておくために、リライング パーティは初回のログイン時に Cookie やトークンをユーザーの端末に配置するのが一般的だと説明しました。端末に不正なソフトウェアが存在するなど、状況によっては、このトークンが持ち出される可能性もあります。定期的に「ビルトイン認証システムのタッチ」を求めれば、リライング パーティは以前にトークンを発行した正しい端末からの操作であることを認識できます。また、FIDO 認証システムは秘密鍵の持ち出しに対する保護が強化されているので、トークンが別の端末に持ち出されていないことを検証する際にも役立ちます。そのため、このシステムはハードウェア自体に格納されるのが一般的です。たとえば、最新世代の Chromebook(例: Pixel Slate)の場合、ハードウェアベースの Titan セキュリティによって保護されています。

Pixel Slate 端末にはハードウェアベースの Titan セキュリティが組み込まれている 

Chrome OS の実装では、FIDO の鍵のスコープは特定のログイン ユーザーに制限されています。つまり、実質的に端末上のすべてのユーザーにそれぞれ独自の FIDO 認証システムが必要で、ユーザーは境界を越えたアクセスはできません。このユースケースは、企業環境にとりわけ役立つと考えています。この機能がデフォルトで有効になっていないのはそのためです。管理者は、Google 管理コンソールを使って有効化できます。

ユーザーには、Titan Security KeyAndroid スマートフォン などのプライマリ FIDO セキュリティ キーを持つことを強くおすすめします。これは、G Suite でサポートされている「FIDO 再認証」ポリシーと組み合わせて使うとよいでしょう。
Google 管理コンソールでビルトイン FIDO 認証を有効化する

ビルトイン FIDO 認証システムをサービスの「セキュリティ キー」として Chrome OS 端末に登録することも技術的には可能ですが、別のマシンからサービスにログインする必要が生じた際にアカウントがロックアウトされるリスクが増すことになるので、避けた方がよいでしょう。

サポート対象の Chromebook

最新世代の Chromebook の Chrome 76 以降で、ハードウェアベースの Titan セキュリティを活用したビルトイン FIDO 認証システムを有効にするオプションが提供されます。Chromebook でこの機能を有効にできるかどうかを確認するには、chrome://system に移動して「tpm-version」エントリを確認します。「vendor」が「43524f53」であれば、Chromebook で Titan セキュリティが使われています。

Chromebook で chrome://system に移動する

まとめ

端的にご説明すると、この新しい拡張機能は、ユーザーが接続に使っている端末が過去にログインした端末と同じであることを確認したい企業に価値を提供できると、私たちは確信しています。しかしほとんどのユーザーは、アカウントのロックアウトを回避するために、Titan Security KeyAndroid スマートフォン、または他のベンダーのセキュリティ キーなどのローミング FIDO セキュリティ キーを使うべきです。

Reviewed by Eiji Kitamura - Developer Relations Team





2018 年より日本で開催している Google Play 主催の Indie Games Festival は、世界中のインディーゲームデベロッパーの情熱とイノベーションを称えるイベントです。今年の Indie Games Festival 2019 では、数多くのインディーゲーム作品をご応募いただきました。

来年 2020 年 に、本コンテストの 3 回目となる Google Play  Indie Games Festival 2020  の開催が決定しました。募集開始時期や詳細なスケジュールおよびルールは年明け 1 月上旬に本ブログでお知らせします。なお、ファイナルイベントは 4 月下旬の開催見込みです。どうぞご期待ください。




Posted by Hidenori Fujii - Google Play Developer Marketing APAC


Google Cloud Japan は 2020 年 1 月 30 日 (水)、開発エンジニア、インフラ エンジニア、運用エンジニア向けに「Google Cloud Anthos Day - Kubernetes を使った最新の開発アプローチを学ぶ」を開催いたします。

マイクロ サービス、DevOps、コンテナの利用やクラウドネイティブなアプリケーションの先進事例について学ぶエンジニア向けイベントです。

実際に Kubernetes 環境でアプリやサービスの開発を実践する先進企業をお迎えし、それぞれのアプリケーションのモダナイゼーションや、Kubernetes の事例についてお話しいただきます。また、深い専門知識をもつ Google Cloud のエンジニアが、Google Kubernetes Engine (GKE) をはじめとした Google Cloud Platform を利用し、どのようにアプリやサービスのコンテナ化を行うのか、開発、運用の実際にについて解説します。

Kubernetes を使った最新の開発アプローチを学ぶ絶好の機会です。マイクロ サービス、DevOps、コンテナの利用やクラウドネイティブなアプリケーションの先進事例に興味をお持ちのエンジニアの方はぜひご参加ください。


お申し込みはこちら

https://goo.gle/anthosdaysn2


◆ 開催概要 ◆

名称: Google Cloud Anthos Day
日程: 2020 年 1 月 30 日(木)
時間: 13:00 - 18:30
対象: 開発エンジニア、インフラ エンジニア、運用エンジニア
定員: 700 名
会場: ベルサール渋谷ファースト
    〒150-0011 東京都渋谷区東 1-2-20 住友不動産渋谷ファーストタワー


登壇企業(予定):
  • アサヒプロマネジメント株式会社
  • 株式会社イーシーキューブ
  • 株式会社NTTドコモ
  • 株式会社コロプラ
  • 株式会社日本経済新聞社
  • ふくおかフィナンシャルグループ
  • 株式会社プレイド
  • 株式会社ユーザベース

※ 参加費 無料、事前登録制

多数の皆様のお申し込みをお待ちしております。



Posted by Takuo Suzuki - Developer Relations Team

この記事は Google の Google Maps Platform Developer Advocate である Angela Yu による Google Maps Platform Blog の記事 " How to add a store locator to your website before the holidays" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


ホリデー シーズンが近づく中、お客様が円滑にお買い物ができるようにするため、できる限りの対策を講じることが望まれます。その第一歩が、ウェブサイトやオンラインストアに、店舗検索機能を設けることです。店舗検索機能によって、1 店舗または全店舗の所在地をサイト上に表示することができるため、お客様は、自分の現在地に最も近い店舗はどこかを知ることができます。こうした見込み客が最も近い店舗の場所を容易に知ることができれば、そのお客様が店の扉を開けて入店するということへ一歩近づいたといえます。

E コマース プラットフォームに店舗検索機能を追加する


ウェブサイトまたはオンラインストアが、標準的な E コマース プラットフォームを使っている場合、店舗所在地情報を入力することができる店舗検索用のプラグインを使うことで、こうしたサイト用の店舗検索機能を作成できます。店舗を Google マップに表示するプラグインを使っている場合、API キーを入手して設定する必要があるかもしれません。

ウェブサイトに 1 店舗のみの所在地情報と簡単な地図を追加する場合


コードを書かずに、地図上に 1 店舗のみを表示することもできます。Embed API は、iframe を使って、YouTube 動画の共有と同じように、ウェブサイトによくある何種類かの地図を挿入することを可能にします。Embed API クイックスタートガイドですぐに作成することができます。Google マップ上で店舗の所在地を特定すると、御社のウェブサイトに貼り付けるコードが自動生成されます。ウェブサイトに、店舗の所在地やそこまでの行き方を教えてくれるボタンのついたマップを組み込むことができます。他の方法と同じく、API キーが必要です。

複数の店舗所在地、行き方、その他情報を表示できる店舗検索機能を追加する場合


ウェブサイトが JavaScript で書かれたものならば、店舗検索機能を追加するには、(JavaScript に関するノウハウは一切持たず)プラグインを使うか、またはカスタマイズした店舗検索機能の作り方をまとめた Google の店舗検索用コードラボを参考に作成してみましょう。以下に、コードラボの主要要素と、店舗検索機能をサイト内に組み込む方法を説明します。

最初に、コードをダウンロードして、 架空の事業のために仮の店舗検索機能を作成します。このチュートリアルで使うすべてのファイルは、 /src ディレクトリにあります。

次に、2 か所ある YOUR_API_KEY に、有効な API キーを記入します。  

  1. index.html の一番下にあるスクリプト用タグは、Maps JavaScript API を読み込む所です。API キーを作成する方法は、こちらの動画による説明をご覧ください。
    <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=visualization"></script>
    
  2. app.js 内で YOUR_API_KEY を探し、その部分を API キーで置き換えます。
    const apiKey = 'YOUR_API_KEY';

これによって、単純なウェブサーバーを皆さんのマシン上で稼働させることができます。このコードが実際に動いているところを見て、皆さんの事業目的に合わせてカスタマイズしてみましょう。 コマンドラインから、今ダウンロードしたコードのディレクトリを開き、 /src フォルダに移動します。次に、コマンドラインで以下のコマンドを入力してウェブサーバーを起動してください。

 $ python -m SimpleHTTPServer 8000

以上で、http://localhost:8000.で、ウェブブラウザのページを閲覧できます。コマンドラインに戻り、Control+C キーを押して、ウェブサーバーを停止します。 次の画面が見えるはずです。



JSON 形式の店舗リストをカスタマイズする

stores.json ファイルで、この架空の店舗の情報を書き換えます。GeoJSON は、JavaScript Object Notation (JSON) 形式で店舗の地理データを保存する方法です。情報を入力しやすく、Google Maps API との相性も良い形式です。以下は、JSON 形式で 1 つの店舗を表示する例です。

  {
 "geometry": {
  "type": "Point",
  "coordinates": [-0.1428115,
   51.5125168
  ]
 },
 "type": "Feature",
 "properties": {
  "category": "patisserie",
  "hours": "10am - 6pm",
  "description": "Modern twists on classic pastries. We're part of a larger chain of patisseries and cafes.",
  "name": "Josie's Patisserie Mayfair",
  "phone": "+44 20 1234 5678",
  "storeid": "01"
 }
}


上記は、各店舗の情報を探すために JavaScript が解釈できる情報のリストです。JSON データの中で最も重要な部分は、 geometry (幾何学)属性の coordinates (座標)です。これらの地理的座標は Google に、地図上のどこにマーカーを置くべきかを知らせます。Geocoding API ドキュメント内の、デモを使って、各店舗の所在地の座標を取得してください。店舗の住所を入力後、”ジオコード(Geocode)” ボタンを押すと、”場所(Location)”と書いてある所の横に、その住所の座標を含んだパネルが表示されます。コンマより前の数値は緯度、コンマより後の数値は経度を表します。これらの数値で、その店舗の所在地に関する JSON 入力値の coordinates 属性に入った 2 つの数値を書き換えてください。多数の住所がある場合、Geocoding API を直接呼び出した方がよいでしょう。リクエストの例をドキュメントの中に記しました。



オブジェクトの properties の項目には、入力したい情報項目を自由に選んで設定できますが、リストに入力されるすべてのケースが、同一の属性セットを持つようにしてください。それらの情報をもとに各店舗の詳細情報が表示され、ユーザーはその中から、好きな店舗を選べます。店の名前や営業時間などの店に関する詳細情報は、場所をクリックするとインフォ ウィンドウに表示されます。



図に示すように、地図上の地点の一つについてのインフォ ウィンドウを見ることができます。 詳細なコードはコードラボの手順 4 をご覧ください。地図上に複数のマーカーを表示し、マーカーをクリックするとインフォ ウィンドウが開いて店舗の属性を表示するように、クリック イベントを追加しています。

サンプル用の架空の店ではなく、実際の店舗周辺の地図を表示するために地図のフレーム(枠)をカスタマイズしたいこともあるでしょう。地図作成用の initMap 関数の一行目が、地図の中心およびズームレベルを設定する箇所です。御社のすべての店舗に関して、その中心近くの緯度、経度を選んでください(Google マップを使って適切な中央の点を見つけ、右クリックして”ここの座標は?(What's here?)”を選ぶと、地図上のその地点の緯度と経度が得られます)。



地図の center: 属性の lat:(緯度)および lng:(経度)の数値を、店舗の地理座標に置き換えて、ズームのレベルを調整して(1 から 20)、全店舗が入るズームレベルを見つけてください。ズームレベル 1 は世界全体、ズームレベル 14 は、おおよそ 1 都市が表示されます。コードに変更を加えるたびに保存し、 http://localhost:8000 のコマンドラインでウェブサーバーを再起動して、変更が反映されていることを確認しましょう。

  function initMap() {
  // Create the map.
  const map = new google.maps.Map(document.getElementById('map'), {
    zoom: 7,
    center: {lat: 52.632469, lng: -1.689423},
  });
この時点で、カスタマイズしたロゴ、マーカー、地図のスタイルを追加して、地図全体をカスタマイズできます。 詳しくはコードラボの手順 5 をご覧ください。サンプルコードのロジックでは、ストーリーの”カテゴリ”属性が”パティスリー(patisserie)” になっている場合は紫のロゴマーカー、”カテゴリ”属性が”カフェ(cafe)” になっている場合は緑のロゴマーカーを表示するようにしています。

店舗検索機能を作成する際に重要なことは、ユーザーが自分の現在の居場所に基づいて検索できるようにすることです。なお、以下に説明する手順のために、独自の店舗識別子となる属性を各店舗に設定しておいてください。サンプルコードの中で、”店舗 ID” という属性を定義しており、各店舗に独自の番号を割り振っています。

店舗検索機能を有効にする

すべての店舗の所在地を入れた地図が完成しました。これで、ユーザーから与えられる地点データを起点として、御社の店舗がどれほど近いかを知ることができます。 プレイス オートコンプリートサービスを使えば、ユーザーは住所入力をさらに簡単に行えます。

ボイラープレート(定型)的スタイルを設定することで、ユーザーがタイプするのと同時に、検索ボックスは自動的に複数の住所候補を提案します。ユーザーは、その候補の中から、自分が望む住所を選択することができます。



この機能を利用するには、ウェブページに以下のテキストの入力フィールドとプレイス オートコンプリート機能を追加するコードを追加してください。

const input = document.createElement('input');
const options = {
    types: ['address'],
    componentRestrictions: {country: 'gb'},
    fields: ['address_components', 'geometry', 'name'],
};

const autocomplete = new google.maps.places.Autocomplete(input, options);
場所の種類(この場合、住所で、施設ではありません)を絞り込んだり、特定の地域(この場合は英国)に限定するオプションを設定できます。fields の欄に、ユーザーが候補の中から 1 つを選んだ際に取ってくる Place Details (その地点に関する詳細情報) を定義します。なお、プレイス オートコンプリート検索バーのすべてのオプションについてはドキュメントを参照してください。

ユーザーの居場所が分かったので、各店舗からユーザーまでの距離を計算できます。 まずは、地図の中心をユーザーが選択した住所に合わせます。次の手順に従ってください:

  1. 地図の中心を、ユーザーが選択した住所へと移動する
  2. 1 の住所から各店舗の座標までの距離を測る
  3. 2 で求めた距離が短い順で表示する。ここで、独自の店舗 ID という属性を使います。

各手順を完了するには、ここに記したコードが必要ですが、それについてはコードラボの手順 6 および 7 で詳述しています。

店舗検索機能を公開する

サンプルコード内の index.html ファイルは、ウェブページに地図を載せるために最小限必要なコードを含んでおり、ローカルマシンの上で動いていました。インターネット上のウェブサイトに統合するためには、以下の手順に従ってください:

  1. 御社のウェブサイトで通常通りに新規ページを作成し、関連するところに <div id="map"></div> を挿入します。その属性または CSS スタイルのいずれかに、div のサイズを指定することを忘れないでください。 
  2. 2 つの <script> タグを含む index.html の他の部分を、公開するウェブページのHTML ファイルへとコピーします。 
  3. 最後に、ウェブページが保存されているディレクトリに、 app.js ファイルおよびカスタマイズした stores.json ファイルをコピーします。

使用する E コマース プラットフォームの種類、技術的専門知識のレベル、店舗数に関わらず、ウェブサイトに店舗検索機能を追加するための、ニーズに合った簡単な方法やアプローチが存在しますので、ぜひお試しください。

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

Posted by 丸山 智康 (Tomoyasu Maruyama) - Google Maps テクニカルアカウントマネージャ

この記事は Google の Product Manager, Google Maps Platform である Serena Chang による Google Maps Platform Blog の記事 " New features for contextualized gameplay and new games built with Google Maps" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。



すでに、Google Maps Platform を使ったモバイルゲームは 10 タイトルもリリースされており、11 月だけで世界中で毎日 800 万人のアクティブ ユーザーがプレイしています。本記事では、より没入感のある魅力的なゲーム体験を実現するための新機能と Google Maps Platform で構築された最新のゲームについてご紹介します。

ロケーション コンテキストを強化する 3 つの新機能

ゲームプレイヤーは、ランドマークから人気のスポット、または人が集まる場所まで、さまざまな場所で位置情報ゲームをプレイすることを望んでいます。そこで Google は、博物館、庭園、アートギャラリーなど、芸術的な関心の対象となる施設に対して、プレイが可能となるようなランキングカテゴリを新たに追加しました。

もう 1 つの追加事項である Playable Territories は、現実世界を仮想の「ゲームエリア(領域)」に分割できます。この機能は、川など自然の特徴に合わせた境界線や道路で世界をいくつかの地域に分割します。これらの新機能をどのように使うかは皆さん次第です。たとえば、プレイヤーはその領域を制圧するために競ったり、地域ごとに異なる種類のモンスターを生息させることもできます。

さらに、ゲームの内容によって、一般的に他の場所よりも混雑している(または混雑していない)場所へとプレイヤーを誘導する機能も追加しました。たとえば、混雑した場所を好む場合、プレイできる場所はバス停や駅、ショッピングモールになりますし、それほど混雑していない場所であれば公園や静かな近隣の通りになるでしょう。

視覚背景を拡大するズームコントロール

新しい Mixed Zoom 機能は、プレイヤーに近いエリアは高精細でレンダリングしますが、そこから遠く離れたエリアは徐々に低い精度で表示します。遠くに地平線がある距離依存ズームレベルでベクトルタイルをレンダリングすると、数千メートル以上に及ぶマップを一度に生成するのに役立ち、処理コストはかなり少なくて済みます。そしてプレイヤーのゲームにおけるエクスペリエンスが向上が期待できます。また、鳥瞰図だけではなく、より広いエリアにズームアウトできるゲームの世界を作り上げることもできます。

Google Maps Platform を使った新しいタイプのゲームは進化しています。最新のリリースをぜひご覧ください。

ドラゴンクエストウォーク

スクウェア・エニックスの最新モバイルロールプレイングゲームであるドラゴンクエストウォークは、現実にある場所へ歩いて行き、スマートフォンを使用してゲームをプレイします。従来のドラゴンクエストシリーズと同様に、プレイヤーは自分のキャラクターを作成し、クエストをクリアしつつモンスターと戦います。プレイヤーは、日常的な活動の中でクエストとなる次の目的地を決めることができます。ドラゴンクエストウォークのダウンロード数は、リリース後の 2 か月で 1,000 万ダウンロードを達成しました。ドラゴンクエストは、1986 年にスクウェア・エニックスによって最初に公開されて以来、日本で非常に人気のあるシリーズです。2019 年には、ドラゴンクエストシリーズの販売数は世界累計で 7,800 万本を突破しました。

Men In Black Global Invasion

Ludare Games Group は、コロンビアピクチャーズと共同で、2019 年 8 月に Men in Black: Global Invasion をリリースしました。プレイヤーは MIB に雇われて特別なエージェントとなり、銀河系の脅威から惑星を守るという使命を担い、アイコニックな黒いスーツとサングラスに身を包みます。彼らは現実世界の地図をナビゲートして悪いエイリアンを見つけ、Noisy Cricket といったおなじみの MIB 兵器を使用して AR(拡張現実)の戦闘を戦います。エイリアンを集めながら、エージェントは次々に襲ってくる地球外生命体との戦いにチームで挑みます。


Krikey アプリ

Wingspan は、サンフランシスコを拠点とするアプリ開発者 Krikey が提供する 2 つの位置情報 AR ゲームのうち最初のものです。これは Stonemaier Games 社が販売する、受賞歴もあるベストセラーのボードゲームをヒントに開発された現実世界のゲームです。プレイヤーは鳥類学者もしくは鳥類科学者として、手書きで美しくアニメーション化された鳥をモバイルベースの AR を介して収集し保護します。プレイヤーは、ソーシャルメディアで AR ビデオを共有することもできます。Wingspan は、鳥と環境の保護に 114 年間取り組んできた非営利団体、The National Audubon Society がスポンサーとなっています。Krikey はまた、The Ellen Degeneres Wildlife Fund と協力してロケーションベースの Gorillas を 10 月に発売しました。誰もがルワンダまで旅行することはできませんが、このアプリを使えば誰でも AR のゴリラトレッキングに行けます。



以上の新しい位置情報ゲームをダウンロードして、現実の世界でゲームを楽しんでください。

Google Maps Platform ゲームソリューションの詳細は、Google の Web サイトをご覧ください。ご質問やご意見はページ右上の「お問い合わせ」より承っております。

Posted by 丸山 智康 (Tomoyasu Maruyama) - Google Maps テクニカルアカウントマネージャ

この記事は Google の Software Engineer である Sonia Rode による Google Maps Platform Blog の記事 " How to calculate distances on a map with the Maps JavaScript API" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

地図を見るだけで、ある地点について把握できることはたくさんあります。その近くに何があるのか、その場所までの距離は比較的近いのかどうか。地図の縮尺を見ればその目的地までのおおよその距離もわかります。さらに、Google Maps Platform を使えば、2 地点間の距離を直線距離と最短経路の長さとして定量化することができます。これらの 2 つは異なるアプローチであり、ユーザーの異なる問題やアクションを解決します。本記事では、上述の複数地点間の距離の求め方について、直線距離や最短経路がどのような時に必要となるのか、どのようにして使うのかについて説明します。

それでは実際に、JavaScript を使用して、地図上にいくつかの距離をプロットしてみましょう。距離を計算するには出発地点と到着地点の 2 地点が必要となので、Google マップに 2 つのマーカーを追加してみます。

<!DOCTYPE html>
<html>
  <head>
    <style>
       /* Set the size of the div element that contains the map */
      #map {
        height: 400px;
        width: 600px;
       }
    </style>
  </head>
  <body>
    <!--The div elements for the map and message -->
    <div id="map"></div>
    <div id="msg"></div>
    <script>
// Initialize and add the map
var map;
function initMap() {
  // The map, centered on Central Park
  const center = {lat: 40.774102, lng: -73.971734};
  const options = {zoom: 15, scaleControl: true, center: center};
  map = new google.maps.Map(
      document.getElementById('map'), options);
  // Locations of landmarks
  const dakota = {lat: 40.7767644, lng: -73.9761399};
  const frick = {lat: 40.771209, lng: -73.9673991};
  // The markers for The Dakota and The Frick Collection
  var mk1 = new google.maps.Marker({position: dakota, map: map});
  var mk2 = new google.maps.Marker({position: frick, map: map});
}
    </script>
    <!--Load the API from the specified URL -- 
    <remember to replace YOUR_API_KEY-->
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?
    key=YOUR_API_KEY&callback=initMap">
    </script>
  </body>
</html>


地図上には、セントラルパークとその近くにある 2 つのランドマークが示されています。ジョン レノンの家としておそらく最も有名なダコタと、アートギャラリーのフリック コレクションです。



この 2 か所がニューヨーク市のツアーに含まれているとします。では、どれだけ離れているのでしょうか。約 200 年前の数値計算でこの質問に答えます。

緯度と経度から直線距離を計算する

距離を計算する最も簡単な方法は、数学をベースにしたものです。Haversine 公式として知られていますが、球面三角法を使用して 2 点間の大円距離を決定します。この直線距離近似の公式に関する詳細はウィキペディアにあります。

計算結果を可視化するために、2 つのマーカーの間にポリラインを描いてみましょう。このために、JavaScript でマーカーの後に次の行を加えます。

  // Draw a line showing the straight distance between the markers
  var line = 
      new google.maps.Polyline({path: [dakota, frick], map: map});


地図をリロードすると、セントラルパークの一方の側からもう一方の側まで、2 つのマーカーを接続する濃い色の斜めの線が表示されます。Haversine 公式を JavaScript で定義することで、2 つのマーカー間の直線距離であるポリラインの長さを決定することができます。



initMap 関数の前に、この関数を JavaScript に追加します。

  function haversine_distance(mk1, mk2) {
      var R = 3958.8; // Radius of the Earth in miles
      var rlat1 = mk1.position.lat() * (Math.PI/180);
       // Convert degrees to radians
      var rlat2 = mk2.position.lat() * (Math.PI/180);
       // Convert degrees to radians
      var difflat = rlat2-rlat1; // Radian difference (latitudes)
      var difflon = (mk2.position.lng()-mk1.position.lng()) 
                  * (Math.PI/180); // Radian difference (longitudes)

      var d = 2 * R 
      * Math.asin(Math.sqrt(Math.sin(difflat/2)*Math.sin(difflat/2)
      +Math.cos(rlat1)*Math.cos(rlat2)
      *Math.sin(difflon/2)*Math.sin(difflon/2)));
      return d;
    }


この関数は 2 つのマーカーオブジェクトをもとに、2 地点間の距離をマイルで返します。キロメートルにするには、R = 6371.0710 を設定します。Haversine 公式を適用する前に、関数は各マーカーの緯度と経度のポイントをラジアンに変換します。 関数を呼び出してマップの下に距離を記載するには、initMap のポリラインの下にこのコードを追加します。

  // Calculate and display the distance between markers
  var distance = haversine_distance(mk1, mk2);
  document.getElementById('msg').innerHTML 
      = "Distance between markers: " + distance.toFixed(2) + " mi.";
マップをロードすると、次のように表示されます。



これで、ダコタとフリック コレクションの間の直線距離が 0.60 マイルであることがわかりました(JavaScript の toFixed 関数を使用して小数点以下 2 桁は四捨五入しています)。

もちろん、鳩でもない限り、2 つの場所の移動距離はもっと長くなるでしょう。地図を見ていただければわかるように、セントラルパークを横切る道路には小道さえもありません。Haversine 公式は基本的な近似には役立ちますが、多くのユースケース、特に都市内では不十分です。より正確な移動距離を知るには、Maps JavaScript API の別の機能を使用する必要があります。

Maps JavaScript API でルートを検索する

直線距離が適切でない場合、移動距離を決定するためには公式以外のものが必要になります。運転ルートは Google マップで最も人気のある機能の 1 つですが、この機能が API を介して利用できるようになったのは当然のことかもしれません。サーバー側のリクエストに対しては Directions API を、ウェブ上のクライアント側のリクエストに対しては Maps JavaScript API の Directions サービス を使用できます。

すでに地図はセットしてあるので、以下の initMap 関数をコピー&ペーストしてください。

  let directionsService = new google.maps.DirectionsService();
  let directionsRenderer = new google.maps.DirectionsRenderer();
  directionsRenderer.setMap(map); // Existing map object displays directions
  // Create route from existing points used for markers
  const route = {
      origin: dakota,
      destination: frick,
      travelMode: 'DRIVING'
  }

  directionsService.route(route,
    function(response, status) { // anonymous function to capture directions
      if (status !== 'OK') {
        window.alert('Directions request failed due to ' + status);
        return;
      } else {
        directionsRenderer.setDirections(response); // Add route to the map
        var directionsData = response.routes[0].legs[0]; 
      // Get data about the mapped route
        if (!directionsData) {
          window.alert('Directions request failed');
          return;
        }
        else {
          document.getElementById('msg').innerHTML += 
      " Driving distance is " + directionsData.distance.text + 
      " (" + directionsData.duration.text + ").";
        }
      }
    });
Directions サービスの呼び出しが成功すると、マップ上にルートが追加されます。また、マップの下のメッセージ部分に距離が表示されます。



運転ルートが直線距離よりもはるかに長いことは明らかです。また、応答データを掘り下げることで、走行距離(1.6 マイル、直線距離に比べて 2.5 倍)、および推定所要時間を知ることができます。応答データからの関連セクションの JSON 形式の表現は次のとおりです。

  "routes": [{
  "legs": [
    {
      "distance": {
        "text": "1.6 mi",
        value: 2619
      },
      {
        "duration": {
          "text": "9 mins",
          value: 516
        }
      }
    }
  ]
}]


この例では運転ルートを使用しましたが、ルートオブジェクトの travelMode フィールドには他の値も設定できます。Directions サービスでは、BICYCLINGTRANSITWALKING の値を設定することができます (注:”TRANST"は日本では使用できません)。適切なモードに調整し、コードを再実行して、結果がどのように変化するかをご覧ください。

どちらの距離を使用するか?



先に述べた 2 つのタイプの距離は、さまざまな状況で有効です。ユーザーに最高のエクスペリエンスを提供するには、それぞれを適切な状況で使用する必要があります。

外部サービスを呼び出さずに素早く計算するには、直線距離を使用できます。このチュートリアルで使用した Haversine 関数を組み込む必要はありますが、必要なのは、ブラウザー内で正確な結果を得るためのマップ座標だけです。ただし、その名前が示すように、単純な直線の距離になります。道路、障害物、交通状況といったものは反映されません。

もう一つが、道のりの長さです。これには、避けられない回り道やそのエリアの交通状況が考慮されます。この計算は複雑であり、道のりの長さは、Directions サービスの呼び出しを必要とします。Directions サービスは、マップ上に視覚的にプロットするためにルートの所要時間と経路を返します。

世界中の距離を測定する場合でも、町全体の距離を測定する場合でも、以上説明したアプローチは、ユーザーの周辺状況の理解や意思決定の手助けとなります。ユーザーがここからあそこまで行くことを支援するためのさらに多くのツールを調べるには、Google Maps Platform のルートに関する API 群をご覧ください。

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

Posted by 丸山 智康 (Tomoyasu Maruyama) - Google Maps テクニカルアカウントマネージャ

この記事は Google の Senior Product Manager である Eli Danziger による Google Maps Platform Blog の記事 "Beyond the Map: How we optimize maps data for our customers" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

編集者注記:このシリーズでは、エンドユーザー向けビジネスおよびエクスペリエンスの構築をサポートするために、Google がどのように世界を地図化しているのか、その舞台裏をご紹介します。


過去数か月にわたって、Google は、利用者が何かを探したり、成し遂げることを支援するために世界を地図化するさまざまな方法について紹介してきました。さらに、同じデータで位置情報のエクスペリエンスやビジネスの構築を可能にする方法にも注目をしてきました。お気づきかもしれませんが、Google は皆さんのために世界を地図化する新たな手法の開発に常に取り組んでいます。同時に、お客様のビジネスをさらに強化できるように直接協働し、地図データの改善可能な地域の特定を進めています。本記事では、ドライバや宅配業を営むお客様がビジネスの目的とユーザーの期待を確実に満たすために、Google Maps Platform が東南アジアで得た成果を詳しく見ていきます。

データの品質は、すべての顧客にとって重要ですが、オンデマンド サービスを提供する顧客にとっては、特に重要です。配車サービスにせよ、食品配達にせよ、エンドユーザーは正確な到着予定時間(ETA)を期待しています。実際にいる場所に迎えに来てくれる、問題なく夕食を配達するということです。正確でない ETA のせいで、仕事に遅れたり、冷めた夕食を配達するといった大混乱を招いてしまうと、ユーザーはそのサービスを二度と利用することはなく、他の代替手段を選ぶ可能性があります。そこで、Google は東南アジアの配車サービスや配達サービスを営む顧客固有のニーズを理解するために協働しました。地域の地図データを改善して、顧客のビジネス促進を加速させる支援として、このシリーズで述べた多くのテクノロジーを導入しました。

より多くの乗車を実現するために、道路を追加する

乗車率を増加させるために最も確実で影響力のある方法は、より多くの道路データを地図に追加することです。Google は、東南アジアの道路地図の作成において多大な取り組みをしてきました。多くの道路を追加するだけでなく、正確かつ道路の接続性に考慮したローカルな道路も地図に追加することで、確実に旅行を完了し、多くの新しい場所や Google がその地域に追加した住所に行くことができます。Google は、これまでに 8 万キロメートルを超えるローカルな道路を追加しており、その多くは二輪車用のルートです。Google は以前、自動車用の地図を作りました。しかし、二輪車用のニーズがあると分かった時、現地を調査し、郊外や地方の目的地へも無事に辿りつけるように、 Google マップが非常に重要な道路を網羅していることを確認しました。前回の記事で共有したように、Google は、引き続き地域全体の二輪車用の道路を追加していきます。





インドネシアのプカンバルにおける新道路の追加前(左)と追加後(右)

より効率的にピックアップするため、ジオコーディングを改善

お客様からのフィードバックで、Google のリバース ジオコーディングが、特定地域にあるすべての中小企業や場所の情報を正しく返さないことがあったことがわかりました。過去の記事でも説明してきたさまざまな技術や方策を使って、東南アジアの国々の何百もの住所や場所のデータを追加してきました。 こうしたデータをリバース ジオコーディングのデータベースに統合することで、住所情報が不足していた地域のサービス範囲を大幅に増やすことができました。この改善により、リバースジオコーディングの呼び出しの 95% 以上に対して、より良い結果を提供しています。改善したリバース ジオコーディングは、ユーザーが探している場所を見つけやすくし、車の乗降を容易にするとともに、食品を正しい住所へ配達することができるようになりました。






ミャンマーのマンダレー地区で住所と場所データを追加する前(左)と後(右)。多くの場所を地図化すればするほど、正確な場所の位置をリバース ジオコーディングできる可能性が高くなります。




オンデマンド型の配車サービスや配達サービスにおいて、Google は、常にお客様固有のニーズと課題を理解することに努めています。これにより、新しい地図データを取得し、既存のデータを改善し、お客様の成功を支援するのに相応しい製品を作ることができます。ストリートビュー三輪バイクを使い狭い道路をマッピングする方法から、機械学習を使って画像から情報を抽出する方法に至るまで、Google は、世界をマッピングすること、また短期間で実世界の変化を反映することに取り組みます。 Google Maps Platform に関する詳しい情報はこちらをご覧ください。ご質問やご意見はページ右上の「お問い合わせ」より承っております。


Posted by 丸山 智康 (Tomoyasu Maruyama) - Google Maps テクニカルアカウントマネージャ

前回の記事では、GDG Kyushu のメインオーガナイザーである前田恵里さんをご紹介しました。今日は、GDG Tokyo のオーガナイザーである Tomoki Katsu さんにインタビューを行いました。

GDG のコミュニティ活動に参加してから、どのような変化があったのか、Katsu さんのストーリーをお聞きください。


(右側が、今回ご紹介する Tomoki Katsu さんです)



GDG オーガナイザー インタビュー #3

Q: 自己紹介をお願いします。
GDG Tokyo オーガナイザーの Tomoki Katsu と申します。
私は新卒入社から約 5 年間モバイル、ウェブ、サーバーの各種アプリケーション エンジニア、その後はシステム全体の SE として PL をやったりしていました。今はそのときの経験を生かし、自社製品を用いて各地域の課題を IT の力で解決したり、行政や学校と連携し地域を盛り上げる活動をしています。

Q: GDG の活動に参加しようと思ったきっかけは何ですか?
エンジニアとして、技術の共有や情報リテラシーの強化をやっていくべきだと考えていました。その考えを持ちながら、いくつかコミュニティのスタッフとして活動していたのですが、仕事が忙しくなり参加できなくなっていました。
仕事が落ち着き、またコミュニティ活動を始めようと思った時、たまたま 2 年ぶりに当時 GDG Tokyo のオーガナイザーをしていた友人と再会し、その際 GDG Tokyo の運営に入らないかとお誘いいただいたのがきっかけです。

Q: GDG の活動に参加してみて、いかがですか?何か変わったことはありますか?何か面白いエピソードがあれば教えてください。
人脈は大きく変わりました。今までは、ハッカソン界隈で活動していたのですが、界隈が変われば、参加している人がこんなにも違うのかと思いました。
一番驚いたのは、GDG 石巻の fish さんと、私が一緒に仕事していた企業さんが知り合いだったことと、その、企業さんの一人が GDG Fukushima として GDG に現れたことです。世の中って狭いなーと思いました(笑)。

Q: コミュニティ活動をしていて、良かった点は何ですか?
一番は、大きなイベント運営を体験できたことです。GDG では年に一度 DevFest というコミュニティのカンファレンスを開催しており、去年はその運営に携わらせていただきました。今まで、スタッフとして参加することはあったのですが、1,000 人規模のイベントを開催する経験はなく、大変勉強になりました。


Q: これから、GDG Tokyo として、どういったことをしていきたいですか?

東京には技術コミュニティがたくさんあります。そのため、Google の技術初心者はどこに行けばいいか迷ってしまうと思います。 私はこれを例えるとき、医者にかかりたい時、症状はわかるけど、何科に行けばわからない現象と紹介しています。 
GDG は Google の技術を全般的に担っているコミュニティなので、そういう、自分のやりたいことはわかっているけど、どの技術を使えばいいのわからない方に、まずは GDG に来ていただき、情報収集をしていただければと思っています。GDG はそんな方達と各コミュニティをつなぐ、入り口になれればと考えています。 
GDG Tokyo は、これから新しい技術をキャッチアップしたり、他のコミュニティを繋ぐ場所になれるよう、技術初学者から上級者の方々まで幅広いユーザーに楽しめる勉強会やイベントを開催していきます。


Katsu さん、どうもありがとうございました。GDG Tokyo が主催する DevFest は、今週 12 月 14 日(土)と 15 日(日)の二日にわたって開催されます。詳細とお申し込みは、こちらのページをご覧ください。




皆さまのご参加を心よりお待ちしております。


Posted by Takuo Suzuki - Developer Relations Team & Mari Okazaki - Developer Community Manager

この記事は Addy Osmani、Ben Greenstein、および Bryan McQuade(Chrome チーム)による Chromium Blog の記事 "Moving towards a faster web" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

速度は、Chrome において当初から基本方針の 1 つとなってきました。ウェブ ブラウジングで瞬時表示のエクスペリエンスをユーザーに提供するという課題に、当社は絶えず取り組んでいます。その上で、読み込みが高速だと当社が考えていたあらゆるウェブページにアクセスし、さらにエクスペリエンス向上の余地について調べました。ウェブはさらに改善が可能であると私たちは考えています。サイトの読み込みが遅くなる可能性がある場合はそのことがユーザーに分かるようにし、一方で配信の高速なサイトは優遇します。

将来は、Chrome により、ユーザーにとって読み込みが速い典型的なサイトと遅いサイトを見分けるための明確なバッジを付けるようになることが考えられます。それは複数の形を取る可能性があり、当社ではさまざまなオプションを使用して実験を行い、ユーザーにとって最も価値があるものがどれかを調べる計画を立てています。

バッジが意図しているのは、読み込み遅延の履歴を見て、一般的に表示が遅くなる仕方でサイトが作成されている場合に、そのことが分かるようにすることです。さらにこれを拡張して、端末やネットワークの状態に基づき、ユーザーにとってページが遅くなりがちな場合に、それを識別できるようにすることも検討しています。

手始めに、Chrome のいくつかのサーフェスを調査する予定です。それには、読み込み画面(スプラッシュ画面)、読み込み進行状況バーおよびリンクのためのコンテキスト メニューが含まれます。後者からは典型的なサイト速度について洞察を得ることができ、ナビゲーションの前にそのことを認識できます。


高速のサイトと低速のサイトを識別するという当社の計画は、条件をだんだんと厳しくすることにより段階的に実施される予定です。長期的な目標は、高品質エクスペリエンスのためのバッジを定義することです。それには、単なる速度を超えたさまざまな兆候が含まれると考えられます。

当社では、Google でエクスペリエンスの品質ラベル付けを研究している他のいくつかのチームとの密接なコラボレーションにより、速度バッジを構築しています。 それによって、サイトの高速化を目指して最適化している場合に、そのサイトのバッジがサーフェスごとに食い違うことがないようにできると考えています。

現在、優れたユーザー エクスペリエンスの目安となるバーを設定するための当社のアプローチに大いに力を入れて取り組んでおり、あらゆるデベロッパーによって実質的に達成可能なところに落ち着くことを期待しています。今後のリリースが近づいた際にアップデートした計画を公開しますが、各サイトが最適化されるまで待つわけではありません。サイト速度改善のためにどんなチャンスを利用できるかについて学ぶためのさまざまなリソースを活用できます。

パフォーマンスを評価するには、次のサイトをチェックしてください。
  • PageSpeed Insights - サイトの速度に関するフィールド データを示し、改善のための一般的な最適化を提案するオンライン ツール。
  • Lighthouse - パフォーマンスやその他さまざまなベストプラクティスを考慮に入れ、特定のウェブサイトをどう改善できるかについて、各サイトに合わせたアドバイスを提供するラボツール
パフォーマンス関連のベスト プラクティスについて確認するには、web.dev/fast をチェックしてください。これは、ページが瞬時に読み込まれるようにする方法についてのガイドとコードラボを含む当社の学習プラットフォームです。

皆さんの働きに報いること、またサイトの典型的パフォーマンスがユーザーからよりよく見えるようにすること、それが私たちの熱い思いです。私たちのこの取り組みにより、オープン ウェブ上のさらに多くのサイトが、あらゆるユーザーに対して可能な限りベストなエクスペリエンスを達成するよう期待しています。

この記事は Google 副社長、Royal Hansen、Google Cloud および OpenTitan リード、Dominic Rizzo による Google Open Source Blog の記事 "OpenTitan – Open sourcing transparent, trustworthy, and secure silicon" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


 セキュリティは安全なインフラストラクチャから始まります。インフラストラクチャの安全性と整合性に対する信頼を高めるには、確実に信頼できる根底部分、すなわち専用のチップが重要です。

本日(元記事公開当時)は、信頼のルート(RoT)となる初めてのオープンソース チップ プロジェクト、OpenTitan についてお知らせします。これは、私たちがパートナーとともに進めているプロジェクトです。OpenTitan は高品質な RoT 設計と統合ガイドラインを提供するもので、データセンターのサーバーやストレージ、周辺機器などに利用できます。チップの設計をオープンソース化することで、透過性や信頼性が高まり、究極的には安全性も高まります。
OpenTitan ロゴ

チップの信頼の土台となる

RoT チップは、認証と検証が行われたコードを使って重要なシステム コンポーネントが安全に起動することを検証し、ハードウェア インフラストラクチャやそこで動作するソフトウェアが意図どおりの信頼できる状態を保つことを保証します。RoT チップは、以下を行うことで多面的にセキュリティに貢献します。
  • サーバーや端末が正しいファームウェアで起動し、低レベルの不正ソフトウェアに感染していないことを保証します。
  • オペレータがサーバーや端末の正当性を検証できるように、暗号学的に一意なマシン ID を提供します。
  • 暗号キーなどのシークレットを改ざんされない形で保護します。これは、物理的にアクセスできる人(例: サーバーや端末が輸送中の場合)に対しても有効です。
  • 信頼できる改ざん不可能な監査記録などのランタイム セキュリティ サービスを提供します。
この RoT チップ テクノロジーは、サーバーのマザーボード、ネットワーク カード、クライアント端末(例: ノートパソコン、スマートフォン)、コンシューマー ルーター、IoT 端末などに利用できます。たとえば、Google は専用の RoT チップ Titan を利用し、Google のデータセンター内にあるマシンが、検証されたコードによって信頼できる既知の状態から起動することを保証しています。これが私たちのシステムの信頼のルートになっています。私たちは、確実に信頼できるチップの重要性を認識しており、パートナーと連携して、信頼できる RoT チップのメリットをお客様や業界全体に広げたいと考えています。これを実現する最善の方法は、チップをオープンソース化することでしょう。

透過性と安全性の水準を上げる

オープンソース ソフトウェアと同じく、オープンソース チップも以下のことができます。
  1. 設計と実装が透過的なので、信頼性と安全性が高まります。問題を早期に発見でき、盲目的な信頼を減らすことができます。
  2. オープンソース設計への貢献を通して、革新を実現し、推進します。
  3. オープンで共通なリファレンス設計を通して、実装の選択肢を提供し、一連の共通インターフェースやソフトウェアの互換性の保証を維持します。
OpenTitan プロジェクトは、イギリスのケンブリッジに本拠地を置く独立した非営利企業で、フルスタックのエンジニアリング チームが在籍する lowRISC CIC によって管理され、志を同じくする ETH ZurichG+D Mobile SecurityGoogleNuvoton TechnologyWestern Digital などの企業の連合体により支えられています。

OpenTitan プロジェクトの創設パートナー

OpenTitan はアクティブなエンジニアリング プロジェクトで、パートナーの連合体を代表するエンジニアのチームが参加し、さまざまな観点からアイデアや専門知識を持ち寄っています。オープンソースのマイクロプロセッサ(RISC-V ベースの設計である lowRISC Ibex)、暗号コプロセッサ、ハードウェア乱数生成器、高度な鍵階層、揮発性および不揮発性ストレージ用のメモリ階層、防御メカニズム、IO 周辺機器、セキュアブートなど、RoT チップの論理設計は透過的に行われています。OpenTitan では、よりオープンで透過的かつ高品質な RoT を提供するため、パートナーの連合体が協力し合っています。
従来型の RoT と OpenTitan RoT の重要な設計コンポーネントの比較
OpenTitan プロジェクトは、次の 3 つの原則に根ざしています。
  • 透過性 – あらゆる人のための RoT チップの透過性や信頼性を向上させるため、OpenTitan の設計やドキュメントは誰でも調査、評価、貢献が可能です。
  • 高品質 – リファレンス ファームウェア、付帯検証ツール、技術ドキュメントを含め、高品質で論理的に安全なチップ設計を行います。
  • 柔軟性 – ベンダーやプラットフォームに依存せず、データセンターのサーバーやストレージ、周辺機器、その他のデバイスに統合できる RoT チップ設計を使うことで、導入者が費用を削減して多くのお客様に製品を届けることができるようにします。

OpenTitan プロジェクトに参加する

OpenTitan を活用できるのは、インフラストラクチャをチップベースのセキュリティで強化したいと考えているチップメーカーやプラットフォーム プロバイダー、セキュリティに敏感な企業などです。早速、GitHub リポジトリにアクセスしてみてください。

積極的に OpenTitan と連携して実際にオープンソース チップを安全にしたい方は、ぜひ OpenTitan チームにご連絡ください。製品にパイロット OpenTitan RoT を組み込みたい方は、こちらからお知らせいただけるとありがたく思います。


Reviewed by Eiji Kitamura - Developer Relations Team