サービス/データ分離派ということ


ちょっと前のエントリで、私はサービス/データ分離派である、と宣言してみたのだが、この「サービス/データ分離派」とは、浅海智晴氏が作られた言葉。
Java World の連載「Javaデザイン・ノート」第36回「ビジネス・アプリケーションのアーキテクチャ」(2003年10月号)が初出と思われる。

この記事で浅海氏は、ビジネス・アプリケーションのオブジェクト指向開発には

  • ピュア・オブジェクト派
  • サービス/データ分離派

の2つの流派があると言っている。
前者は分析・実装・設計の各段階で、常にオブジェクトを軸に開発を進める流派。つまり、どの段階でもデータと手続きはオブジェクトの中に一体化している。
後者は分析・実装・設計の各段階で、常にサービスとデータを分離して開発を進める流派。つまり、(まるでDOAのように)データ構造を独立して設計し、そのデータに対して操作を行うサービスを別途設計する。
浅海氏はサービス/データ分離派の立場から見た、ピュア・オブジェクト的な開発手法の疑問点を指摘してゆく。
やや難解だが、「データとセットになる手続きはユースケースが与えられて初めて決まるのだから、データとサービスは実行時に組み合わせるしかない。であれば、永続化層の中までオブジェクト指向的に設計する意味て何かあるのか」という話と理解した。
同時に、OODBではRDBの問題点が解消できない理由もわかった*1
ちょっと古いが、素晴らしい記事なのでお勧め。

*1:O/RマッピングがObject-Objectマッピングに化けるだけで、いいことはない