#154スコア 4/5運輸:バス

AI にバスの路線収支ダッシュボードを作らせてみた — チャートの土台がバス財務に完全に業種を越えて再利用、Leaderboard が2回目(やってみた #154)

ルート: /bus-revenue
デスクトップ表示
モバイル表示

375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。

解説記事

AI にバスの路線収支ダッシュボードを作らせてみた — チャートの土台がバス財務に完全に業種を越えて再利用、Leaderboard が2回目(やってみた #154)

⁠やってみたシリーズ⁠: 自作のデザインシステム @gunjo/ui群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。⁠バスの事業者向けを厚く⁠(運行#136・配車#137・計画#153 に追加)——⁠営収・路線収支ダッシュボード⁠(系統別収支・営業係数・乗車人員・補助金・費用内訳)。経営企画/営業所長向けの情報密度ダッシュボード。

結果 — 4/5、チャートの土台がバス財務に完全に業種を越えて再利用

tsc 緑・デスクトップ情報密度・可変データ駆動のチャート。予備知識ゼロの AI(群青を一度も触っていない設定):

⁠このライブラリは明らかに日本の財務/運用コンソール向けに作られている。⁠ ソース自体の語彙が証拠——Delta の既定ラベルは増加/減少、formatCurrency は JPY/ja-JP 既定、AmountBreakdown の例は 請求/見積/査定/精算、ActionQueue は 重大/警告/情報/通常。⁠戦うのでなく組み立てるだけだった。⁠

観測の核1 — チャートの土台がバス財務に完全に業種を越えて再利用(静的化ゼロ)

路線バスの財務は独特だ:多くの系統が赤字(営業係数 >100)で補助金頼み、系統ごとの黒字赤字こそが全て。その情報密度の高いダッシュボードが、⁠ほぼ全部ライブラリのコンポーネントで組めた⁠

  • ⁠StatGroup⁠(KPI 行)=営収/営業係数/乗車人員/補助金/経常損益・hint 第3行が有用=⁠最良適合⁠
  • ⁠LineChart⁠(area)=損益推移・referenceValue で平均費用線・⁠可変な月次データ駆動で SVG 手組みゼロ⁠
  • ⁠LabeledDonutCard⁠=費用内訳(人件費/燃料費/車両費)=donut+中心合計+セグメント別 callout が1コンポーネント。
  • ⁠DataTable + Delta + Meter⁠=系統別収支・損益 Delta・営業係数の Meter をセル内に埋め込み。
  • ⁠ActionQueue⁠=要対応(営業係数悪化・補助金頼み・乗車減)=深刻度ソート。

予備知識ゼロの AI「⁠チャート/分析の層はライブラリの本拠地。LineChart/LabeledDonutCard/StatGroup/Delta/ActionQueue/DataTable が全て 摩擦ゼロ・可変なデータ配列で駆動・静的や装飾での描画を強いる物はゼロ。⁠⁠#153 で運行図表(Stringline)、#154 で財務のチャート土台——バスの事業者向けを厚くするほど、既存の土台が業種を越えることが確認されていく。⁠

観測の核2 — Leaderboard が2回目(タクシー→バス で 2/3)

収支の順位(上位/下位の系統)——Leaderboard を当てたい。だが:

予備知識ゼロの AI「⁠順位/番付のコンポーネントが無い。ParetoChart(ABC 累積%)は上位vs下位の番付ではない。順位ピル+営業係数+損益 の <ol> を Card 内に手組みした。構造のある UI を唯一ゼロから書いた所。追加価値が最も高いのは順位/番付のコンポーネント。⁠

⁠Leaderboard は今 2/3⁠(タクシー #143 売上ランキング → バス #154 系統別収支ランキング)=#395⁠索引が能動的に誤誘導⁠する点も再確認:ParetoChart を「Rankings」に挙げるが Pareto≠上位/下位=採用者は無理に当てて詰まる。あと1回の目撃で作る。

観測の核3 — 「低いほど良い」指標にコンポーネントの意味づけが無い

営業係数は⁠低いほど良い・>100 で赤字⁠という反転指標。だが:

予備知識ゼロの AI「Statistic は trend から tone を推論(up=positive)=営業係数では逆・手で trend/tone を上書き。Meter は higher-is-worse/better はあるが『低いほど良い+絶対閾値100』モードが無く、閾値マーカーも max に対する比率で絶対値でない・100−(k−100) と値を反転させて bar を『良い方向』に充填した=その計算はコンポーネントでなく自分のもの。⁠

#412 を課題に記録:⁠Statistic に goodWhen:"lower"/Meter に絶対 threshold。コスト率・不良率・離脱率・遅延率・CPA——低いほど良い指標は財務/運用に頻出。⁠DataTable rowTone⁠(赤字行を色付けできない=getRowStatedata-state="loss" は付くが table が data-[state=selected] しか装飾せず)も #412 に併記。

学び — 「業種越えの確認」はモードを厚くするほど増える

#153 で「このテストには欠落の2つの閉じ方(①その場で作る ②過去に作ったものの検証)がある」と書いた。⁠バスの事業者向けを厚くする作業は、ほぼ②の連続⁠だ:

  • #153=Stringline(運行図表)の別業種での確認。
  • #154=チャートの土台(LineChart/Donut/StatGroup/Delta/ActionQueue/DataTable)の別業種での確認。

新モードの事業者向けを厚くするのは「新しい欠落を掘る」より「⁠既に作った土台が、この業種でも本当に嵌まるか確かめる⁠」意味が大きい。そして稀に、その業種⁠特有⁠の残った欠落が出る(#154 なら Leaderboard 2/3・反転指標・rowTone)。⁠土台が成熟するほど、新画面は②検証が主・①その場で作るのは業種特有の薄い欠落だけ⁠——連載の定常状態だ。

⁠今回 src の新規コンポーネントなし⁠(4/5・チャート土台の別業種での確認・Leaderboard 2/3・反転指標/rowTone を課題に記録)。

📊 コンポーネント化スコアボード(作成済 ⁠15個⁠ + Gantt 日中モード)

…Stringline / StatusBoard / ExpiryBadge / BottomActionBar / Gantt(日中モード) 進行中:⁠Leaderboard(2/3)⁠・SegmentedControl(3回超)・ReferralCard・ComparisonTable・反転指標

📋 モード進捗 — バスの事業者向け 厚く(事業者向け4)

  • ✈️ 航空 ✅/🚆 鉄道 ✅/🚕 タクシー ✅/🚌 ⁠バス:事業者向け4(運行#136/配車#137/計画#153/営収#154)+利用者向け3⁠
  • 🚚 トラック:未着手

次回予告(やってみた #155)

  • バスの事業者向けをさらに(車両管理・車検/苦情・事故・安全 等)で鉄道航空タクシー(5-6)へ対称、or ⁠トラック新モード⁠。※次回までに決める。

試す

チャートの土台がバス財務に完全に業種を越えて再利用された——モードを厚くするのは新しい欠落を掘るより、作った土台がこの業種でも嵌まるか確かめること。Leaderboard はあと1回で作る。

この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。

使用した @gunjo/ui コンポーネント

この画面のソースが直接 import しているコンポーネントです。

cold AI が組み上げた実コード

ファイル名をクリックでソースを展開できます。

業界別「AI指示書パック」、先行登録を受付中です。