
ã¯ããã«
æåã®èšäºã§ã¯ã瀺ããããã©ã¯ãã£ã¹ã®ç¯å²ãããããé©çšã§ãããããžã§ã¯ããããã³é©çšãã¹ãã§ãªããããžã§ã¯ããç¹å®ããŸããã
ãã®èšäºã§ã¯ãDDDã®åºæ¬åçã®ç°¡åãªæŠèŠã説æãããšãšãã«ãå人çãªçµéšãã¢ããªã±ãŒã·ã§ã³ã§å
±æããããšæããŸãã ã³ãã¥ãã±ãŒã·ã§ã³ãšæ§é çã¢ãããŒãã«ã€ããŠãå®è£
ã®äŸãšãšãã«è©³ãã説æããŸãã
次ã®èšäºã§ã¯ãå®è£
ãèæ
®ããŠãé©çšãããèšèšãã¿ãŒã³ã®å¯èœãªçµã¿åãããæžãçããæçµçã«ã1ã€ã®å°ããªãã€ã¯ããµãŒãã¹ã®ç¹å®ã®å®è£
ã®äŸã瀺ããŸãã
DDD
以åã®å®çŸ©ãæãåºããŠãã ããïŒ
ãã¡ã€ã³é§åèšèšïŒDDDïŒã¯ãç¶ç¶çãªéçºã®éçšã«ããäž»èŠãªããžãã¹ã¢ãã«ãšå®è£
ãç·å¯ã«ãªã³ã¯ããããšã«ãããããŒãºãå
æ¬çã«æºããããã®ãœãããŠã§ã¢éçºãžã®ã¢ãããŒãã§ãã
è€éãªã·ã¹ãã ãæ§ç¯ããæ¹æ³ã説æãããªãã¡ã¬ã³ã¹ããã¯ã¯ãEric Evansã®Domain Driven Dedign ïŒBig Blue BookïŒã§ãã ãã®ãããã¯ã«é¢ããã¬ãã¥ãŒèšäºãèªãã§ããã°ããã§ã«ããã«ã€ããŠç¥ã£ãŠããŸãã å®éã«DDDã䜿çšãããŸã§ã«ãDDDãèªãå¿
èŠããããŸãã ããã¯èªã¿ãããæ¬ã§ã¯ãããŸããã
DDDã®æšæºçãªãœãŒã¹ã¯Eric Evansã®æ¬ã§ãã ããã¯ãœãããŠã§ã¢ã®æç®ã§æãç°¡åã«èªãããšã¯ã§ããŸããããçžåœãªæè³ãååã«è¿æžããæ¬ã®1ã€ã§ãã
ããŒãã£ã³ãã¡ãŠã©ãŒïŒ2014幎1æ15æ¥
æ¬ã®å
容ãã¹ã¯ããŒã«ãããšãå®å
šã«æ§é åãããŠããªãããã«èŠããŸãã ããããå°å³ã¯ç§ãã¡ãå©ããŠãããŸãã

ãããã«ã¯ã仿¥æ€èšãããã©ã¯ãã£ã¹ããããŸãã
ãã®æ¬ã§æ±ã£ãŠããå®è·µã®ç¯å²ã¯èšå€§ã§ãã ãã®æ¬ã®å€éšã§é©çšã§ãããã©ã¯ãã£ã¹ã®ç¯å²ã¯ããã«å€§ãããªããŸãã ãããã®å°ãªããšãäžéšã䜿çšããåã«ãç®æšãç¹å®ããŠãã ããã äŸãšããŠèªåã®ãã®ãæããŸãã
- çç£æ§ãåäžãããŸãã
- ããããããã³ãŒããæžãã
- ãœãããŠã§ã¢éçºã¬ãã«ã§ã®ã¹ã±ãŒãªã³ã°ã
åäžèšèª
ãœãããŠã§ã¢éçºã«ãã£ãŠæ°ãããã®ãäœæãããããšã¯ãã£ãã«ãããŸãããéåžžã¯ãæ¢åã®ãã®ã®ã·ãã¥ã¬ãŒã·ã§ã³ã§ãã
ã¢ãã«ã¯ãå¿
èŠãªããããã£ãšæ©èœã®ã¿ãå«ãå®éã®ãªããžã§ã¯ãã®è¡šçŸã§ãã
ãµããžã§ã¯ãé åå
šäœãã«ããŒãããœãããŠã§ã¢è£œåãäœæããããšã¯ã§ããŸããã å¿
èŠãªæ©èœãåçŸããéšåã®ã¿ãåçŸããããšãå¯èœã§ãã
ã¢ãã«ã®è¯ãäŸã¯ãå°åœ¢å³ã§ãã 圌女ã¯å°åœ¢ã¢ãã«ã§ãã ãã®ãããã«ã¯ãèåãå·ã®èåã¯å«ãŸããŠããŸãããå®éã®ãªããžã§ã¯ãã®çžå¯Ÿçãªäœçœ®ã®ã¿ãåæ ããŠããŸãã
誰ã«ãšã£ãŠãæç¢ºãªã¢ãã«ãæ§ç¯ããã«ã¯ãåãèšèªã話ãå¿
èŠããããŸãã ãšãªãã¯ã»ãšãã³ã¹ã ãã§ãªããåžžèãæããŠãããŸãã ããã°ã©ããŒãèªåã®çšèªã䜿çšããç¬èªã®ãã¹ã©ã³ã°ããæ±ãå Žåãåè
ã¯åã«äœãããå¿
èŠãããããçè§£ããŸããã ãã®å Žåã®ããžãã¹ã¯ãããããã®ãæ©èœããéçºããããã®å®éã®ã³ã¹ããå®çŸããããšã¯ã§ããŸããã ãã¯ãããã¿ã³ã远å ããã ãã§ãããšèããããšããããŸããïŒ
ã·ã¹ãã èšèšè
ãšããŠã®ç®æšã¯ãããŒã å
šäœãããäºããæå€§éã«çè§£ããããšã§ãã ãããéæããæ¹æ³ã¯ïŒ 話ãå§ããŸãããã 人ã
ãè¿ãã°ã«ãŒãã§ã³ãã¥ãã±ãŒã·ã§ã³ãå§ããå Žåãäžè¬çã«åãå
¥ããããŠããç¹å®ã®çšèªã®ã»ããããããŸãã ç°ãªãäŒæ¥ã§ã¯ãå
±éèšèªãå°å
¥ããããã»ã¹ã¯ç°ãªãå¯èœæ§ããããŸãã ããã¯ãåŒ·ãæææ±ºå®ãŸãã¯æ°äž»çãªæé ã®ããããã§ãã èšèªã¯æç€ºçã«ç€ºãããšãã§ããæç€ºçã«å
¥åãããããšã¯ãããŸããããã®å Žåã圌ãã¯åã«è©±ãå§ããŸãã å
±éèšèªãå°å
¥ããããã®åªãããã¯ããã¯ã¯ãäžè¬çãªããã¥ã¡ã³ãã§ãã
ãããžã§ã¯ãææžã®ä¿ç®¡æ¹æ³
- ããžãã¹ãšéçºã®éã®ã³ãã¥ãã±ãŒã·ã§ã³ã¯ãã¢ãã«ãæ¹åããã¯ãã§ãã
- äŒè°ã®åŸãçµæãããã¥ã¡ã³ãïŒã¹ã¯ã©ã ã¢ãŒãã£ãã¡ã¯ãïŒã®åœ¢åŒã§èšé²ãããã®ããã¥ã¡ã³ããéçºããã»ã¹ã®ãã¹ãŠã®åå è
ã«èŠããŸãã
- ããã¥ã¡ã³ãã§ã¯åäžã®èšèªã䜿çšããŸãã
- æãéèŠãªããšïŒããã¥ã¡ã³ãã«æéãç¡é§ã«ããªãã§ãã ããã ããªãã¯ãŸã ã³ãŒããæžããªããã°ãªãããããã¥ã¡ã³ãã¯äœåºŠãæžãçŽããããªãœãŒã¹ã䜿ãããšã¯é«äŸ¡ã§ãã UMLãã£ãŒãã¢ããªã±ãŒã·ã§ã³ãé·æéããã代ããã«ãæºåž¯é»è©±ã§ãããã³ããã³ãã«ã¡ã©ã䜿çšããŸãã
- ããã¥ã¡ã³ããŒã·ã§ã³ã«ã¯èŠåŸãå¿
èŠã§ã;æã
ãããæžãããšã¯ã§ããŸããã
- ããã¥ã¡ã³ããåé¢ããŸãã
- ã³ãŒãå
ã®ã³ã¡ã³ã-äžå¯è§£ãªç¬éãã³ãŒãå
ã«çŽæ¥èšè¿°ãã
#ODO:
ãŸãŸã«ã#ODO:
ïŒã³ãŒãããã¹ã¿ãŒã«ããŒãžãããšãã«åé€ããŸãïŒã ã³ã¡ã³ãã§æèŠãè¿°ã¹ãŠãã ãããããšãã°ãã¬ã¬ã·ã³ãŒããæäœãããšãã¯ãæŸèæã䜿çšããå¿
èŠããããŸãã - ãããžã§ã¯ãã®ã«ãŒããã£ã¬ã¯ããªã«ãã
README.md
ãããžã§ã¯ãã«é¢ããã³ã¡ã³ãã«ã¯ããããžã§ã¯ãã®éå§æ¹æ³ããã¹ãã®å®è¡æ¹æ³ãªã©ã®æè¡æ
å ±ãå«ããå¿
èŠããããŸãã ãŸãããã¹ãŠã®ãããžã§ã¯ãããããã©ã®ãµãŒããŒã§å®è¡ãããŠãããã瀺ãå°å³ãååŸããããšããå§ãããŸãã åãå
¥ãããããã¹ãŠã®å¥çŽãåå¥ã«èšé²ããŸãã - ãããŠæãéèŠãªããšã¯ãç¥èããŒã¹ã§ãã ããžãã¹ããã»ã¹ã説æããããã¥ã¡ã³ãã®ã³ã¬ã¯ã·ã§ã³ãããã¯ãããã¥ã¡ã³ãã®äžéšã§ããããŠãŒã¶ãŒãšããžãã¹ã®äž¡æ¹ãå©çšã§ããŸãã
- ããã¥ã¡ã³ããæžã人ã®äž»ãªééãã¯åé·æ§ã§ãã ãã¹ãŠãç¶²çŸ
ããããšããªãã§ãã ãããäžè¬çãªæå³ã ããäŒããŠãã ããã ããã¥ã¡ã³ãã¯ãããžã§ã¯ããè£å®ãããã®ã§ããå¿
èŠããããŸãããæ±ºããŠããã眮ãæãããã®ã§ã¯ãããŸããã ææ§ãªã ãã®çšèªããã¹ãŠæžãçããªãã§ãã ããã å®çŸ©ã3ã€ä»¥äžã®æããšãå Žåãããã¯äžååãªå®çŸ©ã§ãã
ããã¥ã¡ã³ãã®äŸïŒ
# . # : : - - email - ## : ### , email , 1 ( email ). ### . email . ### email email . , email. . ### , , . . ### email, , . 2 . ### . , , .
ãã®äŸã§ã¯ãæç€ºçãªèŸæžãæå®ããªãã£ãã«ããããããã User ã Authorization ã Registrationã®æŠå¿µãä¿®æ£ããããšã«æ³šæããŠãã ããã ãã®ãããªããã¥ã¡ã³ããäœæããã®ã«ãå°éå®¶ã¯20å以äžããããŸããã
ãµããžã§ã¯ãé åã®å°éå®¶ã§ã¯ãªã人ã«ãšã£ãŠãããã¥ã¡ã³ããæžãããã»ã¹ã¯è€éãªãã®ãšããŠèªèãããŸãã ç¥èã®åéãšåéãããç¥èã®èšé²ãåé¢ããå¿
èŠããããŸãã != + .
ãããªããå®å®ãšåŒã¶ãã®ã¯ãå®éãåŒã®ç®ã®ããã«ãäºãã®äžã«ãããåŸã
ã«äºãããé¢ããŠããäžçã®èç©ã§ãã
-ç°åžžã«æç¢ºã«è¿°ã¹ãããŠããïŒ -ã¢ããã©ã€ããè³è³ããŸããã -é©ãã»ã©æç¢ºã§ãïŒ ã圌ãã¯ãã¿ããã®ãäœã§ããããéåžžã«ããç¥ã£ãŠããã®ã§ã圌ãã¯å²åŠè
ãçè§£ãããšæã£ããã
ã¢ããã£ãŒã³ç©èªãã¯ãªã¹ããã»ããŒãã£ã³ã»ãŠã£ãŒã©ã³ã
éãããã³ã³ããã¹ããšãã¡ã€ã³
ç§ãã¡ãããã°ã¬ãã·ãã¹ã¿ãŒãã¢ããã®ãã¶ã€ããŒãšããŠè¡åãããšæ³åããŠãã ããã ç§ãã¡ã¯çãå·åŽãã¶ãå®
é
䟿ã§ã®ããããµã€ãäžã®ãã©ãŒã ãžã®èšå
¥ãäœæéã倧奜ãã§ãã ãã®ãããçŽ æŽãããã¹ã¿ãŒãã¢ããã4å¹ã®ã«ã¡ãš1å¹ã®ããºãããæãä»ããŸããã
- ãããã§ãªã¢ãç»é²ãããå®éã®æçãæçš¿ãããµã€ãããããŸãã
- ãããã®ãã¶å±ã«ã¯ãç¬èªã®å®
é
䟿ãµãŒãã¹ã¯ãããŸããã
- ãããã§ãªã¢ã«ã¢ã¯ã»ã¹ã§ããªã顧客ãããŸããããµã€ããŸãã¯ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããæ³šæããæºåãã§ããŠããŸãã
- ãã©ãŒã®ãæ©èœãïŒå®
é
䟿æ¥è
ã¯ç¹å¥ã«éçšããã人å¡ã§ã¯ãªããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãä»ããŠç»é²ããæ®éã®äºº
- ã¯ãŒãªãšã¯æ³šæãåãåããå®è¡åŸãå®äºããäœæ¥ã«å¯Ÿããæ¯æããåãåããŸãã
- ãã®ãããªå®
é
䟿ãåŸ
ã€ã®ã«æéãããããŸãããé
éããããã£ãŠãã¶ã¯å®ããªããŸãã
åã®ç« ã§èª¬æããããã¥ã¡ã³ããæãåºããŸãããã ããã§ãåäžã®èŸæžã§ã¯ã ç»é²ãšããçšèªã䜿çšãããŸãã ã ãããããã®ãããžã§ã¯ãã«ã¯ãããã®ããã€ãããããŸãã
- 顧客ç»é²
- ãããã§ãªã¢ç»é²
- å®
é
䟿ç»é²
- 泚æç»é²
çµ±äžèšèªã¯éãããã³ã³ããã¹ãã«å±ããŸãã äžèšã®ããã¥ã¡ã³ãã®ãã¡ã€ã³ã¯ãæ¿èªã·ã¹ãã ãã§ãã ã¹ã¿ãŒãã¢ããã«ãã¡ã€ã³ãå²ãåœãŠãŠã¿ãŸãããã
ããããå§ããåã«ããã¡ã€ã³ãšã¯äœããéãããã³ã³ããã¹ããšã¯äœãã«ã€ããŠãå°ãçšèªãèŠãŠã¿ãŸãããã
ãã¡ã€ã³ã¯ãç¹å®ã®åé¡ã解決ããå®éã®ããžãã¹æ§é ã®è¡šçŸã§ãã
äŸïŒç©æµã·ã¹ãã ãæ¯æãã·ã¹ãã ãæ¿èªã·ã¹ãã ãæ³šæç®¡çã·ã¹ãã ã
ãã¡ã€ã³ã¯ãããå°ããªæ§é ãèšè¿°ãããµããã¡ã€ã³ã«åå²ãããŸããããšãã°ã泚æã®ãã¹ã±ãããã«ãŒããæ§ç¯ããããã®ã·ã¹ãã ã§ãã
åãã¡ã€ã³ã®è²¬ä»»ç¯å²ã¯éãããŠããŸã-æ©èœãå¶éãããŠããŸãã
å¢çã®ããã³ã³ããã¹ã-ãã¡ã€ã³ãæé©ãªãœãªã¥ãŒã·ã§ã³ãåŸãããã«1ã€ã®ã¿ã¹ã¯ã®ã¿ã«éäžã§ããããã«ããäžé£ã®ãã¡ã€ã³å¶éã
ç§ã¯ãã®çšèªããã®ãããªæœè±¡åãšããŠæç€ºãããã§ãã ãã¡ã€ã³ã¯åã§ãã å¶éãããã³ã³ããã¹ãã¯åã§ãã

DDDã®çšèªã§ããã«ãŒãã«ã¯å²ãåœãŠãããŠããŸãã
ã³ã¢ïŒã³ã¢ãã¡ã€ã³ïŒ-ããžãã¹ãæãç¹åŸŽä»ããæãéèŠãªãã¡ã€ã³ã
ãããã£ãŠããããžã§ã¯ãã®ãã¡ã€ã³ã4å¹ã®ã«ã¡ãš1å¹ã®ããºããïŒ
ãããã§ãªã¢ã§åã ïŒ ãããã¡ãªã¢ã¹ïŒ
ã³ã³ããã¹ã ïŒãããã§ãªã¢ã«é¢é£ãããã¹ãŠã®B2B
ãµããã¡ã€ã³ ïŒ
- æ°ãããããã§ãªã¢ã®ç»é²
- åæãã®è¿œå
- 補åã®å¯çšæ§ã®ã¹ããŒã¿ã¹ãæŽæ°ãã
ã¯ã©ã€ã¢ã³ããšé£æºãã ïŒã¯ã©ã€ã¢ã³ãïŒ
ã³ã³ããã¹ã ïŒB2Cããã¶ã®é¡§å®¢ãšã®ä»äºã«é¢é£ãããã¹ãŠ
ãµããã¡ã€ã³ ïŒ
- åæããèŠã
- æ
å ±è³æ
å®
é
æ¥è
ãšé£æºãã ïŒé
éã·ã¹ãã ïŒ
ã³ã³ããã¹ã ïŒb2eãå®
é
䟿æ¥è
ãšã®é£æºã«é¢é£ãããã¹ãŠ
ãµããã¡ã€ã³ ïŒ
- å®
é
䟿ç»é²
- ã¿ã¹ã¯ã®å²ãåœãŠ
- å®
é
æ¥è
ãç²åŸããè³éã®åŒãåºãã®ç³è«ã®ç»é²ã
泚æã·ã¹ãã
ã³ã³ããã¹ã ïŒã«ãŒãã«ã ãã¹ãŠã®åã
ã®ãã¡ã€ã³ã調æŽããŠã泚æã®åãåããããŠãŒã¶ãŒãžã®ãã¶ã®é
éãŸã§ã®å®å
šãªãµã€ã¯ã«ãæäŸã§ããŸãã ããã©ãŒããŒã§ã¯ãããŸããããææ®è
ã®åœ¹å²ãæãããŸãã
ãµããã¡ã€ã³ ïŒ
- 泚æåä»
- 泚æå·è¡
- 泚æç¶æ³ã®è¿œè·¡
決æžã·ã¹ãã ïŒè«æ±ïŒ
ã³ã³ããã¹ã ïŒãã¹ãŠã®éèååŒãå«ãŸããŸãã åŠçã»ã³ã¿ãŒãšã®å¯Ÿè©±ãæäŸããŸãã
ãµããã¡ã€ã³ ïŒ
- 泚æã®ããã®ãéãåãå
¥ãã
- è¡ãããä»äºã®ããã«å®
é
䟿æ¥è
ã«ãéãäžãã
çµ±èšã·ã¹ãã
ã³ã³ããã¹ã ïŒåææ
å ±ã®åéãšåŠçïŒçºè¡ã§ã¯ãªãïŒã
ãµããã¡ã€ã³ ïŒ
- è³éã«é¢ããçµ±èš
- ã¢ããªã±ãŒã·ã§ã³çµ±èš
管çã·ã¹ãã ïŒç®¡çããã«ïŒ
ã³ã³ããã¹ã ïŒåææ
å ±ã®çºè¡ã ç®¡çæ±ºå®ã®ããŒã«ãããã
- åéãããçµ±èšã«åºã¥ãåæ
- å®
é
æ¥è
ãžã®æ¯æãã®äºå調æŽ
ãã¡ã€ã³ã«åºã¥ããŠãããããããã³ã°ããŸãããã
ãã¡ã€ã³ãããïŒã³ã³ããã¹ããããïŒã¯ãåã
ã®ãã¡ã€ã³éã®é¢ä¿ãèšè¿°ããããšãã§ããã°ã©ãã£ã«ã«ããŒã«ã§ãã

ãããã«ã¯ããã¡ã€ã³éã®ãªã³ã¯ã衚瀺ãããŸãã ãã®ãããã¯éåžžã«è¡šé¢çã§ããããµããžã§ã¯ããšãªã¢ã¯ããçè§£ãããŠããŸããã ããã¯æåã®ã¹ã±ããã§ãããæžãçŽããŠæåŸ
ãããçµæãåŸãããšãã§ããŸãã
ãããäžã®æãéèŠãªããšã¯ããã¡ã€ã³éã®æ¥ç¶ã衚瀺ãããããšã§ãã ãã®ãããªæ§é ã¯ããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã«éåžžã«é©ããŠããŸãã
ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®äž»ãªåçïŒåŒ±ãæ¥ç¶æ§ãšåŒ·ãä»çã
ãã®ååã¯ãSam Newman- The Creation of Microservicesã®æ¬ã«èšèŒãããŠããŸããããã¯ããã®èšäºã§èª¬æããã¢ãããŒãã®å®çšåãå§ããããã«èªãå¿
èŠã®ãã2çªç®ã®æ¬ã§ãã æå³ïŒãã¡ã€ã³ã¯ç·©ããã«æ¥ç¶ãããŠããå¿
èŠããããŸãããå
éšçã«å¯æ¥ã«ãªã³ã¯ãããŠããå¿
èŠããããŸãã
ãããã®çšèªã®ç¿»èš³ã¯ããã·ã¢ã®å
¬åŒç¿»èš³ããåããããã®ã§ãããããããäŒéãããæå³ãã»ãšãã©åæ ããŠããªãã å
ã®çšèªã§ã¯ãäœçµåïŒçµåæ§ãçµåãã°ãªãããå
±åœ¹ïŒãé«åéæ§ïŒçµåæ§ã匷床ïŒã§ãã
ãã¡ã€ã³å
±æã®å®è£
ãã©ã¯ãã£ã¹
å人çãªçµéšãã€ãŸãæ
å ±ã«åºã¥ããäžé£ã®æ±ºå®ãå
±æããããšæããŸãã ãããã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããããšããå§ãããŸããã ããããã©ãããå§ããã°ãããããããªãå Žåããããã¯è¯ãéžæãããããŸããã å人çãªçµéšã«ãããããŒã«ãããã¯ããã«ããŒãºã«åãããŠèª¿æŽãããŸãã
ç§ãã¡ãå°ããäž»ãªååïŒ
- ãœãªã¥ãŒã·ã§ã³ã®ã·ã³ãã«ãã åçŽãªè€éãªãã®ã§ã¯ãªããè€éãªãã®ãåçŽã«ããŸãã
- å®çšäž»çŸ©ã åžžã«ç¶æ³ã確èªããå¿
èŠããããæ¢åã®ãœãªã¥ãŒã·ã§ã³ããªãå Žåã¯æ°ãããœãªã¥ãŒã·ã§ã³ãéçºããŸãã ãã¹ãŠãé¡ååããããšããŸãããç¬æãé¿ããŸãã
- CodeïŒ=ããã¥ã¡ã³ãã ã³ãŒãã¯ãã·ã³ã®æç€ºãããã¥ã¡ã³ãã¯äººã®æç€ºã§ãã ããããæ··åããŠæ¬¡ã
ã«é
ãå¿
èŠã¯ãããŸããã
- åºã
ãã¡ã€ã³ãå®è£
ããæ¹æ³ã¯ïŒ
ãã¡ã€ã³ãåå¥ã®ãã€ã¯ããµãŒãã¹ãšããŠéžæãããšéåžžã«äŸ¿å©ã§ãã
ãã€ã¯ããµãŒãã¹ã¯ã1ã€ã®ãã¡ã€ã³ã®ããžãã¯ãå®è£
ããå¥åã®ã¢ããªã±ãŒã·ã§ã³ã§ãã
DDDéçºã§ã¯ããã€ã¯ããµãŒãã¹ãå¥ã®ã¢ããªã±ãŒã·ã§ã³ã«å²ãåœãŠãååã¯ãã³ã³ããã¹ããå¶éãããŸãã ããã¯ããµãŒãã¹ã®åé¢ã®æè¡ååãç¡å¹ã«ãããã®ã§ã¯ãããŸããïŒããã髿§èœã確ä¿ããå¿
èŠãããããã§ããå ŽåïŒã ããããæèäžã®ååã¯æ¯é
çã§ææåããããŸãã
ãã¡ã€ã³éã®é¢ä¿ã匷調ããã«ã¯ïŒ
ãã¡ã€ã³éã®é¢ä¿ã¯åžžã«APIã§ãã RESTful json apiãgRPCãAMPQã䜿çšã§ããŸãã ãã®èšäºã®ãã¬ãŒã ã¯ãŒã¯å
ã§ã¯ããããããã³ã«ãå¥ã®ãããã³ã«ãšæ¯èŒããããšã¯ãããããããã®å©ç¹ã𿬠ç¹ã匷調ããŸãããããããã«ç¬èªã®å¿çšåéããããŸãã ããã§ããäžè¬çãªæšå¥šäºé
ã«ã€ããŠèª¬æããŸãããã
ãããã³ã«ãæè»ã«éžæãããã®å®è£
ã®åäžæ§ã峿 Œã«ããŸãã
ãã¡ã€ã³ã®ãã¢ããšã«åå¥ã«ãããã³ã«ãéžæããã©ãã§ãhttpã䜿çšããããšããªãã§ãã ãããéåæãã¥ãŒãå¿
èŠã«ãªãå ŽåããããAMPQã®å©ç¹ãæããã«ãªããŸãã ã©ãã«ã§ãRESTfulãããããããã®æ©äŒãç¡èŠããªãã§ãã ããã
äžæ¹ãRESTful jsonãå®è£
ããå Žåã¯ã1ã€ã®ããŒã¿æ§é æšæºã䜿çšããŸãã jsonapiãopenapiãªã©ã®æºåãã§ããŠããŸãã äœããã®çç±ã§æ¢è£œã®ââãœãªã¥ãŒã·ã§ã³ãããªãã«åãããããªããããªãã®æšæºãéçºã§ãããšæãããããããèšè¿°ããŠäœ¿çšããŠãã ããã ããããã©ãã§ãããã䜿çšãããåç©åãã®åºæºãè²ãŠãªãã§ãã ããã æšæºã«ã€ããŠäœãç¥ããªãå€éšã·ã¹ãã ãšéä¿¡ããå¿
èŠãããå Žåã¯ããã€ã¯ããµãŒãã¹ã¢ããã¿ãèšè¿°ããŸãã

ãµããã¡ã€ã³ãå®è£
ããæ¹æ³ã¯ïŒ
ãã€ã¯ããµãŒãã¹å
ã®åå¥ã®ã¢ãžã¥ãŒã«ãšããŠã
ã¢ãžã¥ãŒã«ã¯ãåäžã®ãã€ã¯ããµãŒãã¹å
ã®å¥ã®ããŒã ã¹ããŒã¹ïŒããŒã ã¹ããŒã¹ïŒã«ããžãã¯ãé
眮ããããšã«ããããµããã¡ã€ã³ã®å®è£
ã§ãã
ããã¯ãã¹ãŠã©ã®ããã«èŠããŸããïŒ äŸãèŠãŠã¿ãŸãããã èŠããŠããããã«ãé
ä¿¡ã·ã¹ãã ãã¡ã€ã³ããããŸãããã®ãã¡ã€ã³ã«ã¯3ã€ã®ãµããã¡ã€ã³ããããŸãã
- å®
é
䟿ç»é²
- ã¿ã¹ã¯ã®çºè¡ïŒã¿ã¹ã¯ïŒ
- ã¯ãŒãªãšãç²åŸããè³éã®åŒãåºãã®ç³è«ã®ç»é²ïŒåŒãåºãïŒ
- ãã€ã¯ããµãŒãã¹ãæ©èœããŠããããšã確èªãããè£å©çãªãæè¡çãªããŒã«ïŒhealt_checkerïŒ
ããããã¹ãŠãã©ã«ããŒæ§é ã®åœ¢ã§æ³åããŠãã ããã
$ tree --dirsfirst delivery_system delivery_system âââ app/ â âââ health_checker/ â â âââ endpoints.rb â âââ registrations/ â â âââ entities/ â â âââ forms/ â â âââ repositories/ â â âââ interactor/ â â âââ services/ â â âââ validations/ â â âââ endpoints.rb â â âââ helpers.rb â âââ tasks â â âââ entities/ â â âââ queries/ â â âââ repositories/ â â âââ endpoints.rb â â âââ helpers.rb â âââ withdrawals â âââ entities/ â âââ forms/ â âââ repositories/ â âââ interactor/ â âââ services/ â âââ validations/ â âââ endpoints.rb â âââ helpers.rb âââ config/ âââ db/ âââ docs/ âââ lib/ â âââ schemas/ â âââ values/ âââ public âââ specs âââ config.ru âââ Gemfile âââ Gemfile.lock âââ Rakefile âââ README.md
apps/
ãã£ã¬ã¯ããªã®åãã©ã«ãã¯ã1ã€ãŸãã¯å¥ã®ãµããã¡ã€ã³ãå®è£
ããŸããåãã¡ã€ã³å
ã«forms
ã entities
ã forms
ã services
ãªã©ãããŸããŸãªãã¿ãŒã³ãããservices
ãé©çšããããã¿ãŒã³ã«ã€ããŠã¯ãä»åŸã®èšäºã§è©³ãã説æããŸãã
ãã®ãããªåãã¿ãŒã³ã¯ã察å¿ããããŒã ã¹ããŒã¹ïŒããŒã ã¹ããŒã¹ïŒã«å®è£
ãããŸãã ããšãã°ãå®
é
䟿æ¥è
ãžã®æ¯æãçšã®ã¢ããªã±ãŒã·ã§ã³ãäœæããããã®ãã©ãŒã ïŒ
module Withdrawal
ãµããã¡ã€ã³éã®éä¿¡ãå®è£
ããæ¹æ³ã¯ïŒ
ç¹å®ã®äŸãèŠãŠã¿ãŸãããã å®
é
䟿ã®ã¢ã«ãŠã³ãïŒ Registrations::Entities::Account
ãŸãã Registrations
ãµããã¡ã€ã³ãæããŸã-ãã®ãã¡ã€ã³ã¯ç»é²ããã»ã¹ã§ã¯ãªããããžãã¹ããã¥ã¡ã³ãã«ç€ºãããŠããããã«ãã¢ã«ãŠã³ãããŒãã«ãšç»é²ç°¿ãšèŠãªãããããã§ãã
ãã®ã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹ãã2ã€ã®ããã»ã¹ãå®è¡ãããŠããŸãã
- ã¢ã«ãŠã³ããäœæããïŒç»é²ïŒ
- å®
é
æ¥è
ãç²åŸããè³éã®åŒãåºãã®ç³è«ã®äœæïŒWihtdrawalïŒ
ã芧ã®ãšãããããã2ã€ã®ããã»ã¹ã¯ç°ãªããµããã¡ã€ã³-ç»é²ãšWihtdrawalã«å±ããŸãã
module Registrations module Serivices class CreateAccount def call account = Entities::Account.new end end end end module Withdrwals module Serivices class CreateOrder def call account = Registrations::Entities::Account.new end end end end
æåã®ã±ãŒã¹ã§ã¯ãã¯ã©ã¹ãžã®åŒã³åºãã¯Entities::Account
ãžã®åŒã³åºããéããŠå®è£
ãããŸãã 2çªç®ã®ã±ãŒã¹ã§ã¯ã Registrations::Entities::Account
ãžã®æç€ºçãªåŒã³åºããéããŠã ã€ãŸã ãµããã¡ã€ã³ãæç€ºçã«æå®ãããšãã¯ã©ã¹ã¯å¥ã®ãµããã¡ã€ã³ããã®ãã®ã§ãããããæ¥ç¶ãæç¢ºã«ç€ºããŸãã
ã¯ã©ã¹ããµããã¡ã€ã³ã®ãããã«ãæç€ºçã«é©çšãããªãå Žåããããlib/
ãã©ã«ããŒã«ç§»åããããšã¯çã«ããªã£ãŠããŸãã ååãšããŠããããã¯ãValueObjectããã¿ãŒã³ãå®è£
ããã¯ã©ã¹ã§ãã ãã®ãã¿ãŒã³ã«ã€ããŠã¯ã次ã®ããããã®èšäºã§è©³ãã説æããŸãã
ã¢ãã«ã«ããå®è£
ã
ãšãªãã¯ã»ãšãŽã¡ã³ã¹ãåŒçšããã«ã¯ïŒ
ããã°ã©ã ã®ã¢ãŒããã¯ãã£ããŸãã¯å°ãªããšããã®äžå¿éšåããã¡ã€ã³ã¢ãã«ã®æ§é ã«å¯Ÿå¿ããŠããªãå Žåããã®ãããªã¢ãã«ã¯å®éã«ã¯åœ¹ã«ç«ããªãã®ã§ãããã°ã©ã ã®æ£ããåäœãåé¡ã«ãªããŸãã åæã«ããœãããŠã§ã¢ã¢ãŒããã¯ãã£ã®ã¢ãã«ãšæ©èœã®éã®è€éãããé¢ä¿ã¯çè§£ããã®ãé£ãããå®éã«ã¯ãã¢ãŒããã¯ãã£ã®å€æŽã«å¿ããŠç¶æããããšã¯å°é£ã§ãã
ãã®èšäºã®åé ã§ãã§ã«åŒçšããåªããã¢ãã«ã®äŸ-å°åœ¢å³ãæãåºããŠã¿ãŸãããã ç§ãã¡ã®ç®æšã¯ã2ã€ã®éèœéã®è·é¢ããã°ããèŠã€ããããšãã§ããããã«ããããšã§ãã éœåžéã®2ã€ã®ãã€ã³ãã瀺ãåç
§ããŒãã«ã䜿çšã§ããŸãã ãããŠãã«ãŒãã䜿çšã§ããŸãã ãããšããã®äž¡æ¹ã§ãã»ãŒåãæéã«åãçµæãåŸãããŸãã ãããããããã¯ããã³ã³ãã¯ãã§ãäž»é¡é åãããæ£ç¢ºã«è¡šç€ºããããæ®éçã§ãã ã¢ãã«ãšããŠã®å°å³ã¯éåžžã«è¡šçŸåè±ãã§ãã ãããŠããã®ã¿ã¹ã¯ã®ãã¬ãŒã ã¯ãŒã¯å
ã§ãããèæ
®ãããšããããåæ ããé åèªäœãããå°å³äžã®è·é¢ã枬å®ããæ¹ã䟿å©ã§ãã ãµããžã§ã¯ãé åãåæ ããã¢ãã«ã¯ãäžéšã®ããããã£ã§ãããäžåãããšãã§ããŸãã æ¬åœã«çŽ æŽãããã§ãã
ã¢ãã«ã®å®è£
ã¯ãåžžã«äºæž¬äžå¯èœãªçµæãââ䌎ãåµé çãªããã»ã¹ã§ãã ã³ãŒãã®å質ã¯ãããã©ãŒãã³ã¹ãè€éãã§ã¯ãªããã·ã³ãã«ããšè¡šçŸåã§ãã çµ¶ãéãªããªãã¡ã¯ã¿ãªã³ã°ãéããŠæ¹åããæè»æ§ãé«ããäžèŠãªãã®ããã¹ãŠã«ããããŸãã ã¢ãã«ã®ããžãã¹ããžãã¯ãæ
åœããã¬ã€ã€ãŒããæè¡çãªå®è£
ãå¿
èŠãªã¬ã€ã€ãŒããåé¢ããŸãã ãããã©ããã£ãŠç®¡çãããã«ã€ããŠã¯ãåŸã§èª¬æããŸãã
ã€ã³ã¹ãã¬ãŒã·ã§ã³ã®æº