1.ã¯ããã«
ãã®èšäºã§ã¯ããããã®3ã€ã®æçŽã«ã€ããŠã話ããããšæããŸããããããã¯åžžã«èãããŸãããå€ãã®å Žåã7ã€ã®ã·ãŒã«ã®èåŸã«ããç§å¯ã§ããã察象åéã«åºã¥ããŠãã¶ã€ã³ã®éçºãç¶ç¶ãããå Žåã«åœ¹ç«ã€å€ãã®ãªãœãŒã¹ãæäŸããŸãïŒ DDDïŒDomain Driven DesignïŒã
2.ã§ã¯ããªãDDDãªã®ãïŒ
ãã¡ã€ã³ïŒãã¡ã€ã³ããžãã¯ïŒãŸãã¯ããžãã¹ããžãã¯ïŒããžãã¹ããžãã¯ïŒã«ã¯ãããã€ãã®å®è£
ãã³ãã¬ãŒãããããŸãã
1ïŒ
ããŒãã«ã¢ãžã¥ãŒã« -ããŒã¿ããŒã¹ããŒãã«ãŸãã¯ãã¥ãŒå
ã®ãã¹ãŠã®ã¬ã³ãŒãã®ããžãã¹ããžãã¯ãåŠçãããåäžã³ããŒã®ãªããžã§ã¯ãã§ãã
2ïŒ
ãã©ã³ã¶ã¯ã·ã§ã³ã¹ã¯ãªãã -ãã¬ãŒã³ããŒã·ã§ã³ã¬ãã«ããã®èŠæ±ãåãå
¥ããæé ã«ãããããžãã¹ããžãã¯ãšã®ããåããæŽçããŸãã
3ïŒ
ãã¡ã€ã³ã¢ãã« -çŽæ¥ããµããžã§ã¯ããšãªã¢ã®ãªããžã§ã¯ãã¢ãã«ãåäœãšããŒã¿ã®äž¡æ¹ãå«ãŸããŸãã

ãããã®ãã¿ãŒã³ã«ã€ããŠã¯ã
Martin Fowlerã®èæž
Architecture of Enterprise Software Applicationsã§è©³ãã説æãããŠã
ãŸãã ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ãã¿ãŒã³ ã
ïŒãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã®ãã¿ãŒã³ïŒEAAã®PïŒ ïŒ ã ãã®æ¬ã§ã¯ãæåã®2ã€ã®ãã³ãã¬ãŒãããµããžã§ã¯ããšãªã¢ã§ã®äœæ¥ã®éå§æã«ããé
åçã§ããããšã瀺ããŠããŸããããµããžã§ã¯ããšãªã¢ã®ããžãã¯ã®è€éããå¢ãå Žåãæåã®2ã€ã®ã¢ãããŒãã䜿çšããŠã€ã³ãã©ã¹ãã©ã¯ãã£ãç¶æããããšã«ãã£ãšæ³šæãæã䟡å€ããããšããäºå®ã«ã泚ç®ããŸããäžèšã®ãã³ãã¬ãŒãã®3çªç®ãããããããã¡ã€ã³ã¢ãã«ããæ±ºå®ããéã«åç
§ããŠãã ããã
ããã«åºã¥ããŠããã®ãã³ãã¬ãŒãïŒã
ãã¡ã€ã³ã¢ãã« ãïŒã¯ãããšãã°ãéèåžå Žãªã©ã®å°é£ãªåéã«æé©ã§ãããšããå°ããªçµè«ãåºããŸãã çŸåšäœæãããŠãããœãããŠã§ã¢ã®ã»ãšãã©ã¯ãããŸããŸãªããžãã¹ããŒãºã«åãããŠèšèšãããŠãããããæœè±¡çã§äžè¬åããããœãªã¥ãŒã·ã§ã³ã¯ãåžå Žã§ã®å°äœãç²åŸããŠããŸãã
ãªãç§ã¯ããã«ã€ããŠæžããŠããã®ã§ããïŒ DDDã¯é«å質ãªèšèšã§ããã ãã§ãªãããœãããŠã§ã¢ã§å¯Ÿè±¡é åã匷調衚瀺ããæ¹æ³ã®è¯ãäŸã§ããããããéçºããã®ã§ã¯ãªãã察象é åã®å°é£ãé »ç¹ãªå€æŽãéä¿¡ã®åé¡ãããã³ãã®ä»ã®ç
æ°ãããç°¡åã«å
æããããã«å€æŽãä¿®æ£ãè¡ããšãæ°ããæ¬ é¥ã®éªåŽ©ãããªãã«éããããå¯èœæ§ããããçè§£ãã«ããdifficultãã·ã¹ãã ã
DDDã¯ã次ã®ãããªéçºãã©ã¯ãã£ã¹ã®éºç£ã決ããŠåŠå®ããŸããã
DDDã¯ããããè£å®ããã ãã§ãã è€éãªã·ããªãªã§é©åãªã¢ãã«ãšæœè±¡åãæ€çŽ¢ããã«ã¯ããªããžã§ã¯ãæåã¢ãããŒãã®åéã§ããªãã®ç¥èãå¿
èŠã§ãããDDDã ãã§ãªããããŸããŸãªååããã¿ãŒã³ãããã³å®è·µãé©çšããååãªçµéšãå¿
èŠã§ãã
3.ã©ãããå§ããããŸããïŒ
ç§ã®ãéå±ãªPRããã¡ã€ã³ããŒã¹ã®ãã¶ã€ã³ïŒDDDïŒããŸã ããªããéå±ãããŠããªããªããããããã§ãªããã°ãå°ãªããšãè³æãžã®ãªã³ã¯ãèŠãŠãã ããã

äžè¬ã®äººã
ã®ããã«DDDã«å
ãåœãŠãæåã®æ¬ã¯ããããããããã°ãã«ãŒããã¯ãïŒããŒã BBBïŒããã°ãã«ãŒããã¯ïŒïŒ
ãã¡ã€ã³é§åèšèšïŒãœãããŠã§ã¢ã®äžå¿ã«ããè€éããžã®åãçµã¿ ãšãªãã¯ã»ãšãŽã¡ã³ã¹ ïŒãŸã ãã·ã¢èªã«ç¿»èš³ãããŠããŸããïŒã
ãã®æ¬ã§ã¯ãDDDãšã¯äœãããã¡ã€ã³èšèªããã³ãã¬ãŒããèšèšææ³ããªãã¡ã¯ã¿ãªã³ã°ãã¢ããªã³ã°ã
éçºãæè»ã«ããæ¹æ³ãªã©ãé¢é£ãããã¹ãŠã®åŽé¢ã«ã€ããŠè©³ãã説æããŠããŸãã ããããæ¬ã§æèµ·ããããã¹ãŠã®åé¡ã«ç²ŸéããŠããŠãïŒããã¯ç°¡åãªäœæ¥ã§ã¯ãããŸããïŒã質åã¯çè«çãªèгç¹ããã®ã¿èæ
®ãããç·Žç¿ã®ããã®ãã¹ãŠã®ç¯å²ãæ®ããŠããŸãïŒæ¬ã¯ç¹å®ã®éçºãã©ãããã©ãŒã ã«çµã³ä»ããããŠããŸããïŒã

ç§ãã¡ã®ã»ãšãã©ã«ãšã£ãŠãçŽç²ãªçè«ãèªãããšã¯å¥œãã§ã¯ãããŸããããå®çšçãªäŸããªããã°ã
InfoQ ïŒ
Domain Driven Design QuicklyããŒã¿ã«ã«ãã£ãŠäœæããããã®æ¬ã®ç°¡ç¥çïŒããã³ã¢ã¯ã»ã¹ç¡æïŒã«æ³šæãåããããšãã§ããŸãã
ãŸããEric Evansã®åªãããã¬ãŒã³ããŒã·ã§ã³ãçšæãããŠããŸãã
1ïŒ
DDDïŒã¢ãã«ãæ©èœããã2ïŒ
DDDã«é¢ããEric EvansïŒæŠç¥çèšèšInfoQããŒã¿ã«ã§ã¯
ãä»ã®å€ãã®DDD
ãã¬ãŒã³ããŒã·ã§ã³ãèšäºãã€ã³ã¿ãã¥ãŒãèŠã€ãã
ããšãã§ããŸãã

ããã§ã¯ãçè«çãªéšåã§ã
DDDã®å®çšçãªã¢ããªã±ãŒã·ã§ã³ã®äŸãã©ãã§èŠã€ããããšãã§ããããèããŸãã
ã ãã®ããã®çŽ æŽãããæ¬ã¯ããã£ã ã»ããã«ãŒã·ãŒã«ãã£ãŠæžããã
ãCïŒã䜿çšãã
.NETãã¡ã€ã³é§åèšèšãåé¡-èšèš-ãœãªã¥ãŒã·ã§ã³ã§ãã
ãã®æ¬ã«ã¯ãå®çšçãªäŸããããŸãã
1ïŒèŠä»¶ã®å®çŸ©ããã³ãŒãã®èšè¿°ãŸã§ãèšèšããã³éçºããã»ã¹ã¯ã©ã®ããã«é²ãã§ããŸãã
2ïŒæææ±ºå®ã«ãããŠã¢ãŒããã¯ãã£ã¬ã€ã€ãŒãæŽçããæ¹æ³
3ïŒDDDãã¿ãŒã³ãšãã©ã¯ãã£ã¹ã®é©ç𿹿³
4ïŒDDDçšã®å°ããªãã¬ãŒã ãæ§ç¯ããæ¹æ³
5ïŒã¢ãã«ãããã¡ã€ã³ã®ãã¡ã€ã³ãåé¢ããæ¹æ³
6ïŒå®éã®WPFïŒSilverlightã«ãé©çšå¯èœïŒãªã©ã®ç°å¢ã§ã®ããŒã¿è¡šç€ºãšããããšã®çžäºäœçšïŒModel-View-ViewModelïŒã®ææ°ãã¿ãŒã³ã
ãã®æ¬ã¯ãéåžžã«å¹
åºãã¢ã€ãã¢ãæã€åªããDDDã¯ãŒã¯ã·ã§ããã§ãã ãã®æ¬ã¯ãèŠä»¶ã®éçºããå§ãŸãããã®ãœãŒã¹ã³ãŒãã
Codeplexã§å
¥æå¯èœãªç£æ¥çšã¢ããªã±ãŒã·ã§ã³ã®å®è£
ã§
çµãããŸãã
æ¬ã®ã³ã³ã»ããå
šäœã¯ã3ã€ã®DDDã®æ±ã®æ¬ã«åºã¥ããŠããŸãã
- PoEAAããŒãã£ã³ãã¡ãŠã©ãŒ
- DDDãšãªãã¯ã»ã€ãŽã§ã³ã¹
- ãã¡ã€ã³ã®é©çš-ãžããŒãã«ãœã³ã®ãã¶ã€ã³ãšãã¿ãŒã³ïŒãžããŒãã«ãœã³ã®ã¢ããªã±ãŒã·ã§ã³æåã®ãã¶ã€ã³ãã¿ãŒã³ïŒCïŒããã³.NETã®äŸã«ããå顿åã®ã¢ããªã±ãŒã·ã§ã³ãã¶ã€ã³ïŒ

ãã®æ¬ã¯ãDDDã§äœ¿çšããããã¹ãŠã®åé¡ãæè¡ãããã³ãã¿ãŒã³ã衚é¢çã«æ±ã£ãŠããããã¹ãŠã®äŸã«ã¯ã³ãŒããä»å±ããŠãããããçè§£ã容æã«ãªããŸãã ãã®æ¬ã¯çŽ æŽãããã§ããããã·ã¢èªã®ç¿»èš³ã¯ç§ãã¡ã倱æãããã®ã§ã忬ãèªãããšããå§ãããŸãã
ãã ããDDDã¯åãªãå®çšçãªãœãªã¥ãŒã·ã§ã³ãŸãã¯ãã¿ãŒã³ã§ã¯ãªããæèãšã¢ãããŒãã§ãããDDDã«åŸãããšã決å®ããå Žåã«ã¯ãã¢ãã«ã«äžããããé«ãåªå
床ã«çŠç¹ãåœãŠããã¡ã€ã³èšèªã®éçºãã¢ãã«ã®ã³ã³ããã¹ããã¢ããªã³ã°ããã»ã¹ãç¥èã®å
±æããªãã¡ã¯ã¿ãªã³ã°ãæŠç¥çèšèšãªã©...ãããEric Evensã®æ¬ãèªãäž»ãªçç±ã§ããDDDã®å²åŠãããæ·±ãããæ·±ãçè§£ã§ããããã§ãã
DDDã¯ç¹å®ã®ãã¯ãããžãŒã«é¢é£ä»ããããŠããŸããããTDDãã¬ãŒã ã¯ãŒã¯ãORMãPersistence IgnoranceãIoCã³ã³ãããŒïŒInversion of ControlïŒãå®è£
ããèœåãªã©ãåªããããŒã«ãšå®è·µãæŠåšãªãã«DDDããã©ããŒããã®ã¯å®¹æã§ã¯ãããŸããïŒãããã³AOPïŒã¢ã¹ãã¯ãæåããã°ã©ãã³ã°ïŒã®æ©èœã¯ããã¡ããããããã¹ãŠã®ããŒã«ãå¿
èŠã§ããããšãæå³ãããã®ã§ã¯ãããŸããããå®éã«DDDã®å®è£
ã«è¿ã¥ãããšãã§ããŸãã ãããã®ããŒã«ã®å®çšçãªäŸ¡å€ã¯ãDDDã®éèŠãªç®æšã§ãããã¡ã€ã³ã¢ãã«ãåé¢ã§ããããšã§ãã Jimmy Nilssonã®æ¬ã¯ããããã®ããŒã«ã®æ©èœãšçš®é¡ã玹ä»ããŠããŸãã ãŸãããžããŒã¯
äŒæ¥ã¢ããªã±ãŒã·ã§ã³å®è£
ãã³ãã¬ãŒãã®äœ¿ç𿹿³ã瀺ãããããã®ãããã§ãææ°ã®ããŒã«ãšãã©ã¯ãã£ã¹ã«åºã¥ããå®å
šãªãœãªã¥ãŒã·ã§ã³ãæ§ç¯ããŸãã
Ruby On Railsã§ã®DDDãã³ãã¬ãŒãã®å®è£
ïŒ
4. DDDã®è©±é¡ã®åé¡
C DDDã¯ãDDDDïŒDistributed Domain Driven Designãªã©ã®ãããã¯ãšã坿¥ã«é¢é£ããŠããŸãã DDDDã¯ã忣ã·ããªãªã®DDDã§ãã çŸåšãDDDDã«ã€ããŠäžèšã§èšãã°ãDDDDãªãœãŒã¹ã¯ããŸããããŸãããã¡ãã»ãŒãžãšDDDã®å®è£
ã®åé¡ãã«ããŒããŠããã
ã³ãã³ãã¯ãšãªåé¢ïŒCQS ïŒã¯ãã®ã¢ãããŒãã®å®è£
ã«åœ¹ç«ã¡ãŸãã ã°ã¬ãã°ã€ã³ã°ã¯
ãDDDDã«é¢ããæ¬ãæºåããŠãããšèšããŸããã
SOAãšDDDã¯ã
Udi Dahanãããè°è«ããå¥ã®èšå€§ãªãããã¯
ã§ãã5. DDDãã³ãã¬ãŒããæŠå¿µãããã³æŠå¿µ
ç£æ¥çšã¢ããªã±ãŒã·ã§ã³ã§ã¯ãDDDã¯ããã€ãã®ãã³ãã¬ãŒãã䜿çšããŸããããã®äžéšã¯Eric Evensã®æ¬ã«èšèŒãããŠããŸãããããã¯
ãGoAãã³ãã¬ãŒããPoEAAã«
èšèŒãããMartin Fowlerã®ãã³ãã¬ãŒã ã
Enterprise Application Integration Templatesãªã©ãå«ããªããžã§ã¯ãæåã¢ãããŒãã®äœ¿çšãç¡å¹ã«ããŸããã ...
ãããã®ããã€ããæ¬¡ã«ç€ºããŸãã
6.ã¢ããªã±ãŒã·ã§ã³ã®äŸ
DDDå®è£
ã®è¯ãäŸãèŠã€ããããšã¯éåžžã«å°é£ã§ããDDDãååšããªãããã§ã¯ãªããDDDã®çã®åããããªãè€éãªåéã§äœ¿çšãããã¢ããªã±ãŒã·ã§ã³ã§å®çŸãããŠããããã§ãã ãã ããDDDãã³ãã¬ãŒããå®è£
ããããã®ã¢ã€ãã¢ããã¬ãŒã¹ã§ããåªãããããžã§ã¯ããèŠã€ããããšãã§ããŸãã
ããã«ãããŸãïŒ
1ïŒTim McCarthyã®ã¢ããªã¯
圌ã®ãããžã§ã¯ãã§ãã ãåœŒã®æ¬ã§è©³ãã説æãããŠããŸãã 圌ã¯ããã³ãã¬ãŒãã®äœ¿çšã ãã§ãªããDDDã®èгç¹ãããã¡ã€ã³ã¢ãã«ã®éçºã«ãçŠç¹ãåœãŠãŠããŸãã
ãã®ãããžã§ã¯ãã¯ã.NET 3.5ã«åºã¥ããŠæ§ç¯ããããã¡ã€ã³ã¢ãã«ãšã®ããŒã¿ãã€ã³ãã£ã³ã°ïŒããŒã¿ãã€ã³ãã£ã³ã°ãMVVMãã³ãã¬ãŒãã®å®è£
ïŒã®ææ°ã®ã¢ãããŒãã®å
šåãçºæ®ãããšããç¹ã§ãè峿·±ããã®ã§ãã 圌ã®ã¹ã¿ã€ã«ã¯ãæœè±¡åãšåå©çšå¯èœãªã³ãŒãã匷調ããèœåã§ãæåã§ãã
2ïŒæ¬¡ã«æ³šç®ãã¹ããããžã§ã¯ãã¯ã
Yves Goelevenã«ãã£ãŠéçºããã
ã¢ããªã±ãŒã·ã§ã³ã§ãããã®ã¢ããªã±ãŒã·ã§ã³ã®äœæã«ã€ããŠã¯ã圌ã®
ããã° ïŒDDDã®åºæ¬æŠå¿µã
åãäžããŠããŸãïŒã§èª¬æãããŠããŸãã 圌ã®ä»ã®ã¢ããªã±ãŒã·ã§ã³ã¯
DDDãã¬ãŒã ã¯ãŒã¯ã§ãã
ãªããžããªãš
仿§ãã³ãã¬ãŒãã®çžäºäœçšã®å®è£
ã«æ³šæããå¿
èŠããã
ãŸã ã
3ïŒBilly McCaffertyã¯ã
SïŒarp ArchitectureãšåŒã°ããé©ãã¹ããªãŒãã³ãœãŒã¹DDDã«çŠç¹ãåœãŠããã¬ãŒã ã¯ãŒã¯ãéçºããŠããŸãã 圌ã¯ããã¬ãŒã ã¯ãŒã¯ã«å«ãŸãããã³ãã¬ãŒããšã¢ãããŒãã®èª¬æãå«ãéåžžã«è¯ã
説æãæã£ãŠããŸãã ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãNHibernateã䜿çšããŠASP.NET MVCã¢ããªã±ãŒã·ã§ã³ãéçºããããšãç®çãšããŠããŸãã
4ïŒJimmy Nilssonãéçºãã
CïŒDomain-Driven Designãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ïŒndddsampleïŒã¯ãDDDã®èгç¹ããã¢ããªã±ãŒã·ã§ã³ãããŒã¬ã€ã€ãŒã«åå²ããæ¹æ³ã瀺ããŠããŸãã åœŒã®æ¬ã§èª¬æãããŠãã貚ç©èŒžéã®äž»é¡åéã«ããã
ãã«ãã£ã³ã°ãããã¯ãã¿ãŒã³ã®å®éã®å¿çšãå®èšŒãããŠããŸãã
ãã®ãããžã§ã¯ãã¯ãEric IvensãDomain Languageããšã¹ãŠã§ãŒãã³ã®ã³ã³ãµã«ãã£ã³ã°äŒç€ŸãCiterusãã®å
±åäœæ¥ã«åºã¥ããŠããŸãã
ãã®ãããžã§ã¯ãã®ç®çïŒ
- .DDã§DDDã䜿çšããå®éã®äœ¿ç𿹿³ã瀺ããŸãã
- .NETã®åéã«ãããçŸåšã®ãŠãŒãã£ãªãã£ãæè¡ãããã³éçºæ¹æ³è«ã®äœ¿çšãALT.NETã³ãã¥ããã£ã§è°è«ãããŠããŸã ã
- å
žåçãªDDDã¢ããªã±ãŒã·ã§ã³ã®å®è£
ã®å®çšçãªäŸã瀺ããŸãã
- ç¹å®ã®ãã©ãããã©ãŒã ã§DDDãå®è£
ããæ¹æ³ã瀺ããŸããããã«ãããä»ã®ãã©ãããã©ãŒã ã§ãåãããšãç°¡åã«è¡ããŸãã
- å®è¡å¯èœãªãã©ã¯ãã£ã¹ãéžæããã®ã«åœ¹ç«ã¡ãŸãã ããŸããŸãªã¢ãããŒãã«ãããã³ãã¥ããã£ã¯ãããã«ã€ããŠè°è«ããç¹å®ã®å®è£
ã«é©ãããã®ãéžæã§ããŸãã
詳现ã¯ãã¡ããã芧ãã ãã ã
7.ãã¡ã€ã³é§åèšèšãªãœãŒã¹
å
¬åŒãŠã§ããµã€ã-http://domaindrivendesign.org/
ãã£ã¹ã«ãã·ã§ã³ã°ã«ãŒã-http://tech.groups.yahoo.com/group/domaindrivendesign/ã¯å€§äººã®ã°ã«ãŒãã§ãããéåžžã«åªããã¢ã€ãã¢ã®ãœãŒã¹ã§ãããDDDã®åéã«ãããããããçš®é¡ã®åé¡ãè°è«ããå Žæã§ãã ãã®äžã§ãDDDãçµéšãã人ã
ãããªãã®è³ªåã«çããããšãã§ããŸãã
Jimmy Bogardã®ããã°-http ://www.lostechies.com/blogs/jimmy_bogard/default.aspx
ã³ãªã³ãžã£ãã¯ã®ããã°-http://colinjack.blogspot.com/
ã°ã¬ãã°ã€ã³ã°ã®ããã°-http://codebetter.com/blogs/gregyoung/default.aspx
Casey Charltonã®ããã°-http://devlicio.us/blogs/casey/
Udi Dahanã®ããã°-http://www.udidahan.com/
ãã¡ã€ã³é§åèšèšã®æŠèŠ-http://msdn.microsoft.com/en-us/magazine/dd419654.aspx
8.çµè«
è€éãªäŒæ¥ã·ã¹ãã ã§ããªããžã§ã¯ãæåã®èŠéããæ¡å€§ããéçºãšèšèšã®æ°ããæ¹æ³ãåŠç¿ããããšã«èå³ãããå Žåã¯ãDDDããŸãã«å¿
èŠã§ãã
http://weblogs.asp.net/arturtrosin/archive/2009/02/09/domain-driven-design-learning.aspx