#32スコア 4/5金融

AI に銀行の振込フローを作らせてみた — 業界特有の画面が、2回前のフォームに隠れていたアクセシビリティ・バグを炙り出した(やってみた #32)

ルート: /transfer
デスクトップ表示
モバイル表示

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

解説記事

AI に銀行の振込フローを作らせてみた — 業界特有の画面が、2回前のフォームに隠れていたアクセシビリティ・バグを炙り出した(やってみた #32)

⁠やってみたシリーズ⁠: 自作のデザインシステム @gunjo/ui群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。今回は読者の発案で ⁠業界特有の画面 = 日本のネットバンキングの振込フロー⁠(振込元口座→振込先→金額→確認→本人確認→結果)。

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。金額の桁区切り・口座番号の伏せ字・残高不足チェック・本人確認…金融特有の制約は、汎用の画面では当たりません。

結果 — 4/5

tsc/build 緑・console 0・375px とデスクトップで検証済み・全フィールドのエラーが aria で連携。

この回の主役 — 厳格な金融フォームが、隠れていたアクセシビリティ・バグを暴いた

#29→#30 で作り込んだフォームの仕組み(FormField/FormControl が id/aria を自動で配線)は、#30 の予備知識ゼロの AI に「本物」と認定されました。⁠その2回あと、銀行フォームで実バグが出ました⁠:

🔴 FormControl が、FormDescription の無いフィールドにも aria-describedby="…-description" を差し込んでいた⁠ — 存在しない id を指している。axe(アクセシビリティ検査)が弾く ARIA バグだ。

振込フォームには ⁠説明文の無いフィールド⁠(銀行名・支店名・口座種別)が大量にあります。⁠説明文を毎フィールドに付ける汎用デモでは絶対に出ない不備⁠が、金融という業界特有の「説明の無い項目だらけ」の画面で、初めて露出しました。

直し(#175・同じ PR で反映)

FormField が、子に FormDescription が在るかを見て、⁠在るときだけ⁠ description の id を予約するように。無ければ状態共有は undefinedFormControl が落とす。描画時に決めるので、サーバー側描画(SSR/hydration)でも安全。⁠ブラウザで実証⁠: docs の説明の無い3コントロールが aria-describedby: null(宙ぶらりんの参照ゼロ)に。

「業界特有」は別の層の欠落を出す

読者の直感どおりでした。汎用の画面(設定・EC・ダッシュボード)では出なかった欠落が、銀行フォームで噴き出しました:

  • 🟠 ⁠金額入力のコンポーネントが無い⁠NumberInput<input type=number> なので 1,000,000(桁区切り)を表現できない。¥ の接頭辞も地域設定も無し。EC/請求/銀行のすべての画面の主役なのに手組み(#176・最大の欠落・Codex)。
  • 🟠 伏せ字表示(普通 ****1234)のコンポーネント無し(#177)/確認まとめの DescriptionList 無し(#178)。
  • 🟠 Stepper が操作できない(#157 を再確認)/検証の状態層が無い(#166 を再確認)。

それでも土台は強い — 複利は続く

予備知識ゼロの AI が名指しで褒めたのは、また⁠前ラウンドまでの修正⁠でした:

  • ⁠Form/FormField が白眉⁠:「配線されたフィールドに手書きの aria はゼロ。4つの invalid が、各 role=alert に describedby でつながる」。
  • ⁠Select label(#164)・RadioGroupItem label(#162)・CardTitle/AlertTitle as(#116/#163)・StatusScreen headingLevel(#104)・PasswordInput(PIN をアクセシビリティのツリーに漏らさない)⁠ を全部称賛。
  • ダークも自動で反転(bg-card 白→rgb(2,8,23))。

学び

汎用デモ: 全フィールドに説明文 → バグは隠れたまま
業界特有(銀行): 説明の無い項目だらけ → 隠れバグが露出

⁠「使う業界」を変えると、コードの別の面が試されます。⁠ まとめ記事の主張「難しい2割を担保する」を、断定ではなく⁠こうして1つずつ実証⁠していきます。

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

  • ⁠保険/医療フォーム / 物流トラッキング / POS⁠ など別の業界。業界を変えるほど欠落が出る。

試す

まだ alpha。業界を変えたら、隠れていたバグが出た回。

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

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

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

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

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

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