『Prefactoring: Extreme Abstraction - Extreme Separation - Extreme Reliability』

拙訳『ユースケース駆動開発実践ガイド (OOP Foundations)』にも登場する概念「prefactor」。かなり前に購入したにも拘らず、ようやく読了。和訳である『プレファクタリング ―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE)』はとうの昔にオライリーから出版されているけど、今回手に取ったのは原著のほう。

Prefactoring: Extreme Abstraction - Extreme Separation - Extreme Reliability

Prefactoring: Extreme Abstraction - Extreme Separation - Extreme Reliability

積読の地層の奥深くに長い間潜んでいた本書を手に取るきっかけとなったのは、先日のオブジェクト倶楽部夏イベントで監訳者の角谷さんからサインを貰うべく、『インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践』を読み始めたのがきっかけ。これの著者が Ken Pugh だと知って、「そういや『Prefactoring: Extreme Abstraction - Extreme Separation - Extreme Reliability』も買ってたよなぁ…」と思い返して取り出してみた。結局、『インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践』の前に読み終わってしまったという体たらく*1

本書を最後まで読んだのは、冒頭で ADT とドメインの話が登場したから。いや、本書では明確に「ドメイン(定義域)」とは書いてはいないけど、言わんとしていることは同じはず*2。警句として挙げられていたのは「Most strings are more than just a string」だけど、これにシビれた。

ドメインの重要性は一般的にはあまり認識されてない気がするが、個人的には決して捨て置けないものだと考えている。ドメインの議論については Date の『データベースシステム概論』などでもしつこく述べられているが、結局は「型について考えることによって、より安全で、かつ不要な処理を含める必要がないシステムを作り上げることが可能となる」というように私は理解している。だからこそ、これまでずっと静的型付け言語の力を信じて生きてきているわけだし。

…というわけで冒頭から引き込まれて次々とページを繰っていったわけだが、オブジェクト指向設計の勘所や、よい開発者の考え方などが盛り込まれていて非常に楽しく読めた。巻末に警句が簡潔にまとめられているので、折りを見て読み返し、自分を振り返りたいと思う。

経験を積んだ開発者であれば、本書から新たな何かを得ることは少ないかもしれない。もしあなたが開発者としての経験を十分に積んでおり、かつ毎日を有意義なものにしようと考えながら日々の仕事をこなしているのであれば、もしかすると「いやそれって当たり前の話ですから」なんて思ってしまうかもしれない。しかし、もしあなたがプログラマで、かつ自分の仕事のやり方に何か不安を感じているのであれば、一度本書を手に取ってみることをお薦めする。

ただ、Ken Pugh のコーディングスタイルはあまりにも異様(これは角谷さんとも話題にしたが)。いくらなんでも、今こんなスタイルで書いている開発者はいないんじゃないの? GNU コーディング標準の出来損ないみたいな感じだよ。

*1:ちなみに、『インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践』はまだ読み終えてない…。

*2:もちろん、本書はオブジェクト指向設計を前提にしているので、当然ながら定義された型には振る舞いも含まれることになろうが。