AI に通知設定画面を作らせてみた — 5/5 を阻むのは、もう docs だけ(やってみた #19)
/settings/notifications375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に通知設定画面を作らせてみた — 5/5 を阻むのは、もう docs だけ(やってみた #19)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。今回は 通知設定(プリファレンス)画面。
条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は /settings/notifications に、チャンネル別(Email/Push/SMS/In-app)のまとめ+個別トグル、通知レベルの RadioGroup、ダイジェスト頻度の Select、Quiet hours の TimePicker、保存/破棄+未保存の表示。
今回は最近直したコンポーネントを、実地で再検証しにいきました——RadioGroup のアクセシビリティ(#71)、Accordion の幅(#78)が、本当に効いているか。
結果 — 4.5/5(2回連続で新しい種類の問題ゼロ)
tsc/build 緑・ビルド時に静的生成・コンソール 0・サーバーとブラウザの表示ずれ(hydration)なし・375px でのはみ出し0。そして予備知識ゼロの AI の結論:
コードに新しい種類の問題はゼロ。ほぼクリーン。コンポーネントの観点では "完成" と読める。5/5 を阻んでいるのは、唯一 docs だけ。
#18 に続き、2回連続で新しい種類の問題ゼロ。 致命傷の連鎖は、止まりました。
実地で確認できたこと — 直したアクセシビリティが、効いていた
- RadioGroup:
role=radiogroup・Tab で止まるのは1回・ArrowDown で選択+フォーカス移動。#71 のフォーカスの持ち回り(roving tabindex)が実機で正しく動作。 - Accordion: 360px で幅に追従・はみ出し0。#78 の固定幅撤去が効いています。
- Switch: Space で切り替え・親→子5個へ「無効」が連鎖・二重発火なし。
- TimePicker: 状態を外から制御して往復・Quiet hours がオフだと全部の select が無効に。
「直した不備が、次の回で本当に消えている」——「出尽くすまで回す」の "閉じる" が、ここでも見えました。
残った粗さ — 全部 軽微、そして 5/5 の壁は docs
① Slider が固定幅 w-[200px](全幅のフォームで寸詰まり)→ #100・固定幅の一族の再発(.pen を起点に修正へ)。
② TimePicker が未設定を 00:00 と表示(真夜中と区別がつかない)→ #101・プレースホルダ表示にして修正。
③ RadioGroupItem の重複したクラス(checked/unchecked の両方に bg-transparent)→ #102・共通側に集約。
①②③のうち②③は今回ソースで反映(PR #103)、①は .pen 案件です。
そして 5/5 を阻んだ唯一の要因——Select の docs です。 予備知識ゼロの AI が「Select は Radix の組み合わせコンポーネント(onValueChange/SelectItem)」だと誤って推測しました。実際は OS 標準の <select>+子の <option> です。リポジトリの doc 自体は正しいのに、コード例がクライアント側描画で "Loading…" のまま(#50)→ AI が実例を読めず、prop 名から誤って推測してしまった。=docs をデプロイすれば、これは消えます。
学び — "完成" の手前にいる
#3 致命傷 → #13-16 構造 → #17 組み立てが未完 → #18 仕上げ → #19 docs のみ
残っているのは、もうコンポーネントではありません。 予備知識ゼロの AI が「コンポーネントそのものと戦ったことは一度もなく、戦った相手はいつも docs だった」と2回連続で言いました。これは——コンポーネントの側は出尽くしたということです。5/5 が出ないのは、コードのせいではなく、まだデプロイしていない docs のせい。
正直に言います。「完全に出尽くした」と宣言するには、あと数回、新しい種類の問題ゼロが続くことが要ります。 でもカーブの行き先は、もう見えています。
次回予告(やってみた #20)
- エラー画面 / 空のダッシュボード ほか。新しい種類の問題ゼロが続けば、コンポーネント側の "出尽くし" を確定させます。
試す
- gunjo.jp / npm
@gunjo/ui/ GitHub - 前回まで: #1〜#18
- まとめ記事: 群青(@gunjo/ui) / なぜ要るのか: AI 時代のデザインシステム論
- GunjoUI by UIXHERO
まだ alpha。でも"出尽くし"の手前まで来ました——盛らず、あと数枚で確定させます。
この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import しているコンポーネントです。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。