『Everyday Rails RSpecによるRailsテスト入門』をひと通り読んだのでその感想をでも

はじめに

Everyday Rails RSpecによるRailsテスト入門』という電子書籍をひと通り読み終わりました。ページ数は約150枚(PDFにて)程度ですので、ぱらぱら〜とひととおり見るのでしたら数日で読み終わることでしょう。


Everyday Rails… Aaron Sumner 著 et al. [Leanpub PDF/iPad/Kindle]

今回は、週1回2時間ほどのペースで写経しつつ読み進めたのでだいたい半年ぐらいかかりました。

総括

Railsアプリのテスト入門書として最適かなと思います。値段も20$程度ですし、バージョンアップ対応も随時実施されています。こういう技術書においてバージョンアップ対応というのは大変ありがたく、「同じようにプログラムを写経したのに動かない!」という問題が避けるというメリットがあります。

対象読者について

1.イントロダクションの『対象となる読者』にも書かれているように、Railsアプリは1〜2個程度書いたことがあるんだけど、テストは書いたことがないという人向けです。テストへの取り組み方に対して著者自身の考えを明記している(1.イントロダクションの「私が考えるテストの原則」)があり、それへの反対意見があることも承知のうえで書かれていることが印象に残りました。

写経について

本書の写経は他の本と比べると特徴的です。ゼロから構築するのではなく、すでにあるアプリケーションに対してコード(今回はテストコード)を追加するという形になります。この形は結構新鮮で、テストを書くことに本の目的を絞った取り組みとして素晴らしいアイディアかと思います。

ただ、一度はアプリケーション自身を動かしてみると良いと思います。本書内でも記述はあるのですが、実際にブラウザで操作してみることで、どのようなアプリケーションなのかを実感するためです。いきなりテストを書くというのはちょっとイメージしづらいかなぁと。

本書のGitHubのページにテストコードが書かれていますが、写経自身については自らの手でやったほうが良いです。テストが書けるようになるためにはある程度量をこなさないと行けないと(私は)考えています。折角の機会なので、経験を積むという意味でやってみると良いかなと。

なお、私は自分のタイミングでコミットすべく、「01_untested」ブランチをexportして、git initしました。こんな感じです。

mkdir ~/rspec_rails_4_export
git clone https://github.com/everydayrails/rspec_rails_4.git
cd rspec_rails_4
git checkout -b untested origin/01_untested
git archive untested | tar -x -C ~/rspec_rails_4_export
cd ~/rspec_rails_4_export
git init

内容について

「3.モデルスペック」から「5.コントローラスペックの基礎」ぐらいまではサクサクと読み進められますが、それ以降は内容が省略されすぎていたり、逆に細かすぎる印象を受けました。
例えば「7.コントローラスペックのクリーンアップ」の「contacts_controller_spec.rb」のアウトラインを見せる部分は必要?と感じました。一方で、DatabaseCleanerの説明にはより詳しいものがほしいなと思いました(鍵マークとしてリンク先があるのですが、本文中で語って欲しかった)。

日本語版について

翻訳はこなれていますので、かなり読みやすいかと思います。1点、説明が長文に及んでいる部分において、行間が詰まっている感じがしました。適宜、1行ぐらい空行があってもよいかなと感じたりします。

サポートについて

翻訳者の伊藤淳一さんが、Twitterをさーちされているのか本書のことを話題に出すとmentionを頂くことが多々ありました。これに甘えてはいけないなぁと思いながら、ちょっぴり期待してた麺もあります(^_^;)

また、繰り返しになりますが、バージョンアップ対応も地味に嬉しいサポートです。これがあるお陰で周りや初学者にも安心してオススメできます。

さて次は...

本書の末尾に書いてありましたが、「Rails 4 Test prescriptions: Build a Healthy Codebase」にチャレンジしてみようかなと思います。積ん読の消化が必要ですが。

ひょっとするとブラックフライデーサイバーマンデー?)でセールがあるかも。それがあるまではちょっと買うのを控えようかな。