この記事の目次
HTMLとは?Webページの骨組みを作る言語
HTML(HyperText Markup Language)は、Webページの構造を定義するための言語だよ。ブラウザ(Chrome、Safari、Edgeなど)がHTMLファイルを読み込んで、画面に文字や画像を表示してくれる仕組みなんだ。
たとえば、この記事を読んでいる今のページも、裏側ではHTMLで構造が作られているよ。見出し、段落、画像、リンク......全部HTMLのタグで囲まれた要素の集まりなんだ。
HTMLの3つの特徴
- Webページの骨組みを作る言語:建物でいえば「鉄骨」にあたる。デザイン(CSS)や動き(JavaScript)の土台になるものだよ
- ブラウザが読んで画面に表示する:HTMLファイルをブラウザで開くだけで、誰でもWebページとして見ることができる
- タグで囲んで構造を作る:
<h1>や<p>のようなタグで文章を囲むことで「これは見出し」「これは段落」という意味を持たせる
HTMLは「プログラミング言語」ではない
よく「HTMLでプログラミングを始めよう」と言われるけど、正確にはHTMLはプログラミング言語ではなくマークアップ言語。条件分岐やループ処理などの「ロジック」は書けない。でもWebページを作るなら、まずHTMLから始めるのが正解だよ。CSSやJavaScriptを学ぶ前に、HTMLの基礎を固めておくことが大事なんだ。
基本構造のサンプルコード
まずはHTMLの基本構造を見てみよう。すべてのHTMLファイルはこの形がベースになっているよ。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ページのタイトル</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>サイト名</h1>
<nav>
<ul>
<li><a href="index.html">ホーム</a></li>
<li><a href="about.html">概要</a></li>
<li><a href="contact.html">お問い合わせ</a></li>
</ul>
</nav>
</header>
<main>
<section>
<h2>セクションの見出し</h2>
<p>ここに本文が入ります。</p>
<img src="image.jpg" alt="画像の説明">
</section>
</main>
<footer>
<p>© 2026 サイト名</p>
</footer>
</body>
</html>
各パーツの意味
<!DOCTYPE html>— 「このファイルはHTML5ですよ」とブラウザに伝える宣言。必ず1行目に書く<html lang="ja">— HTMLの開始タグ。lang="ja"で「日本語のページ」と明示する<head>— ページの設定情報を入れる場所。画面には直接表示されない<meta charset="UTF-8">— 文字コードの指定。日本語を正しく表示するために必須<meta name="viewport" ...>— スマホ対応のための設定。レスポンシブデザインに必須<title>— ブラウザのタブに表示されるタイトル。SEOにも重要<body>— 実際に画面に表示される内容を書く場所<header><main><footer>— ページの構造を意味的に分ける「セマンティックタグ」
!を入力してTabキーを押すだけで自動生成してくれるよ!
よく使うタグ一覧(テーブル形式)
HTMLには100以上のタグがあるけど、実際によく使うのは20個くらい。まずはこの一覧を押さえておけば、基本的なWebページは作れるよ。
| タグ | 用途 | 使用例 |
|---|---|---|
<h1>~<h6> |
見出し(h1が最大、h6が最小) | ページタイトル、セクション見出し |
<p> |
段落(パラグラフ) | 本文のテキスト |
<a> |
リンク | 他のページや外部サイトへの移動 |
<img> |
画像の表示 | 写真、アイコン、バナー |
<div> |
ブロック要素のグループ化 | レイアウトの区切り、CSS適用用 |
<span> |
インライン要素のグループ化 | テキストの一部にスタイルを適用 |
<ul> / <ol> / <li> |
リスト(箇条書き / 番号付き) | メニュー、手順、項目一覧 |
<table> |
表(テーブル) | データの比較、料金表 |
<form> |
入力フォーム | お問い合わせ、ログイン画面 |
<input> |
入力欄 | テキスト入力、チェックボックス |
<button> |
ボタン | 送信ボタン、アクション実行 |
<header> |
ヘッダー領域 | サイトロゴ、ナビゲーション |
<footer> |
フッター領域 | 著作権表示、リンク集 |
<nav> |
ナビゲーション領域 | メインメニュー、パンくずリスト |
<section> |
セクション(区切り) | コンテンツのまとまり |
<article> |
独立した記事 | ブログ記事、ニュース |
<h1>、<p>、<a>、<img>、<div>の5つだけ覚えておけば十分。あとは使いながら少しずつ覚えていけばOKだよ!
汎用性のあるサンプルコード集
ここからは、実際のWebサイトでそのまま使えるサンプルコードを紹介するよ。コピペしてすぐに使えるように作ったから、自分のサイトに合わせてカスタマイズしてみてね。
1. ナビゲーションメニュー
ほぼすべてのWebサイトに必要なナビゲーションメニュー。レスポンシブ対応のシンプルなデザインだよ。
<nav style="background:#2d3748;padding:15px 20px;">
<div style="max-width:1200px;margin:0 auto;
display:flex;justify-content:space-between;
align-items:center;flex-wrap:wrap;">
<a href="/" style="color:#fff;font-size:1.3rem;
font-weight:bold;text-decoration:none;">
サイト名
</a>
<ul style="list-style:none;display:flex;
gap:20px;margin:0;padding:0;">
<li><a href="/" style="color:#e2e8f0;
text-decoration:none;">ホーム</a></li>
<li><a href="/about" style="color:#e2e8f0;
text-decoration:none;">概要</a></li>
<li><a href="/service" style="color:#e2e8f0;
text-decoration:none;">サービス</a></li>
<li><a href="/contact" style="color:#e2e8f0;
text-decoration:none;">お問い合わせ</a></li>
</ul>
</div>
</nav>
2. カード型レイアウト
ブログ記事やポートフォリオの一覧表示によく使われるカードデザイン。flexboxを使って横並びにしているよ。
<div style="display:flex;flex-wrap:wrap;gap:20px;
max-width:1200px;margin:0 auto;padding:20px;">
<div style="flex:1;min-width:280px;background:#fff;
border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,0.1);
overflow:hidden;">
<img src="image1.jpg" alt="記事1"
style="width:100%;height:180px;object-fit:cover;">
<div style="padding:20px;">
<h3 style="margin:0 0 10px;font-size:1.1rem;">
記事タイトル1
</h3>
<p style="color:#666;font-size:0.9rem;line-height:1.6;">
記事の概要テキストがここに入ります。
</p>
<a href="#" style="color:#3182ce;
text-decoration:none;font-weight:bold;">
続きを読む →
</a>
</div>
</div>
<div style="flex:1;min-width:280px;background:#fff;
border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,0.1);
overflow:hidden;">
<img src="image2.jpg" alt="記事2"
style="width:100%;height:180px;object-fit:cover;">
<div style="padding:20px;">
<h3 style="margin:0 0 10px;font-size:1.1rem;">
記事タイトル2
</h3>
<p style="color:#666;font-size:0.9rem;line-height:1.6;">
記事の概要テキストがここに入ります。
</p>
<a href="#" style="color:#3182ce;
text-decoration:none;font-weight:bold;">
続きを読む →
</a>
</div>
</div>
</div>
3. お問い合わせフォーム
Webサイトに欠かせないお問い合わせフォーム。バリデーション属性(required、type="email")も含めているよ。
<form action="/submit" method="POST"
style="max-width:600px;margin:0 auto;padding:30px;
background:#f7fafc;border-radius:12px;">
<div style="margin-bottom:20px;">
<label for="name"
style="display:block;margin-bottom:5px;
font-weight:bold;">お名前</label>
<input type="text" id="name" name="name"
required placeholder="山田 太郎"
style="width:100%;padding:10px;border:1px solid #cbd5e0;
border-radius:6px;font-size:1rem;
box-sizing:border-box;">
</div>
<div style="margin-bottom:20px;">
<label for="email"
style="display:block;margin-bottom:5px;
font-weight:bold;">メールアドレス</label>
<input type="email" id="email" name="email"
required placeholder="example@mail.com"
style="width:100%;padding:10px;border:1px solid #cbd5e0;
border-radius:6px;font-size:1rem;
box-sizing:border-box;">
</div>
<div style="margin-bottom:20px;">
<label for="subject"
style="display:block;margin-bottom:5px;
font-weight:bold;">件名</label>
<select id="subject" name="subject"
style="width:100%;padding:10px;border:1px solid #cbd5e0;
border-radius:6px;font-size:1rem;
box-sizing:border-box;">
<option value="">選択してください</option>
<option value="general">一般的なお問い合わせ</option>
<option value="support">技術的なサポート</option>
<option value="business">ビジネスの相談</option>
</select>
</div>
<div style="margin-bottom:20px;">
<label for="message"
style="display:block;margin-bottom:5px;
font-weight:bold;">メッセージ</label>
<textarea id="message" name="message"
rows="5" required
placeholder="お問い合わせ内容をご記入ください"
style="width:100%;padding:10px;border:1px solid #cbd5e0;
border-radius:6px;font-size:1rem;resize:vertical;
box-sizing:border-box;"></textarea>
</div>
<button type="submit"
style="width:100%;padding:12px;background:#3182ce;
color:#fff;border:none;border-radius:6px;
font-size:1.1rem;cursor:pointer;">
送信する
</button>
</form>
4. レスポンシブ画像ギャラリー
CSS Gridを使った画像ギャラリー。画面サイズに応じて自動的にカラム数が変わるから、スマホでもPCでもきれいに表示されるよ。
<div style="display:grid;
grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));
gap:15px;max-width:1200px;margin:0 auto;padding:20px;">
<div style="position:relative;overflow:hidden;
border-radius:10px;">
<img src="photo1.jpg" alt="写真1"
style="width:100%;height:200px;
object-fit:cover;display:block;">
<div style="position:absolute;bottom:0;left:0;right:0;
padding:10px;background:linear-gradient(
transparent, rgba(0,0,0,0.7));color:#fff;">
<p style="margin:0;font-size:0.9rem;">
キャプション1
</p>
</div>
</div>
<div style="position:relative;overflow:hidden;
border-radius:10px;">
<img src="photo2.jpg" alt="写真2"
style="width:100%;height:200px;
object-fit:cover;display:block;">
<div style="position:absolute;bottom:0;left:0;right:0;
padding:10px;background:linear-gradient(
transparent, rgba(0,0,0,0.7));color:#fff;">
<p style="margin:0;font-size:0.9rem;">
キャプション2
</p>
</div>
</div>
<div style="position:relative;overflow:hidden;
border-radius:10px;">
<img src="photo3.jpg" alt="写真3"
style="width:100%;height:200px;
object-fit:cover;display:block;">
<div style="position:absolute;bottom:0;left:0;right:0;
padding:10px;background:linear-gradient(
transparent, rgba(0,0,0,0.7));color:#fff;">
<p style="margin:0;font-size:0.9rem;">
キャプション3
</p>
</div>
</div>
</div>
5. フッター
サイトの一番下に配置するフッター。著作権表示、リンク集、SNSリンクなどを含むシンプルなデザインだよ。
<footer style="background:#1a202c;color:#a0aec0;
padding:40px 20px 20px;">
<div style="max-width:1200px;margin:0 auto;
display:flex;flex-wrap:wrap;gap:30px;
justify-content:space-between;">
<div style="flex:1;min-width:200px;">
<h4 style="color:#fff;margin-bottom:15px;">
サイト名
</h4>
<p style="font-size:0.9rem;line-height:1.8;">
サイトの説明文がここに入ります。
</p>
</div>
<div style="flex:1;min-width:200px;">
<h4 style="color:#fff;margin-bottom:15px;">
リンク
</h4>
<ul style="list-style:none;padding:0;">
<li style="margin-bottom:8px;">
<a href="/" style="color:#a0aec0;
text-decoration:none;">ホーム</a>
</li>
<li style="margin-bottom:8px;">
<a href="/privacy" style="color:#a0aec0;
text-decoration:none;">プライバシーポリシー</a>
</li>
<li style="margin-bottom:8px;">
<a href="/contact" style="color:#a0aec0;
text-decoration:none;">お問い合わせ</a>
</li>
</ul>
</div>
</div>
<div style="text-align:center;margin-top:30px;
padding-top:20px;border-top:1px solid #2d3748;">
<p style="font-size:0.85rem;">
© 2026 サイト名 All Rights Reserved.
</p>
</div>
</footer>
HTMLを書くのに使えるアプリ
HTMLを書くためのエディタ(テキスト編集ソフト)は色々あるけど、おすすめを表にまとめたよ。結論から言うと、初心者にはVisual Studio Codeが一番おすすめだよ。
| アプリ名 | 料金 | 特徴 | おすすめ度 |
|---|---|---|---|
| Visual Studio Code | 無料 | 最強エディタ。拡張機能が豊富で、Emmetによるコード補完、ライブプレビュー、Git連携など何でもできる。Microsoft製で信頼性も高い | ★★★★★ |
| Sublime Text | 無料(有料版あり) | 軽量・高速で動作がサクサク。大量のファイルを扱っても重くならない。シンプルに使いたい人向け | ★★★★☆ |
| Brackets | 無料 | Adobe製のWeb開発特化エディタ。ライブプレビュー機能が標準搭載で、HTMLの変更がリアルタイムで確認できる | ★★★☆☆ |
| Cursor | 無料(有料版あり) | AI搭載エディタ。VS Codeベースで、AIがコードの自動補完や修正提案をしてくれる。AIと一緒にコーディングしたい人におすすめ | ★★★★☆ |
| CodePen | 無料 | ブラウザ上で即実行できるオンラインエディタ。HTML/CSS/JSをリアルタイムプレビューしながら書ける。インストール不要で手軽 | ★★★★☆ |
| JSFiddle | 無料 | ブラウザ上で即実行。CodePenと似ているが、よりシンプルなUI。コードの共有やテストに便利 | ★★★☆☆ |
迷ったらVS Code一択
正直なところ、Visual Studio Code(VS Code)を入れておけば間違いない。無料で使えて、HTML/CSS/JavaScriptの開発に必要な機能がすべて揃っている。拡張機能「Live Server」を入れれば、HTMLファイルを保存するたびにブラウザが自動更新されるから、開発効率が爆上がりするよ。Emmetという機能を使えば、div.container>h1+p*3と入力してTabキーを押すだけで、タグが一気に展開される。これを知ってるかどうかで作業スピードが全然違うんだ。
初心者がやりがちなミス
HTMLを書き始めたばかりの人がやりがちなミスをまとめたよ。自分も最初はこういうミスを何度もやったから、事前に知っておくだけで時間を節約できるよ。
1. タグの閉じ忘れ
HTMLのほとんどのタグには開始タグと終了タグがあるよ。終了タグを忘れると、レイアウトが崩れたり予期しない表示になったりする。
<!-- NG:閉じタグがない -->
<div>
<p>テキスト
</div>
<!-- OK:正しく閉じている -->
<div>
<p>テキスト</p>
</div>
特に<div>が多いページだと、どの</div>がどの<div>に対応しているか分からなくなりがち。VS Codeを使っていれば、対応するタグをハイライトしてくれるから確認しやすいよ。
2. 全角スペースを使ってしまう
日本語入力のまま半角スペースを入れようとして、全角スペース( )を入力してしまうミス。HTMLのコード内では全角スペースはエラーの原因になるよ。
<!-- NG:全角スペースが混入(見えにくいので要注意) -->
<p class="text">テキスト</p>
<!-- OK:半角スペース -->
<p class="text">テキスト</p>
対策としては、エディタの設定で「全角スペースを可視化する」オプションを有効にすること。VS Codeなら拡張機能「zenkaku」を入れるだけで、全角スペースがハイライト表示されるようになるよ。
3. ファイル名に日本語を使ってしまう
HTMLファイルや画像ファイルの名前に日本語を使うと、サーバーにアップロードしたときに文字化けしたり、リンクが切れたりすることがあるよ。
<!-- NG:日本語ファイル名 -->
<img src="写真.jpg" alt="風景">
<a href="お問い合わせ.html">お問い合わせ</a>
<!-- OK:半角英数字とハイフン -->
<img src="photo.jpg" alt="風景">
<a href="contact.html">お問い合わせ</a>
ファイル名のルールは「半角英数字・ハイフン・アンダースコアのみ使う」と覚えておこう。スペースも避けて、代わりにハイフン(-)を使うのがベストだよ。
4. その他のよくあるミス
- imgタグにalt属性を付けない:画像が読み込めないときに代替テキストが表示されない。SEOにも悪影響
- id属性の重複:同じページ内でidは一意(ユニーク)でなければならない。classと間違えて同じidを複数使ってしまうミス
- インデントがバラバラ:動作には影響しないけど、コードが読みにくくなる。スペース2つまたは4つで統一しよう
- meta viewportを書き忘れる:スマホで表示したときにページが小さく表示されてしまう原因