AWS入門ブログリレー2024 〜Amazon Location Service編〜

誰でも簡単に地図アプリケーションが作れちゃう素敵なサービスに入門してみよう

こんにちは、AWS事業本部の荒平(@0Air)です。

当エントリは弊社AWS事業本部による『AWS 入門ブログリレー 2024』の12日目のエントリです。

このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。

AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。

では、さっそくいってみましょう。今回のテーマは『Amazon Location Service』です。

Amazon Location Serviceの概要

一言で表すと「位置情報・マップのサービス」です。
セキュリティやデータプライバシーに配慮したうえで、アプリケーションに簡単に組み込むことができます。

図は、デベロッパーが Amazon Location を使用して位置情報ベースの機能を探索、構築、デプロイ、およびアプリケーションに追加する方法を示しています。

サービス紹介ページ:https://aws.amazon.com/jp/location/

用語の理解

ドキュメントやユースケースを見る前に、Amazon Location Serviceに関する用語を整理しておくと理解しやすいと思います。
最初の一歩として、一覧にまとめてみました。

名称 内容
Amazon Location Service Maps マッププロバイダーを選択し、地図を表示(レンダリング)する機能です。
Amazon Location Service Places 地点の検索、ジオコーディングを行う機能です。
Amazon Location Service Routes ルートを検索する機能です。交通量情報に応じて移動時間を推定することもできます。
Amazon Location Service Geofences マップ上で仮想的に境界を引くことができる機能です。その境界を基準に、入退室のイベントを発生させることができます。
Amazon Location Service Trackers 使っているデバイスから位置情報を受け取る機能です。Geofencesと連携して、境界内にいるかなど判定することができます。
マッププロバイダー 地図データの供給者です。
執筆時点では、Esri, HERE, Open Dataの3種類から選べます。
ベースマップ ベースとなる地図情報です。道路名・建物・土地利用などの地理的コンテキストが含まれ、視覚的に参照できます。
ベクターデータ 点・線・ポリゴンで構成される図形データです。これはマップ上のマーカーのアイコンとしても利用できます。
ラスターデータ グリッドで構成された画像データです。地形・衛星画像・ヒートマップなど連続したデータを地図上に表示するために使用されます。
ジオコーディング 住所情報から緯度・経度に変換することを指します。このサービスでは、SearchPlaceIndexForTextが主に利用できます
リバースジオコーディング 緯度・経度から住所情報に変換することを指します。このサービスでは、SearchPlaceIndexForPositionが主に利用できます
トラッカーリソース デバイスからロケーションの更新を受診するAWSリソースを指します。

やってみる💪

兎にも角にも、サービスの理解においては、まずはやってみることが大事です。
実際にAmazon Location Serviceを操作して、ローカルホストのページからアクセスできる、組み込みマップを作成してみます。

1. マップを作成する

「Amazon Location Service」>「マップ」>「マップを作成」をクリックします。

マップ名を入力し、好きなマップを一覧から選択します。

執筆時点で利用可能なマップデータは以下の15種類でした。
探すのがやや大変ですが、フィルターで目的のマップを見つけましょう。

  • Esri ナビゲーション
  • HERE Explore
  • Open Data Standard Light
  • Esri Imagery
  • Esri ライト
  • Esri ライトグレーのキャンバス
  • Esri ストリートマップ
  • Esri ダークグレーのキャンバス
  • HERE Imagery
  • HERE Hybrid
  • HERE Contrast
  • HERE Explore Truck
  • Open Data Visualization Light
  • Open Data Standard Dark
  • Open Data Visualization Dark

筆者はここではHERE Exploreを選択しました。

利用規約に同意し、マップを作成します。

2. APIキーの払い出し

マップが作成できたら、Local環境からアクセスするためのAPIキーを作成します。
「APIキー」をクリックします。

「キーを作成およびアタッチ」をクリックします。

APIキー名を入力して「作成およびアタッチ」をクリックします。
ここで、リファラーを設定すると、設定したドメインにのみAPIの実行を許可できます。

作成したAPIキーのページを確認し、APIキー値を確認します。
このキー値は後ほど使うため、コピーしておきましょう。

3. ローカルホストのページに埋め込みマップを表示する

マップの「埋め込みマップ」タブを開き、今回は認証方法に「APIキー」を指定します。
Cognitoを使ったユーザー認証も可能です。

親切にも、ウェブアプリケーションに組み込めるコードが用意されています。
前手順で作成したAPIキーをプルダウンから選択し、コード内のapiKeyの内容を先程コピーしたAPIキー値と置き換えます。

任意のフォルダに保存(例えば、index.html)して、npx serveを実行します。
localhostの指定のポートでリッスンしますので、これにアクセスします。

無事に地図が表示されました!右下には指定のマッププロバイダー名が表示されています。

もちろん日本も表示できます。通りの名前や、交差点名も確認できました。

Let's touch it!

ここまで各機能を紹介しましたが、触ってみたい人もいるのではないでしょうか。

実は、Amazon Location Serviceのデモアプリケーションが公開されているので、一部機能がすぐに試せます。

トラッキングとジオフェンスのシミュレーションの例です。

車のアイコンが地図上のルートを進み、時間とともに左側に追跡情報が一覧されます。
ここでの車のアイコンはデバイスの地理情報で、このデバイスの移動をトラッキングしています。

その他、住所で検索したりできるので、興味がある方は触ってみてください。アプリケーションを統合する前のベースマップとして、どんな機能があるのか確認できます。

[推し機能] サジェスト検索もできる

個人的にすごく便利な使い方があり、なんとサジェスト検索ができます。
曖昧なワードでも正式な住所が取れるので、普段遣いにも便利ですね。

例として、「伏見町」を検索してみます。

aws location search-place-index-for-suggestions --index-name explore.place --text 伏見町 --max-result 10 | jq '.Results[].Text' -r

以下のような結果でした。全国には伏見町がたくさんありますね。

大阪府大阪市中央区伏見町伏見町
愛知県碧南市伏見町伏見町
岡山県津山市伏見町
広島県福山市伏見町
神奈川県横浜市南区伏見町
大阪府大阪市 中央区伏見町3交差点
大阪府大阪市中央区伏見町局

クラスメソッド大阪オフィスは移転したので、郵便番号が分からなくなるケースがあるかもしれません。
住所を入力して、その地点の緯度経度やZipcodeを取得することもできます。

aws location search-place-index-for-text \
--index-name explore.place \
--text "大阪府大阪市中央区伏見町3-6-3" \
--max-results 1

結果です。PostalCode5410044となっているので、事前情報と合致しています。

{
    "Results": [
        {
            "Place": {
                "AddressNumber": "3",
                "Categories": [
                    "AddressType"
                ],
                "Country": "JPN",
                "Geometry": {
                    "Point": [
                        135.501394781983,
                        34.689025718108
                    ]
                },
                "Interpolated": false,
                "Label": "大阪府大阪市中央区伏見町3-6-3",
                "Municipality": "中央区",
                "Neighborhood": "3",
                "PostalCode": "5410044",
                "Region": "大阪府",
                "SubMunicipality": "伏見町"
            },
            "Relevance": 1
        }
    ],
    "Summary": {
        "DataSource": "Esri",
        "MaxResults": 1,
        "ResultBBox": [
            135.501394781983,
            34.689025718108,
            135.501394781983,
            34.689025718108
        ],
        "Text": "大阪府大阪市中央区伏見町3-6-3"
    }
}

Amazon Location Serviceの料金

料金ページは以下です。最新の料金は必ず参照元をご覧ください。
主要な機能の料金を紹介します。

料金項目 料金
取得されたマップタイル(商用データプロバイダー) 1000件につき 0.040 USD
取得されたマップタイル(Open Dataプロバイダー) 1000件につき 0.035 USD
住所提案(オートコンプリート、オートサジェスト、テキスト検索) 1000件につき 0.200 USD
ジオコーディング・リバースジオコーディング 1000件につき 0.500 USD
ジオコーディング・リバースジオコーディングの保存 1000件につき 4.000 USD
ルートの算出 1000件につき 0.500 USD
トラッキングAPIによる位置の書き込み 50万件まで 1000件につき(ボリュームディスカウント有) 0.050 USD
ジオフェンスAPIによる評価 25万件まで 1000件につき(ボリュームディスカウント有) 0.160 USD

計算例にもありますが、1万人のユーザーが合計80万個のマップタイルをリクエストした場合にも数十ドルで済んでいるので、安価に利用できるサービスと言えるでしょう。

Amazon Location Serviceのクォータ

サービスクォータは以下をご覧ください。
デフォルトでは、APIリクエストレート上限がほとんどの値で低く抑えられているため、地図がメインのアプリケーションを作る場合は、これらのクォータは引き上げて利用しましょう。

おわりに

以上、『AWS 入門ブログリレー 2024』の12日目のエントリ『Amazon Location Service』編でした。
せっかくの入門リレーなので、触ったことのないサービスを触ってみたいという目標を達成できて満足です。

次回、2024年4月6日(土)は弊社荒平(@0Air)による「AWS Application Migration Service」編の予定です!

このエントリが誰かの助けになれば幸いです。

それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!

参考