AI にコンテンツ配信系譜デスクを作らせてみた — 先週埋めた穴が、今週そのまま発掘された(やってみた #82)
/content-syndication375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI にコンテンツ配信系譜デスクを作らせてみた — 先週埋めた穴が、今週そのまま発掘された(やってみた #82)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。メディア/出版3枚目——コンテンツ二次利用・配信系譜デスク(OSMU / シンジケーション管理画面)。1本の源記事が多言語版・地域版・動画・Podcast・SNS に派生し、「週刊まとめ特集」が複数記事から合流する。
#81 で「月カレンダー(イベント付き)の primitive が無い」、#67 で「ロット系譜は多親 DAG なのに TreeView(単親)しか無い」——この2つを最優先の残大型として記録した。そして整備ラウンドで EventCalendar と LineageGraph を腰を据えて build した。
**#82 は、その2つを「文脈ゼロの cold AI が自力で見つけて使えるか」を観測する回。**部品を作っただけでは複利は証明されない。次に来た fresh AI が、何も教えられずに発掘して初めて「効いた」と言える。
結果 — 4.5/5・カスタム primitive ゼロ
tsc/build 緑・console 0/0(a11y 警告も自力で潰した後)・1280px/375px 実機確認。サマリ指標・ステータス分布バー・系譜 DAG・エンバーゴ月カレンダー・配信先転載テーブル・ドリルインのアセット詳細——構造要素はすべて @gunjo/ui。手組みの primitive はゼロ。
観測の主役 — 先週の2つが、そのまま発掘された
cold AI(群青を一度も触ったことがない設定)のレポートから:
LineageGraph(the star・zero-friction). A layered DAG with genuine multi-parent / multi-child support — the OSMU fan-out (1 source → 6 derivatives) and fan-in (週刊まとめ ← 3 sources) dropped straight in. Nodes are focusable buttons; each composes an aria-label naming its 上流/下流 neighbours.tonevocabulary matched my status taxonomy 1:1. The JSDoc literally lists "data lineage" and "approval routing with joins".
EventCalendar(zero-friction). Month grid with event chips,todayinjectable (SSR-safe),role="grid"+ roving-tabindex. I modeled publish dates and 🔒 embargo-release dates as separate chips; both landed on the correct cells.
#67 で「67枚目にして初めて部品では描けない構造に当たった」と書いた多親 DAG の系譜が、#82 では "the star" として摩擦ゼロで嵌まった。 STATUS_TO_LINEAGE_TONE は「ほぼ恒等写像」——状態語彙が 1:1 で一致したと。これが、穴を起票 → 腰を据えて build → 次の回で自力発掘、という複利ループが閉じた瞬間。
DataTable(sort/filter + renderCard でモバイルはカード崩し)・InspectorPanel+MetadataList+Timeline(アセット詳細)・Statistic・DistributionBar・Badge icon・Timeline・Tabs/Sheet/Card も全部既存部品で。
それでも見つかった穴(全部起票・no-build)
4.5 の 0.5 は本物の摩擦。3回ルール未達なので今回も src build はゼロ、全部起票:
- 🟠
AssetInspectorPanelが画像専用(#324・1回目)。aspect-squareサムネ+画像メタ(File name/Dimensions/Size)+☆Rating が baked で、翻訳/動画/Podcast/SNS スレッドのアセットに合わない。cold AI はInspectorPanel+MetadataList+Timelineに1段降りて正しく組んだ(下位部品が個別 export されていて綺麗に降りられた)。非画像バリアント orrenderPreview+自由メタ、最低でも docs レシピが要る。 - 🟠
Sheet/Dialog/Modalの aria-describedby 警告(#323・a11y)。SheetDescription無しで開くと Radix がMissing Descriptionを毎回 console に吐く。tsc/buildは緑なのでブラウザで開かないと気付けない——cold AI が実機確認したから捕まえた。自動 silence か自動付与を Sheet/Dialog/Modal/Drawer 横断で。 - 🟡
Bannerが1行固定(#322・2回目・#81 でも観測)。h-10+truncateで複数行が黙ってクリップ。Banner(1行ストリップ)vsAlert(ブロック callout)の使い分けが名前から分からない。3回目が来たら API 変更へ。 - 🔵 docs に「ユースケース別」索引が無い(#325・今回いちばん systemic)。実は cold AI は
EventCalendarを危うく見落としかけた——同じ gunjo-test の #81 build が「the library ships NO event-calendar primitive」という(今は誤りの)ヘッダコメントを残しており、それを信じず barrel を全部読んだから見つけた。150+ export だと良い名前でも埋もれる。「スケジューリング → ScheduleGrid/EventCalendar/WeekView/Gantt」のような task 別索引が、再実装を防ぐ最高レバレッジの docs 改善。
学び — 「作って終わり」ではなく「次の cold AI が見つけて初めて効いた」
部品を作った回(整備ラウンド)の自己評価は当てにならない。価値が証明されるのは、何も知らない次の AI がそれを発掘して摩擦ゼロで使ったとき。 #82 は LineageGraph と EventCalendar の両方でそれが起きた——しかも「the star」と「zero-friction」という最上級の評価で。
同時に #325 が刺さる: 「在るのに見つからない」は「無い」と同じくらい高くつく。 #81 の build が EventCalendar を「無い」と断じて月グリッドを手組みしたのは、当時は正しかったが、今は誤った prior-art になっていた。機能を足すのと同じ熱量で、発見可能性(命名・JSDoc・ユースケース索引)に投資しないと、複利は途中で漏れる。 これは #72→#73 で「ScheduleGrid の framing 拡張が翌回 cold AI に一発発見された=発見可能性は機能と同格」と書いた学びの、もう一段強い再確認。
そして全体として——大型 primitive を作り切った段階の確認が取れた。 カスタム primitive ゼロで非自明なドメイン画面が組め、残る穴は全部「変種・a11y・docs」の polish。穴の質が、未整備の機能から「整え方」へ収束している。
次回予告(やってみた #83)
- メディア/別業界もう1枚(LineageGraph/EventCalendar の再々利用観測)。旅行は UI が濃いので後で腰を据えて作り込む枠。方針: 違う内容・業界特有 UI 最優先。
試す
まだ alpha。だが「先週埋めた穴が今週そのまま発掘される」のを2回続けて見られた回——複利ループが本当に回っている証拠。
<!-- 公開前: 相互URL差込/スクショ確定/EN(dev.to)ミラー -->
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import している部品です。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。