「Jestではじめるテスト入門」を書きましたー #Jest本

Jestではじめるテスト入門

本日「Jestではじめるテスト入門」がついに発売されました 🎉🎉🎉

peaks.cc

CircleCI時代の同僚の伊藤さん @ganezasan が「Jestの自動テスト本の執筆を手伝ってくれませんか?」と声をかけてくれて「これからテストを書きたいって人に向けたJestの入門書を書きたいんですよ!!」って熱く語ってくれて「いいなぁ」と思ったので参加しました。本を書くなんて初めてのことなので、自分なんかに書けるかなぁとドキドキしてたのですが、周りの方々の助けのおかげで、なんとか書き上げることができました。

そして、監修はなんと和田さん @t_wada です。自分が自動テストについて書いた文章を、和田さんに監修していただけるなんて、それだけでとても幸せだなぁと思っていたのですが、「むちゃくちゃ面白かったです!」って言ってもらえたので、もう出版しなくても満足しそうでした(おい)

本書のメインターゲットは、これからJestを使ってテストを始めたい入門者の方です。そんなみなさんには、Jestの基本機能はもちろん、その周りのさまざまなことについて書かれた本書がきっと役にたちます!さらに、中上級者の方も違った視点から楽しんでいただけるような、とても味のある内容に仕上がっています。ぜひ読んで欲しいです!手にとってみてください。そして、感想を #Jest本 で聞かせてください!

(共著者、監修者に対しては敬称をつけるべきではないのかもしれませんが、個人のブログなのでつけさせてくださいー)

どんな本なの?

本書は、自動テストを導入したいと考えているJavaScriptプログラマのための入門書です。

Jestの機能自体を知りたい方はもちろん「なぜ自動テストが必要なんだろう?」と疑問に思っている方や、「自動テストを導入したいんだけど、実際のプロジェクトでどんな風に書いたらいいんだろう?」と悩んでる方にも役立つ本を目指して書きました。

マッチャーやモックなど、Jestの主要な機能をひととおり、サンプルコードつきで分かりやすく説明しています。Jestでこれからテストを書こうと思っている方には最初の案内役として、すでにJestでテストを書いている方にも主要機能の再確認として使っていただけます。

UI周りのテストについても触れています。jsdomを使用したスナップショットテストやReact Testing Libraryの紹介だけでなく、Jestの範囲を超えてSelenium WebDriver、Puppeteer、Playwrightについてもサンプルを交えて簡単に紹介しています。そのため、UIを含めたEnd-to-Endテストを考える際にも足がかりにしていただけます。

それからもちろん、CIのセットアップについても解説しています。私たちはCircleCIが好きなので、CircleCIを使用したセットアップ方法を説明しています。しかし、他のCIサービスを利用したい場合も基本的な考え方は同じなので、きっと役に立ちます。

個人的に気に入っているのは、共著者の伊藤さんが、自分自身の失敗談を包み隠さず教えてくれているところです。「最高の改善だな」からの失敗談は(ふふふ、伊藤さんらしいな)とニヤニヤしながら読んでしまいます。読者のみなさんは、そんな失敗を避けて進むことができます。

本書はTypeScriptの利用を前提にしています。サンプルプロジェクトやサンプルコードはTypeScriptで用意しました。JavaScriptやTypeScriptを使用したアプリケーション開発の経験がある方を読者として想定しているため、コマンドラインの操作方法やJavaScript、TypeScriptの基本的な書き方については解説していません。ご注意ください。

私の書いたパート

そんな書籍の中で、私は実践パートとして、第5章と第6章を執筆しました。

Jestの基本を理解して「さぁ実際に自動テストを書きながら開発を進めよう!」と思っても、いざ始めてみるとたくさん疑問が湧いてきます。「いつテストを書けばいいんだろう?」「どんなテストを書けばいいんだろう?」などなど。

そこで、第5章と第6章ではサンプルプロジェクトの開発を通して、私がいつテストを書くか、どんなテストを書くか、または書かないか、について自分の考え方を紹介しながら説明しています。ぜひ、一緒に手を動かして読み進めてみてください。

バックエンドとフロントエンドでは自動テストの活用方法が異なります。そこで、第5章ではバックエンドのウェブAPIアプリケーション開発について、第6章ではReactを使用したフロントエンドのSPAアプリケーション開発についてそれぞれ説明しています。

バックエンドは自動テストを先に書くことが多く、フロントエンドは後で書くことが多い、などの違いを楽しんでください。フロントエンドの見た目の部分は、自動テストではなくStorybookをガイドロープにして開発を進めています。

色々な考え方や進め方がありますし、私の進め方が正解だというつもりはありませんが、「こんな風に進める人がいるんだな」と、ひとつの参考にしていただけるように書きました。そこを足がかりにして、みなさんの好みや環境にあった進め方を見つけていただけると嬉しいです。

中上級者の方も楽しめます!

本書は自動テスト入門者向けの書籍ではありますが、中上級者の方にも楽しんでいただけます。第1章から第4章では、テストの考え方やJestの機能についての再確認ができます。なんとなくで使っていたけどそういうことなのか、というようなものもあるかもしれません。

実践パートの第5章と第6章は、入門者の方とは違った視点で読んでいただけます。バックエンド開発、フロントエンド開発に対して、私がどのように自動テストを活用して開発を進めているかを紹介しているので、「自分だったらこうするなぁ」「あぁ、ここは同じだなぁ」と、ご自身の進め方と比べながら楽しんでください。そんな風に違いを楽しんだら、ぜひその違いをツイッターなどで聞かせてくれたら嬉しいです。私自身の勉強にもなりますので。ぜひ、よろしくお願いします!

よろしくお願いします!

「Jestではじめるテスト入門」頑張って書きました!ぜひ手にとって楽しんでください。そして、感想を #Jest本 で聞かせてください!よろしくお願いしますー!

peaks.cc