メインコンテンツへスキップ
レッスン一覧に戻る

atom.web-builder.layout-and-navigation

共通ヘッダー・フッター・ナビゲーションを作る

共通ヘッダー・フッター・ナビゲーションを作る レストランのメニュー表を想像してみてください。表紙にはお店のロゴ、裏表紙には住所と電話番号があって、中身のページだけが次々と変わりますよね。Webサイトもまったく同じ仕...

navigation-menunavigation-menuページ間を移動できるメニューを作れます。shared-layoutshared-layout全ページに共通のヘッダー/フッターを作って整理できます。
想定時間未設定公開状態: draft
学習メモ

成果物成果物このレッスンが終わったとき、あなたの手元に残る具体的な成果物です(例: 公開済みの Web ページ、動作するフォームなど)。

種類: code_snippet検証: basic_manual_check_v1

証跡証跡成果物が正しく作れたことを確認するためのチェックリストです(例: ブラウザで動作する、フォーム送信で値が保存される)。

screenshotcode_diff

メディアメディアレッスン内に出てくる図や動画のスロットです。実際の画面やイメージで理解を補助します。

diagramscreen_capture

レッスン本文

共通ヘッダー・フッター・ナビゲーションを作る

レストランのメニュー表を想像してみてください。表紙にはお店のロゴ、裏表紙には住所と電話番号があって、中身のページだけが次々と変わりますよね。Webサイトもまったく同じ仕組みです。すべてのページで共通する「枠組み」をまとめる仕組みをレイアウトと呼びます。

この Atom では、あなたのサイトの全ページに表示される ヘッダー(ページ上部の帯)、フッター(ページ下部の帯)、ナビゲーション(ページを切り替えるリンク集)を AI と一緒に作ります。完了すると「どのページを開いても同じヘッダーとフッターが出る」状態になります。

レイアウトの仕組み


前提を確認する

この Atom に取り組む前に、次の2つが揃っていることを確認してください。

  • Next.js のプロジェクト(=Webサイトの作業フォルダ一式)が手元にある
  • ターミナル(=コンピュータに命令を入力する画面)で npm run dev と打ち、ブラウザに画面が表示できる

まだの場合は、先に「Next.jsプロジェクトを作る」の Atom を終えてから戻ってきてください。


フォルダの構造を理解する

Next.js では app というフォルダの中にページを置きます。その中にある layout.tsx という特別なファイルが、全ページ共通の枠組みを担当します。

app/
  layout.tsx   ← ここにヘッダーとフッターを書く(額縁)
  page.tsx     ← トップページの中身(絵)
  about/
    page.tsx   ← 「概要」ページの中身(別の絵)

たとえ話: layout.tsx は「額縁」、各 page.tsx は「額縁に入れる絵」です。ページを切り替えても額縁はそのまま、絵だけが入れ替わります。


AI にヘッダーとフッターを書いてもらう

ここが一番のメインステップです。AI ツールを使ってレイアウトのコードを生成します。お使いのツールに合わせて、以下のいずれかの方法で進めてください。

方法 A:Claude Code / Codex CLI を使う場合

プロジェクトのフォルダでターミナルを開き、claude または codex と入力して AI を起動します。そこに次のプロンプト(=AI へのお願い文)を貼り付けてください。

良いプロンプトの例:

app/layout.tsx を次のように書き直してください。
- ヘッダー:左側にサイト名「My Site」、右側に「ホーム」「概要」「お問い合わせ」のナビゲーションリンクを横並びで配置
- フッター:中央に「© 2025 My Site」と著作権表示
- ヘッダーは白背景に薄いグレーの下線、フッターは薄いグレー背景
- リンクにマウスを乗せると青色に変わるようにする
- Next.js の Link コンポーネントを使うこと

ポイント: 「どこに」「何を」「どんな見た目で」を具体的に書くと、AI は的確なコードを返してくれます。

方法 B:Cursor を使う場合

Cursor で app/layout.tsx ファイルを開き、Ctrl+K(Mac は Cmd+K)を押すとインライン編集のプロンプトが出ます。上記と同じお願い文を入力してください。

方法 C:ChatGPT を使う場合

ChatGPT に上記のプロンプトを送り、返ってきたコードを app/layout.tsx にコピー&ペーストしてください。ファイル全体を丸ごと置き換えて保存します。


悪いプロンプトの例:

レイアウトを作って

→ 何をどう作ればよいか AI に伝わらず、意図と違うコードが返ってきてしまいます。


ブラウザで結果を確認する

AI がコードを書き換えたら、ターミナルで npm run dev が動いていることを確認し、ブラウザをリロード(再読み込み)します。

確認するポイント:

  • ヘッダーがページ上部に表示されているか
  • フッターがページ下部に表示されているか
  • ナビゲーションのリンクが横並びになっているか

ブラウザ確認画面


ナビゲーションのリンクを確認する

ヘッダーに並んだリンクを1つずつクリックして、動きを確認しましょう。

良い例

  • 「ホーム」を押すとトップページに戻る
  • 「概要」を押すと 404 エラー(=「ページが見つかりません」という表示)が出る → まだページを作っていないのでこれが正常です

悪い例

  • リンクを押しても URL(画面上部のアドレス)がまったく変わらない
  • リンクを押した瞬間に画面が真っ白になる

見た目を整える(任意)

AI が生成したコードの見た目がすでに整っていればスキップして大丈夫です。もし文字が小さすぎたり、リンクが縦に並んでしまっている場合は、AI に追加で修正をお願いしましょう。

修正プロンプトの例:

ヘッダーのナビゲーションリンクを横並びにして、文字のサイズを少し大きくしてください。
フッターを常に画面の一番下に固定してください。

動作を検証する

最後に、以下の3つをブラウザでチェックしてください。すべて OK なら、この Atom は完了です。

確認項目期待される結果
トップページを開くヘッダーとフッターが表示される
URL を変えて別のパスに移動するヘッダーとフッターがそのまま残っている
ブラウザの幅を狭める(スマホ幅)文字がはみ出さず読める

つまずきポイント

リンクを押してもページが切り替わらない

リンク先の指定(href)が間違っている可能性があります。

  • 良い例: href="/about"(先頭に / がある)
  • 悪い例: href="about"(先頭に / がないと意図しない場所に移動してしまう)

AI に「リンクの href を確認して、すべて先頭に / をつけてください」とお願いすると直ります。

ヘッダーが2回表示される

layout.tsx の中に <html> タグが2組入っていることが原因です。AI に次のように聞いてみてください。

layout.tsx の中に <html> タグが重複していないか確認して、1つだけにしてください

フッターが画面の一番下にこない

ページの内容が少ないと、フッターが中途半端な位置に浮いてしまうことがあります。次のプロンプトで直せます。

フッターを常に画面の一番下に表示されるように CSS を修正してください。
min-height: 100vh と flex を使う方法でお願いします。

AI が出したコードでエラーが出る

エラーメッセージ(赤い文字)がターミナルやブラウザに表示された場合は、そのメッセージをそのまま AI に見せてください。

以下のエラーが出ました。修正してください:
(ここにエラーメッセージを貼り付ける)

AI はエラーメッセージを読んで、原因と修正方法を教えてくれます。

成果物成果物このレッスンが終わったとき、あなたの手元に残る具体的な成果物です(例: 公開済みの Web ページ、動作するフォームなど)。

種類: code_snippet

検証: basic_manual_check_v1

証跡とメディア

証跡証跡成果物が正しく作れたことを確認するためのチェックリストです(例: ブラウザで動作する、フォーム送信で値が保存される)。

screenshotcode_diff

メディア

diagramscreen_capture
学習完了