はじめに
この記事では、Next.jsでパンくずリストを実装する方法と、SEO観点での最適化ポイントをわかりやすく解説します。
パンくずリストは、ユーザーが現在どのページにいるかを示す小さなナビゲーションです。たとえば「トップ > カテゴリ > 商品名」のように表示され、訪問者が戻る場所を直感的に把握できます。これによりサイトの回遊性が高まり、離脱を防げます。
本記事は次のような方に向けています。
– Next.jsでサイトを作る方
– サイトの使いやすさやSEOを改善したい方
学べる内容は次の通りです。
– パンくずリストの役割とメリット
– Next.jsでの具体的な実装手順
– 構造化データ(JSON-LD)を使ったSEO対策
– 設置時の注意点とベストプラクティス
基本的なNext.jsとReactの知識があると理解が早いですが、初めての方にも取り組めるよう手順を丁寧に説明します。
パンくずリストとは?そのメリット
定義
パンくずリストは、今見ているページがサイトのどの位置にあるかを示すナビゲーションです。典型的には「ホーム > カテゴリ > サブカテゴリ > 現在のページ」のように表示します。ユーザーが自分の位置を把握しやすくなります。
ユーザーへのメリット
- 道に迷わない:サイト内の階層が一目で分かるため、戻る・移動が簡単です。
- 操作の短縮:上位のカテゴリへワンクリックで移動できます。特に商品一覧や記事サイトで便利です。
- モバイルでも使いやすい:表示を工夫すれば狭い画面でも有効です。
SEO・検索結果へのメリット
- 検索エンジンがサイト構造を理解しやすくなります。
- 検索結果にパンくずが表示されると、クリック率が上がることがあります。
実例で理解する
例:ホーム > レシピ > 和食 > 煮物 のように並べると、ユーザーは現在のカテゴリと関連ページを素早く見つけられます。実装は次章で詳しく説明します。
Next.jsでのパンくずリスト実装方法
概要
Next.jsとTypeScriptでシンプルなパンくずリストを作ります。各ページからアイテム配列を渡し、最後の要素にはリンクを付けず現在地を示す設計です。
コンポーネント例
import Link from 'next/link'
type Item = { label: string; href?: string }
export default function Breadcrumbs({ items }: { items: Item[] }){
return (
<nav aria-label="Breadcrumb">
<ol style={{display:'flex',gap:8,listStyle:'none',padding:0}}>
{items.map((it, i)=>{
const last = i===items.length-1
return (
<li key={i}>
{last || !it.href ? (
<span aria-current="page">{it.label}</span>
):(
<Link href={it.href}>{it.label}</Link>
)}
</li>
)
})}
</ol>
</nav>
)
}
利用例(ページ側)
<Breadcrumbs items={[
{label:'ホーム', href:'/'},
{label:'記事一覧', href:'/articles'},
{label:'Reactの基礎'}
]} />
上部に置くとユーザーが現在地を素早く把握できます。
補足
- 視覚的区切り(›や/)はCSSで追加します。
- 最後の要素にaria-current=”page”を付けてアクセシビリティに配慮します。
SEO最適化のためのパンくずリスト実装
なぜJSON-LDを追加するか
検索エンジンは構造化データを理解しやすくなり、リッチリザルトでの表示が期待できます。パンくずをJSON-LDで出すと、クローラーがページ階層を正確に把握しやすくなります。
JSON-LDの基本フォーマット(例)
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type":"ListItem","position":1,"name":"ホーム","item":"https://example.com/"},
{"@type":"ListItem","position":2,"name":"カテゴリ","item":"https://example.com/category"},
{"@type":"ListItem","position":3,"name":"記事タイトル","item":"https://example.com/category/post"}
]
}
Next.jsでの挿入方法(簡単な例)
next/headを使い、scriptタグでJSON-LDを埋めます。サーバー側でレンダリングされるのでSEO効果が出やすいです。
import Head from 'next/head'
export default function BreadcrumbJsonLd({data}){
return (
<Head>
<script type="application/ld+json" dangerouslySetInnerHTML={{__html: JSON.stringify(data)}} />
</Head>
)
}
TypeScriptで型を付けて動的に切替える
アイテム配列をpropsで受け取り、位置やURLを生成します。型を定義すると間違いを減らせます。簡単な型例:
type Crumb = { name:string; url:string }
function buildBreadcrumbList(crumbs:Crumb[]) { /* return JSON-LD */ }
検証と注意点
構造化データテストやSearch Consoleのリッチリザルトテストで確認してください。URLやpositionは正確に設定し、重複を避けてください。
パンくずリスト設置の注意点とベストプラクティス
全ページに配置する
パンくずリストは可能な限り全ページに設置してください。とくにカテゴリや階層が深いページでは、ユーザーが現在地を把握しやすくなります。例:商品一覧→カテゴリ→商品詳細。
最後の要素はリンクにしない
現在表示中のページを示す最後の要素はリンクにしないでください。ユーザーが同じページを誤って再読み込みしたり、混乱したりするのを防げます。視覚的には強調表示(太字や色)します。
構造化データは表示と常に一致させる
BreadcrumbListなどの構造化データは、画面に表示しているパンくずと一致させます。例:見た目は「トップ > 家電 > テレビ」なら、構造化データも同じ順序とラベルで出力します。ずれがあると検索エンジンが混乱します。
デザインとアクセシビリティ
リンク間は「>」や「/」などシンプルな区切りを使い、キーボード操作やスクリーンリーダーに配慮してください。aria-current=”page”を最後の要素に付けると親切です。
サイト設計段階で仕様を決める
早い段階でパンくずのルール(階層の取り方、ラベルの命名規則、構造化データの出力方法)を決めておくと、運用や拡張が楽になります。SEOとユーザー体験の両方で安定した効果が出ます。
まとめ:Next.jsサイトでのパンくずリスト導入効果
概要
パンくずリストは、訪問者のページ移動を助け、サイト構造を視覚的に示します。Next.jsではコンポーネント化とJSON-LDで実装しやすく、ユーザー体験と検索エンジン双方に恩恵を与えます。
主な効果
- ユーザビリティ向上:現在地が分かりやすく、離脱率を下げます。
- SEO効果:構造化データ(JSON-LD)により検索結果での表示改善が期待できます。
- 内部リンクの強化:ページ間の関連性が明確になりクローリングがスムーズになります。
実装のポイント(Next.js)
- 小さなUIコンポーネントで再利用性を高めます。
- サーバー側レンダリングや静的生成に対応して表示と構造化データを出力します。
- アクセシビリティ(aria属性、キーボード操作)を忘れずに実装します。
適用例と推奨
ECサイトや複数階層のブログ、大規模サイトで特に有効です。まずは主要なテンプレートに導入し、順位や直帰率を計測して改善を続けてください。
最後に、過剰な表示は逆効果になり得るため、シンプルで一貫した設計を心がけることをおすすめします。












