メタデータの追加
メタデータはSEOと共有性において非常に重要です。この章では、Next.jsアプリケーションにメタデータを追加する方法について説明します。
メタデータとは?
ウェブ開発において、メタデータはウェブページに関する追加情報を提供します。メタデータはページを訪れるユーザーには見えません。代わりに、ページのHTML内、通常は<head>
要素内に埋め込まれ、裏側で機能します。この隠された情報は、検索エンジンやその他のシステムがウェブページの内容をよりよく理解するために重要です。
メタデータが重要な理由
メタデータは、ウェブページのSEOを強化し、検索エンジンやソーシャルメディアプラットフォームにとってよりアクセスしやすく理解しやすいものにする上で重要な役割を果たします。適切なメタデータは、検索エンジンがウェブページを効果的にインデックス化し、検索結果でのランキングを向上させるのに役立ちます。さらに、Open Graphなどのメタデータは、ソーシャルメディアで共有されたリンクの見た目を向上させ、ユーザーにとってより魅力的で情報量の多いコンテンツにします。
メタデータの種類
メタデータにはさまざまな種類があり、それぞれが独自の目的を果たします。一般的な種類には以下があります:
タイトルメタデータ: ブラウザのタブに表示されるウェブページのタイトルを担当します。SEOにおいて重要で、検索エンジンがウェブページの内容を理解するのに役立ちます。
ディスクリプションメタデータ: このメタデータはウェブページの内容の簡単な概要を提供し、検索エンジンの結果に表示されることがよくあります。
キーワードメタデータ: このメタデータには、ウェブページの内容に関連するキーワードが含まれており、検索エンジンがページをインデックス化するのに役立ちます。
Open Graphメタデータ: このメタデータは、ソーシャルメディアプラットフォームで共有される際のウェブページの表現方法を強化し、タイトル、説明、プレビュー画像などの情報を提供します。
ファビコンメタデータ: このメタデータは、ファビコン(小さなアイコン)をウェブページにリンクし、ブラウザのアドレスバーやタブに表示されます。
メタデータの追加
Next.jsには、アプリケーションのメタデータを定義するために使用できるMetadata APIがあります。アプリケーションにメタデータを追加する方法は2つあります:
-
設定ベース:
layout.js
またはpage.js
ファイルで静的metadata
オブジェクトまたは動的generateMetadata
関数をエクスポートします。 -
ファイルベース: Next.jsには、メタデータの目的で特別に使用されるさまざまなファイルがあります:
favicon.ico
、apple-icon.jpg
、icon.jpg
: ファビコンやアイコンに使用opengraph-image.jpg
とtwitter-image.jpg
: ソーシャルメディア画像に使用robots.txt
: 検索エンジンのクロールに関する指示を提供sitemap.xml
: ウェブサイトの構造に関する情報を提供
これらのファイルを静的なメタデータに使用することも、プロジェクト内でプログラム的に生成することもできます。
これらのオプションのどちらを使用しても、Next.jsは自動的にページに関連する<head>
要素を生成します。
ファビコンとOpen Graph画像
/public
フォルダ内には、favicon.ico
とopengraph-image.jpg
という2つの画像があります。
これらの画像を/app
フォルダのルートに移動します。
これを行うと、Next.jsは自動的にこれらのファイルをファビコンとOG画像として認識して使用します。開発ツールでアプリケーションの<head>
要素を確認することで、これを確認できます。
豆知識:
ImageResponse
コンストラクタを使用して動的なOG画像を作成することもできます。
ページタイトルと説明
layout.js
またはpage.js
ファイルからmetadata
オブジェクトを含めることで、タイトルや説明などの追加のページ情報を追加することもできます。layout.js
のメタデータは、それを使用するすべてのページに継承されます。
ルートレイアウトで、以下のフィールドを持つ新しいmetadata
オブジェクトを作成します:
Next.jsは自動的にタイトルとメタデータをアプリケーションに追加します。
しかし、特定のページにカスタムタイトルを追加したい場合はどうすればよいでしょうか?ページ自体にmetadata
オブジェクトを追加することでこれを行うことができます。ネストされたページのメタデータは、親のメタデータを上書きします。
例えば、/dashboard/invoices
ページで、ページタイトルを更新できます:
これは機能しますが、アプリケーションのタイトルをすべてのページで繰り返しています。会社名などが変更された場合、すべてのページで更新する必要があります。
代わりに、metadata
オブジェクトのtitle.template
フィールドを使用して、ページタイトルのテンプレートを定義できます。このテンプレートには、ページタイトルや含めたい他の情報を含めることができます。
ルートレイアウトで、metadata
オブジェクトを更新してテンプレートを含めます:
テンプレート内の%s
は、特定のページタイトルに置き換えられます。
これで、/dashboard/invoices
ページで、ページタイトルを追加できます:
/dashboard/invoices
ページに移動し、<head>
要素を確認してください。ページタイトルが請求書 | Acmeダッシュボード
になっているはずです。
練習: メタデータの追加
メタデータについて学んだので、他のページにタイトルを追加して練習しましょう:
/login
ページ/dashboard/
ページ/dashboard/customers
ページ/dashboard/invoices/create
ページ/dashboard/invoices/[id]/edit
ページ
Next.jsのMetadata APIは強力で柔軟性があり、アプリケーションのメタデータを完全に制御できます。ここでは基本的なメタデータの追加方法を示しましたが、keywords
、robots
、canonical
など、複数のフィールドを追加できます。ドキュメントを探索し、アプリケーションに追加したいメタデータを自由に追加してください。