10日で覚えるHTMLDay 10: 総合プロジェクト

Day 10: 総合プロジェクト

今日学ぶこと

  • これまでの知識を総動員してポートフォリオサイトを構築
  • 複数ページの構成と管理
  • 実践的なHTMLの書き方

プロジェクト概要

10日間で学んだHTML知識を活かして、個人ポートフォリオサイトを作成します。

サイト構成

flowchart TB
    subgraph Site["ポートフォリオサイト"]
        Home["index.html<br>トップページ"]
        About["about.html<br>自己紹介"]
        Works["works.html<br>作品集"]
        Contact["contact.html<br>お問い合わせ"]
    end
    Home --> About
    Home --> Works
    Home --> Contact
    About --> Home
    Works --> Home
    Contact --> Home
    style Home fill:#3b82f6,color:#fff
    style About fill:#8b5cf6,color:#fff
    style Works fill:#22c55e,color:#fff
    style Contact fill:#f59e0b,color:#fff

ディレクトリ構造

portfolio/
├── index.html          # トップページ
├── about.html          # 自己紹介
├── works.html          # 作品集
├── contact.html        # お問い合わせ
└── images/             # 画像フォルダ
    ├── profile.jpg
    ├── work1.jpg
    ├── work2.jpg
    └── work3.jpg

ページ1: トップページ(index.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>田中太郎 | Webデベロッパー</title>
    <meta name="description" content="田中太郎のポートフォリオサイト。Web開発の実績と技術スキルを紹介しています。">
    <meta property="og:title" content="田中太郎 | Webデベロッパー">
    <meta property="og:description" content="Web開発の実績と技術スキルを紹介">
    <meta property="og:type" content="website">
</head>
<body>
    <header>
        <nav aria-label="メインナビゲーション">
            <ul>
                <li><a href="index.html">ホーム</a></li>
                <li><a href="about.html">自己紹介</a></li>
                <li><a href="works.html">作品集</a></li>
                <li><a href="contact.html">お問い合わせ</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <section id="hero">
            <h1>田中太郎</h1>
            <p>Web Developer &amp; Designer</p>
            <p>ユーザーに寄り添ったWeb体験を作ります。</p>
            <a href="works.html">作品を見る →</a>
        </section>

        <section id="skills">
            <h2>スキル</h2>
            <table>
                <thead>
                    <tr>
                        <th scope="col">技術</th>
                        <th scope="col">レベル</th>
                        <th scope="col">経験年数</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>HTML / CSS</td>
                        <td>上級</td>
                        <td>3年</td>
                    </tr>
                    <tr>
                        <td>JavaScript</td>
                        <td>中級</td>
                        <td>2年</td>
                    </tr>
                    <tr>
                        <td>React</td>
                        <td>初級</td>
                        <td>1年</td>
                    </tr>
                </tbody>
            </table>
        </section>

        <section id="recent-works">
            <h2>最近の作品</h2>
            <article>
                <h3>企業サイトリニューアル</h3>
                <p>セマンティックHTMLとレスポンシブデザインを活用した企業サイト。</p>
                <a href="works.html#work1">詳細を見る</a>
            </article>
            <article>
                <h3>ブログプラットフォーム</h3>
                <p>アクセシビリティに配慮したブログサイト。</p>
                <a href="works.html#work2">詳細を見る</a>
            </article>
        </section>
    </main>

    <footer>
        <p>&copy; 2026 田中太郎. All rights reserved.</p>
        <nav aria-label="フッターナビゲーション">
            <a href="about.html">自己紹介</a> |
            <a href="contact.html">お問い合わせ</a>
        </nav>
    </footer>
</body>
</html>

ページ2: 自己紹介(about.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>自己紹介 | 田中太郎</title>
    <meta name="description" content="田中太郎のプロフィール。経歴、スキル、資格について紹介しています。">
</head>
<body>
    <header>
        <nav aria-label="メインナビゲーション">
            <ul>
                <li><a href="index.html">ホーム</a></li>
                <li><a href="about.html">自己紹介</a></li>
                <li><a href="works.html">作品集</a></li>
                <li><a href="contact.html">お問い合わせ</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <h1>自己紹介</h1>

        <section>
            <h2>プロフィール</h2>
            <figure>
                <img src="images/profile.jpg" alt="田中太郎のプロフィール写真"
                     width="200" height="200" loading="lazy">
                <figcaption>田中太郎</figcaption>
            </figure>
            <p>東京在住のWebデベロッパーです。<strong>ユーザー体験</strong>を重視した
            Web開発を行っています。</p>
        </section>

        <section>
            <h2>経歴</h2>
            <dl>
                <dt><time datetime="2023-04">2023年4月</time></dt>
                <dd>Web開発の学習を開始</dd>

                <dt><time datetime="2024-01">2024年1月</time></dt>
                <dd>フリーランスとして活動開始</dd>

                <dt><time datetime="2025-06">2025年6月</time></dt>
                <dd>Web制作会社に入社</dd>
            </dl>
        </section>

        <section>
            <h2>資格・認定</h2>
            <ul>
                <li>HTML5プロフェッショナル認定 Level.1</li>
                <li>基本情報技術者試験</li>
            </ul>
        </section>

        <section>
            <h2>趣味</h2>
            <p>プログラミング以外では、<em>読書</em><em>写真撮影</em>を楽しんでいます。</p>
        </section>

        <details>
            <summary>使用ツール一覧</summary>
            <ul>
                <li>エディタ: Visual Studio Code</li>
                <li>デザイン: Figma</li>
                <li>バージョン管理: Git / GitHub</li>
                <li>ブラウザ: Google Chrome</li>
            </ul>
        </details>
    </main>

    <footer>
        <p>&copy; 2026 田中太郎. All rights reserved.</p>
    </footer>
</body>
</html>

ページ3: 作品集(works.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>作品集 | 田中太郎</title>
    <meta name="description" content="田中太郎のWeb開発実績。企業サイト、Webアプリケーション等の制作事例を紹介。">
</head>
<body>
    <header>
        <nav aria-label="メインナビゲーション">
            <ul>
                <li><a href="index.html">ホーム</a></li>
                <li><a href="about.html">自己紹介</a></li>
                <li><a href="works.html">作品集</a></li>
                <li><a href="contact.html">お問い合わせ</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <h1>作品集</h1>
        <p>これまでに制作したWebサイトやアプリケーションの一部を紹介します。</p>

        <section>
            <article id="work1">
                <h2>企業サイトリニューアル</h2>
                <figure>
                    <img src="images/work1.jpg" alt="企業サイトのスクリーンショット"
                         width="600" height="400" loading="lazy">
                    <figcaption>株式会社サンプルのコーポレートサイト</figcaption>
                </figure>
                <h3>概要</h3>
                <p>既存の企業サイトをHTML5 + CSS3でフルリニューアル。
                セマンティックHTMLを活用し、アクセシビリティを大幅に改善しました。</p>
                <h3>使用技術</h3>
                <ul>
                    <li>HTML5</li>
                    <li>CSS3(Flexbox / Grid)</li>
                    <li>レスポンシブデザイン</li>
                </ul>
                <h3>成果</h3>
                <table>
                    <tr>
                        <th scope="row">Lighthouse スコア</th>
                        <td>95点以上(全カテゴリ)</td>
                    </tr>
                    <tr>
                        <th scope="row">ページ読み込み速度</th>
                        <td>2.1秒 → 0.8秒</td>
                    </tr>
                </table>
            </article>

            <hr>

            <article id="work2">
                <h2>ブログプラットフォーム</h2>
                <figure>
                    <img src="images/work2.jpg" alt="ブログサイトのスクリーンショット"
                         width="600" height="400" loading="lazy">
                    <figcaption>個人ブログサイト</figcaption>
                </figure>
                <h3>概要</h3>
                <p>アクセシビリティに配慮したブログサイト。
                WCAG 2.1 AA準拠を目指して制作しました。</p>
                <h3>使用技術</h3>
                <ul>
                    <li>HTML5</li>
                    <li>CSS3</li>
                    <li>JavaScript</li>
                </ul>
            </article>

            <hr>

            <article id="work3">
                <h2>レシピ共有サイト</h2>
                <figure>
                    <img src="images/work3.jpg" alt="レシピサイトのスクリーンショット"
                         width="600" height="400" loading="lazy">
                    <figcaption>料理レシピ共有サイト</figcaption>
                </figure>
                <h3>概要</h3>
                <p>構造化データ(JSON-LD)を活用したレシピ共有サイト。
                Google検索でリッチスニペットが表示されます。</p>
                <h3>使用技術</h3>
                <ul>
                    <li>HTML5</li>
                    <li>CSS3</li>
                    <li>構造化データ(Schema.org)</li>
                </ul>
            </article>
        </section>
    </main>

    <footer>
        <p>&copy; 2026 田中太郎. All rights reserved.</p>
    </footer>
</body>
</html>

ページ4: お問い合わせ(contact.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>お問い合わせ | 田中太郎</title>
    <meta name="description" content="田中太郎へのお問い合わせフォーム。お仕事のご相談やご質問はこちらから。">
</head>
<body>
    <header>
        <nav aria-label="メインナビゲーション">
            <ul>
                <li><a href="index.html">ホーム</a></li>
                <li><a href="about.html">自己紹介</a></li>
                <li><a href="works.html">作品集</a></li>
                <li><a href="contact.html">お問い合わせ</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <h1>お問い合わせ</h1>
        <p>お仕事のご相談やご質問がございましたら、以下のフォームからお気軽にどうぞ。</p>

        <form action="/contact" method="post">
            <fieldset>
                <legend>お客様情報</legend>
                <p>
                    <label for="c-name">お名前 <strong>*</strong></label><br>
                    <input type="text" id="c-name" name="name"
                           required autocomplete="name">
                </p>
                <p>
                    <label for="c-email">メールアドレス <strong>*</strong></label><br>
                    <input type="email" id="c-email" name="email"
                           required autocomplete="email">
                </p>
                <p>
                    <label for="c-company">会社名</label><br>
                    <input type="text" id="c-company" name="company"
                           autocomplete="organization">
                </p>
            </fieldset>

            <fieldset>
                <legend>お問い合わせ内容</legend>
                <p>
                    <label for="c-type">種別 <strong>*</strong></label><br>
                    <select id="c-type" name="type" required>
                        <option value="">選択してください</option>
                        <option value="work">お仕事のご相談</option>
                        <option value="question">技術的なご質問</option>
                        <option value="feedback">フィードバック</option>
                        <option value="other">その他</option>
                    </select>
                </p>
                <p>
                    <label for="c-budget">ご予算</label><br>
                    <input type="text" id="c-budget" name="budget"
                           list="budget-options">
                    <datalist id="budget-options">
                        <option value="〜10万円">
                        <option value="10〜30万円">
                        <option value="30〜50万円">
                        <option value="50〜100万円">
                        <option value="100万円〜">
                    </datalist>
                </p>
                <p>
                    <label for="c-deadline">希望納期</label><br>
                    <input type="date" id="c-deadline" name="deadline"
                           min="2026-02-01">
                </p>
                <p>
                    <label for="c-message">メッセージ <strong>*</strong></label><br>
                    <textarea id="c-message" name="message"
                              rows="8" cols="60"
                              required minlength="10" maxlength="2000"
                              placeholder="お問い合わせ内容を入力してください(10〜2000文字)"></textarea>
                </p>
            </fieldset>

            <p>
                <label>
                    <input type="checkbox" name="agree" required>
                    <a href="/privacy">プライバシーポリシー</a>に同意する
                </label>
            </p>

            <p>
                <button type="submit">送信する</button>
                <button type="reset">リセット</button>
            </p>
        </form>

        <hr>

        <section>
            <h2>その他の連絡方法</h2>
            <ul>
                <li>メール: <a href="mailto:tanaka@example.com">tanaka@example.com</a></li>
                <li>GitHub: <a href="https://github.com/tanaka" target="_blank" rel="noopener noreferrer">@tanaka</a></li>
            </ul>
        </section>
    </main>

    <footer>
        <p>&copy; 2026 田中太郎. All rights reserved.</p>
    </footer>
</body>
</html>

振り返り: 10日間で学んだこと

flowchart TB
    subgraph Journey["10日間の学習の旅"]
        D1["Day 1<br>HTML入門"]
        D2["Day 2<br>テキスト"]
        D3["Day 3<br>リンク"]
        D4["Day 4<br>メディア"]
        D5["Day 5<br>リスト・テーブル"]
        D6["Day 6<br>フォーム基礎"]
        D7["Day 7<br>フォーム応用"]
        D8["Day 8<br>セマンティクス"]
        D9["Day 9<br>ベストプラクティス"]
        D10["Day 10<br>総合プロジェクト"]
    end
    D1 --> D2 --> D3 --> D4 --> D5
    D5 --> D6 --> D7 --> D8 --> D9 --> D10
    style D1 fill:#3b82f6,color:#fff
    style D2 fill:#3b82f6,color:#fff
    style D3 fill:#8b5cf6,color:#fff
    style D4 fill:#8b5cf6,color:#fff
    style D5 fill:#22c55e,color:#fff
    style D6 fill:#22c55e,color:#fff
    style D7 fill:#f59e0b,color:#fff
    style D8 fill:#f59e0b,color:#fff
    style D9 fill:#ef4444,color:#fff
    style D10 fill:#ef4444,color:#fff
Day トピック 主要な要素
1 HTML入門 <!DOCTYPE>, <html>, <head>, <body>
2 テキスト <h1><h6>, <p>, <strong>, <em>
3 リンク <a>, href, 絶対/相対パス
4 メディア <img>, <video>, <audio>, <picture>
5 リスト・テーブル <ul>, <ol>, <dl>, <table>
6 フォーム基礎 <form>, <input>, <label>, <select>
7 フォーム応用 バリデーション, <datalist>, <progress>
8 セマンティクス <header>, <main>, <article>, <nav>
9 ベストプラクティス SEO, OGP, パフォーマンス最適化
10 総合プロジェクト ポートフォリオサイト制作

次のステップ

HTMLの基礎を習得した今、次に学ぶべきことは:

1. CSS(見た目のデザイン)

HTMLで作った構造にデザインを適用します。

<link rel="stylesheet" href="styles.css">

2. JavaScript(動的な機能)

ページにインタラクティブな機能を追加します。

<script src="app.js" defer></script>

3. レスポンシブデザイン

すべてのデバイスで美しく表示されるサイトを作ります。

4. Webアクセシビリティ

すべての人がアクセスできるサイトを目指します。


まとめ

重要ポイント

  1. HTMLは構造と意味を定義する言語
  2. セマンティック要素を使いこなすことが上達への鍵
  3. アクセシビリティを常に意識する
  4. バリッドなHTMLを書く習慣を身につける
  5. HTMLはWeb技術の基盤——CSS・JavaScriptと組み合わせて力を発揮する

練習問題

問題1: 基本

この章のポートフォリオサイトを参考に、自分自身のポートフォリオサイトを作成してください。

問題2: 応用

ポートフォリオサイトに以下を追加してください:

  • ブログページ(3つ以上の<article>
  • FAQページ(<details>を使用)
  • サイトマップページ

チャレンジ問題

W3C Validatorでエラーゼロのポートフォリオサイトを完成させてください。以下のチェックリストをすべてクリアしましょう:

  • 全ページに適切な<title><meta description>
  • OGPタグ設定済み
  • すべての画像にalt属性
  • セマンティック要素の適切な使用
  • フォームに<label>付き
  • target="_blank"rel="noopener noreferrer"

参考リンク


おめでとうございます! 10日間のHTML学習を完了しました。ここで学んだことは、Webデベロッパーとしてのキャリアの確かな基盤になります。次はCSSを学んで、あなたのWebページに美しいデザインを加えましょう!