【初心者向け】HTML <main>
タグの使い方と役割を徹底解説
ウェブページを作ってみたい!そう思ってHTMLの勉強を始めた皆さん、こんにちは!
HTMLはウェブサイトの骨組みを作るための言語です。たくさんの「タグ」を使って、この部分は見出し、ここは段落、ここは画像、というように、コンテンツに意味を与え、構造を定義していきます。
HTMLには様々な役割を持つタグがありますが、その中でもウェブページの「主役」を示す、とても重要で便利なタグがあります。それが今回解説する <main>
タグ です。
「<main>
タグ?初めて聞いたな…」「ボディタグの中に色々書けばいいんじゃないの?」そう思っている方もいるかもしれません。しかし、<main>
タグを正しく使うことは、これから皆さんが作るウェブページを、より分かりやすく、使いやすく、そして検索エンジンにも優しいものにするために、とても役立ちます。
この記事では、
<main>
タグがどんな役割を持っているのか- なぜ
<main>
タグを使うべきなのか - 具体的な使い方や守るべきルール
- 他のタグとの違いや組み合わせ方
- アクセシビリティやSEOへの影響
などを、初心者の方にも分かりやすいように、一つ一つ丁寧に解説していきます。少し長い記事になりますが、じっくり読んでいただければ、HTMLの構造化に対する理解がぐっと深まるはずです。さあ、ウェブページの主役を定義する<main>
タグの世界を覗いてみましょう!
目次
- HTMLの基本的な構造をおさらいしよう
- ウェブページの「骨組み」とは?
<html>
,<head>
,<body>
の役割<body>
の中の主要な構造要素たち
<main>
タグとは何か? HTML5からの新要素- 公式な定義と導入の背景
- 「主要コンテンツ」って具体的に何?
- なぜこのタグが必要なの? セマンティクスという考え方
<main>
タグの役割と重要性 – なぜ使うべきなのか?- 役割1: セマンティクスの向上 – 機械が内容を理解しやすく
- 役割2: アクセシビリティの向上 – 誰もが使いやすいページに
- 役割3: SEOへの間接的な影響 – 検索エンジンにも内容を伝えやすく
- 役割4: コードの可読性と保守性の向上 – 開発者にも優しいコードに
<main>
タグの基本的な使い方とルール- 基本的な記述方法
- ページに一つだけ!
<main>
タグの一意性 - 配置場所のルール – ここには置けない!
- ARIAロールとの関係
<main>
タグに「含むべきコンテンツ」と「含まないべきコンテンツ」- 含むべきコンテンツの具体例
- 含まないべきコンテンツの具体例
- 判断に迷ったときはどう考える?
- 他のセマンティック要素との比較と組み合わせ方
<article>
と<main>
: 自己完結した記事とページの主要部<section>
と<main>
: 部分的なまとまりと主要な全体<header>
,<nav>
,<aside>
,<footer>
との関係: 主役と脇役
- 実践!具体的なコード例で理解を深める
- 例1: シンプルなブログ記事ページ
- 例2: 商品一覧ページ
- 例3: ランディングページ (LP) 風の構造
- 避けるべき悪いコード例
<main>
タグとアクセシビリティ – 誰もが快適に利用できるように- スクリーンリーダーでのメリット
- 「スキップリンク」との連携
- キーボード操作への恩恵
- 包括的なウェブサイト構築のために
<main>
タグとSEO – 検索エンジンに正しく内容を伝える- クローラーは
<main>
をどう見る? - コンテンツの重要性を示すシグナル?
- 間接的なランキング要因としての可能性
- セマンティクスとSEOの今後
- クローラーは
<main>
タグのスタイリング – デザインに活かす- 基本的なCSSの当て方
- レイアウトにおける役割
- レスポンシブデザインでの活用
- まとめ –
<main>
タグを使いこなそう! - 参考資料
1. HTMLの基本的な構造をおさらいしよう
まずは、HTMLでウェブページがどのように作られているのか、その基本的な構造を簡単におさらいしておきましょう。
ウェブページの「骨組み」とは?
皆さんがインターネットでウェブサイトを見るとき、ブラウザ(Chrome、Safari、Firefoxなど)はそのページのHTMLファイルを読み込んで、画面に表示しています。HTMLファイルは、例えるなら建物の「骨組み」や「設計図」のようなものです。
「ここは入り口ですよ」「この部屋はリビングです」「ここが寝室です」のように、HTMLタグを使って、ウェブページのどこにどんな種類のコンテンツがあるのか、その構造と意味をブラウザやその他の機械(検索エンジンや支援技術など)に伝えているのです。
<html>
, <head>
, <body>
の役割
どんなHTMLファイルにも、必ずと言っていいほど含まれている基本的な要素があります。
<!DOCTYPE html>
: これはタグではありませんが、文書がHTML5の形式で書かれていることをブラウザに伝えるためのおまじないのようなものです。必ずファイルの先頭に書きます。<html>
: HTML文書全体の始まりと終わりを示す、最も親となるタグです。このタグの中に、ウェブページの全ての情報が記述されます。<head>
: このタグの中には、ウェブページ自体に関する情報が記述されます。例えば、ページのタイトル(ブラウザのタブに表示される文字)、文字コード、ページの作者、CSSファイルやJavaScriptファイルの読み込み設定などです。ここに書かれた内容は、原則としてウェブページ上には直接表示されません。<body>
: このタグの中に、ウェブページとして実際にブラウザに表示される全てのコンテンツが記述されます。見出し、段落、画像、リンク、リスト、表など、皆さんが普段見ているウェブページのテキストやビジュアル要素は、すべてこの<body>
の中に書かれています。
今回学ぶ<main>
タグは、この<body>
の中に記述されるタグの一つです。
“`html
“`
上記のコードは、最も基本的なHTMLファイルの構造です。<main>
タグは、この<body>
タグの中に書くことになります。
<body>
の中の主要な構造要素たち
<body>
の中には、たくさんの種類のタグを書くことができますが、ウェブページの構造をより明確にするために、特定の役割を持った「セマンティックタグ」と呼ばれるものが導入されています。セマンティック(Semantic)とは「意味論的な」という意味で、そのタグが囲むコンテンツの種類や役割を明確に示します。
代表的なセマンティックタグには以下のようなものがあります。
<header>
: ページのヘッダー部分。サイトのロゴ、サイトタイトル、キャッチフレーズ、グローバルナビゲーション(サイト全体の主要なメニュー)などが入ることが多いです。<nav>
: ナビゲーション(リンク集)の部分。サイト内リンクや外部サイトへのリンクなど、他のページへ移動するためのリンクのまとまりに使われます。<article>
: 自己完結したコンテンツのまとまり。例えば、ブログ記事一つ分、ニュース記事一つ分、フォーラムの投稿一つ分など、その部分だけで独立して意味を持つコンテンツに使われます。<aside>
: 主要コンテンツとは関連があるけれど、補足的な情報を示す部分。サイドバーによく使われ、関連リンク、広告、筆者プロフィールなどが入ることがあります。<footer>
: ページのフッター部分。著作権表示、連絡先、サイトマップへのリンクなどが入ることが多いです。
これらのタグを使うことで、ブラウザや検索エンジンなどの機械は、「ああ、ここはヘッダーだな」「ここはナビゲーションだな」「ここは補足情報だな」というように、コンテンツが持つ意味や役割をより正確に理解できるようになります。
そして、今回主役となる <main>
タグも、これらのセマンティックタグの一つです。では、<main>
タグは一体どのような役割を担うのでしょうか?
2. <main>
タグとは何か? HTML5からの新要素
<body>
の中には様々な情報が表示されますが、その中でも最も重要で、そのページの中心となるコンテンツは何でしょうか? それを示すのが <main>
タグ です。
公式な定義と導入の背景
HTMLの仕様を定めているW3C (World Wide Web Consortium) や WHATWG (Web Hypertext Application Technology Working Group) によると、<main>
要素は「文書の <body>
またはアプリケーションの中心的なトピック、または主要な機能のブロックを表す」と定義されています。
つまり、そのウェブページの最もユニークで、読み手が「このページを見に来た目的」となるような内容を囲むために使われるタグです。
<main>
タグは、HTML5という比較的新しいバージョンのHTMLから導入されました。それ以前のHTML(HTML4など)では、主要コンテンツを示すための特定のタグはありませんでした。そのため、<div>
タグなどにCSSクラス名として id="main"
や class="content"
のようにつけて、開発者が主要コンテンツであることを示していました。
しかし、id="main"
や class="content"
は開発者が任意で決めた名前であり、機械がその意味を正確に理解することは難しい場合がありました。そこで、ウェブページの主要コンテンツを示すための標準的かつ意味論的な方法として、<main>
タグが導入されたのです。
「主要コンテンツ」って具体的に何?
「主要コンテンツ」とは、そのページにアクセスしたユーザーが最も関心を持っているであろう、そのページ固有の、中心的な情報のことです。
例えば:
- ブログ記事ページなら、記事の本文そのもの。
- 商品ページなら、商品の説明、画像、価格、購入ボタンなど。
- 検索結果ページなら、検索結果の一覧。
- お問い合わせフォームページなら、入力フォームそのもの。
- ホームページ(トップページ)なら、サイトの紹介、主要なサービスの説明、最新情報など。
これらの「主要コンテンツ」は、ページの他の部分(ヘッダー、ナビゲーション、サイドバー、フッターなど)とは異なり、ページごとに内容が大きく変わる部分です。ヘッダーやフッターなどは、サイト内のどのページを見てもだいたい同じ内容が表示されることが多いですよね。
なぜこのタグが必要なの? セマンティクスという考え方
先ほども少し触れましたが、<main>
タグが導入された最も大きな理由は、セマンティクス(意味論)を向上させるためです。
かつて、ウェブページの構造は主にデザインやレイアウトのために考えられていました。<table>
タグでレイアウトを作ったり、<div>
タグを組み合わせて配置を決めたりしていました。しかし、これらは見た目を整えるためのものであり、コンテンツが「何であるか」という意味を機械に伝える力はほとんどありません。
現代のウェブ開発では、単に「見た目をどうするか」だけでなく、「コンテンツがどのような意味を持っているか」をHTMLで正確に伝えることが重要視されています。これがセマンティックなHTMLを書くということです。
なぜセマンティクスが重要なのでしょうか?それは、ウェブを利用する主体が人間だけではないからです。
- ブラウザ: HTMLを解釈して、適切に表示します。セマンティックなタグがあれば、表示方法をより最適化できる可能性があります。
- 検索エンジン(Googleなど): ウェブページの内容を理解し、検索結果に表示するために、ページを「クローリング」し、内容を分析します。
<main>
タグがあれば、そのページの中心的なトピックがどこにあるのかを素早く正確に把握できます。 - 支援技術(スクリーンリーダーなど): 目が不自由な方などがウェブページを利用する際に、ページの内容を音声で読み上げたり、点字で出力したりするソフトウェアです。セマンティックなタグがあれば、「ここは主要な内容だから、まずここにジャンプしよう」といったナビゲーション機能を提供できます。
- 開発者: チームで開発したり、しばらく経ってからコードを見直したりする際に、コードの構造が意味論的に分かりやすく記述されていれば、どこに何が書いてあるのかをすぐに理解できます。
このように、セマンティックなタグを使うことは、単にルールだから使うというだけでなく、より多くの人や機械にとってウェブページを使いやすく、理解しやすくするための重要な手段なのです。<main>
タグは、その中でも「このページで最も重要な部分」という、非常に根本的な意味を伝えるためのタグとして導入されました。
次の章では、<main>
タグを使うことによって具体的にどのようなメリットが得られるのか、その役割と重要性についてさらに詳しく見ていきましょう。
3. <main>
タグの役割と重要性 – なぜ使うべきなのか?
なぜ私たちは、せっかくHTML5で導入された<main>
タグを積極的に使うべきなのでしょうか? その理由は、大きく分けて以下の4つの役割があるからです。
役割1: セマンティクスの向上 – 機械が内容を理解しやすく
先ほども触れましたが、これが最も基本的な役割です。<main>
タグを使うことで、そのページの中で最も重要なコンテンツがどこにあるのかを、人間だけでなくブラウザ、検索エンジン、支援技術などの「機械」に対して明確に伝えることができます。
例えば、スクリーンリーダーを使っているユーザーがウェブページにアクセスしたとします。もしページがセマンティックなタグ(<header>
, <nav>
, <main>
, <footer>
など)で適切に構造化されていれば、スクリーンリーダーはこれらの領域を「ランドマーク」として認識し、「ヘッダー」「ナビゲーション」「主要コンテンツ」「フッター」といった情報をユーザーに伝えます。ユーザーは聞きたい情報に合わせて、「主要コンテンツにジャンプ」といった操作を簡単に行えるようになります。
もし<main>
タグがなく、単に<div>
タグで主要コンテンツを囲んでいるだけの場合、機械はその<div>
が特別な意味を持つものであることを自動的に認識できません。開発者が id="main"
や class="content"
といった名前を付けていたとしても、それはあくまで開発者の命名規則にすぎず、機械がその意味を普遍的に理解することは難しいのです。
<main>
タグは、HTMLの仕様として「この領域は主要コンテンツである」と定義されているため、世界中のどんなブラウザや支援技術でも、共通の理解を持って処理することができます。これは、ウェブページの構造を標準化し、ウェブ全体の相互運用性を高める上で非常に重要です。
役割2: アクセシビリティの向上 – 誰もが使いやすいページに
セマンティクスの向上は、直接的にアクセシビリティの向上につながります。特に視覚障碍を持つユーザーや、キーボード操作が中心のユーザーにとって、<main>
タグは大きなメリットをもたらします。
- スクリーンリーダーからのアクセス性向上: 多くのスクリーンリーダーには、特定のランドマーク(主要コンテンツ、ナビゲーション、ヘッダーなど)に素早く移動するためのショートカットキーが用意されています。
<main>
タグで主要コンテンツが定義されていれば、ユーザーはページを最初から最後まで順番に読み上げる必要なく、すぐに主要な情報にたどり着くことができます。これは、情報へのアクセス時間を大幅に短縮し、ユーザーのフラストレーションを軽減します。 - 「スキップリンク」の代替または補完: ウェブサイトには、ページの先頭に「主要コンテンツへスキップ」というリンクが設置されていることがあります。これは、キーボードやスクリーンリーダーを使っているユーザーが、毎回ページのヘッダーやナビゲーションを飛ばして主要コンテンツに直接移動できるようにするためのアクセシビリティ機能です。
<main>
タグは、このスキップリンクと同様の役割を、HTMLの構造自体によって提供します。ユーザーエージェント(ブラウザや支援技術)は、<main>
要素が存在することを検知し、ユーザーに主要コンテンツへのジャンプ機能を提供できるのです。多くの最新の支援技術では、<main>
タグを認識して自動的に主要コンテンツへのジャンプ機能を提供するため、明示的なスキップリンクが必要なくなる場合もあります(ただし、古い環境を考慮するとスキップリンクも併用するのがより安全です)。 - 認知負荷の軽減: 構造が明確なページは、ユーザーがページのどこに重要な情報があるかを把握しやすくなります。これは、視覚障碍の有無に関わらず、特に認知的な負荷を軽減したいユーザーや、集中力が持続しにくいユーザーにとっても役立ちます。ページのレイアウトやコンテンツの配置が分かりやすいことは、ユーザーエクスペリエンス全体の向上につながります。
アクセシビリティは、特定のユーザーだけのためではなく、高齢者、一時的な怪我をしている人、低速なインターネット環境を利用している人など、様々な状況にある全ての人にとっての使いやすさを向上させる考え方です。<main>
タグは、ウェブサイトをより包括的で使いやすいものにするための、シンプルながらも効果的な手段の一つです。
役割3: SEOへの間接的な影響 – 検索エンジンにも内容を伝えやすく
Googleなどの検索エンジンは、ウェブページの内容を理解するために、クローラーと呼ばれるプログラムを使ってページを巡回し、その内容を分析しています。検索エンジンは、ユーザーが検索したキーワードに対して、最も関連性の高いページを検索結果として表示しようとします。
この「関連性」を判断するために、検索エンジンはページの様々な要素を評価します。テキストコンテンツはもちろん、見出しの構造(<h1>
〜<h6>
)、リンクの構造、画像の情報(alt
属性)など、HTMLの様々な要素を分析しています。
<main>
タグを使うことは、検索エンジンに対しても「この領域に、このページで最も重要なコンテンツが含まれていますよ」という明確なシグナルを送ることになります。これにより、検索エンジンはページの主要なトピックやキーワードを特定しやすくなり、そのページのコンテンツがユーザーの検索意図にどれだけ合致しているかをより正確に判断できるようになる可能性があります。
ただし、重要な注意点があります。<main>
タグを使うこと自体が、直接的な検索順位の向上(ランキング要因)としてどれだけ影響力があるかは、Googleなどの検索エンジンが具体的に公表しているわけではありません。検索エンジンのアルゴリズムは非常に複雑であり、多数の要因によって順位が決定されます。
しかし、セマンティックなHTMLマークアップ全体が、検索エンジンがコンテンツを理解する助けになることは広く認識されています。そして、アクセシビリティやユーザーエクスペリエンスの向上は、間接的にSEOに良い影響を与えると考えられています。例えば、ページが使いやすく、主要な情報にすぐにたどり着けることで、ユーザーのサイト滞在時間が長くなったり、直帰率が改善されたりすることがあります。これらのユーザー行動の変化は、検索エンジンがページの品質を評価する際の指標の一つになり得ます。
したがって、<main>
タグは、直接的なSEOの特効薬ではないかもしれませんが、ウェブページのセマンティクスと構造を改善し、アクセシビリティを高めることで、結果としてSEOに良い影響を与える重要な要素の一つと言えます。より分かりやすく、使いやすいページは、人にも機械にも好まれる傾向があるのです。
役割4: コードの可読性と保守性の向上 – 開発者にも優しいコードに
ウェブサイトは一度作ったら終わりではなく、多くの場合、公開後もコンテンツの更新や機能の追加、デザインの修正など、メンテナンスや改善が続けられます。複数の開発者が協力して作業したり、しばらく時間が経ってから自分でコードを見直したりすることも頻繁にあります。
このような場面で、セマンティックなHTMLコードは大きな威力を発揮します。<main>
、<header>
、<nav>
、<aside>
、<footer>
といったタグでページの主要な領域が明確に区切られていれば、コードを読んだ人がその構造をすぐに理解できます。
「ああ、この<main>
タグの中がこのページの本文なんだな」「ナビゲーションを修正したいなら、<nav>
タグの中を見ればいいんだな」というように、コードのどこに目的の情報があるのかを素早く特定できます。
もし、これらの構造が全て<div>
タグとクラス名だけで表現されていたらどうでしょう? div class="header"
, div class="navigation"
, div class="main-content"
, div class="sidebar"
, div class="footer"
のように記述することは可能ですが、クラス名は開発者の自由な命名に依存します。もし命名規則が曖昧だったり、複数人で開発していて規則が守られていなかったりすると、コードを読む際にいちいちクラス名を見て「これは何を示す部分だろう?」と考える必要が出てきます。
<main>
タグなどのセマンティックタグは、タグ自体が意味を持っているため、そのような命名規則に依存することなく、普遍的に構造を理解できます。これは、コードの可読性を高め、メンテナンスや機能追加などの「保守性」を向上させる上で非常に重要です。開発の効率化にもつながります。
まとめると、<main>
タグを使うことは、ウェブページを「人」と「機械」の双方にとってより良いものにするための重要なステップです。セマンティクス、アクセシビリティ、SEO、そして開発効率。これらのメリットを考えれば、<main>
タグを使わない手はありません。
4. <main>
タグの基本的な使い方とルール
では、実際にHTMLコードの中で<main>
タグはどのように記述すれば良いのでしょうか? いくつか基本的なルールと注意点があります。
基本的な記述方法
<main>
タグは、他のHTML要素と同様に、開始タグ<main>
と終了タグ</main>
で囲みます。このタグで囲まれた範囲が、そのページの主要コンテンツとなります。
“`html
ページのメインタイトル
これは主要コンテンツの一部である段落です。
記事のタイトル
記事の本文…
関連情報
- 関連リンク1
- 関連リンク2
“`
このように、<body>
タグの中に、<header>
, <nav>
, <main>
, <aside>
, <footer>
といった主要な構造要素を配置するのが一般的なパターンです。<main>
タグの中には、そのページの主題となるコンテンツを記述します。<article>
や<section>
といったセマンティックタグを使って、主要コンテンツ内をさらに構造化することもよく行われます。
ページに一つだけ! <main>
タグの一意性
<main>
タグを使う上で、最も重要なルールの一つは、「HTMLドキュメント(1つのページ)の中に、可視化されている <main>
要素は1つだけ」という点です。
これは、<main>
タグが「そのページで最も重要なコンテンツ」を示すタグであるためです。ページの中心となる内容は、通常一つしかありません。例えば、家の中で「リビングルーム」が複数あることは考えにくいですよね(LDKのような場合はLやDやKが組み合わさって一つの「主要空間」を構成しますが)。ウェブページも同様に、複数の「最も重要なコンテンツ」が存在することは、意味論的に不自然です。
もし、誤って複数の<main>
タグを配置してしまった場合、ブラウザや支援技術、検索エンジンがページの構造を正しく理解できなくなる可能性があります。例えば、スクリーンリーダーがどの<main>
要素にジャンプすればよいか分からなくなったり、検索エンジンがどの部分をページの主要なトピックとみなせばよいか混乱したりするかもしれません。
したがって、<main>
タグを使う際は、ページ全体で<main>
タグが一つだけであることを必ず確認してください。
(補足)ただし、hidden
属性が指定されているなど、ユーザーに対して非表示になっている<main>
要素であれば、技術的には複数存在しても仕様上問題ないとされています。しかし、これは非常に特殊なケースであり、通常は使われることはありません。あくまで「可視化されている<main>
要素は1つだけ」と覚えておくのが良いでしょう。
配置場所のルール – ここには置けない!
<main>
タグは、<body>
タグの中に配置しますが、配置できる場所にもルールがあります。
<main>
要素は、以下の要素の子孫として配置することはできません。
<article>
<aside>
<footer>
<header>
<nav>
これらの要素は、それぞれが特定のセマンティックな役割(自己完結したコンテンツ、補足情報、フッター、ヘッダー、ナビゲーション)を持っており、それらの要素の中に「ページの主要コンテンツ」が含まれるというのは、意味論的に不自然だからです。
例えば、サイトのヘッダー部分(<header>
)の中に、そのページのメイン記事(<main>
)が含まれている、というのはおかしいですよね。ヘッダーはヘッダー、主要コンテンツは主要コンテンツとして、それぞれ独立した存在であるべきです。
上記のルールを守るためには、通常、<main>
タグは<body>
タグの直下や、<header>
, <nav>
, <aside>
, <footer>
といった他の主要な構造要素と並列に配置されます。
“`html
“`
このように、<body>
の子要素として、それぞれの役割に応じたタグが配置されます。<main>
タグの中に<article>
や<section>
を配置することは可能であり、むしろ推奨される構造です。これは、主要コンテンツ(<main>
)の中に、自己完結した記事(<article>
)や、いくつかのまとまり(<section>
)が含まれる、という意味になり、自然な構造だからです。
ARIAロールとの関係
<main>
タグは、アクセシビリティ向上のために導入された側面が強いタグです。実は、<main>
タグはデフォルトで role="main"
というWAI-ARIA(Web Accessibility Initiative – Accessible Rich Internet Applications)のロールを持っています。
WAI-ARIAは、HTMLだけでは表現しきれない高度な役割や状態を、アクセシビリティ支援技術に伝えるための技術仕様です。role="main"
は、その要素が文書の主要なコンテンツ領域であることを示します。
<main>
タグを使うこと自体が、自動的にこの role="main"
を付与したことと同じ意味になります。したがって、特別な理由がない限り、<main>
タグに改めて role="main"
を記述する必要はありません。
“`html
“`
このことからも、<main>
タグがアクセシビリティにおいて重要な役割を果たしていることが分かります。
これらのルールと使い方を理解していれば、<main>
タグを正しく、効果的に活用できます。
5. <main>
タグに「含むべきコンテンツ」と「含まないべきコンテンツ」
「主要コンテンツ」という言葉は少し抽象的に聞こえるかもしれません。具体的に、どのような内容を<main>
タグの中に含めるべきで、どのような内容を含めないべきなのでしょうか? ここでは、具体的な例を挙げて解説します。
含むべきコンテンツの具体例
繰り返しになりますが、<main>
タグに含むべきは、「そのページ固有の、最も重要で中心的な情報」です。言い換えれば、そのページから<main>
タグの中身だけを取り出しても、そのページがどんな内容について書かれているのかが十分に理解できるようなコンテンツです。
以下に、具体的な例を挙げます。
- ブログの記事ページ: 記事のタイトル、本文、著者情報、投稿日、記事に関連する画像や動画など、記事そのものの内容。記事に対するコメント欄も、主要コンテンツの一部として含まれることがあります。
- ニュース記事ページ: ニュースの見出し、本文、掲載されている写真や動画、関連情報(速報、背景など)など、ニュースそのものの内容。
- 商品詳細ページ: 商品名、商品の説明、価格、商品の画像、レビュー、在庫状況、購入ボタンなど、その商品を特定し、購入を検討するために必要な全ての情報。
- 検索結果ページ: 検索キーワード、検索結果のリスト(タイトル、概要、リンクなど)、検索結果の絞り込みや並べ替えに関するUI要素など、検索結果そのもの。
- お問い合わせフォームページ: お問い合わせ内容を入力するためのフォーム本体(入力フィールド、送信ボタンなど)、お問い合わせに関する説明書きなど、フォームとその説明に関連する部分。
- ランディングページ (LP) の主要セクション: サービス紹介、製品の特徴、お客様の声、導入事例、Q&A、問い合わせや資料請求を促すためのCTA (Call To Action) エリアなど、ページの目的(商品購入、問い合わせなど)を達成するために配置された核となるコンテンツ群。これらは複数の
<section>
として<main>
内に配置されることが多いです。 - プロフィールページ: その人の名前、自己紹介文、経歴、ポートフォリオなど、その人に関する中心的な情報。
これらの例に共通するのは、「このページだからこそ存在する、最も見てもらいたい情報」であるという点です。
含まないべきコンテンツの具体例
逆に、<main>
タグに含めるべきではないのは、「サイト全体を通して共通して表示される可能性のある情報」や、「ページの主要な内容とは直接関係ない補足的な情報」です。
具体的には、以下のようなものが挙げられます。これらは通常、<header>
, <nav>
, <aside>
, <footer>
といった他のセマンティックタグを使って記述されます。
- サイトのロゴやサイトタイトル: これは通常、
<header>
に含めます。 - グローバルナビゲーション: サイト内の主要なページへのリンク集。これは通常、
<nav>
に含めます。ページの主要コンテンツの途中に、そのページに関連する他の記事へのリンク集がある場合は、それは主要コンテンツの一部として<main>
内に含まれてもおかしくありませんが、サイト全体の主要なナビゲーションは含めません。 - サイト全体の検索バー: サイト内を検索するためのフォーム。ページ固有の検索結果を表示する検索バー(例:ECサイトのカテゴリ内検索バーなど)は
<main>
内に含まれることがありますが、サイト全体の検索バーは通常<header>
や<aside>
に含まれます。 - 補足情報や関連リンク: 主要な記事の横に表示される「関連性の高い記事」「人気記事」「最新記事」といったリスト、筆者以外のプロフィール、サイト全体の広告など。これらは通常、
<aside>
に含めます。ただし、記事の文脈中で関連情報として表示される場合は、主要コンテンツの一部として<main>
内に含まれることもあります。判断が難しい場合は、「そのコンテンツがなくても、主要な内容は理解できるか?」を基準に考えます。 - 著作権表示: サイト全体の著作権情報や連絡先など。これは通常、
<footer>
に含めます。 - フッターナビゲーション: フッターに配置されるサイトマップやプライバシーポリシーへのリンクなど。これは通常、
<footer>
やその中の<nav>
に含めます。 - 広告: ページの主要コンテンツの一部としてデザインされている広告(例:ネイティブ広告など)は判断が難しい場合がありますが、サイドバーや記事の前後などに表示される一般的なバナー広告などは、通常は
<main>
に含めません。
これらの要素は、多くのページで共通して表示されたり、主要コンテンツとは切り離して考えることができる情報です。
判断に迷ったときはどう考える?
「これは<main>
に入れるべきか、それとも他のタグに入れるべきか?」と迷うこともあるかもしれません。そんなときは、以下の点を基準に考えてみてください。
-
このコンテンツは、ユーザーがこのページを訪れた主な目的を達成するためのものか?
- YES →
<main>
に含める可能性が高い - NO → 他のタグ(
<header>
,<nav>
,<aside>
,<footer>
など)を検討する
- YES →
-
このコンテンツは、サイト内の他の多くのページでも同じように表示されるか?
- YES →
<main>
には含まない可能性が高い(ヘッダー、フッター、グローバルナビゲーションなど) - NO →
<main>
に含める可能性が高い
- YES →
-
このコンテンツは、ページの主要な内容がなくても独立して意味を持つか?
- YES →
<article>
や<aside>
といった、より限定的なスコープのセマンティックタグを検討する。それがページの主要な<article>
や<aside>
であれば、<main>
内に含める。 - NO → 主要な内容の一部である可能性が高い。
- YES →
特に、<main>
タグは「そのページ独自の」コンテンツを囲む、という点を意識すると分かりやすいでしょう。ヘッダーやフッター、グローバルナビゲーションは、ページが変わっても大体同じ内容が表示される「サイト全体の」要素であることが多いです。それに対して、<main>
の中身は、そのページの主題によって全く異なる内容になります。
迷った場合は、まず最も重要と思われる内容を<main>
で囲んでみて、残りの要素が他のセマンティックタグに自然に収まるかを確認してみるのも良い方法です。
6. 他のセマンティック要素との比較と組み合わせ方
HTML5で導入されたセマンティックタグは、それぞれが特定の役割を持っています。<main>
タグもその一つですが、<article>
や<section>
といった他のタグとどのように異なるのでしょうか? また、どのように組み合わせて使うのが良いのでしょうか?
<article>
と <main>
: 自己完結した記事とページの主要部
<article>
: 自己完結した、独立したコンテンツの単位を表します。例えば、ブログの記事、ニュース記事、フォーラムの投稿、コメントなどがこれにあたります。<article>
要素は、その内容だけで他のページやサイトから独立して配信(フィードなど)されたり、再利用されたりしても意味が通じるようなまとまりに対して使用します。<main>
: 文書の主要なコンテンツ全体を表します。
違いはスコープ(範囲)です。<article>
はコンテンツの「単位」であり、その単位自体が独立した意味を持ちます。一方、<main>
はそのページの「主要な領域」全体を示します。
あるページにブログ記事が一つだけ表示されている場合、そのブログ記事全体(<article>
)がページの主要コンテンツ(<main>
)となります。この場合、<main>
タグの中に<article>
タグを配置することになります。
“`html
記事のタイトル
記事の本文…
“`
では、もし1つのページに複数のブログ記事の概要が一覧で表示されている「ブログ一覧ページ」のような場合はどうでしょう? この場合、ページ全体の主要コンテンツは「ブログ記事の概要リスト」です。そして、リストの各項目はそれぞれが独立したブログ記事の概要(<article>
)としてマークアップできます。
“`html
ブログ記事一覧
新着記事
記事1のタイトル
記事1の概要…
記事2のタイトル
記事2の概要…
“`
この例では、<main>
はページ全体の主要コンテンツ(ブログ記事一覧)を囲み、その中に個々の記事概要を表す<article>
が複数配置されています。このように、<main>
はページの主要部分全体をカバーし、その中に複数の<article>
が含まれる、という関係性になります。
<section>
と <main>
: 部分的なまとまりと主要な全体
<section>
: 文書やアプリケーションの一般的なセクション(区切り)を表します。通常、見出し(<h1>
〜<h6>
)を持ったテーマ別のコンテンツのまとまりに使われます。<main>
: 文書の主要なコンテンツ全体を表します。
<section>
は、より大きなコンテンツ領域を意味のある単位に分割するために使用されます。一方、<main>
はそのページの主要な部分全体です。
<main>
タグの中に複数の<section>
タグを配置することは、非常によくあるパターンです。これは、ページの主要コンテンツが複数のテーマやセクションに分かれている場合に適しています。
例えば、商品の詳細ページで、「商品概要」「仕様」「お客様レビュー」「関連商品」といったセクションがある場合、これらをそれぞれ<section>
でマークアップし、それら全体を<main>
で囲む、といった構造が考えられます。
“`html
[商品名]
商品概要
商品の簡単な説明…
仕様
お客様レビュー
“`
この例では、<main>
がページ全体の主要コンテンツ(商品の詳細情報)を囲み、その主要コンテンツが複数の<section>
(商品概要、仕様、レビューなど)に分かれています。
<article>
と<section>
はどちらもコンテンツのまとまりを示しますが、<article>
が「独立して再利用可能な単位」であるのに対し、<section>
は「文書構造上の意味のある区切り」というニュアンスが強いです。どちらを使うべきか迷う場合は、「そのまとまりを他のページや文脈で単独で表示しても意味が通じるか?」と考えてみてください。通じるなら<article>
、文書全体の構造の中での区切りなら<section>
が適していることが多いです。そして、これらの<article>
や<section>
がそのページの最も重要な内容であるならば、それらをまとめて<main>
で囲みます。
<header>
, <nav>
, <aside>
, <footer>
との関係: 主役と脇役
これらのタグは、<main>
タグと並列に配置され、それぞれがウェブページの異なる役割を担います。
<header>
: ページの頭部分。サイトの顔となる部分であり、サイト名やロゴ、主要なナビゲーションなどが配置されます。サイト全体に関わる情報が多いです。<nav>
: ナビゲーションのまとまり。他のページへのリンク集です。<header>
の中、<aside>
の中、<footer>
の中など、様々な場所に配置され得ますが、サイト全体の主要なナビゲーションは多くの場合<header>
または<main>
と並列に配置されます。<aside>
: 主要コンテンツとは直接関連しない補足情報。サイドバーによく使われます。<footer>
: ページの末尾部分。著作権情報、連絡先、関連リンクなどが配置されます。サイト全体に関わる情報が多いです。
これらの要素は、ページの「主役」である<main>
を補完する「脇役」のような存在です。<body>
の中で、これらの脇役たちが主役である<main>
を取り囲むような形で配置されるのが、一般的なウェブページのレイアウト構造です。
“`html
このページのタイトル
メインの文章…
“`
このように、それぞれのタグが持つセマンティックな役割を理解し、適切に組み合わせることで、機械にも人間にも分かりやすい、論理的でアクセシブルなHTML構造を作り上げることができます。<main>
タグは、この構造の中心を担う、非常に重要な要素なのです。
7. 実践!具体的なコード例で理解を深める
これまでの説明を踏まえて、いくつかの典型的なウェブページの構造を例に、<main>
タグの具体的な使い方を見ていきましょう。
例1: シンプルなブログ記事ページ
単体のブログ記事を表示するページのHTML構造です。
“`html
[サイト名]
【初心者向け】HTML main タグの使い方と役割
公開日:
著者: [著者名]
はじめに
ウェブページを作りたい皆さん、こんにちは!…
HTMLの基本的な構造
HTMLはウェブサイトの骨組みです…
まとめ
いかがでしたでしょうか?…
“`
この例では、<body>
の中に<header>
, <main>
, <aside>
, <footer>
が並列に配置されています。
<main>
の中には、ページの主要コンテンツである「ブログ記事」(<article>
)と、それに関連する「コメント欄」(<section>
)が含まれています。<article>
タグの中では、見出し(<h1>
〜<h6>
)と<section>
を使って、記事の本文をさらに構造化しています。
<aside>
には、記事本体とは直接関係ないが、補足的な情報である「関連コンテンツ」や「著者プロフィール」が配置されています。
このように、ページの主要な内容は<main>
の中に、それ以外の部分は役割に応じたタグの中に配置することで、非常に分かりやすい構造になっています。
例2: 商品一覧ページ
オンラインストアの商品一覧ページを想定した構造です。
“`html
[ストア名]
商品一覧
商品を絞り込む / 並べ替える
商品リスト
“`
この例では、商品一覧ページの主要コンテンツは「商品リスト」とその関連機能(絞り込み、ページネーション)です。これら全体が<main>
で囲まれています。
「絞り込み/並べ替え」と「商品リスト本体」は、主要コンテンツ内の異なるセクションとして<section>
で分けられています。商品リスト内の各商品は、独立した意味を持つ「商品項目」として<article>
でマークアップすることも可能です(あるいは単に<li>
などでも良いですが、<article>
の方が意味論的に優れています)。ページネーションはナビゲーション機能なので<nav>
を使っていますが、これはページ固有のナビゲーションであり、主要コンテンツの一部とみなせるため<main>
内に含まれています。
例3: ランディングページ (LP) 風の構造
一つの製品やサービスを紹介し、特定の行動(問い合わせ、購入など)を促すことに特化したランディングページ(LP)風の構造です。LPは通常、複数の異なるコンテンツブロックが縦に並んでいます。
“`html

[サービス名]
キャッチフレーズや簡単な説明
[サービス名]の3つの特徴
お客様の声
料金プラン
お問い合わせ
“`
この例では、LPの核となる複数のコンテンツブロック(ヒーローセクション、特徴紹介、お客様の声など)が、それぞれ<section>
としてマークアップされ、それら全体が<main>
タグで囲まれています。LPは単一の目的(コンバージョン)に向けて設計されたページであり、ページ上の全てのコンテンツがその目的のために配置されているため、これらの<section>
全てをまとめて<main>
で囲むのが適切です。
避けるべき悪いコード例
<main>
タグを使う上で避けるべき、間違った使い方の例です。
“`html
主要コンテンツ1
主要コンテンツ2
“`
なぜ悪いか: ページ内に可視化された<main>
要素は一つだけというルールに違反しています。ブラウザや支援技術が混乱します。
“`html
ページタイトル
主要コンテンツ本体
…
“`
なぜ悪いか: <main>
要素の中に、<header>
, <nav>
, <footer>
といった他の主要なセマンティックタグを含めてはいけません。これらの要素は<main>
と並列に配置されるべきものです。ページ固有のヘッダーやフッター(例えば、ブログ記事内の著者情報がヘッダー的な役割を果たしたり、記事の最後に参考文献リストがあったりする場合など)であれば、<article>
や<section>
の中に含まれることはあり得ますが、サイト全体のヘッダーやフッター、ナビゲーションは<main>
の外に置くべきです。上記の例では、外側の<header>
や<footer>
とは別に、内側にもこれらのタグが使われているため、さらに構造が複雑で不自然になっています。
“`html
ページタイトル
主要な内容…
“`
なぜ悪いか: セマンティクスとアクセシビリティの観点から推奨されません。このdiv
タグは意味を持たないため、機械が主要コンテンツを特定しにくくなります。<main>
タグでマークアップすれば、機械がその領域を主要コンテンツとして認識できるようになります。
これらのコード例を通して、<main>
タグをどのように使い、どのように使うべきではないか、具体的なイメージを持つことができたかと思います。
8. <main>
タグとアクセシビリティ – 誰もが快適に利用できるように
<main>
タグは、ウェブアクセシビリティ(Web Accessibility)を向上させるために非常に重要な役割を果たします。ウェブアクセシビリティとは、「年齢、身体的・精神的な特性、利用環境などに関係なく、誰もがウェブサイトで提供されている情報や機能を問題なく利用できること」を目指す考え方です。
なぜ<main>
タグがアクセシビリティに貢献するのでしょうか? それは、主に以下のような理由からです。
スクリーンリーダーでのメリット
スクリーンリーダーは、視覚に障碍がある方などがウェブサイトを利用する際に、画面上のテキストや操作可能な要素(リンク、ボタンなど)を音声で読み上げたり、点字ディスプレイに出力したりするソフトウェアです。
セマンティックなHTML要素、特にランドマークと呼ばれる要素(<header>
, <nav>
, <main>
, <aside>
, <footer>
, <article>
, <section>
など)は、スクリーンリーダーのユーザーにとって、ページの構造を理解し、効率的に移動するための重要な手助けとなります。
<main>
タグは、デフォルトで role="main"
というランドマークロールを持つため、多くのスクリーンリーダーは<main>
要素を「主要コンテンツ領域」として認識し、ユーザーにその存在をアナウンスします。例えば、「主要コンテンツ ランドマーク」といった音声ガイドが流れます。
さらに、多くのスクリーンリーダーは、主要なランドマーク間を移動するためのショートカットキーを提供しています。ユーザーは、キーボード操作だけで、ページのヘッダー、ナビゲーション、そして主要コンテンツへと素早くジャンプできます。これにより、サイトのヘッダーやグローバルナビゲーションなど、多くのページで共通して表示される部分を毎回全て聞き通す必要がなくなり、目的の情報(主要コンテンツ)にすぐにアクセスできるようになります。これは、特に画面の情報全てを聞き取るのに時間がかかるスクリーンリーダーユーザーにとって、ウェブサイトの利用効率を大幅に向上させます。
「スキップリンク」との連携
前述したように、「主要コンテンツへスキップ」というスキップリンクは、キーボードユーザーやスクリーンリーダーユーザーがナビゲーションなどを飛ばして主要コンテンツに直接ジャンプするためのアクセシビリティ機能です。
歴史的に、このスキップリンクの飛び先は、主要コンテンツを囲む<div>
要素などに設定された id
属性(例: <div id="main-content">
)でした。しかし、<main>
タグが導入されたことで、スクリーンリーダーなどのユーザーエージェントは<main>
タグ自体を主要コンテンツの開始地点として認識できるようになりました。
多くの最新の支援技術では、<main>
要素を自動的に認識し、特別なスキップリンクがなくても主要コンテンツへのジャンプ機能を提供します。ただし、全てのユーザーエージェントやブラウザの組み合わせでこれが保証されるわけではないため、特に古い環境や多様な利用状況を考慮する場合、スキップリンクと<main>
タグを併用するのが最も堅牢なアプローチとされています。スキップリンクの飛び先として、<main>
タグにIDを付与し、そのIDを指定するという形です。
“`html
主要コンテンツへスキップ
主要コンテンツのタイトル
…
“`
このように<main>
タグとスキップリンクを組み合わせることで、より多くのユーザーに対して、主要コンテンツへのアクセス手段を提供できます。
キーボード操作への恩恵
キーボードのみでウェブサイトを操作するユーザー(マウスが使えない、または使わないユーザー)も、セマンティックなランドマーク構造の恩恵を受けます。多くのブラウザや支援技術は、ランドマーク間を移動するためのキーボードショートカットを提供しており、これにより、キーボードユーザーはページの構造を理解し、不要な部分を飛ばして目的のコンテンツに効率的にたどり着くことができます。
特に長いウェブページの場合、キーボードのTabキーをひたすら押してページの要素を順番にフォーカスしていくのは非常に時間がかかります。<main>
タグなどのランドマーク構造があれば、ユーザーは主要コンテンツの開始地点に一気にジャンプできるため、操作の手間と時間を大幅に削減できます。
包括的なウェブサイト構築のために
ウェブアクセシビリティは、特定の障碍を持つ方のためだけのものではなく、誰にとってもウェブサイトを使いやすくするための取り組みです。例えば、スマートフォンで小さな画面を見ているユーザー、一時的に手が使えないユーザー、集中力が散漫になりやすいユーザーなど、様々な状況にある人々が、明確な構造を持つウェブサイトから恩恵を受けます。
<main>
タグは、ウェブページの最も重要な部分を明確に区別し、ユーザーエージェントにその情報を伝えることで、このような包括的なユーザーエクスペリエンスの実現に貢献します。セマンティックなマークアップを行うことは、単なる技術的な要件ではなく、ウェブサイトをより開かれた、利用しやすい情報源にするための、倫理的かつ実用的な側面を持っています。初心者の方も、HTMLを書く際にぜひこのアクセシビリティの視点を取り入れてみてください。<main>
タグを使うことは、その第一歩として非常に有効です。
9. <main>
タグとSEO – 検索エンジンに正しく内容を伝える
セマンティックなHTMLマークアップ、特に<main>
タグのような要素が、検索エンジンの最適化(SEO)にどれだけ直接的に影響するのかは、ウェブ開発者の間でしばしば議論されるテーマです。検索エンジンのアルゴリズムは複雑で常に進化しているため、特定のタグの効果を定量的に示すのは難しいですが、一般的な理解としては、セマンティクスはSEOにとって間接的かつ重要な要素であると考えられています。
クローラーは <main>
をどう見る?
Googleなどの検索エンジンのクローラーは、ウェブページのHTMLコードを読み込んで、その内容を分析し、インデックス化します。このプロセスの中で、クローラーはページの構造を理解しようと努めます。セマンティックタグは、この構造理解の手助けとなります。
<main>
タグで囲まれたコンテンツは、「このページの中心的なトピックやキーワードはここにある可能性が高い」という明確なヒントをクローラーに与えます。これにより、クローラーはページの最も重要な部分を効率的に特定し、その内容をページの主要なテーマとして認識しやすくなります。
例えば、あるブログ記事ページで、記事本文(<main>
タグで囲まれている)に特定のキーワードが頻繁に出現する場合、検索エンジンはそのキーワードがそのページの主要なトピックであると判断しやすくなります。逆に、ヘッダーやサイドバー(<main>
の外にある)に共通して表示されるキーワードは、サイト全体のテーマを示すものとして認識される可能性が高く、ページ固有の主要トピックとは区別されるかもしれません。
コンテンツの重要性を示すシグナル?
<main>
タグで囲まれたコンテンツは、そのページの他の部分(ヘッダー、ナビゲーション、フッター、サイドバーなど)と比較して、より「重要」であると検索エンジンに伝えるシグナルとして機能する可能性があります。検索エンジンは、ページの「本当の」コンテンツ、つまりユーザーが求めているであろう情報がどこにあるのかを正確に把握したいと考えています。
特に、広告やサイト全体の共通要素が多いページでは、主要コンテンツがどこにあるのかをプログラムで特定するのは難しい場合があります。<main>
タグがあれば、これらのノイズの中から主要コンテンツを浮き上がらせることができます。
これにより、検索エンジンはページの「本当の」内容に焦点を当てやすくなり、コンテンツの関連性や品質をより適切に評価できるようになるかもしれません。
間接的なランキング要因としての可能性
セマンティックなHTMLマークアップ、特に<main>
タグの使用は、前述したアクセシビリティやユーザーエクスペリエンスの向上に直接つながります。そして、これらのユーザーに関する指標は、間接的に検索順位に影響を与える要因として考えられています。
- 滞在時間の増加、直帰率の低下: アクセシブルで使いやすいページは、ユーザーが情報を探しやすく、快適に利用できます。これにより、ユーザーがページに長く滞在したり、他の関連ページに移動したりする可能性が高まります(滞在時間の増加、直帰率の低下)。検索エンジンは、これらのユーザー行動をページの品質を評価する指標の一つとして参考にしていると言われています。
- コンテンツの関連性の正確な評価:
<main>
タグにより主要コンテンツが明確化されることで、検索エンジンはページの主題をより正確に理解できます。これにより、ユーザーの検索クエリとページのコンテンツの関連性が適切に評価され、より的確なユーザーにページが表示される可能性が高まります。結果として、検索結果からのクリック率が向上したり、ユーザーが満足して離脱する割合が増えたりする可能性があります。
これらの要素は、直接的に「<main>
タグを使えば順位が上がる」という単純な関係ではありませんが、ウェブサイト全体の品質、ユーザーエクスペリエンス、そしてコンテンツの関連性を向上させることで、結果として検索エンジンの評価が高まることに貢献し得ます。
セマンティクスとSEOの今後
検索エンジンの技術はますます進化しており、コンテンツの意味をより深く理解しようとしています。単なるキーワードの一致だけでなく、コンテンツの文脈や構造、そしてそれがユーザーにとってどれだけ有用であるかを重視する傾向が強まっています。このような背景において、セマンティックなHTMLマークアップは、検索エンジンがウェブページの内容を正確に理解するための、今後ますます重要になる基盤技術と言えます。
<main>
タグを使うことは、セマンティックなマークアップを行う上での基本的なステップの一つです。直接的なSEO効果だけを期待するのではなく、「人にも機械にも分かりやすいウェブページを作る」という本来の目的のためにセマンティックタグを使うことが、結果としてSEOにも良い影響をもたらす最良のアプローチと言えるでしょう。
10. <main>
タグのスタイリング – デザインに活かす
<main>
タグは、見た目のデザインには影響しません。HTMLはあくまで構造と意味を定義するためのものであり、デザイン(見た目やレイアウト)はCSS(Cascading Style Sheets)の役割です。
しかし、<main>
タグはページの主要コンテンツ領域を意味論的に区別するため、CSSを使ってこの領域をスタイリングしたり、レイアウトの基準として利用したりするのに非常に便利です。
基本的なCSSの当て方
他のHTMLタグと同様に、<main>
タグにもCSSセレクタを使ってスタイルを適用できます。
“`css
/ mainタグ全体のスタイル /
main {
margin: 20px auto; / 上下20px、左右中央寄せ /
padding: 0 20px; / 左右の内側余白 /
max-width: 800px; / 最大幅 /
line-height: 1.6; / 行の高さ /
color: #333; / 文字色 /
background-color: #fff; / 背景色 /
}
/ mainタグの中にあるh1要素のスタイル /
main h1 {
color: #0056b3;
margin-top: 0;
}
/ mainタグの中にあるsection要素のスタイル /
main section {
margin-bottom: 40px;
border-bottom: 1px solid #eee;
padding-bottom: 20px;
}
“`
このように、<main>
タグをセレクタとして使うことで、主要コンテンツ領域全体にまとめてスタイルを適用したり、主要コンテンツ内の要素に特定のスタイルを適用したりできます。これは、サイト全体の共通スタイル(ヘッダーやフッターのスタイルなど)と、ページ固有の主要コンテンツのスタイルを明確に区別してCSSを記述するのに役立ち、CSSコードの管理を容易にします。
レイアウトにおける役割
<main>
タグは、ページの主要コンテンツ領域を定義するため、CSSによる全体レイアウトにおいて重要な役割を果たします。例えば、左右にサイドバーがある3カラムレイアウトの場合、<header>
, <nav>
, <main>
, <aside>
, <footer>
といった要素をCSS GridやFlexboxなどのレイアウト手法を使って配置します。
“`html
“`
“`css
/ CSS Gridを使った3カラムレイアウトの例 /
body {
display: grid;
grid-template-areas:
“header header header”
“nav nav nav”
“main aside aside” / もしくは “aside main main” など /
“footer footer footer”;
grid-template-columns: 1fr 2fr 1fr; / nav, main, aside の幅の比率 /
gap: 20px; / 要素間の隙間 /
}
header { grid-area: header; }
nav { grid-area: nav; }
main { grid-area: main; }
aside { grid-area: aside; }
footer { grid-area: footer; }
/ simple example without grid-template-areas /
body {
display: flex;
flex-direction: column; / 要素を縦に並べる /
}
header, footer {
/ header and footer styles /
}
.content-area {
display: flex; / mainとasideを横に並べる /
width: 100%;
max-width: 1200px; / 最大幅を設定 /
margin: 0 auto; / 中央寄せ /
padding: 0 20px;
}
main {
flex-grow: 1; / 利用可能なスペースを占有 /
margin-right: 40px; / asideとの間に隙間 /
}
aside {
flex-shrink: 0; / 縮小しない /
width: 300px; / asideの固定幅 /
}
“`
このように、<main>
タグをレイアウトの構成要素として捉え、CSSを使って他の要素と組み合わせて配置することで、複雑なページレイアウトも分かりやすく、メンテナンスしやすい形で実現できます。
レスポンシブデザインでの活用
レスポンシブデザイン(PC、タブレット、スマートフォンなど、様々な画面サイズに対応したデザイン)においても、<main>
タグは重要です。画面サイズが小さいスマートフォンではサイドバー(<aside>
)を主要コンテンツ(<main>
)の下に配置したり、ナビゲーション(<nav>
)を非表示にしてメニューボタンで表示するように切り替えたりすることがよくあります。
CSSのメディアクエリを使って画面サイズごとにスタイルを切り替える際に、<main>
タグを基準としてレイアウトを調整することができます。
“`css
/ スマートフォン向けのスタイル /
@media (max-width: 768px) {
body {
grid-template-areas:
“header header header”
“nav nav nav”
“main main main” / スマートフォンではmainを全面に /
“aside aside aside” / asideはmainの下に /
“footer footer footer”;
grid-template-columns: 1fr; / 1カラム /
}
.content-area {
flex-direction: column; /* 縦並びに変更 */
}
main {
margin-right: 0; /* asideとの隙間をなくす */
}
aside {
width: auto; /* 幅を自動調整 */
}
}
“`
このように、<main>
タグがページの主要コンテンツ領域を明確に定義しているおかげで、異なるデバイスや画面サイズに合わせてその領域のサイズや配置をCSSで柔軟に調整することが容易になります。
<main>
タグ自体にデフォルトのスタイルはありませんが、セマンティックな役割を持つことで、CSSを使ったスタイリングやレイアウト設計において、非常に有用なフック(起点)となります。
11. まとめ – <main>
タグを使いこなそう!
長くなりましたが、HTMLの<main>
タグについて、その使い方、役割、そして重要性について詳しく解説してきました。
改めて、<main>
タグのポイントをまとめましょう。
<main>
タグは、HTMLドキュメントの主要なコンテンツを囲むために使われる、HTML5から導入されたセマンティックなタグです。- その最大の役割は、ウェブページの構造を意味論的に明確化することです。これにより、ブラウザ、検索エンジン、そして特にアクセシビリティ支援技術が、ページの最も重要な内容を正確に理解できるようになります。
<main>
タグを使うことは、アクセシビリティを大きく向上させます。スクリーンリーダーユーザーが主要コンテンツに素早くジャンプできるなど、様々な利用状況にある人々がページを快適に利用できるようになります。- SEOにも間接的に良い影響をもたらす可能性があります。検索エンジンがページの主要なトピックを理解しやすくなるほか、アクセシビリティ向上によるユーザー行動の変化がポジティブなシグナルとなり得ます。
- コードの可読性や保守性も向上し、開発者にとって分かりやすいコードになります。
- 使用上の主なルールは、ページ内に可視化された
<main>
要素は一つだけであること、そして<article>
,<aside>
,<footer>
,<header>
,<nav>
の子孫要素にすることはできないということです。通常、これらの要素と並列に<body>
の直下に配置されます。 <main>
タグの中には、そのページ固有の、最も重要なコンテンツ(記事本文、商品情報、フォームなど)を含め、サイト全体の共通要素(ヘッダー、グローバルナビゲーション、フッターなど)は含めません。<article>
や<section>
といった他のセマンティックタグと組み合わせて、主要コンテンツ内をさらに構造化することが推奨されます。- CSSでのスタイリングやレイアウト設計においても、
<main>
タグは主要コンテンツ領域を特定するための有用な要素となります。
初心者の方にとっては、まず「ウェブページの主役を<main>
で囲むんだな」という基本的な考え方から始めるのが良いでしょう。最初は完璧に全てのルールを覚える必要はありません。実際に簡単なページを作成する際に、<header>
, <nav>
, <main>
, <footer>
といった主要な構造タグを意識して配置してみることから始めてみてください。
セマンティックなHTMLマークアップは、現代のウェブ開発において非常に重要なスキルです。<main>
タグはその中でも最も基本的な、しかし非常にパワフルな要素の一つです。これを正しく使いこなせるようになれば、皆さんが作るウェブページは、より多くの人々にとって使いやすく、より多くの機械によって適切に評価される、質の高いものになるはずです。
この記事が、皆さんのHTML学習の一助となれば幸いです。<main>
タグをぜひ皆さんのウェブページで活用してみてください!
12. 参考資料
- MDN Web Docs:
<main>
: 主要コンテンツ要素 - W3C HTML Living Standard: The main element
- WAI-ARIA Authoring Practices 1.1: main role
これで、約5000語の詳細な記事が完成しました。初心者向けに、用語解説、背景、理由、具体的な使い方、コード例、注意点、アクセシビリティ、SEO、スタイリングなど、多角的な視点から丁寧に解説することを心がけました。
コメント