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.

アート・オブ・アジャイル デベロップメント 〜テストが駆動するビジネス価値〜

4,393 views

Published on

【13-E-2】アート・オブ・アジャイル デベロップメント 〜テストが駆動するビジネス価値〜

Published in: Business
  • Be the first to comment

アート・オブ・アジャイル デベロップメント 〜テストが駆動するビジネス価値〜

  1. 1. アート・オブ・ アジャイル デベロップメント ∼テストが駆動するビジネス価値∼ 木下 史彦 (株)永和システムマネジメント f-kinoshita@esm.co.jp 目黒雅叙園; 2009-02-13(金) つなぐ、つながる、そして未来へ Developers Summit 2009 【13-E-2】
  2. 2. 私たちはあなたがアジャ イル開発の「道」を極め る手助けをしたい。 We want to help you master the art of agile development.
  3. 3. 自己紹介 ✓木下史彦 ✓(株)永和システムマネジメント ✓オブジェクト倶楽部 ✓日本XPユーザグループスタッフ ✓http://fkino.net
  4. 4. 好評発売中
  5. 5. デブサミ会場内にて 先行発売
  6. 6. サイン会をやってます 2/12 12:20∼12:50 2/12 16:15∼16:35 2/13 12:20∼12:50 @オブジェクト倶楽部ブース
  7. 7. 私事ですが
  8. 8. Birthday
  9. 9. 「木下さん」で 検索してください。
  10. 10. 謝辞 ✓岩切晃子さん ✓和田卓人さん ✓角谷信太郎さん ✓平鍋健児さん ✓日本のアジャイルコミュニティのみなさん ✓永和システムマネジメントのみなさん
  11. 11. 2009年 2月13日
  12. 12. デブサミ 2日目
  13. 13. Development Style (Test)
  14. 14. テストに まつわる話
  15. 15. デブサミと いえば
  16. 16. 翔泳社
  17. 17. 2007年4月
  18. 18. ツール ✓テスト ✓JUnit ✓jMock ✓jWebTest ✓自動化 ✓Maven2 ✓Continuum
  19. 19. テストの戦略
  20. 20. 継続的インテグレーション
  21. 21. 本日のお品書き ✓アジャイル デベロップメント ✓アート・オブ・アジャイル テス ティング ✓テストが駆動するビジネス価値 ✓組織を成功に導くエクストリー ムプログラミングの道
  22. 22. アジャイル デベロップメント
  23. 23. 開発がアジャイルであ るということは、協調 性を重んじる環境で、 フィードバックに基づ いた調整を行い続ける ことである。 出典:『アジャイルプラクティス』
  24. 24. Copyright (c) 2009 Eiwa System Management, Inc. イテレーション (1週間) の流れ 要求 リリース可能な ソフトウェア Ship It! 次の イテレーションへ 内部リリース ふりかえり KPT ベロシティ バックログ タスク プログラミング 機能 バグ データ移行 ドキュメント 環境構築 性能 ジョーカー 受入テストを 書く 受入テストを する  完了基準 TDD CI 仕様の確認 見積り スパイク ふりかえりやバックログの優先度 付けなどはお客さまにご協力いた だきながら進めていきます。
  25. 25. イテレーションの流れ ストーリー 開発する 顧客テスト イテレーションデモ ふりかえり 完了基準
  26. 26. アート・オブ・ アジャイル テスティング
  27. 27. テストの分類 ✓Developer Testing ✓Customer Testing ✓QA Testing http://www.slideshare.net/t_wada/devsumi-2008-developer-testing
  28. 28. Developer Testing
  29. 29. イテレーションの流れ ストーリー 開発する 顧客テスト イテレーションデモ ふりかえり 完了基準
  30. 30. テスト駆動開発 Test-Driven Development
  31. 31. TDDの目標 動作するきれいな コード Ron Jeffries
  32. 32. TDDのサイクル きれい 汚い (すぐには)動かない 動作する Green Refactoring Red
  33. 33. TDDのサイクル 出典:『The Art of Agile Development』
  34. 34. TDDのサイクル 出典:『アート・オブ・アジャイル デベロップメント』
  35. 35. TDDのサイクル 出典:『アート・オブ・アジャイル デベロップメント』 インクリメント
  36. 36. インクリメント 考える レッドバー グリーンバー リファクタリング
  37. 37. インクリメント 考える レッドバー グリーンバー リファクタリング
  38. 38. 何を
  39. 39. 考える ✓コードでやりたい動作が何 であるかを想像する ✓5行以下のコードで済む小さ なインクリメントを考え出す ✓テストを考え出す
  40. 40. 設計行為
  41. 41. 誰が
  42. 42. 主に ナビゲータ
  43. 43. ペア プログラミング
  44. 44. 主に ナビゲータ
  45. 45. ピンポンペアリング 考える レッドバー グリーンバー リファクタリング ペア交代
  46. 46. 事例: テスト駆動開発 ✓1ヶ月 ✓7人 ✓Ruby ✓Test::Unit ✓Mocha
  47. 47. プロダクトコード 10Kステップ
  48. 48. プロダクトコード 10Kステップ テストコード 20Kステップ
  49. 49. カバレッジ 97%
  50. 50. Developer Testingの分類 ✓ユニットテスト ✓インテグレーションテスト ✓エンドツーエンドテスト
  51. 51. ユニットテスト ✓外部とのやり取りがない ✓「シンプルな設計」が不 可欠 ✓スピード重要
  52. 52. テスティングツール ✓JUnit ✓RSpec ✓Google Test
  53. 53. 10分ビルド
  54. 54. ユニットテストは高速 に実行できる。もし高 速に実行できないな ら、それはユニットテ ストではない。 ̶̶ Michael C. Feathers
  55. 55. インテグレーションテスト ✓外部とのやり取りをする ✓データベース ✓ネットワーク ✓ファイルシステム ✓プロセス境界
  56. 56. エンドツーエンドテスト ✓ユニットテストとインテグレー ションテストが完全にかみ合ってい ることを確認する ✓実行に時間がかかる ✓準備と後始末に手間がかかる ✓このテスト自体が技術的負債にな る
  57. 57. 小さく速く回す
  58. 58. テストの分類 ✓Developer Testing ✓Customer Testing ✓QA Testing http://www.slideshare.net/t_wada/devsumi-2008-developer-testing
  59. 59. Customer Testing
  60. 60. イテレーションの流れ ストーリー 開発する 顧客テスト イテレーションデモ ふりかえり 完了基準
  61. 61. 顧客テスト 説明 サンプル 開発する テストする 自動化 完了基準
  62. 62. コミュニケー ションのため のもの
  63. 63. テスティングツール ✓Fit ✓Selenium ✓Cucumber
  64. 64. 10 顧客に決断しても らう 『アジャイルプラクティス』より
  65. 65. Executable User Stories R Spec Bdd http://www.slideshare.net/deimos/aslak-hellesoy-executable-user-stories-r-spec-bdd
  66. 66. ✓ユビキタス言語 ✓「完了」に対する 共通の認識
  67. 67. 顧客との 関係を変える
  68. 68. テストの分類 ✓Developer Testing ✓Customer Testing ✓QA Testing http://www.slideshare.net/t_wada/devsumi-2008-developer-testing
  69. 69. QA Testing
  70. 70. 存在 しない
  71. 71. XPチームには独 立したQA部門と いうものはない
  72. 72. XPチームの目標 はそもそもバグを 書かないことだ
  73. 73. ✓バグなし ✓探索的テスト
  74. 74. バグなし No Bugs
  75. 75. バグを 書かないこと
  76. 76. ほぼバグゼロを実現する方法 ✓バグをほとんど書かない ✓バグの繁殖場所を撲滅する ✓バグをすぐに修正する ✓プロセスをテストする ✓プロセスを修正する
  77. 77. ほぼバグゼロを実現する方法 ✓バグをほとんど書かない ✓バグの繁殖場所を撲滅する ✓バグをすぐに修正する ✓プロセスをテストする ✓プロセスを修正する ほぼすべてのXPプラクティス
  78. 78. ほぼバグゼロを実現する方法 ✓バグをほとんど書かない ✓バグの繁殖場所を撲滅する ✓バグをすぐに修正する ✓プロセスをテストする ✓プロセスを修正する ほぼすべてのXPプラクティス リファクタリング
  79. 79. ほぼバグゼロを実現する方法 ✓バグをほとんど書かない ✓バグの繁殖場所を撲滅する ✓バグをすぐに修正する ✓プロセスをテストする ✓プロセスを修正する ほぼすべてのXPプラクティス リファクタリング 割れ窓
  80. 80. ほぼバグゼロを実現する方法 ✓バグをほとんど書かない ✓バグの繁殖場所を撲滅する ✓バグをすぐに修正する ✓プロセスをテストする ✓プロセスを修正する ほぼすべてのXPプラクティス リファクタリング 割れ窓 探索的テスト
  81. 81. 使用上の注意 ✓XPのあらゆる仕組みと裏 付けを拠り所にしている。 ✓結果を出すためには、ほぼ すべてのXPプラクティスを 実践する必要がある。
  82. 82. ‣ 考えること ✓ ペアプログラミング ✓ 活き活きとした仕事 ✓ 情報満載の仕事場 ✓ 根本原因分析 ✓ ふりかえり ‣ 協力すること ✓ 信頼 ✓ 全員同席 ✓ 真の顧客の参加 ✓ ユビキタス言語 ✓ スタンドアップミーティング ✓ コーディング標準 ✓ イテレーションデモ ✓ 報告 ‣ リリースすること ✓ 「完全Done」 ✓ バグなし ✓ バージョン管理 ✓ 10分ビルド ✓ 継続的インテグレーション ✓ コードの共同所有 ✓ ドキュメント ‣ 計画すること ✓ ビジョン ✓ リリース計画 ✓ 計画ゲーム ✓ リスク管理 ✓ イテレーション計画 ✓ ゆとり ✓ ストーリー ✓ 見積り ‣ 開発すること ✓ インクリメンタルな要件 ✓ 顧客テスト ✓ テスト駆動開発 ✓ リファクタリング ✓ シンプルな設計 ✓ インクリメンタルな設計とアーキ テクチャ ✓ スパイクソリューション ✓ パフォーマンスの最適化 ✓ 探索的テスト
  83. 83. ‣ 考えること ✓ ペアプログラミング ✓ 活き活きとした仕事 ✓ 情報満載の仕事場 ✓ 根本原因分析 ✓ ふりかえり ‣ 協力すること ✓ 信頼 ✓ 全員同席 ✓ 真の顧客の参加 ✓ ユビキタス言語 ✓ スタンドアップミーティング ✓ コーディング標準 ✓ イテレーションデモ ✓ 報告 ‣ リリースすること ✓ 「完全Done」 ✓ バグなし ✓ バージョン管理 ✓ 10分ビルド ✓ 継続的インテグレーション ✓ コードの共同所有 ✓ ドキュメント ‣ 計画すること ✓ ビジョン ✓ リリース計画 ✓ 計画ゲーム ✓ リスク管理 ✓ イテレーション計画 ✓ ゆとり ✓ ストーリー ✓ 見積り ‣ 開発すること ✓ インクリメンタルな要件 ✓ 顧客テスト ✓ テスト駆動開発 ✓ リファクタリング ✓ シンプルな設計 ✓ インクリメンタルな設計とアーキ テクチャ ✓ スパイクソリューション ✓ パフォーマンスの最適化 ✓ 探索的テスト
  84. 84. 探索的テスト
  85. 85. 探索的テスト テストの設計 テストの実行 結果の解釈
  86. 86. 探索的テスト ✓自動テストを補完する ✓品質保証ではない ✓チームの品質保証に対するやり 方に関するフィードバック ✓ソフトウェア ✓チームのプロセス
  87. 87. 事例: ペアテスト ✓ペアでテストを行う ✓手動テスト ✓タイムボックス (2時間) ✓たとえばデモの前の時間を使う ✓バグが見つかれば修正して、自 動テストに組み込む
  88. 88. 前半の まとめ
  89. 89. アジャイル開発におけるテスト ✓小さく速く回す ✓いつでも (技術的には) リ リースできる状態にしておく ✓顧客との関係を変える ✓プロセスを改善していく
  90. 90. 石橋を 叩いて渡る
  91. 91. テストが駆動す るビジネス価値
  92. 92. 組織を成功に導く エクストリーム プログラミング
  93. 93. テスト
  94. 94. ビジネス価値 テスト
  95. 95. 組織的な成功 ビジネス価値 テスト
  96. 96. 開発 ビジネス 価値 ビジネス 要件
  97. 97. 開発 ビジネス 価値 ビジネス 要件 開発 ビジネス 価値 ビジネス 要件
  98. 98. 開発 ビジネス 価値 ビジネス 要件
  99. 99. Copyright (c) 2009 Eiwa System Management, Inc. イテレーティブかつインクリメンタルな開発 1週間 = 1イテレーション 可視性 状況が見えな い イテレーショ ン毎に動くも のべースで確 認できる 変更容易性 初期に要件を 確定しなけれ ばならない 変更は最後の イテレーショ ンがはじまる まで可能 技術リクス低減 最後まで動い ているものを 確認すること ができない 動くものを ベースに徐々 に機能を追加 していく ビジネス価値 最後の最後ま でリリースで きない 早期にリリー ス可能な動く ソフトウェア が入手できる アジャイル開発 従来型の開発 打ち合わせ & リリース 時間 ユーザと 開発者の 距離
  100. 100. バスタブモデル
  101. 101. Copyright (c) 2009 Eiwa System Management, Inc. イテレーティブかつインクリメンタルな開発 1週間 = 1イテレーション 可視性 状況が見えな い イテレーショ ン毎に動くも のべースで確 認できる 変更容易性 初期に要件を 確定しなけれ ばならない 変更は最後の イテレーショ ンがはじまる まで可能 技術リクス低減 最後まで動い ているものを 確認すること ができない 動くものを ベースに徐々 に機能を追加 していく ビジネス価値 最後の最後ま でリリースで きない 早期にリリー ス可能な動く ソフトウェア が入手できる アジャイル開発 従来型の開発 打ち合わせ & リリース 時間 ユーザと 開発者の 距離
  102. 102. いいこと ずくめ
  103. 103. アジャイル開発 時間 ユーザと 開発者の 距離 打ち合わせ & リリース
  104. 104. 従来型 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 テスト
  105. 105. 従来型 ̶̶リスク 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 テスト
  106. 106. 従来型 ̶̶技術的負債 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 テスト
  107. 107. 従来型→アジャイル 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 テスト ✓テスト駆動開発 ✓インクリメンタル な設計とアーキテ クチャ
  108. 108. 従来型→アジャイル 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 テスト ✓テスト駆動開発 ✓インクリメンタル な設計とアーキテ クチャ
  109. 109. 従来型→アジャイル 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 テスト ✓顧客テスト ✓バグなし ✓探索的テスト
  110. 110. 従来型→アジャイル 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 ✓顧客テスト ✓バグなし ✓探索的テスト
  111. 111. 従来型→アジャイル 時間 ユーザと 開発者の 距離 打ち合わせ デモ リリース 要件定義 設計・実装 ✓顧客テスト ✓バグなし ✓探索的テスト
  112. 112. 従来型→アジャイル 時間 ユーザと 開発者の 距離 打ち合わせ リリース 要件定義 ✓顧客テスト ✓バグなし ✓探索的テスト
  113. 113. 従来型→アジャイル 時間 ユーザと 開発者の 距離 打ち合わせ リリース 要件定義 ✓ビジョン ✓インクリメンタル な要件
  114. 114. 従来型→アジャイル 時間 ユーザと 開発者の 距離 リリース 要件定義 ✓ビジョン ✓インクリメンタル な要件 打ち合わせ & リリース
  115. 115. 従来型→アジャイル 時間 ユーザと 開発者の 距離 リリース ✓ビジョン ✓インクリメンタル な要件 打ち合わせ & リリース
  116. 116. アジャイル開発 時間 ユーザと 開発者の 距離 打ち合わせ & リリース
  117. 117. FAQ
  118. 118. 既存のコードに テストがなかっ たら……
  119. 119. レガシーコード テストのないコード 怖くて変更できない コード James Shore Michael C. Feathers
  120. 120. 案件数 コンサル 32% 既存開発 27% 新規開発 41% 2008年8月以降にお引き合いをいただいた案件
  121. 121. レガシー/既存開発 テストコードあり 17% レガシー 83% 2008年8月以降にお引き合いをいただいた案件
  122. 122. エンドツーエンドスモークテスト
  123. 123. エンドツーエンドスモークテスト ✓大きな間違いをしたとき に警告してくれる ✓「接合部」を見つけて、 ユニットテストを導入する
  124. 124. テスティングツール ✓Fit ✓Selenium ✓Cucumber
  125. 125. 心強い
  126. 126. シームレスに 移行する
  127. 127. 組織を成功に導く エクストリーム プログラミング の道
  128. 128. 導入の障壁 ✓組織的障壁 ✓心理的障壁 ✓技術的障壁
  129. 129. 組織的障壁 ✓上司や同僚が認めてくれな い ✓うちの開発は特殊だから ✓ぼくらの組織では使えない ✓契約がry)
  130. 130. ✓提案・営業から開発まで エンドツーエンドでやる ✓腹をくくった ✓よい習慣を広める ✓みんなが助けてくれる
  131. 131. ✓契約はあまり気にしてい ない ✓目の前の困っている人を 助けたい
  132. 132. 心理的障壁 ✓進捗がおちる ✓納期に間に合わなくなるの ではないか
  133. 133. 3対2
  134. 134. 3対2 プログラマと顧客の比率
  135. 135. ✓こまめにデモして状況を 共有する ✓技術的負債を溜めないこ との方が重要 ✓不安なことがあればメー ルしてほしい
  136. 136. 技術的障壁 ✓習得が難しい ✓1∼2ヶ月は生産性が落ちる
  137. 137. アジャイルの 衰退と凋落
  138. 138. アジャイルは難し い。2日間の座学 で身につくような もんじゃない。
  139. 139. ✓素振り重要 ✓歯を食いしばってやる ✓親身になって教える ✓みんな好きでやってる
  140. 140. 原則 ✓プロセスを改善する ✓人を信頼する ✓ムダを排除する ✓価値を届ける ✓技術的卓越を追求する
  141. 141. 原則 ✓プロセスを改善する ✓人を信頼する ✓ムダを排除する ✓価値を届ける ✓技術的卓越を追求する
  142. 142. 自己鍛錬 Self Discipline
  143. 143. まとめ
  144. 144. Of all agile methods I know, XP is the most complete.
  145. 145. 私が知っているアジャ イル手法のうち、 XPが最も調和とバラ ンスがとれている。
  146. 146. 原則 ✓プロセスを改善する ✓人を信頼する ✓ムダを排除する ✓価値を届ける ✓技術的卓越を追求する
  147. 147. ‣ 考えること ✓ ペアプログラミング ✓ 活き活きとした仕事 ✓ 情報満載の仕事場 ✓ 根本原因分析 ✓ ふりかえり ‣ 協力すること ✓ 信頼 ✓ 全員同席 ✓ 真の顧客の参加 ✓ ユビキタス言語 ✓ スタンドアップミーティング ✓ コーディング標準 ✓ イテレーションデモ ✓ 報告 ‣ リリースすること ✓ 「完全Done」 ✓ バグなし ✓ バージョン管理 ✓ 10分ビルド ✓ 継続的インテグレーション ✓ コードの共同所有 ✓ ドキュメント ‣ 計画すること ✓ ビジョン ✓ リリース計画 ✓ 計画ゲーム ✓ リスク管理 ✓ イテレーション計画 ✓ ゆとり ✓ ストーリー ✓ 見積り ‣ 開発すること ✓ インクリメンタルな要件 ✓ 顧客テスト ✓ テスト駆動開発 ✓ リファクタリング ✓ シンプルな設計 ✓ インクリメンタルな設計とアーキ テクチャ ✓ スパイクソリューション ✓ パフォーマンスの最適化 ✓ 探索的テスト プラクティス
  148. 148. プログラマはもちろん、 テスター、プロジェクト マネージャ、……(省略) ……、顧客などアジャイ ルに関心のあるすべての 人におくる一冊である。 出典:『アート・オブ・アジャイル デベロップメント』裏表紙
  149. 149. XP (アジャイル) を 開発者のだけのもの にしておくのは、も う終わりにしたい
  150. 150. はじめは 「アジャイルごっこ」 だった。
  151. 151. でも
  152. 152. 今は違う
  153. 153. 自分たちのやってい ることが、確実にビ ジネスにつながって いるという実感
  154. 154. 私たちはあなたがアジャ イル開発の「道」を極め る手助けをしたい。 We want to help you master the art of agile development.
  155. 155. ご清聴 ありがとう ございました
  156. 156. アンケートへの ご協力をお願いします。 【13-E-2】

×