ページネーション(kaminariなど)

Railsにおける「ページネーション」は、大量のデータを複数ページに分けて表示するための機能です。ユーザビリティの向上とパフォーマンスの最適化において重要です。この機能を簡単に導入・管理できるGemとして代表的なのが Kaminari です。


1. Kaminariの導入手順

a. Gemのインストール

Gemfileに以下を追加します:

ruby
gem 'kaminari'

その後、インストール:

bash
bundle install

b. モデルへのページネーション適用

例えば、Articleモデルに対してページネーションを適用したい場合:

ruby
@articles = Article.page(params[:page]).per(10)
  • page(params[:page]):現在のページを指定。

  • per(10):1ページあたりの表示件数(省略可能。デフォルトは25件)。


2. ビューの作成

コントローラーでページネーション済のインスタンス変数を渡した上で、ビューで以下のように記述します:

erb
<%= paginate @articles %>

Kaminariが提供するヘルパーにより、HTMLのページリンクが自動生成されます。


3. カスタマイズ(必要に応じて)

a. デフォルト設定の変更

次のコマンドで設定ファイルを生成できます:

bash
rails g kaminari:config

生成された config/initializers/kaminari_config.rb を編集することで、以下のような設定が可能です:

ruby
Kaminari.configure do |config| config.default_per_page = 20 config.max_per_page = 100 config.window = 4 config.outer_window = 0 end

b. ビューのカスタマイズ

Kaminariのデフォルトテンプレートをカスタマイズするには:

bash
rails g kaminari:views default

これにより、app/views/kaminari/ 以下にHTMLテンプレートが生成され、見た目を自由に変更できます。


4. その他の活用ポイント

  • 検索(Ransackなど)と組み合わせて使うことで、検索結果に対してもページネーションを適用できます。

  • APIレスポンスとして使う場合は、JSONにページ情報(current_page, total_pagesなど)を含めることでフロントエンドと連携可能です。


まとめ

Kaminariを使うことで、Railsアプリケーションに効率的にページネーションを導入できます。ユーザー体験の向上とサーバー負荷の軽減の両方に貢献するため、リスト表示が発生する多くの場面で有用な機能です。なお、同様のGemに will_paginate もありますが、Kaminariの方がカスタマイズ性に優れています。

ChatGPT4o 生成日:2025/06/21