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

AI にバスのモバイルIC画面を作らせてみた — バスが完走、4モード目(やってみた #158)

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

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

解説記事

AI にバスのモバイルIC画面を作らせてみた — バスが完走、4モード目(やってみた #158)

⁠やってみたシリーズ⁠: 自作のデザインシステム @gunjo/ui群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。⁠バスの利用者向け 最後の1枚⁠(接近#138・高速予約#139・経路#140・乗車券#156・運行情報#157 に続く6枚目)——⁠モバイルIC・残高チャージ・利用履歴⁠(残高の大きな見出し・チャージ・オートチャージ・利用履歴・バス特典)。⁠これで 事業者向け5+利用者向け6 対称=バス完走。⁠

まず — バスが完走(航空・鉄道・タクシーに並ぶ4モード目)

バスの事業者向け(運行#136/配車#137/計画#153/営収#154/安全#155)+ 利用者向け(接近#138/高速予約#139/経路#140/乗車券#156/運行情報#157/IC#158)が ⁠事業者向け5+利用者向け6 で対称⁠に。航空(事業者向け5+利用者向け6)・鉄道(事業者向け5+利用者向け6)・タクシー(事業者向け6+利用者向け6)に並ぶ⁠4モード完成⁠。残るは🚚トラックのみ。

結果 — 4/5、ウォレットには最適な領域

tsc 緑・375px mobile-first。予備知識ゼロの AI(群青を一度も触っていない設定):

⁠これは渡され得る中で最高に相性の良い領域だった。⁠ 交通系IC ウォレットは、まさにこれらのコンポーネントが作られた用途。LoyaltySummaryCard の JSDoc は文字通り「鉄道 IC/ポイント」「IC残高」を名指しする。欠落は1か所——日付でグループ化した取引履歴。

観測の核1 — IC残高の大きな見出しと SegmentedControl 再検証

  • LoyaltySummaryCard(#118 で作った)=⁠IC残高の大きな見出しに、これのために作られた⁠・予備知識ゼロの AI「⁠doc が IC残高 を名指し・balance+meta(カード名/下4桁)+tier(定期一体)+secondary(定期区間/最終利用)+progress(バス特典)+alert・全ての残高見出しのニーズに名前付きの差込口があった・ゼロ摩擦⁠」。
  • SegmentedControl(#156 で作った)=⁠2回連続の自力発見の検証⁠・設定(オートチャージのしきい値/金額)で使用。⁠ただしチャージ金額の5択には RadioCard に正しく切替⁠=予備知識ゼロの AI「⁠SegmentedControl の docstring が『2-4 が適量』と言う・375px で5等幅セグメントは ¥10,000 を潰す・RadioCard の2列グリッドが正解⁠」=⁠docstring の 2-4 の指針が効いて誤用を防いだ⁠(コンポーネントが自分の境界を採用者に正しく伝えた)。

観測の核2 — TransactionList/Ledger(台帳)が2回目

日付でグループ化した利用履歴——これが唯一の手組みだった:

予備知識ゼロの AI「⁠日付グループ/SectionList/取引リストのコンポーネントが無い。index を見たが List/ListCard/Timeline/MetadataList/DataTable どれも『日でグループ化し sticky な日付ヘッダ』をしない。索引は Transaction History を DataTable か ListCard に誘導するが、どちらもグルーピングを丸投げする。Map<date,Txn[]> を手組みした。しかも符号付き金額+取引後残高 が ListCard の差込口に合わず、符号付き金額を status に押し込んだ(用途外・sr-only で入金/利用 を付与し符号が色だけに依存しないように)。日付グループ+符号付き金額+残高推移 を持つ TransactionList/LedgerList が、ウォレット画面でライブラリに欠けている最重要のコンポーネント。⁠

⁠SectionList/GroupedList は タクシー#149(月別乗車履歴)でも手組み済=2/3⁠#404)。#158 は仕様を鋭くした:グループ化した行+小計だけでなく、⁠ウォレット/IC/銀行/経費 のリストは符号付きの入出金(色だけに非依存)+残高推移⁠が要る。索引も誤誘導(Transaction History→DataTable/ListCard でグループ化しない)。あと1回で作る。

学び — 「完走」は4回繰り返すと型になる

航空・鉄道・タクシー・バスと4モード完走して、⁠完走の型⁠が固まった:

  1. ⁠事業者向けを業種の事務方として 5-6 枚⁠(指令/運行・乗務員・車両・営収・安全・計画…)。
  2. ⁠利用者向けを消費者フローとして 5-6 枚⁠(案内・予約・履歴・サポート・会員・IC…)。
  3. ⁠事業者向けと利用者向けを対称に⁠(弱い側 利用者向けを必ず事業者向けと同じだけ掘る)。

そして⁠4モード目(バス)の完走で、新しいコンポーネントはもうほとんど出ない⁠——出たのは TransactionList(2/3)・ValidityTimer(1/3) など「あと一押し」のストックだけ。#155-157 で Leaderboard/SegmentedControl/LineChip を放出し切ったので、4モード目の終盤は⁠ほぼ②検証(LoyaltySummaryCard/SegmentedControl の自力発見)⁠になった。これは土台が成熟した証拠=⁠新モードを完走しても欠落がほぼ出ない=コンポーネント化が一巡した。⁠残るトラックは「本当に新しい欠落が出るか/既存土台で足りるか」の最終テストになる。

拾った点

  • 🟡 ⁠TransactionList/LedgerList⁠(日付グループ+符号付き金額+残高推移)=#404 2/3。
  • 🟡 LoyaltySummaryCard の alert を中立な脚注に流用(脚注の差込口が欲しい)・Toast API が showToast(message,type)toast({title,description}) を期待した採用者を驚かせた=#404 に併記。
  • ✅ LoyaltySummaryCard/SegmentedControl/RadioCard/AmountBreakdown/Switch/StatGroup/BottomActionBar 全て これのために作られた か ゼロ摩擦。

⁠今回 src の新規コンポーネントなし⁠(4/5・バス完走・LoyaltySummaryCard/SegmentedControl 検証・SectionList 2/3)。

📊 コンポーネント化スコアボード(作成済 ⁠18個⁠

…Gantt(日中モード) / Leaderboard / SegmentedControl / LineChip 進行中:⁠SectionList/TransactionList(2/3)⁠・ValidityTimer(1/3)・ComparisonTable・Statistic tone/icon

📋 モード進捗 — 4モード完走

  • ✈️ 航空 ✅/🚆 鉄道 ✅/🚕 タクシー ✅/🚌 ⁠バス ✅(事業者向け5+利用者向け6 完走)⁠
  • 🚚 トラック:未着手(5モード目・最後)

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

  • ⁠トラック配送(新モード・最後)⁠ を 事業者向け→利用者向け で、or 既存モードの深掘り。※次回までに決める。

試す

バスが完走して4モード目——「完走」は4回繰り返すと型になる。事業者向けを 5-6 枚、利用者向けを 5-6 枚、対称に。そして4モード目の完走では、新しい欠落はもうほとんど出ない。

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

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

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

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

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

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