3 時間でマスター !? 位置情報サービス Amazon Location Service 入門 ワークショップ
Author : 稲田 大陸
みなさん、こんにちは!ソリューションアーキテクトの稲田大陸です。
普段は製造業のお客様を中心に支援させていただいているのですが、フロントエンド周りの技術が好きなのもあり AWS Amplify や Amazon Location Service などのサービスを使って Web アプリを作って遊んでいます。
builders.flash シリーズでは久しぶりの登場でして、「ナカの人に聞いてみた ~ AWS の位置情報サービスでリッチなマップを実装しよう !」や「アプリを爆速で開発 ! AWS Amplify Studio で出来ること。」などを過去に投稿させていただきました。
最近、嬉しいことに AWS Loft に来ていただいた方に「記事見ました !」と言われることが増えてきたのですが、一方で、「Amazon Location Service 使ってみたけど、どこから始めたらいいか分からないです・・・(泣)」と言われれることも増えてきました。
そこで、今回は改めて Amazon Location Service のサービス紹介と第一歩となる Amazon Location Service 入門 ワークショップの紹介をします ! タイトルにある通り 3 時間でマスターしていただくために、ギュッとエッセンスをまとめています !
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
Amazon Location Service とは?
では早速、ワークショップにレッツゴー ! と言いたいところですが、Amazon Location Service をそもそも初めて聞いたという方も多いと思いますので、まずはサービスの概要についてご紹介します。
Amazon Location Service は位置情報機能をアプリケーションに簡単に追加できるフルマネージドサービスで、主に以下の 5 つの機能で構成されています。それぞれの機能について紹介します。
- マップ
- プレース/ジオコーディング
- ルート
- トラッカー
- ジオフェンス
マップ
位置情報の可視化することができ、位置情報に基づく多くのサービス機能の基盤となります。グローバルな位置情報データプロバイダである Esri と HERE Technologies や Open Data などの様々なスタイルのマップを提供しています。 2023 年 11 月現在、計 18 種類のマップスタイルが利用可能となっています。
クリックすると拡大します
プレース/ジオコーディング
プレースとは POI (Point of Interest) と呼ばれる地図上の特定の地点名、住所、緯度経度をアプリケーションで扱えるようにするための機能です。
一方、ジオコーディング機能は、特定の住所を緯度経度の地理的座標に変換する機能です。反対に緯度経度を住所に変換する機能は、逆ジオコーディングと呼びます。例えば AWS Japan の目黒オフィスの住所は、東京都品川区大崎 3 丁目 1 - 1 なのですが、それをジオコーディングすると 緯度 : 35.63350 / 経度 : 139.71707 の地理的座標に変換されるといった具合です。
クリックすると拡大します
ルート
名前の通り、ルート検索をすることが出来る機能です。出発地点と目的地点の緯度にかかる所要時間や、移動距離を取得することが出来ます。
Esri や HERE Technologies では最新の交通状況に基づいた予測を行うことも出来るので、例えば物流業界においては、配送の迅速化や燃費の削減といったビジネス目標の達成や、サステナビリティへの取り組みにもつなげられます。
クリックすると拡大します
トラッカー
トラッキング対応アプリケーションを実行しているデバイスの過去と現在の位置情報を取得、保存する機能です。デバイスの例として一番イメージしやすいのはスマートフォンだと思います。例えば、家族の位置情報を共有する機能があるアプリケーションも最近は増えてきましたが、そのような機能をトラッカーを用いることで実現できます。
「LoRaWAN で家から子供の初めてのおつかいを見守ろう」では、このトラッカーの機能を使って、子供の位置情報を取得するアプリケーションを作成しました。他にも、配送サービスで、今注文した商品がどこにあるかを確認したいときにもこの機能は活用できます。
クリックすると拡大します
ジオフェンス
マップ上で仮想的な境界線で囲まれたエリアのことです。トラッキングされたデバイスが、ジオフェンスとして設定したエリアへ出入りしたことをイベントとして検知してくれます。例えば、店舗の半径 50 m に円状にジオフェンスを設置しておくことで、店舗の近くにお客様がいる場合にリアルタイムにオファーやプロモーションを配信することが出来ます。
「Amazon Pinpoint を使用してジオフェンスマーケティングメッセージを送信する方法」に実装方法などがまとまっていますので是非読んでみてください !
クリックすると拡大します
2023 年の大きなアップデート
Amazon Location Service は 2021 年 6 月に一般提供が開始された サービスで、提供開始から約 2 年半しか経っていません。2023 年も多くのアップデートが発表されており、今回は私の独断と偏見で 2023 年の大きなアップデートを紹介します!
Amazon Location Service のトラッカーが最大 75 %、ジオフェンスが最大 70 % 値下げ
このアップデートを見たときに「75 % ・・・!?」となったのを今も覚えています。(笑)
トラッカーやジオフェンスは便利な機能なのですが、位置情報をトラッキングするデバイスの台数が増えたり、位置情報の更新頻度を高くしようとすると、利用料金が課題になることが多かったです。そのため、今までは 位置情報の更新頻度や評価頻度を最適化することで利用料金を最適化 していましたが、位置情報の更新頻度を落としすぎるとサービスの質自体にも影響してしまいます。
このアップデートでは Amazon Location Service のトラッカーとジオフェンスに対して、毎月の利用量に応じて 4 段階の価格モデルを提供するようになり、トラッカーは最大 75 %、ジオフェンスは、20 % ~ 70 % の値下げになりました。これによって、みなさんのビジネスをコスト効率良く拡大することが出来るようになりました!料金については Amazon Location Service の料金 を確認ください。
Amazon Location Service がデバイス位置のバウンディングボックス検索を追加
今まで Amazon Location Service はジオフェンスに対する出入りは検知することが出来ましたが、ジオフェンス内にあるデバイスを検索することが出来ませんでした。このアップデート では、それが可能になりました。例えば、災害時に 災害危険区域 内にいる住民に対して避難の連絡を出すことが出来るようになったり、フードデリバリーでレストランの近くでデリバリー可能なすべてのドライバーを見つけ、その近さに基づいて注文の受け取りを割り当てることができたりします。
Amazon Location Service が マップ、プレース、ルートの API キーに対応
マップ、プレース、ルートリソースに対して認証する手段として、元々は Amazon Cognito のみサポートしていましたが、新たに API キーをサポートするようになり、一般的に用いられる URL への API キーの付与が利用可能となりました。API キーを使った認証方法については、「Amazon Location Service の API キー機能で 3D マップライブラリを利用する」で分かりやすく解説されているので是非読んでみてください!
Amazon Location Service 入門ワークショップとは
では、本題のワークショップ紹介に入りたいと思います!本当は手を動かして頂きたいですが、本当に本当に忙しくて手を動かす時間がない人は、Amazon Location Service の公式デモサイト もありますので、触ってみてください。
Amazon Location Service 入門ワークショップ はマップ、プレース/ジオコーディング、ルート、トラッカー、ジオフェンスの機能をそれぞれの章ごとに体験できるワークショップになっています。
以下がワークショップの概要です。「はじめに:Amazon Location Service とは」と「まとめとクリーンアップ」は、環境のセットアップとクリーンアップがあるので、必須になりますがそれ以外の章に関しては独立しているので好きなところだけやっていただくのも OK です。すべての章を体験していただく場合は 2 時間ほどかかります。
必要な前提知識
本ワークショップでは、フロントエンドは amazon-location-samples に公開されている amplify-ui-geo-explore アプリケーションを使い、バックエンドは Amazon CloudFormation テンプレートを使って作成するので、初めて AWS を触る方でも体験いただけます。ワークショップに必要なのは以下の 4 つです。
- AWS アカウント - ご自身のアカウント、または AWS Event で提供されたアカウント
- AWS の基本的な知識
- 基本的なコマンドラインの知識
- Amazon Location Service を触ってみたい好奇心
Amazon Location Service 入門ワークショップの各章の紹介
はじめに:Amazon Location Service とは
Amazon Location Service の概要およびワークショップ内で作成する環境について説明 があります。ワークショップは AWS Cloud9 上で行うため、個人の環境に依存しないのがいいですね。
AWS Cloud9 が利用できない場合、こちらのブログ をご参考に AWS IDE Toolkits または AWS CloudShell をご利用ください。
Amazon Location Service マップ作成
サンプルアプリケーションを立ち上げ、触ってみます。アプリケーションではマップを表示するだけでなく、ジオフェンスの追加を行うこともできます。アプリケーションのコードが公開されているため、実装方法まで分かります。
Amazon Location Service ジオコーディング
AWS Command Line Interface (CLI) を使って、ジオコーディング をします。以下のように、「東京都千代田区東京駅」をジオコーディングしてみます。
aws location search-place-index-for-text —index-name WorkshopIndex —text "東京都千代田区東京駅"
すると、以下のような JSON 形式の結果が取得されます。
{ "Results": [
{
"Place": {
"Country": "JPN",
"Geometry": {
"Point": [
139.76721144700002,
35.68118461600005
]
},
"Interpolated": false,
"Label": "東京都千代田区東京駅",
"Region": "東京都"
},
"Relevance": 1
},
{
"Place": {
"Country": "JPN",
"Geometry": {
"Point": [
139.76537631400004,
35.681733671000075
]
},
"Interpolated": false,
"Label": "東京都千代田区東京駅",
"Region": "東京都"
},
"Relevance": 1
}
],
"Summary": {
"DataSource": "Esri",
"MaxResults": 50,
"ResultBBox": [
139.76537631400004,
35.68118461600005,
139.76721144700002,
35.681733671000075
],
"Text": "東京都千代田区東京駅"
}
}
また、ジオコーディングはアプリケーションでも試すことが出来ます。みなさんも最寄りも駅を入力してみて、ちゃんとジオコーディングできるか試してみましょう!
Amazon Location Service ルート計算ツール
先程と同様に、AWS CLI とアプリケーションのそれぞれを使って ルート計算 を行います。ルート計算では、車や徒歩などの移動する方法も選択することが出来ます。
以下のように、出発地点と目的地点の位置情報をそれぞれ departure-position と departure-position で指定します。
aws location calculate-route --calculator-name WorkshopRoutes --departure-position "[139.76721144700002, 35.68118461600005]" --destination-position "[139.70060678900006, 35.690189528000076]" --include-leg-geometry
結果が長いので省略しますが、以下のようにルート情報が JSON 形式の結果として取得できます。
{ "Legs": [
{
"Distance": 10.63254198514422,
"DurationSeconds": 1176.128462922,
"EndPosition": [
139.70117425999607,
35.690335447374736
],
"Geometry": {
"LineString": [
[
139.76882054392777,
35.68088807084364
],
.
.
.
.
[
139.70117425999607,
35.690335447374736
]
]
},
"StartPosition": [
139.76882054392777,
35.68088807084364
],
"Steps": [
{
"Distance": 0.05326280248298409,
"DurationSeconds": 10.537066753,
"EndPosition": [
139.769291108171,
35.680960992647464
],
"GeometryOffset": 1,
"StartPosition": [
139.7688205425394,
35.68088803219476
]
},
.
.
.
.
{
"Distance": 0.06666111778086581,
"DurationSeconds": 13.185542904,
"EndPosition": [
139.70117430790165,
35.69033547342211
],
"GeometryOffset": 106,
"StartPosition": [
139.70146321077848,
35.690725729751364
]
}
]
}
],
"Summary": {
"DataSource": "Esri",
"Distance": 10.63254198514422,
"DistanceUnit": "Kilometers",
"DurationSeconds": 1176.128462922,
"RouteBBox": [
139.70117425999607,
35.67843260712742,
139.77667375958723,
35.69141325428408
]
}
}
アプリケーションでも同様にルート計算が出来ます。取得した結果を地図上にルートを表示することが出来ます。
Amazon Location Service トラッカー
先程と同様に、AWS CLI とアプリケーションのそれぞれを使って トラッキング を行います。
今回は、アプリケーション上の車のアイコンを移動させることで、実際の車の動きをシミュレートしています。現実世界の車の位置情報を取得するためには、GPS を用いる方法が一般的ですが、AWS IoT Core Device Location を使うことで、AWS IoT Core に接続されたデバイスやクライアントは GPS を搭載していない場合でも全地球測位衛星システム (GNSS) や Wi-Fi スキャン、携帯基地局を利用した測位、IP アドレスに基づく位置推定といった方法を利用出来るようになります。
AWS IoT Core Device Location の使い方に関しては、「新しい AWS IoT Core Device Location 機能の使い方」を確認ください。
Amazon Location Service ジオフェンス
最後は、ジオフェンスを作成 し、車をジオフェンスに出入りさせることで、Amazon EventBridge にジオフェンスへの出入りが通知されることを確認します。
Amazon EventBridge のイベントは以下のようになります。どのジオフェンスに、どのデバイスが、出入りしたかを検知することが出来るので、その情報を元にユーザーに対してアクションを起こすことができます。Amazon Pinpoint を使うことでジオフェンスマーケティングメッセージを送信 することなどにも応用できます。
以下は Amazon EventBridge が受け取る JSON 形式のイベントの例です。
{
"version": "0",
"id": "d54a2e00-6225-4f2f-c0ac-9208eca5e311",
"detail-type": "Location Geofence Event",
"source": "aws.geo",
"account": "",
"time": "2022-07-08T19:34:20Z",
"region": "us-east-2",
"resources": [
"arn:aws:geo::geofence-collection/WorkshopCollection",
"arn:aws:geo::tracker/WorkshopAssets"
],
"detail": {
"EventType": "ENTER",
"GeofenceId": "Geofence-1657307262732",
"DeviceId": "Vehicle-1",
"SampleTime": "2022-07-08T19:34:20Z",
"Position": [
-122.76530364358277,
49.1484960689252
],
"PositionProperties": {
"DriverId": "321",
"VehicleSpeed": "33 km/h"
}
}
}
- detail :そのイベントに関する情報
- GeofenceId:デバイスが出入りしたジオフェンス ID
- EventType : ENTER (ジオフェンス内に入った) もしくは EXIT (ジオフェンス外に出た)
- DeviceId :トラッカーリソース内のデバイス ID
- Position :デバイスの位置情報
- PositionProperties :位置情報の更新と一緒に送信される追加のメタデータ
Next Action
今回は改めて Amazon Location Service のサービス紹介と各機能を体験していただける Amazon Location Service 入門 ワークショップ の紹介をしました。Amazon Location Service の基礎を学びつつ実際に触ってみることで、初めて知った方にも魅力が伝わっていれば嬉しいです。
既に知っている方もワークショップを通じて、より詳しくなっていただけるかと思います。もっと勉強してみたい方や触ってみたい方向けに関連のリソースを最後に載せておきますね。
ビルダーライフをお楽しみください!さようなら〜。
- デモサイト
- Amazon Location Service Blog (英語、日本語)
- 最新の記事は英語で出ることが多いですが、必死に翻訳頑張っていますので日本語もお待ち下さい(笑)
- builders.flash
- GitHub
- amazon-location-samples (2023 年 12 月 31 日以降は、AWS Geospatial に移行します)
筆者プロフィール
稲田 大陸 (Riku Inada / @inada_riku)
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト
2021 年 4 月に AWS Japan に入社した、筋トレが趣味のソリューションアーキテクトです。製造業のお客様を中心にクラウド活用の技術支援を担当しています。好きな AWS のサービスは AWS Amplify と Amazon Location Service です。最近改めて PWA (Progressive Web Apps) に惹かれてます。
AWS を無料でお試しいただけます