“テスト駆動開発” は「テストを最初に書くこと」じゃなかった

読み終えるまでの目安: 5分

目次

この本はどんな人におすすめ?

  • 「テスト駆動開発ってテストを最初に書くってことでしょ?」と思っている人
  • ソフトウェア設計の手法を学びたい、もしくはヒントを得たい人
  • テスト駆動開発の思想・哲学を学びたい人

本の情報

タイトルテスト駆動開発
著者Kent Beck
訳者和田 卓人
発行日2017.10.20

読んだ感想

前提として、私はこの本を読みはしたが、写経はまだやっていない

とりあえず読んでみたという段階での理解・所感をまとめたものなので、普段からテスト駆動開発を実践されている方たちからすると、的外れな内容に見えるかもしれない

テストを最初に書くだけだと思っていた

まずはなんといってもこの衝撃

「テストを先に書くってだけでしょ?」「だから、書こうと思っていたテストが書けずに終わる、みたいなこともなくなるっていう話でしょ?」とか思っていた

全然違った
いや、テストを最初に書くということ自体は合っている
書こうと思っていたテストが書けずに終わることもなくなるかもしれないが、それは本質ではない

「テスト駆動開発」は単なるコーディングプロセスではなく、反復的な設計手法も内包していた

テスト駆動開発の本質とは、常に安心感と思考のとっかかりを作りながら設計と実装のイテレーションを回すことだと感じた

思ったよりシンプル

テスト駆動開発のサイクルはとてもシンプルで、3つの作業で構成される

  1. テストを書く
    これから実装する機能のテストを書こう
    もちろん、この時点では本体の実装がないためテストは失敗する
  2. テストを通す
    とにかく早くテストを通す!
    中身は空でもいいので、必要なものを定義する!テストを通すためならあらゆる罪が許される!!
    なんとテストが通った頃には設計通りの輪郭ができていて、しかもそれがテスト済みらしい…一体どういうことなんだ… 🤯
  3. リファクタリング
    テストが通るままで、コードをあるべき姿にする
    リファクタリングにはロジックの実装も含まれる
    さっき犯した罪はここで清算しよう
    これが終わったら、晴れて求めていた実装とテストができあがっているというわけだ

これをとにかく繰り返す

…このサイクル、めちゃめちゃ賢くないか??

私の感じた技ありポイントは以下の通りだ

  • 「そもそもテストって最初に書けるの?」と思ったけど、どのみち最初に設計する (つまり仕様と使い方をイメージする) んだから書けるじゃん
  • テストを書いた後、まずテストを通すことだけに集中するのが偉い
  • テストと仮実装が思考のとっかかりになる
    最後のリファクタリングで本命の実装をしていくわけだが、本来はこの作業はとても難しい
    しかし、この時点でテストと仮実装があるため、実装のタイミングでは内側のロジックのみに集中できる
    実装の時点ですでに思考のレールが整備されているというわけだ
  • 「大丈夫、何かあったらテストが教えてくれる」
    この安心感を先に作っておける
    もはや健康にいい

和田さんの語り口だ

これはもう読んで字の如く

訳者が和田さんということもあり、終始和田さんっぽい読み味で、終始和田さんの声で再生された

ただ、アメリカ独特の言い回しなのかジョークなのか、表現がピンとこない箇所はたくさんあった
洋書あるある

結論

そうか、テスト駆動開発は健康法だったんだ

というのが私がこの本を読んで得た仮説である

では、これから実践を通してこの仮説を検証していくとしよう

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください