Help us understand the problem. What is going on with this article?

新卒1年目でも分かる! DDDに効率的に入門する方法をまとめてみた

概要

新プロダクトの開発において、ドメイン駆動設計(DDD: Domain Driven Design)の採用が決まり、その管理を主に担当することになりました。その過程で0からどのように学んでいくと効率的かについて考えたことをまとめます。

効能

  • DDDを始める際に効率的に学習することができます。
  • 具体的に手順をイメージしながらDDDに取り組むことができます。

手順

1. PDFを読む Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

  • 下で紹介しているエヴァンスの本の要約したようなもので読みやすいです。

2. 参考になるサイトを参照してイメージを膨らませる

  • 具体的にどのようにモデリングしていけばいいのかのイメージを膨らませるために、レイヤーアーキテクチャーについて詳しいものや具体例の分かりやすいサイトを参考にします。

新卒にも伝わるドメイン駆動設計のアーキテクチャ説明[DDD]
[DDD]ドメイン駆動 + オニオンアーキテクチャ概略
ドメイン駆動で開発する ラフスケッチから実装まで

3. ドメインモデルを構築する

  • 上記のサイトなどを参考にドメインモデルをコンテキストごとに作成します。

4. ユビキタス言語をモデルから抽出する

スクリーンショット 2019-09-20 19.05.23.png

  • ドメインモデルで登場した言語をスプレッドシートなどに、日本語・英語(実装の際に必要)・意味・代替案などの項目を列挙していきます。
  • ユビキタス言語をまとめた表はモデルの変更や、サービスの精査に伴って単語の定義を変更した場合に、更新していきます。

5. ドメインモデルをコードに落とし込む・改善を続ける

  • ここはまだ経験中です!

まとめ

新卒1年目の自分でもDDDを理解して実践していけるような手法をご紹介しました。方法を身につけた上でしっかりと経験を積んでいければと思います。

(疑問がある場合、より詳細に知りたい場合)
適宜有名なDDDの本を読む『エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)』、『実践ドメイン駆動設計 (Object Oriented SELECTION)
(※私は最初にエヴァンスの本を読んだのですが、なかなかとっつきずらく読み進めるのに時間がかかったため、上記の手順をおすすめします。ぜひご感想をお聞かせください。)

工夫点

  • エヴァンスの本が難解なため、辞書的・補助的な役割で活用するという方法を提案しています。
  • ドメインモデルを作成する際に具体的なイメージが湧かないとやりづらいため、具体例の多いサイトを紹介しています。
  • ユビキタス言語の管理についてはチームで共有のスプレッドシートを用いて変更や追加の際にコメントをつけてもらってやっていますが、最適かはまだ分かりません。
pkino
自動化が楽しいです。新規プロダクト開発を行うMATRIXという部署に所属しています。 2年目のウェブエンジニア。様々な技術を調査・習得中。
https://dev.to/pkino
zozotech
70億人のファッションを技術の力で変えていく
https://tech.zozo.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away