『実践テスト駆動開発』(GOOS)をオススメする3つの理由

1年以上前
斎藤 紀彦
アジャイルコーチ
斎藤 紀彦

はじめに

弊社の和智も翻訳者の一人である、『実践テスト駆動開発 (Object Oriented SELECTION)』(通称GOOS)を読みました。
出版から10年近く経った現在においても、アジャイル開発やスクラム実践者にとって本書の重要性はますます増していると感じました。
そこで、今回は印象的だった箇所を中心に、本書をオススメしたい3つの理由をご紹介します。

  1. 内側のフィードバックループの重要性や、構築のヒントが得られる
  2. TDDを実際に開発現場に導入する際の考慮点が豊富に紹介されている
  3. オブジェクト指向の優れたガイドとしても活用できる

『実践テスト駆動開発』をオススメする3つの理由

1. 内側のフィードバックループの重要性や、構築のヒントが得られる

本書では、ソフトウェアの品質を、コードの保守性などの開発者や管理者のニーズへの対応(内側の質)と、機能性や性能などの顧客やユーザーのニーズへの対応(外側の質)の2つの側面として整理しています。
本書が特徴的なのは、TDDを(よく言われているような)「内側の質」に関するサイクルとしてだけではなく、「内側の質」と「外側の質」両方に関するサイクルと表現していることです。
具体的には、下図のように、最初にフィーチャに対する受け入れテストを書き、ユニットレベルのテスト/実装/リファクタリングのサイクルを回しながら、フィーチャを開発するという外側と内側のフィードバックループの軌跡としてTDDが表現されています。

  • 本書におけるTDDのサイクル(p.44の図5-1を参考に作成) 図1.png

さて、筆者が普段支援しているエンタープライズアジャイルやスクラムの文脈で、見落とされがちなのが内側のフィードバックループです。

外側のフィードバックループが機能していても、内側のフィードバックループが機能しておらず、読みづらく保守性が低いコードが量産され、次第次第にアジリティが低下していくチームが多いと感じます。
本書を読むことで、内側のフィードバックループを構築し、ソフトウェアの「内側の質」を高める重要性や、実際の構築方法についてヒントが得られるでしょう。
(上記について書かれた第1章と第2章はコードの知識が必要ないため、技術に不慣れな方も目を通していただくと良いと思います)

2. TDDを実際に開発現場に導入する際の考慮点が豊富に紹介されている

TDDを学ぶ際に最初に読むべき一冊は、Kent Beck氏の『テスト駆動開発』でしょう。
しかし、TDDを実際に開発現場に導入してプロダクションコードに適応するためには、『テスト駆動開発』で得られる知識だけでは不十分な場面が多いと言えます。
そこで、本書の出番です。
本書には、TDDを実際に開発現場に導入する際に考慮すべき下記のようなトピックが幅広く紹介されています。

  • サードパーティコードのテスト
  • エラー処理のテスト
  • 非同期処理のテスト
  • データベース処理などの永続性のテスト
  • テストデータの準備
  • テストコードの可読性の向上

冒頭で触れたように、出版から時間が経っているため、本書の解決策をそのまま利用するというよりは、各トピックについての考え方やアイディアを参考にする、という活用方法が良いかと思います。
上記を指して、TDDなどで著名な和田 卓人 (@t_wada)氏は、本書をTDDの「二冊目のバイブル」と呼んでいます

3. オブジェクト指向の優れたガイドとしても活用できる

本書の原題(『Growing Object-Oriented Software, Guided by Tests』)を読むと、本書がTDDだけではなくオブジェクト指向についての書籍であることがわかります。
オブジェクト指向について、著者は、オブジェクトの構成などの静的な側面よりも、オブジェクト間のコミュニケーションといった動的な側面をより強調しています。
本書の第Ⅲ部では、実際のアプリケーション開発を例にしながら、テストを書く過程で必要なオブジェクトやメッセージが浮かび上がるというオブジェクト指向の設計が追体験でき、オブジェクト指向についての深い学びを得ることができます。

さらに、『リファクタリング』、『エクストリームプログラミング』、『レガシーコード改善ガイド』、『エリック・エヴァンスのドメイン駆動設計』といった、アジャイル開発の重要書籍とそのエッセンスが豊富に紹介されている点も本書の大きなアドバンテージです。

おわりに

今回は、『実践テスト駆動開発 (Object Oriented SELECTION)』をオススメしたい3つの理由について述べてきました。
技術スタックや技術の進化に合わせて読み替えなければならない所が多少あるものの、全体としては現在でも大変有益な本だと思ったため、興味ある方は、ぜひお手に取ってみてください。
最後に、Graatではテスト駆動開発(TDD)の導入支援も行っているため、ご興味ある方は、お気軽にお問い合わせください。
最後までお読みいただき、ありがとうございました!!

エンタープライズアジャイルを阻む組織やプロセスと、その処方Graatが大成建設のDX基盤「X-grab」の設計を担当
SHARE