Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
テスト駆動開発でダイエットに挑戦して失敗した話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
terahide
September 30, 2023
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト駆動開発でダイエットに挑戦して失敗した話
XP祭り2023 で発表した内容です
terahide
September 30, 2023
More Decks by terahide
See All by terahide
アニメに学ぶチームの多様性とコンピテンシー
terahide
0
720
コミュニケーション不全はなぜ起きるか
terahide
0
170
オレオレになりがちなテスト計画を見直した話
terahide
0
200
和服を普段着にするようになって気づいたアジャイルの心
terahide
0
51
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
terahide
0
180
一番アジャイルな料理人はソーマくんだと思うんだ
terahide
0
100
Att
terahide
0
53
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
terahide
0
57
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
terahide
0
77
Other Decks in Technology
See All in Technology
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.9k
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
4
2.1k
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
460
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
510
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.4k
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.6k
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
710
SREへの勘違いに気づいた後の話
tomodakengo
0
150
The Knowledge Spine: A Machine-Executable Ontology for Governed Marketing Activation
vananth22
0
120
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.6k
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.4k
SREは、MCPとAutopilotをこう使え!
kazumax55
3
960
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
550
Into the Great Unknown - MozCon
thekraken
41
2.7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
530
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
700
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Transcript
テスト駆動開発でダイエット に挑戦して失敗した話 てらひで 2023.9.30 XP祭り 2023 TrackB 14:25-14:45
だれ? てらひで @terahide27 • SIorを中心にアジャイルを叫んでいる • ふりかえりの人 • テスト駆動開発の人 •
着物ぐらし • 深夜アニメのカバレッジ90% • 初音ミク • 酒・ラーメン
はじめに • テスト駆動開発というものが あって大変すばらしいものだ • TDDBCなどテスト駆動開発を学 ぶコミュニティもたくさんある • 自分もテスト駆動飲み会という コミュニティの幹事の1人である
テスト駆動開発とは? • Red → Green → Refactor を繰り替えすサイクルで開発する 1. まずはテストを書く
(失敗させる) 2. テストが通るように プロダクションコードを直す 3.重複を排除する 上記のサイクルをくり返す
テスト駆動開発を行う利点 • プログラムの内部品質が高くなる • 凝集度があがって結合度がさがる • 開発を行う対象の理解が進む • 設計判断に迷うことが少なくなる •
安全にリファクタリングが可能 SQuaRE (ISO25000シリーズ) における品質特性 つながる世界のソフトウェア品質ガイド
こんなに素晴らしいものを 開発だけに 留めておいていいのか? • 生活の中で使えないか?
何があったか? • 健康診断で血圧が170 • その場で降圧剤を処方される • 医者に行ったところBMI値を 標準にせよ(10kg痩せろ) • コロナが始まって半年で5kg増加
• ダイエットに応用しよう!
と、その前に
テスト駆動開発のイロハ • TODOリストを作成する • テストを書く • Red テストを失敗させる • Green
最速でテストを通す • Refactor 重複を排除する • Red→Green→Refactor のサイクルを繰り返す 1. まずはテストを書く (失敗させる) 2. テストが通るように プロダクションコードを直す 3.重複を排除する
TODOリストを作成する • 書くべきテストをTODOリストへ追加する • [ ] 四則演算 • [ ]
クリア • [ ] 平方根 • [ ] べき乗 • [ ] メモリー
テストを書く • 足し算(四則演算の一部)の簡単な例 def testAdd1to1 { sut = Calculator.new() actual
= sut.add(1, 1) assert 2 == actual } テストコード
Red テストを失敗させる • 書いたテストを実行する • Calculatorが存在しないためシンタックスエラー def testAdd1to1 { sut
= Calculator.new() actual = sut.add(1, 1) assert 2 == actual } テストコード
Red コンパイルを通す • プロダクションコードを追加してコンパイルをとおす def testAdd1to1 { sut = Calculator.new()
actual = sut.add(1, 1) assert 2 == actual } テストコード class Calculator { def add(i, j){ } } プロダクションコード • 再び実行 • テスト失敗 • 2 を期待しているが null
Green 最速でテストを通す • 仮実装でテストを通す def testAdd1to1 { sut = Calculator.new()
actual = sut.add(1, 1) assert 2 == actual } テストコード class Calculator { def add(i, j){ return 2 } } プロダクションコード • 再び実行 • テスト成功!
Refactor 重複を排除する • ここでは変更の余地なし def testAdd1to1 { sut = Calculator.new()
actual = sut.add(1, 1) assert 2 == actual } テストコード class Calculator { def add(i, j){ return 2 } } プロダクションコード
Red テストを追加する • 三角測量のテストを追加 def testAdd1to1 { sut = Calculator.new()
actual = sut.add(1, 1) assert2 == actual } def testAdd2to1 { sut = Calculator.new() actual = sut.add(2, 1) assert 3 == actual } テストコード class Calculator { def add(i, j){ return 2 } } プロダクションコード • 再び実行 • 1件成功, 1件失敗 • testAdd2to1: 3 を期待しているが 2
Green 最速でテストを通す • 明白な実装でテストを通す class Calculator { def add(i, j){
return i+j } } プロダクションコード • 再び実行 • テスト成功! def testAdd1to1 { sut = Calculator.new() actual = sut.add(1, 1) assert 2 == actual } def testAdd2to1 { sut = Calculator.new() actual = sut.add(2, 1) assert 3 == actual } テストコード
Refactor 重複を排除する • テストコードのフィクスチャを共通化 class Calculator { def add(i, j){
return i+j } } プロダクションコード def sut def setup{ sut = Calculator.new() } def testAdd1to1 { assert 2 == sut.add(1, 1) } def testAdd2to1 { assert 3 == sut.add(2, 1) } テストコード • 再び実行 • テスト成功!
Red→Green→Refactor のサイクルを繰り返す 1. まずはテストを書く (失敗させる) 2. テストが通るように プロダクションコードを直す 3.重複を排除する
ところで テストってなんだっけ? なんのためにするの?
計測
ダイエットではどうなる? 1. Red: 小さな目標を決める (-1kgとか) 2. 最速でGreenに: 絶食してでも目標体重に 3. Refactor:
食生活やその他 の生活を見直す
結果どうなったか?
絶食とかムリ! サイクルを1回も廻せませんでした。。。
その後のはなし
地道な活動が重要と気がついた 変えなかったこと 変えたこと 筋トレみたいな運動しない ビールを低糖質に 酒を止めない 週末は1食 毎日のウォーキング(DQウォーク万歳!) 日本酒は減らした ちょっとしたストレッチ
ちょっとした糖質の制限 https://products.suntory.co.jp/d/4901777374270/
日々の食生活 豆腐、鶏むね あとちょっとの野菜
eXtreme Programming • Extreme • 極端な、過激な
ラーメンとか 普通に食べてます • 最近、近所がラーメン新店のラッシュでw
気が付いたこと • インプットとアウトプットのバランス • PFCバランス • 1kgくらいはすぐに減ったり増えたりする • 逆に食べても増えないときとかある •
夏の暑い日は食べられない
そしたら • 7月のある日目標へ!
その後 • 2-3kgの増減はありつつも リバウンドは今のところなし
まとめ ダイエットは • ちゃんと記録をして • 地道な活動が重要!
Be Happy