イマドキのオススメ gem on Rails

# はじめに
※ この文章は永遠のベータ版です。定期的にアップデートする予定。

ググったりQiita / Zenn の記事を見たり、していると、以前は利用者が
そこそこいて開発もアクティブだったものの、今は最早メンテナンスすら
されていない(放置されている)Railsのメジャー・バージョンUP への  
追従の怪しい gem が 使われたりしている ので、イマドキのオススメgem
を まとめてみます。

Railsに限らずアプリを開発する際には、利用しようとしている or
しているライブラリの開発・メンテナンスがアクティブかどうか
継続的な開発・メンテナンスが 期待できるか、への注意が必要です。

利用しようとしているorしているライブラリの開発・メンテナンスが
非アクティブ or 開発・メンテナンスの継続性に不安がある なら、
(利用しようとしているなら)そのライブラリの採用を見合わせる or
(利用しているなら)同等の機能を提供する継続的な開発・メンテナンスの
期待できる他のライブラリに移行する、のが無難です。

# ログイン認証

| 名前 | オススメ度 | アクティブ| 備考 |
|:-:|:-:|:-:|:-:|
| Devise |○| ✔︎ ||
| jwt_sessions |△| ✔︎ ||
| Sorcery |✕| ✖️ ||


## Devise

https://github.com/heartcombo/devise

## jwt_sessions

https://github.com/tuwukee/jwt_sessions

https://qiita.com/Moo_Moo_Farm/items/65aaa2ac7f8cef50fca6

https://fujiten3.hatenablog.com/entry/2019/07/13/130459

## Sorcery

https://github.com/Sorcery/sorcery

https://qiita.com/motoyasu-yamada/items/9894195c40172bd43a0a

近年、主要開発者がリアルで忙しく、1.0に向けた開発や
0.xのメンテナンスが停滞、2024/09からコントリビュータ募集中。
新しい開発体制に移行できるか不明。

https://zenn.dev/prevent/articles/db14cd42b18912

# ログイン認証プロバイダ

| 名前 | オススメ度 | アクティブ| 備考 |
|:-:|:-:|:-:|:-:|
| Doorkeeper |○| ✔︎ ||

## Doorkeeper

https://github.com/doorkeeper-gem/doorkeeper

# ページング

| 名前 | オススメ度 | アクティブ| 備考 |
|:-:|:-:|:-:|:-:|
| Pagy |◎| ✔︎ ||
| Kaminari |○| ✔︎ ||

## Pagy

https://github.com/ddnexus/pagy

高速＆省メモリーなページング・ライブラリ。
Kaminariより省メモリ＆高速に動作。


## Kaminari

https://github.com/kaminari/kaminari

和製ページング・ライブラリ。多機能。

# ファイル・アップローダ

| 名前 | オススメ度 | アクティブ| 備考 |
|:-:|:-:|:-:|:-:|
| Shrine |◎| ✔︎ ||
| CarrierWave |○| ✔︎ ||
| ActiveStorage |○| ✔︎ | Rails公式 |
| Paperclip | △ | ✖️ | 公式は開発終了 |
| Refile | ✕ | ✖️ |PRほったらかし|


## Shrine

https://shrinerb.com

CarrierWave・Refileのいいとこ取りな後発アップローダ。オススメ。
CarrierWave・Refileからの移行パスあり。

## CarrierWave
https://github.com/carrierwaveuploader/carrierwave

老舗アップローダ。設計に(やや？)古い感あり。老舗ゆえの安心感？で、  
広く利用されている。

## ActiveStorage
https://github.com/rails/rails/tree/main/activestorage

Railsビルトインのアップローダ。

(一時)ファイルのキャッシュ機能がないので、アップロードしたファイル
のDBでの永続化前の事前プレビューを行いたいケースでは、ダイレクト・
アップロード(JSを介してアプリのバックエンドをバイパスし、クラウド・
ストレージに直接アップロードする)機能を利用することになります、
ダイレクト・アップロード機能はアプリの設計によって(アプリのバック
エンドでアップロード時にアップロードしたファイルの加工etcを行いたい
場合etc)は採用できません。デフォルトでは、ファイル・アップロードを
含むフォームでのバリデーションエラー時にファイルの再アップロードが
必要になるので、注意が必要です。

## Paperclip
https://github.com/thoughtbot/paperclip

CarrierWave と双璧をなしていたアップローダ。

ActiveStorage のリリースに伴い、開発終了。  

https://thoughtbot.com/blog/closing-the-trombone

有志によるメンテナンスは存在しますが、新規開発のプロジェクトで
採用してはいけません。

https://github.com/kreeti/kt-paperclip

## Refile
https://github.com/refile/refile

CarrierWave の原作者が、一時期、後継としてスクラッチから開発  
していた アップローダ。

ActiveStorageのリリース(CarrierWaveからの移行パスが用意されて  
おらず、移行が進まなかったことも？)により？原作者が意欲を失い、  
開発が停滞。

現在、メンテナンスを引き継いだ？メンテナも関心を失い、放置中。  
Ruby3 / Rails7 以降への対応は期待できない。

# フロントエンドFW連携

| 名前 | オススメ度 | アクティブ| 備考 |
|:-:|:-:|:-:|:-:|
| Turbo Mount |○| ✔︎ ||

## Turbo mount

https://github.com/skryukov/turbo-mount

Vue.js/Svelte/React のコンポーネントを
Hotwireを採用したページに埋め込むことを
可能にするヘルパーライブラリ。

https://techracho.bpsinc.jp/hachi8833/2025_03_07/148685

# JSONシリアライザ

| 名前 | オススメ度 | アクティブ| 備考 |
|:-:|:-:|:-:|:-:|
|Alba|◯|✔︎||
|JSON:API Serialization Library|△|✖️|JSON:API対応|
|Jb|△|✔︎||
|Jbuilder|△|✔︎||
| BluePrinter |✕|✔︎||
| ActiveModelSerializers |✕|✖️||

## Alba
https://okuramasafumi.github.io/alba/

https://github.com/okuramasafumi/alba

後発の和製JSONシリアライザ、高速な？シリアライズが特徴。

https://okuramasafumi.hatenablog.jp/entry/2021/12/03/144055
https://zenn.dev/okuramasafumi/articles/53fcee0f946ac3
https://qiita.com/okuramasafumi/items/b58fd80243c524c0965a

## JSON:API Serialization Library
https://github.com/jsonapi-serializer/jsonapi-serializer

JSON:API(仕様)に対応し、高速なシリアライズが特徴の、
JSONシリアライザ。

Netflixの開発していた Fast JSON API が開発・メンテナンスを
終了したので、有志により fork され、開発・メンテナンスが継続。

https://github.com/Netflix/fast_jsonapi

JSON:API(仕様)にしか対応していないのが難点。

現在、メンテナンスモード、というか、開発終了。

## Jb
https://github.com/amatsuda/jb

和製JSONシリアライザ、高速なシリアライズが特徴。
jbuilderのオルタナティブで、複雑なJSONの組み立てには不向き。
jbuilderよりシンプルに記述できる。

## Jbuilder
https://github.com/rails/jbuilder

RailsビルトインのJSONシリアライザ。低速。
記述に用いるDSLにクセがある。
複雑なJSONの組み立てには不向き。

## BluePrinter
https://github.com/procore/blueprinter

JSONシリアライザ、クセがある、DSLにJSONの構造とは直接
関係しない view がある、等。

開発・メンテナンス、一時期、停滞していたものの、
その後、再開されています。

## ActiveModelSerializers (AMS)
https://github.com/rails-api/active_model_serializers

老舗のJSONシリアライザ。コードベースが大きくて複雑なため、低速。
(Jbuilderよりは高速に動作。)

開発・メンテナンス、アナウンスはないものの、終了している。