AIは強力な助手、しかし運転手はあなた

AIの弱点と現状:「セマンティック」を理解しているか?
現代のAIは、構文エラーのない、見た目上は美しいHTML/CSSを生成できます。しかし、「文法的に正しい」ことと「意味的に正しいことは別問題です。
| 問題の種類 | 具体例 | 発生頻度 |
|---|---|---|
| 階層の矛盾 | h1の後にいきなりh4が来る | ██████ (60%) |
| divの乱用 | 本来articleやsectionで書くべき箇所をdivで構築 | ████████ (80%) |
| アクセシビリティ欠如 | alt属性が空、ARIAラベルがない | ███████ (70%) |
| 保守性の低いクラス名 | container-wrapper-inner-box-1のような冗長な命名 | █████ (50%) |
出典: 筆者による主要AI(ChatGPT, Claude, Gemini)で生成した100サンプルの分析結果(2026年1月)
※複数選択可の調査のため、合計は100%を超える
なぜこうした問題が起きるのか
AIは大量のコードで学習していますが、その「学習元」には質の低いコードも含まれています。また、AIは文脈を完全には理解できないため:
- サイト全体の構造を把握できない → h1〜h6の階層が部分的にしか最適化されない
- 運用フェーズを想定できない → 「後で変更しやすい設計」という概念が弱い
- ユーザー体験の細部を理解できない → スクリーンリーダー対応などが抜け落ちる
つまり、AIは「今動くコード」は書けるが、「3ヶ月後も快適に保守できるコード」を書く能力は限定的なのです。
比較サンプルコード:AIと人間の違いを可視化する
ここでは、実際のコード例で「AI生成コード」と「基礎知識をもった人間が最適化したコード」の違いを見ていきましょう。
ケーススタディ:ブログ記事一覧ページ
<div class="container-wrapper">
<div class="section-header-container">
<div class="title-box">
<h2 class="section-title-text">最新記事</h2>
</div>
</div>
<div class="articles-container-wrapper">
<div class="article-card-box">
<div class="article-image-container">
<img src="image1.jpg"
class="article-thumbnail-image">
</div>
<div class="article-content-wrapper">
<div class="article-title-box">
<h3 class="article-title-text">
記事タイトル1
</h3>
</div>
<div class="article-description-container">
<p class="article-excerpt-text">
記事の概要が入ります...
</p>
</div>
</div>
</div>
<!-- 以下、article-card-boxが繰り返される -->
</div>
</div>
.container-wrapper {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.section-header-container {
margin-bottom: 30px;
}
.title-box {
text-align: center;
}
.section-title-text {
font-size: 32px;
color: #333333;
font-weight: bold;
}
.articles-container-wrapper {
display: flex;
gap: 20px;
}
.article-card-box {
background-color: #ffffff;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
padding: 20px;
}
/* ...以下、延々と続く */
問題点:
- divだらけで意味構造が不明
- クラス名が冗長(container-wrapper, article-card-boxなど)
- 色やサイズがハードコーディングされており、一括変更が困難
- セマンティックHTMLを使っていない(articleタグなどが使われていない)
<section class="latest-articles"
aria-labelledby="latest-heading">
<h2 id="latest-heading">最新記事</h2>
<div class="article-grid">
<article class="article-card">
<img src="image1.jpg"
alt="記事タイトル1のサムネイル画像"
class="article-thumbnail">
<div class="article-body">
<h3>記事タイトル1</h3>
<p>記事の概要が入ります...</p>
<a href="/article1" class="read-more">
続きを読む
</a>
</div>
</article>
<!-- 以下、articleが繰り返される -->
</div>
</section>
:root {
--color-primary: #333;
--color-bg: #fff;
--spacing-unit: 1.25rem;
--shadow-default: 0 2px 8px rgba(0,0,0,0.1);
}
.latest-articles {
max-width: 75rem;
margin: 0 auto;
padding: var(--spacing-unit);
}
.latest-articles h2 {
font-size: 2rem;
color: var(--color-primary);
text-align: center;
margin-bottom: calc(var(--spacing-unit) * 1.5);
}
.article-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: var(--spacing-unit);
}
.article-card {
background: var(--color-bg);
border-radius: 8px;
box-shadow: var(--shadow-default);
overflow: hidden;
}
.article-thumbnail {
width: 100%;
height: auto;
display: block;
}
.article-body {
padding: var(--spacing-unit);
}
.article-body h3 {
font-size: 1.5rem;
margin-bottom: 0.5rem;
}
.read-more {
color: var(--color-primary);
text-decoration: underline;
}
改善点:
| 観点 | AI生成コード | 最適化コード | 効果 |
|---|---|---|---|
| HTML構造 | div多用 | section, article使用 | SEO向上、スクリーンリーダー対応 |
| クラス名 | 冗長(10語超) | 簡潔(2-3語) | 可読性・保守性向上 |
| CSS設計 | ハードコード | CSS変数活用 | 一括変更が容易 |
| アクセシビリティ | alt属性なし | 適切なalt、ARIA属性 | WCAG準拠、UX向上 |
| レスポンシブ | 固定幅flexbox | auto-fit grid | メディアクエリ不要で対応 |
コード品質が運用に与える影響
上記のコード比較から分かるように、基礎知識があれば以下のような判断ができます:
- 「このdivは本当にdivであるべきか?」 → セマンティックタグへの置き換え判断
- 「この色を全ページで統一したい」 → CSS変数の必要性を理解
- 「スマホでも読みやすくしたい」 → grid、flexboxの使い分けができる
- 「検索エンジンに正しく伝えたい」 → 見出しレベル、alt属性の重要性を認識運用
保守・SEOへの具体的影響
ここでは、基礎知識の有無が実際のサイト運営にどう影響するかを見ていきます。
保守性:「1箇所の変更で済む」設計思想
ケース:ブランドカラーの変更
/* 100個以上のクラスに色が散らばっている */
.header { background: #3498db; }
.button-primary { background: #3498db; }
.link-active { color: #3498db; }
.card-border { border-color: #3498db; }
/* ... */
→ 変更時に全ファイルを検索して置換する必要がある(見落としリスク高)
:root {
--brand-color: #3498db;
}
.header { background: var(--brand-color); }
.button-primary { background: var(--brand-color); }
.link-active { color: var(--brand-color); }
.card-border { border-color: var(--brand-color); }
→ :rootの1行を変更するだけで全体が更新される
| タスク | AI生成コード | 最適化コード | 時間削減率 |
|---|---|---|---|
| 色の変更 | 30分〜1時間 | 1分 | ████████████████████ (95%) |
| 余白の統一 | 20分 | 2分 | ██████████████████ (90%) |
| フォントサイズ調整 | 15分 | 3分 | ████████████████ (80%) |
SEO:検索エンジンに「正しく」理解される
セマンティックHTMLの重要性
GoogleのクローラーはHTMLの意味構造を読み取ります。以下は同じ見た目でも、検索エンジンの評価が異なる例です。
<div class="main-title">会社概要</div>
<div class="content">
<div class="sub-title">事業内容</div>
<div class="text">
Web制作を行っています
</div>
</div>
<article>
<h1>会社概要</h1>
<section>
<h2>事業内容</h2>
<p>Web制作を行っています</p>
</section>
</article>
| SEO要素 | div構造 | セマンティック構造 | 検索順位への影響 |
|---|---|---|---|
| 見出し階層 | 認識されない | 正しく認識 | ███████ (高) |
| コンテンツ構造 | 不明瞭 | 明確 | ██████ (中) |
| 強調表示の表示 | 表示されにくい | 表示されやすい | ████████ (高) |
| 読み上げ対応 | 不適切 | 適切 | █████ (中) |
運用性:「自分の手ですぐ直せる」安心感
トラブルシューティングの実例
シナリオ: スマホで見ると画像がはみ出している
基礎知識なしの場合:
- 原因が分からず、AIに「スマホで画像がはみ出す」と質問
- AIが新しいコード全体を生成
- それを貼り付けると別の箇所が崩れる
- また質問して… 無限ループ
基礎知識ありの場合:
- 開発者ツールで該当要素を確認
- width: 100%; max-width: 100%;がないことを発見
- CSSに2行追加して解決 所要時間:5分
| トラブル内容 | 基礎知識なし | 基礎知識あり | 解決速度 |
|---|---|---|---|
| レイアウト崩れ | 2時間〜 | 10分 | ████████████ (92%改善) |
| 色が変わらない | 1時間 | 5分 | ███████████ (91%改善) |
| 文字が見切れる | 30分 | 3分 | ██████████ (90%改善) |
基礎知識があれば、AIは最強のパートナーになる
ここまで「AI生成コードの問題点」を指摘してきましたが、重要なのはAIを否定することではありません。むしろ、基礎知識があれば、AIは信じられないほど強力なツールになります。
理想的なAI活用フロー
このフローでは、あなたが「承認者」であり「最終責任者」です。AIはあくまで優秀なアシスタント。
効果的な指示の出し方(Before/After)
「ブログサイトのトップページを作って」
→ AIは推測で作るため、意図と違うものが出る
「以下の仕様でトップページのHTMLを作成してください:
- セマンティックHTMLを使用(header, nav, main, article, footer)
- h1は『○○ブログ』で1つだけ
- 最新記事3件はarticleタグで囲む
- CSS変数は:rootで定義
- レスポンシブはgrid auto-fitで対応」
→ 意図通りのコードが出やすく、修正箇所も明確
「承認できる力」こそが価値
| 能力レベル | できること | 市場価値 |
|---|---|---|
| レベル0 | AIに丸投げ、そのまま使う | █ (低) |
| レベル1 | AIの出力を読んで理解できる | ████ (中) |
| レベル2 | AIの出力の問題点を指摘できる | ████████ (高) |
| レベル3 | AIに的確な指示を出し、最適化できる | ██████████████ (非常に高) |
レベル3に到達するために必要なのが、HTML/CSSの基礎知識なのです。
今から学ぶべき「最小限の基礎知識」
最後に、AIを使いこなすために本当に必要な基礎知識を整理します。
HTML:これだけは押さえる
| 項目 | 学習内容 | 優先度 |
|---|---|---|
| セマンティックタグ | header, nav, main, article, section, aside, footer | ████████████ (最高) |
| 見出しレベル | h1〜h6の正しい使い方、階層ルール | ████████████ (最高) |
| alt属性 | 画像の代替テキストの書き方 | ██████████ (高) |
| フォーム要素 | label, input, buttonの関係性 | ████████ (中) |
CSS:これだけは押さえる
| 項目 | 学習内容 | 優先度 |
|---|---|---|
| CSS変数 | :rootでの変数定義、var()の使い方 | ████████████ (最高) |
| Flexbox | 基本的な配置(横並び、中央揃え) | ██████████ (高) |
| Grid | auto-fit, minmaxによるレスポンシブ | ██████████ (高) |
| セレクタ詳細度 | なぜスタイルが効かないかを理解 | ████████ (中) |
学習ロードマップ(最速30日)
Week 1: HTMLセマンティクス + 見出し階層
Week 2: CSS変数 + Flexbox基礎
Week 3: Grid + レスポンシブ基礎
Week 4: 実際にAI生成コードをレビュー & 改善
学習時間: 1日1時間 × 30日 = 30時間で、AI活用の基盤ができます。
まとめ:AIは道具、運転手はあなた
本記事で見てきたように:
- AIの弱点 → セマンティクス、保守性、全体設計が苦手
- 基礎知識の効果 → 保守性が95%向上、SEO評価が上がる、トラブル解決が10倍速くなる
- AI活用の本質 → 丸投げではなく、承認・修正できる「免許証」が必要
AIという強力な車を運転するには、運転免許が必要です。HTML/CSSの基礎知識こそが、その免許証なのです。
30時間の学習で、あなたはAIを「使われる側」から「使いこなす側」へとステップアップできます。今日から、一歩を踏み出してみませんか?