HTMLとは|タグ・属性・基本構造をやさしく解説
この記事で学べること
- HTMLが何を担当する言語なのかを、CSS・JavaScriptと区別して説明できる
- タグと属性のルールを守って、表示崩れのないHTMLを書ける
- ページのひな形を作り、見出しやリストで中身を書いてブラウザで確認できる
HTMLとは、Webページの中身と構造を作る、Web制作で最初に学ぶ言語です。この記事では実務で使う最低限の書き方に絞り、ページのひな形を自分で書けるところまで解説します。
難しい言葉は少しずつ覚えれば大丈夫だよ!手を動かしながら読んでみてね
HTMLの全体像
各STEPで学ぶことは次のとおりです。前のSTEPが次のSTEPの土台になるため、初めての人はSTEP1から順に読んでください。
| STEP | 学ぶこと | 使うタグ・書き方 |
|---|---|---|
| STEP1 役割を知る |
HTML・CSS・JSの違いを知る | HTML・CSS・JavaScript |
| STEP2 書き方のルールを覚える |
タグを正しく書く | 開始タグ・終了タグ・入れ子・空要素 |
| 画像やリンクを入れる | src・alt・hrefなどの属性 |
|
| 記号をそのまま表示する | <などの文字参照 |
|
| コードにメモを残す | <!-- --> |
|
| STEP3 骨組みを作る |
ページのひな形を作る | <!doctype html>・<head>・<body> |
| ブラウザで表示を確かめる | index.htmlとして保存して開く | |
| STEP4 設定を加える |
スマホ表示に対応する | <meta name="viewport"> |
| 検索用の説明文を書く | <meta name="description"> |
|
| CSS・JSを読み込む | <link>・<script> |
|
| STEP5 本文を書く |
見出しを付ける | <h1>〜<h6> |
| 箇条書きを作る | <ul>・<ol>・<li> |
|
| 要素をまとめる・領域を分ける | <div>・<span>・<header>など |
すべてをまとめたひな形は、完成形のコードに載せています。
ひな形はコピーして使い回せるよ!まずは全体をざっと眺めてみてね
STEP1:HTMLの役割を知る
まずは、HTMLがどんな言語で、Webページの中で何を担当しているのかを押さえます。役割を先に知っておくと、CSSやJavaScriptとの区別がつきやすくなります。
HTMLとは
HTMLは「HyperText Markup Language」の略で、Webページの内容と構造をブラウザに伝えるための言語です。Webを構成する技術の中で、最も基本となるものです。
名前に含まれる2つの言葉は、それぞれ次の意味を持っています。
| 言葉 | 意味 | 例 |
|---|---|---|
| ハイパーテキスト | リンクで別のページとつながる仕組み | リンクをクリックして別のページへ移動する |
| マークアップ | 文章の一部をタグで囲み、意味を付けること | <p>で囲むと段落、<h1>で囲むと最上位の見出しになる |
HTML・CSS・JavaScriptの役割分担
Webページは、主に3つの技術を組み合わせて作られています。HTMLは中身の担当で、見た目はCSSに任せる設計になっています。
| 技術 | 担当 | 具体例 |
|---|---|---|
| HTML | 内容と構造 | 見出し・段落・画像など、何が書いてあるかを決める |
| CSS | 見た目・表現 | 色・フォント・レイアウトを整える |
| JavaScript | 機能・振る舞い | 動きや、クリックなどの操作に反応する処理を加える |
HTMLファイルの形式
HTMLファイルは、タグで構造を付けたプレーンテキストです。拡張子は「.html」が基本で、「.htm」が使われることもあります。
サイトのトップページには「index.html」という名前がよく使われます。サブフォルダごとにindex.htmlを置くのも一般的です。作ったファイルはWebサーバーから配信され、どのブラウザでも表示できます。
HTMLは「中身」、CSSは「見た目」と覚えておくと区別しやすいよ!
出典:MDN Web Docs「HTML: ハイパーテキストマークアップ言語」
STEP2:タグと属性の書き方を覚える
タグを正しく書く
HTMLでは、「開始タグ+内容+終了タグ」のまとまりを要素と呼びます。例えば段落なら、次のように書きます。
<p>うちの猫は不機嫌です。</p>
| 部分 | 書き方 | 役割 |
|---|---|---|
| 開始タグ | <p> |
要素の始まりを示す |
| 内容 | うちの猫は不機嫌です。 | タグで囲まれた中身 |
| 終了タグ | </p> |
要素名の前にスラッシュを付けて、要素の終わりを示す |
終了タグの書き忘れは、初心者によくあるミスです。表示崩れの原因になるので、開始タグを書いたら終了タグもセットで書きましょう。
なお、タグ名は大文字・小文字を区別しません。ただし一貫性のため、小文字で書くのが慣習です。
タグを入れ子にする
要素の中には、別の要素を入れられます。これを入れ子(ネスト)と呼びます。守るルールは「後から開いたタグを先に閉じる」ことです。
<p>うちの猫は<strong>とても</strong>不機嫌です。</p> <!-- 正しい -->
<p>うちの猫は<strong>とても不機嫌です。</p></strong> <!-- 間違い:タグが交差している -->
タグどうしを交差させると、ブラウザは意図を推測して表示します。その結果、予期しない表示になることがあります。
終了タグのない「空要素」
内容を持たず、1つのタグだけで書く要素もあります。これを空要素と呼び、改行や画像など、何かを挿入・埋め込むときに使います。
<br> <!-- 改行する -->
<br /> <!-- 上と同じ意味 -->
<br>と<br />は、どちらも正しい書き方です。末尾のスラッシュは書き方のスタイルの違いで、必須ではありません。動作は変わらないので、サイト内ではどちらかに揃えておくと読みやすくなります。
<script>は空要素に見えますが、空要素ではありません。必ず終了タグ</script>まで書きましょう。
属性で情報を追加する
属性は、開始タグの中に書く追加情報です。要素の設定や動作を調整するために使います。
属性の書き方のルール
- 要素名と属性の間に半角スペースを入れる(属性が複数ある場合も半角スペースで区切る)
- 属性名の後に「=」を書く
- 属性値を引用符で囲む
実務でよく使うのが、画像を表示するimg要素と、リンクを作るa要素です。
<img src="cat.jpg" alt="眠っている猫" width="300" height="200"> <!-- 画像を表示する -->
<a href="demo.html">リンク</a> <!-- リンクを作る -->
| 属性 | 意味 |
|---|---|
src |
画像のURL(必須) |
alt |
画像を見られない人向けの説明文 |
width / height |
画像の幅・高さ(ピクセル) |
href |
リンク先のURL |
意味を持つ画像には、必ずalt属性を付けましょう。画像を見られない人にも、内容が伝わるようになります。
属性値は必ず引用符で囲む
仕様上は、空白や特定の記号を含まない値なら引用符を省略できます。ただし、空白を含む値で省略すると、意図しない解釈になります。
<a href="demo.html" title=The Mozilla homepage>リンク</a> <!-- 「The」だけが値になる -->
この例では、「Mozilla」と「homepage」が別の属性として扱われてしまいます。ミスを防ぐため、属性値は常に引用符で囲みましょう。
引用符は、二重引用符(”)と単一引用符(’)のどちらでも使えます。ただし、1つの値の中で混ぜるとエラーになります。
| 状況 | 書き方 | 例 |
|---|---|---|
| 通常 | どちらかの引用符に統一する | class="note" |
| 値に一方の引用符を含めたい | もう一方の引用符で囲む | title="It's fun" |
| 値に同じ種類の引用符を含めたい | 文字参照を使う | title=""注目"" |
記号をそのまま表示する
「<」「>」などの記号は、HTMLの構文に使われる特殊文字です。文字として表示したいときは、文字参照という書き方に置き換えます。
| 表示したい文字 | 書き方 |
|---|---|
| < | < |
| > | > |
| “ | " |
| ‘ | ' |
| & | & |
例えば、文章の中で「<p>」という文字を見せたい場合は次のように書きます。
<p>HTML では、<p> 要素で段落を定義します。</p>
文字参照は、最後のセミコロンまで書く必要があります。省略すると、誤解釈やエラーの原因になります。なお文字コードがUTF-8なら、ほかの記号はそのまま書いて問題ありません。
コードにメモを残す
<!--と-->で囲んだ部分はコメントと呼ばれ、ブラウザに無視されてページに表示されません。コードの説明メモや、一時的に表示させたくない部分の無効化に使います。
<p>コメントの外にいます。</p>
<!-- <p>コメントの中にいます。</p> -->
この例では、1行目の段落だけが表示されます。2行目はコメントなので、ページには表示されません。
入れ子は「後から開いたら先に閉じる」、属性値は「必ず引用符」の2つを意識しようね!
STEP3:HTML文書の骨組みを作る
タグの書き方がわかったら、1ページ分のHTMLを組み立てます。骨組みを書いて、ブラウザで表示するところまで進めましょう。
ページのひな形を作る
最小限の完全なWebページは、次のように書きます。
<!doctype html> <!-- ① -->
<html lang="ja"> <!-- ② -->
<head> <!-- ③ -->
<meta charset="utf-8" /> <!-- ④ -->
<title>テストページ</title> <!-- ⑤ -->
</head>
<body> <!-- ⑥ -->
<p>これは私のページです。</p>
</body>
</html>
| コード解説 | |
|---|---|
| ① | 文書型宣言。現在は歴史的な名残だが、標準準拠モードで表示させるため、すべてのページの先頭に書く |
| ② | ページ全体を囲むルート要素 |
| ③ | ページに関する情報を入れる部分。ここに書いた内容はページ上に表示されない |
| ④ | 文字コードの指定。ほとんどの言語の文字に対応し、文字化けを防げる |
| ⑤ | ブラウザのタブやブックマークに表示されるページタイトル |
| ⑥ | テキスト・画像・動画など、ページに表示するすべての内容を入れる部分 |
headとbodyの違い
bodyには、テキストや画像など、ブラウザに表示する内容を入れます。一方のheadには、表示されないメタデータ※1を入れます。
headには、タイトルや文字コード、CSSへのリンク、ページの説明文などを書きます。ブラウザはこの情報を使って、ページを正しく表示します。
※1:メタデータ…ページそのものについての情報。ページの本文とは別に扱われます。
titleとh1の違い
どちらも「タイトル」と呼ばれることがあり、混同されやすい要素です。役割はまったく違うので、次の表で区別しておきましょう。
| 要素 | 書く場所 | 表示される場所 | 役割 |
|---|---|---|---|
<title> |
head | タブ・ブックマーク・検索結果(本文には表示されない) | HTML文書全体のタイトル |
<h1> |
body | ページの本文 | 最上位の見出し。一般的に1ページに1回、記事タイトルなどに使う |
ファイルを保存してブラウザで表示する
ひな形を書いたら、ファイルとして保存してブラウザで開きます。手順は次のとおりです。
- 作業用のフォルダーを作る(例:first-website)
- コードエディターで新しいファイルを作り、ひな形を書く
- ファイル名を「index.html」にして、作ったフォルダーに保存する
- 保存したファイルをブラウザで開く
コードを書き換えたら、ファイルを保存してからブラウザを再読み込み(更新)します。保存しないと、変更は表示に反映されません。
画像などが表示されないときは、引用符の抜けがないか確認しましょう。ファイル名やパスの書き間違いも、よくある原因です。
「書く→保存→再読み込み」をくり返すと、変化が目で見えて楽しいよ!
出典:MDN「基本的な HTML の構文」「ヘッド部には何が入る? ウェブページのメタデータ」「HTML: コンテンツの作成」(ページ一覧)
STEP4:実務で必要な基本設定を追加する
骨組みができたら、実務で必要になる設定を加えます。ページの言語、スマホ表示、検索結果の説明文、外部ファイルの読み込みの4つです。
ページの言語を指定する
html要素の開始タグにlang属性を書くと、ページの言語を指定できます。日本語のページなら「ja」と書きます。
<html lang="ja">
言語を指定すると、検索エンジンがページの言語を正しく判定できます。読み上げソフトも、正しい発音で読めるようになります。
ページの一部だけ別の言語にしたい場合は、その部分にlang属性を付けます。
<p>日本語の文章の中の<span lang="en">English</span></p>
スマホ表示に対応させる
スマホで見やすく表示させるには、headに次の1行を書きます。表示領域を端末の幅に合わせ、100%の倍率で表示させる設定です。
<meta name="viewport" content="width=device-width, initial-scale=1" />
画面幅に合わせてレイアウトを変える、レスポンシブデザインもこの設定が前提になります。
user-scalable=noなどで、拡大を禁止するのは避けましょう。弱視のユーザーが文字を読めなくなり、アクセシビリティの基準(WCAG)の上でも問題になります。
検索結果用の説明文を書く
meta descriptionは、ページの内容を説明する文章です。検索結果に表示されることがあり、SEOにも関係します。
<meta name="description" content="ページの説明" />
同じmeta要素のkeywordsは、現在は使われていません。スパムに悪用されたため、検索エンジンから無視されています。
CSSとJavaScriptを読み込む
外部のCSSファイルとJavaScriptファイルは、headの中で読み込みます。
<link rel="stylesheet" href="style.css" /> <!-- CSSを読み込む -->
<script src="script.js" defer></script> <!-- JavaScriptを読み込む -->
scriptに付けたdeferは、HTMLの読み込みが終わってからJavaScriptを実行させる指定です。まだ存在しない要素を操作してエラーになるのを防げるので、基本はdeferを付けて読み込みます。
CSSには、外部ファイルを読み込む以外の書き方もあります。場面に応じて、次のように使い分けます。
| 書き方 | 向いている場面 |
|---|---|
| 外部CSSファイル(link要素) | 複数ページで共通のスタイルを使う場合。基本はこの方法 |
| style要素 | そのページだけのスタイルを書く場合 |
| style属性 | 試作や特殊なケース。本番環境では推奨されない |
文字コードとviewportは、どのページにも必ず入れておきたい設定だよ!
出典:MDN「ヘッド部には何が入る? ウェブページのメタデータ」「<meta name=”viewport”>」(ページ一覧)
STEP5:本文でよく使うタグで中身を書く
最後に、ひな形のbodyに実際の内容を書いていきます。ほとんどのページで使う、見出し・リスト・まとめ用の要素を紹介します。
見出しで文章を組み立てる
見出しはh1〜h6の6段階あり、数字が小さいほど上位の見出しです。本の「タイトル→章→節」のように、見出しと段落(p)を組み合わせて文章を組み立てます。
<h1>ブログのタイトル</h1> <!-- ① -->
<p>導入の文章</p>
<h2>章の見出し</h2> <!-- ② -->
<p>本文</p>
<h3>節の見出し</h3> <!-- ③ -->
<p>本文</p>
| コード解説 | |
|---|---|
| ① | ページの最上位の見出し。1ページに1つが望ましい |
| ② | 章にあたる見出し |
| ③ | 章の中の節にあたる見出し |
見出しを使うときの注意点
- h1は1ページに1つにする
- 見出しのレベルは階層の順番どおりに使う(同じ階層の小見出しに、h2とh3を混ぜない)
- 1ページで使うレベルは、3つまでを目安にする
文字を大きくしたいという理由で、見出しのレベルを選ぶのはやめましょう。見た目の調整はCSSの役割です。
見出しは、検索エンジンがページの重要なキーワードとして扱います。スクリーンリーダーの利用者も、見出しをたどって必要な情報を探します。
箇条書きを作る
項目を並べた箇条書きは、リストと呼ばれます。リスト全体をulまたはolで囲み、1項目ずつliで囲みます。順番に意味があるかどうかで使い分けます。
| 要素 | 使う場面 | 例 |
|---|---|---|
<ul>(順序なしリスト) |
項目の順番が関係ないとき | 買い物リスト |
<ol>(順序付きリスト) |
項目の順番に意味があるとき | 道順、料理のレシピ |
<ul> <!-- ① -->
<li>牛乳</li> <!-- ② -->
<li>卵</li>
</ul>
<ol> <!-- ③ -->
<li>フォルダーを作る</li>
<li>ファイルを保存する</li>
</ol>
| コード解説 | |
|---|---|
| ① | 番号なしのリスト全体を囲む |
| ② | リストの1項目。項目の数だけ書く |
| ③ | 番号付きのリスト全体を囲む |
リストを入れ子にする
項目の中に、さらに細かい項目を入れることもできます。親の項目のliの中に、別のulやolを書きます。
<ol>
<li>材料を混ぜ合わせる
<ul> <!-- ① -->
<li>粗めにしたいときは短時間</li>
<li>滑らかにしたいときは長め</li>
</ul>
</li> <!-- ② -->
</ol>
| コード解説 | |
|---|---|
| ① | 親の項目(li)の中に、子のリストを書く |
| ② | 子のリストを書き終えてから、親の項目を閉じる |
要素をまとめる
divとspanは、それ自体に意味を持たない「まとめ役」の要素です。複数の要素をまとめて、CSSやJavaScriptで扱いたいときに使います。
| 要素 | 種類 | 使う場面 |
|---|---|---|
<div> |
ブロック(まとまり単位) | 見出しや段落をまとめて、1つのパーツにする |
<span> |
インライン(文中の一部) | 文章の一部だけを囲む |
<div class="shopping-cart"> <!-- ① -->
<h2>ショッピングカート</h2>
<p>合計:3,000円</p>
</div>
<p>本文の中の<span class="note">補足</span>です。</p> <!-- ② -->
| コード解説 | |
|---|---|
| ① | 見出しと段落をまとめて、1つのパーツにする |
| ② | 文章の一部だけを囲む |
divやspanには、class属性でラベルを付けて使うのがおすすめです。CSSやJavaScriptから指定しやすくなります。
divは便利ですが、使いすぎには注意しましょう。意味を持たない要素なので、多用するとコードが読みにくくなり、修正もしにくくなります。
ページの領域を分ける
ページの領域を表す専用の要素がある場合は、divよりもそちらを優先します。
| 要素 | 表す領域 |
|---|---|
<header> |
ページや記事の導入部分(ヘッダー) |
<nav> |
主要なナビゲーション(メニュー) |
<main> |
そのページ固有のメインコンテンツ。1ページに1回、bodyの直下に置く |
<article> |
それだけで意味が伝わる内容のまとまり(ブログ記事など) |
<section> |
ページ内の1つの区切り。見出しで始めるのが基本 |
<aside> |
本文に間接的に関わる補足情報(関連リンクなど) |
<footer> |
ページの終わりの部分(著作権表示など) |
見出しは「文字の大きさ」じゃなくて「階層」で選ぶのがコツだよ!
出典:MDN「見出しと段落」「リスト」「文書とウェブサイトの構造」(ページ一覧)
完成形のコード:実務で使えるHTMLのひな形
STEP3の骨組みにSTEP4の設定とSTEP5の本文を加えると、次のひな形になります。新しいページを作るときは、このコードをコピーして使ってください。
表示をすぐに確かめたいときは、ブラウザ上でコードを試せるCodePenを使うと便利です。index.htmlの中身を、このコードに丸ごと貼り替えるだけで表示されます。
<!doctype html> <!-- ① -->
<html lang="ja"> <!-- ② -->
<head>
<meta charset="utf-8" /> <!-- ③ -->
<meta name="viewport" content="width=device-width, initial-scale=1" /> <!-- ④ -->
<meta name="description" content="ページの説明" /> <!-- ⑤ -->
<title>ページのタイトル</title> <!-- ⑥ -->
<link rel="stylesheet" href="style.css" /> <!-- ⑦ -->
<script src="script.js" defer></script> <!-- ⑧ -->
</head>
<body>
<h1>ページの見出し</h1> <!-- ⑨ -->
<p>本文</p>
<h2>章の見出し</h2> <!-- ⑩ -->
<ul> <!-- ⑪ -->
<li>項目</li>
</ul>
</body>
</html>
| コード解説 | |
|---|---|
| ① | ページを標準準拠モードで表示させるための文書型宣言(STEP3) |
| ② | ページ全体を囲み、ページの言語を日本語に指定する(STEP4) |
| ③ | 文字化けを防ぐための文字コードの指定(STEP3) |
| ④ | スマホで画面幅に合わせて表示させる(STEP4) |
| ⑤ | 検索結果に表示されることがあるページの説明文(STEP4) |
| ⑥ | タブやブックマークに表示されるページタイトル(STEP3) |
| ⑦ | 外部のCSSファイルを読み込む(STEP4) |
| ⑧ | HTMLの読み込み後にJavaScriptを実行する(STEP4) |
| ⑨ | ページ本文の最上位の見出し(STEP5) |
| ⑩ | 章にあたる見出し(STEP5) |
| ⑪ | 順番が関係ない項目を並べるリスト(STEP5) |
さいごに
まとめ
HTMLは、Webページの中身と構造を作る言語です。まずは次の3つを押さえれば、実務の基本的な場面に対応できます。
HTMLを書くときの基本
- タグは正しく入れ子にし、属性値は引用符で囲む
- ページはひな形から作り、headに文字コード・viewport・タイトルを入れる
- 本文は見出しの階層を守り、リストは順番の有無で使い分ける
新しいページを作るときは、完成形のひな形をコピーして書き始めてください。慣れてきたら、ほかのサイトのHTMLを開いて書き方を比べてみましょう。
よくある質問
「HTML5」と今のHTMLは違うもの?
現在のHTMLの仕様は、WHATWGが継続的に更新する「HTML Living Standard」で、バージョン番号はありません。
「HTML5」は、今ではモダンなWeb技術全般を指す言葉として使われています。書き方を調べるときは「HTML5」にこだわらず、現在のHTMLとして確認すれば大丈夫です。
<br>と<br />はどちらが正しい?
どちらも正しい書き方です。末尾のスラッシュは書き方のスタイルの違いで、必須ではありません。
画像のalt属性は省略してもいい?
意味を持つ画像には、必ず付けるべき属性です。画像を見られない人に、画像の内容を伝える役割があります。
divとsectionはどう使い分ける?
見出しを伴うページ内の区切りならsectionを使います。意味を持たせず、CSSやJavaScriptのためにまとめたいだけならdivを使います。
迷ったときは、まず意味を表す要素が使えないかを考え、当てはまるものがない場合にdivを選びましょう。
ほかのサイトのHTMLを見るには?
ページ上で右クリックし、「ページのソースを表示」を選ぶとHTMLを見られます。ブラウザの開発者ツールでも、headの中身などを確認できます。
参考にした公式情報
Mozilla公式 開発者向けドキュメント(MDN Web Docs)
HTMLの役割、タグと属性の書き方、ページのひな形とheadに書く設定を確認できます。

