テスト駆動開発(TDD)に関するおすすめのスクラム本

アジャイルやスクラムをはじめようと思ったとき、はじめたばかりのとき、実際にはじめてみて壁にぶつかったとき、 さまざまなシーンで、インターネットの記事や資料、書籍を探して読んでいるでしょう。

今回は、スクラム開発でも特に「スクラムチームにおける開発者(エンジニア・技術者・プログラマ)」のみなさんにとって ぜひお役立ていただきたい本をご紹介します。

特に、テスト駆動開発(test-driven development:TDD)、リファクタリング(refactoring)、 オブジェクト指向設計(object-oriented design:ODD)、 受け入れテスト駆動開発(Acceptance Test Driven. Development:A-TDD)、 エクストリームプログラミング(extreme programming:XP)、自動化、デザインパターン・パターン指向など、 技術的事項をジャンルに区切り、また、「プラグラマとしての姿勢」や「チームワーク」に至るまで、 開発者(エンジニア・技術者・プログラマ)のみなさんにぜひ一度は読んでいただきたい本を紹介いたします。

テスト駆動開発(TDD)に関するおすすめのスクラム本

テスト駆動開発 (test-driven development:TDD)とは、プログラム開発手法のひとつです。

製品のプログラムを書く前に、仕様をテストコードで定義し、そのテストが通るように製品のプログラムを書いていくテストファーストな開発手法です。 実装前に書いたテストコードに適合するように実装とリファクタリングを進めていくこの開発手法は、答えを先につくり、 その答えにたどり着くための方法を書いていくという、通常の概念とはまったく逆の発想から来る開発手法です。

テストコードの定義、実装、コードの洗練という短い工程を繰り返すこのスタイルは、多くのアジャイルソフトウェア開発手法、 スクラム(Scrum)開発においても強く推奨されています。


Test Driven: TDD and Acceptance TDD for Java Developers Lasse Koskela (著)

テスト駆動開発 (test-driven development:TDD)の概要についてわかりやすく書かれた本書は、以下のような具体的手法を網羅しているため、 TDDの初心者にとっても馴染みやすい1冊です。

TDDに慣れたエンジニアにとっても、あまり知られていない効果的な技術を会得するために役立つ内容となっています。

  • Javaでの実践方法(Learn hands-on to test drive Java code)
  • TDDの落とし穴の回避方法(How to avoid common TDD adoption pitfalls)
  • 受け入れテスト駆動開発とFitフレームワーク(Acceptance test driven development and the Fit framework)
  • Java EEコンポーネントサーブレット、JSP、スプリングコントローラーをテストする方法(How to test Java EE components-Servlets, JSPs, and SpringControllers)
  • マルチスレッドプログラムやデータアクセスコードなどの難しい問題(Tough issues like multithreaded programs and data access code)

■ 著者

ラッセ・コスケラ(Lasse Koskela)

ラッセ・コスケラはフィンランドのアジャイルコミュニティの先駆者の一人で、国際的なカンファレンスに頻繁に登壇しています。

リアクター社(Reaktor) にて、 ソフトウェア開発プログラマー、コンサルタント、コーチ、トレーナー、プラクティショナー(software product development consultant, coach, trainer, and practitioner.)として、 エンタープライズアプリケーションから広範囲のドメイン用に開発されたミドルウェア製品に至るまで、さまざまなソフトウェアプロジェクトに従事しています。TDDの草創期から活動してきたエンジニアの一人で、 認定スクラムトレーナー(CST®)としてトレーニングコースを提供、現場でクライアントチームを指導し、パフォーマンスの向上や継続的な学習文化の確立を担っています。


実践テスト駆動開発 (Object Oriented SELECTION) Steve Freeman(著)、Nat Pryce(著)、和智 右桂(翻訳)、高木 正弘(翻訳)

「20年来の経験に裏打ちされた、実践的テスト駆動開発書」と銘打たれた本書は、

  • いかにしてテスト駆動開発をプロジェクトに適合させればよいか
  • どこから手を付けるか
  • ユニットテストとエンドツーエンドテストを両方とも書かねばならないのはなぜか
  • テストに開発を駆動させるとはどういう意味か

といった、プロジェクトで遭遇しがちな疑問に道筋を与え、ソフトウェアを肥大化させずに「育てる方法」が書かれています。

プロフェッショナルを目指す開発者は、ぜひ手にとってみてください。

■ 著者

スティーブ・フリーマン(Steve Freeman)

アジャイルソフトウェア開発を専門とする独立コンサルタント。
ナット・プライスと共に、2006年にアジャイル・アライアンスのゴードンパスク賞を受賞している。
「London Extreme Tuesday Club」の設立メンバーであると同時に、「London XP Day」初回の議長を務めている。
国際会議を頻繁に主催したり、あるいは国際会議で登壇したりしている。
IBMのパッケージ開発から有名な研究所でのプロトタイプ開発に至るまで、実に幅広い組織で仕事をしてきている。

ナット・プライス(Nat Pryce)

インペリアル・カレッジの博士号取得。
プログラマ、アーキテクト、トレーナー、コンサルタントとして活動している。
学術的な研究プロジェクトにも従事し、時折大学で教鞭もとっている。XPは早くから採用しており、TDDをサポートするオープンソースライブラリにもいくつか貢献している。さらに「London XP Day」カンファレンスの設立メンバーの一人でもある。 また、定期的に国際会議で登壇もしている。
ロンドンに拠点を置いている(本データはこの書籍が刊行された当時に掲載されていたものです)。


xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler)) Gerard Meszaros(著)

近年最も有名なユニットテストのフレームワークであるxUnit。 本書は、そのxUnitを用いた自動テストについて書かれたガイドの決定版と言えるでしょう。

アジャイルコーチであり、自動テストのエキスパートであるジェラルド・メーサーロシュは、本書の中で、 コードを書く → 理解する → それらを維持するための68ものパターンを説明してくれます。 さらに彼は、それらを繰り返しに耐えられる屈強かつ費用対効果の高いものとする方法を紹介しています。

本書は以下のようなトピックから構成されています。

  • より良いテストを書く - そしてより早く書く(Writing better tests--and writing them faster)
  • 自動テストの4つのフェーズ:備品のセットアップ、テスト対象システムの動作確認、結果の検証、および備品の分解(The four phases of automated tests: fixture setup, exercising the system under test, result verification, and fixture teardown)
  • テストスタブとモックオブジェクトを使用してソフトウェアをその環境から分離することによるテストカバレッジの向上(Improving test coverage by isolating software from its environment using Test Stubs and Mock Objects)
  • テスト容易性向上のためのソフトウェア設計(Designing software for greater testability)
  • 問題を浮き彫りにし、いつどうやって駆除するかにスポットを当てたテストスメルの使い方(コードスメル、動作スメル、計画スメルを含む)Using test "smells" (including code smells, behavior smells, and project smells) to spot problems and know when and how to eliminate them)
  • シンプルさ、堅牢性、実行速度を向上させるためのリファクタリングテスト(Refactoring tests for greater simplicity, robustness, and execution speed)

■ 著者

ジェラルド・メーサーロシュ(Gerard Meszaros)

ジェラルド・メーサーロシュは、チーフサイエンティストで、ClearStream Consulting社のシニアコンサルタント、カルガリーをベースにしたアジャイル開発に特化したコンサルタントです。
テスト駆動開発フレームワークの長い経験があり、自動パターン、ソフトウェアのリファクタリング、テスト、テストデザインの先駆者です。


テスト駆動開発入門 ケント ベック(著)

本書では、エクストリーム・プログラミング(extreme programming:XP)の中で、 ペアプログラミングと並んで重要であると言える「テストファースト」「リファクタリング」の2要素に焦点を当て、 テスト駆動開発について具体的に解説をしています。

■ 著者

ケント・ベック (Kent Beck)

ケント・ベックはエクストリーム・プログラミング (XP) の考案者でアジャイルマニフェスト (Agile Manifesto) の起草者の一人。
彼はデザインパターン、テスト駆動開発、Smalltalkに関する本を書いた。 ベックはウォード・カニンガムと一緒にCRCカードを普及させた。 SmalltalkのユニットテストのフレームワークであるSUnitを開発した。 さらにエーリヒ・ガンマと共同でJavaのユニットテストのフレームワークJUnitを開発した。
ケント・ベックはオレゴン大学のコンピュータサイエンスの修士号を取得している。※ Wikipediaより


Test-Driven Development: A Practical Guide (Coad) David Astels(著)

本書は、プログラマーのための真のプロジェクト、真のチャレンジ、真のソリューション、真のコードを実現するためのTDD実践書です。

JavaとJUnitを用いたTDDの1から10まで網羅されており、TDDを推し進めるために本当に役立つ、 リファクタリングやモックオブジェクトを利用するための、意図的にプログラミングするためのツールやテクニックが紹介されています。

C++、C#/.NET、Python、VB6、RubyやSmalltalkのためのTDDのフレームワークも紹介されており、より良いコードを書く楽しさを実感できることでしょう。

■ 著者

デイブ・アステルス(David Astels)

デイブ・アステルスは、ChannelFireball.comのテクノロジーディレクターとして、 電気エネルギー取引システムにおける知的財産保護システムの埋込環境制御のソフトウェア開発者として20年以上の経験があり、 10年以上に渡ってオブジェクト技術者として専従しています。
エクストリーム・プログラミング(Extreme Programming:XP)に特化した彼の会社で、 Javaソリューションの普及に努めています。他に「 A Practical Guide to extreme Programming」の著書があります。 (ISBN 0130674826).


Effective Unit Testing: A guide for Java developers Lasse Koskela (著)

本書には、良いテストの書き方が紹介されています。
良いテストとは、ポイントが簡潔であり、表現力が豊かで、有用で、かつメンテナンスが可能であるテストのことを指します。

ロイ・オシェローブのベストセラー「The Art of Unit Testing」にインスパイアされた本書には、 特にJavaの世界のツールやプラクティスにフォーカスしており、 振る舞い駆動開発(behavior-driven development)のような新しいテクニックが例とともに書かれています。

■ 著者

ラッセ・コスケラ(Lasse Koskela)

ラッセ・コスケラはフィンランドのアジャイルコミュニティの先駆者の一人で、国際的なカンファレンスに頻繁に登壇しています。
リアクター社(Reaktor) にて、ソフトウェア開発プログラマー、コンサルタント、コーチ、トレーナー、 プラクティショナー(software product development consultant, coach, trainer, and practitioner.)として、 エンタープライズアプリケーションから広範囲のドメイン用に開発されたミドルウェア製品に至るまで、 さまざまなソフトウェアプロジェクトに従事しています。
TDDの草創期から活動してきたエンジニアの一人で、認定スクラムトレーナー(CST®) としてトレーニングコースを提供、現場でクライアントチームを指導し、パフォーマンスの向上や継続的な学習文化の確立を担っています。

Odd-e Japanでは、テスト駆動開発 (test-driven development:TDD)について実践的に学んでいただける認定スクラムデベロッパー(CSD®)研修を開催しています。


認定スクラムデベロッパー(CSD®)研修とは

概要
スクラムの開発チームメンバーとして、正しくかつ効率的に恊働できる人材育成を目的として Scrum Alliance® により作られた、 体系的ソフトウェア開発者の教育・認定プログラム。
スクラムの原理原則を理解して、実際に恊働できる能力が Scrum Alliance® が規定した水準を満たしている事を証明します。
スクラムの開発チームメンバーとして必要かつ効率的なコミュニケーション、技術力が Scrum Alliance® の水準を満たしている事を評価します。
学べること
Scrum Alliance®「Certified Scrum Developer® (CSD®)」の知識と技術を取得し、認定資格取得を目標とします。
実際に理想的なスクラム開発チームの1週間のスプリントを体験する過程で、小さなアプリケーションを構築しながら、適切な知識や技術、チームとして効率的に働きく習慣を得るでしょう。
本コースでは、トレーニング中にアジャイルコーチからコーチングも受けられるので、実践での悩みも相談できます。
近年、高い技術力を求められる市場において、有益な能力を保有している証明になります。
併せて、継続的に技術力の向上、継続的な改善できる能力を持っている証明にもなります。
また本研修は、高い技術力を持つエンジニアへ成長させ、参加者が良いスクラムの実践者となれるようにサポートします。
詳しくはこちら
Odd-e Japan トレーニング申込み
Odd-e JapanのCertified Scrum Developer® (CSD®)研修
Certified Scrum Developer® (CSD®) - Scrum Alliance®
研修プログラム
スクラム(Scrum)のプラクティス
− スプリント計画
− バックログリファインメント
− スクラムの開発チームメンバーとして働くということなど
技術的なプラクティス
− アジャイルな設計
− TDD(test-driven development)
− CI(継続的インテグレーション)
− A-TDD(Acceptance Test Driven Development)
− リファクタリング(refactoring)
− レガシーコードの改善方法 など
認定スクラムデベロッパー(CSD®)資格取得
本資格の取得には、Scrum Alliance®が定めた5日間の研修を受講いただきます。
2日間で、 スクラム(Scrum)の原理原則や、正しいスクラムを理解いただき、残りの3日間でソフトウェア開発者として必要な技術的な教育を行います。
参会者のみなさまには、研修を通じて、認定スクラムトレーナー(CST®)から適切に指導を受けながら、「アジャイルな技術者として能力があること」を証明いただきます。
これらの必要な条件を満たすことで、2年間の資格取得を申請する権利を得ることができます。