最初5~10分ほど聴けていないのですが、位置情報関連ウェビナーのメモです。(まだ動画リンクがないようなので、後日追記したいと思います。)
個人サマリ
位置情報を扱うときは GeoHash 形式を用いるのが王道
GeoHash 知らなかった情弱でした。学んでいきます。
Geohash(ジオハッシュ)は、Gustavo Niemeyerがgeohash.orgというWebサービスを作成中に発明した経緯度に基づくジオコーディング方法の一つである。パブリックドメインになっている。階層的な空間データ構造であり、空間を分割していくことによって表現する。ジオハッシュは、任意の精度で表現できる、文字列の末尾を削っていくと徐々に精度が落ちる、といった特徴がある。そのため、近隣の2地点を表すコードは、似たような文字列から構成されることが多い。同時に、より多くの文字列が一致すれば、当該2点がより近いことを表す。
(ジオハッシュ - Wikipedia より)
サービスごとに GeoHash 形式に対応しているかが異なる
詳細は、後述のメモをご覧ください。私は、DynamoDB をデータストアとして利用し、コンピューティングは Python on Lambda で位置情報を扱っていたため、現在は GeoHash 形式は利用できないようです。
Open Data on AWS
様々な位置情報関連データが提供されているようです。これを使って面白いことできないか考えてみたいです。
以下、メモをそのまま貼り付けます。
アプリケーションから使う
- ジオロケーション:API経由でサーバに位置情報を送信する
- ジオフェンス:特定の範囲に入った時に通知する
- 自動運転のサポート
地理情報を活用できる AWS のサービス
Geohash:空間をグリッド上のバケットに細分する緯度経度のgeocodeシステム。Hash 情報として表す?
RDS(Aurora)
- データストアとして
- PostgreSQL は PostGIS というプラグインで位置情報クエリを処理可能。
- MySQL は 5.6 から平面位置情報、5.7 から球面位置情報を扱うことができる。Aurora for MySQL はバージョンによって扱える情報に差異があるので注意。GEOMETRY型。Aurora はパフォーマンスチューニングを実施していて、MySQL 5.7 よりも最大2倍パフォーマンスが改善されている
ElastiCache
- インメモリキャッシュとして
- Redis 3.0 以上であれば、GeoHash を扱うことができる
- フルマネージドで Redis クラスタを組むことができるので、高速&ハイスケールなデータストアを構築できる
Amazon Elasticsearch Service
- Geo 型のクエリを扱うこともできる
- Kibana の可視化までマネージドなサービスとして提供されている
- IoT 用途など、大規模なデータストアとして使う場合は ElastiCache よりもこちらを選択する
DynamoDB
- データストアとして
- Java ライブラリから GeoHash を使う(Java 以外からは GeoHash を利用できないので注意)
Amazon Athena
- S3 上のデータに直接クエリを投げる
- Geo 系のクエリにも対応しているので、S3に CSV や JSON で集計したデータを配置し、それに対して Lambda や EC2 からクエリを投げる
- トランザクションの並列度が少なく、大規模なデータを扱うときのアーキテクチャとして採用する
QuickSight
- BIツールとして
- 最近、地理情報の可視化ができるようになったので、国コードや ZIP コード、緯度経度をグラフ化することができるようになった
Open Data on AWS
- AWS が無料で提供しているデータで、S3上に配置されている
- 地理情報データ、ランドサットの画像データなどがあり、多数の会社・組織にデータを提供してもらっている
その他
データストアの使い分け(相対評価)の表を提供してくれていて便利そう
アーキテクチャパターン
IoTアプリケーション
- AWS IoT を用いて、IoT ハードウェアからの情報を収集したり、状態管理したりする
- AWS IoT のルールエンジンによってバックエンドの処理を振り分ける。Lambda を発火させたり、S3にデータストアしたり。
サーバレスモバイル・アプリケーション
- Cognito で認証
- Mobile Analytics を利用
- Rest API を API Gateway + Lambda + DynamoDB の王道パターンで
- ファイルストアは S3、Push は SNS で
GISアプリケーション配信(地図タイルの生成)
- Lambda や EC2 でバッチ的に画像生成し、S3にストア
- CloudFront で配信する画像のキャッシュ
事例
ナビタイムジャパン社
- 交通ビックデータを用いて、走行実績を見える化
- データクエリに Athena を利用している
- 交通ビッグデータを S3 に配置し、Athena でデータレイクを構築している
モンサント社(農家:作物の栽培管理)
- いつどこに作物を植えると効率がいいかを、Geo データを使って分析・活用
- データストアにRDS, S3?
HERE社(自動運転)
- 車の位置や動きをリアルマッピング(3Dの可視化?)
QA
「IoTアプリケーションのバックエンドでSNSを噛ますのはなぜ?」
- 非同期的に処理するケース?
- アプリケーションの要件によって採用できることがあるかも?