はじめに
※ この文章は永遠のベータ版です。定期的にアップデートする予定。
ググったりQiita / Zenn の記事を見たり、していると、以前は利用者がそこそこいて開発もアクティブだったものの、今は最早メンテナンスすらされていない(放置されている)&Railsのメジャー・バージョンUP への追従の怪しい gem が 使われたりしているので、イマドキのオススメgemをまとめてみます。
Railsに限らずアプリを開発する際には、利用しようとしている or しているライブラリの開発・メンテナンスがアクティブかどうか、継続的な開発・メンテナンスが 期待できるか、への注意が必要です。
利用しようとしているorしているライブラリの開発・メンテナンスが非アクティブ or 開発・メンテナンスの継続性に不安があるなら、(利用しようとしているなら)そのライブラリの採用を見合わせる or (利用しているなら)同等の機能を提供する継続的な開発・メンテナンスの期待できる他のライブラリに移行する、のが無難です。
ログイン認証
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| Devise | ○ | ✔︎ | |
| Sorcery | △ | ✔︎ | |
| jwt_sessions | △ | ✖️ |
Devise
Sorcery
近年、原作者であるJosh Buker氏を含め主要開発者がリアルで忙しく、1.0に向けた開発や0.xのメンテナンスが停滞、2024/09からコントリビュータ募集中。
2025/06、@willnet氏+他一方が(正式に)メンテナーとして活動開始されています。
1.0に向けた新しい開発体制へと移行できるか、まだ定かではありませんが、継続的なメンテは期待できるかと思います。
20025/12現在、Josh Buker氏(原作者)が停滞していたsorcery-reworkリポジトリ(1.0開発)での開発を再開されています。
1.0に向けたバージョンは、プログラムの構造的には、0.18以前とは、別物となります。
0.18用の現行のテストが整備され、そのテストが1.0に向けた開発でも利用される予定なので、後方互換性(データの互換性含む)は、担保されるはずです。
2025/12現在、新規プロジェクトでの採用は控えたほうが無難です。
jwt_sessions
ログイン認証プロバイダ
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| Doorkeeper | ○ | ✔︎ |
Doorkeeper
ページング
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| Pagy | ◎ | ✔︎ | |
| Kaminari | ○ | ✔︎ |
Pagy
高速&省メモリーなページング・ライブラリ。
Kaminariより省メモリ&高速に動作。
Kaminari
和製ページング・ライブラリ。多機能。
ファイル・アップローダ
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| Shrine | ◎ | ✔︎ | |
| CarrierWave | ○ | ✔︎ | |
| ActiveStorage | ○ | ✔︎ | Rails公式 |
| Paperclip | △ | ✖️ | 公式は開発終了 |
| Refile | ✕ | ✖️ | PRほったらかし |
Shrine
CarrierWave・Refileのいいとこ取りな後発アップローダ。
オススメ。CarrierWave・Refileからの移行パスあり。
CarrierWave
老舗アップローダ。設計に(やや?)古い感あり。老舗ゆえの安心感?
で、広く利用されている。
ActiveStorage
Railsビルトインのアップローダ。
デフォルトでは、バリデーション機能がないため、Active Storage Validations と併用します。
(一時)ファイルのキャッシュ機能がないため、デフォルトでは、ファイル・アップロードを含むフォームでのバリデーションエラー時にファイルの再アップロードが必要になるので、注意が必要
です。
バリデーションエラー時にアップロードしたファイルを保持したい or アップロードしたファイルのDBでの永続化前の事前プレビューを行いたいケースでは、ダイレクト・アップロード(JSを介してアプリのバックエンド(のバリデーション)をバイパスし、(クラウド・)ストレージに直接アップロードする)機能を利用することになります。
ダイレクト・アップロード機能はアプリの設計によって(アプリのバックエンドでアップロード時にアップロードしたファイル自体を加工etcしたい場合etc)は採用できません。
Paperclip
CarrierWave と双璧をなしていたアップローダ。
ActiveStorage のリリースに伴い、開発終了。
有志によるメンテナンスは存在しますが、新規開発のプロジェクトで採用してはいけません。
Refile
CarrierWave の原作者が、一時期、後継としてスクラッチから開発していた アップローダ。
ActiveStorageのリリース(CarrierWaveからの移行パスが用意されておらず、移行が進まなかったことも?)により?原作者が意欲を失い、開発が停滞。
現在、メンテナンスを引き継いだ?メンテナも関心を失い、放置中。
Ruby3 / Rails7 以降への対応は期待できない。
フロントエンドFW連携
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| Turbo Mount | ○ | ✔︎ |
Turbo mount
Vue.js/Svelte/React のコンポーネントを Hotwireを採用したページに埋め込むことを可能にするヘルパーライブラリ。
JSONシリアライザ
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| Alba | ◯ | ✔︎ | |
| JSON:API Serialization Library | △ | ✖️ | JSON:API対応 |
| Jb | △ | ✔︎ | |
| Jbuilder | △ | ✔︎ | |
| BluePrinter | ✕ | ✔︎ | |
| ActiveModelSerializers | ✕ | ✖️ |
Alba
後発の和製JSONシリアライザ、高速な?シリアライズが特徴。
JSON:API Serialization Library
JSON:API(仕様)に対応し、高速なシリアライズが特徴の、JSONシリアライザ。
Netflixの開発していた Fast JSON API が開発・メンテナンスを終了したので、有志により fork され、開発・メンテナンスが継続。
JSON:API(仕様)にしか対応していないのが難点。
現在、メンテナンスモード、というか、開発終了。
Jb
和製JSONシリアライザ、高速なシリアライズが特徴。
jbuilderのオルタナティブで、複雑なJSONの組み立てには不向き。
jbuilderよりシンプルに記述できる。
Jbuilder
RailsビルトインのJSONシリアライザ。低速。
記述に用いるDSLにクセがある。
複雑なJSONの組み立てには不向き。
BluePrinter
JSONシリアライザ、クセがある、DSLにJSONの構造とは直接関係しない view がある、等。
開発・メンテナンス、一時期、停滞していたものの、その後、再開されています。
ActiveModelSerializers (AMS)
老舗のJSONシリアライザ。コードベースが大きくて複雑なため、低速。
(Jbuilderよりは高速に動作。)
開発・メンテナンス、アナウンスはないものの、終了している。
タギング(タグ付け・管理)
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| No Fly List | ◎ | ✔︎ | |
| Acts As Taggable On | ○ | ✔︎ |
Acts As Taggable On (AATO)
老舗タグ付け・管理ライブラリ。設計に古い感あり。広く利用されている。
No Fly List (NFL)
Acts As Taggable On のメンテナAbdelkader Boudih(seuros)氏が、後継?として再設計して開発しているタグ付け・管理ライブラリ。
Acts As Taggable Onよりパフォーマンスetcの面で優れている。
テーブル・データ構造は、Acts as Taggable onとほぼ互換なので、容易に移行可能です。
要Rails 7.2以降。
PostgreSQL、MySQL、SQLite3 対応。
環境構築
| 名前 | オススメ度 | アクティブ | 備考 |
|---|---|---|---|
| Dockerfile-rails | ◯ | ✔︎ |
Dockerfile-rails
既存のRailsプロジェクトから Dockerfile を
作成するジェネレータを提供してくれる gem。