metro-clojure - gitリポジトリで地下鉄路線図を作るClojure製ツール

gjhenrique/metro-clojure は、鉄道路線図をgitのコミット/ブランチログで再現するためのオープンソースツールです。

路線と路線に所属する駅名を並べた json ファイルが入力となります。サンプルとしてサンパウロとニューヨークのデータがついてきてるので、それを参考にします。

[ { "name": "銀座線", "stations": [ "渋谷", "表参道", "外苑前", "青山一丁目", "赤坂見附", "溜池山王", "虎ノ門", "新橋", "銀座", "京橋",

データをツールに食わせると、git コマンド群を発行するシェルスクリプトを作ってくれます。

$ boot generate-git-commands -c tokyo -f tokyo.sh

大江戸線のような循環があると、git グラフが作れないためツールはエラーで止まります。そりゃそうですね。

都庁前の循環を外して再度挑戦するも、東京のいたるところの乗換駅でエラーが… あちらとこちらで乗り換えができれば、循環だらけにもなりますね。

# 渋谷 銀座線 半蔵門線 副都心線 git checkout --orphan "銀座線" git commit --allow-empty -m "渋谷" git branch -f "副都心線" HEAD git branch -f "半蔵門線" HEAD # 代々木上原 千代田線 git checkout --orphan "千代田線" git commit --allow-empty -m "代々木上原" # 代々木公園 千代田線 git commit --allow-empty -m "代々木公園" # 明治神宮前 千代田線 副都心線 git merge --strategy=ours --allow-unrelated-histories --no-ff --commit -m "明治神宮前" 副都心線 git branch -f "副都心線" HEAD # 北参道 副都心線 git checkout "副都心線" git commit --allow-empty -m "北参道" # 方南町 丸ノ内線分岐線 git checkout --orphan "丸ノ内線分岐線" git commit --allow-empty -m "方南町" # 中野富士見町 丸ノ内線分岐線 git commit --allow-empty -m "中野富士見町" # 中野新橋 丸ノ内線分岐線

「赤坂見附-永田町」のような別名の乗換駅の同一化を諦め、さらにエラーを起こす乗換駅を同一にしないよう入力データを修正していって、やっとなんとかエラーを出さなくした結果のスクリプトを、新しい git レポジトリに突っ込むことで、部分的には正しいところもあるぐらいの、東京の地下鉄gitグラフ(東京メトロ+都営地下鉄)を作ってみました。

git log で見るとこんな感じ

東京の路線図は循環しすぎなので、使用例としてはあまり良くないかもしれませんね。

もともとパリの路線図をGitHub 上で再現した2015年の作品があり、metro-clojure はこのような作品を簡単に作れることを目指して制作されたようです。

このツールを使えば、地下鉄の路線図以外の何か身近な有向グラフを git グラフで表現することができますね。

via From metro connections to a git graph