NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

C#でDDD(ドメイン駆動開発)始めてみませんか

こんにちは。青木です。

当エントリは「C#アドベントカレンダー」の2015/12/21分です。前のエントリは、もりさんの「Code整形でちょっと役立つCodeMaidの利用方法」、次のエントリはJHashimotoさんです。

 
DDDとは

DDDはエリック・エバンス氏が提唱しているソフトウェア設計方針で、システム開発の複雑さをシンプルにする設計思想として、2003年に「Domain-Driven Design: Tackling Complexity in the Heart of Software(邦訳:ドメイン駆動設計)」が発売されました。

具体的には「複雑なドメインの設計はモデルベースで行うべきであり」、「また大半のソフトウェアプロジェクトではシステムを実装するための特定の技術ではなくドメインそのものとドメインのロジックに焦点を置くべき」という考え方となります(Wikipediaより)。

 

DDDを始めるにあたって、お勧めの書籍

当社でも、C#とDDDによる開発を行うケースが出てきました。

それに伴い、2015年に翻訳版が発売された書籍「実践ドメイン駆動設計(通称 IDDD本)」の社内読書会を行っています。

 

先日、この読書会の内容について、Sansanさんの勉強会で発表してきました。

f:id:nextscape_blog:20210910011009j:plain
DDD勉強会での発表風景

 
 

このスライドでは「実践ドメイン駆動設計(IDDD)」の基本となるポイントを整理していますので、よろしければ参考にしてください。

 
 

 

 

C#でDDDはできる?

DDDは、思想や哲学的なもののため、特別な技術には依存していません。

そのため、C#で導入してみようと思えば問題なく始めることができます。

前述の書籍「IDDD本」のサンプルコードはJavaで書かれていますが、著者Vaughn氏は書籍「Applying Domain-Driven Design and Patterns with Examples in C# and .NET(Jimmy Nilsson氏:邦題「ドメイン駆動」)」のおかげでC#/.NETコミュニティにはDDD開発を行う素晴らしい土壌があるとも言っています。さらに、IDDD本のレビュー者の多くが.NET開発者だったとも書いています。

このように海外では.NET+DDDは普及しているようです。

IDDD本のC#のサンプルコードもGitHubで提供されているので、C#でDDDを行うことは可能だと考えています。




C#でDDDをする場合の注意点

DDDでは、オブジェクト指向、パターン、モデリングに対する理解がないと失敗してしまったり、成果物となるコードが逆に複雑になってしまうことがあります。

 

RDBだけでなく、NoSQLやDocument指向データベースに対する知識も深める必要があります。

Microsoft技術スタックでは、Micrsoft AzureのTable StrageやDocumentDBに対する理解が必要になってくるかもしれません。

また、Webで実装する場合には、ASP.NET MVC (WebAPI)や、Azure WebAppsの知識も必要となります。

 

クラウドで連携を行う場合には、Azure Queue Storageの知識も必要になるかもしれません。

 

このような背景もあるため、最初は、スキルかポテンシャルの高いメンバーで、継続的な教育を行い、チームの底上げを行う必要があります。

(なお、DDD開発は、教育や顧客フィードバックを重視するアジャイル開発が前提となっています。)

 

 

さいごに

Sansanさんで開かれたDDD勉強会ですが、40名近くの方が参加されていました。DDDの盛り上がりを感じれた勉強会でした。

DDDが発表されてから10年近くが経ちますが、コミュニティや開発の現場では盛り上がり続けていますので、一度C#とDDDで、開発をしてみてはいかがでしょうか。

 

 

 

参考

Channel9 「Developing Core Business Applications with DDD and Microsoft .NET」 TechEd 2013