#72スコア 4.5/5教育

AI に出欠管理を作らせてみた — 昨日「広げた」部品が、今日ちゃんと見つかった(やってみた #72)

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

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

解説記事

AI に出欠管理を作らせてみた — 昨日「広げた」部品が、今日ちゃんと見つかった(やってみた #72)

やってみたシリーズ: 自作のデザインシステム @gunjo/ui群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。教育3枚目——出席管理 / 出欠(生徒×日付の出欠マトリクス × 出席率 × 日次サマリ × 欠席連絡)。

教育の3枚目は出欠管理。生徒×日付のマトリクスに出席/欠席/遅刻を記録する画面。そして前回(#71)の学び——「ScheduleGrid の framing が狭くて見つからなかった→広げた」——が、今日その通りに効いたかを検証する回になった。

結果 — 4.5/5

tsc/build 緑・console 0・375px横溢れ0・生徒×日付マトリクス・出席率メーター・日次サマリ・出欠入力 Sheet(ライブ再計算)・要注意フラグ。

今回の主役 — 「広げた framing」が、翌回の cold AI にちゃんと届いた

前回 #71 で、ScheduleGrid が「時間割用」と狭く説明されて見つからなかった。説明を「汎用2Dマトリクス(成績表/シフト/比較行列…)」に広げた。今回 #72、出欠マトリクス(生徒×日付)を組む cold AI は——

I used the ScheduleGrid primitive — I did not hand-roll it. Discoverability: excellent for this non-schedule use. Despite the name "ScheduleGrid," its JSDoc and the gunjo.jp docs page explicitly list "gradebooks," "shift rosters," and "comparison/cohort matrices." "Attendance" isn't named verbatim, but "students × days, rich navigable/editable cells, a tone per cell" is described almost exactly. I found it on the first catalog scan. This is a model of how to document a component so it gets reused outside its namesake domain.

閉ループが完成した:

#70 ScheduleGrid を build(時間割)
#71 成績表で必要 → framing 狭く見つからず → 説明を広げる
#72 出欠で必要 → 一発で発見・採用「first catalog scan」

「部品を作る」だけでなく「発見されるように説明を広げる」ことの効果が、翌回の実測で証明された。framing は飾りじゃなく、再利用の可否を決める設計要素。

越境も継続: Meter direction="higher-is-better"+target={90}→出席率(90%目標ライン・要注意=destructive・連続越境)・DistributionBar→日次サマリ・Statistic→クラスKPI。

src で land — Badge に icon prop(3回目で build)

  • 🟡→✅ Badge が色のみだった穴を fix(#66 OEE・#69 引当・#72 出欠で3回手組み=<Badge className="gap-1"><Icon h-3 w-3/>{label}</Badge>)。ReferenceValue/Delta は色非依存なのに最頻出の Badge が色だけ=内部不整合。3回ルールで build(#276PR #292):
    • icon?: ReactNode — 先頭グリフを自動サイズ(svg→12px)+余白(gap-1)。装飾扱い(aria-hidden)でラベルが意味を担う=色だけに頼らないステータスピルが1プロパティ
    • docs の「アイコン付き」例を手組みから prop に・variant 表に info/success/warning 補完。ブラウザ実証済。

起票だけ

  • 🟡 Sheet/Dialog に Body スクロール領域無(長いフォームで overflow-y-auto を手当て・#293・1回目)。
  • 🟡 トーン語彙が4種重複(ScheduleCellTone/ChartTone/MeterTone/BadgeVariant)で正準な semantic-status 型が無く、同じ状態をグリッド/バッジ/チャートに出すたび自前マッピング(#294・1回目・アーキ)。
  • 🟢 凡例(legend)コンポーネント無(Badge icon で status token は揃ったので合成可)。

学び — 「発見可能性」は機能と同格の品質

#71 で「在るのに見つからない=無いのと同じ」と書いた。#72 はその逆——説明を広げたら、翌日ちゃんと見つかった。デザインシステムの品質は「正しい部品が在る/正しく動く」だけでなく「正しい部品が見つかる」を含む。cold-test は毎回「文脈ゼロの利用者が探して見つけられるか」を試すので、framing の良し悪しが定量的に出る。そして Badge icon を3回ルールで land——色だけに頼らないステータスが、もう1プロパティで書ける。

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

  • **教育をもう1枚(学習進捗 / LMS ダッシュボード)**で4枚目。Progress/Meter 系の到達度・課題提出を観測。

試す

まだ alpha。昨日「広げた」ScheduleGrid が今日ちゃんと発見され、Badge icon を3回ルールで land した回。


<!-- 公開前: 相互URL差込/スクショ確定/EN(dev.to)ミラー -->

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

この画面のソースが直接 import している部品です。

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

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