📕

技術書典19で買った『わかる!ソフトウェア設計トレーニング』が良かった

に公開

これはなに

先日、技術書典19に参加してきました。
技術書典では色々と書籍を買ったんですが、その中でも特に良かったなと感じた『わかる!ソフトウェア設計トレーニング』についてご紹介します。

ちなみに購入リンクはこちら。
https://techbookfest.org/product/28eUFHQYcuN7VX4UGsPzsi
紙媒体[1]のやつは11/30までしか購入できないらしいので、買いたい人は急げ!
※追記:11/30以降も電子であれば買えます

著者の思考の「多さ」が伝わる良書

本書の大きなウリはトレーニング形式という体裁にあると思うんだけど、わたしが読んでいて良かったのは、著者が設計について本当にずっと考えているんだろうなというのが伝わってきたことにある。知見のあるひとに対して「思考が深い」みたいに表現することがあると思うけど、自分は深さってあまり信じてなくて、それよりもどれだけ「多く」考えているかの方が大切だと思う。たくさん考えた人だけが辿り着ける領域見たいなものがあり、そういう人の書いた文章は面白い。この本もたくさん考えた人しか書けない文章になっていて、読み始めたときまずそれが嬉しかった。当たりの本だ、と思った。

設計を新しい言葉で理解する機会

設計の書籍を読むと、凝集性、密結合、抽象化、関心の分離……といった用語が次々と登場する。これらは教科書的には理解できるし、「ふーん」と受け入れることもできる。ただ、正直まだ心の底から腹落ちした経験はない。なんでこんなに納得いかないのかなと思うんだけど、まあ自分が見つけた概念ではなく、文脈のない独立した単語として存在しているだけというのが大きいんだろうなと思う。
翻って本書の話だが、本書が優れているのは、既存の用語や定型的な説明に頼らず、「これってこういうことでしょ」と様々な観点から解説している点だ。もちろんこれも著者の言葉を借りて設計を理解する行為なわけだけど、教科書的に文脈を削ぎ落とされた言葉ではなく、状況を含んだ言葉になっており、理解がしやすかった。
著者もこの点を意識していると思っていて、冒頭の次の言葉が良かった。

設計判断とは、設計理論とドメイン知識が両方そろったときに下せる判断です。

各章の構成

全4章で構成されており、それぞれに明確なテーマがある。

第1章「設計を語ろう」

設計判断をどのように下していくかについて書かれた章。先ほど紹介した言葉もここにあり、著者の設計に関する基本的なスタンスが見える。設計についてよくわからない、少し苦手意識を持っている人ほど読んでほしい。

第2章「誰が何を呼び出せるか」

ソフトウェアのモジュール分割は、1951年にケンブリッジ大学のモーリス・ウィルクスらが執筆した『ディジタル・コンピューターのプログラムのつくりかた』の頃から言われている、設計の基本中の基本だ。凝集性や密結合といった概念も、要するに特定のコードと他のコードの関係性について述べている。この章では、呼び出す・呼び出されるという関係性や、フォルダ分割について考察している。

第3章「見えないものを測る」

品質・目標・手段という構造で、ふんわりとした非機能要件をどう達成していくかについて書いている。設計を通じた改善を現場で回すための考え方が示されている。

第4章「抽象化を実現する」

打って変わって、コードの読み手を意識した章。適切な抽象化は読みやすさにつながる。その鍵となるメンタルモデルという概念について解説されている。

おわりに

読んだ後の書籍は付箋だらけになっていた。

とにかく考え抜かれた本であることが良かった。設計について、自分の言葉で語れるようになりたい人に勧めたい一冊だ。

脚注
  1. 紙媒体って打つとば〜いたい、ばいたい...になってしまう ↩︎

Discussion