AI に鉄道の運転指令を作らせてみた — 3回目の「対応キュー」手組みで、またコンポーネントになった(やってみた #106)
/rail-operations375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に鉄道の運転指令を作らせてみた — 3回目の「対応キュー」手組みで、またコンポーネントになった(やってみた #106)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。運輸=モード別に回す(タクシー/バス/鉄道/航空/トラック配送)、その鉄道1枚目——鉄道の運転指令(運行管理)(列車一覧・ダイヤ乱れ・運行図表・運転整理)。
運輸は1業界じゃなく「カテゴリ」——鉄道・バス・航空・タクシー・運送は作法が全然違うので、各モードを独立の土台として回す。今回はその鉄道。観測の核——要対応の対応待ちリスト(ActionQueue)が3回目の手組みになれば、その場で作る。
結果 — 4/5、そして3回目が発火(2連続で作る)
tsc/build 緑・375px・0 console error。KPI・ダイヤ乱れアラート・列車運行状況一覧・運行図表・運転整理ログ。予備知識ゼロの AI(群青を一度も触っていない設定)のレポート:
ダイヤ乱れアラートキュー=手組み。「深刻度でソートされた、対応が必要な項目の対応待ちリストのコンポーネントが無い」。索引が答えた
NotificationCenterを見たが「ベルアイコンの Popover で、インラインの選別リストじゃない——深刻度も種類も推奨アクションも無い」。だからAlert+Badge×2+Buttonを深刻度順に並べて自前で組んだ。「これは単一で最大の、繰り返し再利用される欠落——あらゆる運用/監視/指令の画面が、まさにこれを必要とし、全員が Alert+Badge から作り直す。最も価値ある追加。」
3回連続——更新の今すぐ対応リスト #102・要対応アラート #105・ダイヤ乱れキュー #106、別々の3人の予備知識ゼロの AI が独立に同じ対応待ちリストを手組み。3回ルール発火。その場で作った。(保険で AmountBreakdown を作ったのに続き、2連続のコンポーネント化。)
作る — ActionQueue(対応キュー)
<ActionQueue
items={[
{ severity: "critical", kind: "失効リスク", title: "田所さま — 終身保険が今月末で失効",
detail: "失効防止コールを本日中に。", meta: "本日", actions: <Button size="sm">対応</Button> },
{ severity: "warning", kind: "更新", title: "三宅さま — 更新期限", meta: "あと7日" },
{ severity: "info", kind: "誕生日", title: "宇佐美さま — お誕生日", meta: "明日" },
]}
/>
severity(critical/warning/info/neutral)がアイコン+トーン+(ソート時の)並び順を決める。深刻度は色だけでなく、アイコンの形+トーン+sr-only ラベルで伝える。- 末尾の
actionsは行ボタンに入れ子にせず兄弟として描画・onSelectで行を活性化・既定でサーバー描画でも安全。 - StatGroup(KPI 行)と対になる、朝のダッシュボードのもう半分が揃った。
- #350 をクローズ(PR#351)。
索引も2つ直した
- 対応待ちリスト →
NotificationCenterの誤誘導を是正:対応キュー(ActionQueue)vs 単発の通知(Alert)vs 常駐のベル(NotificationCenter)を分離。 -
Gantt→ 運行図表 の誤誘導を注記:Ganttはレーン詰めのバー=交差する斜線(列車運行図表/ダイヤグラム/Marey)ではないと明記し、未対応であることを索引に出した。
課題に記録 — Stringline(運行図表)
運行図表(時間×距離のスジ)も手組み(SVG)。「Gantt はレーン詰めのバー、スジは交差する斜線——構造的に別物。斜線そのものがデータなので SVG が正当な例外」。
→ #352。鉄道特化(全業種共通の ActionQueue より優先度は下)だが、鉄道ダイヤ画面の象徴。次の交通モードで2回目が出れば固まる。RouteStops(物流の配送)が車両運用・折返しに「不気味なほどぴったり」で業界越えしたのも収穫。
今回 src で作ったもの = ActionQueue(3回目)。
学び — 全業種共通の土台はまだ埋まる
保険5枚で「作り切った」と書いたが、業界をまたぐ共通の欠落はまだあった——ActionQueue は保険にも鉄道にも、あらゆる運用画面に出る「朝のダッシュボードのもう半分」。StatGroup(KPI)・AmountBreakdown(金額)に続き、事務方の3つ目の全業種共通の土台が埋まった。一方 Stringline は鉄道特化=モード固有の欠落。全業種共通の土台(全業種で効く)と モード固有の土台(その業種だけ)を、3回ルールが選り分けてくれている。
次回予告(やってみた #107)
- 鉄道2枚目(乗務員行路/車両運用 or 駅務)で ActionQueue/Stringline の再発掘を観測、あるいは次モード(バス/航空/タクシー/トラック配送)へ。
試す
- gunjo.jp / 対応キュー ActionQueue / 金額内訳 AmountBreakdown / 逆引き索引 /docs/by-use-case / npm
@gunjo/ui/ GitHub / 前回まで #1〜#105 - GunjoUI by UIXHERO
3回手組みされた対応待ちリストが、その場でコンポーネントに。運輸モード初回で、全業種共通の土台がまた一段。
この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import しているコンポーネントです。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。