A Philosophy of Software Design

2年ほど前に「これ良かったよ」「平易な英語だからそこまで読むの辛くないよ」みたいな書評を見たので買ってみた。僕自身は英語が得意ではないので、英語の本の原著を読むという行為はよっぽど興味や必要性がなければやらないのだが、どうもこの本は和訳書が出ないらしい(※1)ため原著に手を出した。

『Zombie Scrum Survival Guide』の原著を丸々和訳した直後に和訳書が出版されて「待てば良かった……」となったのがトラウマになっとるねこれは。

Zombie Scrum Survival Guide (The Professional Scrum Series)

ゾンビスクラムサバイバルガイド: 健全なスクラムへの道

平易な英語とは聞いていたが、それでも英語苦手勢には普通にキツかった。「たしかに一文一文は平易な英語だけどぉ……!それは一文だけでぇ……!論旨を捉えられるって言えるのは英語を塊として捉えられる経験値がある人の感想でぇ……!」と嘆いた回数は数知れない。OCRツールを片隅に置きながらでしか英語書籍を読めない僕のような英語よわよわ勢は、あんまり素直に簡単な英語という言葉を信じすぎない方がいい。少しずつ読み進めるということをしていたためもあるが、結果として8カ月くらいかかって読破した。

僕のようになりたくないが、ざっくりと情報を得たいなら、NTT Communicationsの岩瀬さん(iwashi86さん。Fukabori.fmの人)がまとめたスライドを見るのが良い。出典元を一通り読んだからこそ「必要なエッセンスが過不足なく詰め込まれている」と自信を持って言える。

“A Philosophy of Software Design” を30分でざっと理解する / Understand roughly "Philosophy of Software Design" in 30 minutes

また、このスライド・勉強会を踏まえたうえでのt_wadaさんとの対談も公開されているし、さらにこの対談を踏まえての疑問点や懐疑点についても日本語で書かれたブログ記事がいくつか見つかる。

ソフトウェア設計についてtwada技術顧問と話してみた 〜 A Philosophy of Software Design をベースに 〜 - NTT Communications Engineers' Blog

こういった記事を読んで、そのうえで「コレ実際はどんな論旨なんだ?」という疑問を抱いたなら、ようやく原著に当たるのが良いと思う。また理由は後述するが、Robert C. Martinの『Clean Code』や『Clean Architecture』を腰を据えて読む人は副読本としてものすごくお勧めする。

Clean Code アジャイルソフトウェア達人の技 (アスキードワンゴ)

僕は上記記事を読み”著者は小クラス主義に異議を唱えている”というt_wadaさんの意見、およびそれに対する各種意見を見て、実際どうなん?という疑問を解消するためにポチった。

https://x.com/arichika/status/1513713184108335104

https://x.com/masatsugumatsus/status/1528841323897552896

というわけで、ここではその疑問、および疑問の解消についてを中心に書いていく。複雑さ(Complexity)やDeep/Shallow Module、明確さ(Obviously)などの概念は本書において特に大事なものだが、その辺は岩瀬さんのスライドの縮小再生産にしかならないのであまり触れない方向性でいくつもり。


「良いソフトウェア設計の良いって何だよ」という本

まず初めに、僕の感じた本の論旨はコレである。