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
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
730
コミュニケーション不全はなぜ起きるか
terahide
0
180
オレオレになりがちなテスト計画を見直した話
terahide
0
210
和服を普段着にするようになって気づいたアジャイルの心
terahide
0
51
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
terahide
0
180
一番アジャイルな料理人はソーマくんだと思うんだ
terahide
0
110
Att
terahide
0
57
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
terahide
0
64
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
terahide
0
79
Other Decks in Technology
See All in Technology
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
280
ゲームのリアルタイム通信から見た QUIC と MoQ
segadevtech
0
110
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
170
Running Kotlin + Quarkus with Lambda
nealle
1
460
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
480
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.2k
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
720
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
140
今こそ知りたいAmplifyGen2
mkdev10
2
160
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
880
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
1
250
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
5
1.3k
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
590
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
450
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Documentation Writing (for coders)
carmenintech
77
5.6k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Designing for humans not robots
tammielis
254
26k
Test your architecture with Archunit
thirion
2
2.4k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
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