next.jsでパンくずリストを実装しSEO最適化する方法

目次

はじめに

この記事では、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サイトや複数階層のブログ、大規模サイトで特に有効です。まずは主要なテンプレートに導入し、順位や直帰率を計測して改善を続けてください。

最後に、過剰な表示は逆効果になり得るため、シンプルで一貫した設計を心がけることをおすすめします。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次