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.
テスト駆動開発者は
3周目に死ぬのか
和田 卓人 (a.k.a id:t-wada)
Jul, 7th 2009 @ object club
自己
紹介
自己紹介
名前: 和田 卓人 (わだ たくと)
ブログ: http://d.hatena.ne.jp/t-wada
メール: takuto.wada@towersquest.jp
Twitter: http://twitter.com/t_wa...
これまで書いたもの
WEB + DB PRESS
vol.35 「実演! テスト駆動開発」
vol.37 「実演! リファクタリング」
vol.42 「REST特集」
vol.49 「DRY特集」
LifeHacks PRESS
オープンソース...
gihyo.jpの連載
『[動画で解説]和田卓人の テスト駆動開発 講座』
http://gihyo.jp/dev/serial/01/tdd/
全20回すべて動画付き解説
ニコニコ動画でも見れます
WEB+DB過去記事の特設サイトと動画も
デベロッパーテスティング・ライブ - 自信を持ってコードを書くための
心・技・体 -
【徹底討論】テストなんていらない?! -テストを、どこまでやる
べきか?
パネルディスカッション:テストを行うこと、テストを続けること
デブサミ
よろしく
おねがい
します
今日喋ること
•ピラミッドを組み上げる
•ピラミッドの中に入る(戻る)
•黄金の回転について
“TDD done strictly from the
YAGNI principle leads to an
architectural meltdown
around iteration three.”
TDD を YAGNI 原則に則って...
“TDD done strictly from the
YAGNI principle leads to an
architectural meltdown
around iteration three.”
TDD を YAGNI 原則に則って...
第一部
ピラミッド
を組み上げる
Emergent Design
Test Driven
Development
Refactoring
Pattern Driven
Development
Code Qualities
Principles Practices Patholo...
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
Emergent Design is the process of evolving systems in
response to changing requirements, better
understanding of existing ...
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
Code Quality
解析容易性
変更容易性
安定性
テスト容易性
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
Pathologies
名前を付けるのが難しい
長いテストコード
長いプロダクトコード/メソッド
(例)凝集度不足
•パターンへ昇華
•Anti-Patterns
•リファクタリングの兆し
•Code Smells
Pathologies
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
Wisdom
先人の知恵
巨人の肩
c2.com
FLOSS
藤野さん
平鍋さん
天野さん
懸田さん
矢崎さん
小井土さん
福井さん
井上樹さん
河合さん
佃さん
中谷さん
平澤さん
梅澤さん
友野さん
長瀬さん
金澤さん
浅海さん
原田洋子さん
萩本さん
伊藤さん
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
Principles
Single Responsibility
Open-Closed
Liscov Substitution
Interface Segregation
Dependency Inversion
SOLID Principle
Don t Repeat Yourself
Law of Demeter
Principles
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
Practices
スタイル
名前
道具
三本柱
©Artek ( http://www.artek.fi/ )
バージョン管理
テスティング
自動化
バージョン管理
テスティング
自動化
自働化
XFD
詳しくは小井土さんセッションで
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
バージョン管理
テスティング
自動化
テストの分類
Developer
Testing
開発者
開発促進
Customer
Testing
顧客
(のロール)
進捗管理
QA
Testing
品質保証
担当者
(のロール)
品質保証
「テスト」
Developer Testingとは
•プログラマの
•プログラマによる
•プログラマのための
•プログラムとしてのテストを書きながら
•開発を行っていく手法
xUnit
バグ発見とコスト
•即座にフィードバックを得るため
•書いたコードに自信を持つため
•これから書くコードに自信を持つため
Developer Testing に
ソフトウェア工学的なメリットはいろいろある
けれど、最大の理由は工学的なものではない。
最大の理由は...
どこをテスト
すべき?
デバッガじゃ
だめなの?
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
リファクタリング(名)
外部から見たときの振る舞いを
保ちつつ、理解や修正が簡単に
なるように、ソフトウェアの内
部構造を変更させること
リファクタリング(動)
一連のリファクタリングを行っ
て、外部から見た振る舞いの変
更なしに、ソフトウェアを再構
築すること
理解や修正のために
•コードを理解しやすく
•コードを修正しやすく
•コードをシンプルにすること
が、シンプル設計への道
リファクタリング
•ボトムアップ設計の核
•全ての中でリファクタリングだ
けが、物事を後から改善できる
•「向き」が大事
リファクタリ
ングに終わり
はあるのか?
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
Patterns
語彙
形式
共有
(例)Facade
Context
外部要因に依存する複雑なサブシステ
ムがある
Force
複雑化する内部実装に依存しないよう
にしたい
Solution
Facade Patternを導入し、シンプルな
interfaceの背後に複雑な内部...
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
TDDとは
1. テストを書き
2. そのテストを実行して失敗させ(Red)
3. 目的のコードを書き
4. 1で書いたテストを成功させ(Green)
5. テストが通るままでリファクタリング
を行う(Refactor)
6. 1∼5を繰り返す
• a test driven developer does not write a line of production
code until he has written a failing unit test, and no produc...
TDDの
こころ
一つずつ
少しずつ
ひとりずつ
対処する。
複数を相手
にしない。
動作する、きれいなコードへ
きれい
汚い
(すぐには)動かない 動作する
二つの道がある
すばやく
まわす
きれい
汚い
(すぐには)動かない 動作する
Red
Green
Refactoring
TDDと黄金の回転
自分が最初の
ユーザ
不安を
テストに
ボールは
ひとつ
TDDは
テスト技法では
ない
TDDは
品質を
保証しない
TDDは
品質を
向上する
TDDは
設計技法です
テストは目的
ではなく手段
TDDの
真の目的
健康
変化に対応す
るのは健康体
のコード
変化に対応す
るのは健康体
のチーム
不安の克服
健康の維持
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
“TDD done strictly from the
YAGNI principle leads to an
architectural meltdown
around iteration three.”
TDD を YAGNI 原則に則って...
誤解を解く
•全てのコードをゼロから書くわ
けではない
•BDUF - ENUF - YAGNI
•スタートでもゴールでもある
見えているのに?
•「目配せ」と「快晴」
•Simple と Naive
•経験と叡知
•内なる声を聴く
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
私たちが
気付くのは
いつ?
何が変わる?
•外が変わる
•市場
•技術
•内が変わる
•学び
•よりよいア
イデア
フィードバック
学びを
否定しない
計画する
計画し続ける
設計する
設計し続ける
Emergent Design is the process of evolving systems in
response to changing requirements, better
understanding of existing ...
第二部
ピラミッド
に入る/戻る
Emergent Design
Test Driven
Development
Refactoring
Pattern Driven
Development
Code Qualities
Principles Practices Patholo...
Reality bites
•スタート地点の違い
•テストが無い
•データが既に入っている
•量、記憶、変化、プレッシャー
既にテストの
ないコードが
沢山ある
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
パターン
プラクティス 病理学
Edit and Pray
Cover and Modify
既にデータの
入ったデータ
ベースがある
データと戦う
•データベースもリファクタリン
グする
•本気度が高い
•長いリファクタリング期間
テストの
Paradox
テストが増えると
リファクタリング
が面倒くさくなる
Fragile
Tests
実装に
依存しすぎ
コード変えたら
テストが真っ赤
Slow Tests
テストが
遅すぎる
なぜか
テストが
足枷に
テストが
リファクタリング
支えるのでは
なかったのか?
テストの量と戦う
•減らす
•速くする
•関連を明らかにする
テストの価値の軸
•速さ
•実装との距離
•コードの重複率
•ドキュメントとしての価値
自分の記憶力と戦う
•意図を伝えるコード
•意図を伝える名前
•意図を伝える構造
•コメント(Why / Why not)
テストの
資産価値
攻め続ける
ためのテスト
なるべく
実装に
依存しない
リファクタリング
を支えるテストが
良いテスト
TDDと黄金の回転
きれい
汚い
(すぐには)動かない 動作する
Red
Green
Refactoring
テストの
資産運用
役割と
寿命
1.価値の低いテス
トの価値を高める
テストの
リファクタリング
2.価値の低いテス
トを捨て、高いテ
ストを残す
テストを
減らす
そこで
カバレッジ
Aのカバレッジが
Bのカバレッジを
内包するとき、
テストB は消せる
まとめ
創発的設計
テスト駆動開発
リファクタリング
パターン駆動開発
コードの質
原則叡知
ユニットテスト パターン
プラクティス 病理学
きれい
汚い
(すぐには)動かない 動作する
Red
Green
Refactoring
TDDと黄金の回転
おわりに
TDDはスキルです
• テストやTDDはスキルです。つまり…
• 才能ではなく、習得可能です
• 量は質に転化します
• 写経!!
ご清聴
ありがとう
ございました
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Emergent Design - ObLove 2009 summer
Upcoming SlideShare
Loading in …5
×

Emergent Design - ObLove 2009 summer

3,491 views

Published on

Emergent Design, at Object Club 2009 summer

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Emergent Design - ObLove 2009 summer

  1. 1. テスト駆動開発者は 3周目に死ぬのか 和田 卓人 (a.k.a id:t-wada) Jul, 7th 2009 @ object club
  2. 2. 自己 紹介
  3. 3. 自己紹介 名前: 和田 卓人 (わだ たくと) ブログ: http://d.hatena.ne.jp/t-wada メール: takuto.wada@towersquest.jp Twitter: http://twitter.com/t_wada タワーズ・クエスト株式会社 取締役社長
  4. 4. これまで書いたもの WEB + DB PRESS vol.35 「実演! テスト駆動開発」 vol.37 「実演! リファクタリング」 vol.42 「REST特集」 vol.49 「DRY特集」 LifeHacks PRESS オープンソースマガジン(リレーコラム) 他いろいろ
  5. 5. gihyo.jpの連載 『[動画で解説]和田卓人の テスト駆動開発 講座』 http://gihyo.jp/dev/serial/01/tdd/ 全20回すべて動画付き解説 ニコニコ動画でも見れます WEB+DB過去記事の特設サイトと動画も
  6. 6. デベロッパーテスティング・ライブ - 自信を持ってコードを書くための 心・技・体 - 【徹底討論】テストなんていらない?! -テストを、どこまでやる べきか? パネルディスカッション:テストを行うこと、テストを続けること デブサミ
  7. 7. よろしく おねがい します
  8. 8. 今日喋ること •ピラミッドを組み上げる •ピラミッドの中に入る(戻る) •黄金の回転について
  9. 9. “TDD done strictly from the YAGNI principle leads to an architectural meltdown around iteration three.” TDD を YAGNI 原則に則って厳格に行うな らば、3イテレーション目でアーキテクチャ が破綻するであろう
  10. 10. “TDD done strictly from the YAGNI principle leads to an architectural meltdown around iteration three.” TDD を YAGNI 原則に則って厳格に行うな らば、3イテレーション目でアーキテクチャ が破綻するであろう Jim CoplienBob Martin
  11. 11. 第一部 ピラミッド を組み上げる
  12. 12. Emergent Design Test Driven Development Refactoring Pattern Driven Development Code Qualities Principles Practices PathologiesWisdom Unit Testing Patterns
  13. 13. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  14. 14. Emergent Design is the process of evolving systems in response to changing requirements, better understanding of existing requirements, and in response to new opportunities that arise from new technology, better ideas, and a changing world. 創発的設計とは仕様の変更や、既存の仕様のより 深い理解、また新たな技術、よりよいアイデア、 環境の変化などに適応してシステムを進化させる プロセスである 創発的設計とは
  15. 15. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  16. 16. Code Quality 解析容易性 変更容易性 安定性 テスト容易性
  17. 17. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  18. 18. Pathologies
  19. 19. 名前を付けるのが難しい 長いテストコード 長いプロダクトコード/メソッド (例)凝集度不足
  20. 20. •パターンへ昇華 •Anti-Patterns •リファクタリングの兆し •Code Smells Pathologies
  21. 21. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  22. 22. Wisdom 先人の知恵 巨人の肩 c2.com FLOSS
  23. 23. 藤野さん 平鍋さん 天野さん 懸田さん 矢崎さん 小井土さん 福井さん 井上樹さん 河合さん 佃さん 中谷さん 平澤さん 梅澤さん 友野さん 長瀬さん 金澤さん 浅海さん 原田洋子さん 萩本さん 伊藤さん
  24. 24. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  25. 25. Principles
  26. 26. Single Responsibility Open-Closed Liscov Substitution Interface Segregation Dependency Inversion SOLID Principle
  27. 27. Don t Repeat Yourself Law of Demeter Principles
  28. 28. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  29. 29. Practices スタイル 名前 道具
  30. 30. 三本柱 ©Artek ( http://www.artek.fi/ )
  31. 31. バージョン管理 テスティング 自動化
  32. 32. バージョン管理
  33. 33. テスティング
  34. 34. 自動化 自働化 XFD 詳しくは小井土さんセッションで
  35. 35. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  36. 36. バージョン管理 テスティング 自動化
  37. 37. テストの分類 Developer Testing 開発者 開発促進 Customer Testing 顧客 (のロール) 進捗管理 QA Testing 品質保証 担当者 (のロール) 品質保証 「テスト」
  38. 38. Developer Testingとは •プログラマの •プログラマによる •プログラマのための •プログラムとしてのテストを書きながら •開発を行っていく手法
  39. 39. xUnit
  40. 40. バグ発見とコスト
  41. 41. •即座にフィードバックを得るため •書いたコードに自信を持つため •これから書くコードに自信を持つため Developer Testing に ソフトウェア工学的なメリットはいろいろある けれど、最大の理由は工学的なものではない。 最大の理由は心理的なもの
  42. 42. どこをテスト すべき?
  43. 43. デバッガじゃ だめなの?
  44. 44. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  45. 45. リファクタリング(名) 外部から見たときの振る舞いを 保ちつつ、理解や修正が簡単に なるように、ソフトウェアの内 部構造を変更させること
  46. 46. リファクタリング(動) 一連のリファクタリングを行っ て、外部から見た振る舞いの変 更なしに、ソフトウェアを再構 築すること
  47. 47. 理解や修正のために •コードを理解しやすく •コードを修正しやすく •コードをシンプルにすること が、シンプル設計への道
  48. 48. リファクタリング •ボトムアップ設計の核 •全ての中でリファクタリングだ けが、物事を後から改善できる •「向き」が大事
  49. 49. リファクタリ ングに終わり はあるのか?
  50. 50. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  51. 51. Patterns 語彙 形式 共有
  52. 52. (例)Facade Context 外部要因に依存する複雑なサブシステ ムがある Force 複雑化する内部実装に依存しないよう にしたい Solution Facade Patternを導入し、シンプルな interfaceの背後に複雑な内部を隠 する
  53. 53. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  54. 54. TDDとは 1. テストを書き 2. そのテストを実行して失敗させ(Red) 3. 目的のコードを書き 4. 1で書いたテストを成功させ(Green) 5. テストが通るままでリファクタリング を行う(Refactor) 6. 1∼5を繰り返す
  55. 55. • a test driven developer does not write a line of production code until he has written a failing unit test, and no production code can be written until there is a failing unit test • you do not write more of a unit test than is sufficient to fail, and “not compiling” is failing. So you cannot write very much of the unit test before you must write production code; • you cannot write more production code than is sufficient to pass the currently failing test. So you cannot write a little bit of a unit test and then run off and write a whole bunch of production code. Discipline
  56. 56. TDDの こころ
  57. 57. 一つずつ 少しずつ
  58. 58. ひとりずつ 対処する。 複数を相手 にしない。
  59. 59. 動作する、きれいなコードへ きれい 汚い (すぐには)動かない 動作する 二つの道がある
  60. 60. すばやく まわす
  61. 61. きれい 汚い (すぐには)動かない 動作する Red Green Refactoring TDDと黄金の回転
  62. 62. 自分が最初の ユーザ
  63. 63. 不安を テストに
  64. 64. ボールは ひとつ
  65. 65. TDDは テスト技法では ない
  66. 66. TDDは 品質を 保証しない
  67. 67. TDDは 品質を 向上する
  68. 68. TDDは 設計技法です
  69. 69. テストは目的 ではなく手段
  70. 70. TDDの 真の目的
  71. 71. 健康
  72. 72. 変化に対応す るのは健康体 のコード
  73. 73. 変化に対応す るのは健康体 のチーム
  74. 74. 不安の克服 健康の維持
  75. 75. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  76. 76. “TDD done strictly from the YAGNI principle leads to an architectural meltdown around iteration three.” TDD を YAGNI 原則に則って厳格に行うな らば、3イテレーション目でアーキテクチャ が破綻するであろう Jim CoplienBob Martin
  77. 77. 誤解を解く •全てのコードをゼロから書くわ けではない •BDUF - ENUF - YAGNI •スタートでもゴールでもある
  78. 78. 見えているのに? •「目配せ」と「快晴」 •Simple と Naive •経験と叡知 •内なる声を聴く
  79. 79. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  80. 80. 私たちが 気付くのは いつ?
  81. 81. 何が変わる? •外が変わる •市場 •技術 •内が変わる •学び •よりよいア イデア
  82. 82. フィードバック 学びを 否定しない
  83. 83. 計画する 計画し続ける
  84. 84. 設計する 設計し続ける
  85. 85. Emergent Design is the process of evolving systems in response to changing requirements, better understanding of existing requirements, and in response to new opportunities that arise from new technology, better ideas, and a changing world. 創発的設計とは仕様の変更や、既存の仕様のより 深い理解、また新たな技術、よりよいアイデア、 環境の変化などに適応してシステムを進化させる プロセスである 創発的設計とは
  86. 86. 第二部 ピラミッド に入る/戻る
  87. 87. Emergent Design Test Driven Development Refactoring Pattern Driven Development Code Qualities Principles Practices PathologiesWisdom Unit Testing Patterns Reality Bites 現実は厳しい
  88. 88. Reality bites •スタート地点の違い •テストが無い •データが既に入っている •量、記憶、変化、プレッシャー
  89. 89. 既にテストの ないコードが 沢山ある
  90. 90. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 パターン プラクティス 病理学
  91. 91. Edit and Pray
  92. 92. Cover and Modify
  93. 93. 既にデータの 入ったデータ ベースがある
  94. 94. データと戦う •データベースもリファクタリン グする •本気度が高い •長いリファクタリング期間
  95. 95. テストの Paradox
  96. 96. テストが増えると リファクタリング が面倒くさくなる
  97. 97. Fragile Tests
  98. 98. 実装に 依存しすぎ
  99. 99. コード変えたら テストが真っ赤
  100. 100. Slow Tests
  101. 101. テストが 遅すぎる
  102. 102. なぜか テストが 足枷に
  103. 103. テストが リファクタリング 支えるのでは なかったのか?
  104. 104. テストの量と戦う •減らす •速くする •関連を明らかにする
  105. 105. テストの価値の軸 •速さ •実装との距離 •コードの重複率 •ドキュメントとしての価値
  106. 106. 自分の記憶力と戦う •意図を伝えるコード •意図を伝える名前 •意図を伝える構造 •コメント(Why / Why not)
  107. 107. テストの 資産価値
  108. 108. 攻め続ける ためのテスト
  109. 109. なるべく 実装に 依存しない
  110. 110. リファクタリング を支えるテストが 良いテスト
  111. 111. TDDと黄金の回転 きれい 汚い (すぐには)動かない 動作する Red Green Refactoring
  112. 112. テストの 資産運用
  113. 113. 役割と 寿命
  114. 114. 1.価値の低いテス トの価値を高める
  115. 115. テストの リファクタリング
  116. 116. 2.価値の低いテス トを捨て、高いテ ストを残す
  117. 117. テストを 減らす
  118. 118. そこで カバレッジ
  119. 119. Aのカバレッジが Bのカバレッジを 内包するとき、 テストB は消せる
  120. 120. まとめ
  121. 121. 創発的設計 テスト駆動開発 リファクタリング パターン駆動開発 コードの質 原則叡知 ユニットテスト パターン プラクティス 病理学
  122. 122. きれい 汚い (すぐには)動かない 動作する Red Green Refactoring TDDと黄金の回転
  123. 123. おわりに
  124. 124. TDDはスキルです • テストやTDDはスキルです。つまり… • 才能ではなく、習得可能です • 量は質に転化します • 写経!!
  125. 125. ご清聴 ありがとう ございました

×