技術書「ちょうぜつソフトウェア設計入門 PHPで理解するオブジェクト指向の活用」まとめと感想。Bobおじさん(Robert C. Martin)本を読む前の準備として最適な一冊。

ソフトウェア設計
項目 評価
オススメ度 5.0 – 2022年発売の個人的ベスト本の1つ
内容がためになるか 5.0 – 表紙を良い意味で裏切る本格的な内容
読みやすさ 5.0 – 文体は柔らかく読み物のように読める
面白さ 5.0 – 挿絵の漫画が意外と本質的で面白い
人気度 発売当初からかなり人気。Amazon ベストセラー1位
対象レベル 中級者にステップアップしたい初級者〜中級者

本書について

タイトル:ちょうぜつソフトウェア設計入門 PHPで理解するオブジェクト指向の活用
発売日:2022年12月
ページ数:328ページ
著者:田中ひさてる氏 Twitter Qiita
ちょうぜつ Advent Calendar 2020
ちょうぜつ設計とは(著者の方が発売後にQiitaに投稿)

たまに、調べ物をしていてQiitaを見た時に漫画が載っていることがあったが、その著者の方だった。

全体の感想

  • 素晴らしい本だった。非常にためになった。今までの本とは違った視点でソフトウェア設計に必要な観点を教えてくれた。
  • 説明はわかりやすく、挿絵も楽しく、読後感がスッキリとしていた。
  • ソフトウェアエンジニアにとって必読であるRobert C. Martinの本を読む前の準備として最適と思う。
  • Robert C. MartinのClean Architectureは読んだことがあったが、抽象的で何となくしかわかっていなかった。この本は、より具体的に繰り返し説明してくれていたため、なるほど!と思うことが多々あった。
  • パッケージ原則について、ここまで丁寧にわかりやすく説明してくれている本は他に無いのでは?と思う。
  • 抽象に依存する重要性をわかりやすく学ぶことができた。
  • この本を読むことは、中級者にステップアップするための近道になると思う。
  • PHPとあるが言語は本質ではないため、Web系だけでなく、組込み系やアプリ系の人にもオススメ。

オススメ読書ルートと想定読者

オブジェクト指向でなぜつくるのか => Head First デザインパターン 第2版 => 本書「ちょうぜつソフトウェア設計入門」 => アジャイルソフトウェア開発の奥義 => Clean Architecture

ある程度、基礎的なオブジェクト指向(カプセル化・継承・ポリモーフィズム、抽象クラス、インターフェース等)について知っていないと本書の言いたいことを上手く理解できないかもしれない。これらが初見であれば、まずはオブジェクト指向でなぜつくるのかでオブジェクト指向の基本を知るのが良いと思う。Head First デザインパターン 第2版は、オブジェクト指向を学ぶ上で非常に楽しく、抽象に依存することの重要性やオブジェクト指向原則などについて本質的な理解が得られる一冊のため、本書の前か後に読むと効果抜群と思う。実際、自分はこの本が発売される前にHead Firstを読んでいたため、このちょうぜつ本も理解しやすかったと思う。

このちょうぜつ本はできるだけ抽象的な説明だけで終わらせないようにしている配慮を感じる。そのため、Bobおじさん(Robert C. Martin)の本を読む前の1冊としては最適と思う。Bobおじさんの本は本質を教えてくれるが、重厚で難しい部分もあるため、本書のような現代的で取っ付きやすい本から始めて、原書で知識を深める順序が良い気がする。アジャイルソフトウェア開発の奥義は700ページ程ある鈍器なので、読み終えるのにはなかなか時間がかかる。Clean Architectureは少し抽象的なので、1回読むだけで理解することは難しいと思う。

感じた想定読者は、

  • プログラミングはある程度できるようになったが、仕様変更で機能が追加されたり、機能が変更される場合に、あちこちを修正しないといけない、テストも色々とやり直すことになって非効率、等を経験し、もっと効率的なプログラミング方法、ソフトウェア設計方法がないのだろうか、と感じてきたソフトウェアエンジニア。
  • しかし、わかりやすい説明なので、最低限1言語でもプログラミングができるようになったら読むのも有りな気がする。次の一歩を進めるのが速くなれると思う。
  • 中級者が再度頭を整理するために読むのも良い気がする。
  • Bobおじさん(Robert C. Martin)の本を読んだが難しいと感じた、またはこれから読もうとしている人。

迷うくらいなら買ったほうが良い、と言えるくらいオススメできます。

本書の概要

  • PHPはあまり関係ない。どの言語でも使える設計の基礎部分を説明してくれている。
  • 大学教授のレビューも受けている (東京工業大学/京都大学 首藤研究室)
  • 章毎に独立しておらず、全体で1本の物語になるように構成されているため通読がおすすめ。
  • 「ソフトウェア設計」のうち、どんなアプリケーション機能を提供するかと、具体的にどんなミドルウェアとアルゴリズムで機能を実現するかを除いた領域、ソフトウェアのアーキテクチャ作りに着目している。
  • 安定して良いプログラムを書き続ける支えとなるアイデア、広く知られたコード構成ノウハウ、といったものを通じて、アジャイル登場以降の現在のソフトウェア設計が共通して持っている、前提知識の感覚を得るのをねらいとしている。
  • 少しずつ明文化されていった達人(ソフトウェア工学の偉人)の感覚の中にしかなかった原理や知見を、最速で理解できる順序に並び替えている。
  • 参考文献を見るとわかるが、Bobおじさん(Robert C. Martin)の本に大きく影響を受けている。

Bobおじさん(Robert C. Martin)の本との関連に関して、著者の方がtwitterで質問に答えてくれた。この回答もあって、「アジャイルソフトウェア開発の奥義」を読む前に、この本を読むことにした。Clean Craftsmanshipはいずれ読みたい本。

各章のまとめと感想

第1章 クリーンアーキテクチャ
第2章 パッケージ原則
第3章 オブジェクト指向
第4章 UML(統一モデリング言語)
第5章 オブジェクト指向原則 SOLID
[第6章 テスト駆動開発]
[第7章 依存性注入]
[第8章 デザインパターン]
[第9章 アジャイル開発]

ウェブ開発の人気オンラインコース

Twitter反応まとめ

#ちょうぜつ本というハッシュタグを著者の方が定期的に確認しているようで、いろんな反応をしていて面白いが、ためになることもかなり言ってくれている。本書を理解する上でも有用と思うので、幾つか抜粋しておく。Twitterはどんどん流れていって勿体無い。しかし、ちょうど勉強している内容なので、自分よりも遥かに知識、経験のある人の意見を読むのは面白い。

良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方で有名なミノ駆動さんの感想。

その他、

オブジェクト指向の定義について。

コメント

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