0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【勉強会参加】Railsを勉強していて「Pagy」というGemを知った話

0
Posted at

Railsを勉強していて「Pagy」というGemを知った話

はじめに

勉強会に参加させていただき、 Pagy(ペイジー)というGemを教えてもらいました。
最初は「kaminari」は、なんとなく知っていましたが、このGemは初めてでした。
この記事では、Rails初学者がPagyを知って学んだことをまとめてみます。

Pagyってなに

Pagyは、Ruby on Rails でページネーション(ページ分け)を実現するためのGemです。
ページネーションというのは、たとえば「投稿一覧を1ページ10件ずつ表示」みたいな仕組みのこと。

他のGemと違うのは、とにかく軽くてシンプルなところだそうです。

  • kaminariの10分の1くらいの軽さで動く
  • 設定が少なく、導入が簡単
  • Bootstrapなどのデザインにも対応

Railsの公式に含まれているわけではないけれど、とても人気が高く、世界中のRails開発者に使われているそうです。

使い方

たとえば、ProductsController の一覧ページにPagyを使いたいとき

# app/controllers/products_controller.rb
include Pagy::Backend

def index
  @pagy, @products = pagy(Product.all)
end

そしてビューでページリンクを出すには以下

<!-- app/views/products/index.html.erb -->
<%= pagy_nav(@pagy) %>

これだけで、ページネーションが完成するようです。
「こんなに簡単にできるのか〜」と思いました。

バージョン43で大きく変わったらしい

調べてみると、Pagyは最近 「43.0.0」 という大きなバージョンアップをしたばかりだそうでした。
GitHubの説明には、こう書かれています

"Pagy version 43 is a complete redesign of the legacy code."
(Pagy 43は完全な再設計です)

中身がほぼ全部作り直されたようですが、「コードは変わっても使いやすさはそのまま」だそうです。

アップグレードガイドを読んでみて思ったこと

公式サイトには、ちゃんと「アップグレードガイド」が用意されていて、古い書き方から新しい書き方への変更例がずらっと載っていました。

たとえば:

pagy_nav(@pagy) @pagy.series_nav
Pagy::DEFAULT[:size] Pagy.options[:slots]
include Pagy::Backend include Pagy::Method

こうやって「何をどう書き換えればいいか」が一覧になっていて、初心者でも迷わずアップデートできるように作られていました。
これを見て、「ドキュメントがわかりやすいGemっていいな」と思いました。

Pagyから学んだこと

1. 軽くてシンプルでも十分

最初は「Gemっていろんな機能があるほうがすごい」と思っていました。でもPagyを見て、"必要なものだけある設計" も大事なんだと気づきました。

2. 名前のつけ方やコードの統一感

@pagy.series_nav とか @pagy.info_tag みたいに、どんな機能か名前からわかるのが気持ちいい。Railsの「わかりやすさ」を大切にしている感じがしました。

3. 開発者がユーザーのことを考えている

アップグレードガイドの中に

"You can safely skip all the rest."(あなたのアプリに関係ない部分はスキップしてOK)

という一文があって、「ちゃんと使う人の立場で書かれてるんだな」と感じました。

まとめ

Pagyを知って、ただ「ページネーションができるGem」というだけじゃなくRailsらしい設計や考え方に触れられた気がします。

  • シンプルであることの強さ
  • 名前や設計のわかりやすさ
  • ドキュメントの丁寧さ

Gemを通して、コード以外の部分(設計や思想)からも学べることがあるとわかりました。
これからもこういうGemを読んで、Railsの世界をもっと理解していきたいです。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?