ドメイン駆動設計とUI設計の関係についての現時点の考え
ドメイン駆動設計(DDD)的にはUI設計はどうでもいいかもしれない。
利用者体験(UX)的にはどうでもよくないけど。
「ドメイン駆動設計(DDD)的にはUI設計はどうでもいい」への反論として、「UI設計とユースケースが要件定義でもあるのだから、それによってDDDを駆動することができる」という考え方もありえる。(←日本語推敲しろって感じですが意味わかりますよね)
ぼくの考えでは、ユースケースを表現するのはコントローラー/アプリケーションだと思う。モデル/ドメインのレイヤーではなくて。
モデルは、もっとピュアにドメインの概念を表現するレイヤーにしたい。
なので、というか、ちょっと飛躍するけども、『実践テスト駆動開発』(GOOS)的な「エンド・ツー・エンド」の考え方には、ちょっと違和感がある。最初にUI込みでのウォーキング・スケルトンを作るのだけれど、これをやろうとすると、「貧弱なUI設計で実装に着手する」か、「大規模な設計作業を最初にやる(BDUF)」かになるのではないだろうか。
ぼくん考えでは、UIはUIで開発し、モデルはモデルで開発に着手するのがよい。互いを意識しつつも、並行して開発をしばらく進めていく。次第に、徐々に、統合していく。こういうプロセスがよさそうだ。
というのが現時点の考え。