Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【超図解】5分でわかるTDD概論
Search
なゆた
May 09, 2025
Programming
0
26
【超図解】5分でわかるTDD概論
2025年のGWにt_wada本(敬称略)を読んでいい刺激を受けたので、自分なりにTDDの概論についてまとめてみました。
なゆた
May 09, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
カウシェで Four Keys の改善を試みた理由
ike002jp
1
120
20250426 GDGoC 合同新歓 - GDGoC のススメ
getty708
0
110
「理解」を重視したAI活用開発
fast_doctor
0
280
状態と共に暮らす:ステートフルへの挑戦
ypresto
3
1.1k
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
2
1.9k
音声プラットフォームのアーキテクチャ変遷から学ぶ、クラウドネイティブなバッチ処理 (20250422_CNDS2025_Batch_Architecture)
thousanda
0
400
AIコーディングエージェントを 「使いこなす」ための実践知と現在地 in ログラス / How to Use AI Coding Agent in Loglass
rkaga
4
1.2k
UMAPをざっくりと理解 / Overview of UMAP
kaityo256
PRO
3
1.5k
監視 やばい
syossan27
12
10k
大LLM時代にこの先生きのこるには-ITエンジニア編
fumiyakume
8
3.3k
実践Webフロントパフォーマンスチューニング
cp20
45
10k
ニーリーQAのこれまでとこれから
nealle
2
170
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.3k
The Cost Of JavaScript in 2023
addyosmani
49
7.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.5k
Done Done
chrislema
184
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
179
53k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.4k
It's Worth the Effort
3n
184
28k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Transcript
【超図解】5分でわかるTDD概論 2025/05/10 岡山エンジニア座談会&飲み会 #3【Tech Guild】
自己紹介 なゆた(@haruaki_nayuta) 【経歴】 高校卒業後フリーターとして職を転々としていた時期にプログラミングに出会う。 当時FXが好きでMQL4を用いた自動売買アプリを作成するも鳴かず飛ばず。 ある日突然、真面目にプログラミングやるかと思い立ち基本情報技術者を取得。 SESで某JTCに潜り込む。 そこから約2年後、生活習慣の悪さから体を壊し、現在はフリーランスのITエンジニア。 LLMとUIUXが好き。(実はTDDにわかだったりする)
はじめに、TDDとは何ぞや? • 2000年代初頭にケント・ベックが著書で提唱した概念。 • プログラム開発手法の一種で、プログラムに必要な各 機能について、最初にテストを書き(これをテスト ファーストと言う)、そのテストが動作する必要最低 限な実装をとりあえず行なった後、コードを洗練させ る、という短い工程を繰り返すスタイルである。 (Wikipediaから引用、t_wada本はちょうどいい長さの文章が無かったので引用できず…)
• 本質的には自動テストの実践とその改善を通してエン トロピーの収束を制御する技術 TDDの日本で一番有名な本 (通称:t_wada本)
まずエントロピーとは? • 情報エントロピー(IT用語、FEの内容なので説明は割愛)※1 • コードが長くなればなるほど(if文が増えるほど)状態遷移のパターンは 無限に増大する。→エントロピーの増大 • エントロピーが増えるとプログラミングが大変、システム開発を円滑に進 めるためにはテストやリファクタリング等により、エントロピーを現実的 な範囲に収束させる必要がある。
※1 ここでいうエントロピーは全て情報エントロ ピーの事を指します。IPAがFE等で示すエント ロピーの定義とシャノンのエントロピーが指す 内容には若干のズレがあるのですが、細かい話 をするとそれだけで1時間コースなので、気に なる人は後で各自調べてください。 エントロピーが 大きい(多い) エントロピーが 小さい(少ない) 簡単なスクリプト 大企業の基幹システム 会計処理 CRUD 画面遷移の無い フリーソフト 会員登録機能 WEB開発 よく分からんソフトウェア モバイル開発 神エクセル 管理画面 開発が 大変 Hard 開発が 簡単 Easy
自動テストによるエントロピーの収束 • テストを書けば、実装コードのエントロピーは自然とテストの 内側に収束する。 • 仕様とテストコードと実装コードが1対1対1で対応 • テストを書くことで実装コードの是非が明確化 仕様 テストコード
正しい実装コード 間違った実装コード 間違った実装コード
とはいえ面倒臭くないか? • テスト→実装という流れで内容が重複するので実際二度手間 • これ以上仕事を増やすなという現場の声 • 管理職クラスの無理解 従来工法(理想) 従来工法(現実) TDD?
要件定義・設計 実装作業 テスト 要件定義・設計 実装作業 テスト 納期遅延 潜在バグ のリスク 要件定義・設計 テスト 実装作業 納期 キックオフ
もっと柔軟に考えよう。 • シーケンシャルで考えるから非効率 • 開発進捗のパラレル化が理想 • ウォーターフォールでもアジャイルでも無い。TDDはTDD。 ただし統制にはGit、Github等の各種開発ツールの活用が必須!!(欲を言えばCIも整備したい) 従来工法(理想) 要件定義・設計
実装作業 テスト 納期 キックオフ TDD(理想) 要件定義・設計 実装作業 テスト 余った時間で研究開発や 勉強会、後進育成のチャンス!!
面倒臭さの先にある利便性 • 一貫性 • 抽象と具象の整理整頓 ・もしかしたら正しい仕様を書く必要が無い(かもしれない。) テストコード 抽象 (仕様書) 具象
(実装コード)
みんなTDDを やろう!! 以上です。ご清聴ありがとうございました。