AI にタクシーの乗車履歴・領収書を作らせてみた — TicketStub が「正しく使われなかった」回(やってみた #149)
/taxi-history375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI にタクシーの乗車履歴・領収書を作らせてみた — TicketStub が「正しく使われなかった」回(やってみた #149)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。タクシーの利用者向けを深掘り(配車#147・予約#148 に続く3枚目。事業者向け6 に対し利用者向けを厚く継続中)——乗車履歴・領収書・経費精算(履歴一覧・領収書発行・但し書き/宛名・経費まとめ)。
結果 — 4/5、アカウント系も土台に乗った
tsc 緑・375px mobile-first。予備知識ゼロの AI(群青を一度も触っていない設定):
日本の利用者向けの履歴/領収書画面に向いている。 PageHeader/LoyaltySummaryCard/StatGroup/FilterChips/ListCard/AmountBreakdown/EditableField/Sheet/BottomActionBar の骨格はほぼそのまま使える・JPY 既定。
履歴一覧(ListCard)・利用サマリ(LoyaltySummaryCard+StatGroup)・絞り込み(FilterChips)・領収書(AmountBreakdown+宛名 EditableField+Sheet)・経費まとめ(複数選択+BottomActionBar)が全て摩擦ゼロ。BottomActionBar は #147→#148→#149 と3連続で自力発見(今回は選択モードの「選択中N件」バー)。
観測の核 — TicketStub が「正しく使われなかった」=守備範囲の確定の成熟形
領収書に何を使うか。素朴には「TicketStub(券面)が領収書っぽい」と当てたくなる。だが予備知識ゼロの AI は使わなかった:
「TicketStub は領収書に合わない。docstring が自分でそう言っている=『読み取れるパス/クーポン/会員証の券面(バーコード/QR+コードラベル)・スキャン入力の消費者側の対』で、紙の領収書ではない。日本の税の領収書にバーコードは無い。ここで TicketStub を使うのは間違い。正しく使わなかった。」
これは別業界での自力発見の逆=『業界越えさせない』の成熟。 #128 で TicketStub を作ったとき docstring に「ScanInput の消費者側の対・搭乗券/クーポン/会員証」と用途を明記し、索引で「読み取る→ScanInput / 提示する→TicketStub」と守備範囲を割った。その守備範囲の明記が、9回後の予備知識ゼロの AI に『ここでは使うな』を正しく伝えた。
コンポーネントの docstring は「どこで使うか」だけでなく「どこで使わないか」も書く——両方書いて初めて、予備知識ゼロでも誤用を防げる。#146 の HeatmapChart(ここでない/ここだ)に続く、守備範囲の確定の両面のもう一例。固まったコンポーネントの真の完成は、正しく使われることと、誤って使われないこと、両方が起きたとき。
拾った欠落 — 月別グループの一覧と、モバイル複数選択の誤誘導
- 🟠 SectionList/GroupedList:月別のグループ(見出し+行+小計)を手組み。「ListCard は1行・月見出し+小計を出すグループ一覧のコンポーネントが無い・履歴/利用明細/取引履歴/明細 の背骨」=#404(StatusBoard の groups[]/Itinerary の days[] はあるが、汎用のグループ行の一覧が無い)。
- ✅ 索引の是正:予備知識ゼロの AI が「モバイルの複数選択+一括」で DataTable(デスクトップの表)に誤誘導された→ListCard+Checkbox+BottomActionBar に是正 PR#405(索引が事業者向け/ダッシュボード寄りで利用者向けの選択を黙って誤誘導していた)。
- 🟡 ListCard の
selectedが見た目だけ(aria-pressed/selected 無し)=#404 併記。
今回 src の新規コンポーネントなし(4/5・アカウント土台の業界越え・TicketStub の守備範囲を確定・SectionList を課題に記録・索引を是正)。
📊 コンポーネント化スコアボード(作成済 15個)
…PageHeader / Itinerary / TicketStub / Stringline / StatusBoard / ExpiryBadge / BottomActionBar 進行中:SectionList・DateTimePicker/PlaceField・ApproachCard・StatusLevel 2/3・Leaderboard/CaseTable
📋 タクシーの利用者向け 進捗(深掘り継続)
- 🚕 タクシー:事業者向け6 / 利用者向け3(配車/予約/履歴) ← まだ 事業者向け6 と非対称・継続
- 残り 利用者向け候補:乗車後 評価/忘れ物・会員/サブスク/クーポン・法人配車
次回予告(やってみた #150・節目)
- タクシーの利用者向けをさらに(評価/忘れ物 or 会員/クーポン 等)。※どこを掘るかは、次回までに決める。
試す
- gunjo.jp / チケット券面 TicketStub / リストカード ListCard / 内訳 AmountBreakdown / npm
@gunjo/ui/ GitHub / 前回まで #1〜#148 - GunjoUI by UIXHERO
TicketStub が「正しく使われなかった」——固まったコンポーネントの真の完成は、正しく使われることと、誤って使われないこと、両方が起きたとき。docstring は「どこで使わないか」も書く。
この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import しているコンポーネントです。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。