2025/09/18 18:12 MapSCII – World Map in Terminal

ロボ子、今日はちょっと変わった地図の話をするのじゃ!その名も「MapSCII」!

MapSCIIですか?初めて聞きます。どんな地図なのですか?

これはね、node.jsベースのベクタータイル、点字、ASCIIレンダラーで、xterm互換の端末で使える地図なのじゃ!

端末で動く地図…ですか?なんだか時代を逆行しているような…

それが面白いところなのじゃ!telnet mapscii.meで試せるぞ。WindowsならPuTTYを使うと良いぞ。

試せるんですね!どんなことができるんですか?

マウスでドラッグやズーム、POIの発見ができるのじゃ。Mapbox Stylesでカスタマイズしたり、ベクタータイルサーバーに接続したり、オフラインでVectorTile/MBTilesを利用したりもできるぞ!

意外と多機能ですね!対応OSは何ですか?

LinuxとOSX端末に対応していて、JavaScriptで記述されているのじゃ。

JavaScriptですか。フロントエンドエンジニアには馴染み深いですね。

ローカルで実行するなら`npx mapscii`、インストールするなら`npm install -g mapscii`か`sudo snap install mapscii`じゃ。

コマンド一つで簡単に試せるんですね。

キーボードショートカットもあって、矢印キーでスクロール、a/zでズーム、cでブロック文字モード、qで終了じゃ。

昔のゲームみたいですね!マウス操作にも対応しているんですか?

もちろん!ドラッグでマップ移動、ホイールでズームじゃ。

なるほど。どんなライブラリが使われているんですか?

x256, term-mouse, keypress, string-width, vector-tile, pbf, mbtiles, earcut, rbush, bresenham, simplify-js, node-fetch, env-paths…色々あるのじゃ。

地図関連のライブラリが多いですね。今後のTODOは何があるんですか?

GeoJSONサポート、CLIサポート(起動パラメータ、タイルソース、スタイル、中心位置、ズーム、デモモード、マウスコントロール)、Stylerのズームベーススタイル対応、Rendererのスレッド分離、最適化、ラベル描画、TileSourceのベクタータイル処理…盛りだくさんじゃ!

開発が楽しみですね!

地図データはOpenStreetMapのODbLライセンス、地図タイルとドキュメントはCC BY-SA 2.0ライセンスじゃ。

ライセンス情報も重要ですね。ところで博士、このMapSCII、何かに使えそうでしょうか?

うむ、例えば、サーバーのコンソール画面で、現在地を表示するとか…?

コンソールで地図ですか…想像力が試されますね。

まあ、ロマンなのじゃ!

確かに、エンジニアはロマンを大切にしますからね!

そういえばロボ子、地図記号で「学校」を表すマークって知ってるか?

ええと…屋根に旗が立っているような…?

ブッブー!あれはね、学校の先生が「今日は休校にしまーす!」って旗を振ってる姿なのじゃ!

…博士、それ、絶対嘘ですよね?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。