「アジャイルソフトウェア開発の奥義」を読み始めました。最近では、ソフトウェアエンジニアに馴染みが深くなってきた「アジャイル」という言葉ですが目からウロコです。僕は本を読むとすぐに影響されてしまう性質で、哲学書とか開発手法に関する本とかを読むとすぐにやってみたくなってしまう人です。それでも最近は、色々な視点から考えることもできるようになってきたと思いますが・・・。

まだこの本は全部読みきっていないので、書評はまた後で書きます。今は本書を読んで心に残ったことをメモっておきます。( ..)φメモメモ

とりあえず、テストファーストに関してのメモです。テストファーストという言葉をきくとワクワクしてくるのは僕だけじゃないはず・・・。テスト、最高です!

テストはソフトウェア設計である

XPなんかの開発プロセスで有名な「テストファースト」という言葉。ソースコードを書く前にテストコードを書くというものですが、テストコードは何のために書くのか?本書でテスティングに関して述べられていて、非常に共感がもてました。テストはソフトウェア設計である。

テストファーストの利点に、テストを最初に書くことですべてのソースコードを検証した証明になるというものがあります。確かに共感できるのですが、これだけの利点ではあまりテストファーストを好きになれませんでした。しかし、本書でもっと重要な利点に気づきました。以下抜粋

テストを最初に書くことによって、これまでとは違った視点で物事を見ざるを得なくなるということだ。テストを書こうとすれば、呼び出す側の立場でプログラムを見るようになる。したがって、早い段階からプログラムの機能だけでなくインターフェースに注意を払うようになる。テストを最初に書くことは、ソフトウェアを呼び出しやすい形式に設計することにつながるのだ。

本書

テストファーストを実践することで、プログラムの呼び出しインターフェースを設計する必要が出てくる。また、テスト可能であるためには、周辺のコードから独立でなければならないため独立性を高める必要がある。これらを行うことで、個々のプログラムが独立し、わかりやすいソースコードになることにつながると思うと、テストという行為がとてもワクワクしたものになってきます。

もうひとつ、テストを行う利点にテストコードが生きたドキュメントになるというものがありました。メソッドの呼び出し方法やインスタンスの作り方を実際のソースコードが教えてくれる。しかもそれは常に最新であるということは、ドキュメント地獄の開発よりも何倍も楽しいものだと思います。

テストファーストという考えを持つと、リファクタリングをスムーズに受け入れることができるのかなと思いました。テストケースを書き、テストをパスするようにコーディングをした後ですぐにそのコードをリファクタリングしてきれいにする。常にソースコードをきれいに保つことがアジャイルの極意だと思いました。

まだまだ、最初の方しか読んでないですが、開発者にとって役立つことばかり載っている気がします。本書はとてもすばらしいと思います。

参考

  • はっきり言って最高の本です。一緒に開発を行う人にも是非勧めたいです。