AI に鉄道のダイヤ作成(運行図表)を作らせてみた — #106 で課題に記録した欠落が、27回後に2回目を見せた(やってみた #133)
/timetable-planning375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に鉄道のダイヤ作成(運行図表)を作らせてみた — #106 で課題に記録した欠落が、27回後に2回目を見せた(やってみた #133)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。鉄道の事業者向けを厚く(5枚目)——ダイヤ作成・運行計画コンソール(中央線快速・運行図表/ダイヤグラム・列車スジ・車両運用)。
結果 — 3.5/5、背骨は完璧。だが画面の名前そのものが手組み
tsc 緑・デスクトップ密度。予備知識ゼロの AI(群青を一度も触っていない設定):
汎用の事務方の部分90%(テーブル・KPI・アクションキュー・インスペクタ・枠)は速くて、方針が明確で正しい。
StatGroup/DataTable/ActionQueueは 摩擦ゼロ=運用コンソールを作ったことのある人が設計したように読める。 だが画面が存在する理由=運行図表(ダイヤグラム)に置き場所が無い。100% 手組み。
観測の核 — Stringline 2回目(#106 → #133、27回ぶり)
#106(運転指令)で運行図表を手組みして Stringline を課題に記録した。そして #133 で——予備知識ゼロの AI がまた、手書きの SVG 約190行で運行図表を手組みした。2回目(2/3)。
予備知識ゼロの AI が「なぜ Gantt では不可能か」を精密に言語化:
- Gantt = リソースの行 × 横棒。各要素は1行、印は水平のスパン。y は識別を運ぶ。
- 運行図表 = 1本の連続した距離軸(y) × 時間軸(x)。1列車は全駅の行を横切る斜めの折れ線。y は距離、傾き=速度、水平の折れ=停車、2本の線の交差=待避/追い抜き(読む理由そのもの)。
- Gantt には複数行をまたぐ印も傾きも無く、レーン詰めが線の交差を能動的に防ぐ=欲しいものの真逆。「Gantt にスタイルを足したものじゃない。座標系が違う。」
→ #352 Stringline / MareyChart に2回目を追記。仕様も精緻化(等間隔でない距離軸・着発/通過の自動の折れ線への投影・種別ごとのスタイル・上下双方向・フォーカスできる線で計画担当者が競合を読むアクセシビリティ)。
#106 で打った索引の注意書きが、効いた
#106 で索引に「バーは行内のレーン詰め=交差する斜線(運行図表/ダイヤグラム/Marey)は未対応」と書いておいた。それが27回後に:
予備知識ゼロの AI「索引が、標準では運行図表が未対応だと先に教えてくれた。この一文が、Gantt に、取れない斜線の形状を無理やり押し込む戦いから救った。 これが、ライブラリが欠落を扱う正しいやり方。」
「まだ無い」を正直に索引に書くことが、次の採用者を誤誘導から守る。 欠落の存在を隠さない索引は、それ自体がコンポーネントの一つ。
もう一つの欠落 — Gantt の日単位の解像度
車両運用(7:00–9:00 の日中)を Gantt に載せたら:
Gantt の時間は日単位の解像度(DAY_MS / M/D のヘッダ)。 日中の2時間の窓を1日のセルに引き伸ばすため
dayWidth=1100にし、日付ヘッダは無意味な「6/29」に。segments(便→折返し→便)は良いが、時/分の刻みモードが無い=同日の運用に本当の欠落。Gantt は形(行×時間)は合うが解像度が合わない。
→ #386 Gantt の日中/時刻の解像度モード(#113 機材繰り+#133 車両運用 で目撃・バス/タクシー/トラックの運行でも要りそう)。InspectorPanel の固定サイズを再確認・MiniTable も併記。
今回 src の新規コンポーネントなし(3.5/5・Stringline 2/3=3回ルール待ち)。
学び — 「2回目の欠落」は、3回目=作るの予告
Stringline は #106 で課題に記録してから、27回ずっと「未対応」だった。その間に11個のコンポーネントを別の3回ルールで作ってきた。今回 #133 でようやく2回目。そして予備知識ゼロの AI が決定的な一言:
「運行図表は鉄道の計画だけでなく、『経路上を時間で移動するもの』全般——バス(Marey)・コンベヤ・船舶航送——どれも要り、Gantt では絶対に作れない。」
つまり バスの事業者向け(運行/Marey)が来れば、ほぼ確実に3回目=Stringline を作る合図。連載の設計(全モード 事業者向け+利用者向け を順に回す)が、この最古の課題を回収しにいく。欠落は、忘れずに、しかし急がず、3回貯まった時に固まる。
📊 コンポーネント化スコアボード(作成済 11個)
AmountBreakdown / ActionQueue / ListCard / Gantt-segments / SeatMap / LoyaltySummaryCard / RadioCard / FilterChips / PageHeader / Itinerary / TicketStub 進行中:Stringline 2/3・StatusBoard・ExpiryBadge・CheckboxCard・Gantt 日中モード・StatusScreen success
📋 事業者向け/利用者向け 進捗 — 鉄道・航空 事業者向け/利用者向け 完走
- ✈️ 航空:利用者向け 6枚 ✅/事業者向け 3枚 ✅
- 🚆 鉄道:利用者向け 6枚 ✅/事業者向け 5枚(運行/乗務員/車両/駅務/ダイヤ作成) ✅
- → 鉄道・航空とも 事業者向け+利用者向け 両面 完走。次は新モード。
次回予告(やってみた #134)
- 新モード:バス(事業者向け 運行管理 or 利用者向け 路線・時刻・予約)。鉄道・航空で固めた土台がバスにどう効くか+運行/Marey で Stringline 3回目→作る が見えるか。
試す
- gunjo.jp / ガント Gantt / データテーブル DataTable / npm
@gunjo/ui/ GitHub / 前回まで #1〜#132 - GunjoUI by UIXHERO
#106 で課題に記録した運行図表の欠落が、27回後に2回目を見せた——3回目はバスで来る。欠落は、忘れず急がず、3回貯まった時に固まる。
この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import しているコンポーネントです。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。