AI に補助金マッチングを作らせてみた — MatchCard がコンポーネント化、「会社×制度」が対象を問わないことを証明した(やってみた #173)
/subsidy-matching375px のビューポートで撮影。縦長のページはフレーム内をスクロールします。
解説記事
AI に補助金マッチングを作らせてみた — MatchCard がコンポーネント化、「会社×制度」が対象を問わないことを証明した(やってみた #173)
やってみたシリーズ: 自作のデザインシステム
@gunjo/ui(群青)を、群青のことを一度も見たことのない AI に、実際の画面で組ませていく連載。MatchCard 狙いの3回目(金融)——補助金・助成金マッチング(自社プロフィール ⟷ 補助金制度・適合度・要件適合)。中小企業向け補助金 SaaS。
結果 — 3.5/5、二者間ペアリングが最後まで欠落
tsc 緑・モバイル/デスクトップ両対応。予備知識ゼロの AI(群青を一度も触っていない設定):
強い KPI/ランキング/キュー/識別の面を実コンポーネントで速く組めた。だが画面の核(自社×制度の二者間マッチ詳細)にコンポーネントが全く無く、索引が指す唯一の物(RelationshipRow)が能動的に間違った道具。 この欠落は、これが推薦コンソールである理由そのものなので、コストが大きい。
観測の核 — MatchCard が3回目でコンポーネント化+「会社×制度」が対象を問わないことを証明
自社 × 補助金制度のマッチ詳細(2つを左右に並べ+適合度+要件の要因)——3回目の手組み(MatchDetail.tsx・~250行)だった:
予備知識ゼロの AI「MatchCard/PairingPanel/対象を問わない二者間のコンポーネントが無い。RelationshipRow は欲しい形(left+つなぎ+relationshipLabel+right)だが from/to が PersonCellProps 固定で両側に PersonCell を描画=人物前提で 会社×制度 にパラメータ化できない・型も通らない・スコア/要因の領域も無し。CompanyCell も無く PersonCell(人)だけ。追加すべきは対象を問わない MatchCard+CompanyCell=この画面は ~250行手組みが組み立てに落ち 3.5→4.5+ に上がる。」
MatchCard は #160 求貨求車(荷物×空車)・#172 M&A(売り手×買い手)・#173 補助金(自社×制度) で3回目=3回確認。その場で作った——しかも#173 が決定打だった:
- #160/#172 は「同種×同種」(荷物×空車、会社×会社)だったが、#173 は「会社×制度」=異なる種類の対象。これが MatchCard が 対象を問わない(人でも会社でもなく任意の対象)である必要を証明した。
- 作ったコンポーネント(2つ・連結ペア):
-
MatchCard=left+right(任意の識別ノード・異なる種類でも可)+中央score+factors[](要件の内訳)+actions。RelationshipRow(2つの PersonCell 固定・スコア/要因 無し)とは別物。 -
CompanyCell=組織版 PersonCell(四角ロゴ+名前+業種/所在地)。会社/制度/取引先 を人のアバター/在席に強制しない。
-
- 索引も是正=マッチ/ペアリング→MatchCard、組織の識別→CompanyCell、RelationshipRow は人専用と明記。
- ブラウザで 協栄精密工業(会社)×ものづくり補助金(制度) の MatchCard 内に CompanyCell が2つ・スコア 92%・要件の要因 を確認=PR#430(#419 クローズ)。コンポーネント化 25・26個目。
学び — 「3つ目の目撃」が仕様を最終確定させる
MatchCard の3つの目撃は、毎回 仕様を鋭くした:
- #160 求貨求車(荷物×空車・同種)=「二者間ペアリングが要る」(欠落の発見)。
- #172 M&A(会社×会社・同種)=「人物固定の RelationshipRow は誤り・CompanyCell も要る」(人物でないと判明)。
- #173 補助金(会社×制度・異種)=「任意の異なる種類の対象=対象を問わない」(最終仕様の確定)。
もし #173 が無ければ、MatchCard を「CompanyCell × CompanyCell 固定」で作ってしまったかもしれない。会社×制度 という異種ペアが、left/right を CompanyCellProps に型付けせず** 汎用の ReactNode にする決断を強制した。これは #172 RelationshipRow の逆の教訓=「型を固く付けすぎると(PersonCellProps)別の異種ペアで詰む」。3回確認の3回目は、作る数合わせでなく仕様を最終確定させる検証**だ。
→ そして CompanyCell も作った=PersonCell(人)↔CompanyCell(組織)の対。「人のコンポーネントがあるなら組織のコンポーネントも要る」(#150「表示があるなら入力も要る」の組織版)。
拾った点(良好)
- ✅ Leaderboard(適合度ランキング)/Meter(適合度 higher-is-better+target)/StatGroup/ActionQueue/FilterChips/MetadataList 全て そのまま合う=ダッシュボードの8割は速く組めた。
今回 src で作ったもの = MatchCard + CompanyCell(#419→PR#430)。3.5/5・二者間ペアリングのコンポーネント化・対象を問わないことの確定・索引是正。
📊 コンポーネント化スコアボード(作成済 26個)
…DocumentRow / MatchCard / CompanyCell(このセッションで13コンポーネントを作成/拡張) 進行中:ストックほぼ枯渇(SimpleDialog 1/3 のみ)
📋 進捗 — ストックを掘り切った
- 運輸5モード完走 ✅/ストック深掘りで goodWhen/OriginDestination/DocumentRow/MatchCard/CompanyCell をコンポーネント化
- 3回確認 待ちのストックはほぼ枯渇(残 SimpleDialog 1/3)。新業種で土台の頑健性を試す段階へ。
次回予告(やってみた #174)
- 新業種へ(運輸/会計/金融以外=エネルギー/通信/建設/医療/官公庁 等=新しい領域で土台がどう保つか・新しい欠落が出るか)。※次回までに決める。
試す
- gunjo.jp / マッチカード MatchCard(新)/ 企業セル CompanyCell(新)/ ランキング Leaderboard / npm
@gunjo/ui/ GitHub / 前回まで #1〜#172 - GunjoUI by UIXHERO
MatchCard がコンポーネント化した——「会社×制度」という異種ペアが、対象を問わないことを証明した。3回確認の3回目は数合わせでなく、仕様を最終確定させる検証だ。
この連載は、作者が AI(Claude と Codex)と協働で制作しています。実験・検証の設計、判断、公開前の事実確認は人間が行い、実作業と下書き執筆は AI が担っています。
使用した @gunjo/ui コンポーネント
この画面のソースが直接 import しているコンポーネントです。
cold AI が組み上げた実コード
ファイル名をクリックでソースを展開できます。