【Rails入門】初心者が知っておくべき3つのgem

こんにちは! フリーエンジニアの長瀬です。

みなさんはどんなgemを使っていますか?

gemを適材適所で使いこなせるようになれば、開発効率を大幅に上げることができます。

この記事では初心者が知っておくべきgemについて

・Rspec
・Kaminari
・Hirb

という順序で、1つ1つ簡単な実装方法を紹介しながら解説していきます。

どれも初心者が知っておくべきgemなので基本的な使い方を把握しておきましょう。

Rspec

Rspecとは

RspecはRailsでテストをするためのgemで、RailsでテストといえばこのRspecです。

Minitestもありますが、Rspecのほうがユーザーが多く、ソースも豊富です。

Rspecを導入することで、簡単にテスト環境を構築することかできます。

テストは学校の試験とかそういうものではなくて、プログラミングでのテストはコードが期待した通りに動いているのかをチェックすることです。

テストを導入すれば、未然にバグを防げるのでより確実なプログラムを組んでいくことができます。

Rspecで簡単なテストをする方法

それでは、Rspecを使って簡単なテストをしてみましょう。

Rspecを使うために最低限のgemをインストールしておきます。

まずはgemfileに今回使用するgemを記述していきましょう。

Gemfileに以下のコードを入力してください。
[Gemfileに追加する内容]

開発、テスト環境のグループにrspec-railsを、そしてテスト環境のところにdatabase_cleanerを追加してください。

Gemfileに記述できたら、コマンドプロンプトにてbundle installをして、gemをインストールしてください。

次に、Rspecの初期設定をします。

コマンドプロンプトに以下のコードを入力してください。
[Rspecを初期化する]

[実行結果]

これで、Rspecで使用する基本的なファイルが自動的に作成されます。

次に、database_cleanerのgemもインストールしたので、初期設定を行います。

database_cleanerはテストのたびにデータベースを初期化してくれるgemです。

もしも、初期化されなかったらテストデータなのに、そのまま残ってしまいますよね?

それを防ぐためにdatabase_cleanerを使います。

app/spec/support/database_cleaner.rbを作成して以下のコードを入力してください。(supportフォルダとdatabase_cleaner.rbファイルは手動で作成してください。)

[app/spec/support/database_cleaner.rbに記述する内容]

これで、テストのたびにデータベースを初期化してくれます。

では、実際にモデルのテストを実装してみましょう。

今回使用するモデルを作成するためにコマンドプロンプトに以下のコードを入力してください。
[モデルを作成する]

[実行結果]

すでにrspecが有効になっているので、spec/models/post_spec.rbが自動的に作成されたことを確認できます。

それでは、実際にテストをしてみましょう。

spec/models/post_spec.rbの内容をすべて削除してから以下のコードを入力してください。

[spec/models/post_spec.rbに記載する内容]

このテストは、さきほど作成したPostモデルのtitle、contentカラムに値が入っているかチェックするものです。

このコードでは、Post.new以下でtitle,contentに値をいれているので、テストを通過します。

では、テストを実行してみましょう。
コマンドプロンプトに以下のコードを入力してください。

[post_spec.rbに記述したテストを実行する]

[実行結果]

1 example, 0 failuresは、テスト1個に対してテストに失敗したのは0個だったという意味です。

つまり、今回はテストをパスしています。

では、次にspec/models/post_spec.rbを修正してテストに失敗するようにしてみましょう。

あえて、失敗させるために、Post.new以下を削除しました。

そしてもう一度テストを実行してみましょう。
コマンドプロンプトに以下のコードを入力してください。

[post_spec.rbに記述したテストを実行する]

[実行結果]

1 example, 1 failure変わり、テスト1個に対してテストに失敗したのは1個という結果になります。

Postのtitleとcontentに値が入っているのかテストできていることを確認できました。

今回紹介したものはRspecの基本的な機能のほんの一部で、少しでもRspecでテストをする感覚を味わっていただくためのものです。

Rspecを使ったテストの種類は数多くありますので、これを機にRspecでどんなテストができるのか調べてみましょう。

Kaminari

Kaminariとは

KaminariはRailsでページネーションを実現するためのものです。

ページネーションとは、たくさんのデータをページごとに分割して表示することです。

自分で初めからページネーションを実装していくのは手間がかかりますが、Kaminariを使えば簡単にできます。

言葉で説明するよりも、見た方が理解が早いので、早速簡単でサンプルコードで実装してみましょう。

Kaminariでページネーションする方法

それではページネーションを設定していきましょう。

今回はscaffoldを使用して実装していきます。
scaffoldの使い方がよくわからない方はこちらの記事を参考にしてください。

今回使用するモデルを作成するためにコマンドプロンプトに以下のコードを入力してください。
[scafffoldでBookモデルを作成する]

モデルを作成したので、rake db:migrateとコマンドプロンプトに入力してデータベースに反映してください。

次に今回使用するデータを追加していきます。

db/seeds.rbに以下のコードを追加してください。

[db/seeds.rbに追加する内容]

それではrake db:seedを入力して、db/seeds.rbで記述した内容をデータベースに反映してください。

100件のデータの登録を確認できます。

続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

scaffoldではresourcesでソースが割り当てられています。

以下のURLにアクセスして、index.html.erbを開いてください。

http://localhost:3000/books

(補足http://localhost:3000の箇所は各自の開発環境により読み替えてください。)

Screen Shot 2560-07-19 at 21.46.37

このように、1ページに100件のデータが表示されるのを確認できます。

1ページに100件表示するのは多いので、ページネーションを設定して分けてみましょう。

それでは、今回scaffoldで作成されたapp/views/books/index.html.erbのコードを以下のように修正してください。

[app/views/books/index.html.erbを修正する]

次に、コントローラーを設定していきます。

app/controllers/books_controller.rbを開いてindexアクションの内容を以下のようにコードを修正してください。

[app/controllers/books_controller.rbのindexを修正する]

これでページネーションの設定が一通り終わりました。

もう一度、rails serverでサーバーを開いて、確認してみましょう。

http://localhost:3000/books

Screen Shot 2560-07-19 at 21.47.05

このように100件すべて表示されていたのが分割されているのを確認できます。

また、1ページに表示されるのを標準設定の25から他の数値に変えたい場合などKaminariでは詳細設定を変更できます。

Kaminariの詳細設定については本家Githubを確認してください。

参照元:Github kaminari

General Configuration Optionsにオプション設定の項目に詳細設定をする方法が記載されています。

Hirb

Hirbとは

初期設定ではrails consoleでコンソールを使用したときにデータを取り出そうとすると、見慣れている表形式で出力されないので不便です。

そこで、Hirbのgemを使えば、表形式で出力するように簡単に設定できます。

少しデータを確認したいときなど、意外にコンソールにお世話になることは多いです。

なので、積極的にコンソールはカスタマイズしておきましょう。

Hirbで出力結果を変更する方法

では実際にHirbを使ってみましょう。

今回kaminariのところで作成したBookモデルからデータ出力します。

rails consoleでコンソールを起動した後、以下のコードを入力してください。
[コンソールでBookテーブルからデータを出力する]

[実行結果]

このように表形式ではないので、非常に読みづらいデータが出力されます。

ではHirbを設定して出力を表形式へと変更していきましょう。

まずはGemfileに以下に以下のコードを追加してください。

[Gemfileに追加する内容]

では、コマンドプロンプトでbundle installを入力してgemファイルをインストールしてください。

インストールが完了したら、再びrails consoleでコンソールを起動した後、以下のコードを入力してください。

[Hirbを使ってコンソールでBookテーブルからデータを出力する]

[実行結果]

このように、表形式で表示され、データが見やすくなりました。

pryを使ってHirb.enableを自動化する

これでHirbを使って表形式でデータを出力できるようになりましたが、毎回コンソールを開くたびにHirb.enableを入力するのは手間がかかります。

プログラマーとしては毎回同じ動作を手作業でするという無駄はできれば避けたいです。

なので、コンソールを標準のirbからpryに変更してHirb.enableが毎回コンソール起動時に読み込まれるように設定してみましょう。

まずは、コンソールを標準のirbからpryに変更するためGemfile内の開発・テスト環境に以下のコードを追加してください。

[Gemfileに追加する内容]

では、コマンドプロンプトでbundle installを入力してgemファイルをインストールしてください。

インストールが完了したら、Hirb.enableを自動化するために、ルートディレクトリ下に.pryrcという設定ファイルを作成しましょう。(GemfileやGemfile.lockがある場所と同じ場所です。)

そして作成された.pryrcに以下のコードを追加してください。

[Hirb.enableを自動化するために.pryrcに追加する内容]

これで設定が完了しました。

rails consoleでコンソールを起動した後、もう一度以下のコードを入力してください。

[Hirbを使ってコンソールでBookテーブルからデータを出力する]

[実行結果]

このように、Hirb.enableを毎回入力しなくても,表形式で出力できるように設定できました。

Railsを独学で頑張っているけど先が見えない方のために

いや、おれは違うぞ。先のキャリアもしっかり見えてるし、独学の成果も出てきている

そんな方であれば、これから先の話は必要ないでしょう。そっとページの閉じるボタンを押しましょう。

しかし、「先が見えない」と心の底では勘付いているそこの奥さん。この先を読み進めて、一緒に課題を深堀りしていきましょう。

なぜ「先が見えない」という不安や悩みを抱えてしまうのか

さて、「一寸先は闇だ・・・」とお悩みを抱えている方に、なぜ独学でRailsを勉強しているにもかかわらず、そのような現状を抱えてしまうのか、一緒に考えていきましょう。

先が見えない現状を踏まえ、課題として考えられるものは以下のどれかに該当するでしょう。

  • プログラミングの上達が見えない
  • プログラミングを継続できない気がする
  • プログラミングスキルを習得した姿がイメージできない
  • プログラミングスキルを活かした仕事を獲得するイメージができない

これらのどれかに該当することによって、「なんとなくプログラミング学習をしている」という状態になってしまいます。

これらの要因は、三日坊主になる理論と同じなんですが、「プログラミング学習をしなきゃ」とプログラミング学習を頑張ってしまっている状態になってしまっています。

受験勉強をやった経験のある方なら頭がもげるほどに首を縦に振ってしまう方も多いのですが、「今日も5時間勉強するぞ」や「今日はこの章を終わらすぞ」というように、学習を進めることに意識が行き過ぎてしまうと、ある程度学習を継続した後に「先が見えない・・・」となってしまいます。

未来に光を当て、プログラミング学習を「成果が出るもの」にするために

先ほど、「なぜ先が見えないという悩みや不安を抱えてしまうのか」という疑問に対しての答えを示していきました。

これらの課題というのは、独学をしていれば9割の方がぶつかってしまう壁だそうで、いわば、あるあるの現象なのです。

独学をしていて、「なんか前に進めていないぞ」と感じるのはこのせいなんですね。甘く見がちですが、非常にやっかい。

これがさらにやっかいさを極めているのは、上記に挙げた課題のほとんどが、1人で解決できないものばかりだからです。

実は、これらのほとんどが経験者に助けてもらいながら解決しないと、すぐに違う方向へと流れてしまいます。

そう言い切れるのは、以前の私もそうだったからです。

エンジニアやプログラマー関連のキャリアに詳しい方や現役のエンジニアに相談しながら修正を加え、学習を実践して今があります。

そうは言っても、周りにそういう人がいないし・・・

という方もいるでしょう。そういう時にこそ、プログラミングスクールの無料体験レッスンを利用するのです。

営業をかけられて時間の無駄に終わるでしょ?

という考えに辿りついてしまいますよね。結論から言うと弊社では、そういった強引な営業等を行うことはありませんので、安心して受講できます。

「プログラミング学習の先ある未来」を光で明るく照らすには、弊社の無料体験レッスンがぴったりだと断言できます。それくらい無料体験レッスンに自信を持っているのです。

さらに、無料体験レッスンには以下の3大特典もついてきます!

  • 「最短1ヶ月で開発ができる学習方法」電子書籍(非売品)
  • 効率的なオリジナル学習カリキュラム
  • 未経験の転職(フリーランス)を可能にするキャリアサポート

上記の特典だけでも他のスクールにはないポイントだと自信を持っている無料体験レッスン特典です。

ただプログラミング学習をする毎日から、ワクワクしながらプログラミング学習できる毎日に変える体験を一度でいいのでしてみませんか?

無料体験レッスン予約はこちら

まとめ

いかがでしたでしょうか?

この記事では、初心者に知っておくべきgemを3つ解説しました。

今回紹介したものはどれもRailsでの開発の強力な武器になります。

この記事では,簡単な導入しか説明しませんでしたが、これを機にそれぞれのgemの使い方をマスターしてみてはいかがでしょうか?

Railsには今回紹介したもの以外にも数え切れないほどたくさんのgemがあります。

gemを使いこなせれば、開発効率があがるのでたくさんのgemを操れるように学習していきましょう。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

長瀬来

長瀬来

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説