UIでドメインモデルを利用しないリスク

僕は出来るだけUIでドメインモデルを直接利用したいと考えています。しかし、この考えと逆にUIでドメインモデルを直接扱うべきでないという意見があります。もちろん納得できませんが、主張しているいくつかのポイントについて考えてみます。

  1. ORMのLazy Loadの問題
  2. UI担当者がドメインモデルの知識を必要

1つ目は個別のORMフレームワークの話なので直接的にはドメインモデルと関係しないので、これは除外できます。もちろん、Lazy Loadの問題が間接的にドメインモデルでのトランザクションの取り扱いを難しくしているのは分かるのですが、Lazy Loadは必須の技術ではなく適切なDataMapperを適用すれば解決することだと考えています。

2つ目のポイントについては、ドメインモデルをそのまま利用すのではなくDTOを利用するほうがUI担当者は知識範囲が限定できるメリットを言及していると解釈するならば、*1マスタをJOINした程度ではなく特定の画面に極端に特化したDTOに変換をおこなわない限りメリットが得られないように考えます。極端に特化した場合、この変換処理はまさにUI処理の一部と考えられるので、ドメインモデルをUIで使っていることになると考えます。逆に、特化しない場合、UIでDTOのデータを利用して表示値を導出するような必要が出てきます。この導出がビジネスルールであれば、UIにビジネスルールが現れることになり、UI担当者がビジネスルールを実装していることになります。これは、簡単なルールばかりかもしれませんが、UI担当者がドメインモデルを利用する以上のことをしていることになります。なりより、この場合の問題なのは、UIで実装されるビジネスルールが共通化されないで、同じような処理が複数のUIで実装されてビジネスルールの実装が分散してしまうリスクが高いということです。

僕の経験では、UIのコードを小さくするためにはドメインモデルを積極的に利用することが一番近道だと考えています。たとえば、ある状態であれば赤色で表示するようなUIの要求があれば、ある状態を判定するプロパティをドメインモデルに作成するような、UIで出てくる導出ルールをドメインモデルに積極的に含めていけば実現できます。

*1:どの程度のモデルに変換するかが分からないので空中戦になりそうですが