はじめに
本日、電子書籍「RSpecユーザのためのMinitestチュートリアル」の正式版を公開しました。
このエントリでは正式版の内容を詳しく紹介します。
Everyday Rails - RSpecによるRailsテスト入門 / RSpecユーザのためのMinitestチュートリアル
おさらい:「RSpecユーザのためのMinitestチュートリアル」とは?
「RSpecユーザのためのMinitestチュートリアル」はその名の通り、Minitestを使ったテストコードの書き方をチュートリアル形式で説明する技術書です。
タイトルに「RSpecユーザのための」とあるように、RSpecに関する知識がある程度ある人を対象にしています。
また、書籍内で使用しているテストコードは「Everyday Rails - RSpecによるRailsテスト入門」のものをベースにしているので、Everyday Railsの内容もある程度頭に入れておいた方が理解しやすいと思います。
本書の内容については先日公開したベータ版の紹介記事もあわせて参照してください。
正式版で追加されたコンテンツについて
正式版では以下のようなコンテンツを追加しています。
第8章「Minitestに関するその他のTips」
「Minitestに関するその他のTips」という章を追加しました。この章では以下のような内容を説明しています。
- 特定のテストを実行する
- Guardを使う
- クラス名やメソッド名の重複に注意する
- テストクラスの継承とsuperの呼び出し
- プラグインを使って結果表示をリッチにする
- RSpecのテストでMinitestのアサーションメソッドを使う
- PoltergeistでJavaScriptをテストする
Appendix-A 「Minitestのアサーション一覧」
「Minitestのアサーション一覧」という参考資料を追加しました。
Minitest標準のアサーションだけでなく、Railsやminitest-railsによって追加されるアサーションも網羅しています。
Appendix-B 「Minitestに関する情報源」
Minitestを詳しく知りたい方のために「Minitestに関する情報源」という参考資料も追加しています。
サンプルコードをGitHubで公開
書籍内で使用されたテストコードをGitHubで公開しています。
書籍を購入しなくてもコードは無料で見ることができます!
- ユニット形式のテスト
- https://github.com/JunichiIto/rails-4-1-rspec-3-0/tree/minitest-unit
- スペック形式のテスト
- https://github.com/JunichiIto/rails-4-1-rspec-3-0/tree/minitest-spec
このほかにも細かい修正や内容の追加を実施し、書籍全体のクオリティを上げています。
ページ数もベータ版の89ページから123ページ(PDF版)に増えました。
「まえがき」の抜粋
正式版の公開にあたり、「まえがき」もちゃんと書いてみました。
本書を執筆した動機や本書の目的等をつづっています。
少し長いですがその内容をこちらにも載せておきます。
まえがき
プログラムは書いて終わり、ではありません。期待した通りにプログラムが動作するか、必ずテストする必要があります。加えて、プログラムを変更した場合は他の部分に悪影響を及ぼしていないかどうかもテストする必要があります。また、テストする方法は大きくわけて手作業と自動化のふたつがあります。プログラムが小さいうちは手作業でもなんとかなりますが、プログラムが大きくなってくると手作業では対処しきれなくなります。よって、自動化されたテストを用意しておくことは必要不可欠です。
数年前までRubyでテストコードを書く場合はRSpecを使うのが一般的でした。今もRSpecはよく使われていますが、最近では新たなテスティングフレームワークとしてMinitestが注目され始めています。しかし、名前はよく聞くもののまとまった情報は意外と少なく、「ちょっと気になるけど手が出しにくい」と考えている方は結構多いのではないでしょうか?少なくとも私自身はそうでした。本書「RSpecユーザのためのMinitestチュートリアル」はそういった方のために執筆した本です。特に「RSpecならだいたいわかるけど、Minitestのことはほとんどわからない」という方をターゲットにしています。本書では私が以前翻訳した書籍「Everyday Rails - RSpecによるRailsテスト入門」のテストコードをRSpecからMinitestに書き換える過程でMinitestに関するさまざまなテクニックやノウハウをお伝えしていきます。
ただし、本書を読んだからといってRSpecからMinitestへ完全に乗り換える必要はありません(もちろん、そうしてもらってもOKですが)。事実、本書を執筆したあとも私はRSpecをメインのテスティングフレームワークとして使い続けています。しかし、Minitestを学んだことによって抵抗なくMinitestを読み書きすることができるようになりました。RubyのオープンソースライブラリではMinitestでテストが書かれているものもたくさんあります。テストコードを読む際、以前は「ん、このライブラリはMinitestを使っているのか。RSpecで書いてくれていたらよかったのにな・・・。」と思っていましたが、今はMinitestでも気にせずにテストコードを読んでいけます。また、テストコードを書く、という面でもサンドボックス的な小さいプログラムであれば最近はRSpecではなくMinitestでテストコードを書くようになりました。なぜならRubyもRailsもMinitestが標準のテスティングフレームワークになっており、Minitestであれば新たなgemをインストールすることなくすぐにテストを書くことができるからです。
このように、RSpecまたはMinitestのどちらか一方を自分のメインツールに置きつつ、もう一方も抵抗なく使える、という状態にしておくと、さまざまなタイプのプロジェクトに対して柔軟に対応できるようになります。本書「RSpecユーザのためのMinitestチュートリアル」を読むことで、みなさんがテスティングフレームワークの「バイリンガル」になり、よりいっそう楽しくて効率のよいRubyプログラミングライフを送ってもらえれば、私は筆者として大変嬉しく思います。Enjoy programming, enjoy testing!
電子書籍のフォーマットについて
EPUB(iBooks等)、MOBI(Kindle)、PDFの3種類で提供しています。
DRMフリーなのでPCでもスマホでもタブレットでも、お好きなデバイスにコピーして読むことが可能です。
http://freebiesbug.com/psd-freebies/device-icons/
ライセンス形態は「ライセンス数 = 最大同時貸出人数」となります。
チームで読む場合はチームパッケージで購入してもらった方がお得です。
詳しくはEveryday Railsのランディングページをご確認ください。
サンプル版はこちらで読めます
1章と2章を抽出したサンプル版(PDF)が以下のページで読めます。
「中身がちょっと気になる」という方はサンプル版をチェックしてみてください。
RSpecユーザのためのMinitestチュートリアル(サンプル)
購入方法について
「RSpecユーザのためのMinitestチュートリアル」は単品ではなく、「Everyday Rails - RSpecによるRailsテスト入門」の追加コンテンツ(電子書籍)としてリリースされます。
つまり、「Everyday Rails - RSpecによるRailsテスト入門」を購入してもらうと「RSpecユーザのためのMinitestチュートリアル」が読める、ということです。
(注:日本語版独自の追加コンテンツです。英語版には追加されないのでご注意ください)
Everyday Railsを購入されていない方はまずこちらのページでEveryday Railsを購入してください。
希望価格は$20.0(約2400円)ですが、最低価格の$16.0(約1900円)でも購入できます。
コンテンツのダウンロード方法について
Everyday Railsの購入者であればどなたでも無料で「RSpecユーザのためのMinitestチュートリアル」をダウンロードできます。
以下の手順でダウンロードしてください。
- ログインページからLeanpubにログインします。
- Purchasesページに移動します。
- 購入済み書籍の中から「Everyday Rails - RSpecによるRailsテスト入門」を選択します。
- DOWNLOAD EXTRAS のリンクからzipファイルをダウンロードします。
- ダウンロードしたzipファイルに「RSpecユーザのためのMinitestチュートリアル」の電子書籍ファイルが含まれています。
以下の画像は英語版Everyday Railsの追加コンテンツダウンロード画面ですが、日本語版でもおそらく同じ形式になっているはずです。
まとめ
というわけで今回のエントリでは「RSpecユーザのためのMinitestチュートリアル」正式版の内容について紹介しました。
日本語で読めるMinitestの技術書は今のところほとんどないので、Minitestを勉強したいと考えている方にとってはきっと役立つ情報源になると思います。
興味のある方はぜひ読んでみてください!
Everyday Rails - RSpecによるRailsテスト入門 / RSpecユーザのためのMinitestチュートリアル