Yamase Note
  • ホーム
  • チュートリアル
  • Next.js

Next.jsのチュートリアルをやってみる【メタデータの追加】

2024年11月28日

SHARE

  • ポスト
  • シェア
  • はてブ
  • LINE

目次

Toggle
  • 前回
  • はじめに
  • メタデータとは?
  • なぜメタデータが重要なのか?
  • メタデータの種類
    • タイトル
    • 説明
    • キーワード
    • オープングラフ
    • ファビコン
  • メタデータの追加
  • ファビコンとオープングラフ画像
  • ページのタイトルと説明
  • 練習:メタデータの追加
  • まとめ

前回

2024年11月18日 Next.jsのチュートリアルをやってみる【認証の追加】

はじめに

前回はNextAuth.jsを利用して認証関連の機能を追加いたしました。今回はSEOのためにメタデータを追加する方法について学んでいきます。

メタデータとは?

メタデータはWebページに関する詳細な情報を提供します。基本的にはHTMLの<head>要素内に埋め込むことでページを訪れたユーザーには見えず裏で機能します。この情報によって検索エンジンやほかのシステムにどのようなページかを伝えることができます。

なぜメタデータが重要なのか?

メタデータはSEOを強化するうえで重要な役割を果たし、検索エンジンやソーシャルメディアプラットフォームにとってアクセスしやすく、理解しやすいものにします。適切にメタデータを追加することで、検索結果でのランキングを向上させるのに役立ちます。

メタデータの種類

メタデータには様々な種類があり、それぞれ独自の目的を果たします。一般的には以下の種類が使用されます。

タイトル

ブラウザのタブに表示されるウェブページのタイトルを担当します。検索エンジンがウェブページの内容を理解するのに役立つため、SEO対策には欠かせないメタデータです。

HTML
<title>Page Title</title>

説明

このメタデータは、Webページのコンテンツの概要を示すもので、検索エンジンの検索結果に表示されることが多いです。

HTML
<meta name="description" content="A brief description of the page content." />

キーワード

このメタデータには、ウェブページのコンテンツに関連するキーワードが含まれ、検索エンジンがページをインデックスするのに役立ちます。

HTML
<meta name="keywords" content="keyword1, keyword2, keyword3" />

オープングラフ

このメタデータはソーシャルメディアプラットフォームでウェブページが共有される際に、タイトル、説明文、プレビュー画像などの情報を提供し、ウェブページの表現方法を向上させます。

HTML
<meta property="og:title" content="Title Here" />
<meta property="og:description" content="Description Here" />
<meta property="og:image" content="image_url_here" />

ファビコン

このメタデータはブラウザのアドレスバーやタブに表示されるファビコン(小さなアイコン)をウェブページにリンクします。

HTML
<link rel="icon" href="path/to/favicon.ico" />

メタデータの追加

Next.jsにはアプリケーションのメタデータを定義するためのMetadata APIがあります。アプリケーションにメタデータを追加するには、2つの方法があります。

  • 設定ベース:静的なメタデータオブジェクト、もしくは動的なgenerateMetadata関数をlayout.jsまたはpage.jsファイルにエクスポートします。
  • ファイルベース:Next.jsには、メタデータ用に使用する特別なファイルがいくつかあります。
    • favicon.ico, apple-icon.jpg, icon.jpg:ファビコンやアイコンに使用
    • opengraph-image.jpg, twitter-image.jpg:SNSの画像に採用されます。
    • robots.txt:検索エンジンのクロールに関する指示。
    • sitemap.xml:ウェブサイトの構造に関する情報を提供します。

これらのファイルを静的なメタデータとして使用することも、プロジェクト内で動的に生成することもできます。この両方のオプションを使用すると、Next.jsはページに関する<head>要素を自動的に生成します。

ファビコンとオープングラフ画像

publicフォルダの中を確認するとfavicon.icoとopengraph-image.jpgの二種類の画像があることが確認できます。

これらの画像を/appフォルダのルートに移動しましょう。

すると、Next.jsは自動的にこれらのファイルを識別して、ファビコンとOG画像として使用します。開発ツールなどでアプリケーションの<head>要素をチェックすることで確認できます。

ImageResponseコンストラクタを使用すると、動的なOG画像を作成することもできます。

ページのタイトルと説明

layout.jsやpage.jsファイルからもmetadataオブジェクトをインクルードして、タイトルや説明文などのページ情報を追加することができます。

ルート・レイアウトで以下のフィールドを持つ新しいmetadataオブジェクトを作成しましょう。

/app/layout.tsx
import { Metadata } from 'next';

export const metadata: Metadata = {
  title: 'Acme Dashboard',
  description: 'The official Next.js Course Dashboard, built with App Router.',
  metadataBase: new URL('https://next-learn-dashboard'),
};

Next.jsは自動的にタイトルとメタデータをアプリケーションに追加します。

特定のページにカスタムタイトルを追加したい場合は、ページ事態にmetadataオブジェクトを追加することで実現できます。入れ子になったページのメタデータは、親のメタデータを上書きします。

以下のように/dashboard/incoicesページでタイトルを変更することができます。

/app/dashboard/invoices/page.tsx
import { Metadata } from 'next';
 
export const metadata: Metadata = {
  title: 'Invoices | Acme Dashboard',
};

ですが、この場合すべてのページでAcme Dashboardの様にアプリのタイトルを繰り返す必要があります。

代わりにmetadataオブジェクトのtitle.templateフィールドを使用して、ページタイトルのテンプレートを定義することができます。このテンプレートには、ページタイトルの他に、任意の情報を含めることができます。

ルートレイアウトで、テンプレートを含めるためにmetadataオブジェクトを更新しましょう。

/app/layout.tsx
import { Metadata } from 'next';
 
export const metadata: Metadata = {
  title: {
    template: '%s | Acme Dashboard',
    default: 'Acme Dashboard',
  },
  description: 'The official Next.js Learn Dashboard built with App Router.',
  metadataBase: new URL('https://next-learn-dashboard.vercel.sh'),
};

テンプレート内の%sは特定のページタイトルに置き換えられます。

これで、/dashboard/invoicesページにページタイトルのみを追加することができるようになります。以下のように変更してみましょう。

/app/dashboard/invoices/page.tsx
export const metadata: Metadata = {
  title: 'Invoices',
};

dashboard/invoicesページに移動してページタイトルが「Invoices | Acme Dashboard」になっていたら成功です。

練習:メタデータの追加

メタデータの追加方法を学ぶことができたので、他のページのタイトルも変えてみましょう。

  1. /login page.
  2. /dashboard/ page.
  3. /dashboard/customers page.
  4. /dashboard/invoices/create page.
  5. /dashboard/invoices/[id]/edit page.

まとめ

  • メタデータとはWebページのコンテンツに関する情報のデータ。
  • メタデータは<head>要素で設定することができる。
  • Next.jsではlayout.jsまたはpage.jsでメタデータを追加することができる。
  • title.templateフィールドの様に使用することで、ページタイトルのテンプレートを定義することができる。(その他の情報も可能)
SHARE
  • ポスト
  • シェア
  • はてブ
  • LINE

CATEGORY :

  • Next.js
  • チュートリアル

TAGS :

  • head
  • metadata
  • Next.js
  • template

関連記事

  • Next.jsのチュートリアルをやってみる【認証の追加】

    Next.jsのチュートリアルをやってみる【認証の追加】

  • Goの公式チュートリアルをやってみる【モジュールの作成】

    Goの公式チュートリアルをやってみる【モジュールの作成】

  • Goの公式チュートリアルをやってみる【ジェネリクス】

    Goの公式チュートリアルをやってみる【ジェネリクス】

  • Next.jsのチュートリアルをやってみる【フォントと画像の最適化編】

    Next.jsのチュートリアルをやってみる【フォントと画像の最適化編】

この記事を書いた人
Yamase
雑食エンジニア

いろんな技術に目移りするエンジニア。 技術的な情報を中心にメモ代わりに発信しています。 もしかしたらゲームとか好きなことについて書いたり?

X

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

前の記事

Next.jsのチュートリアルをやってみる【認証の追加】

次の記事

Windows11にDocker環境を構築する方法
プロフィール背景画像
プロフィール画像

Yamase

いろんな技術に目移りするエンジニア。 技術的な情報を中心にメモ代わりに発信しています。 もしかしたらゲームとか好きなことについて書いたり?

最近の投稿

  • 個人的に検討したGo言語ライブラリ
  • Windows11にDocker環境を構築する方法
  • Next.jsのチュートリアルをやってみる【メタデータの追加】
  • Next.jsのチュートリアルをやってみる【認証の追加】
  • Next.jsのチュートリアルをやってみる【アクセシビリティの向上編】
コンテンツ一覧
  • Home
  • 記事のトップへ
  • Twitter

カテゴリー

  • Go
  • WordPress
  • チュートリアル
    • Go
    • Next.js
  • 備忘録
  • 勉強
    • LeetCode
  • 未分類
  • 開発

目次Toggle Table of ContentToggle

  • 前回
  • はじめに
  • メタデータとは?
  • なぜメタデータが重要なのか?
  • メタデータの種類
    • タイトル
    • 説明
    • キーワード
    • オープングラフ
    • ファビコン
  • メタデータの追加
  • ファビコンとオープングラフ画像
  • ページのタイトルと説明
  • 練習:メタデータの追加
  • まとめ

同カテゴリーの人気記事

  • 1
    【Meta Quest 3開発】QuestLinkを使用してもUnityのPlayモードでアプリが起動しない
    【Meta Quest 3開発】QuestLinkを使用してもUnityのPlayモードでアプリが起動しない
  • 2
    【Meta Quest 3開発】HMD・手・コントローラーのトラッキング
    【Meta Quest 3開発】HMD・手・コントローラーのトラッキング
  • 3
    【C#】CancellationTokenの使い方
    【C#】CancellationTokenの使い方
  • 4
    【Meta Quest 3開発】環境構築とプロジェクトの設定
    【Meta Quest 3開発】環境構築とプロジェクトの設定
  • 5
    【C#】CancellationTokenSourceの使い方
    【C#】CancellationTokenSourceの使い方
プロフィール背景画像
プロフィール画像

Yamase

いろんな技術に目移りするエンジニア。
技術的な情報を中心にメモ代わりに発信しています。
もしかしたらゲームとか好きなことについて書いたり?

カテゴリー

  • Go
  • Go
  • LeetCode
  • Next.js
  • WordPress
  • チュートリアル
  • 備忘録
  • 未分類
  • 開発

タグ

Array BFS C# Coding command Database Develop DFS DP Error Fetch Fuzzing Go golang Hash HashSet interface LeetCode LinkedList MetaQuest3 Meta XR SDK module Next.js PostgreSQL Query Queue React Rendering REST RESTful router server Skeleton SQL Streaming Tutorial TypeScript Unity VR Zod アルゴリズム 二分木 動的計画法 深さ優先探索 部分列

ランキング

  • 1
    【Meta Quest 3開発】QuestLinkを使用してもUnityのPlayモードでアプリが起動しない
    【Meta Quest 3開発】QuestLinkを使用してもUnityのPlayモードでアプリが起動しない
  • 2
    【Meta Quest 3開発】HMD・手・コントローラーのトラッキング
    【Meta Quest 3開発】HMD・手・コントローラーのトラッキング
  • 3
    【C#】CancellationTokenの使い方
    【C#】CancellationTokenの使い方
  • 4
    【Meta Quest 3開発】環境構築とプロジェクトの設定
    【Meta Quest 3開発】環境構築とプロジェクトの設定
  • 5
    【C#】CancellationTokenSourceの使い方
    【C#】CancellationTokenSourceの使い方
HOME

© 2025 Seiya Yamaguchi All rights reserved.