特集:Visual Studio 2008 SP1新機能解説(2)

.NETの新データアクセス・テクノロジ「ADO.NET Entity Framework」

記事関係でEntity SQLについて多少なりとも解説している記事は初めての模様。ここでちょっと前に、id:dotnetfanさんやid:YokoKenさんから色々教えてもらった部分について。ちょっと区切りが分からなかったので小段落追加

ドメイン駆動開発者が不信任投票を行ったEntity Framework

Entity FrameworkがvNextと発表された時に多くのドメイン駆動開発者はこれを歓迎したようです。なぜならEntityベースの開発を行う事ができるフレームワークが発表されたから。しかし、彼らが望む機能の殆どがV1.0で実現されなかったのはInfoQの記事でご存じの通り。


何故多くの不信任案が出されたのか?多くの不信任案を出している開発者の方はドメイン駆動開発を行っている方々だったようです*1。従来のオブジェクト指向での開発を進めている人たち(日本のプロジェクトで多く行われている一般的なオブジェクト指向開発)からすると、使う事はできるんじゃない?という印象を持つかも。ただし、ドメイン駆動開発者からすると考え方的な部分で歓迎できなかったようです。

エンティティとデータの関係

開発時にエンティティを主体とするか、データを主体とするか?それがドメイン駆動開発者には重要だったようです。


ドメイン駆動開発ではエンティティを主体として開発を進めたいという思いがあります。エンティティだけで、開発を行い、エンティティからデータを作る。つまり、開発時の柔軟性等を備えているエンティティベースでの開発の方が理想であるという考え方です。それに対して、Entity Frameworkはデータがあって、そこからエンティティを作成する。ドメイン駆動開発愛好者の方からすると、順番が逆な訳です。エンティティから理想のデータを作るのではなく、データの都合をエンティティに合わせる。これがおかしい!というのが一番だったようです。


Entity Framework V1.0から見ると、V2.0でもエンティティありきでデータは後から作成というのは非常に難しいと思いますが、保守等を行う時にストアドプロシージャたたいたりする事が多い事などから、現在の在り方も必ずしも間違いだとは言いきれないかなぁ何て思いました。

.NETの新データアクセス・テクノロジ「ADO.NET Entity Framework」 − @IT

ドメイン駆動開発自体は非常に面白い考え方や開発だと思うのでしっかりと書籍を買って勉強して見ると刺激になると思います。お勧めはこの辺り。

ドメイン駆動 (Programmer’s SELECTION)

ドメイン駆動 (Programmer’s SELECTION)

*1:ドメイン駆動開発もオブジェクト指向開発の1つです。