はじめに
先日のブログでも書きましたが、電子書籍「Everyday Rails - RSpecによるRailsテスト入門」の追加コンテンツとして「Minitest版のテストコードとその解説書」を書いています。
執筆はまだ完全に終わっていませんが、キリのいいところまで書き終えたのでいったんベータ版としてリリースすることにしました。
追加コンテンツのタイトルは「RSpecユーザのためのMinitestチュートリアル」です。
今回のエントリではこの書籍の内容について紹介します。
2015.7.29 追記:正式版を公開しました!
2015年7月29日に正式版を公開しました。
詳しい内容は以下のエントリで紹介していますのでこちらも併せてご覧ください。
「RSpecユーザのためのMinitestチュートリアル」の内容について
「RSpecユーザのためのMinitestチュートリアル」は「Everyday Rails - RSpecによるRailsテスト入門」のテストコードをMinitestで書き直す方法を解説した技術書です。
単にRSpecからMinitestに書き直すだけではなく、書き直す過程で有用なTipsやRSpecユーザが陥りやすい落とし穴を解説したりしています。
章の構成は以下の通りです。(まだベータ版なので変わる可能性もあります)
- イントロダクションおよびMinitestのセットアップ
- モデルスペックをユニット形式のMinitestで書き換える
- コントローラスペックをユニット形式のMinitestで書き換える
- フィーチャスペックをユニット形式のMinitestで書き換える
- モデルスペックをスペック形式のMinitestで書き換える
- コントローラスペックをスペック形式のMinitestで書き換える
- フィーチャスペックをスペック形式のMinitestで書き換える
- Minitestに関するその他のTips(未執筆)
- (Appendix) Minitestのアサーション一覧(未執筆)
上記のとおり、8章とAppendixはまだ執筆が終わっていません。
また、それ以外の章もざっくりと書き終わった状態で細かいブラッシュアップはまだ完了していない状態です。
今後の内容も加筆・修正して来月(2015年7月)中には正式版を公開したいと考えています。(遅れたらすいません)
なお、現時点でページ数は89ページあります(PDF版)。
執筆前は短い本になるだろうと思っていましたが、実際書いてみるとなかなかのボリュームになりました。
サンプル版はこちらで読めます
1章と2章だけを抽出したサンプル版(PDF)が以下のページで読めます。
「中身がちょっと気になる」という方はサンプル版をチェックしてみてください。
RSpecユーザのためのMinitestチュートリアル(サンプル)
提供形態について
「RSpecユーザのためのMinitestチュートリアル」は単品ではなく、「Everyday Rails - RSpecによるRailsテスト入門」の追加コンテンツ(電子書籍)としてリリースされます。
つまり、「Everyday Rails - RSpecによるRailsテスト入門」を購入してもらうと「RSpecユーザのためのMinitestチュートリアル」が読める、ということです。
(注:日本語版独自の追加コンテンツです。英語版には追加されないのでご注意ください)
追加コンテンツとした理由は本書の内容が「Everyday Railsを一度読んだことがある人」を対象としているためです。
サンプルアプリケーションやRSpecの仕様についてわからない点があれば適宜Everyday Railsを読み直してもらう、というスタンスにしているため、Everyday Railsとセットで公開することにしました。
Everyday Railsの購入者は誰でも無料で読めます!
「RSpecユーザのためのMinitestチュートリアル」は日本語版Everyday Railsの独自アップデートという位置付けにしています。
なので、Everyday Railsをすでに購入されている方は誰でも無料でこの追加コンテンツをダウンロードすることができます。
またEveryday Rails本体と同様、Minitestチュートリアルの今後のアップデートも無料で提供していく予定です。
まだEveryday Railsを購入されていない方は以下のページからご購入ください。
(Leanpub.comのみでの販売となります)
「RSpecユーザのためのMinitestチュートリアル」のダウンロード方法
Everyday Rails購入者の方は以下の手順でMinitestチュートリアルをダウンロードできます。
- ログインページからLeanpubにログインします。
- Purchasesページに移動します。
- 購入済み書籍の中から「Everyday Rails - RSpecによるRailsテスト入門」を選択します。
- DOWNLOAD EXTRAS のリンクからzipファイルをダウンロードします。
- ダウンロードしたzipファイルに「RSpecユーザのためのMinitestチュートリアル」の電子書籍ファイルが含まれています。
以下の画像は英語版Everyday Railsの追加コンテンツダウンロード画面ですが、日本語版でもおそらく同じ形式になっているはずです。
電子書籍のフォーマットおよびライセンスについて
Everyday Railsと同様、「RSpecユーザのためのMinitestチュートリアル」もEPUB(iBooks等)、MOBI(Kindle)、PDFの3種類で提供します。
DRMフリーなのでPCでもスマホでもタブレットでも、お好きなデバイスにコピーして読むことが可能です。
http://freebiesbug.com/psd-freebies/device-icons/
ライセンス形態は「ライセンス数 = 最大同時貸出人数」となります。
チームで読む場合はチームパッケージで購入してもらった方がお得です。
詳しくはEveryday Railsのランディングページをご確認ください。
「ところで・・・RSpecユーザがMinitestを学ぶと何かいいことがあるの?」
そもそもの話として、なんでこんな本を書こうと思ったのか、この本を読むと何が嬉しいのか、といった点についても触れておいた方がよいかもしれません。
執筆の動機は単純にRSpecだけでなくMinitestに関する知見が最近溜まったので、まとめて公開したいと思ったからです。
いや、もっと掘り下げるならば、年に数回盛り上がりを見せる「RSpecはダメ、Minitest(もしくはtest-unit)が最高」的な議論に対して「いや、これって両方に精通してなきゃ冷静な議論はできないよね?」と思ったからです。
僕の場合、RSpecにはかなり精通していましたが、Minitestはほとんど使ったことがありませんでした。
なので、「RSpecでもMinitestでもどちらも大丈夫!」という自信を付けたくて、Minitestの勉強を始めました。
今ではMinitestに関してもそれなりの自信が付いています。
ただ、Minitestチュートリアルの中でも書いていますが、知見が深まったからといって「こっちのテスティングフレームワークはダメ、こっちのフレームワークが良い」と結論づけるつもりはありません。
また、「RSpecからMinitestに移行しよう」とみなさんに呼びかけるつもりもありません。
どちらが良いか(またはどちらが好きか)は人の主観やユースケースによって異なってくるからです。
とはいえ、「RSpecだけ知ってればいいや」と考えていると困る場面が出てくるかもしれません。
たとえば、新しく始まるプロジェクトでMinitestを使うことになった場合や、あるオープンソースプロジェクトにプルリクエストを送ろうとしたらMinitestでテストが書かれていた場合などです。
そんなとき、「あー、どうしようMinitestか・・・」と不安になるのではなく、「Minitestでも大丈夫!」と思えた方がいいですよね?
「RSpecユーザのためのMinitestチュートリアル」を読んでおけば、きっと「大丈夫!」と思えるはずです。
Minitestに関する日本語の情報はまだそれほど多くないので、本書は貴重な情報源になるんじゃないかな~と自分では思っています。(少なくともそうありたいと願っています)
まとめ
というわけで、今回は本日公開した「RSpecユーザのためのMinitestチュートリアル」を紹介しました。
すでにEveryday Railsを持っている方はぜひダウンロードして読んでみてください。
まだお持ちでない方はEveryday Railsを購入してもらえると嬉しいです。
また、読んでくださった方のフィードバックもお待ちしています。
ここがちょっとわかりにくかった、ここはこういう説明がほしい、Minitestについてこんなことが気になってる等々、なんでもかまわないのでご意見をいただけるとありがたいです。
フィードバックはEveryday RailsのフィードバックページやTwitterのメンションを使ってください。
それでは正式版の公開に向けてもうちょっと執筆作業をがんばります!
Everyday Rails - RSpecによるRailsテスト入門 / RSpecユーザのためのMinitestチュートリアル