Upload
kenji-hiranabe
View
1.127
Download
0
Embed Size (px)
Citation preview
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 2000 Royce 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
567
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
今買って読むならこれ!