12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2022-03-23

はじめに

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

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

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

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

ログイン認証

名前 オススメ度 アクティブ 備考
Devise ✔︎
Sorcery ✔︎
jwt_sessions ✔︎

Devise

Sorcery

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

2025/06、@willnet氏+他一方が(正式に)メンテナーとして
活動開始されています。

1.0に向けた新しい開発体制へと移行できるか、まだ定かでは
ありませんが、継続的なメンテは期待できるかと思います。

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よりは高速に動作。)

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

環境構築

名前 オススメ度 アクティブ 備考
Dockerfile-rails ✔︎

Dockerfile-rails

既存のRailsプロジェクトから Dockerfile を
作成するジェネレータを提供してくれる gem。

12
7
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
12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?