パターン
第二部のモデル駆動設計の各構成要素は、「パターンランゲージ」として構成されている。先に登場した「ユビキタス言語」もパターンの一つですし、第三章以降でも活用されています。
これらの標準パターンを共有すれば、設計に秩序がもたらされ、チームメンバが互いの仕事を理解しやすくなる。標準パターンを使うことで、ユビキタス言語も成長する。(第二部序章より)
パターンとして言語化することで、抽象的なこともお互いに共有することができ、仕事がしやすくなります。
「リファクタリング」や、「デザインパターン」など、この業界では既にパターンランゲージはおなじみなものになっていますね。
「レイヤ化アーキテクチャ」はドメインを、ソフトウェアシステムにおけるその他の大量の関心事から分離することで、設計とモデルのつながりを明確にします。
「エンティティ」や「バリューオブジェクト」などは、特定の区分に従って、モデル要素を定義することで、モデル要素の意味が鮮明になり、実際に実装できるモデルを作れるようになります。
パタン・ランゲージ
ちなみに、パターンランゲージの大元になっている「パタン・ランゲージ」の著者であり、建築家であるChristopher Alexanderは実は日本でもパタン・ランゲージを活用した建築を残しています。
埼玉県入間市にある「東野高等学校」の校舎です。
実は、以前自分が住んでいたところ、または、実家からも近くいつか書籍を読んで訪れようと思っていたのですが、機会がなく未だ行けていません。。。
書籍も1万円以上ですし・・・
ということで、図書館で借りて読んで、実家に帰ったときにでも訪れてみようかなと思っています。
ラーニング・パターン
また、日本でも慶應義塾大学湘南藤沢キャンパスの井庭先生を中心に「パタン・ランゲージ」を作成するプロジェクトが活発で、「ラーニング・パターン」や「プレゼンテーション・パターン」など実際、学習に役に立つパターンが紹介されています。
特にドメイン駆動設計は、ドメインに関する学びが重要視されていますから「ラーニング・パターン」が結構役に立つのではないかと考えています。
例えば、「No.16 動きのなかで考える」などは、実装しながら、ドメインを学び、モデルを変更させていくパターンとしてピッタリのパターンですよね。
「No24 小さく生んで大きく育てる」などは、まずは小さくはじめて、反復によってドメインを育てていくパターンとして、これもピッタリです。
学びで迷ったらこのラーニング・パターン。オススメです。