「現場のプロがわかりやすく教える位置情報エンジニア育成講座」を読んでみた
はじめに
tokadev です。札幌からリモートで開発をしています。
位置情報を扱う開発をする機会が増えてきたので、振り返りも兼ねて「現場のプロがわかりやすく教える位置情報エンジニア育成講座」を読んでみました。
目次
第1章 位置情報の世界
位置情報とはどういった情報を指すのか、位置情報アプリケーションの種類や特徴について紹介されています。
第2章 位置情報の基本
位置情報の基礎知識が紹介されています。経緯度や地図投影法、位置情報のデータ形式やファイル形式について紹介されています。
第3章 位置情報データの取得・加工
オープンソースの QGIS を使用して、実際に位置情報データの表示や加工する方法の紹介や、コマンドラインツールの tippecanoe (ティピカノー) を使用したベクトルタイル化の手法についても触れられています。
第4章 位置情報アプリケーション開発: 入門編
位置情報ライブラリの紹介と、HTML/CSS/JavaScript によるサンプルの開発手法がサンプルコードとともに丁寧に紹介されています。
地図の基本的な実装パターンから、 MapLibreGLJS を用いた巨大なベクトルデータをベクトルタイルで描画する実装例についても紹介されています。
第5章 位置情報アプリケーション開発:実践編
Node + Vite を用いた防災マップの開発手法が紹介されているほか、この章で開発した位置情報アプリケーションを、スマートフォンで利用するためPWAに拡張する手法が紹介されています。
感想
位置情報開発を行う上で、クライアントサイドでの描画処理やサーバサイド側でのデータ配信などの概念や投影法や座標系・位置情報データひとつとっても様々な形式が存在します。いま主流となっているファイル形式や配信方法はなにかを知ることが出来るというメリットは大きく、また概念や知識の習得だけでなくサンプルコードとともにに現在のプラクティスを学ぶのに適した本だと感じました。
2-5. 位置情報の配信方法
位置情報アプリケーションの特徴として、ポリゴンなどの地物を扱う上でデータ量が大きく数が多い点です。バックエンドで処理する際の処理コストやフロントエンドでの描画パフォーマンスに気を配るのはもちろんですが、配信する位置情報のデータが大きければダウンロードに時間がかかりユーザー体験を損なう原因となってしまうため、大きなデータを配信する場合は適切な配信方法を取る必要があります。
配信方法ついてはベクトルタイルとタイルインデックスは知っていましたが、それ以外の配信方法についてはこの本で知りました。それぞれのメリット・デメリットなどがまとまっているので違いを比較するのに役立つと思います。
- バウンディングボックス
クライアントが必要とする領域のデータだけリクエスト・レスポンスする手法。
- 地図タイル
バウンディングボックスの欠点を克服した概念。大きな位置情報データを事前にタイル状に分割しておき、必要な範囲のデータだけの配信を行う手法。タイルインデックスという仕組みの理解が必要になる。
- タイルインデックス
タイルインデックス: 全世界をタイル状に分割し、各タイルに番地を定めておく仕組み。番地はズームレベル(Z)、横軸(X)、縦軸(Y)の3つの整数値からなる。
- ラスタータイル
ラスターデータのタイルをラスタータイルと呼ぶ。ラスタータイルは PNG や JPEG などの画像ファイル。タイルインデックスXYZの値から領域が一意となる性質から、ファイルパスが位置情報を持つといえる。
- タイル画像を配信するURLの例
http:/{host}/7/35/12.png
- ベクトルタイル
ベクトルデータをタイル化したものがベクトルタイル。ファイル形式は MapboxVectorTile 。
ラスタータイルと比べてサイズを小さくでき、短時間で作成することが出来る。またベクトルデータであるため属性を保持でき、クライアント側で自由にスタイルを変えられるなどのメリットがある。
おわりに
位置情報を扱うアプリケーションをこれから開発してみたいと考えている方にはとっつきやすい一冊と感じました。
GoogleMapsAPI や Leaflet のドキュメントを元に位置情報アプリケーションのサンプルを作ってみたことはあるけど、より本格的な位置情報アプリケーションを開発するためのに開発手法や知識を学びたい人の次の一歩として、この本に触れてみてはいかがでしょうか。
参考文献
Discussion