webページを作るとき、多くはモデル、ビュー、コントローラに分けてコーディングを行えます。ざっくばらんには、ビューは与えられた値を適当な形にあてはめるのみのテンプレート、コントローラはモデルに命令を出し値を要求し結果をビューに渡す仲介者、モデルはそれ以外の画面に依らない部分、といった分類です。
これは実際優秀なのですが、複雑な問題を取り扱うほどモデルが太っていきます。気が付いたら頭の中のハッシュマップが頼りになり出します。単純なCRUDの様なものを扱う程度ならばフレームワークのORM任せで”モデル”と一言で済ませてもあっさり済みますが、そうならない時もあります。そうなる時はモデルを更に分割していく必要があります。モデルの一言でまとめられた要素をhogeモデル、fugaモデルと分解していきます。
分解の仕方は様々です。様々なので後や他にコードを触る人のために分解の仕方や指針をドキュメントに残すべきです。部分的に何かを用いた場合など、特殊なパターンならばなおさらです。
分解の仕方は信頼できる先達のモノが良いでしょう。本や説明書などドキュメントされているものが望ましいです。例えば、エリック・エヴァンスのドメイン駆動設計 | Eric Evans, 和智右桂, 牧野祐子, 今関剛 | 工学 | Kindleストア | Amazonです。ドメイン駆動設計ではドメイン(業務知識)に従ってモデルを定義していくやり方を示しています。フレームワークもあると思ったのですが、ORMは用意したから他で自由に書け、といった具合でした。