モデルとは何か?
- モデルとは簡素化である。(第一部序章 より)
- モデルとは、選び抜かれてシンプルにされ、意図的に組み立てられた知識の表現形式である。(同上)
- モデルとは、蒸留された知識である(同上)
- モデルとは、プロジェクトに携わる人々の頭のなかで構築された概念の集まりであり、ドメインについての洞察を反映した、用語と概念間の関係性からできている。(第一部第二章 コミュニケーションと言語の使い方 より)
- モデルとは、知識が蒸留されたものである。(第四部 第15章 蒸留 より)
本書では繰り返し、モデルの定義を説明しています。
表現はそれぞれ異なるものの、ニュアンスは伝わるでしょうか?
さらに第一部序章の最初の方でさらに説明されています。
つまり、当面の問題を解決する上で関連する側面を抽象化し、それ以外の詳細を無視することによって行われた、現実における1つの解釈なのだ。
難しいですね。これをドメイン、ドメインモデルと組み合わせて考えると、現実のソフトウェア開発と関連づいてもう少しわかりやすくなると思います。が、それはまた後日。
序章最初の昔の中国の地図の例がわかりやすいですね。
忠実に現実の地図を写実的に表現するのではなく、中央に大きく中国を描き、周りに小さく他の国々を描く。「国内に意識を向ける」という問題を解決するために、抽象化され、それ以外の詳細を無視する。
この地図は、現実における1つの解釈と言えると思います。
これ逆に言えば、『ある問題を解決』するためには、ものごと(ソフトウェア開発では、ドメインの知識)を抽象化し、シンプルに整理することが有効であるということではないでしょうか。
ソフトウェアの複雑な問題にどう立ち向かっていくか。まずはここにヒントがありそうです。
モデルを使ってソフトウェアの複雑さに立ち向かう。