本書の第二部は Model-Driven Design の building blocks に関して論じた blah, blah
(中略、あとで書くかも)
最終的に以下の三点の結論に帰着する
リファクタリングは機能を保ったままで設計を変更することだ。前払いの念入りな設計を行う代わりに、開発者はコードの小さくかつ独立した変更により、振る舞いを保ったままで、設計を柔軟で理解しやすく変更していく。自動化されたテストがコードをいろいろ弄ってみる際の助けとなる(★relativelyは皮肉か?)。これにより、開発者は、はるか先を見通さなければというプレッシャーから解放される。
しかし、世に出ているリファクタリングの文章は、コードを読みやすくしたり拡張しやすくしたりする変更をどう行うかという手順の記述にフォーカスしてしまい、水準として詳細に過ぎる(細かすぎる)。 『Refactoring to Patterns』はもう少し高い水準を対象領域とし、開発者にデザインパターンに至るための道を示してくれるが、それでも設計の質の技術的側面に目が向いている。
システムの生存力(プロジェクトの継続性?)に大きく影響するリファクタリングとは、ドメインに対する新しい洞察からもたらされるリファクタリングや、モデルの有様をコードから明快に引き出してくれるリファクタリングだ。
そういったリファクタリングは、『Refactoring to Patterns』や『Refactorings』に出てくるような、常に行い続ける類のリファクタリングを置き換えるものではない。 既存のリファクタリングに対して異なる水準を新たに加える、refactoring to a deeper model (★) である。
ドメインの洞察に導かれるリファクタリングもしばしば小さなリファクタリングの組み合わせを伴うが、そのリファクタリングの動機はコードに対するものに限られず、より本質に近いモデルの洞察へと到る手堅い変更手段としてのリファクタリング、が動機付けとなる。
ゴールは、開発者はコードがどうなっているのかを知る、ということだけでなく、モデルが何故そういうモデルになっているのかを理解し、そのモデルをドメイン専門家との話し合いに関連づけることが出来るようになることだ。
『Refactorings』に出てくるカタログは、日頃出てくる小さなリファクタリングのほとんどを網羅する。各々のリファクタリングの動機は、「コードの臭い」だ。 対照的に、ドメインモデルの変更はドメインの理解が進むに従って非常に多様になるので、包括的なカタログを作ることは難しいだろう。
モデリングという行為は本質的に非定型で探索的である。そして、Refactoring to deeper insight は学習と深い考察に導かれる。
Chapter11 に書かれているように、世に出ている成功したモデルは参考になるかもしれないが、ドメインモデリングをクックブックやツールキットに落とし込むような横道にそれてはいけない(★)。
モデリングと設計は創造性を必要とする。
続く六つのチャプターでは、ドメインモデルを進化させ、設計に命を吹き込むための方法を記す。
(つづく)