20150531 phpcon kansai
-
Upload
kumamidori -
Category
Technology
-
view
4.776 -
download
0
Transcript of 20150531 phpcon kansai
![Page 1: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/1.jpg)
ドメイン駆動設計の 仕様パターン
2015/5/31 PHPカンファレンス関西2015 LT @kuma_nana
― Specification Pattern ―
![Page 2: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/2.jpg)
はじめに2014年、大阪でドメイン駆動設計(DDD)の読書会や モデリングワークショップを開催 #dddosaka
![Page 3: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/3.jpg)
はじめにドメイン駆動設計(DDD)とは?
ドメインとは・・・ ソフトウェアで解決しよう としている問題の領域のこと
→ ソフトウェアを作るとき、焦点を合わせるべきはドメイン
![Page 4: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/4.jpg)
5分LTテーマとしては 壮大過ぎる・・・ので
今日は、 仕様パターンの話だけ!
![Page 5: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/5.jpg)
仕様パターンとは?- DDD本で紹介されているパターンの1つ
- 仕様(業務ルール)を述語で定義
- 述語とは「真」か「偽」かを評価する関数
![Page 6: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/6.jpg)
業務ルール(ドメインの制約)
たとえばこんな要件があった場合- 商品を注文する
仕様:注文実行可能な場合のみ実行:
- 注文する商品の在庫があること
- 注文顧客がブラックリストにのっていないこと
![Page 7: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/7.jpg)
仕様パターンを使ったモデル
![Page 8: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/8.jpg)
PHPによる実装
$inStoc->isSatisfiedBy($order)
注文オブジェクトの制約を検査する仕様
https://github.com/kumamidori/Sample.Specification
![Page 9: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/9.jpg)
PHPによる実装
今回使ったライブラリ
https://github.com/phpmentors-jp/domain-kata
-ドメインモデルの「型」を提供
Domain Kata
![Page 10: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/10.jpg)
まとめこれだけだと良さが
わからないですよね。本で読んで下さい( ╹◡╹)
実践本も今年出たよ
高木さん、ありがとうございました
副読本としておすすめ: ジェームス・O・コプリン 『マルチパラダイムデザイン』
![Page 11: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/11.jpg)
参考リンク- Practical DDD #1: Specificationパターンの例
- 「ドメインモデリングにおける関数型パターン―仕様パターン」を翻訳しました
http://phpmentors.jp/post/54629162352/practical-ddd-1-specification
http://phpmentors.jp/post/117295285988/fp-in-domain-modeling-specification
@iteman @hidenorigoto いつもありがとうございます
![Page 12: 20150531 phpcon kansai](https://reader033.fdocuments.net/reader033/viewer/2022052602/55c240a4bb61eb924a8b45c1/html5/thumbnails/12.jpg)
Thanks!by @kuma_nana (つωˇ)