UIXHERO
この記事は英語でも読めます。 Read the English version

ページネーションとは?UIの使い方・表示件数・無限スクロールとの違い

ページネーションとは、一覧を複数ページに分けて移動しやすくするUIです。表示件数、ページ送り、無限スクロールとの違い、アクセシビリティ要件を解説します。

2026年2月26日
更新: 2026年6月25日
19
by Dengen Yosho(DGYS)

ページネーションとは、一覧や検索結果を一定の表示件数ごとに分割し、ページ番号や「前へ / 次へ」で移動できるようにするです。「情報の全体量」と「現在地」を俯瞰させ、ユーザーに見通しとコントロールを取り戻させます。

この記事を読むと、ページネーションUIの使い方、表示件数の見せ方、無限スクロールとの使い分け、A11yに必要なARIA属性の判断が自分でできるようになります。


まず結論:ページネーションを使う条件

ページネーションを使う条件は、ユーザーが一覧の現在地を把握し、特定の位置へ戻れる必要があることです。検索結果、商品一覧、管理画面のテーブル、記事一覧のように、比較・再訪・共有が重要な一覧ではページネーションが向いています。

一方で、SNSタイムラインやニュースフィードのように「次々と読む」ことが目的なら、無限スクロールやLoad Moreの方が自然です。ページネーションは単に一覧を分けるUIではなく、全体件数・表示件数・現在ページを伝えるナビゲーションとして設計します。

場面向いているUI理由
検索結果・商品一覧ページネーション特定ページへ戻りやすい
管理画面のテーブルページネーション表示件数を固定して比較しやすい
ニュースフィード無限スクロール連続消費に向いている
モバイルの短い一覧Load More操作が単純で画面を圧迫しにくい

1. UI例(Preview / Live)

実装で見る(GunjoUI)

この部品を、デザインシステム GUNJO の実装で確かめられます。

2. 定義(Definition)

Pagination(ページネーション)とは、大量のリストやコンテンツを一定数の塊(ページ)に分割し、任意の位置へ移動できるようにしたナビゲーションUIです。

検索結果や商品一覧では、「全96件中 21〜30件を表示」のように表示件数と現在の表示範囲を一緒に示すことで、ユーザーは全体量と現在地を把握しやすくなります。

表示件数UIでは、ページ番号だけでなく「総件数」「1ページあたりの件数」「現在表示している範囲」を同じで見せます。たとえば「全96件中 21〜30件を表示」と書くと、ユーザーは今のページが一覧全体のどの位置なのかを判断できます。

近いUIとの違い:無限スクロールは「最新情報を消費する」フロー向き、Load Moreボタンは「追加読み込み」向き、Paginationは「特定ページへの直接移動・現在地把握」向き。


3. 使い分け(When to use / When NOT to use)

3.1 When to use

  • 検索結果・商品一覧など、ユーザーが「3ページ目にあったあれ」と特定ページを再訪したいデータ群
  • Tableなど一定の表示件数を保つことで比較・スキャンを容易にしたい場合
  • フッターへの到達が重要なページ(無限スクロールはフッターを埋没させる)

3.2 When NOT to use

  • SNSタイムラインなど最新情報を消費するフローが目的の場合 → 無限スクロールを使う
  • 表示件数が10件未満の場合(Paginationが不要)
  • モバイルで「もっと見る」ボタンの方が直感的な場合

3.3 代替UI(Alternatives)

  • 最新情報の連続消費 → 無限スクロール
  • 追加読み込みのみ → Load Moreボタン
  • モバイルの省スペース → 「前へ / X / Y / 次へ」のシンプルパターン

4. 設計判断の核(Decision Principles)

「現在地」と「行き先」の明確な手掛かりを常に提供する。

  • 現在地を強調する: Active状態のページ番号は色・太字・背景色で明確に区別する
  • 端点を見せる: 先頭(1)と末尾(Last)は省略せずに表示し、全体規模を把握させる
  • 前後の導線は必須: 「前へ」「次へ」ボタンは常に両端に配置する
  • URLと同期する: ?page=N でリロード・共有後も同じページが開くようにする
  • タップ領域を最大化: 数字だけでなくボタン全体を押せる領域にする(44px角以上)

5. 状態設計(States)

5.1 必須状態

  • Default(通常): 各ページへのリンクボタン。Hover効果でクリッカブルを示す
  • Current / Active(現在地): 色反転などで強調し、クリック不可にする(必須)
  • Disabled(無効): 1ページ目の「前へ」、最終ページの「次へ」。透明度を下げて押せないことを示す

5.2 条件付き状態

  • Hover(ホバー): 背景色変化でクリッカブルを明示
  • Focus(フォーカス): キーボード操作中のアウトライン表示
  • Ellipsis(省略): ページ数が多い場合の ... 表示。リンクなし・装飾のみ
状態見た目意図
Defaultボーダー付きボタン移動可能
Active背景色反転・非クリック現在地
Disabled透明度低下移動不可(端点)
Ellipsis... テキスト番号省略
Focusアウトラインキーボード操作中

6. バリエーション設計(Variants)

  • フル型: 番号・省略記号・前後ボタンをすべて表示。デスクトップの検索結果・管理画面に適する
  • シンプル型: 「前へ / 現在ページ/全ページ / 次へ」のみ。モバイルや省スペースに有効
  • Load More併用型: 初期はLoad Moreで追加読み込み、最終的にPaginationへ移行するハイブリッドパターン

禁止パターン:Activeページに <a><button> をそのまま使いクリック可能な状態にする・現在地を数字のみで示し色分けなし


7. パターン集(Good / Bad / How to fix)

7.0 よく崩れる設計パターン

  • 現在地の喪失: 何ページ目にいるか・あと何ページあるか分からない → 全体量と現在地を必ず明示する
  • クリック領域の極小化: 数字テキスト部分しか押せない → ボタン全体を44px角以上のにする
  • 無限スクロールの誤用: 特定アイテムを探したい場面で無限スクロール → Paginationに切り替える

7.1 Bad

  • ページ番号が小さく密集。「次へ」ボタンなし。現在何ページ目か不明。フッター直上にポツンと配置されているだけ

7.2 Good

  • スマホでも押しやすい大きなボタン群。「前へ」「1」「2」「3」「…」「10」「次へ」で全体像が見え、現在「3」にいることが背景色でひと目で分かる。リスト上部には「全96件中 21〜30件を表示」と補足がある

7.3 How to fix

  1. 数字ボタンを広いPaddingで囲み最低44×44pxのタップ領域を確保する
  2. Activeページに背景色+aria-current="page"を付与し、視覚とスクリーンリーダー両方で現在地を明示する
  3. 1ページ目の「前へ」・最終ページの「次へ」をDisabledにし、端点の迷いをなくす

7.4 GUNJO 実装で見る(Bad / Good)

同じ GUNJO の Pagination を、現在ページの示し方が崩れた使い方と正しい使い方で


8. ルール(Must / Better)

Must(守らないと壊れる)

Better(品質が跳ねる)


9. アクセシビリティ要件(必須)

Keyboard

  • 全ての有効なリンク/ボタンに Tab でフォーカスし、Enter で遷移できる

Focus

  • フォーカス時に明確なアウトラインを表示する

Screen Reader

  • 全体を <nav aria-label="ページネーション"> で囲む
  • 現在ページに aria-current="page" を付与する
  • 数字ボタンに aria-label="3ページ目" のように読み上げ文脈を付与する
  • 省略記号(...)は aria-hidden="true" にしてスクリーンリーダーから除外する

Touch / Pointer

  • 各ボタンのタップ領域は最低 44×44px を確保する
  • モバイルではシンプル型(前へ/現在/次へ)への降格も検討する

Contrast / Readability

  • Activeボタンの文字色と背景色のコントラスト比は 4.5:1以上 を確保する

10. 実装メモ(Implementation Notes)

  • 省略記号(Ellipsis)のロジックは「先頭・末尾・現在地±1を常に表示、残りを...で省略」が最も汎用的
  • Next.jsでは useSearchParams + router.replace でURLパラメータを同期する。router.push はブラウザ履歴が積まれるので注意
  • shadcn/ui の <Pagination> コンポーネントはA11y対応済みのため優先して使う
  • 総ページ数が変動するAPI連携の場合、X-Total-Count ヘッダーや total フィールドをAPIレスポンスに含めるバックエンド設計が必要

11. 関連リンク


まとめ

Paginationの設計は「現在地の明示」と「タップ領域の確保」で9割決まります。迷ったら 4. 設計判断の核 に戻り、URLとの同期とAR属性(aria-current="page")の実装を確認してください。地味なパーツに見えますが、ユーザーの探索体験を支える重要な動線です。

更新のお知らせ

サイトに載せていない実例や、新しい記事のお知らせはこちらで出しています。

読んだ内容を、自分の画面に当てるとき

UIXHEROは、記事を書くほかに、画面の検品・判定、デザインシステムの構築、実装と改善の伴走を受けています。何を頼めばいいか決まっていない段階の相談も、同じ窓口で受けます。

UIXHEROに頼めることを見る

※ 記事の内容についての質問や、書いてほしいテーマの要望も同じ窓口で受けています

記事をシェア

メールでお知らせを受け取る

最終更新: 2026年6月25日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

UI/UXデザイナー兼デザインエンジニア デザイン歴25年以上 情報設計〜UIデザイン〜React/TypeScriptによる実装までを一気通貫で担当 大手企業のDXプロジェクトや決済アプリ領域で、デザインリードとして改善と構築を経験 現在はフリーランスとして、プロダクトのUI/UX改善とデザインシステム構築を支援 長年の実務の中で感じてきたのは、 「良いUI」はセンスではなく、再現可能な判断の積み重ねであるということ UIXHEROは、 心理学や行動科学の知見を、現場で使える設計言語に翻訳するための場所 関心領域は「ユーザーの行動が変わるUI」 人の認知・注意・意思決定の構造を理解し、 “なぜそのUIが機能するのか”を言語化することを目指している

あわせて読みたい

この記事に関連する記事をご紹介します

Context Menuとは?contextmenuイベントとUI設計の使い方

Context Menuとは、右クリックや長押しで表示するコンテキスト依存のメニューUIです。contextmenuイベント、Dropdown Menuとの違い、ARIA menu、モバイル対応を解説します。

2026年3月3日
17

トグルボタンとは?意味・使い方・Switch/Buttonとの違い

トグルボタンとは、押した状態を保持してON/OFFや選択中を示すUIです。Switch・Button・Checkboxとの違い、使う場面、aria-pressedの設計を解説します。

2026年2月28日
19

Bar Chart(棒グラフ)

カテゴリごとの量を棒の長さで比べるチャート。ゼロ基線の扱い、並び順、縦横の選び方、しきい値の見せ方という設計判断と、色だけに頼らないアクセシビリティ要件を解説する。

2026年8月27日
18

もっと深く知りたいですか?

ここに掲載されていないトピックについても、リクエストがあれば解説記事を追加します。 わかりにくい点や、具体的な事例について知りたいことがあれば教えてください。

リクエストを送る