はじめに
※ この文章は永遠のベータ版です。定期的にアップデートする予定。
ググったりQiita / Zenn の記事を見たり、していると、以前は利用者が
そこそこいて開発もアクティブだったものの、今は最早メンテナンスすら
されていない(放置されている)Railsのメジャー・バージョンUP への
追従の怪しい gem が 使われたりしている ので、イマドキのオススメgem
を まとめてみます。
Railsに限らずアプリを開発する際には、利用しようとしている or
しているライブラリの開発・メンテナンスがアクティブかどうか
継続的な開発・メンテナンスが 期待できるか、への注意が必要です。
利用しようとしているorしているライブラリの開発・メンテナンスが
非アクティブ or 開発・メンテナンスの継続性に不安がある なら、
(利用しようとしているなら)そのライブラリの採用を見合わせる or
(利用しているなら)同等の機能を提供する継続的な開発・メンテナンスの
期待できる他のライブラリに移行する、のが無難です。
ログイン認証(クライアント)
名前 | オススメ度 | アクティブ | 備考 |
---|---|---|---|
Devise | ○ | ✔︎ | |
Sorcery | △ | △ | |
jwt_sessions | △ | ✔︎ |
Devise
Sorcery
近年、主要開発者がリアルで忙しく、1.0に向けた開発や
0.xのメンテナンスが停滞、2024/09からコントリビュータ募集中。
新しい開発体制に移行できるか不明。
jwt_sessions
ログイン認証プロバイダ
名前 | オススメ度 | アクティブ | 備考 |
---|---|---|---|
Doorkeeper | ○ | ✔︎ |
Doorkeeper
ページング
名前 | オススメ度 | アクティブ | 備考 |
---|---|---|---|
Pagy | ◎ | ✔︎ | |
Kaminari | ○ | ✔︎ |
Pagy
高速&省メモリーなページング・ライブラリ。
Kaminariより省メモリ&高速に動作。
Kaminari
和製ページング・ライブラリ。多機能。
ファイル・アップローダ
名前 | オススメ度 | アクティブ | 備考 |
---|---|---|---|
Shrine | ◎ | ✔︎ | |
CarrierWave | ○ | ✔︎ | |
ActiveStorage | ○ | ✔︎ | Rails公式 |
Paperclip | △ | ✖️ | 公式は開発終了 |
Refile | ✕ | ✖️ | PRほったらかし |
Shrine
CarrierWave・Refileのいいとこ取りな後発アップローダ。オススメ。
CarrierWave・Refileからの移行パスあり。
CarrierWave
老舗アップローダ。設計に(やや?)古い感あり。老舗ゆえの安心感?で、
広く利用されている。
ActiveStorage
Railsビルトインのアップローダ。
(一時)ファイルのキャッシュ機能がないので、アップロードしたファイル
のDBでの永続化前の事前プレビューを行いたいケースでは、ダイレクト・
アップロード(JSを介してアプリのバックエンドをバイパスし、クラウド・
ストレージに直接アップロードする)機能を利用することになります、
ダイレクト・アップロード機能はアプリの設計によって(アプリのバック
エンドでアップロード時にアップロードしたファイルの加工etcを行いたい
場合etc)は採用できません。デフォルトでは、ファイル・アップロードを
含むフォームでのバリデーションエラー時にファイルの再アップロードが
必要になるので、注意が必要です。
Paperclip
CarrierWave と双璧をなしていたアップローダ。
ActiveStorage のリリースに伴い、開発終了。
有志によるメンテナンスは存在しますが、新規開発のプロジェクトで
採用してはいけません。
Refile
CarrierWave の原作者が、一時期、後継としてスクラッチから開発
していた アップローダ。
ActiveStorageのリリース(CarrierWaveからの移行パスが用意されて
おらず、移行が進まなかったことも?)により?原作者が意欲を失い、
開発が停滞。
現在、メンテナンスを引き継いだ?メンテナも関心を失い、放置中。
Ruby3 / Rails7 以降への対応は期待できない。
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 がある、等。
開発・メンテナンス、アナウンスはないものの、終了している。
(PRは放置ぎみ。メンテナによりコメントされている場合あり。)
ActiveModelSerializers (AMS)
老舗のJSONシリアライザ。コードベースが大きくて複雑なため、低速。
(Jbuilderよりは高速に動作。)
開発・メンテナンス、アナウンスはないものの、終了している。