序文
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この本は、私が「ハッキング」から「ソフトウェアエンジニアリング」へと歩んだ旅を世界と共有しようとする試みだ。主にテストについて書かれているが、すぐにわかるように、それだけではない。
読み取りをありがとう。
購入してくださった方には心から感謝している。 無料のオンライン版を読み取り中の方にも、 時間を割いて読む価値があると判断してくださったことに感謝している。 もしかすると、読み終えた頃には、 自分や友人のために実物を購入する価値があると思えるかもしれない。
何かコメントや質問、提案があれば、 ぜひ聞かせてほしい。 obeythetestinggoat@gmail.com までディレクトリで連絡するか、 Mastodon の@hjwp で連絡できる。 Webサイトやブログもチェックしてみてほしい。
この本の読み取りが、俺が書くのと同じくらい楽しいものになるといいな。
テスト駆動開発の本を書いた理由
「お前は誰だ?なぜこの本を書いた?なぜ俺がこの本を読み取るべきなんだ?」と君は問うだろう。
キャリアの早い段階で テスト駆動開発(TDD)の熱狂的な信者たちと出会えたのは幸運だった。 それは私のプログラミングに多大な影響を与え、 皆と共有したいという思いに駆られた。 新参者の熱意があったと言えるだろう。 学びの経験がまだ記憶に新しい頃だったから、 それが2014年の初版執筆につながった。
Pythonを初めて学んだ時 (マーク・ピルグリムの素晴らしい『Dive Into Python』から) TDDの概念に出会い 「そうだ。確かに理にかなっている」と思った。 君もTDDを初めて聞いた時 類似の反応だったんじゃないか? 本当に合理的なアプローチに思えたし 身につけるべき良い習慣だと思った——まるで歯間ブラシを定期的に使うように。
ところが初めての大きなプロジェクトが始まると、 どうなるかは想像がつくだろう——クライアントがいて、 締め切りが迫り、やるべきことが山積みで、 TDDへの善意など窓の外へ飛んでいった。
そして、実際、それで良かった。私は大丈夫だった。
最初はね。
最初はTDDなんて必要ないと思ってた。Webサイトは小さいし、 手動で確認すれば動作テストは簡単だと思ってたから。 このリンクをクリックして、あそこのドロップダウンを選んで、 こうなるはずだ。 簡単だ。 「テストを書く」なんてこと、すごく時間がかかりそうだった。それに、たった三週間の社会人としてのコーディング経験しかないのに、自分は結構いいプログラマと思い込んでいた。自分で何とかできる。簡単だ。
ところが、恐るべき女神「複雑性」が現れた。 彼女はすぐに、俺の経験の限界を突きつけた。
プロジェクトは膨れ上がった。システムの一部が他の部分との依存関係を持ち始めた。
DRY(Don't Repeat Yourself)のような良い原則に従おうと努力したが、それは危険な領域へと導くだけだった。
すぐに多重継承を弄り始めた。
8階層にも及ぶクラス階層。eval in文。
コードを変更するのが怖くなった。 何が何に依存しているのか、 ここを変更したら何が起きるのか、もはや確信が持てなかった…ああ、しまった、あそこの部分がそこから継承してるかも…いや、 継承してない。オーバーライドされてる。 でも、あのクラス変数に依存してる。 そうだ、オーバーライドをオーバーライドすれば大丈夫だろう。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access