13
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

13
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

近年、原作者である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。

13
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
13
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?