何事にもメリットデメリットがあります。
ドメイン駆動設計で実装する場合、メリットもありますがデメリットもあります。
本記事では、ドメイン駆動設計で実装する3つのデメリットをお伝えします。
- 初期の開発工数がかかる
- 名前を決めるのが大変
- コーディングでよく立ち止まる
私は、デスクトップアプリ開発とスタンドアロンゲーム開発で、ドメイン駆動設計を採用し、実装しました。そのときに感じたことを基にしています。
↓の書籍を参考にしています。
ドメイン駆動設計で実装するメリットは↓の記事を参考にしてください。
初期の開発工数がかかる
1つ目のデメリットは初期の開発工数がかかることです。
- 多数のパッケージ、クラスを使用する
- リファクタリングを何度もする
- 名前を決めるのに時間がかかる( 詳しくは次章 )
- コーディングでよく立ち止まる( 詳しくは次次章 )
ドメイン駆動設計に慣れていても、工数がかかります。初めて実装するならば、さらに時間が工数がかかるでしょう。
ドメイン駆動設計は保守性は高くなりますが、その分初期の開発コストは大きくなります。
簡単なツール作りや、小規模プロジェクトなどでは、ドメイン駆動設計を採用しないほうがよいかもしれません。
ドメイン駆動設計は、中~大規模プロジェクト向きで、初期工数がだいぶとれるときに採用するとよいと思います。
また、初めて実装するならば、ドメイン駆動設計の勉強も必須となるでしょう。コーディングしては勉強して、リファクタリングをする。実装はその繰り返しとなるでしょう。
名前を決めるのが大変
2つ目のデメリットは、名前を決めるのが大変ということです。
ドメイン駆動設計を採用すると、クラスの数が多くなります。そのクラスの数だけ、名前を付ける必要があります。
名前を付けるいるとき↓のような悩みにぶち当たるでしょう。
- ベストな名前が思い浮かばない。。。
- 以前名前をつけたものと、同じ名前をつけたくなった。。。
- いい名前をつけたのに、設計変更することになり、また名前を考えることになった。。。
名前付けは時間がかかることが多々あります。でも、分かりにくい名前を付けてしまうと、数週間後、あなただけでなくプロジェクトメンバー全員が混乱することになります。
名前付けは時間がかかるけど、おろそかにできない。名前を決めることは大変な作業です。
名前付けに関しては↓の記事も参考にしてください。
コーディングでよく立ち止まる
3つ目のデメリットは、コーディングでよく立ち止まることです。
コーディング中に以下のように疑問を持つことがよくあります。
- ここの書き方は、ドメイン駆動設計と違うのではないか?
- ドメイン駆動設計通りに書いているつもりだけど、違和感がある
疑問に思うたびに、書籍やネットを再確認することになるでしょう。立ち止まるたびに設計から見直しです。
ドメイン駆動設計は、設計手法が確立されています。なので、その手法に合わせてコーディングをしたくなります。
仮に疑問が解決して、再度コーディングをしても、また新しい疑問が生まれるでしょう。また、立ち止まることになります。ドメイン駆動設計はその繰り返しです。
とりあえず、ドメイン駆動設計通りやったとしても、プロジェクトにとって最適であることはおそらくないです。ドメイン駆動設計の1つ1つの手法にもメリットデメリットはあります。
その都度、プロジェクトで最適な方法を考えるべきです。
まとめ
本記事では、ドメイン駆動設計で実装する3つのデメリットをお伝えしました。
- 初期の開発工数がかかる
- 名前を決めるのが大変
- コーディングでよく立ち止まる
ドメイン駆動設計を採用するかどうかは、メリットデメリットを比較して決めるとよいでしょう。
コメント