ã·ã¹ãã éçºã®ç¾å ´ã«ããã¦è¤éãªãã¸ãã¹è¦ä»¶ãæ´çãã夿´ã«å¼·ãã³ã¼ããæ¸ãããã®ææ³ã¨ãã¦ããã¡ã¤ã³é§åè¨è¨ï¼DDDï¼ããæ³¨ç®ããã¦ãã¾ãããããããã®æ¦å¿µã®æ½è±¡åº¦ã®é«ãããã
ã»ãã¡ã¤ã³é§åè¨è¨ãã©ã®ãããªãã®ãªã®ããå
·ä½çã«ããããªãâ¦ã
ã»æ¦å¿µã¯ç¥ã£ã¦ããããå®éã«ã©ãã³ã¼ãã«è½ã¨ãè¾¼ãã®ãå®è£
æé ãç¥ãããâ¦ã
ã¨æ©ã¿ãå°å ¥ã«äºã®è¶³ãè¸ãã§ããã¨ã³ã¸ãã¢ã®æ¹ã¯å¤ãã®ã§ã¯ãªãã§ããããã
ããã§ãã®è¨äºã§ã¯ã
ã»ãã¡ã¤ã³é§åè¨è¨ï¼DDDï¼ã®åºæ¬çãªæ¦å¿µã¨ã¡ãªãã
ã»ç¾å ´ã§ä½¿ãããå°éç¨èªï¼ã¦ããã¿ã¹è¨èªããã¡ã¤ã³ã¢ãã«ãªã©ï¼ã®è§£èª¬
ã»ãã¡ã¤ã³é§åè¨è¨ã®å
·ä½çãªå®è£
æé ã®ä¾
ã«ã¤ãã¦ããããããã解説ãã¾ãã
ï¼¼æåããåç»ã§å¦ã³ããããªãã¸ï¼
Udemyã§è¬åº§ãæ¢ã ï¼INDEX
- ãã¡ã¤ã³é§åè¨è¨ï¼DDDï¼ã¨ã¯ã©ããªèãæ¹ãæ¦å¿µï¼
- ãã¡ã¤ã³é§åè¨è¨ãå¿ è¦ãªçç±
- ãã¡ã¤ã³é§åè¨è¨ã«é¢ããç¨èªã¨ãã®æå³
- ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ããã¡ãªãã
- ãã¡ã¤ã³é§åè¨è¨ãå®è£ ããæé
- ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ããéã®æ³¨æç¹
- ãã¡ã¤ã³é§åè¨è¨ã®ããããã®å¦ç¿æ¹æ³
- ãã¡ã¤ã³é§åè¨è¨ãå¹ççã«å¦ç¿ãã¦å®è£ ãã¦ã¿ããï¼
ãã¡ã¤ã³é§åè¨è¨ï¼DDDï¼ã¨ã¯ã©ããªèãæ¹ãæ¦å¿µï¼
ãã¡ã¤ã³é§åè¨è¨ï¼Domain-Driven Designï¼DDDï¼ã¨ã¯ãã·ã¹ãã ã®ãæè¡çãªé½åãã§ã¯ãªãã解決ãããããã¸ãã¹ã®èª²é¡ï¼ãã¡ã¤ã³ï¼ããä¸å¿ã«ãã¦è¨è¨ãè¡ãè¨è¨ææ³ã®ãã¨ã§ãã
ããã§ããããã¡ã¤ã³ãã¨ã¯ã対象ã¨ãªãã·ã¹ãã ãæ±ãæ¥åãæ´»åã®é åãã®ãã®ãæãã¾ãã
ä¾ãã°ããããã·ã§ããï¼ECãµã¤ãï¼ã§ããã°ã注æããå¨åº«ç®¡çããä¼å¡ç®¡çãã¨ãã£ãæ¥åæ´»åã®ä¸ã¤ã²ã¨ã¤ããã¡ã¤ã³ã«å«ã¾ãã¾ãã

徿¥ã®éçºææ³ã¯ããã¼ã¿ãã¼ã¹ã®æ§é ãæè¡çãªå¶ç´ãåªå ãããã¡ã§ããã
ãããããã¡ã¤ã³é§åè¨è¨ã§ã¯ããã¸ãã¹ã®ã«ã¼ã«ãå°éç¥èããã³ã¼ãã«å¿ å®ã«åæ ããããã¨ãæåªå ã¨ãã¾ãã
ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ãããã¨ã§ãè¤éåãããã¸ãã¹ãã¼ãºã«ç確ã«å¿ããæ¥åã®å¤åã«ãæè»ã«å¯¾å¿ã§ããã·ã¹ãã ãæ§ç¯ãããã¨ãå¯è½ã§ãã
ã
ï¼¼æåããåç»ã§å¦ã³ããããªãã¸ï¼
Udemyã§è¬åº§ãæ¢ã ï¼ãã¡ã¤ã³é§åè¨è¨ãå¿ è¦ãªçç±
ã½ããã¦ã§ã¢éçºã§ã¯ãã·ã¹ãã ã®è¤éåã仿§å¤æ´ã«ããã³ã¼ãç ´æã»ä¸å ·åã¨ãã£ã課é¡ãå¢ãã¦ãã¾ãã
ãã¡ã¤ã³é§åè¨è¨ã¯ãè¤éãªãã¸ãã¹ãã¸ãã¯ã«å¯¾å¿ããããããåé¡ã解決ããææ³ã¨ãã¦éè¦ã§ãã
å¸å ´ã®å¤åã«ä¼´ãé »ç¹ãªæ©è½æ¹ä¿®ã«å¯¾å¿ããããã夿´ã«å¼·ãå£ãã«ãããã¡ã¤ã³é§åè¨è¨ã注ç®ããã¦ãã¾ãã
ããã«ãéçºè ã¨ãã¸ãã¹æ å½è ãå ±éè¨èªã§ææçéã§ããç¹ãã大ããªã¡ãªããã§ãã
å ±éèªèãæã£ã¦ããã¸ã§ã¯ããé²ãããã¨ã§ãã³ãã¥ãã±ã¼ã·ã§ã³ã®é½é½¬ãæ¸ããããã¸ãã¹ã®æé·ãæ¯ããDXï¼ãã¸ã¿ã«ãã©ã³ã¹ãã©ã¼ã¡ã¼ã·ã§ã³ï¼æ¨é²ã®åå°ã«ããªãã¨ãã¦æ³¨ç®ããã¦ãã¾ãã
å®è·µãã¡ã¤ã³é§åè¨è¨(DDD) - å¤ãªãã¸ã§ã¯ãã§ä½ãå ç¢ãªãã¡ã¤ã³ã¢ããªã³ã° - ãã°ãé²ã3ã¤ã®ååã¨å®è£ æ¹æ³

è¨è¨ã¬ãã«ã§ãã°ãé²ããªãã¸ã§ã¯ãæåè¨è¨ ï½åå®å ¨æ§ç¢ºä¿ã¨äºæããªãç¶æ 夿´ã®å®å ¨é²æ¢ï½
ï¼¼ç¡æã§ãã¬ãã¥ã¼ããã§ãã¯ï¼ï¼
è¬åº§ãè¦ã¦ã¿ããã¡ã¤ã³é§åè¨è¨ã«é¢ããç¨èªã¨ãã®æå³
ããã§ã¯ããã¡ã¤ã³é§åè¨è¨ã®çè§£ã«æ¬ ãããªãåºæ¬ç¨èªãæ´çãã¾ãã
- ãã¡ã¤ã³
- ãã¡ã¤ã³ã¢ãã«
- ã¦ããã¿ã¹è¨èª
- ã¨ã³ãã£ãã£
- ããªã¥ã¼ãªãã¸ã§ã¯ãï¼å¤ãªãã¸ã§ã¯ãï¼
- ã¢ã°ãªã²ã¼ãï¼éç´ï¼
- ãªãã¸ããª
- å¢çã¥ããããã³ã³ããã¹ã
ãã¡ã¤ã³
ãã¡ã¤ã³ã¨ã¯ã対象ã¨ãªãæ¥åã®é åã®ãã¨ã§ãã
ä¾ãã°ç©æµã·ã¹ãã ãªããå ¥åº«ã»åºåº«ã»é éã¨ãã£ãç©æµæ¥åãã®ãã®ããã¡ã¤ã³ã«è©²å½ãã¾ãã
ã·ã¹ãã é½åã§ã¯ãªããç¾å ´ã®ä»äºã®åä½ã§æãããã¨ããã¤ã³ãã§ãã

ãã¡ã¤ã³ã¢ãã«
ãã¡ã¤ã³ã¢ãã«ã¯ãç¹å®ã®æ¥åã«ã¼ã«ãä»çµã¿ãæ½åºãã¦ãæ¦å¿µå³ãªã©ã®ã¢ãã«ã¨ãã¦è¡¨ç¾ãããã®ã§ãã
ã¦ããã¿ã¹è¨èªå士ã®é¢ä¿æ§ãããã¼ã¿ã®æµããå¯è¦åãããæ¥åã®å°å³ãã®ãããªå½¹å²ãæããã¾ãã
ã¦ããã¿ã¹è¨èª
ã¦ããã¿ã¹è¨èªã¯ãéçºè ã¨ãã¸ãã¹æ å½è ãå ±éãã¦ä½¿ç¨ããè¨èã®ãã¨ã§ãã
åãæ¦å¿µãå¥ã®å¼ã³æ¹ã§å¼ã°ããç¨èªãçµ±ä¸ãã¾ããå ±éããè¨èã使ããã¨ã§ã誤èªãèªèãã¹ã«ããææ»ããé²ãã¾ãã

ã¨ã³ãã£ãã£
ã¨ã³ãã£ãã£ã¯ãIDãªã©ã®ä¸æã®èå¥åãæã¡ãããã«ãã£ã¦åºå¥ããããªãã¸ã§ã¯ãã§ãã
ä¾ãã°ãä¼å¡ãã¯ãã¡ã¼ã«ã¢ãã¬ã¹ãå¤ãã£ã¦ãIDãåããªãåä¸äººç©ã¨ãã¦æ±ãã¾ãã屿§ããããå䏿§ããéè¦ãã¾ãã

ããªã¥ã¼ãªãã¸ã§ã¯ãï¼å¤ãªãã¸ã§ã¯ãï¼
ããªã¥ã¼ãªãã¸ã§ã¯ãã¯ãèå¥åãæããªãä¸å¤ï¼ã¤ãã¥ã¼ã¿ãã«ï¼ã®ãªãã¸ã§ã¯ãã§ãã
éé¡ãã¡ã¼ã«ã¢ãã¬ã¹ãªã©ã該å½ããåãå¤ãªãåä¸ã¨ã¿ãªãã¾ããä¸å¤ã§ããããå¯ä½ç¨ããªãããã¸ãã¯ãå®å ¨ã«ãªãã¾ãã

ã¢ã°ãªã²ã¼ãï¼éç´ï¼
ã¢ã°ãªã²ã¼ãã¯ãé¢é£ãããªãã¸ã§ã¯ãã®éã¾ããã¾ã¨ãããã®ã§ãã
å¤é¨ããã®ã¢ã¯ã»ã¹ã¯å¿ ãä¸å¿ã¨ãªããéç´ã«ã¼ãããä»ãã¦è¡ããå é¨ã®æ´åæ§ãä¿ã¡ã¾ãããæ³¨æãã¨ã注ææç´°ãã®ãããªé¢ä¿ã代表çã§ãã
ãªãã¸ããª
ãªãã¸ããªã¯ãã¨ã³ãã£ãã£ãæ°¸ç¶åï¼ä¿åã»åå¾ï¼ããä»çµã¿ã§ãã
ãã¡ã¤ã³ã¢ãã«ã¨ãã¼ã¿ãã¼ã¹æ¥ç¶ã®ã³ã¼ããåé¢ããããæè»ã§ãã¹ãããããã¢ã¼ããã¯ãã£ãå®ç¾ãã¾ãã
å¢çã¥ããããã³ã³ããã¹ã
å¢çã¥ããããã³ã³ããã¹ãã¯ããã¸ãã¹ãã¡ã¤ã³ãæå³ãå½¹å²ãã¨ã«åããã¾ã¨ã¾ãã§ãã
ä¾ãã°ãååãã¨ããè¨èã§ãã販売ã¨å¨åº«ã§ã¯æå³ãç°ãªãå ´åãããã¾ããã³ã³ããã¹ãå ã§ã®ã¿è¨èã®æå³ãçµ±ä¸ããæ··ä¹±ãé²ãã¾ãã
ã
ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ããã¡ãªãã
ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ãã主ãªã¡ãªããã¯ãæ¬¡ã«æãã3ã¤ã§ããã·ã¹ãã ã®è¦æ¨¡ã大ãããªããæ¥åé åãè¤éã«ãªãã»ã©ããããã®æ©æµã¯å¤§ãããªãã¾ãã
夿´ã«å¼·ããªãä¿å®æ§ãé«ã¾ã
ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ãããã¨ã§ãã·ã¹ãã ã®ä¿å®æ§ãå¤§å¹ ã«åä¸ãããã¨ãè¦è¾¼ã¾ãã¾ãã
æ¥åãã¨ã«ãã¸ãã¯ãæ´çããã¦ãããããæ©è½å¤æ´ã追å ãå¿ è¦ã«ãªã£ãéããä¿®æ£ã®å½±é¿ãæå°éã«æãããã¾ãã
çµæã¨ãã¦ãå¤åã®æ¿ãããã¸ãã¹ç°å¢ã§ãæè»ãã¤å®å ¨ã«æ¹ä¿®ãç¶ãããã¨ãå¯è½ã«ãªãã¾ãã
ã³ã¼ãã¨ãã¸ãã¹ãã¸ãã¯ã®æ´åæ§ãä¿ããã
ãã¡ã¤ã³ã¢ãã«ãéãã¦ãã¸ãã¹ãã¸ãã¯ãæç¢ºã«å®ç¾©ããããããå®è£ ã³ã¼ãã¨ã®ä¹é¢ãé²ãã¾ãã
徿¥ã®éçºã§èµ·ããã¡ãªããã¸ãã¯ããã¡ãã¡ã«åæ£ãã¦ãã¾ããåé¡ãæå¶ããæ¥åã«ã¼ã«ã¨ã³ã¼ãã常ã«ä¸è´ããç¶æ ãç¶æã§ãã¾ãã
ã·ã¹ãã å ¨ä½ã®æ§é çãªæ´åæ§ãä¿ãããæå³ããªãæåã®çºçãªã¹ã¯ãæ¸ãããç¹ã¯å¤§ããªã¡ãªããã§ãã
ãã¼ã å ¨ä½ã®ã³ãã¥ãã±ã¼ã·ã§ã³ãåä¸ãã
éçºå´ã¨æ¥åã®å°éå®¶ã§ããã¡ã¤ã³ã¢ãã«ãã¦ããã¿ã¹è¨èªããå ±éè¨èªãã¨ãã¦ä½¿ç¨ãããããèªèã®ãºã¬ã大ããæ¸ãã¾ãã
åæ¹ãåãè¨èã¨å ±éèªèã®ä¸ã§ããã¸ã§ã¯ããé²ãããããããã³ãã¥ãã±ã¼ã·ã§ã³ãåæ»ã«ãªãã®ã§ãã
æ å ±å ±æã®ä¸è¶³ã«ãã仿§ãã¹ãææ»ãã¨ãã£ãåé¡ãèµ·ããã«ãããªãããã¼ã å ¨ä½ã§ã®çç£æ§åä¸ãæå¾ ã§ãã¾ãã
ã
ãã¡ã¤ã³é§åè¨è¨ãå®è£ ããæé
ãã¡ã¤ã³é§åè¨è¨ãå®è£ ããæµããè¦ã¦ããã¾ããããããã§ã¯ããã¦ã¼ã¶ã¼ã®ã¡ã¼ã«ã¢ãã¬ã¹ã夿´ãããã¨ããã·ã³ãã«ãªæ©è½ãä¾ã«ã徿¥ã®éçºææ³ã¨ãã¡ã¤ã³é§åè¨è¨ã®éããå®éã®ã³ã¼ãä¾ï¼Pythonï¼ã§æ¯è¼ããªãã解説ãã¾ãã
ã³ã¼ãä¾ã¯Pythonã§ãããèãæ¹ã¯ä»ã®è¨èªã§ãå ±éã§ãã
- ãã¡ã¤ã³ãçè§£ãã¦ããã¿ã¹è¨èªãå®ç¾©ãã
- ãã¡ã¤ã³ã¢ãã«ãæ§ç¯ãã
- æ¥åã®ãã¸ãã¯ãæ½åºãã
- ã³ã¼ãåãã¦å®è£ ãã
- è¦ç´ãã¨æ¹åãç¶ç¶ãã
ãã¡ã¤ã³ãçè§£ãã¦ããã¿ã¹è¨èªãå®ç¾©ãã
ã¾ãã¯ãã³ã¼ããæ¸ãåã«éçºãã¼ã ã¨æ¥åæ å½è ã®éã§ä½¿ããããè¨èããçµ±ä¸ãã¾ãã
ä¾ãã°ã仿§æ¸ã§ã¯ãä¼å¡ãã¨æ¸ããã¦ããã®ã«ãã³ã¼ãä¸ã§ã¯ User ã ã£ãããä¼è©±ã®ä¸ã§ã¯ãã¢ã«ã¦ã³ããã¨å¼ã°ãã¦ãããããªãã§ããããï¼
ããããè¨èã®æºããã¯ãèªèã®ãºã¬ãçã¿ãã°ã®æ¸©åºã¨ãªãã¾ãã

ãã®ãããå ·ä½çãªã¢ã¯ã·ã§ã³ã¨ãã¦ä»¥ä¸ã®ãããªãç¨èªéãã使ãããã¼ã å ã§è¨èã®å®ç¾©ãåããã¾ãããã
æ¥åã«è©³ããæ å½è ï¼ãã¡ã¤ã³ã¨ãã¹ãã¼ãï¼ãå·»ãè¾¼ã¿ãå®éã®æ¥åããã¼ããã¢ãªã³ã°ããªããé²ãã¾ãã
| æ¥æ¬èªå ï¼ã¦ããã¿ã¹è¨èªï¼ |
è±èªå ï¼ã³ã¼ãä¸ã®å®ç¾©ï¼ |
å®ç¾©ã»ã«ã¼ã« |
|---|---|---|
| ä¼å¡ | Member | ãµã¼ãã¹ãå©ç¨ããç»é²ã¦ã¼ã¶ã¼ |
| ä¼å¡ã¹ãã¼ã¿ã¹ | MemberStatus | ãä»®ç»é²ããæ¬ç»é²ããé伿¸ã¿ãã®ãããããæã¤ |
| ã¡ã¼ã«ã¢ãã¬ã¹å¤æ´ | change_email | ä¼å¡ã¹ãã¼ã¿ã¹ããé伿¸ã¿ãã®å ´åã夿´ã§ããªã |
ã
ãã¡ã¤ã³ã¢ãã«ãæ§ç¯ãã
次ã«ããã¡ã¤ã³ã¨ãã¹ãã¼ãã¨ä¸ç·ã«ãã¦ããã¿ã¹è¨èªã使ã£ã¦ãªãã¸ã§ã¯ãå士ã®é¢ä¿ãæ´çãããã¡ã¤ã³ã¢ãã«ã使ãã¾ãã
ããã§éè¦ãªã®ã¯ãæåãããã¼ã¿ãã¼ã¹ã®ãã¼ãã«è¨è¨ï¼ERå³ï¼ãèããªãããã¨ã§ãã
| 徿¥ã®æèï¼ãã¼ã¿ä¸å¿ï¼ | ãã¡ã¤ã³é§åè¨è¨ã®æèï¼ã¢ãã«ä¸å¿ï¼ |
|---|---|
|
|
ã
ãã¼ã¿ä¸å¿è¨è¨ã§ã¯ããã¸ãã¹ã«ã¼ã«ãã³ã¼ãå ¨ä½ã«æ£ãã°ããä¿®æ£æã®æ¼ããéè¤ãçºçãããããªãã¾ãã
ã¾ãããstatus = 0, 1, 9ãã®ãããªæè¡çãªè¡¨ç¾ãåªå ãããæ¥åã®æå³ãã³ã¼ãããèªã¿åãã«ãããªãåé¡ãããã¾ãã

ãã®ããã«ãããã¼ã¿ã®ä¿åæ¹æ³ãã§ã¯ãªããæ¥åã«ã¼ã«ã¨æ¯ãèããã«çç®ãã¦ã¢ãã«åãã¾ãã
æ¥åã®ãã¸ãã¯ãæ½åºãã
ããããã¡ã¤ã³é§åè¨è¨ã®å®è£ ã«ããã¦æãéè¦ã§ããã徿¥ã®éçºã¨å¤§ããç°ãªãç¹ã§ãã
åã®ã¹ãããã§ä½æãããã¡ã¤ã³ã¢ãã«ãããå®è£ ãã¹ããã¸ãã¹ã«ã¼ã«ãæ´ãåºãã¾ãã
ãã®ã«ã¼ã«ã¯ããã¡ã¤ã³ã¨ãã¹ãã¼ãã¸ã®ãã¢ãªã³ã°ã§ç¢ºèªããæ¥åä¸ã®å¶ç´ã«åºã¥ãã¦ãã¾ãã
ããã§éè¦ãªç¹ã¯ãããã®ã«ã¼ã«ã¯ã©ãã«é ç½®ãã¹ããï¼ããæç¢ºã«ãããã¨ã§ãã
ä¾ãã°ããä¼å¡ã®ã¡ã¼ã«ã¢ãã¬ã¹ã夿´ãããã¨ããæ©è½ã«ã¯ããé伿¸ã¿ã®ä¼å¡ã¯ã¡ã¼ã«ã¢ãã¬ã¹ã夿´ã§ããªããã¨ãããã¸ãã¹ã«ã¼ã«ãå«ã¾ãã¦ãã¾ãã
徿¥ã®éçºã§ã¯ããããã®ã«ã¼ã«ããã©ãã«æ¸ãã¹ããããææ§ã§ãçµæçã«ãã¡ãã¡ã«æ£ãã°ã£ã¦ãã¾ããã¡ã§ããã
ãã¡ã¤ã³é§åè¨è¨ã§ã¯ããä¼å¡ã«é¢ããã«ã¼ã«ãã¯ãä¼å¡ï¼Memberï¼ãèªèº«ãæã¤ã¹ãã¨èãã¾ãã
ã¤ã¾ãããé伿¸ã¿ãªã夿´ä¸å¯ãã¨ããå¤å®ã¯ãMemberã¯ã©ã¹å ã®ã¡ã½ããã«æ¸ãã®ã§ãã
ãã®ããã¸ãã¹ã«ã¼ã«ãé©åãªå ´æã«é ç½®ãããã¨ããèãæ¹ãããã¡ã¤ã³é§åè¨è¨ã®æãéè¦ãªãã¤ã³ãã§ãã
次ã®ã¹ãããã§ãå®éã®ã³ã¼ããè¦ãªããçè§£ãæ·±ãã¾ãããã

ã³ã¼ãåãã¦å®è£ ãã
åè¿°ã®ã¢ããã¼ãã®å®è£ ä¾ããå®éã®Pythonã³ã¼ãã®ä¾ã示ããªããè¦ã¦ããã¾ãããã
ãæªãä¾ã徿¥ã®ãã¼ã¿é§åçãªå®è£ ï¼ãã¡ã¤ã³è²§è¡çï¼
ãã®ãã¿ã¼ã³ã¯ããã¡ã¤ã³è²§è¡çãã¨å¼ã°ããã¢ã³ããã¿ã¼ã³ã§ãã
Memberã¯ã©ã¹ã¯ããã¼ã¿ã ããæã¤å ¥ãç©ãã«ãªã£ã¦ããããã¸ãã¹ãã¸ãã¯ãServiceã¯ã©ã¹ã«æ¼ãåºãã¦ãã¾ãã
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
from dataclasses import dataclass # Memberã¯ã©ã¹ã¯ãã¼ã¿ã®å
¥ãç© @dataclass class Member: id: str email: str status: str # "active" or "withdrawn" # Serviceã¯ã©ã¹ã«ããã¸ãã¹ã«ã¼ã«ããæ¸ããã¦ãã class MemberService: def __init__(self, repository): self.repository = repository def change_email(self, member_id: str, new_email: str) -> None: # ãªãã¸ããªãããã¼ã¿åå¾ member = self.repository.find_by_id(member_id) # âï¼ãã¸ãã¹ã«ã¼ã«ãããã«æ¸ããã¦ãã if member.status == "withdrawn": raise ValueError("é伿¸ã¿ã®ä¼å¡ã¯ã¡ã¼ã«å¤æ´ã§ãã¾ãã") member.email = new_email self.repository.save(member) |
ãã®ç¶æ ã§ã¯ãããå¥ã®ç»é¢ã§ãã¡ã¼ã«å¤æ´æ©è½ãå¿ è¦ã«ãªã£ãå ´åãåãifæããã¡ãã¡ã«ã³ãã¼ï¼ãã¼ã¹ãããå¿ è¦ãããã¾ãã
ãã¸ãã¹ã«ã¼ã«ãã³ã¼ãå ¨ä½ã«æ£ãã°ãã夿´ã«å¼±ãã·ã¹ãã ã«ãªã£ã¦ãã¾ãã¾ãã
ãè¯ãä¾ããã¡ã¤ã³é§åè¨è¨ã«ããå®è£
ãã¸ãã¹ã«ã¼ã«ã Member ã¯ã©ã¹ï¼ã¨ã³ãã£ãã£ï¼ã®ä¸ã«éãè¾¼ãã¾ãã
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class Member: def __init__(self, id: str, email: str, status: str): # ã¢ã³ãã¼ã¹ã³ã¢(_)ã¯ãå¤é¨ããç´æ¥è§¦ããªãã§ãã¨ããåå³ï¼Pythonã®æ
£ç¿ï¼ self._id = id self._email = email self._status = status # âï¼ã¡ã½ããã¨ãã¦ãæ¯ãèãããå®ç¾© def change_email(self, new_email: str) -> None: # ãã¸ãã¹ã«ã¼ã«ãããã«éç´ if self._status == "withdrawn": raise ValueError("é伿¸ã¿ã®ä¼å¡ã¯ã¡ã¼ã«å¤æ´ã§ãã¾ãã") self._email = new_email # ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¹ï¼UseCaseã¨ãå¼ã¶ï¼ class MemberUseCase: def __init__(self, repository): self.repository = repository def change_email(self, member_id: str, new_email: str) -> None: # ãªãã¸ããªçµç±ã§DBããä¼å¡æ
å ±ãåå¾ member = self.repository.find_by_id(member_id) # âï¼ãã¸ãã¹ã«ã¼ã«ã¯Memberã«ä»»ãã member.change_email(new_email) # ãªãã¸ããªçµç±ã§DBã«ä¿å self.repository.save(member) |
ã³ã¼ããæ¸ãããããã¡ã¤ã³ã¨ãã¹ãã¼ãã«ã確èªãã¦ãããã¾ããã³ã¼ããã®ãã®ãè¦ããå¿ è¦ã¯ãªãããããããã«ã¼ã«ã§å®è£ ãã¾ãããã¨ãã説æã§ååã§ãã
ãé伿¸ã¿ã®å¤å®ãããã§åã£ã¦ã¾ããï¼ããæ³å®ãã¦ããªãä¾å¤ã±ã¼ã¹ã¯ããã¾ãããï¼ãã¨ãã£ã対話ãéãã¦ãå®è£ ã¨ãã¸ãã¹ã®æ´åæ§ãä¿ã¡ã¾ãã
ãã®ããã«å®è£ ãããã¨ã§ãã¡ã¼ã«å¤æ´æã«ã¯å¿ ãchange_emailã¡ã½ãããéãä»çµã¿ã«ãªãããã¸ãã¹ã«ã¼ã«ã®é©ç¨æ¼ããé²ãã¾ãã
ä»®ã«ã«ã¼ã«ãå¤ãã£ã¦ããMember ã¯ã©ã¹1ç®æãç´ãã ãã§å ¨ã¦ã®æ©è½ã«é©ç¨ããã¾ãããããã夿´ã«å¼·ããè¨è¨ã®æ¬è³ªã§ãã
è¦ç´ãã¨æ¹åãç¶ç¶ãã
ãã¡ã¤ã³ã¢ãã«ã¯ããã¸ãã¹ã®æé·ã¨ã¨ãã«é²åãç¶ãããã®ã§ããæ°ããªã«ã¼ã«ã追å ãããããç¨èªã®æå³ãå¤ãã£ãããããã¨ã¯ããããèªç¶ãªç¾è±¡ã¨ãããã§ãããã
ä¾ãã°ãéçºãã¼ã å ã§ã®ä¼è©±ã§ä½¿ãè¨èãå¤ãã£ã¦ãããã¨æããããããã¯ã¢ãã«ã¨ã³ã¼ããä¿®æ£ããã¿ã¤ãã³ã°ã§ããè¨èã®ãºã¬ã¯ããã¸ãã¹ã¨ã³ã¼ãã®ä¹é¢ã示ãéè¦ãªè¦åä¿¡å·ã¨è¨ãã¾ãã
ãã®éã¯ãåã³ãã¡ã¤ã³ã¨ãã¹ãã¼ãã¨ã®ãã¼ãã£ã³ã°ãè¨å®ããããã®ç¨èªãç¾å ´ã§ã¯å¥ã®æå³ã§ä½¿ããã¦ãã¾ãããï¼ãã¨ãã£ã確èªãè¡ãã¾ãã
ãã¸ãã¹ã®å¤åã«åããã¦ãã¡ã¤ã³ã¢ãã«ãæ·±ãæ´ç·´ããç¶ããï¼ãªãã¡ã¯ã¿ãªã³ã°ãç¶ããï¼ãã¨ãããã¡ã¤ã³é§åè¨è¨ã®æ¬è³ªçãªã´ã¼ã«ã§ãã
å®ç§ãªã¢ãã«ãæåããä½ããã¨ã§ã¯ãªããç¶ç¶çã«çè§£ãæ·±ãã¦ããããã»ã¹ããã価å¤ãçã¿åºãã¾ãã
ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ããéã®æ³¨æç¹
ãã¡ã¤ã³é§åè¨è¨ãå°å ¥ããéã«ã¯ã以ä¸ã®ã³ã¹ããé©åæ§ãå·éã«è¦æ¥µããå¿ è¦ãããã¾ãã
使ãããªããããã«ãªãã«ã¯å¤ãã®å¦ç¿ã¨çµé¨ãå¿ é
ãã¡ã¤ã³é§åè¨è¨ãå®è£ ã§ããããã«ãªãããã«ã¯ãæ¦å¿µããã¿ã¼ã³ã®ç¥èï¼è¨è¨ç²¾åº¦ï¼ã®çè§£ã ãã§ãªãããããã³ã¼ãã«è½ã¨ãè¾¼ãå®è£ ã¹ãã«ãçµé¨ãä¸å¯æ¬ ã§ãã
ãã®ãããå¦ç¿ã³ã¹ããè¨è¨ã«ãããåæã³ã¹ããé«ããªããã¡ã§ããããã¸ã§ã¯ãã®ç«ã¡ä¸ã段éã§ããã¼ã ã«ç¥è¦ããªãã¾ã¾åä¾ãªãå°å ¥ããã¨ãè¨è¨ã«å¤ãã®æéãè²»ãããããã¸ã§ã¯ãã®é²è¡ãå¤§å¹ ã«é ãããªã¹ã¯ãããã¾ãã
å°è¦æ¨¡ãªããã¸ã§ã¯ãã«ã¯åãã¦ããªã
ãã¡ã¤ã³é§åè¨è¨ã¯è¤éãã«ç«ã¡åããããã®ææ³ã§ãããããCRUDæä½ã ãã§æ¸ããããªå°è¦æ¨¡ã§ç°¡åãªããã¸ã§ã¯ãã«ã¯åãã¾ããã
ã·ã³ãã«ãªæ©è½ã«å¯¾ãã¦ã¯ã©ã¹ã層ãç´°ããåããããã¨ãããã£ã¦æ§é ãè¤éã«ãªããéçºå¹çãè½ã¡ã¦ãã¾ãã¾ãã
ããã¸ã§ã¯ãã®è¦æ¨¡ãå°æ¥çãªè¤éåã®ãªã¹ã¯ãè¦æ¥µããæ¬å½ã«å°å ¥å¹æãå¾ããããã©ããã夿ãã¦æ´»ç¨ãã¦ãããã¨ã大åã§ãã
ã
ãã¡ã¤ã³é§åè¨è¨ã®ããããã®å¦ç¿æ¹æ³
ãã¡ã¤ã³é§åè¨è¨ã¯æ¦å¿µãæ½è±¡çã§ãå®è·µã¾ã§ã®ãã¼ãã«ãé«ãã¨ãããã¾ããããã§ã¯ãããããã®å¦ç¿æ¹æ³ã2ã¤ãç´¹ä»ãã¾ãã
æ¸ç±ãåèæ¸ã使ã£ã¦å¦ç¿ãã
æ¸ç±ã§ããã°ãå°éæ¸ã§ãæ°ååç¨åº¦ã¨æ¯è¼çä½ä¾¡æ ¼ã§è³¼å ¥ã§ããã³ã¹ããæãã¦å¦ç¿ãå§ãããã¨ãã§ãã¾ãã
ãã©ããªãã®ãªã®ã軽ãç¥ããããã¨ããå ¥éã¬ãã«ãããæ¬æ ¼çã«å¦ã³ãã人ã¾ã§å¹ åºã対å¿ãã¦ãããèªåã®ãã¼ã¹ã§èªã¿é²ãããããããç¬å¦ã§ãã£ããæ¦å¿µãçè§£ãããæ¹ãããªãã¡ã¬ã³ã¹ã¨ãã¦æå ã«ç½®ãã¦ããããæ¹ã«ããããã§ãã
Udemyè¬åº§ãæ´»ç¨ãã¦å¹çããå¦ç¿ãã
ããå¹çããåå¼·ããã人ã«ã¯ãåç»å½¢å¼ã§å¦ã¹ãUdemyãªã©ã®ãªã³ã©ã¤ã³è¬åº§ãããããã§ãã
æ¸ç±ã ãã§ã¯ã¤ã¡ã¼ã¸ãã«ãããå®éã®ã³ã¼ãã®æ¸ãæ¹ãããå®è£ æé ãããè¬å¸«ã®ç»é¢ãè¦ãªãããã³ãºãªã³å½¢å¼ã§å¦ç¿ã§ãã¾ãã
âå®éã«æãåãããªããé²ãããããããçè§£ãæ·±ã¾ãããããã¢ããã¼ã·ã§ã³ãç¶æããããç¹ã大ããªã¡ãªããã§ãã
ã
ãã¡ã¤ã³é§åè¨è¨ãå¹ççã«å¦ç¿ãã¦å®è£ ãã¦ã¿ããï¼
ãã¡ã¤ã³é§åè¨è¨ã¯è¤éåãããã¸ãã¹è¦ä»¶ã«èãããã夿´ã«å¼·ãã·ã¹ãã ãæ§ç¯ããããã®å¼·åãªã¢ããã¼ãã§ãã
å°å ¥ã«ã¯å¦ç¿ã³ã¹ãããããã¾ããããã¼ã å ¨ä½ã§ãã¦ããã¿ã¹è¨èªããå ±æãããã¡ã¤ã³ã¢ãã«ã«åºã¥ããå®è£ ãè¡ããã¨ã§ãä¿å®æ§ã®åä¸ãã³ãã¥ãã±ã¼ã·ã§ã³ã®åæ»åã¨ãã£ã大ããªã¡ãªãããå¾ããã¾ãã
ã¾ãã¯å°ããªæ©è½ããå°å ¥ãæ¤è¨ããæ¦å¿µã¨ã³ã¼ãã®æ´åæ§ãä¿ã¤ä½é¨ããã¦ã¿ã¾ãããã
ãç¬å¦ã§ã¯ã¤ã¡ã¼ã¸ãæ¹§ãã«ããããå ·ä½çãªå®è£ æé ããã£ã¨è©³ããç¥ããããã¨æããæ¹ã«ã¯ãUdemyã®åç»è¬åº§ã§å®éã®ã³ã¼ããè¦ãªããå¦ã¶ã®ãããããã§ãã
ãã¡ã¤ã³é§åè¨è¨ãå®è£ ãã¦ã¿ã¦ãã¹ãã«ã¢ããã¨éçºå¹çã®åä¸ã宿ãã¾ãããã
RANKING
人æ°è¨äºã©ã³ãã³ã°

ãåå¿è åãã åºæ¬ã®Linuxã³ãã³ãä¸è¦§ï¼æä½å¥ã«ç´¹ä»

ãåå¿è åããJupyter Notebookã®ä½¿ãæ¹ï¼ã¤ã³ã¹ãã¼ã«æ¹æ³ãã解説

Microsoft Azureèªå®è³æ ¼ãä¸è¦§ã§è§£èª¬ï¼ã¬ãã«å¥ã®é£æåº¦ã»é¸ã³æ¹ã»åå¼·æ¹æ³ã¾ã§ããã

å ¬é鵿巿¹å¼ã¨ã¯ï¼åå¿è ã§ããããå ¬é鵿巿¹å¼ã®åºç¤

Next.jsã¨ã¯ï¼Reactã¨ã®éããã¤ã³ã¹ãã¼ã«ã»åºæ¬æä½ã解説ï¼
RECOMMENDED COURSE
人æ°ã®Udemyè¬åº§
ç¾å½¹ã·ãªã³ã³ãã¬ã¼ã¨ã³ã¸ãã¢ãæããæ¬¡ä¸ä»£ã¤ã³ã¿ã¼ãããWEB3.0 NFT DeFi å ¥éè¬åº§
Google Cloudï¼GCPï¼ã®åºç¤ - å³è§£ã¨å®è·µã§ã¤ã³ãã©ã®åºç¤ãåºãã ã2025å¹´ ææ°çã


ææ°æ å ±ã»ãã£ã³ãã¼ã³æ å ±çºä¿¡ä¸