コールドテスト

基盤UI・汎用のコールドテスト — 連載最初の30画面で、群青が業界を問わずどこまで通用するかを試す

設定・ダッシュボード・データテーブル・コマンドパレット・受信トレイ・カレンダー──業界を絞らない30枚の汎用画面に、予備知識ゼロの AI が gunjo/ui だけで挑んだ記録。連載の出発点で、後のすべての業界画面が乗る土台が、どこまで安定しているかを確かめました。

基盤UI・汎用 の cold test、30 画面のまとめ。

なぜ汎用UIこそ、通用するかを試すのが難しいのか

業界画面が組めるかどうかは、その下にある汎用コンポーネント(Form / Table / Tabs / Tooltip…)のキャンバスがどれだけ描き込みに耐えるかで決まります。連載の最初の30枚は、業界の専門知識ではなく、汎用UIだけで戦う回でした。一般的なコンポーネントが「だいたい動く」のと、「業界画面の重さに耐える」のは別物です。Tooltip Provider の SSR クラッシュ、HTML/CSSチャートが任意データで崩れないか、FormField context が aria を正しく注入できるか──キャンバスの強度は、こうした重いシナリオに当てるまで見えてきません。

ここで群青に加わったコンポーネント

汎用30枚の中で群青のキャンバスが描き込まれていった代表的な動きです。新規コンポーネントの実装というより、既存コンポーネントの境界を広げ、足りないコンポーネントを課題として記録し、複数の領域で再利用できる形に固めていった回でもあります。

FormField context(#152 で追加)が #30 で別の cold AI に「real form/validation/a11y system」と評価されたように、上位の協調コンポーネントほど次の回での複利が大きいことが見え始めた30枚でした。

基盤UI・汎用 の全ラウンド

基盤UI・汎用 カテゴリの 30 画面を、ラウンド順に並べています。各カードから cold AI が組んだソース、解説記事、デスクトップ/モバイルのプレビューに飛べます。

本当に AI に使わせてみた — 予備知識ゼロの AI に @gunjo/ui で設定画面を作らせる(やってみた #1) preview
#1スコア 4/5
本当に AI に使わせてみた — 予備知識ゼロの AI に @gunjo/ui で設定画面を作らせる(やってみた #1)
/settings

`@gunjo/ui` を作るとき、私は「**AI から使えるように設計した**」と書きました。コンポーネントを型つきで一か所からまとめて呼べること、コンポーネントの仕様を機械が読めること、AI にそのまま渡せる説明があること——AI が「眺める」だけでなく「読んでそのまま使える」形を、最初から組み込んだ、と。

またしても本当に AI に使わせてみた — モーダル告知バナーを @gunjo/ui で(やってみた #2) preview
#2スコア 4/5
またしても本当に AI に使わせてみた — モーダル告知バナーを @gunjo/ui で(やってみた #2)
/announce

[前回](#)と同じ条件です。群青のことをまったく知らない AI エージェント1体に、**公開済みの npm `@gunjo/ui`(alpha.2)と [gunjo.jp](https://gunjo.jp) の docs だけ**を渡す。ソースリポジトリは見せない。まっさらな Next.js(React 19 / Tailwind v4)で、`npm run build` が通るところまで自力で。

またしても AI に使わせてみた — カルーセル、そして "氷山の一角" の話(やってみた #3) preview
#3スコア 4/5
またしても AI に使わせてみた — カルーセル、そして "氷山の一角" の話(やってみた #3)
/carousel

条件は毎回同じ。予備知識ゼロの AI に、**公開済みの npm `@gunjo/ui`(alpha.2)と [gunjo.jp](https://gunjo.jp) の docs だけ**を渡す。ソースは見せない。まっさらな Next.js(React 19 / Tailwind v4)で `npm run build` が通るまで自力で。

AI にダッシュボードを作らせてみた — チャートは"任意データで壊れない"のか(やってみた #4) preview
#4スコア 4/5
AI にダッシュボードを作らせてみた — チャートは"任意データで壊れない"のか(やってみた #4)
/dashboard

群青のチャートは SVG じゃなく **HTML/CSS のレイアウト用のコンポーネント**で作ってある。狙いは「**任意のデータで崩れないこと**」。固定された綺麗なサンプルじゃなく、現実の汚いデータ——桁違いのスケール、外れ値、ゼロ、極小値——を入れても破綻しない、を担保したい。

AI にログイン画面を作らせたら、直したバグが消えていた(やってみた #5) preview
#5スコア 4.5/5
AI にログイン画面を作らせたら、直したバグが消えていた(やってみた #5)
/login

今回は条件を1つだけ変えた。**渡すパッケージを、出荷物そのもの(直前まで直していた最新版)にした。** #3 で見つけた、全体に共通する欠陥——`Tooltip` を使う ~28 コンポーネントが provider 無しで、サーバー側の事前描画(SSR)でクラッシュする問題([#52](https://github.com/uixhero/gunjo/issues/52))——を直した版です。条件は相変わらず「**パッケージ+docs だけ・ソースは見せない**」。そして今回は **「TooltipProvider で包め」というヒントを、あえて…

AI に管理画面のデータテーブルを作らせてみた(やってみた #6) preview
#6スコア 4/5
AI に管理画面のデータテーブルを作らせてみた(やってみた #6)
/users

条件は同じ。**出荷物そのもの(#52/#53 修正入り)+docs だけ、ソースは見せない、provider のヒントも渡さない。** お題は、名前・ロール・ステータス・参加日・MRR を持つ ~16 行の**ユーザー一覧**に、テキスト検索+ステータスの Select フィルタ+列ソート+ページネーション+ステータス Badge。

AI に ⌘K コマンドパレットを作らせてみた(やってみた #7) preview
#7スコア 4.5/5
AI に ⌘K コマンドパレットを作らせてみた(やってみた #7)
/command

条件は同じ(出荷しているパッケージそのもの+docs だけを渡し、ソースは非公開、TooltipProvider の巻き方などのヒントも与えない)。お題は、⌘K(と Ctrl+K)で開くパレット、入力での絞り込み、グループ分けされたコマンド(Navigation / Actions / Settings)、アイコン、ショートカットの表示、矢印キー+Enter でのキーボード操作、選ぶと閉じてトースト、まで。

AI に "誰も作りたがらない states" を作らせてみた — 一周の締め(やってみた #8) preview
#8スコア 4/5
AI に "誰も作りたがらない states" を作らせてみた — 一周の締め(やってみた #8)
/inbox

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/inbox` に、ローディング(Skeleton)/空(EmptyState)/一覧(Card)の3つの状態を切り替えられる UI と、操作したときのトースト。

AI に Kanban ボード(ドラッグ&ドロップ)を作らせてみた — "枯れて" なかった(やってみた #9) preview
#9スコア 4/5
AI に Kanban ボード(ドラッグ&ドロップ)を作らせてみた — "枯れて" なかった(やってみた #9)
/board

#8 のあと「粗さが出尽くし始めた」と書きかけました。でも——**それは早とちりでした**。バグの "種類" は収束してきたけれど、**試した画面の幅が全然足りていない**。特に**操作の重い画面**は一度も通していません。そこに新しい粗さが潜んでいる。だから、作りの複雑な画面から再開します。

AI にファイルアップロードを作らせたら、自分のコンポーネントが半完成だった(やってみた #10) preview
#10スコア 3/5
AI にファイルアップロードを作らせたら、自分のコンポーネントが半完成だった(やってみた #10)
/upload

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/upload` に、ドロップゾーン、選択したファイルの一覧(名前・サイズ・種類・削除)、**ファイルごとの進捗バー**、全体の Upload all、そして空状態。

AI にカレンダー予約を作らせてみた — 日付は複雑系の本丸(やってみた #11) preview
#11スコア 4/5
AI にカレンダー予約を作らせてみた — 日付は複雑系の本丸(やってみた #11)
/booking

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/booking` に、日付選択(過去日・満席日は無効)、時間帯の選択、サービス選択、氏名/メール、確定すると内容がまとめに反映される、まで。日付・時刻まわりは、サーバーとブラウザで描画がずれる罠(hydration)や、地域設定(ロケール)の落とし穴が多い、作りの複雑な領域です。

AI に Chat インターフェースを作らせてみた — 3度目の固定枠で「根が同じ」だと見えた(やってみた #12) preview
#12スコア 4.5/5
AI に Chat インターフェースを作らせてみた — 3度目の固定枠で「根が同じ」だと見えた(やってみた #12)
/chat

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/chat` に、メッセージ列(送信者・アバター・時刻・自分/相手の見分け)、入力欄(Enter で送信)、送信後の「入力中…」→返信のシミュレート、空状態。

AI にオンボーディング・ウィザードを作らせてみた — 専用コンポーネントが "本業" を外していた(やってみた #13) preview
#13スコア 3.5/5
AI にオンボーディング・ウィザードを作らせてみた — 専用コンポーネントが "本業" を外していた(やってみた #13)
/onboarding

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/onboarding` に、5ステップ(Welcome → プロフィール入力 → 設定 → チーム招待 → 完了)、ステップの進み具合の表示、Back/Next、**各ステップの入力が妥当になるまで Next を止める**、完了のまとめ。

AI に料金ページを作らせてみた — また "名前負け"、そして依存の混入(やってみた #14) preview
#14スコア 3.5/5
AI に料金ページを作らせてみた — また "名前負け"、そして依存の混入(やってみた #14)
/pricing

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/pricing` に、3〜4 プランのカード("Most popular" を強調)、月額/年額トグル(年額は割引で、価格がその場で更新)、機能リスト(✓/✗)、比較表、FAQ。

AI に通知センターを作らせてみた — 基本コンポーネントは枯れた。次の課題は"上の層"へ移った(やってみた #15) preview
#15スコア 3/5
AI に通知センターを作らせてみた — 基本コンポーネントは枯れた。次の課題は"上の層"へ移った(やってみた #15)
/notifications

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/notifications` に、種別つきの通知列(mention/comment/reaction/system)、アバター、相対時刻、既読/未読+未読バッジ、全件既読、時間ごとのグループ分け、空状態、スケルトン。

AI に IDE 風エディタを作らせてみた — "出尽くし" の境界線がはっきりした(やってみた #16) preview
#16スコア 3/5
AI に IDE 風エディタを作らせてみた — "出尽くし" の境界線がはっきりした(やってみた #16)
/editor

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/editor` に、メニューバー+ツールバー、パンくず、左のファイルツリー、中央のタブ+エディタ、右パネル、下のステータスバー。

AI に検索結果ページを作らせてみた — "コンポーネントのフリをした、ただの見た目"(やってみた #17) preview
#17スコア 4/5
AI に検索結果ページを作らせてみた — "コンポーネントのフリをした、ただの見た目"(やってみた #17)
/search

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/search` に、検索バー+結果件数、フィルタ(カテゴリのチェックボックス・種別の Combobox・タグ)、選択中フィルタのチップ、並べ替え、結果カード、ページネーション、読み込み中→結果→空状態。

AI にプロフィールページを作らせてみた — 粗さが尽きてきた(やってみた #18) preview
#18スコア 4.5/5
AI にプロフィールページを作らせてみた — 粗さが尽きてきた(やってみた #18)
/profile

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/profile` に、ヘッダー(アバター・名前・自己紹介・統計)、フォロー/編集、タブ(Posts/About/Activity)、About(メタデータ)、Activity(タイムライン)、編集フォーム(モーダル+入力チェック)。

AI に通知設定画面を作らせてみた — 5/5 を阻むのは、もう docs だけ(やってみた #19) preview
#19スコア 4.5/5
AI に通知設定画面を作らせてみた — 5/5 を阻むのは、もう docs だけ(やってみた #19)
/settings/notifications

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/settings/notifications` に、チャンネル別(Email/Push/SMS/In-app)のまとめ+個別トグル、通知レベルの RadioGroup、ダイジェスト頻度の Select、Quiet hours の TimePicker、保存/破棄+未保存の表示。

AI に空ダッシュボードを作らせてみた — 連続クリーンが、途切れた(やってみた #20) preview
#20スコア 4.5/5
AI に空ダッシュボードを作らせてみた — 連続クリーンが、途切れた(やってみた #20)
/dashboard-empty

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/dashboard-empty` に、ようこそバナー、値がゼロの Statistic、データが空のチャート、オンボーディングのチェックリスト(Progress)、空のアクティビティ(EmptyState)、フルページの StatusScreen。

AI にブログ記事ページを作らせてみた — アクセシビリティの"根"が見えた(やってみた #21) preview
#21スコア 4.5/5
AI にブログ記事ページを作らせてみた — アクセシビリティの"根"が見えた(やってみた #21)
/blog/post

条件は同じ(出荷しているパッケージそのもの+docs だけ、ソース非公開)。お題は `/blog/post` に、パンくず・タイトル・著者・タグ、目次、h2/h3 の本文、リスト、引用、複数の CodeBlock、囲み(callout)、関連記事。

AI にランディングページを作らせてみた — 「出尽くした」を破る2つの実バグ(やってみた #22) preview
#22スコア 3.5/5
AI にランディングページを作らせてみた — 「出尽くした」を破る2つの実バグ(やってみた #22)
/landing

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は、ナビ・主役ブロック(h1+CTA)・ロゴの帯・特徴グリッド・指標バンド・お客様の声・価格3プラン・FAQ・最終CTA・フッターの全部入りランディング。

AI にドキュメントサイトのトップを作らせてみた — 骨格は通る、でも"中身"が無い(やってみた #23) preview
#23スコア 3.5/5
AI にドキュメントサイトのトップを作らせてみた — 骨格は通る、でも"中身"が無い(やってみた #23)
/docs-home

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は、上部ナビ+検索(⌘K)、左サイドバー(グループ分けされたナビ・モバイルではドロワー)、パンくず、本文(h1+クイックスタートの CodeBlock+囲み+特徴リスト)、右の「On this page」目次、前へ/次へ、フッター。

AI に管理ダッシュボードを作らせてみた — DataTable は強い、でも"管理画面の作法"が足りない(やってみた #24) preview
#24スコア 〜3.5/5
AI に管理ダッシュボードを作らせてみた — DataTable は強い、でも"管理画面の作法"が足りない(やってみた #24)
/admin

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は、サイドバー+トップバーの外枠に、**KPI 行・データテーブル(ステータスバッジ・行選択・一括アクション・行メニュー・ソート・ページネーション)・複合フィルタ・編集 Sheet・空状態・読み込み中・トースト**。#4(チャート)/#6(素の table)とは別の、**重い「データ操作」の組み立て**を突きました。

AI に価格比較ページを作らせてみた — コンポーネントは強い、でも"看板"テンプレが役割を外す(やってみた #25) preview
#25スコア 4/5
AI に価格比較ページを作らせてみた — コンポーネントは強い、でも"看板"テンプレが役割を外す(やってみた #25)
/pricing

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は、月/年トグル(価格が実際に変わる)・3〜4プランのカード(1つを「おすすめ」強調)・**機能比較のマトリクス(行=機能・列=プラン・✓/✗/値)**・FAQ・最終 CTA。

AI に受信トレイ(メール一覧+詳細)を作らせてみた — 枠組みは強い、でも"選べるリスト"が無い(やってみた #26) preview
#26スコア 4/5
AI に受信トレイ(メール一覧+詳細)を作らせてみた — 枠組みは強い、でも"選べるリスト"が無い(やってみた #26)
/inbox

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は、フォルダのサイドバー(未読数つき)・メッセージ一覧(送信者・件名・抜粋・未読・スター・選択・一括操作)・詳細ペイン(本文+返信ツールバー)・**デスクトップは分割/モバイルは一覧↔詳細を戻るボタンで切替**・空状態・スケルトン。#15 通知センターや #16 エディタとは別の「一覧+詳細」の組み立てです。

AI に週表示カレンダー(予定表)を作らせてみた — 汎用コンポーネントは綺麗、でも"分野ごとの表示層"がゼロ(やってみた #27) preview
#27スコア 4.5/5
AI に週表示カレンダー(予定表)を作らせてみた — 汎用コンポーネントは綺麗、でも"分野ごとの表示層"がゼロ(やってみた #27)
/schedule

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は Google カレンダー風の週ビュー: ツールバー(週の移動・Day/Week/Month 切替・新規)・7日×時間軸のグリッド・終日レーン・**イベントブロック(開始/終了から配置・重なりは横並び・カテゴリ色)**・現在時刻ライン・イベント詳細 Popover・空きスロットで作成 Dialog・375px では単日/一覧表示にまとめる。

AI にファイルブラウザを作らせてみた — 直した不備が全部「武器」になって返ってきた回(やってみた #28) preview
#28スコア 4.5/5
AI にファイルブラウザを作らせてみた — 直した不備が全部「武器」になって返ってきた回(やってみた #28)
/files

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は、フォルダツリー+パンくず+検索/ツールバー+**グリッド/リスト切替**のファイル一覧+**右クリックメニュー**+その場でのリネーム+プレビューペイン+空状態。

AI に設定ウィザード(検証つき多段フォーム)を作らせてみた — "見た目" はあるが "フォームの仕組み" が無い(やってみた #29) preview
#29スコア 3.5/5
AI に設定ウィザード(検証つき多段フォーム)を作らせてみた — "見た目" はあるが "フォームの仕組み" が無い(やってみた #29)
/setup

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は「ワークスペース作成」4ステップ: アカウント→組織→設定→確認。**Next を押すと必須/形式をチェック→止める→その場にエラー表示→最初の不正なフィールドへフォーカス移動**、確認ステップで編集にジャンプ+規約に同意で送信。**フォームの入力チェックの軸**を初めて深く突きました。

プレビューを表示できません
#30スコア 4.5/5
AI に設定ハブを作らせてみた — 前の回で作ったフォームの仕組みが、次の AI に"本物"と認定された(やってみた #30)
/account

条件はいつも通り(出荷している npm パッケージ+docs サイトだけ。ソース非公開)。お題は GitHub/Stripe 風の複数セクション設定: 各セクションのフォーム+検証+保存、チーム表、招待ダイアログ、そして「ワークスペース名を入力して確定」する危険な操作エリア。

この業界が gunjo に残したもの

汎用30枚は、新しいコンポーネントを量産する場ではなく、「このキャンバスに乗せて以後の業界画面を組めるか」を判定する目盛りでした。HTML/CSSチャートが任意データで崩れないこと、FormField の自動 aria 注入が cold AI に発見されること、CommandPalette や受信トレイの list-detail が一発で組めること──ここで証明されたキャンバスの上に、医療・物流・運輸・金融まで全業界の画面が積み重なっています。