SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
DevLove 2012

 世界をすこしだけ
前に進めるということ
#devlove2012a

         グロースエクスパートナーズ(株)
                    和智 右桂
イノベーション?




  Ahchan and iPad http://www.flickr.com/photos/jetalone/4694268917/ by jetalone
JavaEE勉強会 所属             Yukei Wachi


 グロースエクスパートナーズ株式会社 勤務


      和智 右桂
 ネコ好き
               IT アーキテクト
                           @digitalsoul0124
 Digital Romanticism
         http://d.hatena.ne.jp/digitalsoul
                               Photo by @digitalsoul0124 All rights reserved.
エンタープライズと
現場へのこだわり
バランス

  開発      翻訳

       プレゼン
in Summer
マイルストーン




  Milestone http://www.flickr.com/photos/pluralzed/107713803/ by pluralzed
GOOSの価値は?
アジェンダ

•
テスト駆動開発の進化
•進化の正体
•すこしだけ、前に

                        スライド中で使用されている画像について、
     その著作権の全部または一部は、 クレジットに示した著者によって保留されています。

                        Photo by @digitalsoul0124 All rights reserved.
テスト駆動開発の
   進化
2002   2007
二重の
ループ
開発スタイルとしての
        完成

   何をどう作るのか?
フィードバックループ
リリース
       バックログ
               ペアプログラミング




          ユニットテスト

受け入れテスト
               日次ミーティング
フィーチャを差し込む




   Todd English's Olives http://www.flickr.com/photos/lwy/4925948800/ by LWY
オブジェクト指向観




 関連しあうオブジェクトの
          網の目
モック




  網の中のオブジェクトを
        テストする
内側の質/外側の質
受け入れテスト ユニットテスト

        システム



外側の質    内側の質
ウォーキングスケルトン
              USER
              ID     名前
              001    テスト太郎
 名前   テスト太郎




 すべてのコンポーネントを
   通過する最低限の実装
コードを書くことから
ソフトウェアを作ることへ
進化の正体
時代背景
2000




       http://www.extremeprogramming.org/map/code.html
2000-2005
フレームワークの充実



   http://fit.c2.com/   http://jbehave.org/reference/stable/index.html




 2002                          2003
2005-2010
ドキュメントの充実
2005   2007   2010
知の流れ
流れの中で
彼らは何をしたのか?




  Taylor Creek Fish http://www.flickr.com/photos/averain/2742705037/ by Averain
モックの
歩んだ道
1999               !
                 od
             Pe"
      ers!
    e!
 o G
N
2000                                                                       XP2000




Endo-Testing:
Unit Testing with Mock Objects.
                   Tim Mackinnon, Steve Freeman, Philip Craig




http://www.ccs.neu.edu/research/demeter/related-work/extreme-programming/MockObjectsFinal.PDF
モックの登場
ユニットテストはXPにとって本質的なプラ
クティスだが、コードがある程度複雑になる
と、個別にテストするのが難しくなる。
モックオブジェクトと呼ぶテクニックを
使って、ドメインコードをダミーと置き換
え、実際の機能をエミュレートしつつ、コー
ドのふるまいを検証する。
ソースコード
public void testCreationWithExistingClass() {
  myMockPackage.addContainedType(
     new MockType(EXISTING_CLASS_NAME));
  myMockWorkspace.addPackage(mockPackage);
  JUnitCreatorModel creatorModel =
    new JunitCreatorModel(myMockWorkspace,
PACKAGE_NAME);
  try {
     creatorModel.createTestCase(EXISTING_CLASS_NAME);
     fail("Should generate an exception for existing type");
  } catch (ClassExistsException ex) {
     assertEquals(EXISTING_CLASS_NAME, ex.getClassName());
  }
  myMockWorkspace.verify();
}
2004                                OOPSLA2004




Mock Roles, Not Objects
Steve Freeman, Nat Pryce, Tim Mackinnon, Joe Walnes




                                   http://jmock.org/oopsla2004.pdf
設計手法としての価値
以前は実装に集中しすぎていたが、最も大
切なのは、このテクニックにより、オブジェ
クト同士が演じるロールが強調されること
だ。
            - Tim Mackinnon



  http://www.mockobjects.com/2009/09/brief-history-of-mock-objects.html
インターフェイスの発見




  Endo-Testingでも見られた概念が
              より洗練されている
2006                    OOPSLA2006




Evolving an Embedded Domain-
Specific Language in Java
               Steve Freeman, Nat Pryce




                       http://jmock.org/oopsla2006.pdf
内部DSLとしての
jMock




   流れるようなインターフェイス
DSL本へ
ウォーキング
 スケルトン
   の
  起源
このパターンというか戦略を見つけたのは
1994年頃だった。1997年頃までに
Walking Skeletonという名前を
付けて、1999年にはIncremantal

Rearchitectureと相性がいいこと
がわかってきた。
                - Alistair Cockburn


           http://alistair.cockburn.us/Walking+skeleton
Spanning Application
             - Poppendiecks (2003)


Tracer Bullets
  - Dave Thomas & Andy Hunt (1999)
フィードバックの源泉




ウォーキング・スケルトンを基に
ビルド・テストデプロイの自動化
   River Ridge Trail by by Bruce McKay Yellow Snow Photography
        http://www.flickr.com/photos/brucemckay/5314508266/
継続的デリバリーへ
巨人の肩に乗る
ひとつずつ石を積む
すこしだけ、前に
進むべき道は
どこに見つかるだろう
実践し続けること
学び続けること




  20091204_Hermitage_library_002 http://www.flickr.com/photos/friarsbalsam/4609212148/ by Friar's Balsam
考え続けること




 thought http://www.flickr.com/photos/fresh_photo/3479598520/ by freshphoto
一歩ずつ、前に
足跡を残す
覚悟はいいか?
オレはできてる
ありがとうございました!
         Photo by @digitalsoul0124 All rights reserved.

Mais conteúdo relacionado

Destaque

Dia de la Música
Dia de la MúsicaDia de la Música
Dia de la Músicamartinyomar
 
spring semester theta update
spring semester theta updatespring semester theta update
spring semester theta updateLiz Moore
 
The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...
The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...
The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...C J Yang
 
Palestra Atendimento - COC (2008)
Palestra Atendimento - COC (2008)Palestra Atendimento - COC (2008)
Palestra Atendimento - COC (2008)Alexandre Mutran
 
Production data of glyphosate technical
Production data of glyphosate technicalProduction data of glyphosate technical
Production data of glyphosate technicalCCM Intelligence
 
НТБ. Евгений Архишин. "Система контроля привилегированных пользователей Safe...
НТБ. Евгений Архишин. "Система контроля  привилегированных пользователей Safe...НТБ. Евгений Архишин. "Система контроля  привилегированных пользователей Safe...
НТБ. Евгений Архишин. "Система контроля привилегированных пользователей Safe...Expolink
 
Using ICT to collect pupil feedback
Using ICT to collect pupil feedbackUsing ICT to collect pupil feedback
Using ICT to collect pupil feedbackCharlie Barrow
 
Cartilha mudandocomportamentos
Cartilha mudandocomportamentosCartilha mudandocomportamentos
Cartilha mudandocomportamentosGeraldo Souza
 
Enterprise Products- Principles and Best Practices
Enterprise Products- Principles and Best PracticesEnterprise Products- Principles and Best Practices
Enterprise Products- Principles and Best Practicesproductmgmtsea
 
Pooja Sharma_CV_Remake
Pooja Sharma_CV_RemakePooja Sharma_CV_Remake
Pooja Sharma_CV_RemakePooja Sharma
 
Blackberry Product portfolio
Blackberry Product portfolioBlackberry Product portfolio
Blackberry Product portfolioashua12
 
Blood Brothers: Easy Terms - Act 1
Blood Brothers: Easy Terms - Act 1Blood Brothers: Easy Terms - Act 1
Blood Brothers: Easy Terms - Act 1Emma Sinclair
 
Pride and Prejudice: marriage
Pride and Prejudice: marriagePride and Prejudice: marriage
Pride and Prejudice: marriageEmma Sinclair
 
Formation e-learning : en savoir plus sur cette industrie [Webinaire]
Formation e-learning : en savoir plus sur cette industrie [Webinaire]Formation e-learning : en savoir plus sur cette industrie [Webinaire]
Formation e-learning : en savoir plus sur cette industrie [Webinaire]Technologia Formation
 

Destaque (16)

Aditya pharma
Aditya pharmaAditya pharma
Aditya pharma
 
Dia de la Música
Dia de la MúsicaDia de la Música
Dia de la Música
 
spring semester theta update
spring semester theta updatespring semester theta update
spring semester theta update
 
The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...
The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...
The unjust (worldly smart) Steward (Luke 16:1-8); A role model that Christian...
 
Palestra Atendimento - COC (2008)
Palestra Atendimento - COC (2008)Palestra Atendimento - COC (2008)
Palestra Atendimento - COC (2008)
 
Production data of glyphosate technical
Production data of glyphosate technicalProduction data of glyphosate technical
Production data of glyphosate technical
 
НТБ. Евгений Архишин. "Система контроля привилегированных пользователей Safe...
НТБ. Евгений Архишин. "Система контроля  привилегированных пользователей Safe...НТБ. Евгений Архишин. "Система контроля  привилегированных пользователей Safe...
НТБ. Евгений Архишин. "Система контроля привилегированных пользователей Safe...
 
Using ICT to collect pupil feedback
Using ICT to collect pupil feedbackUsing ICT to collect pupil feedback
Using ICT to collect pupil feedback
 
Cartilha mudandocomportamentos
Cartilha mudandocomportamentosCartilha mudandocomportamentos
Cartilha mudandocomportamentos
 
Enterprise Products- Principles and Best Practices
Enterprise Products- Principles and Best PracticesEnterprise Products- Principles and Best Practices
Enterprise Products- Principles and Best Practices
 
Pooja Sharma_CV_Remake
Pooja Sharma_CV_RemakePooja Sharma_CV_Remake
Pooja Sharma_CV_Remake
 
Blackberry Product portfolio
Blackberry Product portfolioBlackberry Product portfolio
Blackberry Product portfolio
 
Arkadin value prop Corporate
Arkadin value prop CorporateArkadin value prop Corporate
Arkadin value prop Corporate
 
Blood Brothers: Easy Terms - Act 1
Blood Brothers: Easy Terms - Act 1Blood Brothers: Easy Terms - Act 1
Blood Brothers: Easy Terms - Act 1
 
Pride and Prejudice: marriage
Pride and Prejudice: marriagePride and Prejudice: marriage
Pride and Prejudice: marriage
 
Formation e-learning : en savoir plus sur cette industrie [Webinaire]
Formation e-learning : en savoir plus sur cette industrie [Webinaire]Formation e-learning : en savoir plus sur cette industrie [Webinaire]
Formation e-learning : en savoir plus sur cette industrie [Webinaire]
 

Semelhante a 世界をすこしだけ前に進めるということ

テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Recruit Technologies
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
tech talk about JS #0
tech talk about JS #0tech talk about JS #0
tech talk about JS #0Hika Maeng
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーShuji Watanabe
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方Yuki Takahashi
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストYoichiro Sakurai
 
SGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーSGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーYukei Wachi
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid uniqueAtsushi Odagiri
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチTomoharu ASAMI
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Masanori Satoh
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Hiroshi Hayakawa
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションmirer
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見Yosuke HASEGAWA
 
Androidで使えるモックフレームワーク
Androidで使えるモックフレームワークAndroidで使えるモックフレームワーク
Androidで使えるモックフレームワークKoji Hasegawa
 

Semelhante a 世界をすこしだけ前に進めるということ (20)

テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
Gws in fukuoka
Gws in fukuokaGws in fukuoka
Gws in fukuoka
 
tech talk about JS #0
tech talk about JS #0tech talk about JS #0
tech talk about JS #0
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
SGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーSGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリー
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!
 
第11回しゃちほこオラクル倶楽部
第11回しゃちほこオラクル倶楽部第11回しゃちほこオラクル倶楽部
第11回しゃちほこオラクル倶楽部
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
Androidで使えるモックフレームワーク
Androidで使えるモックフレームワークAndroidで使えるモックフレームワーク
Androidで使えるモックフレームワーク
 

Mais de Yukei Wachi

エヴァンス本から今学べること
エヴァンス本から今学べることエヴァンス本から今学べること
エヴァンス本から今学べることYukei Wachi
 
価値の源流に向かう旅
価値の源流に向かう旅価値の源流に向かう旅
価値の源流に向かう旅Yukei Wachi
 
スモールリーダーシップ読書会ワークショップ
スモールリーダーシップ読書会ワークショップスモールリーダーシップ読書会ワークショップ
スモールリーダーシップ読書会ワークショップYukei Wachi
 
「言葉の地図」でチームの議論をスムーズに
「言葉の地図」でチームの議論をスムーズに「言葉の地図」でチームの議論をスムーズに
「言葉の地図」でチームの議論をスムーズにYukei Wachi
 
ドメイン駆動設計再入門
ドメイン駆動設計再入門ドメイン駆動設計再入門
ドメイン駆動設計再入門Yukei Wachi
 
ゆらぎのある決定
ゆらぎのある決定ゆらぎのある決定
ゆらぎのある決定Yukei Wachi
 
知識から反射へ
知識から反射へ知識から反射へ
知識から反射へYukei Wachi
 
エッセンシャルスクラムのエッセンス
エッセンシャルスクラムのエッセンスエッセンシャルスクラムのエッセンス
エッセンシャルスクラムのエッセンスYukei Wachi
 
コードに語らせるために
コードに語らせるためにコードに語らせるために
コードに語らせるためにYukei Wachi
 
「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係Yukei Wachi
 
ざっくり DDD 入門!!
ざっくり DDD 入門!!ざっくり DDD 入門!!
ざっくり DDD 入門!!Yukei Wachi
 
人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜Yukei Wachi
 
教科書と現場のあいだ
教科書と現場のあいだ教科書と現場のあいだ
教科書と現場のあいだYukei Wachi
 
Dddをもっと身近に
Dddをもっと身近にDddをもっと身近に
Dddをもっと身近にYukei Wachi
 
Future Center@Junkudo
Future Center@JunkudoFuture Center@Junkudo
Future Center@JunkudoYukei Wachi
 
Growing Grails Software, Driven by Domain
Growing Grails Software, Driven by DomainGrowing Grails Software, Driven by Domain
Growing Grails Software, Driven by DomainYukei Wachi
 
戦略的設計入門
戦略的設計入門戦略的設計入門
戦略的設計入門Yukei Wachi
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門Yukei Wachi
 
DDD Part3 Retrospective
DDD Part3 RetrospectiveDDD Part3 Retrospective
DDD Part3 RetrospectiveYukei Wachi
 

Mais de Yukei Wachi (20)

エヴァンス本から今学べること
エヴァンス本から今学べることエヴァンス本から今学べること
エヴァンス本から今学べること
 
価値の源流に向かう旅
価値の源流に向かう旅価値の源流に向かう旅
価値の源流に向かう旅
 
スモールリーダーシップ読書会ワークショップ
スモールリーダーシップ読書会ワークショップスモールリーダーシップ読書会ワークショップ
スモールリーダーシップ読書会ワークショップ
 
「言葉の地図」でチームの議論をスムーズに
「言葉の地図」でチームの議論をスムーズに「言葉の地図」でチームの議論をスムーズに
「言葉の地図」でチームの議論をスムーズに
 
ドメイン駆動設計再入門
ドメイン駆動設計再入門ドメイン駆動設計再入門
ドメイン駆動設計再入門
 
ゆらぎのある決定
ゆらぎのある決定ゆらぎのある決定
ゆらぎのある決定
 
知識から反射へ
知識から反射へ知識から反射へ
知識から反射へ
 
エッセンシャルスクラムのエッセンス
エッセンシャルスクラムのエッセンスエッセンシャルスクラムのエッセンス
エッセンシャルスクラムのエッセンス
 
コードに語らせるために
コードに語らせるためにコードに語らせるために
コードに語らせるために
 
「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係
 
ざっくり DDD 入門!!
ざっくり DDD 入門!!ざっくり DDD 入門!!
ざっくり DDD 入門!!
 
人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜
 
教科書と現場のあいだ
教科書と現場のあいだ教科書と現場のあいだ
教科書と現場のあいだ
 
Dddをもっと身近に
Dddをもっと身近にDddをもっと身近に
Dddをもっと身近に
 
Future Center@Junkudo
Future Center@JunkudoFuture Center@Junkudo
Future Center@Junkudo
 
Growing Grails Software, Driven by Domain
Growing Grails Software, Driven by DomainGrowing Grails Software, Driven by Domain
Growing Grails Software, Driven by Domain
 
戦略的設計入門
戦略的設計入門戦略的設計入門
戦略的設計入門
 
Model on Grails
Model on GrailsModel on Grails
Model on Grails
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
DDD Part3 Retrospective
DDD Part3 RetrospectiveDDD Part3 Retrospective
DDD Part3 Retrospective
 

世界をすこしだけ前に進めるということ