give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

Rails 7.0に対応した「Everyday Rails - RSpecによるRailsテスト入門」をリリースしました!

僕が翻訳しているRSpecの入門本「Everyday Rails - RSpecによるRailsテスト入門」をアップデートしました。
すでに本書をお持ちの方はLeanpubから最新版をダウンロード可能です。

leanpub.com

このエントリでは今回のアップデートの注目ポイントを5つ紹介していきます。
また記事の最後には期間限定の割引情報も載ってます!
追記:記事内でお知らせしていた割引キャンペーンは2022年5月8日に終了しました。

【もくじ】

ポイントその1:サンプルアプリやサンプルコードが最新のRailsとRSpecに対応!

今回のアップデートではサンプルアプリとサンプルコードが最新のRailsとRSpecに対応しました。
Railsのバージョンは7.0に、RSpec(rspec-rails)のバージョンは5.0にそれぞれアップデートしています。
また、Rubyのバージョンも最新の3.1.0で動作することを確認しています。

コードを確認したい人は以下のGitHubリポジトリにアクセスしてください。

github.com

ポイントその2:統合テストをフィーチャスペックからシステムスペックに変更!

これまで統合テストはフィーチャスペックを使ってテストしていましたが、rspec-rails 3.7でシステムスペックが導入されて以来、フィーチャスペックは徐々にレガシーな機能になってきました。
そこで、今回のアップデートではこれまでフィーチャスペックで書いていたテストコードをすべてシステムスペックに書き直しています。
加えて、フィーチャスペックをシステムスペックに移行する手順も書籍内で紹介しています。


ポイントその3:ファイルアップロード機能をPaperclipからActive Storageに変更!

以前のサンプルアプリケーションではファイルアップロード機能をPaperclip gemを使って実現していました。
しかし、Paperclipはすでにメンテナンスが止まってしまい、現在は非推奨なgemになっています。
そこで今回のアップデートではサンプルアプリケーションの実装と書籍内のサンプルコードをRails標準のActive Storageを使うように変更しています。


ポイントその4:その他、最新バージョンのgemを使うように内容をリニューアル!

前回のアップデートは2017年11月だったため、RailsやRSpecのみならず、いろいろなgemがすでに古くなってきていました。
そのため、環境構築時にエラーが出て手を取られたり、サンプルコードがそのままでは一部動かなくなったりするなど、読者のみなさんにご不便をかけてしまう部分がありました。

今回のアップデートでは2022年1月時点で最新のgemを使っているので、gemが古くて動かないとか、サンプルコードがそのままでは使えない、といった問題は起きなくなっているはずです。

たとえば、FactoryBotのファクトリ定義もちゃんと{ }で囲む形になりました。


ポイントその5:PDFファイルのフォントを変更!

今回のアップデートからPDFファイルのフォントがNoto SerifとNoto Sans Monoに変わりました。
また、コードフォントの大きさや行間も見直しています。
この変更により以前より読みやすくなったと思うのですが、いかがでしょうか?


さらに:原著から公式にフォークしたため、今後は日本語版独自にアップデート可能!

実は上で述べてきた変更点はすべて日本語版独自のアップデート内容です。
原著者のAaronさんにお願いして、日本語版を独自にフォークすることを了承してもらっています。
これにより、内容が古くなってきた部分が出てきたら、原著のアップデートを待たずに日本語版だけを独自にアップデートすることができるようになりました。
将来的には日本語版独自の追加コンテンツとして、GitHub Actionsの導入方法やDocker環境での実行方法なども解説できたらいいな〜と思っています。

ちなみに、今回のアップデートを機に翻訳チームの体制も変わりました。これまでは僕とAki(秋元利春)さんと魚振江さんの3人体制でしたが、ここ数年は翻訳者(メンテナ)として稼働しているのが僕一人だったため、クレジット上も僕一人に変更しています。

翻訳者本人による推薦の言葉

今回のリニューアル作業を通じて、久しぶりに「Everyday Rails - RSpecによるRailsテスト入門」を最初から最後まで読み直しました。
改めて読んでみると、本書はRSpecの入門書としてとてもいいコンテンツだなと感じました。

内容がとても実践的で、この本の内容を一通り理解していればプロの現場で必要とされるRSpecの知識の8割ぐらいは十分カバーできると思います。
僕も本書を読みながら、「そうそう、こういうテスト、結構必要になるもんね〜」とたくさん頷いてしまいました。
残りの2割は公式ドキュメントやネット上の情報などを通じて自力で習得する必要がありますが、基本的な事項がちゃんと理解できていれば応用的な知識の習得も難しくないはずです。

そもそも、僕自身が実は「Everyday Rails - RSpecによるRailsテスト入門」の原著を読んでRSpecの勉強した人の一人だったりします。
8年以上前の話ですが、最初に本書を読んだときの感想は以下のエントリに書いています。

blog.jnito.com

この本と出会わなければ、RSpecを習得するのにはもっと時間がかかっていたと思います。
もちろん、ネットの情報が充実してきた昨今ではネット上の情報だけでもある程度勉強を進めることはできますが、知識の断片をかき集めながら勉強するような形になってしまいます。
こうやって書籍の形で体系的にテストコードの書き方を学べるのはネット上の情報だけでは得られない、本書ならではの利点だと僕は考えています。

Everyday Railsに関するQ&A

Everyday Railsをまだご存じでない方のために、よくある質問と回答をまとめてみました。

Q. 試し読みはできるの?

はい、できます。
こちらのページで1章から3章までの内容が公開されています。

https://leanpub.com/everydayrailsrspec-jp/read_sample

Q. どこで買えるの?紙の本はないの?

本書はLeanpubというセルフパブリッシングサイトのみで購入可能です。
具体的には以下のページになります。

leanpub.com

電子書籍版のみなので、紙の本では売っていません。
また、Amazonを探してもAmazonにはありません。

Q. どんなデバイスで読めるの?

電子書籍のフォーマットはPDF、EPUB、MOBIの3種類です。
ですので、PCにインストールされたPDFリーダーや、EPUB版であればMacやiOSのBooks app等で読むことができます。

EPUB版をMacのBooks appで表示した場合の例

また、以下のページを参考にすればKindleでも読むことができるはずです(すいません、僕はKindleを持ってないので未検証です💧)。
How do I get Leanpub books on my Kindle, or into the Kindle app on my phone or tablet? | Leanpub Help Center

Q. 最低価格と希望価格って何?

Leanpubは購入者が自由に購入価格を設定できる、ユニークな仕組みを持っています。
最低価格は文字通り、「最低でもこれだけは払っていただきたい」という購入金額で、希望価格は「著者としてはこの価格で購入してもらえると嬉しい」という購入金額になります。

こんなふうに購入ページにあるスライダーを左右に動かすことで、購入金額を上下させることができます。

ちなみにLeanpubはアメリカの会社なので販売価格はUSドルになります。
そのため日本円での購入金額は為替の影響で変動することがあります。

Q. 最低価格で購入しても大丈夫ですか?(ケチな奴って思われませんか?)

全然大丈夫です!(笑)

最低価格は作者が「これで良い」と考えて設定した金額ですので、遠慮なく最低金額を指定していただいて結構です。
(もちろん、スライダーを右に動かしてもらうほどありがたいですがw)

また、誰がいくらで購入したのかはわからないようになっているので、「ケチな奴」と思われる心配もありません!
安心してご自身の考える購入価格で購入してください。

Q. ときどき内容が無料でアップデートされるって本当?

はい、本当です。
本書を一度購入すれば、最新版の電子書籍ファイルを無料でダウンロードすることができます。
大きめのアップデートが行われた場合はメールで通知されますので、Leanpubにログインして最新版の電子書籍ファイルをダウンロードしてください。

メールが届いていない場合は以下の手順でアップデートできます。

1. 画面上のメニューからLibrary > Booksを選択する

2. 未ログインであればログイン画面が表示されるのでログインする

3. Everyday Railsを選択して"Read this book"からダウンロードしたいファイルを選択

Q. チーム内で回し読みするのって、ありですか?

ライセンスに従った共有スタイルであれば「あり」です。
企業の開発チームなど、複数人で本書を共有したい方のために「チームパッケージライセンス」を用意しているので、こちらをぜひご購入ください。
具体的にどんなライセンスになっているのかは、ランディングページ内の「チームパッケージライセンスについて」の項で説明しています。

leanpub.com

Q. 画面が英語なので買い方がわかりません😣

Leanpubのサイトは基本的に英語で表示されています。
英語が読めないので買い方がわからないという方は、Tomoyukiさんが書かれたこちらの記事を参考にしてください。
スクリーンショットなどを交えてわかりやすく買い方を説明してくれています。
(Tomoyukiさん、どうもありがとうございます!)

tomoyuki65.com

(終了しました)One more thing... 期間限定で最低価格を16.99ドルにします!🎉

ここまで読んでくれたみなさんに耳寄り情報です。

今回のアップデートを記念して、期間限定で本書の最低価格を19.00ドルから16.99ドルに変更します。
終了日はまだ決めていませんが、ある日突然終了するかもしれないので、まだお持ちでない方はお早めにご購入ください!

本書をすでに持っている人も、SNS等でこのブログ記事を拡散してもらえると嬉しいです!🙏

まとめ

というわけで、このエントリでは日本語版独自のアップデートを実施した「Everyday Rails - RSpecによるRailsテスト入門」の内容を紹介してみました。
原著の初版リリースが2012年、日本語版のリリースが2014年で、かれこれ10年ぐらいの歴史がある本書ですが、Railsでテストコードを書く方法を学ぶのには今でもベストな一冊ではないかと僕は考えています。

内容が一部古くなってきたところが昨今のウィークポイントでしたが、最新のRailsやRSpecに対応したことで再び自信をもって推薦できる一冊になりました。
本書を持っている人もまだ持っていない人も、ぜひ最新の「Everyday Rails - RSpecによるRailsテスト入門」をダウンロードして読んでみてください!

leanpub.com

あわせて読みたい

本書のサンプルコードをRails 7.0で作り直しているときに、「Rails 7.0ならではのハマりどころ」にいろいろと遭遇しました。
そのときの知見を以下のQiita記事にまとめています。よかったらこちらもあわせてどうぞ。

qiita.com
qiita.com

おまけ

去年の5月に発言したツイートをようやく実現することができました……!!!(しかもRails 7.0で✌️)