社内でドメイン駆動設計入門の読書会 #15
こんにちは。Nonです。
今回も会社で読書会をしている話をしようと思います。
内容は控えめに、ディスカッションの内容重視で書いていきたいと思います。
より具体的なコードや内容がみたい!という方は購入しましょう!
読んでいる本
読んでいる本はこちらのドメイン駆動設計です。
ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本
以前の記事でも言っていたように、業務でDDDを利用して開発することが多くなったのですが、DDDに精通している人が少ないという問題がありました。
そこで、その精通している人が読書会をしようかと誘ってくださいまして、是非にと参加させていただきました。
進行方法
読書会の進行方法は
- 今回読書の対象にする章を決める。
- 10〜20分間その章を読む
- 読み終わってしまった人は、もう一周読み直すか、次の章に進んでもらう
- その後40分間で、その章に対する疑問や考え方をディスカッションする
- 1〜3を毎週定期的に行う
という進行方向となっています。
社内で読書会をするのはこれが初めてなので、進行方法はもっといいのあったら教えて下さい。
今回読んだ内容
- ドメイン駆動設計のとびらを開こう
- 軽量DDDに陥らないために
- ドメインエキスパートとモデリングする
- 本当に解決すべきものを見つけよう
- ドメインとコードを結びつけるモデル
- ユビキタス言語
- 深い洞察を得るために
- ユビキタス言語がコードの表現として使われる
- 境界づけられたコンテキスト
- コンテキストマップ
- テストがチームの架け橋に
- ボトムアップドメイン駆動設計
- まとめ
ディスカッション
ディスカッションではコードの話のほうが多かった
でも、ドメイン駆動はドメインに注目して開発していく設計なので、コードは実はあまり関係ないのかもしれません。もちろん、コードが二の次というわけではなく、コードはドメインを反映させるためのふさわしい構造になっていないといけません。
ユビキタス言語
この記事を読んでいる皆さんにはすでに周知のとおりですが、変数名は重要です。
変数名はその処理を追うための手かがりになるからです。
ドメイン駆動設計でもこの点に触れていて、create
, make
, register
や、update
, save
など、普段何気なく使っている変数名や関数名について触れています。
ドメインで頻出する単語はそのドメインにとって重要なので、それもコードに反映しなければなりません。
例えば、あるドメインで、ユーザー登録
ではなくエージェント登録
という内容であれば、user
ではなくagent
という名前になりますし、ユーザー更新
ではなくユーザー保存
と慣ればsaveUser
となります。
この微妙な命名でコードとドメインが乖離してしまう原因になってしまうのです。
境界づけられたコンテキスト
これはまだ完全に理解できていないので、今後の課題とします。
最後に
実は結構前に、ドメイン駆動設計の全ての章を読み終えて、業務のコードに実装まで始めていました。実際にコードにするとなると非常に難しく、軽量DDD
になってしまっている感が否めません。今後も精進していきたいです。
常時、自社プロダクトにコミットしているので、自分の作成したプロダクトくらい自分の支配下においていきたいものです。ということはドメインに一番詳しいのは、自分たちということになります。
そういう意味でも、ドメイン駆動設計を用いて、自分たちが実現したいことをコードで表すことは義務であるのかなと思います。
読書会は引き続き進めているので、機会があればまた連載記事として、掲載していこうと思います。
その時はよしなに。
.