受け入れテスト駆動開発に関するおすすめのスクラム本

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

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

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

受け入れテスト駆動開発に関するおすすめのスクラム本

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

製品のプログラムを書く前に、仕様をテストコードで定義し、そのテストが通るように製品のプログラムを書いていくテストファーストな開発手法です。

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

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


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

本書は、テスト駆動開発 (test-driven development:TDD)の概要がわかりやすく書かれた本書は下記を網羅しており、TDDの初心者にも馴染みやすく、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の草創期から活動してきたエンジニアの一人で、認定スクラムトレーナー(Certified Scrum Trainer®: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 Gerard Meszaros(著)

  • より良いテストを書く - そしてより早く書く
    (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社のシニアコンサルタント、カルガリーをベースにしたアジャイル開発に特化したコンサルタントです。
テスト駆動開発フレームワークに関する長い経験があり、自動パターン、ソフトウェアのリファクタリング、テスト、テストデザインの先駆者です。


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

XPの中で「ペアプログラミング」と並んで重要な「テストファースト」「リファクタリング」の2要素に焦点を当てて、テスト駆動開発について具体的に解説。
XPを導入している開発者にとって注目の書籍

■ 著者

ケント・ベック(Kent Beck)

エクストリーム・プログラミング (XP) の考案者であり、アジャイルマニフェスト (Agile Manifesto) の起草者のひとり。
XP以外に、デザインパターン、テスト駆動開発、スモールトーク(Smalltalk)に関する著書がある。
オレゴン大学のコンピュータサイエンスの修士号を取得しており、パターン、テスト駆動開発、エクストリームプログラミングなどのアイデアを提唱して、常にソフトウェアエンジニアリングの定説に挑戦している。現在は、Three Rivers InstituteとAgitar Softwareに所属している。


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」の著書があります。


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の草創期から活動してきたエンジニアの一人で、認定スクラムトレーナー(Certified Scrum Trainer®:CST®)としてトレーニングコースを提供、現場でクライアントチームを指導し、パフォーマンスの向上や継続的な学習文化の確立を担いました。

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


認定スクラム開発者:Certified Scrum Developer® (CSD®)研修とは
■ 概要
スクラムの開発チームメンバーとして、正しくかつ効率的に恊働できる人材育成を目的として Scrum Alliance® により作られた、アメリカ発の体系的ソフトウェア開発者の教育・認定プログラム。
スクラムの原理原則を理解して、実際に恊働できる能力が Scrum Alliance® が規定した水準を満たしている事を証明します。
スクラムの開発チームメンバーとして必要かつ効率的なコミュニケーション、技術力が Scrum Alliance® の水準を満たしている事を Scrum Alliance® 認定スクラムトレーナー(CST®)が評価します。

■ 学べること
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)
− レガシーコードの改善方法 など

■ 認定スクラム開発者(Certified Scrum Developer®:CSD®)資格取得
本資格の取得には、Scrum Alliance®が定めた5日間の研修を受講いただきます。
2日間で、 スクラム(Scrum)の原理原則や、正しいスクラムを理解いただき、残りの3日間でソフトウェア開発者として必要な技術的な教育を行います。
参会者のみなさまには、研修を通じて、認定スクラムトレーナー(Certified Scrum Trainer®:CST®)から適切に指導を受けながら、「アジャイルな技術者として能力があること」を証明いただきます。
これらの必要な条件を満たすことで、2年間の資格取得を申請する権利を得ることができます。