DDD ドメイン駆動設計

新サービスの開発を言語PHPフレームワークLaravel、開発手法DDD(ドメイン駆動設計)となった。

PHPとLaravel共に、今まで開発経験がないため、勉強をしていかなければならない。


ただ、すでに一つでも言語を学んで開発経験があるのであれば、学習コストは低いと言われている。

参考書やQiitaを見ながら基礎を固めていけば問題ないような感覚はある。

しかし、問題はDDDだ。

上司からDDDについての概要に説明をしてもらったが、はっきりいって全く理解が及ばなかった。

本気で難しすぎる。。。

まあだけど、理解しないことには開発ができないので学ぶ必要がある。

一つずつ紐解いていって理解を深めたいと思う

DDDとは何か?
調べると様々な言い回しが出てくるか、現段階での個人的な理解を書いておく。

現実世界にある複雑性を理解し、チームで共有認識の言葉を使いシステムを開発していくこと。

抽象的な部分があり、いまいちピンと来ないと思うが、自分の中でも完全に理解がしきれていない。笑

社内にある「実践ドメイン駆動設計」に簡単に目を通したが難しい。ひたすらに。。
中身までは説明ができないので、
DDDにおいて重要なワードを紹介しておきます。
レイヤードアーキテクチャ
UI層、アプリケーション層、ドメイン層、インフラストラクチャ層の4つの層から構成されている。
ポイント:「ドメイン層は他の層に依存をしてはならない」
ドメインロジックと、それ以外を切り離しすのが目的

ユビキタス言語
チーム全員で共有認識を持つ言葉のこと。人によって言葉の意味が変化してはならない。
その言葉の背景を理解し、今使われている言葉の意味を理解することが重要。

あまりもがっつりした概要でDDDが何なのか伝わっていないが気がする。
ただ文字化することで自分の理解につながるので、理解が深まったら更新していきたいと思う。