DDDä½é¨ã¯ã¼ã¯ã·ã§ããã«åå ãã¦ãã¾ãã
PHPカンファレンス2013 㧠PHPメンターズ ããã®ãã¢ãã«ã¨ã®åãåãæ¹ï¼ãã¡ã¤ã³é§åè¨è¨ä½é¨ã¯ã¼ã¯ã·ã§ãããã«åå ãã¦ãã¾ããã
PHP ã¡ã³ã¿ã¼ãºããã®è¨äºã¨è³æã¯ãã¡ãã«æ²è¼ããã¦ãã¾ãã
http://phpmentors.jp/post/61286646859/phpcon2013-ddd-workshop
ãã¡ã¤ã³é§åè¨è¨ã£ã¦ï¼
ãããããã¡ã¤ã³é§åè¨è¨ã¨ã¯ä½ãªã®ãã
ãã¡ã¤ã³é§åè¨è¨ï¼DDDï¼ã¯ãã¸ãã¹ãã¡ã¤ã³ã®æ¦å¿µãã½ããã¦ã§ã¢ã¨ãã人工ç©ã«ãããã³ã°ãããã¨ã§ãã
ドメイン駆動設計・開発の実践
ä¸è¨å¼ç¨å
ã«ãåºã¦ãã Eric Evans æ°ã®æ¸ç±ã¯ ãã¨ãªãã¯ã»ã¨ã´ã¡ã³ã¹ã®ãã¡ã¤ã³é§åè¨è¨ãã¨ããã¿ã¤ãã«ã§æ¥æ¬èªçãåºçããã¦ãã¾ããï¼ãã®æ¸ç±ã«ã¤ãã¦ã¯ä»¥é DDD æ¬ã¨è¡¨è¨ï¼
500ãã¼ã¸è¶
ã¨ããããããªã¥ã¼ã ã¯ããã¾ãããèªã¿ãããæ¬ã ã¨æãã¾ãã
æ°ã«ãªã£ã¦ãããã©èºèºãã¦ããã¨ããæ¹ã¯æ¸åºã§æã«ã¨ã£ã¦ã¿ãã®ãããããã
ã¯ã¼ã¯ã·ã§ããæ¯ãè¿ã
以ä¸ãæå ã«ãã DDD æ¬ã¨å½æ¥ã®ã¡ã¢ã§ã¹ã©ã¤ããè£å®ãã¤ã¤ãã¯ã¼ã¯ã·ã§ãããæ¯ãè¿ã£ãè¨é²ã
ãã¡ã¤ã³é§åè¨è¨ã¯å²å¦ã§ãã
スライド - DDD 基礎 - 何であって、何でないか ã«ãããéã DDD ã¨ã¯å²å¦ã§ãã
å
·ä½çãªæé ãå®è£
ãããã»ã¹ã«ã¤ãã¦èªãã¨ãããã®å²å¦ãææ³ãä¸ç·ã«ç解ãããã¨ã¯ã¨ã¦ã大äºãªãã¨ã ã¨æãã¾ãã
ã¾ããDDD æ¬ã«ã¯ãã®å²å¦ãè°è«ããããã®èªå½ã¨ãã¦ã®å½¹å²ãããã¾ãã
å²å¦ãææ³ãå
±æããããã®ç¨èªéã§ããã
ã¦ããã¿ã¹è¨èªã¨ã¢ãã«é§åè¨è¨
スライド - DDD を俯瞰する - 最重要パターン ã«ã¯ã¦ããã¿ã¹è¨èªã¨ã¢ãã«é§åè¨è¨ãæãããã¦ãã¾ãã
ãããã®ç¨èªã«ã¤ã㦠DDD æ¬ã«ã¯ä»¥ä¸ã®ããã«æ¸ããã¦ãã¾ãã
ã¦ããã¿ã¹è¨èªï¼UBIQUITOUS LANGUAGEï¼
ãã¡ã¤ã³ã¢ãã«ãåãå·»ãã¦æ§ç¯ããããã¼ã ã®ããããæ´»åãã½ããã¦ã§ã¢ã¨çµã³ã¤ããããã«ããã¼ã ã¡ã³ãå ¨å¡ã«ãã£ã¦ä½¿ç¨ãããè¨èªã
ã¢ãã«é§åè¨è¨ï¼MODEL-DRIVEN DESIGNï¼
ã½ããã¦ã§ã¢è¦ç´ ã®ãµãã»ãããã¢ãã«è¦ç´ ã¨å¯æ¥ã«å¯¾å¿ãã¦ããè¨è¨ãã¾ããç¸äºã«ä¸è´ããç¶æ ãä¿ã¡ãªãããã¢ãã«ã¨å®è£ ãå ±ã«éçºããããã»ã¹ã
ã
ã¢ããªã³ã°ã¨ã¯ï¼
ã¢ãã«é§åè¨è¨ã®ãã¢ãã«ãã¨ããã®ã¯ä¸ä½ä½ãªã®ãã
ãã㯠スライド - モデリングとは? ã§èª¬æããã¦ãã¾ãã
ã¢ãã«ã®èª¬æãèªãã§ããã¨æ¦å¿µã¨ãæ½è±¡åã¨ãåºã¦ããã©ããããã¢ããªã³ã°ã¨è¨è¨ã£ã¦ä½ãéãã®ï¼ã¨ããçåãåºã¦ãã¾ããããã㯠スライド - モデリングと設計の違い ã«æ¸ããã¦ããéãã
ã¢ããªã³ã°ã¯è¨è¨æ¸ä½æã®æããããªãã§ããã
ã¤ãã¬ã¼ã·ã§ã³ãããããåãã¦ãããã¡ã«ãããã¯æ´ç·´ããã¦ããã¾ãã
å®éã«ãã£ã¦ã¿ãã
- è¦ä»¶ãèãã¦
- ããããã¦ããã¿ã¹è¨èªãæãåºã
- ã¢ããªã³ã°ãã¦
- ã¦ã¼ã¹ã±ã¼ã¹ä½æ
ã
ãã¡ã¤ã³è¾æ¸ãã¤ãã
è¦ä»¶ããã¦ããã¿ã¹è¨èªãæãåºããã¦ããã¿ã¹è¨èªãã¾ã¨ããè¾æ¸ï¼ãã¡ã¤ã³è¾æ¸ï¼ãä½æãã¾ãã
è¾æ¸ä½ææã«çæããç¹ã¯ スライド - ドメイン辞書 ã«ã¾ã¨ãããã¦ãã¾ãã
スライド - ドメイン辞書(2) ã«ããã®ã¯ãã¡ã¤ã³è¾æ¸ã®ä¸ä¾ã§ãã
ããã¾ã§ä¸ä¾ã§ãã£ã¦ãå¯ä¸ã®çãã§ã¯ããã¾ãããï¼ãã©ããã©å¤§äºãªãã¨ãªã®ã§äºåæ¸ãã¨ãï¼
ãã¡ã¤ã³ã¢ãã«ã表ç¾ãã
ãã¡ã¤ã³è¾æ¸ãä½æãããã次㯠スライド - ドメインモデル ãåèã«ã¢ããªã³ã°ãã¦ã¿ã¾ãã
æåãããã£ã¡ããããã®ãä½ãå¿
è¦ã¯ãªãã ç¥å¼ UMLï¼UML ã£ã½ããã®ï¼ãä»ç®ç´ CRC ããå§ããããã§ããä»åã¯ç¥å¼ UML ã§ãã£ã¦ã¿ã¾ãã
ããã§è¡¨ç¾ããã®ã¯ããã¾ã§æ¦å¿µã§ãã£ã¦ãå®è£
ã§ã¯ãªãã§ãã
è¦ä»¶ãèãã¨ã¤ãããã¼ãããã¼ãã«ãä½æãã¦â¦ãã¨ãããã¼ãããã¼ã¸é·ç§»ã§â¦ãã¨ãå
·ä½çãªå®è£
ãé ãããããã¡ã§ãããããã§ã¯ãã£ããå¿ãã¾ãã
大äºãªã®ã¯æ¦å¿µãæ½è±¡åãã¦è¡¨ç¾ãããã¨ã§ãã
ä¸è¨ã¯ç¥å¼ UML ã«ãããã¡ã¤ã³ã¢ãã«ã®ä¸ä¾ã§ãã
ä¸ä¾ã§ãã£ã¦æ£è§£ã§ã¯ï¼ä»¥ä¸ç¥
ã¦ã¼ã¹ã±ã¼ã¹ãèãã
ã¦ããã¿ã¹è¨èªããã¡ã¤ã³ã¢ãã«ãä½æããã次ã¯ãããã®æ¤è¨¼ãè¡ãã¾ãã
スライド - ユースケース
ã¦ã¼ã¹ã±ã¼ã¹ä½æã®éãスライド - ユースケースのレイヤー ã«ã注æãã¾ãã
ãã¡ã¤ã³ã¦ã¼ã¹ã±ã¼ã¹ã§ã¯ãµã¼ãã¹ãèµ·ç¹ã¨ãªãã主èªããµã¼ãã¹ã«ãªãã¾ãã
ã¦ã¼ã¹ã±ã¼ã¹ãèããã¨ãã«ãã¡ã¤ã³ã¢ãã«ã«éåæãè¦ãããã¨ããããããããªãã§ããããã¡ã¤ã³ã¢ãã«ãä½æãã段éã§ã¦ããã¿ã¹è¨èªã«ä¸è¶³ãæãããã¨ãããããããã¾ããã
æ°ã«ãªã£ãç¹ãªã©ã確èªããªããããã¡ã¤ã³è¾æ¸ï¼ã¦ããã¿ã¹è¨èªï¼âãã¡ã¤ã³ã¢ãã«âã¦ã¼ã¹ã±ã¼ã¹âãã¡ã¤ã³è¾æ¸â¦ã¨ããããåãã¦ããã¾ãã
ä½é¨ãã¦ã¿ã¦
DDD æ¬ãèªãã§ããã ãã ã¨ãã¾ãã¡ãå®éã©ããã£ã¦é©ç¨ããããã¨ããã¨ããããã³ã¨æ¥ãªãã£ãã®ã§ãããä»åä½é¨ãã¦ã¿ã¦ãã®è¾ºããå°ãè¦ãã¦ããããã«æãã¾ããã
足è¸ã¿ç¶æ
ããä¸æ©åã«è¸ã¿åºããæ°ããã¦ãã¾ãã
ãã¨ãåå ãã¦æ¹ãã¦æããã®ã PHP ã¡ã³ã¿ã¼ãºããã®ã¡ã³ã¿ã¼åã®é«ãã
åå åã¯ä½ãåãã£ã¦ããªããµããµããªç¶æ
ã§ããåå å¾ã«ã¯ä½ããå¾ãã¨æãããããªã
Symfony åå¼·ä¼ã®ã¨ããããã ã£ãã®ã§ãããå°å
¥ã¨ãã¦ã¾ããå²å¦ãææ³ãå
±æãããã¨ããæ¹æ³ã¯ç´ æµã ãªã¼ã¨æã£ã¦ãã¾ãã
ã¯ã¼ã¯ã·ã§ããã«ã¯åå ã§ããªãã£ããã© DDD ã«èå³ãããæ¹ãã¹ã©ã¤ããè¦ãªãããã²å®éã«æãåããã¦ã¿ã¦ãã ããã
PHPã«ã³ãã¡ã¬ã³ã¹ã®ãã¨
PHP ã«ã³ãã¡ã¬ã³ã¹ã¯æ¨å¹´ã«ç¶ãã¦2åç®ã®åå ã
ä»åãã¨ã¦ãå
å®ãã楽ããæéãéãããã¨ãã§ãã¾ããã
æ°ç¾äººã®æ¹ã訪ããã¨ã¦ã大ããè¦æ¨¡ã®ã¤ãã³ãã§ãããé²è¡ãé常ã«ã¹ã ã¼ãºã§å¤§ããªåé¡ããªãç´ æ´ãããã¤ãã³ãã§ããã
ã¹ã¿ããã®çæ§ãã¹ãã¼ã«ã¼ã»ã¯ã¼ã¯ã·ã§ããæ
å½ã®çæ§ãæ¬å½ã«ãããã¨ããããã¾ããï¼
2013/09/18 14:28 追è¨ï¼
ãä½é¨ãã¦ã¿ã¦ãã«è¡¨ç¤ºãã¦ããç»åãä¿®æ£ãã¾ããã
ä¿®æ£åã®ç»åã«ã¯ãå²å¦ã ãã§ã¯ã飯ã¯é£ã¹ãããªããã¨ãããã¬ãã£ããªè¡¨ç¾ãå«ã¾ãã¦ãã¦ããDDD ã¯å²å¦ â å²å¦ã¯ã飯é£ã¹ãããªã â DDD ã¯å½¹ã«ç«ããªãï¼ãã¨èª¤è§£ãããããªã表ç¾ã§ããã®ã§å°ãè£è¶³ãã¾ãã
ã¾ã¨ãã§è¨ãããã£ããã¨ã3è¡ã§ã¾ã¨ããã¨ä»¥ä¸ã«ãªãã¾ãã
- å²å¦ã ãã§ã¯è§£æ±ºã§ããªãåé¡ãå¤ã ãã
- å²å¦ãå®éã®ç¾å ´ãªãã·ã¹ãã ãªãã«é©ç¨ããããã®ãå ·ä½çãªæ¹æ³ã欲ãã
- ä»å DDD ã§ãã®æ¹æ³ãç¥ããã¨ãã§ãã¦ããã£ãï¼
ä»å DDD ä½é¨ã¯ã¼ã¯ã·ã§ãããéãã¦ãDDD ã®å²å¦ãå
·ä½çãªæ段ã«è½ã¨ãè¾¼ãããã®ã²ã¨ã¤ã®æ¹æ³ãå¾ãããããã«æã£ã¦ãã¾ãã
å²å¦ãæãããã«ãã¦ã©ã®ããã«åé¡ã解決ãã¦ãããã
å²å¦ãå
ã«ã©ã®ãããªæ段ãããã»ã¹ãä½ã£ã¦ããã®ãã
ãªã®ã§æçµçãªçãã¨ãã¦ã¯ãDDD ã¯ç¾å ´ã§ä½¿ãããã®ï¼ã飯ãé£ã¹ãããï¼ï¼ãã§ãã