良いモデルとは
良いモデルとはズバリ、問題解決ができるモデルのこと。
問題を解決できるものでなければ、それは良いモデルとは言えない。
例えば、会社のメンバーを管理するアプリケーションがあったとして、部署がセールスとCSと開発しか表現できなかったとしたら、新しくマーケティング部署ができたときに使い物にならない。
つまり、どんなにコード側で可読性や拡張性が高く、バグが出なかったとしても、高い価値を生み出さない。
コードの上流であるモデルが良くなければ、コード側で解決することが難しい。
良いモデルを作るために
では良いモデルを作るために大事なことは2つ。
ドメインエキスパートと会話をする
ドメインエキスパートとは想定している業務を把握している人。
会社によっては使用する部署の人かもしれないし、PdMかもしれない。
その人たちと話し合って、開発側も同じくらい業務について理解しないといけない。
余談ですけど、エンジニアって用途の把握で業務時間の5割くらい使っている気がする。
運用して得られた発見をモデルに還元する
モデルは運用開始したら完成ではなく、運用していく中でアップデートしていくもの。
結構モデルって設計したら終わりって感じがあるんですが、使っていく中で適宜アップデートしていかないといけない。
そういう意識もそうですが、アップデートしていく運用を維持しなくてはならないなと思いました。
どれだけそのモデルだけの情報を持っているか?を意識する
ドメインの知識を持っていないモデルは、ドメインモデル貧血症と呼ばれる。
ドメインモデル貧血症とは、ドメインモデルを実装するためのオブジェクト
でありながら、ドメイン知識をほぼ持たないオブジェクトのこと。
感想
正直、保守運用ばかりしていたせいか、いままでモデルについて考える機会があんまりありませんでした。
新しい要件が出てきたときにモデルは気にせずにコード側で頑張って汚いコードを生成していた気がします・・笑
今後はモデルも常にアップデートをする、そのために柔軟な設計をするということを念頭に置いていきたいと思います!