SlideShare a Scribd company logo
1 of 28
Download to read offline
TDD最初の一歩
2014/3/30 ミニTDDBC presented by yokohama.devtesting
大中浩行(@setoazusa)
Copyright 2014 Hiroyuki Ohnaka
自己紹介
• 大中浩行 (Ohnaka, Hiroyuki)
• 泣き笑いせつなポップ中年。
• yokohama.devtesting / devtesting-ja
• @setoazusa
• http://blog.fieldnotes.jp/
• Javaプログラマ
• グロースエクスパートナーズ(株)所属
Copyright 2014 Hiroyuki Ohnaka
yokohama.devtestingとは
• Developer Testing およびその周辺領域について、ディス
カッションやハンズオンなど、ゆるく行うコミュニティで
す。
• TDDBC横浜からスピンアウトしたコミュニティ
4Copyright 2014 Hiroyuki Ohnaka
TDDとは
Copyright 2014 Hiroyuki Ohnaka
TDD
• テスト
• 駆動
• 開発
• テストによって駆動される開発
Copyright 2014 Hiroyuki Ohnaka
テスト
「全てのライフサイクルを通じて実施する静的、動的なプ
ロセスにおいて、成果物が特定の要件を満足するかを判定
し、目的に合致することを実証し、欠陥を見つけるため、
ソフトウェアプロダクトや関連成果物に対し、計画、準備、
評価をすること」
ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01
Copyright 2014 Hiroyuki Ohnaka
駆動
テスト駆動開発は、プログラム中の不安を管理する方法で
ある。ここで言う不安とは悪い意味ではない。...(略)...
道理にかなった不安、すなわち「これは困難な問題だから
最初から最後までは分からない」という感覚である。
「コードをどのように書けばいいのかわからない」とい
う不安を、失敗するテストとして表現することで、開発
を駆動させる原動力とするという、制御の逆転(Inversion
of Control)を表している
「テスト駆動開発入門」から
Copyright 2014 Hiroyuki Ohnaka
開発
我々が最も価値を置くのは、価値あるソフトウェアを早いうち
から継続的にデリバリーすることを通じて顧客を満足させるこ
とである。
そのための、「価値の流れ」を構成する一連の営み
Principles behind the Agile Manifesto
http://agilemanifesto.org/principles.html
(訳は 和智・高木(2012))
9Copyright 2014 Hiroyuki Ohnaka
TDDのゴール
Copyright 2014 Hiroyuki Ohnaka
「動作するきれいなコード」
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
「動作するきれいなコードへの2つの道」
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
TDDのサイクル
1. 次の目標を考える
2. その目標を示すテストを書く
3. そのテストを実行して失敗させる(Red)
4. 目的のコードを書く
5. 2で書いたテストを成功させる(Green)
6. テストが通るままでリファクタリングを行う(Refator)
7. 1~6を繰り返す
Copyright 2014 Hiroyuki Ohnaka
TDDと黄金の回転
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
キーワード
• テストファースト
• TODOリスト
• アサートファースト
• 仮実装
• 三角測量
• 明白な実装
• リファクタリング
Copyright 2014 Hiroyuki Ohnaka
TDD三原則(「クリーンコード」より)
• 失敗する単体テストのコードを書く前に、製品のコードを書い
てはならない
• コンパイルが通り、適切に失敗する単体テストができるまでは、
次の単体テストを書いてはならない
• 現在失敗している単体テストが通るまで、次の製品コードを書
いてはならない。
16Copyright 2014 Hiroyuki Ohnaka
TDDのこころ
Copyright 2014 Hiroyuki Ohnaka
• 小さく回す
• 複数を相手にしない
「わが全力をもって敵の分力を撃つ。
つねに敵をつつむがごとくに運動す
る」
司馬遼太郎「坂の上の雲」より
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:MIKASAPAINTING.jpg
Copyright 2014 Hiroyuki Ohnaka
ユニットテストあるある
• 他のテストと一緒に流したら落ちるテスト
• 他のテストと一緒に流さないと落ちるテスト
• 月が変わると落ちるテスト
• リファクタリングするとコンパイルエラーになるテスト
• 仕様変更で全滅するテスト
• バグがあるのにグリーンバーなテスト
良いテストのために優先すべきもの
• 再現性、繰り返し可能(Repeatable)
• 独立していること(Independent)
• 詳しくは、http://xunitpatterns.com/
20Copyright 2014 Hiroyuki Ohnaka
現場で戦う
荒みきったコード
疲弊しきった現場
爆弾処理のようなリリース
http://www.flickr.com/photos/okinawa-soba/2951808529/
http://www.flickr.com/photos/22719239@N04/2246462044/
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Bomb_neutralizing_EOD_9.jpg
Copyright 2014 Hiroyuki Ohnaka
僕たちはアムロにはなれない
• TDDは銀の弾丸ではない
• 全ての問題をテクニカルなプラクティスで解決しようとしな
い
• 原理主義に走らない
• 「テストを書かなければならない」
• 「テストファーストしなければならない」
• 「全てのクラスにユニットテストがなければならない」
Copyright 2014 Hiroyuki Ohnaka
「2人目を探す」
• 「より良い開発」を目指すというコンセンサス
• 日々是改善
• そのことを考えた時に、TDDより先にやることがあるかも
しれない
• テストデータの整備
• デプロイ手順の整備
• etc…
Copyright 2014 Hiroyuki Ohnaka
もうウンザリです。何も改善できません。
「しかし、私たちにはプログラミングをする本当の
理由があるはずです。」
「もし、自分や同僚がプログラミングを楽しめるな
ら、どんなシステムに取り組んでいるかは重要では
ありません。そのシステムに対してきちんとした仕
事ができるはずで、そうでなければ待っているのは
落胆です。そうなってしまっては何の楽しみもあり
ませんし、私たちはそんな目に遭うべきではありま
せん。」
Copyright 2014 Hiroyuki Ohnaka
「レガシーコードで成功する鍵は、やりがいを見出すこと
です。」
Copyright 2014 Hiroyuki Ohnaka
「君にも君を動かしているものがあるでしょう?」
牛木義隆(2008) 夢喰いメリー(1) 芳文社
Copyright 2014 Hiroyuki Ohnaka
さいごに
「君が質の高いソフトウェアを届けることは誰にも止められ
ない。君が現場に立って、お客さんに向けてプロジェクトの
状況と、プロジェクトに必要なことを誠実に伝えることも誰
にも止められないんだ。」
Copyright 2014 Hiroyuki Ohnaka
参考文献
• Beck,Kent(2002) Test Driven Development: By Example Addison-Wesley Professional (長瀬 嘉秀(監訳)テクノロジックアート(訳) (2003) テスト駆動開発入
門 ピアソンエデュケーソン )
• Feathers, Michael C. (2005) Michael C. Feathers Working Effectively with Legacy Code Pearson Education (ウルシステムズ株式会社(監訳) 平澤章、越智典
子、稲葉信之、Fearless Change: Patterns for Introducing New Ideas田村友彦、小堀真義(訳) (2009) レガシーコード改善ガイド 翔泳社)
• Humble,Jef Farley David(2011) Continuous Delivery :Reliable Software Releases Though Build,Test,And Deployment Automation Addison-Wesley
Professional (和智右桂、高木正弘(2012)継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化 アスキー・メディ
アワークス)
• Manns,Mary Linn, Rising,Linn(2004) Fearless Change: Patterns for Introducing New Ideas Addison-Wesley (川口恭伸、木村卓央(監訳) 高江洲睦、高橋一
貴、中込大祐、安井力、山口鉄平、角征典(訳) (2014) Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン 丸善出版)
• Martin, Robert C. (2009) Clean CODE: A HANDBOOK OF AGILE OFTWARE CRAFTMANSHP Pearson Education (花井志生(訳) (2009) Clean Code アジャ
イルソフトウェア達人の技 アスキー・メディアワークス)
• Meszaros, Gerard (2007) xUnit Test Patterns: Refactoring Test Code Addison-Wesley Professional
• 日本ソフトウェアテスト資格認定委員会(2012) ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01 http://jstqb.jp/dl/JSTQB-glossary.V2.2.J01.pdf
• Rasmusson, Jonathan(2010) The Agile Samurai: How Agile Masters Deliver Great Software Pragmatic Bookshelf (西村直人、角谷信太郎(監訳) 近藤修
平、角掛 拓未 アジャイルサムライ 達人開発者への道 オーム社)
• 和田卓人(2014) TDDのこころ@OHC2014 http://www.slideshare.net/t_wada/osh2014-sprit-of-tdd

More Related Content

What's hot

テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
 
アジャイルチームのためのソフトウェアテスト勉強会
アジャイルチームのためのソフトウェアテスト勉強会アジャイルチームのためのソフトウェアテスト勉強会
アジャイルチームのためのソフトウェアテスト勉強会Taisuke Shiratori
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIKoichiro Sumi
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrumKenji Morita
 
CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにTakafumi Ikeda
 
TDD研究会 デブサミ2012 コミュニティLT
TDD研究会 デブサミ2012 コミュニティLTTDD研究会 デブサミ2012 コミュニティLT
TDD研究会 デブサミ2012 コミュニティLTYasui Tsutomu
 
Re-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decadeRe-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decadeYasuharu Nishi
 
ドメイン駆動設計再入門
ドメイン駆動設計再入門ドメイン駆動設計再入門
ドメイン駆動設計再入門Yukei Wachi
 
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーンメトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーンHiroyuki Ito
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
探索的テストを探索する
探索的テストを探索する探索的テストを探索する
探索的テストを探索するMasao Tsuzuki
 
How to let them in house of quality
How to let them in house of qualityHow to let them in house of quality
How to let them in house of qualityTakahiro Toku
 
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクスHiroyuki Ito
 

What's hot (16)

テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 
アジャイルチームのためのソフトウェアテスト勉強会
アジャイルチームのためのソフトウェアテスト勉強会アジャイルチームのためのソフトウェアテスト勉強会
アジャイルチームのためのソフトウェアテスト勉強会
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrum
 
CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするために
 
Dev love kansai
Dev love kansaiDev love kansai
Dev love kansai
 
TDD研究会 デブサミ2012 コミュニティLT
TDD研究会 デブサミ2012 コミュニティLTTDD研究会 デブサミ2012 コミュニティLT
TDD研究会 デブサミ2012 コミュニティLT
 
Re-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decadeRe-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decade
 
イノベーションのヒントになる「エクストリーム・ユーザー」
イノベーションのヒントになる「エクストリーム・ユーザー」イノベーションのヒントになる「エクストリーム・ユーザー」
イノベーションのヒントになる「エクストリーム・ユーザー」
 
ドメイン駆動設計再入門
ドメイン駆動設計再入門ドメイン駆動設計再入門
ドメイン駆動設計再入門
 
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーンメトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
 
アジャイルUX物語
アジャイルUX物語アジャイルUX物語
アジャイルUX物語
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
探索的テストを探索する
探索的テストを探索する探索的テストを探索する
探索的テストを探索する
 
How to let them in house of quality
How to let them in house of qualityHow to let them in house of quality
How to let them in house of quality
 
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
 

Similar to 2014/3/30 ミニTDDBC presented by yokhama.devtesting

TDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcTDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcHiroyuki Ohnaka
 
devreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdfdevreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdfShotaro Suzuki
 
5分で解るocp
5分で解るocp5分で解るocp
5分で解るocpKoichi Ise
 
ソフトウェアだんどり
ソフトウェアだんどりソフトウェアだんどり
ソフトウェアだんどりTakashi Imagire
 
開発者のためのUIデザイン入門
開発者のためのUIデザイン入門開発者のためのUIデザイン入門
開発者のためのUIデザイン入門Hiroyuki Mori
 
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)Naoya Maekawa
 
卒論パワポVer3 伊東純平
卒論パワポVer3 伊東純平卒論パワポVer3 伊東純平
卒論パワポVer3 伊東純平純平 伊東
 
神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422Aya Tokura
 
アジャイルマニフェストから始めるアジャイル
アジャイルマニフェストから始めるアジャイルアジャイルマニフェストから始めるアジャイル
アジャイルマニフェストから始めるアジャイルYou&I
 
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用Naoya Maekawa
 
SPI Japan2013 アジャイルチュートリアル
SPI Japan2013 アジャイルチュートリアルSPI Japan2013 アジャイルチュートリアル
SPI Japan2013 アジャイルチュートリアルNaoya Maekawa
 
20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineerKazuaki Matsuo
 
Uno Platform か Blazor
Uno Platform か BlazorUno Platform か Blazor
Uno Platform か BlazorHiroyuki Mori
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜Koichi ITO
 
スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31Sukusuku Scrum
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景Koichi ITO
 
アジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキアジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキYou&I
 
A Report on process Assessment for open source projects
A Report on process Assessment for open source projectsA Report on process Assessment for open source projects
A Report on process Assessment for open source projectsKiyoshi Ogawa
 
デブサミ2014 オフィシャルコミュニティ募集要項
デブサミ2014 オフィシャルコミュニティ募集要項デブサミ2014 オフィシャルコミュニティ募集要項
デブサミ2014 オフィシャルコミュニティ募集要項Developers Summit
 

Similar to 2014/3/30 ミニTDDBC presented by yokhama.devtesting (20)

TDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcTDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbc
 
devreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdfdevreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdf
 
5分で解るocp
5分で解るocp5分で解るocp
5分で解るocp
 
Aj2016 toyama feedback
Aj2016 toyama feedbackAj2016 toyama feedback
Aj2016 toyama feedback
 
ソフトウェアだんどり
ソフトウェアだんどりソフトウェアだんどり
ソフトウェアだんどり
 
開発者のためのUIデザイン入門
開発者のためのUIデザイン入門開発者のためのUIデザイン入門
開発者のためのUIデザイン入門
 
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
 
卒論パワポVer3 伊東純平
卒論パワポVer3 伊東純平卒論パワポVer3 伊東純平
卒論パワポVer3 伊東純平
 
神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422
 
アジャイルマニフェストから始めるアジャイル
アジャイルマニフェストから始めるアジャイルアジャイルマニフェストから始めるアジャイル
アジャイルマニフェストから始めるアジャイル
 
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
 
SPI Japan2013 アジャイルチュートリアル
SPI Japan2013 アジャイルチュートリアルSPI Japan2013 アジャイルチュートリアル
SPI Japan2013 アジャイルチュートリアル
 
20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer
 
Uno Platform か Blazor
Uno Platform か BlazorUno Platform か Blazor
Uno Platform か Blazor
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
 
スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
アジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキアジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキ
 
A Report on process Assessment for open source projects
A Report on process Assessment for open source projectsA Report on process Assessment for open source projects
A Report on process Assessment for open source projects
 
デブサミ2014 オフィシャルコミュニティ募集要項
デブサミ2014 オフィシャルコミュニティ募集要項デブサミ2014 オフィシャルコミュニティ募集要項
デブサミ2014 オフィシャルコミュニティ募集要項
 

More from Hiroyuki Ohnaka

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱いHiroyuki Ohnaka
 
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験Hiroyuki Ohnaka
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...Hiroyuki Ohnaka
 
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話Hiroyuki Ohnaka
 
「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプルHiroyuki Ohnaka
 
Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Hiroyuki Ohnaka
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescriptHiroyuki Ohnaka
 
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版Hiroyuki Ohnaka
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版Hiroyuki Ohnaka
 
仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~Hiroyuki Ohnaka
 
錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘いHiroyuki Ohnaka
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Hiroyuki Ohnaka
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」Hiroyuki Ohnaka
 
TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)Hiroyuki Ohnaka
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)Hiroyuki Ohnaka
 
JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!Hiroyuki Ohnaka
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Hiroyuki Ohnaka
 
「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまでHiroyuki Ohnaka
 
pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約Hiroyuki Ohnaka
 

More from Hiroyuki Ohnaka (20)

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱い
 
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
 
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
 
「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル
 
Mackerelの薄い本
Mackerelの薄い本Mackerelの薄い本
Mackerelの薄い本
 
Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescript
 
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
 
仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~
 
錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」
 
TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)
 
JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
 
「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで
 
pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約
 

2014/3/30 ミニTDDBC presented by yokhama.devtesting

  • 1. TDD最初の一歩 2014/3/30 ミニTDDBC presented by yokohama.devtesting 大中浩行(@setoazusa)
  • 2. Copyright 2014 Hiroyuki Ohnaka 自己紹介 • 大中浩行 (Ohnaka, Hiroyuki) • 泣き笑いせつなポップ中年。 • yokohama.devtesting / devtesting-ja • @setoazusa • http://blog.fieldnotes.jp/ • Javaプログラマ • グロースエクスパートナーズ(株)所属
  • 3. Copyright 2014 Hiroyuki Ohnaka yokohama.devtestingとは • Developer Testing およびその周辺領域について、ディス カッションやハンズオンなど、ゆるく行うコミュニティで す。 • TDDBC横浜からスピンアウトしたコミュニティ
  • 4. 4Copyright 2014 Hiroyuki Ohnaka TDDとは
  • 5. Copyright 2014 Hiroyuki Ohnaka TDD • テスト • 駆動 • 開発 • テストによって駆動される開発
  • 6. Copyright 2014 Hiroyuki Ohnaka テスト 「全てのライフサイクルを通じて実施する静的、動的なプ ロセスにおいて、成果物が特定の要件を満足するかを判定 し、目的に合致することを実証し、欠陥を見つけるため、 ソフトウェアプロダクトや関連成果物に対し、計画、準備、 評価をすること」 ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01
  • 7. Copyright 2014 Hiroyuki Ohnaka 駆動 テスト駆動開発は、プログラム中の不安を管理する方法で ある。ここで言う不安とは悪い意味ではない。...(略)... 道理にかなった不安、すなわち「これは困難な問題だから 最初から最後までは分からない」という感覚である。 「コードをどのように書けばいいのかわからない」とい う不安を、失敗するテストとして表現することで、開発 を駆動させる原動力とするという、制御の逆転(Inversion of Control)を表している 「テスト駆動開発入門」から
  • 8. Copyright 2014 Hiroyuki Ohnaka 開発 我々が最も価値を置くのは、価値あるソフトウェアを早いうち から継続的にデリバリーすることを通じて顧客を満足させるこ とである。 そのための、「価値の流れ」を構成する一連の営み Principles behind the Agile Manifesto http://agilemanifesto.org/principles.html (訳は 和智・高木(2012))
  • 9. 9Copyright 2014 Hiroyuki Ohnaka TDDのゴール
  • 10. Copyright 2014 Hiroyuki Ohnaka 「動作するきれいなコード」 和田卓人(2014) TDDのこころ@OHC2014 より
  • 11. Copyright 2014 Hiroyuki Ohnaka 「動作するきれいなコードへの2つの道」 和田卓人(2014) TDDのこころ@OHC2014 より
  • 12. Copyright 2014 Hiroyuki Ohnaka TDDのサイクル 1. 次の目標を考える 2. その目標を示すテストを書く 3. そのテストを実行して失敗させる(Red) 4. 目的のコードを書く 5. 2で書いたテストを成功させる(Green) 6. テストが通るままでリファクタリングを行う(Refator) 7. 1~6を繰り返す
  • 13. Copyright 2014 Hiroyuki Ohnaka TDDと黄金の回転 和田卓人(2014) TDDのこころ@OHC2014 より
  • 14. Copyright 2014 Hiroyuki Ohnaka キーワード • テストファースト • TODOリスト • アサートファースト • 仮実装 • 三角測量 • 明白な実装 • リファクタリング
  • 15. Copyright 2014 Hiroyuki Ohnaka TDD三原則(「クリーンコード」より) • 失敗する単体テストのコードを書く前に、製品のコードを書い てはならない • コンパイルが通り、適切に失敗する単体テストができるまでは、 次の単体テストを書いてはならない • 現在失敗している単体テストが通るまで、次の製品コードを書 いてはならない。
  • 16. 16Copyright 2014 Hiroyuki Ohnaka TDDのこころ
  • 17. Copyright 2014 Hiroyuki Ohnaka • 小さく回す • 複数を相手にしない 「わが全力をもって敵の分力を撃つ。 つねに敵をつつむがごとくに運動す る」 司馬遼太郎「坂の上の雲」より http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:MIKASAPAINTING.jpg
  • 18. Copyright 2014 Hiroyuki Ohnaka ユニットテストあるある • 他のテストと一緒に流したら落ちるテスト • 他のテストと一緒に流さないと落ちるテスト • 月が変わると落ちるテスト • リファクタリングするとコンパイルエラーになるテスト • 仕様変更で全滅するテスト • バグがあるのにグリーンバーなテスト
  • 20. 20Copyright 2014 Hiroyuki Ohnaka 現場で戦う
  • 22. Copyright 2014 Hiroyuki Ohnaka 僕たちはアムロにはなれない • TDDは銀の弾丸ではない • 全ての問題をテクニカルなプラクティスで解決しようとしな い • 原理主義に走らない • 「テストを書かなければならない」 • 「テストファーストしなければならない」 • 「全てのクラスにユニットテストがなければならない」
  • 23. Copyright 2014 Hiroyuki Ohnaka 「2人目を探す」 • 「より良い開発」を目指すというコンセンサス • 日々是改善 • そのことを考えた時に、TDDより先にやることがあるかも しれない • テストデータの整備 • デプロイ手順の整備 • etc…
  • 24. Copyright 2014 Hiroyuki Ohnaka もうウンザリです。何も改善できません。 「しかし、私たちにはプログラミングをする本当の 理由があるはずです。」 「もし、自分や同僚がプログラミングを楽しめるな ら、どんなシステムに取り組んでいるかは重要では ありません。そのシステムに対してきちんとした仕 事ができるはずで、そうでなければ待っているのは 落胆です。そうなってしまっては何の楽しみもあり ませんし、私たちはそんな目に遭うべきではありま せん。」
  • 25. Copyright 2014 Hiroyuki Ohnaka 「レガシーコードで成功する鍵は、やりがいを見出すこと です。」
  • 26. Copyright 2014 Hiroyuki Ohnaka 「君にも君を動かしているものがあるでしょう?」 牛木義隆(2008) 夢喰いメリー(1) 芳文社
  • 27. Copyright 2014 Hiroyuki Ohnaka さいごに 「君が質の高いソフトウェアを届けることは誰にも止められ ない。君が現場に立って、お客さんに向けてプロジェクトの 状況と、プロジェクトに必要なことを誠実に伝えることも誰 にも止められないんだ。」
  • 28. Copyright 2014 Hiroyuki Ohnaka 参考文献 • Beck,Kent(2002) Test Driven Development: By Example Addison-Wesley Professional (長瀬 嘉秀(監訳)テクノロジックアート(訳) (2003) テスト駆動開発入 門 ピアソンエデュケーソン ) • Feathers, Michael C. (2005) Michael C. Feathers Working Effectively with Legacy Code Pearson Education (ウルシステムズ株式会社(監訳) 平澤章、越智典 子、稲葉信之、Fearless Change: Patterns for Introducing New Ideas田村友彦、小堀真義(訳) (2009) レガシーコード改善ガイド 翔泳社) • Humble,Jef Farley David(2011) Continuous Delivery :Reliable Software Releases Though Build,Test,And Deployment Automation Addison-Wesley Professional (和智右桂、高木正弘(2012)継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化 アスキー・メディ アワークス) • Manns,Mary Linn, Rising,Linn(2004) Fearless Change: Patterns for Introducing New Ideas Addison-Wesley (川口恭伸、木村卓央(監訳) 高江洲睦、高橋一 貴、中込大祐、安井力、山口鉄平、角征典(訳) (2014) Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン 丸善出版) • Martin, Robert C. (2009) Clean CODE: A HANDBOOK OF AGILE OFTWARE CRAFTMANSHP Pearson Education (花井志生(訳) (2009) Clean Code アジャ イルソフトウェア達人の技 アスキー・メディアワークス) • Meszaros, Gerard (2007) xUnit Test Patterns: Refactoring Test Code Addison-Wesley Professional • 日本ソフトウェアテスト資格認定委員会(2012) ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01 http://jstqb.jp/dl/JSTQB-glossary.V2.2.J01.pdf • Rasmusson, Jonathan(2010) The Agile Samurai: How Agile Masters Deliver Great Software Pragmatic Bookshelf (西村直人、角谷信太郎(監訳) 近藤修 平、角掛 拓未 アジャイルサムライ 達人開発者への道 オーム社) • 和田卓人(2014) TDDのこころ@OHC2014 http://www.slideshare.net/t_wada/osh2014-sprit-of-tdd