『テスト駆動開発』新人エンジニアにオススメする技術書

2020年06月30日 火曜日


【この記事を書いた人】
k-nagase

ストレージサービスの中の人です。インフラからフロントまで興味をもって幅広く触っています。

「『テスト駆動開発』新人エンジニアにオススメする技術書」のイメージ

はじめまして。k-nagaseと申します。
IIJオブジェクトストレージサービスの開発運用に携わっているエンジニアです。
今回は新人エンジニアにオススメする技術書の紹介ということで、「テスト駆動開発」を取り上げます。

書籍情報

テスト駆動開発

  • 著者:Kent Beck 著/和田 卓人 訳
  • オーム社

ソフトウェア開発に携わり始めた方にぜひ読んで欲しい本です。

テスト駆動開発について

本書はテスト駆動開発を考案した張本人であるケント・ベックさんが、テスト駆動開発について書いた唯一の本です。また、翻訳は日本におけるテスト駆動開発の第一人者である和田卓人さんが手掛けています。

内容としてはそのままズバリで、ソフトウェア開発手法の1つであるテスト駆動開発について書かれています。

テスト駆動開発は「動作するきれいなコード」を追い求めるためのソリューションの1つです。

今までの基本であった「要件定義→設計→実装→テスト」というよく知られている開発プロセスとは異なったもので、最初は私も驚きました。

従来よりも実践的な手法で、着実に開発を進めていくうえでのヒントになると思います。

テスト駆動開発のオススメポイント

私が思うオススメポイントを3つ挙げます。

題材のシステムを実際にテスト駆動開発で組み上げていく

具体的な題材を取り上げて、テスト駆動開発でシステムを組み上げていく様を見ることができます。そのため、抽象的なフローを提示されるより確実に実践のイメージが湧きます。

このような構成になっているので、ぜひサンプルコードを追って写経してみてください。

本ではJavaとPythonを使用していますが、自分の好みの言語でよいと思います。ちなみに私はGoで写経しました。

コード変更の理由が細かく書かれている

コードに変更を加えるときに何を達成するための変更なのかが細かく説明されています。

こういった本ではサンプルコードばかり追いかけてしまいますが(私もそうですがw)、コード修正の背景を理解したうえで見ないと意味ないですからね。

せっかく丁寧に書かれているので、しっかり読みましょう!

有効なテストを書くためのテクニックが示されている

いくらテストが大切だと言っても、意味のないテストでは役に立ちませんよね。しかし、有効なテストを書くためのパターンやテクニックなどはなかなか教わる機会がありません。

その点、この本にはテストのデザインパターンや有効なテストにするためのテクニックが書かれています。

私はこれを足掛かりにどのような部分をテストするべきなのか、どのようにテストコードを書くかを学んでいます。

実践してみての感触

私はこの本をきっかけにテスト駆動開発にチャレンジし始めました。そこで自分で実践してみて感じた2点のうれしいことと、注意点を紹介します。

うれしい①:安心感をもって開発できるようになった

仕様をテストコードという形にし、それをガイドラインとして開発していきます。テストを実行することで簡単に動作するかを確認することができるため、安心感をもって開発することができます。もし動かなくなってもこまめにテストを実行しているため、テストの失敗という形で早期に気づくことができます。

また、これによって大きな手戻りが発生しにくく、開発全体の効率も良くなっている感覚があります。

うれしい②:ユニットテストを手厚くしやすくなった

一般的に、ユニットテストは最も手厚くしておきたいレイヤだと思います。しかしプロダクトコードを書ききってからテストコードに取り掛かると、私の場合はどのようなコードを書いたらいいのか戸惑ってしまい、意味のないコードを量産してしまうということがありました。

テスト駆動開発ではプロダクトコードのガイドラインとしてテストコードを常に書くので、書き終わったときには仕様の充足性を確認するのに十分なテストコードが一緒に書かれています。そのため、以前ほどの負担を感じることなく合理的なユニットテストをできるようになったと感じています。

注意点:リファクタリングを打ち切るタイミングが分からない

リファクタリングは突き詰めるといつまでもやってしまう作業の代表格だと思います。私もどこまでやればいいのかの目途が分かっていません…。

ですが、今のところ以下の2つを指針にリファクタリング完了としています。

  • コピペなどで全く同じ処理が複数発生している場合は、それらが1つになったときに完了とする
  • リファクタリングの対象コードの大きさに応じて、1~2時間ほどで制限時間を設けて完了とする

2つ目は個人の感覚なのでほとんど役に立たないと思いますが、ご参考までに。ここはもう少しいいアイデアを考えないといけませんね。

あわせて見てほしい講演

本書を読むにあたって、あわせて見てほしい講演があります。それは、この本の翻訳者である和田卓人さんのSeleniumConf Tokyo 2019での講演です。

本人のブログに文字起こしと講演の動画があります。(https://t-wada.hatenablog.jp/entry/clean-code-that-works)

この講演では、「動作する綺麗なコード」を目指してソフトウェア開発の現場でどのような経緯があり現代のソフトウェア開発に至ったか、テスト駆動開発における注意点などが分かりやすく語られています。

テスト駆動開発をしっかり機能させるために大切なことが話されているため、ぜひご覧ください。

まとめ

今回の内容をまとめます。

  • テスト駆動開発は「動作する綺麗なコード」を追い求めるためのソリューションの1つ
  • テスト駆動開発のプロセスを細かく丁寧に説明している
  • 具体例を用いているため、実践に移行しやすい
  • 有効なテストを書くための知識を得られる

私はエンジニアとしては駆け出しですが、この本が開発プロセスやテストの書き方を学ぶきっかけになりました。

まだ試行錯誤しながらではありますが、自分の肌に合った開発手法に出会った気がしています。

気になった方は、この機会にポチってみてください。

 

Information

今週は「IIJエンジニアがオススメする技術書」特集をお送りしています。
新人エンジニアの皆さんは是非参考にしてください。
他の記事はこちら[オススメ技術書]

また、みなさんもオススメする技術書がありましたらこちらでご紹介ください!
Twitterハッシュタグ:#オススメ技術書

k-nagase

2020年06月30日 火曜日

ストレージサービスの中の人です。インフラからフロントまで興味をもって幅広く触っています。

Related
関連記事