この投稿は、弊社が提供するWESEEK TECH通信の一環です。
WESEEK TECH通信とは、WESEEKのエンジニアがキャッチアップした技術に関する情報を、techブログを通じて定期的に発信していくものです。
はじめに
Rails での Web アプリケーション開発において欠かすことのできない gem について、必須級なものからマイナーなものまでよく使う順で一挙ご紹介します。
まず gem とは何か
gem とは Ruby で書かれたパッケージのことを指します。
パッケージとは、ある特定の機能を持ったコンピュータプログラムを他のプログラムから呼び出して利用できるように部品化し、そのようなプログラム部品を複数集めて一つのファイルに収納したものです。
一般的には bundler というパッケージ管理システムを用いて gem を管理します。
bundler は Node.js でいう npm に該当します。
パッケージを用いることで必要な機能を1から実装する必要がなくなるため、開発効率が大きく向上します。
多くの gem パッケージが RubyGems で管理されており、以下のサイトから gem の検索を行うことができます。
https://rubygems.org/
ちなみに自分で作成した gem を公開することも可能です。
よく使う gem 一覧
rspec-rails
rspec-rails とは RSpec と呼ばれるテストフレームワークを Ruby on Rails に導入する gem です。
RSpec を用いることによりコマンドの実行でテストの実行を行うことができます。
クラスやメソッド単位でテストを行うことができるため扱いやすいです。
https://github.com/rspec/rspec-rails
factory_bot_rails
factory_bot_rails はテストのサンプルデータを簡単に作成することができるメソッドを提供してくれる gem です。
そのため、rspec-rails とセットでよく使われます。
https://github.com/thoughtbot/factory_bot_rails
rubocop
rubocop は Ruby の静的コード解析をする gem です。
実行することで Ruby コードをチェックすることができ、コードを整形したり警告を出してくれます。
例えばインデントを空け忘れると実行時にこのような警告を出してくれます。
Gemfile:44:25: C: Layout/SpaceAfterColon: Space missing after colon.
gem 'rubocop', require:false
^
https://github.com/rubocop/rubocop
pry-rails
pry-rails は Rails 用に使われるデバックツールです。
コード内に binding.pry を記述した行で処理を中断させ、その行でコンソールと同じ操作を行うことができます。
https://github.com/rweng/pry-rails
activeadmin
activeadmin は簡単に管理画面を作りたいときに使える gem です。
activeadmin を用いることで、モデルの CRUD(Create, Read, Update, Destroy) 画面を非常に簡単に作成することができます。
デフォルトの設定だとこんな感じの画面を作成できます。
https://github.com/activeadmin/activeadmin
cancancan
cancancan は権限周りの管理をする gem です。
特定のユーザーのアクセスを制限したり、画面ごとに表示可能な権限を設定することができます。
https://github.com/CanCanCommunity/cancancan
devise
devise はアカウント登録、ログイン、ログアウトなどの認証機能を追加できる gem です。
これにより簡単に安全な認証機能を実装できます。パスワード変更や、メール認証の機能もあります。
https://github.com/heartcombo/devise
annotate
annotate はファイルにモデルの情報をコメントとして書き出してくれる gem です。
どんなカラム構成になっているかひと目で分かるため非常に便利です。
# == Schema Info
#
# Table name: line_items
#
# id :integer(11) not null, primary key
# quantity :integer(11) not null
# product_id :integer(11) not null
# unit_price :float
# order_id :integer(11)
#
class LineItem < ActiveRecord::Base
belongs_to :product
end
https://github.com/ctran/annotate_models
bullet
bullet はアプリケーションの開発中にクエリを監視し、N+1 問題が発生した時に通知をします。
N+1 問題というのは、ループ処理の中で余分なクエリを発行してしまいパフォーマンスが低下してしまう問題のことです。
これを解消しアプリケーションが行うクエリの数を減らすことで、アプリケーションのパフォーマンスを向上させることができます。
https://github.com/flyerhzm/bullet
rails-i18n
rails-i18n はロケールファイルに翻訳ファイルを設置することで、 Web アプリケーションを国際化(internationalization)させることができます。
https://github.com/svenfuchs/rails-i18n
dotenv-rails
dotenv-rails を導入することで環境変数を扱えるようになります。
プロジェクトのルートディレクトリに .env ファイルを用意し、ここに変数を定義することで自動で読み込まれます。
https://github.com/bkeepers/dotenv
kaminari
kaminari はページネーション機能を簡単に実装できる gem です。
https://github.com/kaminari/kaminari
whenever
whenever は crontab を管理する gem です。
whnever を使って cron を作成することで、rake task などのジョブを定期的に実行できるようになります。
https://github.com/javan/whenever
まとめ
今回は 14 個の gem を紹介させていただきました。
どれも Web アプリケーション開発においてはよく使う gem となっていますので、是非使ってみてください。