å®ååºæ¬æ©ããã¡ããšåºããŠãã ããâ
ãããããããâŠå·Šã®ããã«çµãã§ãããããªãã§ãããâŠïŒã
ãäœ¿ãæšãŠã®ã¯ãªãŒã³ã³ãŒããåŠã¶ - å¯èªæ§ãé«ãããè¬çŸ©äž
ããªããžã§ã¯ãæåã®5倧ååSOLID - OCP(Open Closed Principle)ãè¬çŸ©äž
éçºè
ã«ãšã£ãŠå®åãšã¯
ã©ãããæå³ã§ããïŒ ð€
äžäººã§éçºå匷ãããŠãITäŒç€Ÿã«éçºè
ã€ã³ã¿ãŒã³ã«å
¥ã£ãæãæããŸãã
éããå¿ã§éå¶ãããŠããWebãããžã§ã¯ãã«ããã€ãã®æ©èœã远å ããããšã«ãªããŸãããäžäººã§éçºããæã®ããã«çŽ æ©ãéçºããããã«ãäžã€ã®é¢æ°ãã¯ã©ã¹ã«ã³ãŒããéããŠããããã¹ãã³ãŒããå¥ã«æžããŠããŸããã§ãããããããåŸã§å€§éã®ã³ãŒãã¬ãã¥ãŒãåããŠãããå®åã§ã³ãŒããçµãã ãšãã«æ°ã«ãããã®ãå€ããšããããšã骚æããæãã«ãªããŸããã
ãã£ããããªã«å€ããéããŠãããªããŠïŒ
ä»ã¯äŒç€Ÿã§ãããžã§ã¯ããéçºãããšããèŠä»¶ã«åãããŠã³ã³ããŒãã³ãã®è²¬ä»»ãããåé¢ããäž»ãªããžãã¯ã¯ãã¹ãã³ãŒããäœæããŸããããããã°ããœãããŠã§ã¢ãããå®å
šã«éçšïŒç¶æããããšãã§ããä»ã®éçºè
ãã³ãŒããèªãæéãçããªãããã§ãããã®ãããå瀟ã¯è€æ°ã®éçºè
ãå
±åäœæ¥ãè¡ãå¿
èŠãããããµãŒãã¹ã確å®ã«éçšã§ããæç¶å¯èœãªã³ãŒããæžãããšãã§ããåºç€ãéèŠãšèããããŠããŸãã
ããã§ã¯ãå®åã§å¿
èŠãšããéçºè
ã®åºæ¬ã¯äœãããã®ã§ããããããã¡ãããéçºåéã«åã£ããã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãããŸãæ±ãã¹ãã«ãéèŠã§ããããããã¹ãã³ãŒãäœæããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®ããã«æç¶å¯èœãªãœãããŠã§ã¢ãäžç·ã«éçºã§ããããã«å©ããèœåãéèŠã§ãã
å®åã«å¿
é
åºæ¬ãåŠã¶ããã«ðª
硬ãçè«äžå¿ã§ã¯ãªããã³ãŒããšå®ç¿ãäžå¿ãšãªãè¬çŸ©ãè¡ãããŸãã ðšâð»
ããã¹ãã³ãŒããæžãããã®åºæ¬çãªåãæ±ã - ãã¹ãã®ããã«ã¿ã€ããåŠã¶ãè¬çŸ©è³æ
ãäŒç€Ÿãç¥ã£ãŠããã¹ãåºæ¬çãªéçºç¥è - ãã«ãã¹ã¬ãããšãã«ãããã»ã¹ãè¬çŸ©è³æ
SOLIDãäžŠè¡æ§ããã¹ãMockãªã©ã°ãŒã°ã«ããŠã¿ããšãçè«äžå¿+é£ããçšèªã§æžãããæãå€ãã§ãããã®ã¬ãã¹ã³ã§ã¯ããã®æŠå¿µãçè§£ããããããããã«ãé©åãªäŸãšã³ãŒããäžå¿ã«ã¬ãã¹ã³ãè¡ããŸãã
- â
æŠå¿µãçè§£ããããããããã«ãã»ãšãã©ã®ææ¥è³æã¯ã³ãŒãäžå¿ã§æ§æãããŠããŸãã
- â
ãªããžã§ã¯ãæåããã°ã©ãã³ã°ããã¹ãã³ãŒãããœãããŠã§ã¢ã¢ãŒããã¯ãã£ãã¿ãŒã³ã®å Žåã¯ã3ã€ã®ãããžã§ã¯ããéããŠå®è·µãé²ããããšãã§ããŸãã
è¬çŸ©ãèããåŸ
äžæ©é²ãããšãã§ããŸãð©
BeforeïŒAfterããã§ãã¯ããŠãã ããïŒ
ãããã®åºç€ã¯ãå®éã«äŒç€Ÿã§ä»äºãããŠãããšèªç¶ã«èµ·ããããã§ã¯ãããŸãããèªåã®ã³ãŒããæ¹åããã«ã¯ãåžžã«åªåããŠåŠç¿ããæéãå¿
èŠã§ãããã®è¬çŸ©ã¯ãå°æ¥ã®ããªãã®æé·ã®ããã®åºç€ãç¯ãã®ã«åœ¹ç«ã€ãšä¿¡ããŠããŸãã ð
ã«ãªãã¥ã©ã
確èªããŠãã ããïŒ ð
#1.
ããã«äœ¿ã
ã¯ãªãŒã³ã³ãŒããåŠã¶
ã¯ãªãŒã³ã³ãŒãã®äžã§çŽ æ©ãé©çšã§ããå
容ãã³ãŒãäŸãšãšãã«èª¿ã¹ãŸãã
- ããŒãã³ã°ãã³ã¡ã³ãããã©ãŒããã
- 颿°ïŒã¯ã©ã¹
- ãšã©ãŒåŠç
- èªã¿ããããã
#2.
ãªããžã§ã¯ãæå
ããã°ã©ãã³ã°
ã³ã¢ãããµãŒãž
ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®4ã€ã®ç¹æ§ãšéèŠãªæŠå¿µïŒäŸåé¢ä¿ãåé床ãçµå床ãªã©ïŒãã³ãŒãäŸãšãšãã«åŠç¿ããŸãã
- æç¶ãæåããªããžã§ã¯ãæåã颿°åããã°ã©ãã³ã°ã®æä»£çãªæµããšéã
- ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®ããã®éèŠãªæŠå¿µãåŠã¶
- ãªããžã§ã¯ãæåã®5倧ååSOLIDãBefore&Afterã§åŠã¶
- ïŒå®è·µïŒã¬ã¬ã·ãŒã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããªãããªããžã§ã¯ãæåã³ãŒããäœæãã
#3.
ãã¹ãã³ãŒã
äœæã®ãã
ããŒã·ãã¯ã³ãã¯
å®éã«ç¥ã£ãŠããã¹ããã¹ãã³ãŒããæžãããã®åºæ¬çãªæŠå¿µãã³ãŒããšäžç·ã«åŠã³ãŸãããã
- ãã¹ãã®åºæ¬ãçè§£ãã
- ãã¹ãã®çš®é¡ïŒUnitãIntegrationãE2EïŒ
- å€éšäŸåæ§ã眮ãæãããã¹ãããã«
- ïŒå®è·µïŒãŠããããã¹ããçµ±åãã¹ããçŽæ¥äœæããå€éšäŸåæ§ã眮ãæãã
#4.
ããè¯ãã³ãŒã
èšèšã®ããã
ãœãããŠã§ã¢ã¢ãŒããã¯ãã£
åºç€ãšãã¿ãŒã³ãçè§£ãã
ããè¯ãã³ãŒãèšèšã®ããã«ãœãããŠã§ã¢ã¢ãŒããã¯ãã£ãå¿
èŠãªçç±ãšä»£è¡šçãªã¢ãŒããã¯ãã£ãã¿ãŒã³ãåŠã³ãŸãããããŠãã¬ã€ã€ãŒãåé¢ããäŸåé¢ä¿ãèæ
®ããŠäžç·ã«ãããžã§ã¯ããèšèšããŸãã
- ãœãããŠã§ã¢ã¢ãŒããã¯ãã£ãå¿
èŠãªçç±
- 代衚çãªãœãããŠã§ã¢ã¢ãŒããã¯ãã£ãã¿ãŒã³ - ã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ããããµãŽãã«ã¢ãŒããã¯ãã£ãã¯ãªãŒã³ã¢ãŒããã¯ãã£
- ïŒå®è·µïŒã¯ãªãŒã³ã¢ãŒããã¯ãã£ãšãã¹ãã³ãŒããé©çšãããããžã§ã¯ãã®æ§ç¯
#5.
äŒç€Ÿãã
ç¥ã£ãŠããã¹ã
éçºç¥è
äŒç€Ÿãç¥ã£ãŠããã°ãè¯ãéçºç¥èãåŠã³ãŸãã
- å¹ççã«ããã°ã©ã ãéå¶ããïŒäžŠåæ§ãšåææ§ãåæãšéåæãªã©ïŒ
- ç°¡åãã€è¿
éã«ããã°ã©ã ãé
åžããïŒä»®æ³åæè¡ãCI / CDãªã©ïŒ
- ãµãŒãã¹ã®éèŠãªèŠçŽ ãäŒå¡ç»é²ãšãã°ã€ã³ãçè§£ããïŒã¯ãããŒãšã»ãã·ã§ã³ãèªèšŒãªã©ïŒ
#6.
ã³ã©ãã¬ãŒã·ã§ã³ã®å¿
é Gitã
æ¬çªã§ãã
䜿çšãããåœä»€
Gitã®åºæ¬çãªæŠå¿µãšæ¬çªã§ãã䜿ãããã³ãã³ããäžç·ã«åŠã³ãŸãããã
- Gitã®ã¯ãŒã¯ã¹ããŒã¹ãšãã©ã³ããçè§£ãã
- æ¬çªã§ãã䜿ãããåœä»€ã調ã¹ãïŒrebaseãsquash mergeãreflogãªã©ïŒ
- merge conflict ãæ±ã
ãã®è¬çŸ©ã ãã®ç¹å¥ãªå©ç¹âïž
äžã€ãå¿
èŠãªçç±ãæç¢ºã«äŒããç°¡åã«çè§£ã§ããããã«èª¬æããŸãã
- åŠã¶æŠå¿µãå¿
èŠãªç¶æ³ãšçç±ãæç¢ºã«å®çŸ©ãå§ããŸãã
- ããžãã¹ã§æŠå¿µãã©ã®ããã«äœ¿çšããããã«ã€ããŠèª¬æããŸãã
- ã»ãšãã©ã¯ãã³ãŒããäžå¿ã«ãªã£ãŠæŠå¿µã説æããçè§£ããããè§£ãããã«èª¬æããŸãã
ã©ã¡ãããçŽæçã§çè§£ããããèšèªPythonïŒPythonïŒã§ææ¥ããŸãã
- Pythonãç¥ããªããŠãç°¡åã«çè§£ã§ããããã«ã¯ã©ã¹ãæŽçããŸããã
- æŠå¿µãæããããã«ç¥ã£ãŠããã¹ãæå°éã®Pythonææ³ã ããæŽ»çšããŸãããããã£ãŠãããã°ã©ãã³ã°èšèªã®1ã€ã«æ
£ããŠããããšãããã°ãã¯ã©ã¹ãèŽãã®ã«åé¡ã¯ãããŸããã
äžããã¹ãŠã®è¬çŸ©ã®äžå¿ãšãªãã詳现ãªèª¬æãšã³ãŒãäŸãå
¥ã£ãè³æéãæäŸããŸãã
詳ããã¯è¬çŸ©ã§çŽæ¥ç¢ºèªããŠã¿ãŠãã ããð
ç¥èå
±æè
ã°ã©ã
ç¹å¥ãªåè¬è©ð
ååã®è¬çŸ©ã éå°æ»è
ã®ããã®æ¬åœã®å
¥éãªãŒã«ã€ã³ã¯ã³éçºã¯ã©ã¹ãšITäŒç€Ÿã§çãæ®ãããã®ãã¹ãŠã®éçºç¥èA to Zã«æ®ããŠãã ãã£ãåè¬è©ã§ãã
ãããã質å
æ°ã«ãªããªãïŒ ð¬
Q. éçºãåããŠåŠã¶ã®ã«ãããèãããšã¯ã§ããŸããïŒ
æ®å¿µãªããããã®ã¬ãã¹ã³ã®åè¬å
ã¯ã1ã€ã®ããã°ã©ãã³ã°èšèªã«ç²ŸéããŠããå¿
èŠããããŸãããŸããã¯ã©ã¹ã掻çšããŠ1ã€ä»¥äžã®ãã€ãããžã§ã¯ããè¡ã£ãçµéšãããæ¹ã«ããããã§ãã
Q. ç§ã¯Pythonã¯ããåãããªãã®ã«å€§äžå€«ã§ããããïŒ
ä»ã®ããã°ã©ãã³ã°èšèªã§ãæ
£ã芪ããã§ããã°ååã§ãã
ãã®è¬çŸ©ãæ®åœ±ãããšããPythonã¯è¬çŸ©ã®ããã®1ã€ã®ããŒã«ã ãšæããŸãããããã§ãPythonææ³ã¯æå°éã ãæŽ»çšããŠæŠå¿µã説æããŸããã