推奨書籍 #
ここでは特定の言語、アーキテクチャに依存しないものを推挙しています。
リーダブルコード #
https://www.amazon.co.jp/dp/4873115655/
ここで紹介するまでも無いと思いますが、チーム開発における必読の本で、 この本を読まずにプロダクト開発に参画するのは他人の家に土足で上がり込むようなものです。
読みやすいコードとはなにかを論理的に説明してくれます。 アジャイル開発ではプロダクトに関するドキュメント(設計書だけでなくコメントも)を書きません。 読みやすいコードがそのままドキュメントとなります。 読みやすいコードを書くために必ず読んでからプロダクト開発に参画しましょう。
SCRUM MASTER THE BOOK #
https://www.amazon.co.jp/dp/4798166855/
スクラムマスターとは、そして自ら動く自己組織化したチームとはどういったもので、 どのようにチームを導けばいいのかを解説している一冊。
実践テスト駆動開発 #
https://www.amazon.co.jp/dp/4798124583
テストダブルはテストコードを書き慣れていない人とってはかなり難しい概念です。 そもそもテストコードを書くのは非常に難しく、実装コード以上に難しいと言っても過言じゃありません。 サンプルコードで使われているテストダブルライブラリがJMockなのがツライがいい本。
レガシーコードからの脱却 #
https://www.amazon.co.jp/dp/4873118867/
そもそもレガシーコードを作るなという本。 この本におけるレガシーコードとは「修正や拡張、作業が難しいコード」のことです。 小さな単位でテストコードを書き、振る舞いを明示して、そして実装する。当たり前の内容ですが、その基本について再確認ができると思います。 この本では実践的な内容は含まれてません。
レガシーコード改善ガイド #
https://www.amazon.co.jp/dp/4798116831/
もし、今目の前にレガシーコードがあり、それをなんとかしたいという内容の書籍が読みたい場合はレガシーコード改善ガイドを読みましょう。 レガシーなコードとはテストのないコードだとはっきりと断罪している本です。 テストはソフトウェア開発の速度を維持するためのすべての源泉です。兎にも角にもテストを書きましょう。
Clean Architecture #
https://www.amazon.co.jp/dp/4048930656/
アンクルボブ(Robert C. Martin)によるClean本の一冊。
SOLID原則について学びたいならこの本を手に取るべきです。 変更に強いソフトウェアを設計するためのアプローチを解説しており、変更を前提とするアジャイル開発においては、 とても有用な知識が得られる一冊になっています。ぜひデベロッパー全員で読んでみてください。
Clean Code #
https://www.amazon.co.jp/dp/4048930591/
アンクルボブ(Robert C. Martin)によるClean本の一冊。
リーダブルコードよりも深い内容に触れており、命名や規則を考えたい方におすすめです。 コメントや、コードの構造、開発環境のアンチパターンを列挙しており、読みやすいコードからよいコードへと昇華するのに読むと良いでしょう。
Clean Agile #
https://www.amazon.co.jp/dp/4048930745/
アンクルボブ(Robert C. Martin)によるClean本の一冊で、最新作です。 アジャイル開発における心構えが得られる一冊です。 おわりにの章でも書いているのですが、アジャイル開発者に求められるのは技術を追い求めるクラフトマンシップだというアツい一冊。
正しいものを正しく作る #
https://www.amazon.co.jp/dp/4802511191/
アジャイルで開発する意味とはなんなのかをわかりやすく解説している和書(この分野ではかなり珍しい!)です。 仮説検証のプロセスを経て不確実性といかに立ち向かうか、この本を読むことでその意義について知見を得られるでしょう。 開発者だけでなくデザイナーやプロダクトマネージャーを含めたチームで読みたい一冊です。
エクストリームプログラミング #
https://www.amazon.co.jp/dp/4274217620/
XPの始祖、Kent Beckによるエクストリームプログラミングの解説書です。 エクストリームプログラミングによる開発のプロセス、組織づくりについてこの本以上に詳しい本は無いでしょう。 アジャイル開発はそれに携わるすべての人が開発プロセスについて精通している必要があります。 プロジェクトに参画する前に読んでおきましょう。
テスト駆動開発 #
https://www.amazon.co.jp/dp/4274217884/
こちらもKent Beckによるテスト駆動開発の解説本です。 テスト駆動開発をやってみたいけど、どんなテストを書いていけばいいの?という人はこの本を手に取りましょう。 テスト駆動開発におけるテストとは、ソフトウェアの振る舞い(Behavior)だということがよくわかる一冊です。
リファクタリング - 既存のコードを安全に改善する #
https://www.amazon.co.jp/dp/4274224546
Martin Fowlerによるリファクタリング本。
コードが放つ"匂い"に敏感になり、それを改善できるようになる本です。 コードを見ていると時折感じる「ここなんかあるな・・・」という悪い直感は往々にして大体当たります。 どういったコードが悪いコードで、それをどう修正していくかの解決策を学ぶことができます。
2019年に第2版が出ており、サンプルコードがJavaScriptになりました。 Javaで読みたい方は2014年に出版された新装版を読みましょう.
Webを支える技術 HTTP、URI、HTML、そしてREST #
https://www.amazon.co.jp/dp/4774142042/
HTTPは現代のWebアプリケーションの基本中の基本ともいえるプロトコルです。 HTTPとは、URIとは、そしてRESTとはなんなのかを解説してくれる本です。 もしこれからWebアプリケーションの開発に携わるなら、ぜひ基本に立ち返って読んでいただきたいです。
Web API: The Good Parts #
https://www.amazon.co.jp/dp/4873116864/
現代のWebアプリケーション開発に置いてWebAPI設計スキルはほぼ必須で、 知っていないとお話にならないレベルになっています。
よいAPIとはどういうものなのか、エンドポイントはどうするのか、レスポンスデータはどうすればいいのか。 そういったAPI設計に関する知識を体系立てて説明していくれる良書です。
アジャイルソフトウェア開発の奥義 #
https://www.amazon.co.jp/dp/4797347783/
CleanシリーズでおなじみのアンクルボブことRobert C. Martinによる本です。 タイトルにアジャイルとありますがアジャイルプロセスの本ではなく、ソフトウェア設計の本で、 SOLID原則からデザインパターンまで多くの技術領域を網羅している良書です。
Java言語で学ぶデザインパターン入門 #
https://www.amazon.co.jp/dp/B00I8ATHGW/
デザインパターンとはオブジェクト指向プログラミングにおいて再利用できる汎用的な設計パターンのことです。 特定の開発言語やフレームワークに関する知識というのは、流行り廃りがあり陳腐化しますが、 デザインパターンやアルゴリズムに関する知識は特定の言語やフレームワークに依存しないのでコスパが良いです。
マイクロサービスアーキテクチャ #
https://www.amazon.co.jp/dp/4873117607
どんなソフトウェアであれ、次第に複雑さが増し肥大化していきます。 ソフトウェアをシンプルに保ち、テストとデプロイを早く、そして保守しやすくする一つのアプローチがマイクロサービスアーキテクチャです。 マイクロサービスの長所だけでなく、短所も交えて紹介しており、モノリシックなアーキテクチャも手段の一つとして、 どのようなアーキテクチャを組むべきかの検討の材料になると思います。 あわせて、同じくオライリーから出版されている「モノリスからマイクロサービスへ」や「プロダクションレディマイクロサービス」もオススメです。
ピープルウェア #
https://www.amazon.co.jp/dp/4822285243
数多くのプロダクトマネジメントの書籍を書いているTom DeMarcoによ書籍。 ソフトウェアを作るのは結局の所「人」なのだ。「人」を尊重し、「人」が「人」らしく働けるオフィスを作れ。 プロジェクト開発は「人」が楽しく仕事ができなければならないという本です。 富士通の開発あるあるなんですが、オフィスに人を詰め込みマンパワーで回すタイプの現場の人ほど読んでほしい。 人によっては涙なくして読めません。