Next.jsで学ぶReact講座(完全初心者向け・30日) | 第3章:Next.jsらしさ – Metadata(SEO基礎)

React Next.js
スポンサーリンク

Metadataとは何か(Next.jsでの位置づけ)

まず「Metadata(メタデータ)」という言葉から整理します。
これは、ページの「裏側の情報」です。HTML でいうと <head> の中に書く情報で、ユーザーの目には直接見えませんが、

  • ブラウザのタブに表示されるタイトル
  • 検索結果に出るタイトル・説明文
  • SNS でシェアしたときの表示内容

などに大きく関わります。

Next.js の App Router では、このメタデータを metadata というオブジェクトや generateMetadata 関数で宣言的に設定する仕組み が用意されています。
つまり、「コードの中で title / description をオブジェクトとして書いておくと、Next.js がよしなに <head> を組み立ててくれる」イメージです。


title / description の基本と SEO での意味

title の役割

title は、そのページの「名前」です。

  • ブラウザのタブに表示される
  • 検索結果の青い太字の部分になることが多い

Next.js では、次のように書くとページタイトルが設定されます。

// app/page.tsx など
import type { Metadata } from "next";

export const metadata: Metadata = {
  title: "Next.js × React 入門講座",
};
TSX

これを書いておくと、出力される HTML には <title>Next.js × React 入門講座</title> が入ります。

description の役割

description は、そのページの「短い説明」です。

  • 検索結果のタイトルの下に出る説明文として使われやすい
  • Google の評価項目でも、description が無いと減点扱いになることがある

Next.js では、こう書きます。

export const metadata: Metadata = {
  title: "Next.js × React 入門講座",
  description: "Next.js と React の基本をゼロから学ぶ入門講座です。",
};
TSX

これによって、HTML には

<title>Next.js × React 入門講座</title>
<meta name="description" content="Next.js と React の基本をゼロから学ぶ入門講座です。" />

のようなタグが自動で生成されます。

「検索結果にどんな顔で並びたいか」を決めるのが、title / description だと思ってください。


SEOの考え方(最低限おさえておきたいこと)

SEO でメタデータが担う役割

SEO(検索エンジン最適化)と言うと難しく感じますが、
まず最初におさえるべきポイントはシンプルです。

検索エンジンは、ページの内容を理解するために

  • ページの本文
  • 見出し(<h1> など)
  • メタタグ(特に title / description)

などを読みます。

その中でも title / description は、

  • 検索結果にほぼそのまま出る
  • クリックしたくなるかどうかに直結する

という意味で、「顔」と「自己紹介」に近い存在です。

初心者がまず意識すべき SEO の軸

細かいテクニックよりも、次の 3 点が「最低限」です。

1つのページに 1つのわかりやすい title
そのページで何を伝えるかがひと目で分かる文言にする

description で「このページを開くと何が分かるか」を 1〜2文で書く
キーワードを詰め込みすぎず、人間が読んで自然な文章にする

ページの内容と title / description の内容を一致させる
釣りタイトルにせず、本文とズレないようにする

この「中身とメタ情報の一貫性」が、長期的に見ると一番効きます。


ページごとの設定方法(App Router)

layout でサイト全体のデフォルトを決める

Next.js の App Router では、app/layout.tsx や各セグメントの layout.tsxmetadata を書くことで、その階層全体のデフォルトメタデータを定義できます。

// app/layout.tsx(ルートレイアウト)
import type { Metadata } from "next";

export const metadata: Metadata = {
  title: "Next.js × React 入門講座",
  description: "Next.js と React をゼロから学ぶための入門サイトです。",
};

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="ja">
      <body>{children}</body>
    </html>
  );
}
TSX

これで、何も指定していないページはこの title / description が使われます。

page.tsx ごとに上書きする

特定のページで個別の metadata を設定したい場合、その page.tsx にも metadata を書きます。

// app/about/page.tsx
import type { Metadata } from "next";

export const metadata: Metadata = {
  title: "このサイトについて | Next.js × React 入門講座",
  description: "このサイトの目的と、学べる内容について説明します。",
};

export default function AboutPage() {
  return (
    <main>
      <h1>このサイトについて</h1>
      <p>…本文…</p>
    </main>
  );
}
TSX

こうすると、

  • / → ルートレイアウトの title / description
  • /about → about ページの title / description

というように、パスごとにメタ情報を変えられます。

動的ページでの Metadata(軽く触れておく)

ブログ詳細のように「URLごとにタイトルが変わる」場合は、generateMetadata という関数を使って動的に metadata を返すこともできます。

import type { Metadata } from "next";

type Props = { params: { slug: string } };

export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const post = await fetchPost(params.slug); // 仮の関数
  return {
    title: `${post.title} | ブログ | Next.js × React 入門講座`,
    description: post.summary,
  };
}
TSX

今は「そういうこともできるんだな」くらいの理解で十分です。


最低限のSEO対応を Next.js でやっておく

まずはルートと主要ページだけきちんと書く

最初から全ページ分を完璧に書こうとするとしんどいので、

  • トップページ (/)
  • 主要な説明ページ(例:/about/courses

だけでも、ちゃんとした title / description をつけておくと良いです。

整理すると、最低限やっておきたいことは次の通りです。

app/layout.tsx にサイト全体の titledescription を定義する
主要な page.tsx には個別の metadata を書き、ページ固有のタイトルと説明をつける
description を「そのページの内容を 1〜2文で要約した自然な日本語」にする

Next.js の Metadata API を使うことで、
これらを「JavaScript のオブジェクトとして宣言するだけ」で済ませられるのが、大きなメリットです。


まとめと小さな練習

ここまでをまとめると、こうなります。

  • Metadata は HTML <head> に入る「ページの裏側の情報」で、特に titledescription は SEO と検索結果の見栄えに直結する。
  • Next.js App Router では、export const metadata(と必要に応じて generateMetadata)で、ページやレイアウトごとにメタデータを宣言的に設定できる。
  • まずは app/layout.tsx でサイト全体のデフォルトの title / description を決め、主要ページの page.tsx で個別のメタデータを上書きするのが「最低限のSEO対応」としておすすめ。

練習としては、

  • / 用に「講座全体のタイトルと説明」
  • /about 用に「この講座のコンセプト」
  • /lesson-1 用に「第1回の具体的な内容」

metadata を実際に書いてみると、
「URLごとにどんな顔で検索結果に並ぶか」を意識できるようになって、一気に“サイトを作っている感”が出てくるはずです。

タイトルとURLをコピーしました