37
Seeing is understanding. 1 アジャイル開発と TDD(テスト駆動開発) 株式会社永和システムマネジメント 株式会社チェンジビジョン 平鍋健児

Agile and TDD Demo

Embed Size (px)

Citation preview

Page 1: Agile and TDD Demo

Seeing is understanding. 1

アジャイル開発とTDD(テスト駆動開発)

株式会社永和システムマネジメント株式会社チェンジビジョン

平鍋健児

Page 2: Agile and TDD Demo

Seeing is understanding.

平鍋健児

•  ㈱永和システムマネジメント– 福井市(本社)、上野東京(⽀社)、沖縄(事務所)– 「⾦融」、「医療」、「組込みシステム」– 「Google Apps と KAIZEN クラウド」– 「Ruby と Agile」を使ったシステム開発

•  株式会社チェンジビジョン– 福井市(開発部)、上野東京(本社)– astah* (旧:JUDE) の開発

Page 3: Agile and TDD Demo

Seeing is understanding.

世界に50万⼈のユーザー

Page 4: Agile and TDD Demo

Seeing is understanding.

Page 5: Agile and TDD Demo

Seeing is understanding.

Page 6: Agile and TDD Demo

Seeing is understanding. 6

◎●

本社/福井市

東京支社/神田

沖縄事務所/那覇市

Page 7: Agile and TDD Demo

Seeing is understanding.

東京と福井

7

Page 8: Agile and TDD Demo

Seeing is understanding.

東京

Page 9: Agile and TDD Demo

Seeing is understanding.

福井

Page 10: Agile and TDD Demo

Seeing is understanding. 20代 30代 40代

⽣活の中の喜び

Uターンの意味(平鍋の場合)

損益分岐点的な何か… 損益分岐点的な何か…

福井

東京

Page 11: Agile and TDD Demo

Seeing is understanding. 11

アジャイル開発って?

Page 12: Agile and TDD Demo

Seeing is understanding. 12

プロセスとしてのAgile •  短いサイクルで、分析、設計、実装、テストを並列

に⾏う•  タイムボックス型、進化型開発

分析

設計

実装

テスト時間 時間

要求(スコープ) 要求(スコープ) Waterfall Agile

Beck 2000 Royce 1970

最後に動くものができる 動くものが徐々に

できあがり、成長する

Page 13: Agile and TDD Demo

Seeing is understanding. 13

分割の仕⽅

• 顧客に分かる機能で切る。• 層で切らない。• ビジネスの価値が分かる。• やりがい、コミュニケーション

"These days we do not program software module by module; we program software feature by feature.“            —Mary Poppendieck by Akiyah

Page 14: Agile and TDD Demo

Seeing is understanding. 14

アジャイルのプラクティス(例 XP)

• 計画ゲーム• ⼩規模リリース• メタファー• シンプルデザイン• テスティング• リファクタリング

• ペアプログラミング• 共同所有権• 継続的インテグレーション• 週40時間• オンサイト顧客• コーディング標準

Page 15: Agile and TDD Demo

Seeing is understanding. 15

今買って読むならこれ!

Page 16: Agile and TDD Demo

p.16

Page 17: Agile and TDD Demo

Seeing is understanding. 17

⾼速に⽯橋を叩いて渡る

「開発環境」

協働でゴールに向かう

「チーム環境」

ビジネス価値、 顧客満⾜、市場創造

継続的インテグレーション テスト駆動開発 リファクタリング ペアプログラミングアジャイルモデリング … その他

朝会 タスクかんばん バーンダウンチャート ふりかえり … その他

アジャイルの レフトウィング

アジャイルの ライトウィング

アジャイルのゴール

ソーシャルプラクティス 技術プラクティス

Page 18: Agile and TDD Demo

p.18 Project Facilitation by Kenji Hiranabe is licensed under a Creative Commons Attribution 3.0 Unported License.

タスクかんばんl  作業の見える化

– ToDo(未実施)Doing(実施中)Done(完了)で管理。

– 各自の作業を指示しなくても、毎朝自発的に作業開始。

– フォーマットは徐々にカイゼン。 タスクかんばんの例

※バーンダウンチャーなどと共に、とにかく、壁に貼る。「情報発信器」とも呼ばれる。

作業の見える化は、「タスクかんばん」で行なう。POINT

(協⼒:チェンジビジョンastah* チーム)

Page 19: Agile and TDD Demo

p.19 Project Facilitation by Kenji Hiranabe is licensed under a Creative Commons Attribution 3.0 Unported License.

バーンダウンチャートl  進捗の見える化

– バーンダウン(下向き)

– タスクかんばんと連動

– 中間成果物では計測しない。

– メールでエクセルシートを配布したり、サーバに置いたから見てね、はナシ。

バーンダウンチャートの例

全体進捗は、「バーンダウンチャート」で見える化、繰り返しのリズムづくりPOINT

(協⼒:永和システムマネジメント:チーム⾓⾕)

Page 20: Agile and TDD Demo

p.20

「かんばん-nano」スーツにもベストフィット!POINT

ポータブルかんばん

(協力:CCS 佐藤竜一さん)

Page 21: Agile and TDD Demo
Page 22: Agile and TDD Demo
Page 23: Agile and TDD Demo
Page 24: Agile and TDD Demo

テスト駆動開発 (TDD:Test-Driven Development)

l  ユニットテストを作り、ユニットテストで動作を確認しながら、開発をすすめるという、開発⼿法

l  ユニットテスト、リファクタリング、ペアプログラミングと相互補完する

ユニットテスト リファクタリングTDD

Page 25: Agile and TDD Demo

汚い

きれい

(すぐには)動かない 動く

レッド

リファクタ リング

グリーン

1.  テストコードを書く 2.  失敗させる 4. それを成功させ

3. もっともシンプルな

製品コードを書く

5. リファクタリング 6. 繰り返す

Page 26: Agile and TDD Demo

TDDの⼿順テストコードを書く

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

テストの失敗を確認する

テストが通る最小のコードを記述する

テストが通ることを確認する

不吉な臭いはリファクタリング

テストが通ることを確認する

1 2 3 4

567

8 短時間で繰り返す

Page 27: Agile and TDD Demo

27

StackのTDDデモ•  isEmpty()でスタックが空の場合true。 •  size()でスタックのサイズを取得する。•  push(v)で引数の値をスタックの⼀番上に

積む。•  pop()でスタックの⼀番上の値を取り除く。

(値は返さない C++流) •  top()でスタックの⼀番上の値を取得する。

「⾞窓からTDD」で検索

Page 28: Agile and TDD Demo

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

Page 29: Agile and TDD Demo

Seeing is understanding.

さらに知りたくなった⼈ ?

29

Page 30: Agile and TDD Demo

『アジャイル開発とスクラム』

• 顧客・技術・経営の3者をつなぐために、アジャイルと⽇本経営の接合点を探る

• 海兵隊の組織とアジャイル• 知識創造プロセスとアジャイル• 実践知リーダーとアジャイル• 富⼠通・楽天・リクルートの事例• Jeff Sutherlandインタビュー

平鍋健児+野中郁次郎著

Page 31: Agile and TDD Demo

http://objectclub.jp/technicaldoc/testing/stack_tdd.pdf

Page 32: Agile and TDD Demo
Page 33: Agile and TDD Demo

33

今買って読むならこれ!

Page 34: Agile and TDD Demo
Page 35: Agile and TDD Demo
Page 36: Agile and TDD Demo
Page 37: Agile and TDD Demo