Slide 1

Slide 1 text

テスト駆動開発のススメ
 おすすめの技術書 LT会 - vol.2 #itbookslt
 2021/08/19


Slide 2

Slide 2 text

自己紹介
 君の名は?


Slide 3

Slide 3 text

自己紹介
 Yumihiki / Tatsuya Nibuno
 Twitter: Yumihiki(@nibupro)
 エセ関西人
 パーソルテクノロジースタッフ株式会社
 実務未経験から転職/エンジニア歴約1年半


Slide 4

Slide 4 text

目次
 何話すん?


Slide 5

Slide 5 text

目次
 ● 結論・前置き
 ● テスト駆動開発とは
 ● テスト駆動開発(書籍)の良いところ
 ● 勉強するきっかけ?(時間の都合上発表しない
 つもりですが、公開するスライドには掲載します)


Slide 6

Slide 6 text

結論・前置き
 はじめに


Slide 7

Slide 7 text

結論・前置き
 ● テスト駆動開発未経験の人にオススメ
 ○ テストコードを書くことのメリットがよくわかる
 ○ ビギナーの開発系エンジニアさんにもおすすめ
 ○ 「テスト駆動開発って何か難しそう・・・」と
 身構えていませんか?
 ● この本を読むと、テスト駆動開発がしたくなる!
 ○ 所謂テスト駆動開発のことだけでなく
 デザインパターンや良い振る舞いなど色々学べます!


Slide 8

Slide 8 text

テスト駆動開発とは?
 そもそも


Slide 9

Slide 9 text

テスト駆動開発とは?
 ● 「プロダクトのコードより先にテストコードを書き、実装していく」開発手法と して一般的には認知されている(と思っています)
 ● テスト駆動開発(書籍)では次のように解説されている
 > TDDはテスト技法ではない(Cunningham の考案)。TDDは分析技法であり、設計技法 であり、実際には開発の全てのアクティビティを構造化する技法なのだ。
 > 本書『テスト駆動開発』で書かれているような本来のTDDは、プログラマが自分自身で 不安を制御するための補助輪のような役割を果たす小さなプラクティスでした。
 テスト駆動開発(2017年 第1版)Kent Beck著 和田卓人訳 オーム社 P278, P300


Slide 10

Slide 10 text

テスト駆動開発(書籍)の
 良いところ
 本題!


Slide 11

Slide 11 text

テスト駆動開発(書籍)の良いところ1
 
 
● コツコツとコードを良くする過程を学ぶことができる
 ● 汚いコードから洗練されたコードへ
 ○ 最初から動作するきれいなコードはなかなか書けない
 ○ だから、最初は「動くコード」を書いて、「TDD」を実践し
 動作するきれいなコードへ書き換えていく
 ○ 最初から動作するきれいなコードを書こうとして変なところで詰まる 経験がたくさんあったので目から鱗でした・・・!


Slide 12

Slide 12 text

● 章が短いので、少しずつ進めていくのも容易
 ○ 毎日1章ずつ進めていくことができる程度の規模感
 ● ソースを少しずつ書いていくので間違えにくい
 ○ 章ごとに終了時点のコードを確認できるから間違いが少ない
 ○ コードをたくさん書いてデプロイして、エラーが出る
 ○ 学習のトラウマの1つ(と勝手に思っています)
 ○ そういうのが起こりにくい気がしています
 ○ 訳者の和田卓人さんによる訳注や解説もとても素敵!
 テスト駆動開発(書籍)の良いところ2
 
 


Slide 13

Slide 13 text

テスト駆動開発(書籍)の良いところ3
 
 
 ● 優れたエンジニアの振る舞い、思考を学べる
 ○ テスト駆動開発を(仕事で)実践できなくても学びになる
 ○ TODOリストを書いて、消していく
 ○ 小さな改修でコツコツと成功しているかどうか確認する振る舞い
 ○ デザインパターンの解説も出てくる
 ○ メソッドのインライン化といったリファクタリング手法(?)
 ○ ある種ペアプロをやっているような感覚
 (例題の進め方はペアプロをイメージして書いた、との記述あり)
 ○ 章が終わる際にはふりかえり


Slide 14

Slide 14 text

テスト駆動開発(書籍)の良いところ4
 ● そして、テストコードがあると安心なんだと実感できた
 ○ コードを直して、開発環境にデプロイして、
 画面操作してバッチ実行... ではなくIDE上でユニットテストを実行すること で、確認できる
 ○ 全てがテストコードで解決できるわけではないとのことですが、
 それでも段違いな気がする・・・!
 ○ リファクタリングして改善するには、必須の技法だと感じた
 ● テスト駆動開発に対する認識を変えてくれた良著!


Slide 15

Slide 15 text

ご静聴ありがとう
 ございました


Slide 16

Slide 16 text

勉強するきっかけ?
 脱線ちゃう?
 ※本章は時間の都合上、
 発表資料から省きました。


Slide 17

Slide 17 text

テスト駆動開発とは? 勉強するきっかけ1
 ● 有名な書籍やアジャイル系の本にはテスト駆動開発のことがよく挙げられている 
 > 「どうやったらそんなにわかりやすくて見通しのよい、綺麗なコードが書けるんだい?」 
 > 「簡単だよ」彼は答えた。「テストを先に書いているんだ」 
 著者:Jonathan Rasmusson 訳者:近藤修平・角掛拓未 (オーム社、2011年) 
 「アジャイルサムライー達人開発者への道 」P261
 > 私にとって、レガシーコードとは、単にテストのないコードです。この定義については疑問もあ りました。コードの良し悪しとテストに何の関係があるのでしょう。私にとってその答えは簡単で す。そしてこれが、本書を通じて詳しく述べていきたい革新です。 
 著者:マイケル・C・フェザーズ 訳者:平澤章・越智典子・稲葉信之・田村友彦・小堀真義(翔泳社 ・2009年)「レガシーコード改善ガイド」 vi


Slide 18

Slide 18 text

テスト駆動開発とは? 勉強するきっかけ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 開催だそうです!


Slide 19

Slide 19 text

改めて
 ご視聴ありがとう
 ございました