Seeing is understanding.1
アジャイル開発と
TDD(テスト駆動開発)
株式会社永和システムマネジメント
株式会社チェンジビジョン
平鍋健児
Seeing is understanding.
平鍋健児
•  ㈱永和システムマネジメント
–  福井市(本社)、上野東京(⽀社)、沖縄(事務所)
–  「⾦融」、「医療」、「組込みシステム」
–  「Google Apps と KAIZEN クラウド」
–  「Ruby と Agile」を使ったシステム開発
•  株式会社チェンジビジョン
–  福井市(開発部)、上野東京(本社)
–  astah* (旧:JUDE) の開発
Seeing is understanding.
世界に50万⼈のユーザー
Seeing is understanding.
Seeing is understanding.
Seeing is understanding.6	
◎	 ●
●
本社/福井市
東京支社/神田
沖縄事務所/那覇市
Seeing is understanding.
東京と福井
7
Seeing is understanding.
東京
Seeing is understanding.
福井
Seeing is understanding.20代 30代 40代
⽣活の中の喜び
Uターンの意味(平鍋の場合)
損益分岐点的な何か…損益分岐点的な何か…
福井
東京
Seeing is understanding.11
アジャイル開発って?
Seeing is understanding.12
プロセスとしてのAgile
•  短いサイクルで、分析、設計、実装、テストを並列
に⾏う
•  タイムボックス型、進化型開発
分析	
設計	
実装	
テスト	時間	 時間	
要求(スコープ) 要求(スコープ)Waterfall Agile
Beck 2000Royce 1970
最後に動くものができる
動くものが徐々に
できあがり、成長する
Seeing is understanding.13
分割の仕⽅
•  顧客に分かる機能で切る。
•  層で切らない。
•  ビジネスの価値が分かる。
•  やりがい、コミュニケーション
"These days we do not program software
module by module;
we program software feature by feature.“
           —Mary Poppendieck
by Akiyah
Seeing is understanding.14
アジャイルの
プラクティス(例 XP)
•  計画ゲーム
•  ⼩規模リリース
•  メタファー
•  シンプルデザイン
•  テスティング
•  リファクタリング
•  ペアプログラミング
•  共同所有権
•  継続的インテグレーション
•  週40時間
•  オンサイト顧客
•  コーディング標準
Seeing is understanding.15
今買って読むならこれ!
p.16
Seeing is understanding.17
⾼速に⽯橋を
叩いて渡る
「開発環境」
協働でゴールに
向かう
「チーム環境」
ビジネス価値、
顧客満⾜、市場創造
継続的インテグレーション
テスト駆動開発
リファクタリング
ペアプログラミング
アジャイルモデリング
…
その他
朝会
タスクかんばん
バーンダウンチャート
ふりかえり
…
その他
アジャイルの
レフトウィング
アジャイルの
ライトウィング
アジャイルのゴール
ソーシャルプラクティス 技術プラクティス
p.18 Project Facilitation by Kenji Hiranabe is licensed under a Creative Commons Attribution 3.0 Unported License.
タスクかんばん	
l  作業の見える化	
– ToDo(未実施)

Doing(実施中)

Done(完了)

で管理。	
– 各自の作業を指示しなく

ても、毎朝自発的に

作業開始。	
– フォーマットは徐々に

カイゼン。	 タスクかんばんの例	
※バーンダウンチャーなどと共に、とにかく、壁に貼る。「情報発信器」とも呼ばれる。	
作業の見える化は、「タスクかんばん」で行なう。	POINT
(協⼒:チェンジビジョンastah* チー
ム)
p.19 Project Facilitation by Kenji Hiranabe is licensed under a Creative Commons Attribution 3.0 Unported License.
バーンダウンチャート	
l  進捗の見える化	
– バーンダウン(下向き)	
– タスクかんばんと連動	
– 中間成果物で

は計測しない。	
– メールでエクセルシート

を配布したり、

サーバに置いたから

見てね、はナシ。	
バーンダウンチャートの例	
全体進捗は、「バーンダウンチャート」で見える化、繰り返しのリズムづくり	POINT
(協⼒:永和システムマネジメント:チー
ム⾓⾕)
p.20
「かんばん-nano」スーツにもベストフィット!	POINT
ポータブルかんばん	
(協力:CCS 佐藤竜一さん)
テスト駆動開発 (TDD:Test-Driven Development)
l  ユニットテストを作り、ユニットテスト
で動作を確認しながら、開発をすすめる
という、開発⼿法
l  ユニットテスト、リファクタリング、ペ
アプログラミングと相互補完する
ユニットテスト リファクタリングTDD
汚い
きれい
(すぐには)動かない 動く
レッド
リファクタ
リング
グリーン
1.  テストコードを書く
2.  失敗させる 4. それを成功させ
る
3. もっともシンプ
ルな
製品コードを書く
5. リファクタ
リング
6. 繰り返す
TDDの⼿順
テストコードを

書く	
コンパイルの	
み通り製品	
コードを

書く	
テストの失敗を	
確認する	
テストが通る	
最小のコードを	
記述する	
テストが通ること

を確認する	
不吉な臭いは	
リファクタリング	
テストが通ること	
を確認する	
1	 2	 3	 4	
5	6	7	
8	 短時間で繰り返す
27
StackのTDDデモ	
•  isEmpty()でスタックが空の場合true。
•  size()でスタックのサイズを取得する。
•  push(v)で引数の値をスタックの⼀番上に
積む。
•  pop()でスタックの⼀番上の値を取り除く。
(値は返さない C++流)
•  top()でスタックの⼀番上の値を取得する。
「⾞窓からTDD」で検索
28	(C)2002-2015 Eiwa System Management, Inc.	
TDDの主な3つのアプローチ	
return 0; return 3; return augend + addend;Fake It Refactoring
return 0; return 3;
return augend + addend;
Fake It
Refactoring
Triangulation(テストを追加)
return 0; return augend + addend;
テストに失敗	
テストに成功	
Fake It → Refactoring	
Triangulation(三角測量)	
Obvious Implementation(明白な実装)	
Fail It
Fail It
Fail It
Seeing is understanding.
さらに知りたく
なった⼈ ?
29
『アジャイル開発とスクラム』
• 顧客・技術・経営の3者をつなぐ
ために、アジャイルと⽇本経営の
接合点を探る
• 海兵隊の組織とアジャイル
• 知識創造プロセスとアジャイル
• 実践知リーダーとアジャイル
• 富⼠通・楽天・リクルートの事例
• Jeff Sutherlandインタビュー
平鍋健児+野中郁次郎著
http://objectclub.jp/technicaldoc/testing/stack_tdd.pdf
33
今買って読むならこれ!
Agile and TDD Demo
Agile and TDD Demo
Agile and TDD Demo
Agile and TDD Demo

Agile and TDD Demo