どうも、かみざとです。
今日は「RSpecを学ばないことに対する疑問」についてお話ししていきます。
RSpecとは、Ruby用のテストコードを記述するためのフレームワークなのですが、初心者の場合、この「テストに関する学習」が出来てないことが多いです。
その理由は、テストについて教えてくれる参考書やスクールがあまり無いから。
だから「テストを学ぶのはとても大事な事なんだ」と意識できる初心者がほとんどいないんですよ。
しかし、現場では必ずと言っていいほどテストを実装することになります。
Railsの現場だと、RSpecがそれにあたりますね。
というわけで、現場に入る上でとても重要なRSpecについて色々お話していきたいと思います。
テストとは
そもそもテストってなんやねん、って話ですよね。
テストとは製品の「品質」を保証するために行うもので、具体的には製品の1つ1つの機能に対して正常に動作しているかをチェックするものです。
そして、実際に全てのテストをクリアすれば、品質を保証できる製品だと判断できるわけですね。
ちなみに、ここでいう「製品」とは、Webプログラマーの場合だと「Webアプリ」ということになります。
「RSpec」とは
RSpecとは、テストを実装するためのRails用のフレームワークです。
Railsには他にもminitestというテスト用のフレームワークがありますが、そのminitestよりもはるかに多くの現場で使用されているのがRSpecになります。
RSpecでは、基本的なRubyやRailsのコードに加え、RSpec特有の記述方法でテストコードを実装することができます。
その書き方はちょっと独特かもしれませんが、Rubyと同様、慣れてくるととても読みやすくなっているので、ぜひ少しずつ練習してみてください。
以下の公式サイトを読めば、「RSpecって一体どういうものなのか?」というのがなんとなくわかると思います。
英語が苦手な人は以下の記事を参考にしてみてください。
使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita
未経験者はテストがどれだけ重要かがわからない
未経験者の場合、「RSpec」が何なのか全く知らないと思いますし、そもそも「テスト」がどれだけ重要かもわからないと思います。
しかしながら、実際に現場に入ると「テスト」というものは必ず必要になります。
自分自身が作ったWebアプリを毎回自動的にテストできるようになると、品質を担保するということが非常に効率よく行えるようになるんです。
だからこそテストは超重要。
ただ、実際問題として多くの未経験者の方がテスト(RSpec)をあまり学びません。
僕自身、転職する前はRSpecというものが何なのかも一切わからなかったですし、実際にテストがどれだけ重要なのかもわかってませんでした。
それに、ほとんどのプログラミングスクールでもRSpecについては全く教えてくれないですからね。
実際に僕自身もスクールに通って教えてもらったのは、HTML・CSSとGit基礎、Rubyの基礎文法、RailsのCRUD処理などの本当に基本的な部分のみでした。
しかし、実際に現場に入るとテストコードってめっちゃ書くんですよ。
そしてテストをクリアしないと自分が実装した内容についても上司からOKがでません。
そういう意味でも、テストコードの読み書きができることはとても重要なんです。
それに、テストを専門的に行う「テスター」を雇うよりも、テストコードを実装できるほうが遥かにコスパがいいですからね。
なぜなら、膨大なテストを人が手動でやるよりも、コンピューターに任せたほうが圧倒的に早いし正確だから。
それに対し、人間というのはミスもしますし、疲労もします。
なので、「人間の感覚に依存する部分」以外の、ロジックで確かめることができる部分は、コンピューターに任せてしまった方が良いんです。
Aを実行すればBになる、というような正解が決まりきっているものがそうですね。
以上のような理由から、テストコードが書ける初心者は非常に評価が高くなります。
なのでぜひ、現場に入る前にテスト(RSpec)について勉強してみてください。
未経験者はどのようにRSpecを学べばいいのか
RSpecを学んで欲しいとは言ったものの、それを学べる教材はあまりないのが現状ですね。
スクールでも教えてくれませんし。
また、初心者がよく教材として使っている「Railsチュートリアル」でも、テストに採用しているのはRSpecではなくMinitestです。
だから、RSpecについて学ぶことができる学習コンテンツは結構貴重なのかもしれません。
そこで僕が個人的にRSpecの学習に関しておすすめなコンテンツをご紹介しようと思います。
まずは、「プロを目指す人のためのRuby入門」の著者でもある伊藤淳一さんが出されている、RSpecに関する記事ですね。
それがとても無料とは思えないほど質が高いものとなっているので、ぜひ参考にしてみてください。
下記に伊藤さんのRSpecに関するQiita記事をまとめておきます。
- 使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita
- 使えるRSpec入門・その2「使用頻度の高いマッチャを使いこなす」 - Qiita
- 使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita
- 使えるRSpec入門・その4「どんなブラウザ操作も自由自在!逆引きCapybara大辞典」 - Qiita
また、Aaron Sumnerという海外のエンジニアの方が作った「Everyday Rails」というwebサイトを伊藤さんら複数のエンジニアの方々が和訳し電子書籍化したものもあります。
僕もまだ読んでいる途中ですが、とても質の高い内容となっているので、こちらも参考にしてみてください。
Everyday Rails… Aaron Sumner 著 et al.
RSpecを学ぶことで他の未経験者と差別化できる
Rspecを学ぶことで、他のRSpecを勉強していない未経験者と比べて大きな差別化ができます。
面接でポートフォリオを見せる時も、モデル部分のメソッドがしっかり動作することを確認できるようにテストコードを書けば、それがめちゃくちゃ良いアピールになりますよ。
初心者でそこまで意識して勉強している人はまずいませんからね。
また、アラサーからプログラマーへ転職したいという方は、ご自身のポテンシャルだけでなく、技術的な部分でも他の未経験者との差別化を計ってください。
アラサーともなると、若い方と比べて技術的な面で秀でたものがないと、やっぱり転職で勝つのは難しいので。
最後に
今回は未経験者がRSpecを学ばないことに対する疑問について話してみました。
この部分は、未経験者がプログラミング学習においてよく見落としがちな部分です。
しかし、テストコードを実装するというのは現場で働く上では必須事項なので、ぜひRSpecの勉強に挑戦してみてください。
ちなみに、これはRubyだけではなく他の言語にも言えることです。
テストはめっちゃ大事。
ぜひそれを頭に入れ、今後も勉強を進めてください。
そこまで意識してコードが書ける初心者なら、転職活動において技術面で落とされることはほとんど無くなりますよ。