ソフトウェア開発に携わるすべての人に捧げる、アジャイルにソフトウェアを開発する為に読むべき15冊

Test-Driven Development

私は夏休みの宿題のやり方を教えてもらったことがありません。約2ヶ月という限られた時間で、どういう風に消化していくと良いのかを学習したことがなかったのです。
夏の終わりに24時間テレビが放送されますが、あれを見ながら、答えをチラ見し、綺麗なドリル(*1)を1冊消化するのは忘れられない子供の頃の思い出です。
この経験はソフトウェア開発にも似ていて、開発の手法を知らなければ、良い結果を生むのは難しいのです。不幸なことに、夏休みの宿題のように明確に何をやるべきなのか、明確では無いのです。
夏休みの苦い思い出と、ウォーターフォールっぽい大失敗プロジェクトの経験をいくつか得た上で、アジャイルソフトウェア開発を学ぶことによって、ソフトウェアのつくりかたを学びました。
これは、中小のSIerでも、イケてるWEBサービスを提供している会社でも教えてくれたことではありませんでした。そう、夏休みの宿題のやり方を学校で教えてくれないのと同じです。
だから、一緒に学びましょう。ソフトウェア開発に携わるすべての人(プログラマじゃない人も)に向けて、アジャイルソフトウェア開発を学べる書籍を紹介します。

スポンサーリンク

アジャイルサムライ(すべての人むけ)

Jonathan Rasmusson¥ 2,730

ソフトウェア開発に携わるすべての人に読んでもらいたい書籍です。アジャイルの考え方をわかりやすい言葉で全体的に学べます。288ページと専門的な書籍と比べると薄く、挿絵も豊富で、サクサクと読み進められるはずです。
アジャイルにはいくつか開発手法があるのですが、特定の手法に対する解説ではなく、アジャイル的な考えとアプローチを学べるはずです。どういう風に考えて行動して、ソフトウェアをつくるべきなのか、基本をこれで身につけましょう。

アジャイルな見積りと計画づくり(見積もりをする人、計画を立てる人、責任者向け)

Mike Cohn¥ 3,360

プロジェクトに責任を持つ人間がこの書籍を読んでなかったらデスマフラグが立っているも同然といいきれるぐらい、プロジェクトマネージャには必読書です。また、見積もりをするプログラマーにも読んでもらいたい書籍です。
計画はどうあるべきで、どういう物なのかを理解して、プロジェクト成功へ導く計画を常に変更し続けられるように、どうのようにして見積もりをおこなって管理していくべきなのかを具体的手法を元にして学べる数少ない書籍です。
書籍で掲載されている具体的な手法は翻訳をした角谷氏自身が数年にわたって実践している内容であり、私も実践している内容です。この書籍は私のバイブルであり、ソフトウェア開発人生を変えた1冊と言っても過言ではありません。

塹壕より Scrum と XP(ソフトウェアをつくる人向け)


無料で公開されているので、一番手に取りやすいのではないでしょうか。とあるスウェーデンの会社が、40人ほどのチームでScrumとXPというアジャイルの開発手法をを実行し、その後約一年にわたってプロセスを改善していった方法が生々しく書いてあります。アジャイルな現場を感じてください。
プログラマーだけではなく、プログラマーとやりとりするデザイナーなどにも読んでいただきたい書籍です。どういったことを目指して、どういうことをやろうとしているのかを理解しましょう。現場感を理解して、現場で励みましょう。

アジャイルプラクティス(ソフトウェアをつくる人向け)

Venkat Subramaniam¥ 2,520

プラクティスというのは日本語に訳すと「慣習」や「実行」という意味になります。この書籍はアジャイルで日頃からおこなわれるべき慣習を取り上げた書籍です。いくつも紹介されているので、取り入れられるものから取り入れましょう。
例えば、朝会など。なぜ、立った状態で数分でおこなうのか。その中で何をするのか。誰が参加すべきなのか。何時におこなうべきなのか。具体的に書かれています。プラクティスをただやればアジャイルになって効果が出るってものではありません。目的や達成すべきものをきちんと捕捉して理解してプラクティスを実施して、効果を上げていくことが必要です。

アジャイルレトロスペクティブズ(ソフトウェアをつくる人向け)

Esther Derby¥ 2,520

レトロスペクティブというのは振り返りのことです。レトロスペクティブはアジャイルの中で2番目に重要だといわれているプラクティスです。どのタイミングで、どういったメンバーで、どういったことをして、次に生かすべきなのか。
アジャイルが常に軌道修正して目的に向かっていけるのは、レトロスペクティブをしているから。とも考えられます。レトロスペクティブを文化にしましょう。個人もチームも成長するはずです。

アート・オブ・アジャイル デベロップメント(ソフトウェアをつくる人向け)

James Shore¥ 3,780

アジャイルの手法の一つであるXP(エクストリームプログラミング)の全体を解説した書籍です。XP自体が開発者寄りのプラクティスが多いので、主にプログラマ向けの内容が満載です。
内容としてもオライリーらしい感じで書かれています。なので、読むのにそれなりに時間はかかりますが、質の良い内容に仕上がっています。腕の良いプログラマになりたければ、読んでおいた方が良い書籍です。

テスト駆動開発入門(プログラマー向け)

ケント ベック¥ 2,750

アジャイルを学んだ方は、プログラムにテストコードが無いということがどれだけリスクの大きいことか理解できたはずです。この書籍はその自動テストをするためのテストコードを書くことを軸においてソフトウェアコードを書くというテスト駆動開発(TDD)を身につけるための書籍です。
入門とは書いてありますが、テスト駆動開発への入門者向けの書籍なので、プログラミング入門ではありません。そして、基本的にこの書籍は写経(書籍に書かれているコードを実際に打ち込んで実行していくこと)して身につけるための書籍です。原著が英語のため、訳がアレだとよく言われますが、プログラマならソースコードで学んで、身につけてください。

テスト駆動JavaScript(プログラマー向け)

Christian Johansen¥ 3,780

テスト駆動開発入門がテスト駆動開発を身につけるための入門書だとしたら、こちらの書籍はその身につけたスキルを現場に生かすための実践に近いコードを学ぶための書籍です。掲載されるコードに対して必ずテストコードが書かれており、現在のJavaScriptの世界で自動テストを構築するためのノウハウが凝縮されています。
JavaScriptを題材としてプログラミング言語を本来どうやって身につけていくべきかも学べるはずです。本来は本書のように言語の特徴を実際に動かして、なおかつテストコードも書けるような状態で書いていくということをすべきだということを改めて知らされることでしょう。

ペアプログラミング(プログラマー向け)

ローリー ウィリアムズ¥ 3,150

日本で唯一ペアプログラミングについて専門で取り上げられている書籍ではないでしょうか。現在ある在庫が売れてしまうと、絶版になると聞いています。だいぶ古い書籍ですが、プログラマなら1冊持っておいて損はしません。
ペアプログラミングについて、多くのメリットとデメリットを理解できるはずです。また、ペアを組む人の特徴を踏まえ、効果のあるペアプログラミングをするために役立つ情報がつまっています。

Jenkins実践入門(プログラマー、テスター向け)

佐藤 聖規¥ 2,450

ここまでアジャイルを勉強してきたプログラマーならば、テストは自動化しなければソフトウェア開発を加速させて高品質のソフトウェアを生み出すことは難しいことが理解できているはずです。そこで、テストの自動化を助けるJenkinsの導入させるための書籍がこちら。
NTTデータのJenkins導入斡旋をおこなっているチームが執筆しているから、安心してお買い上げください。ここまでJenkinsの導入を詳しく説明した書籍はないだろうし、これさえあれば、導入は大丈夫。

継続的インテグレーション入門(プログラマー、テスター向け)

Jenkinsの様なツールを使って、継続的インテグレーションを全体的に解説した書籍です。高品質なソフトウェアをつくるためにどのようなことが必要なのか。スケジュールや予期せぬバグの発生を抑えるために開発期間中からどういったことをやるべきなのかが理解できるようになるでしょう。
ソフトウェアにバグはつきものですが、リリースしてから発見されるバグを圧倒的に押さえることはできるはずです。

実践アジャイルテスト(プログラマー、テスター向け)

Janet Gregory¥ 5,040

ソフトウェアへのテストが重要なことを理解している人は多くても、その方法を正しく理解している人は少ないのが現実です。その正しい方法を導いてくれるのがこの書籍です。誰が何をすべきなのか、実践的に解説しています。
ユーザー視点からのテストについても着目されているため、ソフトウェアが動くためのテストならず、使われるための視点も養えるはずです。

ソフトウェア・テスト PRESS 総集編(プログラマー、テスター向け)

ソフトウェア・テストPRESS編集部 編¥ 2,594

ソフトウェア開発におけるテストについて書かれた雑誌、ソフトウェアテスト PRESSの総集編です。10冊分がDVDに収録されていてお得です。雑誌のため、簡潔にまとめられています。
ソフトウェアテストについて、簡潔にザックリ素早く理解したい人にオススメ。深く掘り下げるために、いつか専門書も読んでくださいね。

レガシーコード改善ガイド(プログラマー向け)

マイケル・C・フェザーズ¥ 4,410

「テストがないコードはレガシーコードだ」そんなレガシーコードに振る舞いを変えずに大幅な修正を加えるのはソフトウェアをフルスクラッチで作り上げるよりも難しいことがよくあります。テストコードを書こうにもテストできるように設計されていないことでしょう。
そんなもうできちぇって、動いているレガシーコードを改善するための手引き書が本書です。あなたが毎日触るコードがレガシーコードなのであれば、本書を手にとって、1日でも早く、変更を加えやすくて、延命できる高品質なソフトウェアに変えていきましょう。

Growing Object-Oriented Software, Guided by Tests(プログラマー向け)

Steve Pryce, Nat Freeman¥ 4,058

現在もっとも最先端なテスト駆動開発による手法や効果を解説している書籍です。残念ながら日本語での出版はされていないので、原著で読むしかありません。思わず、「そう、そうなんだよ!」と声を上げてしまう内容が満載です。
良いソフトウェアをつくれるプログラマーになるために、これは欠かせない1冊となることでしょう。

まとめ

以上、たくさんの書籍を紹介しましたが、自分のレベルに合わせて少しずつ吸収して実践していきましょう。
プラクティスをただ実行すれば、何もかもうまくいくほどソフトウェア開発は甘くありません。結果を出すために多くの努力と改善をして、成長した者だけが結果を生み出します。そのプロセスをアジャイル(俊敏)におこなっていくのがアジャイルなのです。
問題を見つけて改善してくれるのはアジャイルソフトウェア開発手法ではなく、あなた自身です。
アジャイルなことで悩みがあれば、私が主催しているAgile渋谷にぜひご参加ください。1ヶ月に1度のペースで学び会えるイベントを開催しています。一緒に多くのこと学びましょう。現場での経験を共有して、より良いソフトウェアを開発して、ユーザーに価値を届けましょう。
それが、あなたの仕事であり、あなたのやりかたかったことのはずです。
お役に立てた内容であれば、はてなブックマークやTwitterでコメントをお寄せください。よろしくお願いします。

*1: 夏休みに1度も開いてないから綺麗

タイトルとURLをコピーしました