【導入編】「Everyday Rails - RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた 

# はじめに

この記事は、タイトルのとおり、「Everyday Rails」を Rails 6 で勉強したいので、
書籍の翻訳者である伊藤さんのブログを参考にして頑張ってみた記録を記したものである。

ただ、記事自体が長くなったので、導入編ではその記録を記していない。
**Rails 6 で勉強する場合は時間がかかるので覚悟した方がよい**という注意喚起のみしか記載していない。

記録を見たい方は、以下を参照すること。

> [【前編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/items/8d44428e5bbe8f6b3f6a) 
> [【中編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/items/a99dd4cdbf060515ac07) 
> [【後編】「Everyday Rails \- RSpecによるRailsテスト入門」を Rails 6 で勉強したいので伊藤さんのブログを参考にして頑張ってみた \- Qiita](https://qiita.com/miketa_webprgr/items/08774ecd59b4c208cba9)

## 「Everyday Rails - RSpecによるRailsテスト入門」 とは

Railsを勉強している初学者にとって、RSpecの勉強は避けて通れない道だ。
以下の書籍は、Railsを勉強している初学者の誰もがお世話になるのではないか。

>  [「Everyday Rails - RSpecによるRailsテスト入門」](https://leanpub.com/everydayrailsrspec-jp)

Everyday Railsは、2017年度にアップデートが行われおり、RSpec3.6やRails 5.1に対応している。
とはいえ、もう2020年度である。

私が6月18日付で調べると、最新版は以下のとおりであった。

- RSpec 3.9.0 - October 08, 2019
- RSpec-rails 4.0.1 - May 16, 2020 
- Rails 6.0.3.2 - June 17, 2020

何となく、Rails6系で勉強したいと思う人もいるのではないだろうか。
そう考えていたところ、伊藤さんの記事を発見した。  

> [【動画付き】Everyday RailsのサンプルアプリをRails 6で動かす際に必要なテストコードの変更点 \- give IT a try](https://blog.jnito.com/entry/2019/10/25/053521)

私は、この記事を見つけて、軽い気持ちで「やってみよー」と思った。
だが、Rails 6でのバージョンアップをやり出したら、相当長くかかった。

幸か不幸か、その過程でメモも取っていたので、それを編集して、
Qiitaという形で公開することにした。

初学者なんだから、こんなブログ書かずに勉強しろという話だが、
もう書きたいという思いが強過ぎるので仕方がない。

## Rails 6 で本当にチャレンジする？

伊藤さんのブログでは、以下のとおり記されている。  

> まとめ（というか結論）：Everyday Railsの基本的な内容はほとんど古くなっていません！
> というわけで、この記事ではEveryday Railsのサンプルアプリケーションを
> Rails 6にアップグレードした際に発生する、テストコード関連の変更点についてまとめました。

> Rails 5.1からRails 6にアップグレードするためにはgemのアップデート等、
> いろいろな作業が必要になりますが、 テストコードだけに着目すればそれほど大きな変更点はありません。 
> 実際、テストコードで変更する必要があるのはfactory_botの記法と、コントローラスペックの一部だけです。

> これはすなわち、Everyday Railsの内容が現在でもほとんど古くなっていないことを意味しています。
> ですので、Everyday Railsでテストコードの書き方を学べば、Rails 6環境でも
> 十分しっかりしたテストを書けるようになるはずです。

> これからも安心してEveryday RailsをRSpecの参考書としてご活用ください！

すなわち。  

Railsのバージョンを上げないと、factory_botの記法とコントローラスペックの一部だけ古い書き方になるが、
**内容にほとんど変更はないからRails5.1で勉強したことが通用する、**ということだ。

つまり、**Rails5.1でRSpecを勉強することのデメリットはほとんどない**ということだ。  

冷静になって天秤にかけて欲しい。
初学者のみなさん、このデメリット、受け入れちゃってもよいのではないですか。

受け入れたくない方はよく考えていただきたい。
それは、Rails ６ にアップグレードすることのデメリットである。

このデメリットは非常にシンプルで、**とにかく時間がかかる**ということである。  

私は、無駄にこのアップグレードの戦いについてノートを取ったり、
よく分からない失敗をしてしまったというのはあるが、**作業時間が14時間かかった。**

明らかに時間がかかり過ぎであるが、**スムーズに進んだとしても6時間はみる必要がある**と思う。
そもそも伊藤さんのyoutube動画自体が1時間あるのだから、初学者が3時間程度で終わるはずがない。 

もちろん、アプリのバージョンアップは現場で必ず行うことなので、
この知見自体は役に立つものである。

ただ、初学者がやるべき優先順位としては低いような気がする。
（それこそ、初学者なのでその判断もつきませんが）

とりあえず、気軽な気持ちで挑戦するのは、絶対に避けましょう！
**RSpecを爆速で勉強したい方は、少なくとも現時点においては、Rails5.1で頑張った方がよいです！**

## 補足



## それでもやりたい方へ

### 結論： youtube動画を見て、その動画のとおり作業しましょう!!!

私のように気軽に取り組もうという方は、伊藤さんが提供している以下の情報源に辿り着くはずだ。

> [【動画付き】Everyday RailsのサンプルアプリをRails 6で動かす際に必要なテストコードの変更点 \- give IT a try](https://blog.jnito.com/entry/2019/10/25/053521)
> [【2019年10月版】「Everyday Rails \- RSpecによるRailsテスト入門」のセットアップ解説動画を作成しました \- give IT a try](https://blog.jnito.com/entry/2019/10/15/085932)
> [【Qiita記事】永久保存版！？伊藤さん式・Railsアプリのアップグレード手順](https://qiita.com/jnchito/items/0ee47108972a0e302caf)
> [【前編】永久保存版！？伊藤さん式・Railsアプリのアップグレード手順（youtube動画）](https://youtube.com/watch?v=hT68fhuWbHU)
> [【後編】永久保存版！？伊藤さん式・Railsアプリのアップグレード手順（youtube動画）](https://youtube.com/watch?v=SnwNFMauzjM)

伊藤さんがQiitaに投稿している記事は、あくまでRSpecのテストアプリを事例として扱いつつ、
Railsアプリのアップグレード手順を説明するものなので、
その性質上、細かい手順等はQiita記事内に書かれていない。

私はあまりそのあたりを意識せず、Qiita記事のみを見ながらチャレンジしたので、
色々と失敗に見舞われて、最初からやり直すハメになった。

知識がない人がQiita記事だけの情報でチャレンジすると、色々と勘違いをする可能性や、
Qiita記事に細かく書いていないエラーに対応できない可能性が高いだろう。（私だけですかね 笑）

繰り返しになるが、**youtube動画は絶対に見て、その動画のとおり作業しよう!!!**

## バージョンアップはしない方へ

伊藤さんが環境作成の手順をyoutube動画にして公開している。
参照してみてはどうでしょう？

[【2019年10月版】「Everyday Rails \- RSpecによるRailsテスト入門」の環境作成手順 \- YouTube](https://www.youtube.com/watch?v=6Ny7RR8kINg)

「ですます調」だと単調になるので「である調」としましたが、
偉そうに感じられた方、すみません。

あと、私と同じような沼にハマる初学者の方が今後発生するかもしれない
という思いでこの記事を書いていますが、伊藤さんを責める気持ちは全くありません。

チェリー本も大好きです。お世話になってます。
タダにもかかわらず、ブログで積極的に情報発信してくださっているのは非常にありがたいです。

あと、どうでもよいですが、バンド活動をやっていて、
ひょんなきっかけでIT業界に入ってきたにもかかわらず、
今では第一人者として情報発信されているのが不思議で仕方ありません！

いつもありがとうございます！！！

## 補足（2020年9月24日追記）

この作業は、私がWeb系プログラマーを目指して勉強し出してから２ヶ月ほど
（勉強時間で300-400時間ぐらい）経過した頃に行いました。

たしか、Railsで初めて簡単なCRUDアプリを作ってみた直後にこの作業を行っているはずです。

同じ初学者であっても、個々人のレベルによっては大袈裟に感じる方もいるかと思ったので、
補足で書かせていただきました。14時間はさすがに長すぎですね笑

もう少し勉強した方であれば、半日強ぐらいで終わるかと思います。