PHP中級者がソフトウェア開発の理解を深めるためのオススメ書籍 約30冊(2020年版)

去年末(2019/12)にオススメ書籍をまとめてみたことがあったので、それを少し更新して公開します。

上にある書籍がよりオススメというわけではないです。

対象者は「PHP中級者」です。中級者が何かは難しいですが、初心者、初級者では決してないとは言えます。

改めて一覧にしてみると、かなり偏っているかも知れません(笑

こういうのはコンテキストというのがあるため、それが合わないと「お前は何を薦めているのだ?」となるでしょうね。

キーワードは、「モデリング」「オブジェクト指向プログラミング」「TDD」「デザインパターン」「DDD」「チーム開発」「アジャイルソフトウェア開発」「スクラム」でしょうか。

PHP中級者のイメージ

たぶん、PHP中級者であれば、PHPに関することはPHPマニュアルなどを調べて解決できるでしょう。PHPのオープンソースプロジェクトに貢献しており、自分でプロジェクトを持っているかも知れません。

プログラミング、オブジェクト指向プログラミングについてもある程度、知識と経験があるでしょう。PHPしか全く読めないというようなことはなく、Java、C#、JavaScriptなど知らない言語でもなんとなく読むことくらいはできると思います。

デザインパターン、DDD、クリーンアーキテクチャーなどの用語を知っており、少しは知識があることでしょう。

プログラミング

『リーダブルコード』 より良いコードを書くためのシンプルで実践的なテクニック

割と誰にでもおすすめしやすいコードの書き方に関する良書です。


『CODE COMPLETE 第2版 上』 完全なプログラミングを目指して


『CODE COMPLETE 第2版 下』 完全なプログラミングを目指して


『Clean Coder』 プロフェッショナルプログラマへの道


『レガシーコード改善ガイド』 システム保守の現場でありがちな、構造が複雑で理解できないようなコードに対する分析手法・対処方法について解説

オブジェクト指向プログラミング

『アジャイルソフトウェア開発の奥義 第2版』 オブジェクト指向開発の神髄と匠の技

SOLID原則について詳細に解説されています。


『テスト駆動開発』 テスト駆動開発を原点から学ぶ

TDDの原典です。PHPに翻訳しつつ写経するといいでしょう。Javaのままでも構いませんが。


『リファクタリング 第2版』 既存のコードを安全に改善する

第2版はJavaScriptになり、カラーになり、圧倒的に読みやすくなりました。


『Clean Architecture』 達人に学ぶソフトウェアの構造と設計


『Clean Code』 アジャイルソフトウェア達人の技


『現場で役立つシステム設計の原則』 変更を楽で安全にするオブジェクト指向の実践技法


『ユースケース駆動開発実践ガイド』 実装部分も時流に即したオブジェクト指向分析/設計の指南書


『エンタープライズ アプリケーションアーキテクチャパターン』 エンタープライズアーキテクチャのレイヤ化とは?

デザインパターン

『オブジェクト指向における再利用のためのデザインパターン』

GoFのデザパタ本、原典です。


『増補改訂版Java言語で学ぶデザインパターン入門』 GoFの『デザインパターン』で紹介された23個のパターンを、オブジェクト指向の初心者にもわかるようにやさしく解説


『PHPによるデザインパターン入門』 デザインパターンの基本であるGoF全23パターンをわかりやすく解説

今回、唯一出てきたPHPに関する書籍です。絶版ですが。

DDD

『エリック・エヴァンスのドメイン駆動設計』

DDDの原典です。分厚く難解なため、読むのは困難です。DDDにちょっと興味があるという程度の人は以下に紹介する『ドメイン駆動設計入門』『ドメイン駆動設計 モデリング/実装ガイド』などから読むほうがいいでしょう。

『ドメイン駆動設計入門』

『ドメイン駆動設計 モデリング/実装ガイド』

https://booth.pm/ja/items/1835632


『実践ドメイン駆動設計』

IDDD本と呼ばれる書籍です。

モデリング

『業務システムのための上流工程入門』


『モデルベース要件定義テクニック』

『RDRA2.0 ハンドブック』

未読ですが、上記の『モデルベース要件定義テクニック』で使われているRDRA1.0のバージョンアップのようですので、こちらを読んだほうがよいのかも知れません。

アジャイル

『アジャイルサムライ』 達人開発者への道


『アジャイルイントロダクション』 ソフトウェア工学分野の“大御所”バートランド・メイヤー博士の手によるアジャイル入門書にして具体的な開発手法にまで言及した一冊

あの『オブジェクト指向入門』の著者であるバートランド・メイヤーがアジャイル開発について解説している本です。


『レガシーコードからの脱却』 ソフトウェアの寿命を延ばし価値を高める9つのプラクティス

どういうコードを書いたらレガシーコードにならないかというのが主な内容です。『レガシーコード改善ガイド』とは異なり、既存のレガシーコードをどうするか?が主題の本ではありません(1章だけレガシーコードのリファクタリングについて記載はありますが)。


『エクストリームプログラミング』 アジャイル開発とは何だったのか、その原点を再考する新訳

ケント・ベックによるXPの原典です。


『アジャイルな見積りと計画づくり』 価値あるソフトウェアを育てる概念と技法

アジャイルでの計画・見積もり方法について解説した書籍です。


『アジャイルレトロスペクティブズ』 強いチームを育てる「ふりかえり」の手引き

アジャイルふりかえりに関する、たぶん日本語で唯一の商業出版された書籍です。


『モブプログラミング・ベストプラクティス』 ソフトウェアの品質と生産性をチームで高める

モブプロに関する、たぶん日本語で唯一の商業出版された書籍です。『Code with the Wisdom of the Crowd』の翻訳です。


『カイゼン・ジャーニー』 たった1人からはじめて、「越境」するチームをつくるまで

この本に興味があれば、最近出た姉妹書っぽい『チーム・ジャーニー』もオススメします。

『チーム・ジャーニー』 逆境を越える、変化に強いチームをつくりあげるまで


『Team Geek』 Googleのギークたちはいかにしてチームを作るのか

スクラム

『スクラムガイド』 スクラム公式ガイド

スクラムのルールブック。これを知らずにスクラムをやってる人はルールを知らずにプレイしていることになります。

https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-Japanese.pdf


『アジャイル開発とスクラム』 顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント

平鍋さんと野中先生によるスクラムの概要の解説書。技術者向けというわけではないです。


『SCRUM BOOT CAMP THE BOOK』 はじめて「スクラム」をやることになったら読む本


『スクラム現場ガイド』 スクラムを始めてみたけどうまくいかない時に読む本

Tags: php, book, agile, scrum, tdd, ddd, programming, modeling, team

『チームビルディング超実践ガイド』をレビューしました

以前から個人的にチーム開発に興味があったことから、技術書典8で販売が予定されていました 『チームビルディング超実践ガイド』 のレビューに参加しました。

どのような書籍か?

チームビルディングに関する考え方と、著者が実践した実際のビルディング手法27個の詳細を解説した書籍です。

アジャイルソフトウェア開発の考えに則っており、アジャイルの解説も関連する部分についてされています。

ビルディング手法については、『チームビルディング超実践ガイド』の「目次」に記載されていますが、知らない手法が必ずあると思います。

ビルディング手法についての解説が以下の形式で記載されており、全体の 2/3 はそれらの解説です。

  1. 概要
  2. 目的と効果
  3. 所要時間
  4. 事前準備
  5. 進め方
  6. 進め方のポイント

全体の構成は以下の私が書いたマインドマップが参考になるかと思います。

チーム開発について

チーム開発というと『チーム開発実践入門』の影響か、Git、GitHub、チケット管理システム、Slack、CI/CDなど技術的なスキルの話が多いように思います。

もちろん、そのようなスキルはチーム開発に必須のもので、また、大変役に立ちます。

しかし、そのようなハードスキルだけでなく本書のようなチームビルティングなどソフトスキルというものも重要ではないかと強く思います。

SlackもGitHubも導入し、PR開発に変更しただけでは、本当の「チーム」にはなりません。チームというものは自然にはできないのです。あるいは、本書の説明で言えば、グラデーションがそんなに濃くはなりません。

もちろん本書を読んだだけで何か変わるわけではないですが、チームビルティングに悩んでいる人には、様々な手法や考え方は必ず参考になるでしょう。

大切なことは「よいチームとは、どのようなチームなのか」をチームで考えることです。本書はそのきっかけとして手頃な価格、分量の書籍です。PDFだけでなく紙でもあります。

本書での最も実践的な教え

個人的に以下の教えが最も実践的ではないかと思いました。

  • 最初にふりかえりの時間を定期的に毎週、強制的にとっておけ
  • ふりかえりの時間を使ってチームビルディングもせよ

まとめ

  1. 『チームビルディング超実践ガイド』 はチーム開発に関心のある開発者にお薦めできる書籍です。
  2. 手許にあると、チームビルディングのきっかけとして大変便利でしょう。

関連

Tags: team, book