114
134

More than 3 years have passed since last update.

【26選】駆け出しRailsエンジニアが押さえておきたいgem大全

Last updated at Posted at 2020-01-02

はじめに

つい最近、Railsエンジニアとしてインターンを始めてからの業務経験が1年を超えました。業務未経験からweb系の自社開発企業に入ったとき、「うわっ...、私の知らないgem多すぎ?」と愕然としたことを覚えています。

そこから必死に業務に食らいつき、知らなかった数々のgemについて知見を深めてきました。今では、知らないgemでもドキュメントを読めばインストール・カスタマイズがだいたいできるようになりました。

ということで今回は、業務未経験からRailsエンジニアになった方が、現場に入ったときに最低限これさえ押さえていけばOKというgemを解説や参考記事つきで紹介したいと思います!

昔の自分がこの記事を読んだら、「ありがてえ、ありがてえよ...」と思うことうけあいです!

gem一覧

フロントエンド系

sass-rails

slim-rails

haml

解説

基本的に、cssはscss,もしくはsassという拡張言語で書きます。

HTMLに関しては、erbで書くこともあるのですが、slim,またはhamlという拡張言語で書くことのほうが多いかなと思われます。僕はプログラミングスクールでerbを勉強したのですが、インターン先ではhamlでviewが書かれていて、「うっわ、こんなに簡単にHTMLが書けるんや!」とびっくりしました。

参考までに、erb,haml,slimで同じコード、css,scss,sassで同じコードを書いてみます。

sample.html.erb
<ul class="user-list" id="list">
  <% @users.each do |user| %>
    <li>
      <p>
        <%= user.name %>さん。
      </p>
    </li>
  <% end %>
</ul>
sample.html.haml
%ul.user-list#list
  - @users.each do |user|
    %li
      %p = user.name
sample.html.slim
ul.user-list#list
  - @users.each do |user|
    li
      p = user.name

sample.css
.user-list {
  padding: 10px;
}

.user-list li {
  padding-right: 15px;
}

.user-list li p {
  font-size: 16px;
  font-weight: bold;
}

sample.scss
.user-list {
  padding: 10px;
  li {
    padding-right: 15px;
    p {
      font-size: 16px;
      font-weight: bold;
    }
  }
}
sample.sass
.user-list
  padding: 10px
  li
    padding-right: 15px
    p
      font-size: 16px
      font-weight: bold

参考記事

RailsのHTMLテンプレートエンジン、Slimの基本的な記法

これからはcssはSassで書こう。

ユーザー登録系

devise

sorcery

解説

プログラミングスクールのカリキュラムやRailsの参考書などでは、ユーザー登録機能を1から自力で実装することが多いと思いますが、実務ではそのような車輪の再発明はしません。ユーザー登録機能では、deviseがデファクトスタンダードで、二番手でsorceryが出てくる、といった感じです。僕はdeviseしか使用した経験がありません。

ちなみに、deviseはそのセットアップの簡易性ゆえにめちゃくちゃ便利なんですが、カスマイズの幅が無限大で、時々カオスになるため、deviseは沼という言説が流布しています。

参考記事

[Rails] deviseの使い方(rails5版)

権限管理系

cancancan

pundit

解説

企業では、エンジニア以外の社員もプロダクトを触ったりするため(自社メディアで記事を書いくなど)、様々な権限をもつユーザーを生成することがよくあります。

そういうときに出てくるのが上述したgemです。例えば、権限がadminのユーザーはなんでもできる、権限がwriterのユーザーは記事の執筆ができる、権限がnormalのユーザーは外部向け、なんて分類が簡単にできるようになります。

管理者画面系

rails_admin

active_admin

administrate

解説

実務では、プロダクトを運営する際に、管理者画面というものを扱うことになります。そこからデータを投入したり、データを分析したりします。非エンジニアもエンジニアも触る画面のため、使用方法などがわかりやすくある必要があるのがポイントです。

僕はrails_adminactive_adminを使用したことがありますが、どちらも一長一短(でした。個人的にはactive_adminのほうが好きです。

結局の所は、設定の簡単さとカスタマイズの簡単さのトレードオフなので、プロダクトの仕様や開発の進捗度合いなどを考えてgemを選択する必要があるかなという感じです!

参考記事

rails管理画面系gem比較してみた

開発効率アップ系

annotate

解説

モデルやルーティングの情報を書き出してくれるgemです。

これを使うと、
- rails routesをしてルーティングを確認
- db/schema.rbを見て、モデルの情報を確認

といった作業から開放されます!

参考記事

【Rails】annotateの使い方

bullet

解説

僕は駆け出しの頃、N+1問題をよく発生させてました。僕は駆け出しの頃、そもそもN+1問題の存在すら知らなかったです(社員の方にコードレビューで指摘してもらい初めてN+1問題を知りました)。

N+1問題とは、要はSQLのクエリーが必要以上に発行されてしまって動作が遅くなるということなんですが、このbulletというgemは、そのN+1問題を検知してくれる頼れるヤツなんです。

rollbar

解説

ローカルで動作確認はした、テストコードは書いた、そんな場合でも、本番環境でエラーが発生してしまうことはあります。

そういうときに便利なのがエラー検知ツールで、そのうちの一つがこのrollbarでございます。Slackと連携して、エラーが起きたらSlackに自動通知、といったこともできます。

参考記事

運用に耐えるRailsによるWebアプリケーションの作り方

デバッグ系

web-console

pry

解説

ローカルで開発をしているとき、エラーにぶち当たることは日常茶飯事です。エラーをデバッグするときに便利なのが、上で紹介しているgemたちです。

参考記事

web-console を使えば Rails App のデバックが楽になる

スクレイピング

nokogiri

解説

RailsでスクレイピングといったらNokogiri、そんな感じのgemです。僕はこのgemを使ってエロサイトを作ったりしてました。

参考記事

Rails×スクレイピングでインスタ風エ○サイトをリリースしました!

画像系

cloudinary

carrierwave

解説

画像をゴニョゴニョするときには、だいたいこいつらを使います。画像サイズを変更したり、本番環境でAWSのS3にアップロードしたり、そういうことができます。

ページネーション

kaminari

解説

ページネーションがまさにkaminariの早さで実装できます。

多言語対応

i18n

解説

例えばAdminUserモデルを作ったときに、AdminUserに対して、どういう言葉を当てるでしょうか。ユーザーでしょうか、管理者でしょうか、アドミンでしょうか、アドミンユーザーでしょうか。

仮にそのサービスで世界規模でバズり、英語圏のみならず、フランス語圏やスペイン語圏などにも広まった場合、どうするでしょうか。

i18nは、そういうサービス上の用語に対して一覧で訳語を当てることができます。このgemを使うことで、DRYかつスケールするようにできるわけですね。

参考記事

i18nについて

環境変数・秘密鍵管理

dotenv

解説

環境変数やら秘密鍵やらを管理するのに使います。

参考記事

Pathを通すとは、環境変数とは

テスト

rspec

factory_bot

解説

今でこそ告白しますが、インターンとして働くようになるまで、テストコードを書いたことがありませんでした。

しかし、まあ当たり前なんですが、実務でのテストコードの重要性を知り、機能の追加とテストは1セット、ということを実感しました。

Railsで動いているサービスだと、だいたい、上記のgemを使ってテストコードを書きます。
rspecがテストコードを書くためのgem、factory_botがテストをする際のデータ生成のgem、といった感じです。

他にも、テストを書くためにほかのgemを使うんですが、それはrspecでテストを書けば自ずと使うようになるので、わざわざ本記事で紹介はしません。

参考記事

使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」

リンター

rubocop

解説

コードを解析して、非推奨の書き方などを指摘してくれる頼れるヤツです。CircleCIに組み込んで、非推奨の書き方があったら自動的にテストが失敗させる、といったこともできます。

ちなみに僕はvscodeを使ってるのですが、rubocopのプラグインを入れると、リアルタイムでコードを指摘してくれるので、非常に勉強になります。

参考記事

rubocopでrubyコードのベストプラクティスを学ぶ(Rails + Visual Studio Code)

メール送信系

letter_opener

letter_opener_web

解説

メール送信機能を実装するとき、ローカルで使うことになるgemです。

ローカル環境で実在するメールアドレスにメール送信されたらウザいですよね。そういうときにこれらのgemを入れておくと、送信メールをキャッチしてくれるので便利です。

letter_openerletter_opener_webの違いはというと、letter_openerは、メール送信が実行されるたびに別タブを開いてメールの中身を閲覧できます。letter_opener_webは、送信したメールをlocalhost:3000/letter_openerでまとめて閲覧できます。

個人的にはletter_opener_webのほうが使いやすいですね!

参考記事

開発中にrailsから送信したメールを確認する

おまけ

Gatsby.jsで自作のブログを作ってみました。色々記事をアップしていきます!
http://keisukee.com/

114
134
3

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
114
134