私たちは 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


Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team


Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team

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 Key や Android スマートフォン などのプライマリ 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 Key や Android スマートフォン、または他のベンダーのセキュリティ キーなどのローミング FIDO セキュリティ キーを使うべきです。

Reviewed by Eiji Kitamura - Developer Relations Team
Share on Twitter Share on Facebook




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
Share on Twitter Share on Facebook


ホリデー シーズンが近づく中、お客様が円滑にお買い物ができるようにするため、できる限りの対策を講じることが望まれます。その第一歩が、ウェブサイトやオンラインストアに、店舗検索機能を設けることです。店舗検索機能によって、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 テクニカルアカウントマネージャ
Share on Twitter Share on Facebook



すでに、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 テクニカルアカウントマネージャ
Share on Twitter Share on Facebook



この 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 テクニカルアカウントマネージャ
Share on Twitter Share on Facebook


過去数か月にわたって、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 テクニカルアカウントマネージャ
Share on Twitter Share on Facebook

(右側が、今回ご紹介する 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
Share on Twitter Share on Facebook

Share on Twitter Share on Facebook

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
Share on Twitter Share on Facebook