Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Agile and TDD Demo

1,426 views

Published on

Software Summit in Fukui 2016

Published in: Software
  • Be the first to comment

Agile and TDD Demo

  1. 1. Seeing is understanding.1 アジャイル開発と TDD(テスト駆動開発) 株式会社永和システムマネジメント 株式会社チェンジビジョン 平鍋健児
  2. 2. Seeing is understanding. 平鍋健児 •  ㈱永和システムマネジメント –  福井市(本社)、上野東京(⽀社)、沖縄(事務所) –  「⾦融」、「医療」、「組込みシステム」 –  「Google Apps と KAIZEN クラウド」 –  「Ruby と Agile」を使ったシステム開発 •  株式会社チェンジビジョン –  福井市(開発部)、上野東京(本社) –  astah* (旧:JUDE) の開発
  3. 3. Seeing is understanding. 世界に50万⼈のユーザー
  4. 4. Seeing is understanding.
  5. 5. Seeing is understanding.
  6. 6. Seeing is understanding.6 ◎ ● ● 本社/福井市 東京支社/神田 沖縄事務所/那覇市
  7. 7. Seeing is understanding. 東京と福井 7
  8. 8. Seeing is understanding. 東京
  9. 9. Seeing is understanding. 福井
  10. 10. Seeing is understanding.20代 30代 40代 ⽣活の中の喜び Uターンの意味(平鍋の場合) 損益分岐点的な何か…損益分岐点的な何か… 福井 東京
  11. 11. Seeing is understanding.11 アジャイル開発って?
  12. 12. Seeing is understanding.12 プロセスとしてのAgile •  短いサイクルで、分析、設計、実装、テストを並列 に⾏う •  タイムボックス型、進化型開発 分析 設計 実装 テスト 時間 時間 要求(スコープ) 要求(スコープ)Waterfall Agile Beck 2000Royce 1970 最後に動くものができる 動くものが徐々に できあがり、成長する
  13. 13. Seeing is understanding.13 分割の仕⽅ •  顧客に分かる機能で切る。 •  層で切らない。 •  ビジネスの価値が分かる。 •  やりがい、コミュニケーション "These days we do not program software module by module; we program software feature by feature.“            —Mary Poppendieck by Akiyah
  14. 14. Seeing is understanding.14 アジャイルの プラクティス(例 XP) •  計画ゲーム •  ⼩規模リリース •  メタファー •  シンプルデザイン •  テスティング •  リファクタリング •  ペアプログラミング •  共同所有権 •  継続的インテグレーション •  週40時間 •  オンサイト顧客 •  コーディング標準
  15. 15. Seeing is understanding.15 今買って読むならこれ!
  16. 16. p.16
  17. 17. Seeing is understanding.17 ⾼速に⽯橋を 叩いて渡る 「開発環境」 協働でゴールに 向かう 「チーム環境」 ビジネス価値、 顧客満⾜、市場創造 継続的インテグレーション テスト駆動開発 リファクタリング ペアプログラミング アジャイルモデリング … その他 朝会 タスクかんばん バーンダウンチャート ふりかえり … その他 アジャイルの レフトウィング アジャイルの ライトウィング アジャイルのゴール ソーシャルプラクティス 技術プラクティス
  18. 18. p.18 Project Facilitation by Kenji Hiranabe is licensed under a Creative Commons Attribution 3.0 Unported License. タスクかんばん l  作業の見える化 – ToDo(未実施)
 Doing(実施中)
 Done(完了)
 で管理。 – 各自の作業を指示しなく
 ても、毎朝自発的に
 作業開始。 – フォーマットは徐々に
 カイゼン。 タスクかんばんの例 ※バーンダウンチャーなどと共に、とにかく、壁に貼る。「情報発信器」とも呼ばれる。 作業の見える化は、「タスクかんばん」で行なう。 POINT (協⼒:チェンジビジョンastah* チー ム)
  19. 19. p.19 Project Facilitation by Kenji Hiranabe is licensed under a Creative Commons Attribution 3.0 Unported License. バーンダウンチャート l  進捗の見える化 – バーンダウン(下向き) – タスクかんばんと連動 – 中間成果物で
 は計測しない。 – メールでエクセルシート
 を配布したり、
 サーバに置いたから
 見てね、はナシ。 バーンダウンチャートの例 全体進捗は、「バーンダウンチャート」で見える化、繰り返しのリズムづくり POINT (協⼒:永和システムマネジメント:チー ム⾓⾕)
  20. 20. p.20 「かんばん-nano」スーツにもベストフィット! POINT ポータブルかんばん (協力:CCS 佐藤竜一さん)
  21. 21. テスト駆動開発 (TDD:Test-Driven Development) l  ユニットテストを作り、ユニットテスト で動作を確認しながら、開発をすすめる という、開発⼿法 l  ユニットテスト、リファクタリング、ペ アプログラミングと相互補完する ユニットテスト リファクタリングTDD
  22. 22. 汚い きれい (すぐには)動かない 動く レッド リファクタ リング グリーン 1.  テストコードを書く 2.  失敗させる 4. それを成功させ る 3. もっともシンプ ルな 製品コードを書く 5. リファクタ リング 6. 繰り返す
  23. 23. TDDの⼿順 テストコードを
 書く コンパイルの み通り製品 コードを
 書く テストの失敗を 確認する テストが通る 最小のコードを 記述する テストが通ること
 を確認する 不吉な臭いは リファクタリング テストが通ること を確認する 1 2 3 4 5 6 7 8 短時間で繰り返す
  24. 24. 27 StackのTDDデモ •  isEmpty()でスタックが空の場合true。 •  size()でスタックのサイズを取得する。 •  push(v)で引数の値をスタックの⼀番上に 積む。 •  pop()でスタックの⼀番上の値を取り除く。 (値は返さない C++流) •  top()でスタックの⼀番上の値を取得する。 「⾞窓からTDD」で検索
  25. 25. 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
  26. 26. Seeing is understanding. さらに知りたく なった⼈ ? 29
  27. 27. 『アジャイル開発とスクラム』 • 顧客・技術・経営の3者をつなぐ ために、アジャイルと⽇本経営の 接合点を探る • 海兵隊の組織とアジャイル • 知識創造プロセスとアジャイル • 実践知リーダーとアジャイル • 富⼠通・楽天・リクルートの事例 • Jeff Sutherlandインタビュー 平鍋健児+野中郁次郎著
  28. 28. http://objectclub.jp/technicaldoc/testing/stack_tdd.pdf
  29. 29. 33 今買って読むならこれ!

×