2026年6月15日 · コラム

HTML5 セマンティック要素の使い分け

html5-semantic の記事アイキャッチ画像

HTML5 で導入された article / section / nav / aside / header / footer / main といった「セマンティック要素」は、コンテンツの意味を機械(検索エンジン・スクリーンリーダー)に伝えるための重要な道具です。「とりあえず div で囲む」のではなく、適切な要素を使うことで、SEO・アクセシビリティ・コードの可読性すべてが向上します。この記事では、それぞれの要素の意味と使い分けを実例で解説します。

セマンティック要素一覧

要素 意味 典型的な用途
header 導入部・ヘッダー領域 サイトヘッダー、記事の冒頭
nav 主要ナビゲーション グローバルメニュー、サイドメニュー
main ページのメインコンテンツ 本文部分(1ページに1つ)
article 独立して成立するコンテンツ ブログ記事、ニュース、製品レビュー
section テーマ別のまとまり 記事内の章、長いページの分割
aside 関連性が薄い補助情報 サイドバー、広告、関連リンク
footer 末尾・補足情報 サイトフッター、記事末の著者情報
figure / figcaption 図表とそのキャプション 挿絵、引用画像、グラフ

article vs section の決定的な違い

この2つは初心者が最も混同しやすい要素です。判別基準は明確です:

article: それ単独で意味が成立する

  • 切り出して他のサイトに貼っても「読み物」として成立する
  • 例: ブログ記事、ニュース記事、レビュー、フォーラム投稿

section: 大きな枠の中の意味的なまとまり

  • 単独では文脈が成立しない(親要素を前提とする)
  • 例: 記事内の章、製品紹介ページ内の「特徴」「価格」「FAQ」など

具体例

<article>
  <h1>HTML5 セマンティック要素の使い分け</h1>
  <p>リード文...</p>

  <section>
    <h2>article vs section</h2>
    <p>...</p>
  </section>

  <section>
    <h2>nav の使い方</h2>
    <p>...</p>
  </section>
</article>

article(記事全体)の中に、章ごとの section が入っている構造です。

main は1ページに1つだけ

main はそのページの「主要コンテンツ」を表します。ヘッダー・フッター・ナビゲーション・サイドバーは含めません。

<header>サイトヘッダー</header>
<main>
  <article>
    <h1>記事タイトル</h1>
    <p>本文...</p>
  </article>
</main>
<aside>関連記事</aside>
<footer>サイトフッター</footer>

スクリーンリーダーは「メインコンテンツへスキップ」する機能を提供します。main 要素があると、視覚障害ユーザーの読書体験が大幅に向上します。

nav は「主要な」ナビゲーションだけ

すべてのリンクのグループを nav で囲む必要はありません。ヘッダーのメニューやサイドナビゲーションのような サイト構造上重要なリンク群 のみが対象です。

記事内の「目次」もnavに含めるのが一般的です。逆に、ヘッダー内のロゴ単体やフッターのちょっとしたリンクは nav で囲まない方がベターです。

aside の本当の意味

aside は「補助的・関連性が薄い」というニュアンスを持ちます。サイドバーが定番の使い方ですが、本文中の「引用」「補足」「ヒント」ボックスにも使えます。

<article>
  <p>本文...</p>
  <aside>
    <p>💡 ヒント: ここに関連する豆知識...</p>
  </aside>
  <p>本文続き...</p>
</article>

header / footer は階層的に使える

これらは「サイト全体」だけでなく、article や section 単位でも使えます。

<article>
  <header>
    <h1>記事タイトル</h1>
    <p class="meta">2026-05-30 / 著者名</p>
  </header>

  <p>本文...</p>

  <footer>
    <p>タグ: #WebAudio #JavaScript</p>
  </footer>
</article>

SEOへの直接的な影響

Google は公式に「セマンティックマークアップを推奨」しています。具体的な効果として:

  • ページの意味理解が向上 → 関連クエリでの上位表示が起こりやすい
  • 構造化データの土台 → JSON-LD で Article schema を書くとき、HTML 構造とマッチしていると整合性が高い
  • 注目ピックアップ(Featured Snippet)採用率 → 適切な見出しと article 構造があると採用されやすい

アクセシビリティへの影響

スクリーンリーダーは セマンティック要素を「ランドマーク」として認識します。これによりユーザーは次のような操作ができます:

  • 「メインコンテンツへスキップ」(main 要素へジャンプ)
  • 「ナビゲーションへ移動」(nav 要素へジャンプ)
  • 「次の見出しへ」(h2 要素へジャンプ)

div だらけのページではこれらが使えず、ユーザーが「ヘッダーを毎回読み飛ばす」必要が出てきます。

使い分けに迷ったときの判定フロー

  1. 独立した記事として成立する? → article
  2. 大きな枠の中の章? → section
  3. 主要ナビゲーション? → nav
  4. サイドバー・補助情報? → aside
  5. サイト/記事の冒頭・末尾? → header / footer
  6. ページの主要コンテンツ? → main
  7. 図・写真にキャプションが必要? → figure + figcaption
  8. どれにも当てはまらない? → 普通の div でOK

よくある間違い

1. 全部 section で囲む

section は「テーマ別の意味的グループ」専用です。装飾や CSS グルーピング用には div を使いましょう。

2. article の中に article を入れる

article は階層化できますが、ネスト構造に明確な意味が必要です。例えばコメント機能を持つブログでは、メインの記事内にコメント1件1件を article として埋め込みます。

3. nav に全てのリンクを入れる

nav は「主要な」ナビゲーション用です。本文中のリンクは普通の a タグでOK。

4. h1 を複数使う

HTML5 仕様上は article 内で別 h1 を使うことが許されていますが、SEO 観点では「ページに h1 は1つ」が今でも一般的に推奨されます。

まとめ

セマンティック要素を使うことは、「自分のサイトを機械に正しく理解してもらう」ための投資です。コストは div を変えるだけなので極めて小さい一方、SEO・アクセシビリティ・コードの可読性すべてに長期的な効果があります。「とりあえず div」を脱却して、意味のあるマークアップを書く習慣をつけましょう。