ホーム自己紹介ブログ
NO.158
DATE2025. 11. 06

AIが生成したCSSをレビューしよう

AIが生成するコードは、必ずレビューしましょう。
この記事では、 AIが生成したCSSをレビューする際の7つのポイント を紹介します。
CSSのレビューをする際に参考にしてください。

1. 不要なプロパティが含まれていないか

生成されたCSSには、必要のないプロパティが追加されることがあります。
よくあるのが box-sizing: border-box です。
これらは多くの場合、 グローバルCSS などで定義済みです。

NG例

.card {
  box-sizing: border-box; /* グローバルで定義済み */
  padding: 16px;
  border-radius: 8px;
}

OK例

.card {
  padding: var(--space-md);
  border-radius: var(--radius-md);
}

意味を理解せずに残してしまうと、 冗長で保守性の低いCSS になります。
削除してもデザインが崩れないなら、思い切って消しましょう。
意図がある場合は、そのまま残しても構いません。

2. セレクタ名が適切か

Tailwind CSS を使っていれば気にしなくてよい部分ですが、AIがCSSファイルを生成する場合、 セレクタ名 も確認しましょう。

  • プロジェクト内の命名規則に沿っているか?
  • 意味が曖昧な名前(例: .main-style)になっていないか?

NG例

.productCardHighlight { ... } /* ドメインに依存しすぎ */

OK例

.card { ... } /* 見た目の特徴を表す */

ドメイン固有の語(例: “product”, “user”)を混ぜると、将来的に仕様変更が入った際、セレクタ名の修正が必要になります。
デザイン的な特徴を表した名前にしましょう。

3. データ可変・レスポンシブ対応を確認しよう

AIは「静的な状態」を前提にコードを出力します。
しかし実際のWebページでは、 テキスト量や要素数が変化 します。

  • タイトルが2行になったら崩れないか?
  • リストアイテムが10個になってもレイアウトが保てるか?

NG例

.list {
  display: flex;
  gap: 8px;
  width: 400px; /* 固定長は危険 */
}

OK例

.list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  max-width: 100%;
}

Storybook を使っている場合は、以下のアドオンを使って動的にデータ数を変更しながら、デザイン崩れしていないか簡単に確認できるのでおすすめです。

  • storybook-addon-range-controls

4デバイス(モバイル / タブレット / ラップトップ / デスクトップ) で最低限の表示確認を行いましょう。

4. デザイントークンを使っているか

AIは数値を直接書きがちです。
2px や 16px のような値が並んでいたら要注意です。

NG例

.button {
  padding: 8px 16px;
  font-size: 14px;
}

OK例

.button {
  padding: var(--space-sm) var(--space-md);
  font-size: var(--font-size-sm);
}

トークンを使うことで、 一貫したデザイン を保ちましょう。

5. flexbox と grid の使い分け

AIが生成するレイアウトコードは、たいてい flexbox 一辺倒 です。
しかし、構造によっては grid のほうが適しています。

どちらが適しているかは、以下の記事を参考にしてください。

  • 苦手なCSSを克服しよう | silverbirder

NG例

.gallery {
  display: flex;
  flex-wrap: wrap;
}
.gallery img {
  flex: 1 0 33%;
}

OK例

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-md);
}

また、flex-grow を指定したら flex-shrink も忘れずに設定しましょう。
圧縮時の崩れを防ぎます。

6. CSSの詳細度を意識する

AIは複雑なセレクタを生成しがちです。
詳細度が高すぎると、後から上書きが難しくなります。

NG例

.main .card > h2.title { ... }

OK例

:where(.card:has(.title)) {
  background-color: var(--surface-accent);
}

:where() は詳細度を0にできる便利な疑似クラスです。
他にも :is() や :has() など擬似クラスを活用して、柔軟なスタイル指定をしましょう。

7. カスタムプロパティで値を共通化しよう

同じ意味の値を複数箇所で使っている場合は、 カスタムプロパティ で共通化しましょう。

NG例

.box {
  margin-left: -4px;
  margin-right: -4px;
  width: calc(100% + 8px);
}

OK例

.box {
  --gutter: 4px;
  margin-inline: calc(-1 * var(--gutter));
  width: calc(100% + var(--gutter) * 2);
}

また、@property を使えば型や初期値を厳密に定義できます。

@property --gutter {
  syntax: '<length>';
  inherits: false;
  initial-value: 4px;
}

まとめ

AIが生成したCSSのレビューで、スルーされることが多いので、ぜひレビュー時のチェックポイントとして活用してください。
もしくは、プロンプトチューニングの参考にしてみてください。

フロントエンド
AI

-

コメント

0

読み込み中...

シェアする

フォローする

購読する

次のページ

仕事にちょっとプラスすると良い感じ

前のページ

ライブカメラ

関連する記事

タグ「フロントエンド」の記事

AIの書いたコードの手直しを減らすお作法

AI にコードを書かせた後、余計なコードを見つけて消す作業があります。 不毛なことなので、それらの作業を減らすためのお作法を紹介します。 未使用コードを消す 以下でも書きましたが、未使用コードの検査に knip を使うことが多いです。 ht

2026年02月25日

AI
フロントエンド
iframeの難しさ

最近、iframeを使っています。 クライアントサイドで埋め込む想定で、iframeを使おうとしています。 色々と苦労したことがあったので、書いて残しておこうと思います。 レスポンスヘッダー 前提として、ウェブアプリケーションをプロダクショ

2026年02月18日

フロントエンド
ブラウザ
SVGを書くと数学の知識が必要だった

紙を積んだイラストをSVGで書こうとしていました。 (当たり前ですが)図形を表現するためには数学の知識が必要で、学生の頃の記憶を思い出したので疲れました。 所感について、諸々書こうと思います。 成果物 実際に完成したのは、以下の画像ができま

2026年02月17日

フロントエンド

タグ「AI」の記事

AIの書いたコードの手直しを減らすお作法

AI にコードを書かせた後、余計なコードを見つけて消す作業があります。 不毛なことなので、それらの作業を減らすためのお作法を紹介します。 未使用コードを消す 以下でも書きましたが、未使用コードの検査に knip を使うことが多いです。 ht

2026年02月25日

AI
フロントエンド
AIの利用上限に達した時にすることを残しておく

主にWeb関連の個人開発をしている際に心がけていることを書きます。 月末に近づくにつれ、AIの利用上限に達してしまうことがあります。 その状況になった時、以下のいずれかの選択肢が私の中では残っています。 課金して利用上限を増やす 無料モデル

2026年01月22日

フロントエンド
AI
Playwright MCPでCSSの修正が楽になった

最近、AI エージェントに Playwright MCP を設定した状態で、CSS の調整作業を行っていました。 デザイン上どうしても原因を特定できず、修正に行き詰まっていたスタイルがあったのですが、Playwright MCP を使って調

2026年01月04日

フロントエンド
AI
← ブログ一覧へ