More Related Content
PDF
PPTX
PDF
PDF
PDF
PDF
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜 What's hot
PPTX
PDF
PDF
PDF
PDF
Springを何となく使ってる人が抑えるべきポイント PDF
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか PDF
PlaySQLAlchemy: SQLAlchemy入門 PDF
Python 3.9からの新定番zoneinfoを使いこなそう PPTX
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料) PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 PDF
人生がときめくAPIテスト自動化 with Karate PDF
PDF
PDF
PDF
PDF
こんなに使える!今どきのAPIドキュメンテーションツール PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料) PDF
Viewers also liked
PDF
Pythonはどうやってlen関数で長さを手にいれているの? PDF
PPTX
PDF
Prophet入門【理論編】Facebookの時系列予測ツール PDF
Prophet入門【R編】Facebookの時系列予測ツール PDF
Prophet入門【Python編】Facebookの時系列予測ツール PDF
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法 Similar to Python におけるドメイン駆動設計(戦術面)の勘どころ
PDF
PDF
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring PDF
PDF
PDF
PDF
PDF
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜 PDF
PDF
PPTX
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する PDF
PPTX
Relationship betweenddd and mvc PDF
PPT
PDF
PPTX
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD] PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8 More from Junya Hayashi
PDF
断言して間違えると信頼度が低下するというベイズの話 PDF
PDF
PDF
DynamoDB Before and After GSI PDF
IT業界の記事に見られる「中日ドラゴンズの論理」の落とし穴 PDF
PDF
Pyramid + socket.io 人狼を作ってみた PDF
PDF
PDF
PPTX
Python におけるドメイン駆動設計(戦術面)の勘どころ
- 1.
- 2.
自己紹介
● 林 淳哉(@loose_agilist)
● GROOVE X でロボット開発
● 「実践ドメイン駆動設計」 Reviewer
● Qiita に DDD の記事書いてます
- 3.
- 4.
- 5.
- 6.
おすすめ書籍
エリック・エヴァンスのドメイン駆動設計 (2011)
“Domain DrivenDesign” Eric Evans (2003)
DDD 信者の聖書。その難解さから「鈍器」と呼ばれる。抽象度が高く、分厚いので
読み通すの大変だが、何回読んでも発見がある。ここで整理されている概念は、 10
年以上経った今も色褪せない。
実践ドメイン駆動設計 (2015)
“Implementing Domain Driven Design” Vaughn
Vernon (2011)
Evans 本の中身は本質を突いているが、その実践は容易でない。本書は、 Evans
本以降の10年間に発表された新しい開発技法を取り込みながら、 DDD の考え方
を実践に移すにはどうすれば良いかを記述した指南書。
※ 読むのに挫折しても、鈍器としてなら使えます
※
※ 翻訳レビューに参加しました。
- 7.
- 8.
- 9.
ドメイン駆動設計の
「戦術」的側面
● アーキテクチャ
○ MVC,MVVM などの実装パターン
● ドメインモデル
○ エンティティ
■ 識別子を持つもの
○ 値オブジェクト
■ 値に型を与えたもの
○ サービス
■ 振舞いだけを提供するもの
○ リポジトリ
■ 永続化の仕組み
○ ファクトリ
■ オブジェクトを生成する仕組み
○ 集約
■ 不変条件を管理する単位
○ ドメインイベント
■ エンティティの変化を表現したイベント
● アプリケーション
○ コンテキスト全体の調整役
- 10.
- 11.
CQRSとは
● Command andQuery Responsibility Segration
○ コマンドクエリ責務分離
○ Greg Young (2010)
● クエリ(副作用なし)とコマンド(副作用あり)を分離する考え方
○ 一貫性
■ 「コマンド」では整合性が求められる
■ 「クエリ」ではあまり気にしない
○ ストレージ
■ 「コマンド」では正規化してデータを保存したい
■ 「クエリ」では非正規化して効率的にデータを取得したい
○ スケーラビリティ
■ 「コマンド」は負荷が大きくなりづらい
■ 「クエリ」は負荷が大きくなりやすい
● ドメイン駆動設計は、コマンドと相性が良い
- 12.
- 13.
悩みどころ
● 参考になる Python実装がない
● ソースコードが肥大化しがち
● リポジトリの実装が複雑になってしまう
● 値オブジェクトの不変性を表現できない
● ヘキサゴナルアーキテクチャの使い方が分からない
● CQRS を適用したいけど、分からない
● 名前の付け方で悩む
● OR Mapper を使って良いのか悩む
- 14.
- 15.
- 16.
- 17.
- 18.
● 名前を大切にする
● テストを書く
●ヘキサゴナルアーキテクチャを活用する
● DI コンテナを活用する
● DBアクセスライブラリを活用する
● CQRS で読み出し専用ロジックを分離する
● 値オブジェクトを活用する
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 30.
- 31.
- 32.
まとめ
● Python でドメイン駆動設計を実践しました
○名前の付け方を大切にしよう
○ テストを書こう
○ ヘキサゴナルアーキテクチャを使って
ドメインモデルと外部依存の実装を分離しよう
○ DIコンテナ(inject)で依存性を管理しよう
○ DB のアクセスライブラリを活用しよう
○ CQRS で読み出し専用ロジックを分離しよう
○ 値オブジェクトを活用しよう