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
テスト駆動開発のススメ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yumihiki
August 19, 2021
Programming
21k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト駆動開発のススメ
https://rakus.connpass.com/event/218578/
Yumihiki
August 19, 2021
More Decks by Yumihiki
See All by Yumihiki
pathlibのススメ
nibuno
0
77
ノリと勢いで勉強会を共同主催しはじめた話
nibuno
1
480
LTってなんなん?
nibuno
0
170
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
nibuno
0
560
勇気出してアウトプットしたらコメントをもらえて自分の理解が深まった良い話🤩
nibuno
0
210
目標を決めるにあたって 新年の抱負 超LT会- vol.2
nibuno
0
400
パーフェクトPHPのススメ
nibuno
1
1.2k
Other Decks in Programming
See All in Programming
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
0
100
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
130
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
1
120
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
440
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
220
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
350
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
230
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
140
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
290
Foundation Models frameworkで画像分析
ryodeveloper
1
510
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
650
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
210
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Facilitating Awesome Meetings
lara
57
7.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
440
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
Agile that works and the tools we love
rasmusluckow
331
22k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
980
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
Become a Pro
speakerdeck
PRO
31
6.1k
Fireside Chat
paigeccino
42
4k
Transcript
テスト駆動開発のススメ おすすめの技術書 LT会 - vol.2 #itbookslt 2021/08/19
自己紹介 君の名は?
自己紹介 Yumihiki / Tatsuya Nibuno Twitter: Yumihiki(@nibupro) エセ関西人 パーソルテクノロジースタッフ株式会社 実務未経験から転職/エンジニア歴約1年半
目次 何話すん?
目次 • 結論・前置き • テスト駆動開発とは • テスト駆動開発(書籍)の良いところ • 勉強するきっかけ?(時間の都合上発表しない つもりですが、公開するスライドには掲載します)
結論・前置き はじめに
結論・前置き • テスト駆動開発未経験の人にオススメ ◦ テストコードを書くことのメリットがよくわかる ◦ ビギナーの開発系エンジニアさんにもおすすめ ◦ 「テスト駆動開発って何か難しそう・・・」と 身構えていませんか?
• この本を読むと、テスト駆動開発がしたくなる! ◦ 所謂テスト駆動開発のことだけでなく デザインパターンや良い振る舞いなど色々学べます!
テスト駆動開発とは? そもそも
テスト駆動開発とは? • 「プロダクトのコードより先にテストコードを書き、実装していく」開発手法と して一般的には認知されている(と思っています) • テスト駆動開発(書籍)では次のように解説されている > TDDはテスト技法ではない(Cunningham の考案)。TDDは分析技法であり、設計技法 であり、実際には開発の全てのアクティビティを構造化する技法なのだ。
> 本書『テスト駆動開発』で書かれているような本来のTDDは、プログラマが自分自身で 不安を制御するための補助輪のような役割を果たす小さなプラクティスでした。 テスト駆動開発(2017年 第1版)Kent Beck著 和田卓人訳 オーム社 P278, P300
テスト駆動開発(書籍)の 良いところ 本題!
テスト駆動開発(書籍)の良いところ1 • コツコツとコードを良くする過程を学ぶことができる • 汚いコードから洗練されたコードへ ◦ 最初から動作するきれいなコードはなかなか書けない ◦ だから、最初は「動くコード」を書いて、「TDD」を実践し
動作するきれいなコードへ書き換えていく ◦ 最初から動作するきれいなコードを書こうとして変なところで詰まる 経験がたくさんあったので目から鱗でした・・・!
• 章が短いので、少しずつ進めていくのも容易 ◦ 毎日1章ずつ進めていくことができる程度の規模感 • ソースを少しずつ書いていくので間違えにくい ◦ 章ごとに終了時点のコードを確認できるから間違いが少ない ◦ コードをたくさん書いてデプロイして、エラーが出る
◦ 学習のトラウマの1つ(と勝手に思っています) ◦ そういうのが起こりにくい気がしています ◦ 訳者の和田卓人さんによる訳注や解説もとても素敵! テスト駆動開発(書籍)の良いところ2
テスト駆動開発(書籍)の良いところ3 • 優れたエンジニアの振る舞い、思考を学べる ◦ テスト駆動開発を(仕事で)実践できなくても学びになる ◦ TODOリストを書いて、消していく ◦
小さな改修でコツコツと成功しているかどうか確認する振る舞い ◦ デザインパターンの解説も出てくる ◦ メソッドのインライン化といったリファクタリング手法(?) ◦ ある種ペアプロをやっているような感覚 (例題の進め方はペアプロをイメージして書いた、との記述あり) ◦ 章が終わる際にはふりかえり
テスト駆動開発(書籍)の良いところ4 • そして、テストコードがあると安心なんだと実感できた ◦ コードを直して、開発環境にデプロイして、 画面操作してバッチ実行... ではなくIDE上でユニットテストを実行すること で、確認できる ◦ 全てがテストコードで解決できるわけではないとのことですが、 それでも段違いな気がする・・・!
◦ リファクタリングして改善するには、必須の技法だと感じた • テスト駆動開発に対する認識を変えてくれた良著!
ご静聴ありがとう ございました
勉強するきっかけ? 脱線ちゃう? ※本章は時間の都合上、 発表資料から省きました。
テスト駆動開発とは? 勉強するきっかけ1 • 有名な書籍やアジャイル系の本にはテスト駆動開発のことがよく挙げられている > 「どうやったらそんなにわかりやすくて見通しのよい、綺麗なコードが書けるんだい?」 > 「簡単だよ」彼は答えた。「テストを先に書いているんだ」
著者:Jonathan Rasmusson 訳者:近藤修平・角掛拓未 (オーム社、2011年) 「アジャイルサムライー達人開発者への道 」P261 > 私にとって、レガシーコードとは、単にテストのないコードです。この定義については疑問もあ りました。コードの良し悪しとテストに何の関係があるのでしょう。私にとってその答えは簡単で す。そしてこれが、本書を通じて詳しく述べていきたい革新です。 著者:マイケル・C・フェザーズ 訳者:平澤章・越智典子・稲葉信之・田村友彦・小堀真義(翔泳社 ・2009年)「レガシーコード改善ガイド」 vi
テスト駆動開発とは? 勉強するきっかけ2 • 日々の労働の疲れを癒すために2021年6月25日に開催された PHPTechCafeへ参加 • タイトル:PHPerのための「PHPUnit について語り合う」 • https://rakus.connpass.com/event/213508/
• 題材はPHPUnitだけど、テスト駆動の考え方など何か勉強になるかなと • TDD Boot Camp 2020 Online#1 基調講演/ライブコーディングの紹介 • https://www.youtube.com/watch?v=Q-FJ3XmFlT8 • この動画をきっかけとして、テスト駆動開発を学ぶようになりました (eclipseでのユニットテストの実行方法はこの動画を参考にしました) • 来週2021年8月23日に PHP8.1 の新機能について語り合う PHP TechCafe 開催だそうです!
改めて ご視聴ありがとう ございました