【Next.js】お客様の声セクションの作り方を導入事例カードの実装例で紹介

公開日: 2026年9月12日 · 読了目安 9 分

Next.js の LP に置くお客様の声(導入事例)セクションを、コード付きで作る方法を解説。信頼される引用の書き方、3列グリッドのカード、6枚以上の横スクロール、控えめな入場アニメーション、公開前の許諾まで。

お客様の声が作り物に見えるときの直し方

Next.js で LP を作っていて、お客様の声のセクションを置いた。星5つと「とても使いやすいです」を3枚並べたが、どこか作り物に見える。

お客様の声のセクションでは、こうした悩みがよく起きます。

信頼されるお客様の声は、人数や星の数ではなく具体さで決まります。誰がどんな課題に対して、何がどれだけ変わったか。

この3つを1枚のカードに収め、3〜6枚を読みやすく並べます。

動きは控えめな入場にとどめ、自動で切り替わるカルーセルは避けます。

この記事で分かることは次のとおりです。

  • 具体的な声ほど信頼される理由と、信頼が増えない原因

  • Next.js と Tailwind CSS で作る、お客様の声カードのグリッド

  • 6枚以上あるときの横スクロール

  • 引用を読みやすく保つ入場アニメーション

  • 原稿の集め方と、公開前に確認すべき許諾

具体的なお客様の声ほど信頼される理由

LP を見ている人は、お客様の声を「自分と同じ立場の人が、実際に成果を出したか」を確かめるために読みます。

そのため、「最高のサービスです」のような抽象的な称賛は、判断の材料になりません。

誰が書いたのか分からない文は、ダミーにも見えます。

反対に、「問い合わせの返信にかかる時間が半分になった」のような具体的な一文は、読み手が自分の状況に置き換えて考えられます。役職や会社名、利用シーンが添えてあると、その声が実在する人のものだと伝わります。

BtoB なら役職と社名、導入前の課題、数字で表せる変化を1つずつ書きます。BtoC なら利用シーンと結果を1つずつです。

これを目安にすると、カードの文が短くても十分に伝わります。

お客様の声で信頼が増えない3つの原因

お客様の声を置いても効果が出ないときは、見せ方に原因があることが多くあります。次の3つに当てはまらないか確認してください。

顔写真が大きく、引用が短い

写真が主役になると、何を言っているかが目に入りません。カードは引用を先に、名前と写真をその下に小さく置きます。

読む順番がそのまま信頼の順番になります。

すべて同じ長さのテンプレ文

どのカードも同じ長さ、同じ語尾だと、一人が書いたように見えます。1枚だけでも数字を含む声を入れると、ほかのカードの印象も具体的になります。

お客様の声が自動で切り替わるカルーセル

読んでいる途中で次のカードへ進むと、最後まで読めません。読めない声は証明になりません。

自動再生は付けないか、付けるなら一時停止のボタンを必ず置きます。

お客様の声カードの基本コード

3〜6枚なら、グリッドで並べるのが一番読みやすい形です。md 以上は3列、スマホは1列にします。

データは配列にまとめ、カードは map で描画します。

引用・名前・カード全体は、それぞれ意味を持つタグで囲みます。

  • blockquote:引用文を囲む

  • figcaption:名前と役職を囲む

  • figure:カード全体を囲む

見た目は変わりませんが、スクリーンリーダーや検索エンジンに「これは引用で、話しているのはこの人」と伝えられます。

動きがないので、サーバーコンポーネント(サーバーで組み立てる部品)のまま使えます。

components/Testimonials.tsx
import Image from "next/image";
  
  const testimonials = [
    {
      quote: "問い合わせへの返信にかかる時間が、導入から2か月で半分になりました。",
      name: "山田 花子",
      role: "カスタマーサクセス責任者",
      company: "Acme 株式会社",
      avatar: "/avatars/yamada.jpg",
    },
    {
      quote: "LP の更新をエンジニアに頼まずに済むようになり、施策の回数が増えました。",
      name: "佐藤 健",
      role: "マーケティング部",
      company: "Globex 株式会社",
      avatar: "/avatars/sato.jpg",
    },
    {
      quote: "初日から迷わず使えました。社内の説明会を開く必要もありませんでした。",
      name: "鈴木 一郎",
      role: "代表取締役",
      company: "Initech 合同会社",
      avatar: "/avatars/suzuki.jpg",
    },
  ];
  
  export function Testimonials() {
    return (
      <section className="mx-auto max-w-6xl px-6 py-24">
        <h2 className="text-center text-3xl font-semibold">お客様の声</h2>
        <ul className="mt-12 grid gap-6 md:grid-cols-3">
          {testimonials.map((t) => (
            <li key={t.name}>
              <figure className="flex h-full flex-col rounded-2xl border border-zinc-200 bg-white p-6">
                <blockquote className="flex-1 leading-relaxed text-zinc-800">
                  <p>「{t.quote}」</p>
                </blockquote>
                <figcaption className="mt-6 flex items-center gap-3">
                  <Image src={t.avatar} alt="" width={40} height={40} className="size-10 rounded-full object-cover" />
                  <div className="text-sm">
                    <div className="font-medium">{t.name}</div>
                    <div className="text-zinc-500">{t.role}・{t.company}</div>
                  </div>
                </figcaption>
              </figure>
            </li>
          ))}
        </ul>
      </section>
    );
  }

お客様の声カードの高さをそろえる

引用の長さが違うと、カードの下端がばらつきます。

名前の位置を下でそろえるには、各カード(figure)に h-full と flex-col を付けます。高さをいっぱいにして、中身を縦に並べる指定です。

そのうえで引用部分(blockquote)に flex-1 を付けると、余った高さを引用が埋めて、名前が下にそろいます。

引用符の装飾を大きくするより、行間を広めに取る方が読みやすくなります。

お客様の声が6枚以上なら横スクロールにする

声が6枚を超えるとグリッドが縦に長くなります。その場合は、横スクロールで並べるのが扱いやすい形です。

CSS の scroll-snap を使うと、スワイプしたときにカードの端でぴたりと止まります。

カードの幅は画面より少し狭くして、次のカードが右端に少しはみ出すようにします。ドットのナビゲーションより、はみ出しが見える方が「続きがある」と直感的に伝わります。

components/TestimonialsScroller.tsx(リスト部分)
<ul className="mt-12 flex snap-x snap-mandatory gap-6 overflow-x-auto px-6 pb-4">
    {testimonials.map((t) => (
      <li key={t.name} className="w-[85%] shrink-0 snap-start sm:w-[45%] lg:w-[30%]">
        {/* figure の中身はグリッド版と同じ */}
      </li>
    ))}
  </ul>

カルーセルライブラリとの使い分け

矢印ボタンで1枚ずつ送りたい場合や、ループさせたい場合はカルーセルの実装が必要です。

作り方は https://design-layer.com/ja/articles/nextjs-image-carousel-guide で解説しています。お客様の声だけなら、まずは CSS の横スクロールで十分です。

お客様の声の入場アニメーションは控えめに

お客様の声は読ませるセクションです。動きを付けるなら、画面に入ったときにカードが少し遅れて順番に現れる程度にとどめます。

Motion(旧 Framer Motion)なら whileInView(画面に入ったら動かす指定)で作れます。カードごとに delay で少しずつ遅らせます。

動きを足す場合は、カードの部分だけをブラウザで動く部品にします。見出しとデータはサーバー側に残せます。

components/TestimonialCard.tsx
"use client";
  
  import { motion } from "motion/react";
  
  export function TestimonialCard({ index, children }: { index: number; children: React.ReactNode }) {
    return (
      <motion.li
        initial={{ opacity: 0, y: 20 }}
        whileInView={{ opacity: 1, y: 0 }}
        viewport={{ once: true, amount: 0.3 }}
        transition={{ duration: 0.5, delay: index * 0.1, ease: "easeOut" }}
      >
        {children}
      </motion.li>
    );
  }

お客様の声の原稿の集め方と掲載許可の確認

見た目より先に整えるべきなのが、声の中身です。既存のお客様に依頼するときは、次の3つを聞くと具体的な声が集まりやすくなります。

  • 導入前に困っていたこと

  • 使ってみて変わったこと

  • その変化を数字で言うと

文を短く整えるのは構いませんが、意味を変える編集はしません。公開する前に、次の点を本人に確認してください。

  • 名前・役職・会社名を載せてよいか(イニシャルや業種だけにする希望はないか)

  • 顔写真や会社のロゴを使ってよいか

  • 編集後の文面が本人の意図と合っているか

  • 掲載する期間や、取り下げたいときの連絡先

お客様の声も自社の広告として、景品表示法の対象になります。効果を示す声は、多くの利用者に当てはまる内容かを確かめてから載せてください。

完成したお客様の声セクションをコピーして使う方法

DesignLayer のコンポーネント一覧。左のカテゴリで用途ごとに絞り込める
DesignLayer のコンポーネント一覧。左のカテゴリで用途ごとに絞り込める

カードの入場や引用の文字組みに加え、ロゴや写真の配置までそろった仕上がりは、shadcn/ui の Card を並べるだけではなかなか出ません。見た目を先に決めたいときは、完成したセクションから始める方法もあります。

DesignLayer は、人が組んだ React + Tailwind のモーション付きセクションを、ブラウザでライブプレビューできるカタログです。

動きを確かめてから、引用文と名前、会社名だけを差し替えて使えます。

閲覧は無料です。https://design-layer.com/ja/components

無料アカウントでは、無料サンプル10個を回数制限なくコピーでき、動画プロンプトは月1回です。カタログ全体は30日ビルドパス、Lifetime、Plus です。無料サンプルなら回数の上限なくコピーできます。それ以外は30日ビルドパス($19)、Lifetime($79)、Plus(月額 $9)です。

お客様の声セクションについてよくある質問

お客様の声セクションの実装と原稿で、よく出る質問をまとめました。

  • 公開してはいけません。開発中の仮の文は、公開前に実在する人の声へ差し替えます。

    声がまだ集まっていないときは、セクションごと外し、導入社数やロゴなど事実で示せるものを置いてください。

まとめ:Next.js でお客様の声セクションを作る手順

  • お客様の声は「誰が・何を・どれだけ」を1枚のカードに収める

  • 引用を先に、名前と写真をその下に置き、引用だと伝わるタグで組む

  • 3〜6枚はグリッド、それ以上はカードの端で止まる横スクロールにする

  • 動きは画面に入ったときに順番に出す程度にし、自動再生は避ける

  • 公開前に、名前・写真・文面の掲載許可を本人に確認する

お客様の声のあとに置く料金表は https://design-layer.com/ja/articles/nextjs-pricing-table-guide で解説しています。

関連ガイド