これはベクトルタイル Advent Calendar 2021の第19日目です。
- 地図に自由を
- データに愛着を
- 現場に向かって
をビジョンとして進めている国連ベクトルタイルツールキット(UNVT)ファミリーですが、特に現場に向かって前進するときに重視しているのが Raspberry Pi の活用です。
なお、UNVTを用いる場合のサーバー選びについては、サーバーの選び方 - ベクトルタイルをどう配備するか
も見ていただけると嬉しいです。
Raspberry Pi 用 UNVT インストーラー unvt/equinox
Raspberry Pi 用 UNVT インストーラーとして、unvt/equinoxを保持しています。Raspberry Pi OS 上で curl https://unvt.github.io/equinox/install.sh | sh
とするとインストールが進むというスクリプトです。
今回は、次の図に示すような、equinox でインストールされるソフトウェアのうち、主要なものについて説明を試みます。
システム関係
tmux
ターミナルのマルチプレクサです。ssh で Raspberry Pi に入った後、複数のシェルをきりかえて使えるようになります。また、ログアウトしても使っているシェルは生きたままになるので、例えば日を超えての作業の継続をするときにも便利です。
budo
Node.js で書かれた簡単なウェブサーバです。気軽に動かせて、割とオプションのセンスも良いので使っています。
ruby
オブジェクト指向スクリプト言語です。UNVTを構成する初期の頃は、全てを Node.js で取り扱うように心がけていましたが、ファイルシステムを扱うようなタスクでは煩雑になりがちなのと、シェルとの間のカルチャーの違いがあるように感じたので、再び Ruby を使うようになってきています。
特に、タスクを一つの Rakefile にまとめておくということをよく行っています。ファイルが増えすぎないためにも良いですし、Rakefile の記法は結局 Ruby の上の DSL なので、柔軟に回せるのが気に入っています。
Rakefile に対応するものを見つけきれなかったことが、 Ruby を再びよく使うようになった理由かもしれません。
また、改めて振り返ってみると、私は Ruby のカルチャーにアクセスできるところからヒントやメリットを得ているかもしれません。例えば、最近も、シンプルさについて次のような勉強を進めています。このような知見にアクセスしやすくなるという点で、 Ruby にアクセスしているというところからヒントやメリットを得ているかもしれません。
Rich Hickey: Simplicity Matters (eugene yokota 訳)
parallel
Parallels ではなくて、GNU Parallel です。シェルの上で並列処理をするのに便利なツールです。Raspberry Pi でタイル生産をする場合、メモリ・CPU・IOを使い切るようにタスクを設計することが重要ですが、Raspberry PiのCPUの4つのコアを十分に活用するには、多くの場合並列化が有効です。
nginx
ウェブサーバです。おそらく軽量なので、Raspberry Piでも安心して動かせる感覚があります。
nodejs
Node.js の処理系です。equinox でインストール処理を書くのによく苦労しています。本当に正しい入れ方がどれなのか、完全には自信がないところですが、現在のところ、equinox で導入した Node.js は問題なく動作しているようです。
地理空間情報関係
Tippecanoe
ベクトルタイルの生産を担う、CLI の優れたオープンソースソフトウェアです。
Charites
ベクトルタイルのスタイルを担う、CLI の優れたオープンソースソフトウェアです。
vt-optimizer
ベクトルタイルの最適化を担う、CLI の優れたオープンソースソフトウェアです。
GDAL
地理空間情報を CLI でハンドルするためによく使うオープンソースソフトウェアです。
PDAL
ポイントクラウドデータを CLI でハンドルするためによく使うオープンソースソフトウェアです。
Osmium
OpenStreetMap の osm.pbf ファイルをハンドルするためによく使うオープンソースソフトウェアです。
開発関係
yarn
Node.js のためのパッケージマネージャーですが、npm のみでも十分かもしれないと思っており、維持するべきかどうか迷っているところではあります。コメントがあればいただけると嬉しいです。