Insights·2026-07-28

AI が作った画面はなぜどれも似て見えるのか — 繰り返される癖と直す方向

AI が作った画面の野暮ったさは好みの問題ではなく、リストの問題だ。モデルはおおむね公開ウェブに溢れる同じ SaaS テンプレートを見て学んでおり、特に指示なく画面を作らせると別のモデル、別のプロジェクトでも同じ選択が繰り返される。よく出るのは、カード左端の太い色帯、見出しに載せたグラデーション、紫から青へ流れる背景、色地の上の灰色文字、四方に広がる色の発光、カードの中にまたカード、見出しの上の小さな大文字ラベル、そして Inter 系の書体だ。そこに streamline や supercharge といった常套句が重なる。オープンソースの Impeccable はこれらの癖にルール名を付け、LLM なしで動く検査器にした。直し方も単純で、色帯は消し、見出しは単色に、色地の上の文字は灰色ではなく白か背景の濃い系統に、カードの入れ子は余白と細い区切り線にほどく。確認は目ではなくコマンドで行う。これらの癖をわざと詰め込んだサンプル HTML 一枚は 17 件、指摘された箇所だけ直しレイアウト構造はそのままにして再検査すると 0 件になった。

같은 페이지의 좌우 비교 — 왼쪽은 보라에서 파랑으로 흐르는 그라디언트 배경에 그라디언트 제목과 중첩된 카드가 있는 화면, 오른쪽은 단색 잉크 배경에 대비를 확보한 제목과 헤어라인 구분선으로 정리된 화면.
왼쪽 17건, 오른쪽 0건. 지적받은 항목만 고치고 레이아웃 구조는 그대로 두었다

同じ顔が繰り返される理由

生成モデルは自分が見たものの真ん中を出す。公開ウェブに最も多く積み上がっている画面はここ数年の SaaS ランディングページとダッシュボードのテンプレートで、それらが互いに似ているのだから、学習したモデルの既定値もその真ん中に寄る。会社も、モデルも、プロジェクトも違うのに、結果は同じ顔をしている。

これはモデルが作れないからではない。指示がないときに何を選ぶかの既定値が一つしかないために起きる現象だ。既定値を変えない限り、プロンプトをいくら磨いても同じ場所へ戻ってくる。

だから必要なのは、もっと良い形容詞ではなくリストである。何が繰り返されるかに名前を付けておけば、「野暮ったい」という感覚が「この十一か所を直せ」という作業指示に変わる。オープンソースの Impeccable がそのリストを規則にした。Anthropic が公開していた frontend-design スキルから出発したプロジェクトだ。

繰り返される癖と、代わりにすること

以下は検査器が実際に名前を付けて捕まえる項目だ。ルール名があるという点が肝心である。名前があれば、レビューで「なんか変です」ではなく「これはカードの入れ子です」と言えるし、直す方向も一緒に決まる。

表の右列が代替案だ。多くは足すのではなく引くほうである。色帯を消し、グラデーションを単色に戻し、カードの殻を剥いで余白で分ける。画面が寂しくなるのではと心配になるが、実際にはその場で情報のほうが先に見えはじめる。

書体の項目は誤解されやすい。Inter が悪い書体だという意味ではなく、あまりに多くの場所で使われていて、もはやその画面を区別してくれないという意味だ。検査器が併せて名指しする一覧には Roboto、Geist、Plus Jakarta Sans、Space Grotesk、Fraunces が入っている。ブランドが決めた書体なら、例外として記録しておけばよい。

繰り返される癖なぜ問題か代わりに何を
カード端の太い色帯AI 製の画面で最も見分けやすい印消すか、ずっと淡いアクセントに
見出しに載せたグラデーション装飾でしかなく意味を運ばない単色に。強調は大きさと太さで
紫から青へ流れる背景AI 産物を代表する配色ブランドが決めた色の組を使う
色地の上の灰色文字コントラストが崩れて霞んで見える白か、その背景の濃い系統に
四方に広がる色の発光影既定で格好よく見せようとする仕掛け中立的な影で高さだけを表す
カードの中にまたカード枠が重なり視覚的な雑音になる余白と細い区切り線で分ける
見出しの上の小さな大文字ラベル見出しが既にしていることの反復消して見出しに溶かし込む
Inter など使われすぎた書体ありふれていて画面を区別しないブランド書体を決めるか、使用の少ない顔に
streamline・supercharge の常套句何をする製品なのかが消える動詞と名詞を具体的に書く

目ではなくコマンドで確かめる

検査は npx impeccable detect の一行だ。ファイルかフォルダ、あるいは URL を渡すと、引っかかった項目をルール名とともに知らせてくれる。LLM を呼ばないので API キーは要らず、同じ入力には同じ結果が出る。

確かめるために、上の表の癖をわざと詰め込んだ HTML を一枚作って走らせた。17 件が出た。次に指摘された箇所だけを直した。色帯を消し、見出しのグラデーションを単色に戻し、背景を単色にし、本文の文字色をコントラストが出るまで上げ、入れ子のカードを細い区切り線にほどき、書体を変えた。レイアウト構造と情報の順序には触れていない。

再度走らせると 0 件だった。下の画像がその前後である。右のほうが良く見えるなら、変わったのは感覚ではなくルール違反十一種だ。

もう一つ付け加えると、検査のしかたは対象によって分かれる。HTML はリンクされた CSS まで含めて静的解析し、JSX のようなファイルはパターンマッチ、URL を渡すと実際のブラウザでレンダリングされた画面を見る。だからソースの走査が綺麗でも、公開中の URL で引っかかる項目が別にありうる。

規則をすべて守る必要はない

リストは判決文ではなく点検表だ。ブランドが既に Inter を使うと決めているなら、それは違反ではなく決定である。その場合はファイルの中に impeccable-disable コメントを書いてその場だけ免除するか、リポジトリの設定に例外を記録しておく。どちらも理由を併せて書くことになるので、次の人が「なぜここだけ違うのか」と尋ねずに済む。

一部の項目はそもそも失敗として数えない。参考として分類された指摘は一覧には出るが終了コードを変えないので、自動化を止めない。パイプラインに組み込むときは、この区別を先に確認しておくとよい。

結局このリストの効用は、好みを統一することにはない。毎回違う言い回しで伝えられていた指摘を、同じ名前で呼べるようにすることにある。名前が揃うとレビューは短くなり、同じ指摘が二度繰り返されなくなる。