【rails】初心者でも使えるGem8選

どうも、ちーず([@cheez921](https://twitter.com/cheez921))です。
最近はデザインやフロントからちょっとだけ離れてみてRuby on Railsを主に勉強しています。
本音はswiftでiosアプリを早く作ってみたいんですけど、なんか最近めっちゃrailsに縁があるんですよ、なぜか。

今回は、railsを勉強していくなかでgemの豊富さにとっても感動したので、**初心者でも使えるGem8選**ということで記事をかかせていただきます！

## Gemとは？ インストールの方法など簡単に。
gemとは、Rubyで書かれたプログラムをパッケージ化したものです。
また、gemを組み合わせて使うには、**Bundler**を使うと良いです。
Bundlerはgem同士の互換性を保ちながら各gemの導入、管理を行ってくれるgemです。
今回はBundlerを用いてgemをインストールしていきます。

#### Gemfile生成
`bundle init`

#### Gemfileを編集
```Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem 'rails', '~> 5.1.4'
gem "devise"
gem "kaminari"

︙
```
こんな感じに
`gem ライブラリ名 [, バージョン, オプション]`
って書いて行きます。
バージョンやオプションの書き方はこちらから。
http://railsdoc.com/references/gemfile

#### gem をインストール
bundlerで普通にインストールすると、自分のPCの環境を汚しちゃうので、パスを指定するとよいです。
`bundle install --path vendor/bundle`
これでvendor/bundleディレクトリ内にgemがインストールされます。
(このあとrailsコマンドを使うとき`bundle exec`を先頭につけなきゃいけなくてめんどくさいのでaliasをきっておくとよいでしょう。)

これで準備はokです。
ここからgemを8つ紹介していきます。

## 1. devise
Github: https://github.com/plataformatec/devise

deviseは、ログイン認証機能の全般を担ってくれるgemです。
会員登録からログイン、パスワード変更など必要なページの管理等が簡単に行うことができます。
ログイン認証が必要なサービスを作るときにはdevise使ってログイン認証周りの開発コストをかけずに済ますことができます。

使い方等はこの記事がわかりやすかったので、参考に。
https://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74

## 2. kaminari
Github: https://github.com/kaminari/kaminari

めちゃくちゃ簡単にページネーションができるgemです。
railsのgemの中では大定番みたい。

少し古い記事ですが、ここらへんが圧倒的にわかりやすいので、参考に。
https://qiita.com/nysalor/items/77b9d6bc5baa41ea01f3
http://ruby-rails.hatenadiary.com/entry/20141113/1415874683

## 3. ransack
Github: https://github.com/activerecord-hackery/ransack

Railsアプリで検索機能を実装するときに役に立つgem。
複雑な検索機能も実装することが可能です。

英語ですが、rails5で書かれておりわかりやすい。
https://richonrails.com/articles/basic-search-using-ransack

あと古い記事ですが、このgemを使う流れがすごくわかりやすかったので。
https://qiita.com/LuckOfWise/items/e020e896e71d47d0c6a4

## 4. cancancan
Github: https://github.com/CanCanCommunity/cancancan

ユーザーの権限管理をしたいときに使えるgemです。
1番上のdeviseとうまく使って、ユーザー認証/管理ができるとちょっとリッチなアプリができますね。
自分も、とあるインターンで社員情報管理アプリを作成する時にお世話になりました！
特にこの記事にお世話になったので、共有します。
https://qiita.com/iamdaisuke/items/79d60b3c23e465ae6460

## 5. sprockets-commoner
Github: https://github.com/Shopify/sprockets-commoner

railsでES6が書ける環境を簡単に作れるgemです。
コスト小さく、なるべく環境を壊さずES6の環境を導入できることが特徴だそうです。
以下、参考記事です。
https://qiita.com/itkrt2y/items/18ea41828e1c22fc31e3

## 6. webpacker
Github: https://github.com/rails/webpacker

railsのアプリにwebpackが導入できるgemです。
sprockets-commonerと大きく何がちがうんだ...？って思ったら、すごくwebpackerについてわかりやすい記事をみつけました！
https://qiita.com/itkrt2y/items/69c31e695b1b39915d00

## 7. hirb
Github: https://github.com/cldwalker/hirb

rails consoleでモデル出力時に整形してくれるgemです。
DBのテーブルが画期的にみやすくなるからrails始めた頃に調べて使ってたけど、
sqliteだったら[DB Browser for SQLite](http://sqlitebrowser.org/)、
MySQLだったら[Sequel Pro](https://www.sequelpro.com/)を使います。笑

## 8. acts-as-taggable-on
Github: https://github.com/mbleigh/acts-as-taggable-on

データのタグ管理が簡単にできるgemです。
下記記事を読めば簡単に使えました！
https://qiita.com/ShunjiKato/items/404dac7360ae22ae1ca2

## さいごに
私はgemを導入するときにまずGithubのstarを確認し、**なるべくstarの多いgem**を選ぶようにしています。
あと、**Latest commit**も大事です。あまりcommitされてなかったらrails5に対応しているかしっかり調べてから導入することをおすすめします。
今回は8つのgemを紹介させていただきましたが、もっともっと使えるgemがたくさんあると思います。
なにかオススメなgemがありましたら、コメントを残してくださるとrails初心者としてはかなり嬉しいです。
これからも、もっとgemを開拓して快適なrailsライフを送っていこうとおもいます！！