#22スコア 3.5/5基盤UI・汎用

AI にランディングページを作らせてみた — 「枯れた」を破る2つの実バグ(やってみた #22)

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

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

解説記事

AI にランディングページを作らせてみた — 「枯れた」を破る2つの実バグ(やってみた #22)

やってみたシリーズ: 自作のデザインシステム @gunjo/ui群青)を、文脈ゼロの cold な AI に実 UI で作らせる連載。今回は SaaS のランディング(マーケ)ページ

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

#21 で「個別コンポーネントの a11y は収束した」と分かった。だから今回は別の軸——「マーケ画面という合成」を初めて突いた。

結果 — 3.5/5(これまで最低、でも意味のある低さ)

tsc/build 緑・コンソール 0・hydration なし・h1 は1個・level 飛ばし無し・375px overflow 0・36個の interactive 要素は全部本物の <a>/<button>下半身は強い——Card・GridminItemWidth(auto-fit でモバイル安全)・Button の asChild・Accordion・Statistic・Container 単体。

低いのは品質じゃなく 「app/dashboard 型で、marketing 型じゃない」 から。そして cold AI は実バグを2つ掘った。

「枯れた」が破れた — in-component の実バグ2件

#21 で「機能軸は枯れた」と書いた。#22 がそれを更新した。

LandingTemplate が素の .container を使ってた(Major)。 マーケ用に唯一用意したテンプレなのに、中の各セクションが Tailwind の .container(=ブレークポイント毎の max-width だけで mx-auto も padding も無い)。実測でコンテンツが画面左端に密着・右に64pxの死に gutter。本物の Container 部品があるのに dogfood してなかった → #111

Img が 256×256 に固定(Minor)。 ラッパーが全状態で h-[256px] w-[256px]aspectRatio を渡しても明示 height が勝つので hero 画像が正方形ロック → #113。これは 固定寸法ファミリー(#47/#58/#66/#72/#78/#100)の続き。

今ラウンドの修正 — #111 を SSOT 完結で land

LandingTemplate<Container size="2xl"> に差し替え(dogfood)。.pen 幾何は不変(Container は React 層の中央寄せグルー)なので src+drift だけで完結:

+ <Container as="section" size="2xl" className="py-12 ...">  // 旧 className="container ..."
+ assertMatch(landingSource, /<Container\b/, ...)             // dogfood を強制
+ assertNoMatch(landingSource, /className="container\b/, ...) // bare .container の再発を禁止

/embed/landing で live 確認: sticky ヘッダ内側が mx-auto … max-w-screen-2xl に、ロゴ/CTA が正しい gutter の内側へ。design:verify 緑・exclusion 0。#113 Img は固定寸法系統なので .pen 担当へ

でも、根はまた typography だった

新しい a11y バグは出なかった。代わりに cold AI が最大の穴として挙げたのは——「ランディングは8割タイポグラフィなのに、型の物語が無い」。h1/h2/eyebrow/本文を全部手巻き。CardTitle(固定h3)と MarkdownRenderer 以外に見出し/本文プリミティブが無い

これは #110——#21 ブログでも名指しされた「typography primitive 不在」。別の画面タイプ(ブログ→ランディング)から、2連続で同じ根。signal は確定的。

学び — cold テストは「形の不一致」を炙り出す

品質(バグ・a11y・型・responsive)→ 個別はほぼ枯れた
形(マーケ画面の合成・型の物語)  → ここに穴。dashboard 型のまま

部品が良くても、「ランディングを組む」という合成の物語が無いと 3.5 点になる。cold AI は「LandingTemplate を使わず手で組み直した」——テンプレが信頼されなかった。それが一番の学び。まだ穴はある。 loop は続く。

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

  • Docs ホーム / 価格比較 / エラー画面 ほか。合成と型の物語を引き続き突く。

試す

まだ alpha。「機能は枯れた」を自分で破った回。次は形と型の物語へ。


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

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

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

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

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