Yuta NakataのBlog

Python / AWS / ITについて役立つ情報を発信します

【書評】位置情報デベロッパー養成講座を読んだった

はじめに

本記事では、

現場のプロがわかりやすく教える 位置情報デベロッパー養成講座

の感想記事になります。

私自身、位置情報データを日々扱っているので、現場のエンジニアとしての復習の意味も兼ねて読みました。

https://amzn.to/3DHIwFf

ちなみに、私の位置情報にかかる経験はこんな感じ

  • フロントエンド(タイルデータの表示・処理)の実装
  • サーバーサイド(タイルデータ作成、tippecanoeなどよく使う)の実装
  • Mapboxを中心とした処理経験が主
  • 本書籍で触れられているタイルサーバー自体の開発はなく、どちらかというとそのサーバーが社内のリソースとしてあるので、タイルデータの作成、タイルデータの表示が主な業務

技術スタック的には、

などを位置情報関連では使ったりしています。

Githubに本書のサンプルコードが上がっているので、確認してみてください。

GitHub - Kanahiro/location-tech2-sample-v1: 秀和システム「現場のプロがわかりやすく教える 位置情報デベロッパー養成講座」サンプルコード

本書の内容をから感じたこと

筆者自身は、日頃からAWSを用いてサーバーレス、タイルデータと仲良くやっていますが、そこに行き着くまでの経緯みたいなものを知れた気がしました。

また、本書ではPythonを使ってサーバーサイドを実装していますが、計算コスト・処理速度の観点から動的言語よりも現場レベルでは静的言語(特にGo Lang, Rust)が好まれる傾向があると感じました(位置情報系では、処理速度が命ですから)。

以下は、本書読んだ感想を箇条書きでまとめていきます。

  • 動的タイル(ex. postgreslを使ってタイルの動的生成)は業務上高頻度なデータを扱うことがないので、実装経験はなかったので、その方法について学べたことは良かったです。ただし、本書にも記載がある通りスケーラビリティ・パフォーマンス等の観点でやはり難しいものがあるなと感じました。

  • タイルデータにおけるCloud Optimizedは非常に重要であることは強く感じました。ベクトルデータならPMTiles, ラスターデータならCOGでまずはいいように感じます。特にそのメリットとしては、

    • ファイルシステムの存在がマストではないため、クラウドとの相性が良くLambda, S3の構成を取ることができる(MBTilesだと、ファイルシステムの存在がマストなため、Lambda, EFSとなり、スケールがしずらくなる)
    • キャッシュが効くということで静的ファイルシステムが使える場面(=高頻度でデータ作成がいらない場面)ではどんどん使うべき

geojsonとPMTilesの比較表は以下のような感じ

PMTiles Geojson
データのFormat バイナリ
(=データサイズが小さい)
テキスト
(=ファイルサイズが大きくなりがち)
キャッシュ
(=配信速度が安定・向上できる)
クライアント
(記述量を少なくできる)

(=相対的に記述量は多い)

このことからもPMTilesを使っていくべきということがわかります。

  • Registry of Open Data on AWSというAWSでオープンデータを保管する仕組みがあることを始めて知った。(毎日AWS使っているけど知らなかった。。。)