AIコーディングツールの普及で「フロントエンド開発が楽になった」という声は増えた。しかし実務で使い込むほど、ある壁にぶつかる。定型的なコンポーネントはすんなり出てくるのに、少しでも凝ったUIを頼むと途端に崩壊する——この非対称性は、いったいどこから来るのか。

米国の著名フロントエンドエンジニアが公開した論考が、Hacker Newsで話題を呼んでいる。「AIは膨大なチュートリアルをかじった、お世辞上手な開発見習いだ」という辛口な書き出しから始まる同記事は、AIがフロントエンドで躓く構造的な理由を鋭く分析している。

AIが得意なこと:「平均的なUI」の量産

AIが力を発揮するのは、ありふれたパターンの組み合わせだ。具体的には次のような作業が挙げられる。

  • スキャフォールディング:よく見るレイアウトやコンポーネント構造の雛形生成
  • トークン移行:デザイントークンのマッピングや一括置換といった単調作業
  • 機能の概要列挙:「こういう機能が必要」という汎用リストの作成

これらは確かに有用だ。繰り返しが多く、正解パターンが存在する作業ではAIは大幅な時間短縮をもたらしてくれる。

AIが苦手なこと:固有の解を要求される局面

一方、「舗装された道を外れた瞬間に転ぶ」とこの記事は表現する。苦手な領域は次の通りだ。

  • ビスポーク(オーダーメイド)インタラクション:スクロール駆動アニメーションやカスタムマイクロインタラクション。存在しないCSS構文を自信満々に書いてくる
  • レイアウト・スペーシング:ページの固有サイズや余白の計算。数学が苦手なAIには動的なレイアウト計算は鬼門
  • 複合状態の管理:複雑なコンポーネントの状態遷移を理解して正確に編集する作業
  • アクセシビリティaria-hidden="true" を壁に投げつけて終わり、という対応が横行する
  • パフォーマンス:明示的に指示しない限り、最も重くて動作の鈍い実装を選ぶ

そして致命的なのが、コンポーネントが複雑になるほど急速に性能が落ちるという傾向だ。シンプルなデザインは一発で出てくるのに、一手加えた追加依頼で全部崩れる——この落差こそが、AIの本質を如実に示している。

なぜそうなるのか:4つの構造的な理由

1. 学習データが古い

AIはインターネット上に溢れる「定番のチュートリアル」で学習している。現代のCSSやWeb APIの進化には追いついておらず、古い解法に依存しがちだ。

2. 「見る」ことができない

LLMはレンダリングエンジンではない。スクリーンショットを渡しても、ピクセル単位の整合性を確認する手段がない。「アイコンが消えている」と指摘すると「修正しました」と返ってくるが、実際には何も直っていない——という体験は誰もが経験しているはずだ。

3. 「なぜ」を知らない

アーキテクチャ上の判断には必ず背景がある。SDD・BDD・ステートマシン設計の「なぜそうするか」の文脈を持たないまま、パターンだけをつなぎ合わせるのがAIの現状だ。文脈を事前に丁寧に渡さないと、的外れな実装が返ってくる。

4. 実行環境をコントロールできない

RustやTypeScript・Pythonはバージョンを固定できるが、HTMLとCSSはそうではない。ブラウザの種類・バージョン・ウィンドウサイズ・入力デバイス・ユーザー設定——これらの変数をレンダリングエンジンは常に考慮しているが、LLMはそれを無視する。明示的に聞かなければ、論理プロパティ(logical properties)すら使ってこない。

実務への影響

この分析が示す実践的な含意は明快だ。

AIに任せていい作業:

  • ページの雛形・コンポーネントスケルトンの生成
  • 既存コードのリファクタリング(状態が単純な場合)
  • CSSトークンの一括置換や命名整理
  • 繰り返しパターンのバリエーション生成

人間が主導すべき作業:

  • デザイン仕様に基づくピクセル精度のUI実装
  • アクセシビリティ対応(WCAG基準の確認は必ず人間が行う)
  • 複雑なアニメーション・スクロール挙動の設計
  • パフォーマンスクリティカルな最適化

ポイントは「AIを信頼しすぎないこと」ではなく、「何を頼むか」を明確に設計することだ。AIへの指示に「Logical CSSプロパティを使え」「アクセシビリティ要件はWCAG AAを満たせ」「パフォーマンスを最優先にしろ」と制約を明示するだけで、出力品質は大幅に改善する。

筆者の見解

この記事が指摘する限界は、AIそのものの限界というより、現時点のAI活用の設計が浅いという問題だと筆者は受け止めている。

AIエージェントが真価を発揮するのは、単発の「これ書いて」ではなく、目的・制約・文脈を最初に渡した上で反復的に動かし続けたときだ。フロントエンド開発でも同様で、デザイン仕様・アクセシビリティ要件・パフォーマンス目標・対象ブラウザをセットで渡すプロンプト設計ができるかどうかが、使いこなしの分岐点になる。

AIが古い学習データに基づいて「それっぽい答え」を返してくるのは事実だ。しかし「AIはダメだ」と結論づけるのは早計で、問題の本質は「何を・どう頼むか」の設計力にある。この記事が「AIは使えない」という諦めに使われるのではなく、「どう使えば使えるか」を考えるための出発点になることを願う。

フロントエンドの複雑さとブラウザ環境の多様性は、AIにとって現時点で最も手強い領域であることは間違いない。だからこそ、そこに人間のエンジニアリング判断が入る余地があり続ける。AIに仕事を奪われるのではなく、AIが得意なことを任せて、自分は本質的な判断に集中する——その役割分担を明確にするほど、生産性は跳ね上がる。


出典: この記事は Why AI Sucks at Front End の内容をもとに、筆者の見解を加えて独自に執筆したものです。