見出し画像

【SEOに強い理由】Next.js の Metadata API で、SNS映えするOGP画像や検索結果を「ページ単位」で完璧に制御する


今日は、アプリの「顔」を整え、検索エンジンに正しく伝えるための「Metadata(メタデータ)と SEO」 を攻略します。

React単体では react-helmet などが必要だった「タイトルや説明文の設定」が、Next.jsでは驚くほどシステマチックに管理できます。

📝 9日目の学習ポイント:検索エンジンへの「名刺」を作る

Next.js(App Router)には、ページの <head> 内を管理するための強力な仕組みが備わっています。

💡 1. 静的メタデータ (Static Metadata)

ほとんどのページでは、オブジェクトを export するだけでOKです。

// app/about/page.tsx
import { Metadata } from 'next'

export const metadata: Metadata = {
  title: '会社概要 | My App',
  description: '私たちのビジョンを紹介します。',
}

export default function Page() {
  return <h1>About Us</h1>
}

💡 2. 動的メタデータ (Dynamic Metadata)

3日目に学んだ「動的ルーティング」と組み合わせる時に威力を発揮します。記事のタイトルなどをAPIから取得して、そのままメタデータに反映できます。

// app/blog/[id]/page.tsx
export async function generateMetadata({ params }) {
  const post = await fetchPost(params.id) // データを取得
  return {
    title: post.title,
    description: post.summary,
    openGraph: {
      images: [post.coverImage], // SNSでシェアした時の画像
    },
  }
}

💡 3. メタデータの継承

layout.tsx で定義したメタデータは、子ページに引き継がれます。

例えば、layout.tsx でアプリ名を title.template として設定しておけば、子ページでタイトルを書くだけで「ページ名 | アプリ名」という形式に自動整形してくれます。


📝 9日目の課題

  1. app/layout.tsx に、アプリ全体のデフォルトタイトルと説明文を設定してみましょう。

  2. 以前作った app/users/[id]/page.tsx で generateMetadata を使い、URLのIDがタイトルに表示されるか確認してください。

  3. ブラウザでページを開き、右クリック→「ページのソースを表示」で、<title> や <meta name="description"> が正しく書き換わっているかチェックしましょう!


Next.jsをもっと学びたい人は!ここから!

#エンジニアと繋がりたい #Nextjs #100DaysOfCode #プログラミング学習 #SEO #個人開発

いいなと思ったら応援しよう!