【厳選】Rails7でDashboard開発するときの、おすすめgem

管理画面をさくっとつくる場面が増えてきました。
その際に高頻度で使うおすすめのライブラリをまとめてみました。
なので、便利だけど管理画面に限らず使われるようなものは省略します。
正直、オススメ上位は超ド定番です。


# オススメ度： ★★★★★

## 【[ransack](https://github.com/activerecord-hackery/ransack)】 検索
検索を秒殺してくれるすぐれものです。有名すぎるので説明は不要ですが。。。
これ無しで検索をつくろうとすると、model層はかなり肥大化するのではないでしょうか。
まずは、ransackの機能で収まる範囲の検索をつくるのが吉だと思います。

https://github.com/activerecord-hackery/ransack

## 【[kaminari](https://github.com/kaminari/kaminari)】 ページネーション
ページネーションをviewも含め簡単に実装できます。
ransackを入れるなら迷わず入れておきましょう。
bootstrapなどのUIフレームワークにも標準対応してくれているのでありがたいです。

https://github.com/kaminari/kaminari

## 【[cocoon](https://github.com/nathanvda/cocoon)】 一対多の動的なForm生成
1対多のデータ登録、更新フォームをつくるときはまずはこれで対応すると良いと思います。
事前にフォーム10個準備しておくとかでもよいですが、ださいので。。。

https://github.com/nathanvda/cocoon

ちなみにrails6,7は`cocoon-js-vanilla`を使えば導入できます。

https://www.npmjs.com/package/cocoon-js-vanilla

## 【[cancancan](https://github.com/CanCanCommunity/cancancan)】 アクセス権限制御
規模が大きくなるにつれて、かならず出てくる権限制御です。
スクラッチで実装するとどうしても権限の管理があちらこちらに散らばってメンテナンス、保守性が落ちます。
abilityに集約できる本ライブラリでまずは対応するようにしています。

https://github.com/CanCanCommunity/cancancan


punditもおなじぐらい人気ですね。

https://github.com/varvet/pundit

## 【[rails-i18n](https://github.com/svenfuchs/rails-i18n)】 日本語化、多言語化対応

バリデーションメッセージ等定番の文言を日本語化するときは、これをサクッといれちゃえばOKです。

https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml


## 【[active_decorator](https://github.com/amatsuda/active_decorator)】 Presenter (View Logic)
modelや、heplerがカオスになる前に速攻で入れましょう。

https://github.com/amatsuda/active_decorator

Draperも全然ありですね。
私はactive_decoratorを使うのでランクインしました。

https://github.com/drapergem/draper

## 【[omniauth-auth0](https://github.com/auth0/omniauth-auth0)】 ユーザー認証(ログイン、ログアウト等)
[認証基盤サービスAuth0](https://auth0.com/jp)のライブラリです。
以前は、deviseを多用していましたが、最近ではauth0ばかり使っています。
sosial login(google, fb, twwiter)などを簡単に実装でき、
権限管理やSPAとREST API、SSOなどなんでも認証を統合できます。

社内利用等であれば十分に無料プランで対応できます。
ユーザーがスケールするようなサービスでは結構料金が高いので慎重につかってください。

https://github.com/auth0/omniauth-auth0

# オススメ度： ★★★★☆


## 【[paper_trail](https://github.com/paper-trail-gem/paper_trail)】 データの履歴管理
データの変更履歴を残すことができます。
カスタマイズ性も高く、履歴管理には必須といえるでしょう。
データ量が多いテーブルには独自につくることをおすすめします。

https://github.com/paper-trail-gem/paper_trail

## 【[haml](https://github.com/haml/haml)】 HTML(erb)のマークアップ言語
言わずとしれた、マークアップ言語(pugとかjadeとかにあたるもの)です。
オススメするほどかな？と思いましたが、必ず使っているので星4としました。

https://github.com/haml/haml

haml-lint,guard-haml_lintは必ずいれましょう。

https://github.com/sds/haml-lint

https://github.com/yatmsu/guard-haml-lint

## 【[chartkick](https://github.com/ankane/chartkick)】 データビジュアライズ、グラフ化
たった1行で、DBから直接グラフを描画する優れものです。
DBからJS,HTMLまでシームレスにつなげてくれます。
ある程度制限はあるもののちょっとしたグラグの描画は瞬殺できます。
JS周りが大幅改定している、Rails6,7にも対応しているはすごいです。

https://github.com/ankane/chartkick

## 【[blazer]((https://github.com/ankane/blazer))】 データの探索、ダッシュボード化
さくっとデータを探索したり、ビジュアライズしたいときにかなり便利です。
SQLを直接実行できるので、ちょっとしたBIツールとして使えます。
社内運用向けの管理画面では重宝します。

https://github.com/ankane/blazer

# オススメ度： ★★★☆☆

## 【[devise](https://github.com/heartcombo/devise)】 ユーザー認証(ログイン、ログアウト等)
超有名なユーザー認証ライブラリですね。
個人的にはauth0を推すので星3つです。

しかし、ユーザーの招待機能など豊富な機能をかんたんに導入できるのはかなり魅力的です。

https://github.com/heartcombo/devise


## 【[audited](hhttps://github.com/collectiveidea/audited)】 データの変更監視
データを「だれが」、「いつ」、「どうしたか(create,update,delete)」を記録できるシンプルな監視機能です。
変更内容を監視したい場合は、`paper_trail`を使います。

https://github.com/collectiveidea/audited


## 【[ahoy_matey](https://github.com/ankane/ahoy/)】 イベントトラッキング
どのボタンをクリックしたかなどを監視できるツールです。
結構詳細にデータを集めることができます。

https://github.com/ankane/ahoy/

## 【[impressionist](https://github.com/charlotte-ruby/impressionist)】 PV計測
contoroller × actionごとに計測をできます。
ahoy_mateyよりシンプルに計測したいときにオススメ。
エンジニアが頑張ってつくったけど、社内のメンバーに意外と使われていないことはアルアルなどあるので事前にいれておいて、
使用されない機能を削除するときの判断に重宝します。

「この機能つかってますか？」など社内スラックで聞く必要もなくなります。

https://github.com/charlotte-ruby/impressionist


## 【[gon](https://github.com/gazay/gon)】 RubyからJSへデータを渡す
地味に便利なgon、JSに直接データを受け渡すことができます。
jsでデータをゴリゴリ扱い時は、vueやreactを検討しますが、その際にjsへのデータの受け渡しがめんどくさくなり、
REST APIをわざわざ作ったりしなくてよくなるので結構便利です。
(SPA化したくなりますけどね。。)

https://github.com/gazay/gon




# オススメ度： ★★☆☆☆

## 【[auto_html](https://github.com/dejan/auto_html)】 テキストの自動HTML化
ちょっとしたテキストベースのドキュメントをHTMLで表示したいときに便利で、
良きなに改行や画像表示をしてくれます。
markdownなどで書かれていない、社内用のドキュメントを載せたいときなど便利です。

https://github.com/dejan/auto_html

## 【[breadcrumbs_on_rails](https://github.com/weppos/breadcrumbs_on_railsl)】 パンくずリストの自動生成
意外と自分でつくるとめんどくさいのでパンくずリストを自動でつくってくれます。

https://github.com/weppos/breadcrumbs_on_rails

# オススメ度： ★☆☆☆☆

## 【[active_admin](https://github.com/activeadmin/activeadmin)】 管理画面の自動生成
サクッとデータビューイングしたいときに使えますが、いかんせんUIが古臭いのでほとんど使いません。

https://github.com/activeadmin/activeadmin

## 【[rails_admin](https://github.com/railsadminteam/rails_admin)】 管理画面の自動生成
コメントは同上

https://github.com/railsadminteam/rails_admin


## 【[active_link_to](https://github.com/comfy/active_link_to)】 リンクがアクティブか判定
サイドメニューなどで、リンクに'active'とか'selected'とかclassをつける時がありますが、
その処理を自動でやってくれます。
地味ですが、html(erb)コードの見通しがよくなるので意外と良いです。

https://github.com/comfy/active_link_to


# 番外編 - 使ってみたい
つかってみたい、気になっているシリーズです。
## 【[avo](https://github.com/avo-hq/avo)】 管理画面の自動生成
かなり高機能な管理画面をつくれそうです。
無料プランと10000円/サイト(多分買い切り)の有料プランがあるっぽい。

https://avohq.io/

## 【[administrate](https://github.com/thoughtbot/administrate)】 管理画面の自動生成
active_admin、rails_adminより良い感じに使いやすく、カスタマイズ性がたかいらしいです。

> Administrateは、 Rails AdminおよびActiveAdminと同じ問題を解決しますが、サイト管理者により良いユーザーエクスペリエンスを提供し、開発者がより簡単にカスタマイズできるようにすることを目的としています。
https://github.com/thoughtbot/administrate より引用

https://github.com/thoughtbot/administrate


# 最後に
gemのランキングが以下にのっていますので、まだまだ便利なものがのっています。
是非のぞいてみてください。
また、このgemが抜けている！！とかあれば是非コメントいただけると幸いです。

次回は開発系(debug, test,linter等)についてまとめたいと思います。

https://bestgems.org/categories