20150531 phpcon kansai

12
ドメイン駆動設計の 仕様パターン 2015/5/31 PHPカンファレンス関西2015 LT @kuma_nana ― Specification Pattern ―

Upload: kumamidori

Post on 05-Aug-2015

4.776 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 20150531 phpcon kansai

ドメイン駆動設計の 仕様パターン

2015/5/31 PHPカンファレンス関西2015 LT @kuma_nana

― Specification Pattern ―

Page 2: 20150531 phpcon kansai

はじめに2014年、大阪でドメイン駆動設計(DDD)の読書会や モデリングワークショップを開催 #dddosaka

Page 3: 20150531 phpcon kansai

はじめにドメイン駆動設計(DDD)とは?

ドメインとは・・・ ソフトウェアで解決しよう としている問題の領域のこと

→ ソフトウェアを作るとき、焦点を合わせるべきはドメイン

Page 4: 20150531 phpcon kansai

5分LTテーマとしては 壮大過ぎる・・・ので

今日は、 仕様パターンの話だけ!

Page 5: 20150531 phpcon kansai

仕様パターンとは?- DDD本で紹介されているパターンの1つ

- 仕様(業務ルール)を述語で定義

- 述語とは「真」か「偽」かを評価する関数

Page 6: 20150531 phpcon kansai

業務ルール(ドメインの制約)

たとえばこんな要件があった場合- 商品を注文する

仕様:注文実行可能な場合のみ実行:

- 注文する商品の在庫があること

- 注文顧客がブラックリストにのっていないこと

Page 7: 20150531 phpcon kansai

仕様パターンを使ったモデル

Page 8: 20150531 phpcon kansai

PHPによる実装

$inStoc->isSatisfiedBy($order)

注文オブジェクトの制約を検査する仕様

https://github.com/kumamidori/Sample.Specification

Page 9: 20150531 phpcon kansai

PHPによる実装

今回使ったライブラリ

https://github.com/phpmentors-jp/domain-kata

-ドメインモデルの「型」を提供

Domain Kata

Page 10: 20150531 phpcon kansai

まとめこれだけだと良さが

わからないですよね。本で読んで下さい( ╹◡╹)

実践本も今年出たよ

高木さん、ありがとうございました

副読本としておすすめ: ジェームス・O・コプリン 『マルチパラダイムデザイン』

Page 11: 20150531 phpcon kansai

参考リンク- 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

Thanks!by @kuma_nana (つωˇ)