
- TOP
- ã¿ã°äžèЧ
- Laravel
Laravel
ã€ãã³ã
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã
ãã¬ãžã³
æè¡ããã°
ã¯ããã« ããã«ã¡ã¯ããªããŒã«ããéçºéšã§ããã¯ãšã³ããšã³ãžãã¢ãããŠãããã·ãšç³ããŸãã çŸåšãLaravel ãªã©ãå©çšããªããå°å£²ã¢ããªéçºã«åãçµãã§ããŸãã å
æ¥ããµãŒãã¹ã®ãªãªãŒã¹ã«äŒŽããæ§ãµãŒãã¹ã®å€éšã·ã¹ãã ããåœç€Ÿã®MySQL DBãžãŠãŒã¶ãŒããŒã¿ç§»è¡ãè¡ãæ©äŒããããŸããã ãã ä»åãä»ãŸã§è¡ã£ãããŒã¿ç§»è¡ãšå€§ããéãã®ã¯ããŠãŒã¶ãŒã®å人æ
å ±ãå«ãã ããŒã¿ç§»è¡ã§ããã ããŒã¿ç§»è¡èªäœã¯ãããŸã§ãçµéšããŠããŸããããå人æ
å ±ãå«ãç§»è¡ã¯åæãç°ãªããå€ãã®åŠã³ãšåçç¹ããããŸããã ããã§æ¬èšäºã§ã¯ä»¥äžã®ç¹ã«ã€ããŠã話ã§ããã°ãšæããŸãã å®ããŒã¿ãèªç±ã«æ±ããªãç¶æ³ã§ã®äºåæºåã®é²ãæ¹ ãªããŒãµã«ã®éèŠæ§ãšã宿œã§ããå Žåã®èãæ¹ ä»åæ¡çšããç§»è¡æ¹åŒãšã倿ã§ããã®ã«æ£ããå
¥ã£ãŠããªããåé¡ãšç¢ºèªç¹ ç§»è¡åœæ¥ã«æèããŠããã¹ã倿ãšå¿æ§ã 次åã®ããŒã¿ç§»è¡ã«åããæ¹åç¹ ããããã®äžã§çµéšããããšãåçç¹ãèšèŒããªãããä»åŸã«åããæ¹åç¹ãªã©ãèšèŒããŠããŸãã ãŸããåå¥ã®ç§»è¡å
容ãšããããã¯ãããŒã¿ç§»è¡ãé²ããéã®æºåã»æ€èšŒã»å€æã®èãæ¹ã«çŠç¹ãåœãŠãŠããŸãã 1. å®ããŒã¿ãèªç±ã«æ±ããªãç¶æ³ã§ã®äºåæºåã®é²ãæ¹ å人æ
å ±ãå«ãããŒã¿ã¯ãèªç±ã«è§Šããªãã å人æ
å ±ãå«ãŸããå Žåã®å¶çŽ éçºç°å¢ã»æ€èšŒç°å¢ã«ç°¡åã«æã¡èŸŒããªã ãã°åºåãã¹ã¯ãªãŒã³ã·ã§ãããå
±ææ¹æ³ã«ãå¶éããã ããŒã¿é
眮ã»ä¿ç®¡å Žæã«ãæ
éãªå€æãå¿
èŠ äºå確èªãååã«ã§ããªã ãæ¬çªã§åããŠèŠãããŒã¿ããçºçããã¡ ãªã©éåžžãšã¯ç°ãªãå¶çŽãããäžã§è¡ãå¿
èŠããããŸããã ãã®éšåããã£ãšèæ
®ããäžã§ãäºåæºåãå¿
èŠã§ãã£ããšããã¯å€§ããªåçç¹ã§ããã ãã§ããªããã仿¹ãªããã§æžãŸãããšå±éº äºåã«ã§ããããšã¯ã§ããéãããã仿§æžã»IFå®çŸ©ã ãã§æºè¶³ããªãããšã倧äºã§ãã ãšã¯ãã察å¿ã§ããç¯å²ãéçã¯ããã®ã§ä»¥äžã®ç¹ãç¹ã«æ³šæã§ããã°ãšæã£ãŠããŸãã NULL / 空æå / äžæ£å€ã®æ±ãã¯åé
ç®ã§ã©ããªã£ãŠããã®ããæç¢ºã«ããã æ¡æ°ã»æåçš®ã»ãã©ãŒãããã®ã°ãã€ããããããšãåæãšããèæ
®ãããã 仿§äžã¯OKã§ããå®ããŒã¿ã§ã¯éãå¯èœæ§ãèããã (ããã¯æ£çŽé£ããã§ãããããŒã¿ãã¿ãŒã³ã確èªããã§ããéãèæ
®ãããã§ãã) ããããã®è©±ã§ãããéåžžã¯ä»æ§ã«åºã¥ããŠå¯Ÿå¿ããã®ãåœããåã§ããã ãããã£ã倧éããŒã¿ã«ãªããšããããªããŒã¿ã¯ã»ãŒæ··ãã£ãŠããã®ãéã«æ®éããšæã£ãŠããŸãã 2. ãªããŒãµã«ã®éèŠæ§ãšã宿œã§ããå Žåã®èãæ¹ ä»åã¯äºåã«ãªããŒãµã«ã宿œã§ããç¶æ³ã§ããã ãããã以äžã®ç¹ã§ããæ€èšŒãè¡ããŠããŸããã§ããã ããŒã¿ç§»è¡æé ãåé¡ãªãããšïŒã¹ã ãŒãºã«ç§»è¡äœæ¥ãå®äºã§ããïŒ å人æ
å ±ããŒã¿ã®åãæ±ãã«åé¡ããªãããš ããŒã¿å€æããšã©ãŒãªãè¡ãããæ£åžžã«DBãžæå
¥ã§ããããšïŒæ³å®éãã®ãã©ãŒãããã§ããããšïŒ å®éã«ç§»è¡ããããŒã¿ã䜿çšããŠç°¡åãªåäœç¢ºèªã宿œãåé¡ãªãããš äžèšã¯ã©ãããªããŒãµã«ã§è¡ãå¿
èŠãªé
ç®ã§ãã©ãã倧äºãªã®ã§ããã ãã ãæ¬çªããŒã¿ãæ³å®ãã芳ç¹ãšããŠã¯ä»¥äžã®ç¹ã§ãã£ãšæéããããŠè¡ãã¹ãã§ããã DBã«å
¥ã£ãå
å®¹ã«æ³å®ããŠããªãããŒã¿ãå
¥ã£ãŠããªãã ããŒã¿ãã¿ãŒã³ãåé
ç®ã§æŽãåºããã·ã¹ãã äžåé¡ãªãå€ã§ããããš æ³å®ããŠããªããã¿ãŒã³ã®å Žåãã©ã察åŠããããäºåã«æç¢ºã«ããããš ãããããããå人æ
å ±ã®ããŒã¿ãšãªããšãããŸãæéããããŠã®ãªããŒãµã«ã ããŒã«ã«ã«ä¿åããŠåŸã»ã©è©³çްã«ç¢ºèªããã«ããã®ããããç°¡åãªç¢ºèªã§æžãŸããŠããŸã£ãŠããŸããã å
ããŒã¿ãæå€§éã«å©çšãã äžçªç¢ºå®ãªã®ã¯ãã¯ãå
ããŒã¿ã䜿çšã§ããããšã§ãã åœæ¥ã®ããŒã¿ç§»è¡ã®æ€èšŒãšããæå³ã§ã¯ããããå©çšããæ€èšŒãäžçªç¢ºå®ã ãšæããŸãã ãªããŒãµã«åœæ¥ã ãã§åºæ¥ãªãéšåã¯ã奿¥ã«è©³çްã«ã§ããã°ãšè¯ããšæããŸãã ããããä»åã®ãããªå人æ
å ±ããŒã¿ã¯èªç±ã«æ±ããªãããšãçç±ã«ããŸãå©çšã§ããŠããªãã£ãã®ãåçç¹ã§ãã ããã«ããã§ãã®ãã¡ã€ã«ã掻çšãããããŒããŒã¿ãäœããããéåžžã«æå¹ã ã£ãã®ã§ã¯ãšæã£ãŠããŸãã 3. ä»åæ¡çšããç§»è¡æ¹åŒãšã倿ã§ããã®ã«æ£ããå
¥ã£ãŠããªããåé¡ãšç¢ºèªç¹ ã©ããã£ãŠç§»è¡ãè¡ãããšããã ä»åã¯ä»¥äžã®æ¹æ³ã§è¡ããŸããã ç§»è¡å
ããŒã¿ â phpã§ããŒã¿ãèªã¿èŸŒã¿ãMySQLã®LoadDataçšTSVãã¡ã€ã«ã«ã³ã³ããŒãããã³ãŒããäœæ â Load Dataã§TSVããŒã¿ãDBãžæå
¥ â ããŒã¿ç§»è¡å®äº ç¹å¥ãªåŠçã¯ç¹ã«ãªããã·ã³ãã«ãªå€æåŠçã§ããã ã倿ã§ããã®ã«æ£ããå
¥ã£ãŠããªããåé¡ãšç¢ºèªç¹ ã³ã³ããŒããŸã§ã¯ç¹ã«åé¡ãªã倿ã§ããŠãä»¶æ°ã»ãšã©ãŒãã§ãã¯ã¯è¡ããŠããŸãããã 以äžã®ç¹ãèŠèœãšããã€ã³ãã§ããã ããŒã¿æå
¥ã§ããŠããŠããã€å
šä»¶ãèªå倿ããªã©çºçãªãæå
¥ã§ããŠãããïŒ Loadæã«Warningãªã©ãçºçããŠããªããïŒïŒæå
¥ã¯ã§ããŠããŠãå®ã¯æ£åžžã«å
¥ã£ãŠããªãã±ãŒã¹ãããïŒ ã«ã©ã å®çŸ©äžã¯åé¡ãªãå
¥ã£ãŠããããå€ãæ³å®ããŠããªããã®ã§ã¯ãªããïŒ Load Data ã¯ããŒã¿æå
¥æã«éåžžã«äŸ¿å©ã§ãããäžèšã®ç¹ããã£ãããšèæ
®ããäžã§äœ¿çšããªããšããŒã¿ç§»è¡æã®ç¢ºèªå
容ãšããŠã¯äžååã«ãªã£ãŠããŸããŸãã ç¹ã«æ¥ä»ã¯NULLã®å Žåãšã0000-00-00ãã§å
¥ãå Žåã§å
šãæåãç°ãªããŸãã MySQLã§ã¯ã0000-00-00ãã¯NULLã§ã¯ãªããå€ããšããŠæ±ãããŸãã ãã®ããã¢ããªã±ãŒã·ã§ã³åŽã§ã¯æªèšå®ã§ã¯ãªãç°åžžå€ãšããŠååšããŠããŸãããšã«ãªãã æ¥ä»èšç®ã»ããªããŒã·ã§ã³ã»ORM倿ã§åŸããåé¡ãåŒãèµ·ããå¯èœæ§ãããã®ã§ç¹ã«æ³šæãå¿
èŠã§ãã ä»åã®ç§»è¡åŠçã®è²¬åãåé¢ããŠèãã æ¬æ¥ã¯ä»¥äžã®ããã«ããããã®ãã§ãŒãºã®è²¬åãæç¢ºã«ããŠã察å¿ãããŠããå¿
èŠããããŸããã ãã§ãŒãº åœ¹å² ä¿èšŒããããš ä¿èšŒã§ããªãããš ã³ã³ããŒã¿ãŒ çããŒã¿ãLoad Dataçšåœ¢åŒãžå€æ TSVæ§é ã»æåã³ãŒãã»åºæ¬çãªå€å€æ DBãã©ãè§£éããããæ¥åçãªæ£ãã Load Data DBãžé«éã«äžæ¬æå
¥ æå®ä»¶æ°ã®åã蟌ã¿ãç©ççãªæ ŒçŽ å倿ã®åœ±é¿ãæé»å€æãWarningã®çºç DBæ ŒçŽåŸã®ç¢ºèª å®ããŒã¿ã®åŠ¥åœæ§æ€èšŒ æ¥åçã«æ£ããå€ã§ããããšã®ç¢ºèª ãã®ç¢ºèªãè¡ããªããšç§»è¡æåãšã¯èšããªã ç¹ã«ä»åã¯ãLoad Data ã®éšåãšDBæ ŒçŽåŸã®ç¢ºèªãæ··åšãã確èªã«ãªã£ãŠãããšåçããŠããŸãã å®éã®ããŒã¿ãã¿ãŒã³ã®æ€èšŒäŸ ãã¿ãŒã³ã¯èšå€§ã«ããããã§ãå®ã¯ã·ã³ãã«ãªãã®ãããã€ãçšæããŠããã ãã§ãéããšæã£ãŠããŸãã -- äžæ£æ¥ä»ç¢ºèª SELECT COUNT (*) FROM users WHERE birthday = ' 0000-00-00 ' ; -- NULLçºççç¢ºèª SELECT COUNT (*), SUM (email IS NULL ) FROM users; -- æ³å®å€åœ¢åŒç¢ºèªïŒéœéåºç以å€ã®ãã¿ãŒã³ç¢ºèªïŒ SELECT prefecture, COUNT (*) FROM users GROUP BY prefecture; AIãæŽ»çšãããã¿ãŒã³æŽãåºãã»äºåãã¹ãã®è©Šã¿ ä»åãAIãããŸã䜿ãããªããŠããªãã£ãç¹ãåçç¹ã ã£ããšæã£ãŠããŸãã ãŸãã«AIãããŸã掻çšã§ããç¹ãšããŠã åè¿°ããããŒã¿ãã¿ãŒã³ãæ§ã
ãªèгç¹ã§åºãããšãã§ãã å人æ
å ±éšåã¯é©åœãªãã¿ãŒã³ããŒã¿ã«å€æããŠæ€èšŒããããšãã§ãã åœæã¯æ¬çªããŒã¿ããã®ãŸãŸäœ¿çšã§ããªãããšã§ãã¡ãã£ãšãããµã³ãã«ããŒã¿ããã¿ãŒã³ããŒã¿ã§è¡ãã ååãªäºåæ€èšŒãäžè¶³ããŠããŸããã 4. ç§»è¡åœæ¥ã«æèããŠããã¹ã倿ãšå¿æ§ã ä»ãŸã§ããã€ãäºåæºåãšæ
éãªæ€èšŒãå¿
èŠãšèšèŒãããŠããŸããã åœæ¥ã¯å¿
ãæ³å®å€ãèµ·ãããšæã£ãŠèšç»ãç«ãŠãæ¹ãè¯ãããšæã£ãŠããŸãã ç¹ã«èšå€§ãªããŒã¿ãå
容ãå€ãã»ã©é¡èã«ãªãããšæããŸãã 以äžã®ç¹ã«æ³šæããŠåœæ¥ã¯æããããã«ããŠããããã§ãã ïŒã€ïŒã€ã®äœæ¥å®äºæ¡ä»¶ãæç¢ºã«ããŠããããšã ããžãã¯ã仿§å€æŽããã®å Žã§ããä¿®æ£ã¯ååããªãããšã ç§»è¡ãäžæ¢ãå»¶æããããŸãã¯åŸæ¥å¯Ÿå¿ã§OKããªã©ã®å€æãåœæ¥ã§ãã人ãããããšã ç§»è¡ãããåºæ¥ãªãå Žåã®ãªã«ããªæ¹æ³ãããããšã ãŸããæéãæ³å®ããŠãããããæãã£ãŠããŸãããšãå€ããšæããŸãã ãªãã¹ãäœè£ããã£ãèšç»ã«ãããã§ãã ä»åã¯æå
¥ããŒã¿ã®ä»¶æ°ç¢ºèªã§ãããããã«çµããã€ãããä»¶æ°ã®æ£è§£ãäºåã«çšæããŠããªãã£ãããã éåžžã«å€§ããæéããããŠããŸã£ãã®ãä»åã®åçç¹ã§ãããïŒå®äºæ¡ä»¶ãæç¢ºã«ãªã£ãŠããªãïŒ 5. 次åã®ããŒã¿ç§»è¡ã«åããæ¹åç¹ ä»åã®çµéšãã以äžã®ç¹ãæèãæ¹åã§ããããã«ããŠããããã§ãã äžé£ã®æé ãåäœç¢ºèªã¯äºåãªããŒãµã«ã§ã§ããéãè¡ãããšã æ¬çªåœæ¥ã«åããäºåæºåã¯ãã£ããæéã確ä¿ããŠå¯Ÿå¿ãããïŒåœæ¥ã¯å¿
ãäœãèµ·ããåæïŒ åœæ¥ã®äœæ¥ã®å®äºåºæºã®æç¢ºåïŒããŒã¿ä»¶æ°ããšã©ãŒæç¡ãåäœç¢ºèªãªã©ïŒ Load Dataãªã©ããŒã¿æå
¥åŸã®éšåãäžçªå€§äºãã€æç¢ºã«ããéšåã§ããããšã 仿§éãã«äœæããŠããäžæ£ããŒã¿ã¯å¿
ãããåæã§è¡ããããããèæ
®ããããšã å人æ
å ±ãæ±ãããŒã¿ã®å Žåã¯ãåçã®ãããŒããŒã¿ãçšæã§ãããšæ€èšŒæã«éåžžã«æå¹ã æ€èšŒãã¿ãŒã³ãããŒã¿çæãªã©ã¯AIãæŽ»çšããæ€èšŒç²ŸåºŠãã³ã¹ãæžã«åœ¹ç«ãŠãã 6. ãŸãšã éåžžãããŒã¿ç§»è¡ã¯åœæ¥äžåºŠããã®äœæ¥ã§ã åãå
容ã§ååºŠå®æœããã±ãŒã¹ã¯å°ãªããåå¥ã®ããŠããŠã¯èç©ãã«ãããšããããããŸããã å
±éã®èãæ¹ã察å¿ãšããŠã äºåæºåã®éèŠæ§ æ€èšŒèšèšã®æç¢ºå åœæ¥ã®å€æåºæº äœããã£ãæã®ãªã«ããªæ¹æ³ ããããæèããããšã§ãåœæ¥ã®é害確çã¯äžãããããšæã£ãŠããŸãã æ¹ããŠä»åãéããŠãããŒã¿ç§»è¡ã¯æè¡äœæ¥ãšãããããæ€èšŒèšèšãšå€æèšèšã®ä»äºã ã£ããšæããŠããŸãã æ£çŽãå®ç§ã«æºåãããŠå
šãŠã¹ã ãŒãºã«å®äºãããããšã¯ãªããªãé£ãããšããã§ããã ããä»åŸããŒã¿ç§»è¡ãªã©ã®äœæ¥ãããéã«æ¬èšäºãå°ãã§ãåèã«ãªãã°å¹žãã§ãã æåŸãŸã§ãèªã¿ããã ãããããšãããããŸããã
ã¯ããã« ããã«ã¡ã¯ããªããŒã«ããéçºéšã®ææ£®ã§ãã è¿å¹ŽãAIãæŽ»çšããéçºããŒã«ãæ¥éã«æ®åããŠããŸããç§ãã¡ã®ããŒã ã§ãç©æ¥µçã«AIããŒã«ãå°å
¥ããèŠä»¶å®çŸ©ã§ã®ãŠãŒã¶ãŒã¹ããŒãªãŒäœæãèšèšããã¥ã¡ã³ãã®çæãã³ãŒãã®èªåè£å®ããã¹ãã³ãŒãã®çæãªã©ãåéçºãã§ãŒãºã®äœæ¥å¹çåãå³ã£ãŠããŸããã ããããåã
ã®äœæ¥ã¯ç¢ºãã«æ©ããªã£ãŠããã®ã«ããããã¯ãéçºãããŒå
šäœãèŠããšæåŸ
ããã»ã©ã®çç£æ§åäžã宿ã§ããªããšãã課é¡ã«çŽé¢ããŸããã æ¬èšäºã§ã¯ããã®èª²é¡ã«å¯Ÿããã¢ãããŒããšããŠå°å
¥ãæ€èšããŠããAI-DLCïŒAI-Driven Development LifecycleïŒã«ã€ããŠç޹ä»ããŸãã AI-DLCãšã¯ AI-DLCã¯ãAWSãæå±ããAIãã€ãã£ããªéçºæ¹æ³è«ã§ããæ¹æ³è«ã®ãã¯ã€ãããŒããŒã§çè«çãªæ çµã¿ãå®çŸ©ãããŠããããããå®è£
ããããã®ã¯ãŒã¯ãããŒãaidlc-workflowsãšããŠGitHubäžã§å
¬éãããŠããŸãã AWSã®å
¬åŒããã°ã§ã¯ãçŸåšã®AI掻çšã«ããã2ã€ã®ã¢ã³ããã¿ãŒã³ãææãããŠããŸãã AI-Assisted: 人éãèšèšãäž»å°ããAIã¯ã³ãŒãè£å®ãªã©çãç¯å²ã®æ¯æŽã«ãšã©ãŸããçç£æ§åäžã¯éå®çã§ãAIã®èœåãååã«åŒãåºããªã AI-Managed: è€éãªåé¡ãAIã«äžžæãããèªåŸçã«ãã¹ãŠã解決ããããšãæåŸ
ãããåºçºç¹ãææ§ãªããAIãå€ãã®ä»®å®ãç«ãŠããããã¿ã€ã以å€ã§ã¯ã»ãŒæ©èœããªã AI-DLCã¯ããããã®ã¢ã³ããã¿ãŒã³ã«å¯Ÿããã¢ãããŒããšããŠèšèšãããŠããŸããAIãäœæ¥èšç»ã®äœæãã¿ã¹ã¯åè§£ãäž»å°ãã人éããã®å
å®¹ãæ€èšŒã»æ¿èªããAIãæ¿èªãããèšç»ã«åºã¥ããŠå®è¡ãããšãããµã€ã¯ã«ã§ãéçºã©ã€ããµã€ã¯ã«å
šäœãé²ããŸãã AIé§åéçºã©ã€ããµã€ã¯ã«ïŒAWSå
¬åŒããã°ïŒ aidlc-workflowsïŒGitHubïŒ åŸæ¥ã®éçºææ³ãšã®éã AI-DLCã¯ãæ¢åã®éçºææ³ã«AIãåŸä»ãããã®ã§ã¯ãªããAIãåæãšããéçºããã»ã¹ããŒãããèšèšããŠããŸãããã¯ã€ãããŒããŒã§ã¯ã以äžã®èšèšææ³ã瀺ãããŠããŸãã AIãäŒè©±ãäž»å°ãã: åŸæ¥ã¯äººéãAIã«æç€ºãåºããŠããããAI-DLCã§ã¯AIãã¿ã¹ã¯åè§£ãææ¡ãè¡ãã人éã¯æ¿èªã»å€æã«éäžãã Intent / Unit / Bolt: ããžãã¹ç®æšïŒIntentïŒãäœæ¥åäœïŒUnitïŒã«åè§£ããæ°æéãæ°æ¥ã®çããµã€ã¯ã«ïŒBoltïŒã§å®è£
ãåããScrumã®Sprintã«è¿ããããµã€ã¯ã«ãçã åã¹ãããã§äººéããã§ãã¯ãã: AIã®åºåãæ®µéããšã«æ€èšŒãã誀ããæ©æã«æ€åºããããã¯ã€ãããŒããŒã§ã¯ãæå€±é¢æ°ã®ããã«æ©èœããããšè¡šçŸãããŠãã èšèšææ³ãæ¹æ³è«ã«çµã¿èŸŒã: ScrumãKanbanãããŒã ã«å§ããŠããDDDçã®èšèšææ³ããæ¹æ³è«ã®äžéšãšããŠæšæºåãã aidlc-workflowsã®èšèšåå aidlc-workflowsã¯ãäžèšã®èšèšææ³ãå®è£
ããã«ãããã以äžã®5ã€ã®èšèšååã«åºã¥ããŠããŸãã åå 説æ No Duplication èšå®ãã«ãŒã«ãäžç®æã§ç®¡çããéè€ãæé€ãã Methodology First ç¹å®ã®ããŒã«ã«çžããããæ¹æ³è«ãã®ãã®ã軞ã«ãã Reproducible ã«ãŒã«ãææåãã䜿ãAIã¢ãã«ãå€ãã£ãŠãçµæãã¶ããªãããã«ãã Agnostic IDEã»ãšãŒãžã§ã³ãã»ã¢ãã«ãåããåäœãã Human in the Loop éèŠãªå€æã«ã¯å¿
ã人éã®æ¿èªãæã 3ãã§ãŒãºæ§æ AI-DLCã¯ã以äžã®3ã€ã®ãã§ãŒãºã§æ§æãããŠããŸãã INCEPTION PHASE: WHATãšWHYã®æ±ºå® CONSTRUCTION PHASE: HOWã®å®è£
OPERATIONS PHASE: ãããã€ãšç£èŠïŒaidlc-workflowsäžã¯æªå®è£
ïŒ INCEPTION PHASE ãäœãäœããïŒWHATïŒãããªãäœããïŒWHYïŒããæ±ºå®ãããã§ãŒãºã§ããæ¹æ³è«ã®ãã¯ã€ãããŒããŒã§ã¯ãMob Elaborationããšãããã©ã¯ãã£ã¹ãšããŠå®çŸ©ãããŠãããå
±æç»é¢ã䜿ã£ãŠããŒã å
šäœã§AIã®è³ªåãšææ¡ãæ€èšŒããŸããAIãããžãã¹æå³ïŒIntentïŒãæç¢ºåãã質åãæãããããŠãŒã¶ãŒã¹ããŒãªãŒãéæ©èœèŠä»¶ããªã¹ã¯èšè¿°ãçæããåé床ã®é«ãäœæ¥åäœïŒUnitïŒãžåå²ããŸãã aidlc-workflowsã§ã¯ããã®ãã§ãŒãºã以äžã®ã¹ããŒãžã«çްååãããŠããŸãã ã¹ããŒãž 説æ Workspace Detection ãããžã§ã¯ãã®ç¶æ
ãåæïŒæ°èŠ/æ¢åã®å€å®ïŒ Reverse Engineering æ¢åã³ãŒãããŒã¹ã®çè§£ïŒBrownfieldã®å ŽåïŒ Requirements Analysis èŠä»¶ã®åéãšæŽç User Stories ãŠãŒã¶ãŒã¹ããŒãªãŒã®äœæ Workflow Planning å®è¡èšç»ã®çå® Application Design ã¢ããªã±ãŒã·ã§ã³èšèš Units Generation äœæ¥åäœãžã®åå² CONSTRUCTION PHASE ãã©ãäœããïŒHOWïŒããæ±ºå®ããå®éã«ã³ãŒããçæãããã§ãŒãºã§ããæ¹æ³è«ã®ãã¯ã€ãããŒããŒã§ã¯ãDomain DesignïŒããžãã¹ããžãã¯ã®ãã¡ã€ã³ã¢ããªã³ã°ïŒâ Logical DesignïŒéæ©èœèŠä»¶ãå«ãã¢ãŒããã¯ãã£èšèšïŒâ Code & Unit TestsïŒã³ãŒããšãã¹ãã®çæïŒâ Deployment UnitsïŒãããã€å¯èœãªææç©ã®æ§ç¯ïŒãšããæµãã§é²ã¿ãŸãããMob Constructionãã§ããŒã ããªã¢ã«ã¿ã€ã ã§æè¡ç決å®ãšã¢ãŒããã¯ãã£ã®éžæãè¡ããŸãã aidlc-workflowsã§ã¯ããã®ãã§ãŒãºã以äžã®ã¹ããŒãžã«çްååãããŠããŸãã ã¹ããŒãž 説æ Functional Design æ©èœèšèšïŒãŠãããããšïŒ NFR Requirements/Design éæ©èœèŠä»¶ã®èšèš Infrastructure Design ã€ã³ãã©èšèš Code Generation ã³ãŒãçæ Build and Test ãã«ããšãã¹ã OPERATIONS PHASE ãããã€ãšç£èŠãæ
åœãããã§ãŒãºã§ããæ¹æ³è«ãšããŠã¯å®çŸ©ãããŠããŸãããaidlc-workflowsã«ã¯å«ãŸããŠããããå°æ¥çã«ã¯ãŒã¯ãããŒã远å ãããäºå®ã§ãã 察å¿ãã©ãããã©ãŒã å
¬åŒã§ã¯ä»¥äžã®ãã©ãããã©ãŒã ããµããŒããããŠããŸãã Kiro CLI Amazon Q Developer IDE plugin Kiro IDEïŒComing SoonïŒ è©ŠããŠã¿ã å°å
¥ã®èæ¯ ç§ãã¡ã®ããŒã ã®èª²é¡ã¯ããŸãã«AI-Assistedãã¿ãŒã³ã«è©²åœããŸããAIãåã
ã®äœæ¥ã®å¹çåã«ã¯æŽ»çšã§ããŠãããã®ã®ãçç£æ§åäžã¯éå®çã«ãšã©ãŸã£ãŠããŸããã ç§ãã¡ã®ããŒã ã§ã¯ãKiro CLIãããã«äœ¿ããç°å¢ã§ã¯ãªãã£ããããClaude Codeåãã«ã«ã¹ã¿ãã€ãºããŠäœ¿çšããŸãããAI-DLCã¯ããŒã«ã«äŸåããªãèšèšã謳ã£ãŠãããããã«ãŒã«ãã¡ã€ã«ã調æŽããã°ä»ã®AIããŒã«ã§ãåé¡ãªãé©çšã§ãããšèããŠããŸãã Claude Codeåãã®ã«ã¹ã¿ãã€ãº 以äžã®ããã«Claude Codeåãã«ã«ã¹ã¿ãã€ãºããŸããã 1. ã«ã¹ã¿ã ã³ãã³ãïŒã¹ãã«ïŒã®äœæ .claude/commands/aidlc.md ã«ã¯ãŒã¯ãããŒå®çŸ©ãé
眮ãã /aidlc ã³ãã³ãã§èµ·åã§ããããã«ããŸããã .claude/ âââ commands/ â âââ aidlc.md # ã¡ã€ã³ã¯ãŒã¯ãã㌠â âââ aidlc-pr.md # PRäœæçš â âââ aidlc-archive.md # ã¢ãŒã«ã€ãçš âââ aidlc-rule-details/ âââ common/ # å
±éã«ãŒã« âââ inception/ # INCEPTIONãã§ãŒãº âââ construction/ # CONSTRUCTIONãã§ãŒãº âââ operations/ # OPERATIONSãã§ãŒãº 2. ã«ãŒã«ãã¡ã€ã«ã®åå² åã¹ããŒãžã®è©³çްæç€ºã .claude/aidlc-rule-details/ 以äžã«åå²é
眮ããŠããŸããããã«ãããAIãå¿
èŠãªã¿ã€ãã³ã°ã§å¿
èŠãªã«ãŒã«ã®ã¿ãèªã¿èŸŒã¿ãã³ã³ããã¹ããå¹ççã«äœ¿çšã§ããŸãã ã¯ãŒãã³æ©èœã顿ã«ããæ€èšŒ AI-DLCã®æå¹æ§ãæ€èšŒãããããå°å£²åãã¢ããªã®ã¯ãŒãã³æ©èœéçºãé¡æã«æ€èšŒã宿œããŸããã æ€èšŒæŠèŠ å¯Ÿè±¡ã·ã¹ãã : Flutter + Laravel + Vue.js + Goã§æ§æããããã«ããã©ãããã©ãŒã ã¢ããª é¡æ: ãã€ã³ãåŸä»ãã¯ãŒãã³ãšå³æå€åŒãã¯ãŒãã³ã®2çš®é¡ æ€èšŒç¯å²: ã¢ãã€ã«ã¢ããªã管çç»é¢ãããã¯ãšã³ãAPIããããåŠç ããŒã æ§æ: PdM1人+ãšã³ãžãã¢2人 æ€èšŒã®é²ãæ¹ ãã¯ãŒãã³æ©èœã远å ãããããšããããžãã¹æå³ïŒIntentïŒãèµ·ç¹ã«ãAI-DLCã®ãã§ãŒãºã«æ²¿ã£ãŠé²ããŸããã INCEPTION PHASEïŒ3人ã§å®æœïŒ: AIãèŠä»¶ãæ·±æããã質åãæãããããŠãŒã¶ãŒã¹ããŒãªãŒãéæ©èœèŠä»¶ãçæãPdMãšãšã³ãžãã¢ããã®å
å®¹ãæ€èšŒã»ä¿®æ£ããäœæ¥åäœïŒUnitïŒã«åå² CONSTRUCTION PHASEïŒ1人ã§å®æœïŒ: Unitããšã«ãã¡ã€ã³èšèšãã³ãŒãçæããã¹ãçæã宿œãåã¹ããŒãžã§AIã®åºåã確èªããæ¿èªã»ä¿®æ£ãç¹°ãè¿ãã ä»åã¯æ€èšŒç®çã ã£ãããšããããåãã§ãŒãºåæ¥ãã€ã®èš1æ¥ã§å®éã«åããã®ãŸã§äœæã§ããŸãããInceptionãã§ãŒãºã®èŠä»¶ã»èšèšãããäœã蟌ã¿ãConstructionãã§ãŒãºã§ã¯ã¬ãŒãã¬ãŒã«ã®æŽåãAIãèªåŸçã«æ¹åã§ããäœå¶ãçµãããšã§ãããã«ççž®ã§ããäœå°ããããšæããŠããŸãã å®éã®æ§å AIããã®æ·±æã質åïŒInceptionãã§ãŒãºïŒ Requirements Analysisã§ã¯ãAIãèŠä»¶ã®ææ§ãªéšåãéžæè¢ä»ãã§è³ªåããŠããŸãã以äžã¯ãã®äžäŸã§ãã AI : ã¯ãŒãã³å©çšç¶æ
ã®ç®¡çã«ã€ããŠç¢ºèªãããŠãã ããããŠãŒã¶ãŒãã¯ãŒãã³ããå©çšãããåŸã®ç¶æ
管çã¯ã©ããªããŸããïŒ A) 1åå©çšãããå³åº§ã«äœ¿çšæžã¿ã«ãªãïŒåå©çšäžå¯ïŒ B) æå¹æéå
ã§ããã°äœåºŠã§ãå©çšå¯èœ C) ã¯ãŒãã³ããšã«å©çšåæ°ãèšå®å¯èœïŒ1åã3åãç¡å¶éãªã©ïŒ AI : ã¯ãŒãã³ã®çš®é¡ãšé©çšç¯å²ã«ã€ããŠç¢ºèªãããŠãã ããã A) å
šãŠã®çš®é¡ãäž¡æ¹ã®ã¯ãŒãã³ã¿ã€ãã§äœ¿çšå¯èœ B) ã¯ãŒãã³ã¿ã€ãããšã«äœ¿çšå¯èœãªçš®é¡ã決ãŸã£ãŠãã ãã®ããã«ãAIã仿§ã®éžæè¢ãæç€ºãã人éã倿ãããšãããµã€ã¯ã«ã§Requirements Analysisãé²ã¿ãŸããååã®è³ªå10åã远å ã®æ·±æã質å6åãçµãŠãèŠä»¶å®çŸ©ããã¥ã¡ã³ããçæãããŸããã 人éã«ããèšèšä¿®æ£ïŒInceptionãã§ãŒãºïŒ Application Designã§ã¯ãAIãèšèšã®éžæè¢ãæç€ºãã人éã倿ããã±ãŒã¹ããããŸããã 人é : ã¢ã¯ãã£ããŠãŒã¶ãŒã§ã¯ãªããŠãŒã¶ãŒã«ãã¬ã³ãŒããäœæãããŠããŸããŸãããïŒ AI : 2ã€ã®éžæè¢ããããŸãã A) ã¯ãŒãã³å
¬éæã«å
šãŠãŒã¶ãŒåã®user_couponsã¬ã³ãŒããäœæ B) ã¯ãŒãã³å©çšéå§æã«ã®ã¿user_couponsã¬ã³ãŒããäœæ 人é : B çæããããŠãŒã¶ãŒã¹ããŒãªãŒïŒInceptionãã§ãŒãºïŒ User Storiesã§ã¯ã管çè
åã6ä»¶ãäŒå¡ãŠãŒã¶ãŒåã6ä»¶ãã·ã¹ãã åã1ä»¶ã®èš13ä»¶ãçæãããŸããã以äžã¯ãã®äžéšã§ãã US-01: ã¯ãŒãã³æ°èŠäœæ As a 管çè
I want to 管çç»é¢ããæ°ããã¯ãŒãã³ãäœæããã So that äŒå¡ãŠãŒã¶ãŒã«å¯ŸããŠãã£ã³ããŒã³ãæäŸã§ãã Acceptance Criteria: ã¯ãŒãã³ã¿ã€ãïŒãã€ã³ãåŸä»ã/峿å€åŒãïŒãéžæã§ãã ã¯ãŒãã³åãšèª¬ææãå
¥åã§ãã æå¹æéïŒéå§æ¥ã»çµäºæ¥ïŒãèšå®ã§ãã 察象åºèãéžæã§ãã çæãããã³ãŒãïŒConstructionãã§ãŒãºïŒ Constructionãã§ãŒãºã§ã¯ãUnitããšã«ãã¡ã€ã³èšèš â ã³ãŒãçæ â ãã¹ãçæãé²ã¿ãŸããæçµçã«ä»¥äžã®èŠæš¡ã®ã³ãŒããçæãããŸããã Unit 察象 çæãã¡ã€ã«æ° äž»ãªææç© Backend Laravel 51ãã¡ã€ã« Enum, Model, Migration, Service, Controller, Test Dashboard Vue.js 16ãã¡ã€ã« Composable, Component, Schema, Page Mobile Flutter 38ãã¡ã€ã« Entity, Repository, Provider, Widget, Page ããã£ãããš / ä»åŸã®å±æ è¯ããšæããç¹ å®éã«AI-DLCãè§Šã£ãŠã¿ãŠã以äžã®ç¹ãè¯ããšæããŸããã Human in the Loopã®å®çŸ: AIãå®è¡ãã人éãç£èŠãããšããé¢ä¿æ§ãæç¢ºãåã¹ããŒãžã§äººéã®æ¿èªãå¿
èŠãªãããéèŠãªæææ±ºå®ã¯äººéãã³ã³ãããŒã«ã§ãã ã³ã³ããã¹ãã®ä¿åãšåé: aidlc-state.md ã§ãããžã§ã¯ãã®ç¶æ
ã远跡ããŠãããããã»ãã·ã§ã³ãéåããŠãååã®ç¶ãããåéã§ãã ããã¥ã¡ã³ãåã«ãã远跡å¯èœæ§: audit.md ã«ãã¹ãŠã®ããåããèšé²ãããããããªããã®æ±ºå®ãããã®ããåŸãã远跡ã§ãã é©å¿çãªã¯ãŒã¯ãããŒ: ãããžã§ã¯ãã®è€éãã«å¿ããŠãå®è¡ããã¹ããŒãžãèªåçã«èª¿æŽããã 詊ããäžã§èŠã€ãã£ãèª²é¡ Inceptionåã®æºåã®å¿
èŠæ§ ä»åãã¯ãŒãã³æ©èœã远å ãããããšãããªã¯ãšã¹ãããInceptionãéå§ããŸããããèæ¯ç¥èãããªããã®æ©èœãå¿
èŠãªã®ãããã¢ãŠããããã«åæ ããã«ããããšãããããŸããããŸããèŠä»¶ã®è§£å床ãäœãç¶æ
ã§Inceptionãå§ãããšãè°è«ãçºæ£ãããããªããŸã AI-DLCã®Inceptionã«å
¥ãåã«ãããžãã¹èæ¯ãç®çãæŽçããã¹ããããå¿
èŠã ãšæããŸããã 仿§ãšAIå®è£
ã®ã®ã£ãã Inceptionãã§ãŒãºã§ä»æ§ã決ãåã£ãäžã§ãã以äžã®2ã€ã®åé¡ãçºçããŸããã 仿§ã®èšèŒæŒã: Inceptionãã§ãŒãºã§æ±ºãã仿§ã«æŒãããããConstructionãã§ãŒãºã§åããŠæ°ã¥ãã±ãŒã¹ãäŸãã°ãAPIã¬ã¹ãã³ã¹ã®ã©ãããŒåœ¢åŒããæ°ã«å
¥ãåºèã®ãã©ã¡ãŒã¿ãªã©ãå®è£
段éã§å€æããèæ
®æŒãããããŸãã 仿§éãã«å®è£
ãããªã: 仿§ãšããŠèšèŒãããŠããã«ãããããããAIãç°ãªãå®è£
ãããã±ãŒã¹ãäŸãã°ãæ¢åã®èªèšŒæ¹åŒãšç°ãªããã¿ãŒã³ã§å®è£
ããããæ¢åã®ã¢ãŒããã¯ãã£ãã¿ãŒã³ã«åŸããªãå®è£
ãçæãããããšããããŸãã åè
ã¯èŠä»¶å®çŸ©ãã¢ããªã±ãŒã·ã§ã³èšèšã®ç²ŸåºŠãäžããŠããå¿
èŠããããŸããä»åæ€èšŒã ã£ãã®ã§çްéšãŸã§ç¢ºèªã§ããŠããªããšããããããŸããããã®ããã宿¥åã«å°å
¥ããå Žåã¯ãããã®éšåã«æéã䜿ãã¹ãã ãšæããŸããã åŸè
ã¯ã¢ãã«ã®é²åãåŸ
ã¡ã€ã€ãã³ã³ããã¹ãã®æž¡ãæ¹ã®å·¥å€«ããå®è£
ã仿§ã«æºæ ããŠããããç£æ»ãããµããšãŒãžã§ã³ãã®æŽåãªã©ãã¬ãŒãã¬ãŒã«ã匵ã£ãŠããããšãå¿
èŠã ãšæããŸããã ã³ã³ããã¹ã管çã®èª²é¡ AIããŒã«åºæã®èª²é¡ãšããŠãã³ã³ããã¹ã管çã®é£ããããããŸããå®è£
ãã§ãŒãºã§ã¯ã³ãŒãã®èªã¿æžããå€ãçºçãããããauto-compactïŒã³ã³ããã¹ãã®èªåå§çž®ïŒãé »çºããŸããããã®çµæãaudit.mdãžã®æžã蟌ã¿ãäžå®å®ã«ãªã£ãããèŠä»¶å®çŸ©ãã¡ã€ã«ãžã®ææãç¹°ãè¿ããŠãã¢ãŠããããã«åæ ãããªãããšããããŸããã 察çãšããŠãã³ã³ããã¹ãã®äœ¿çšéãæããããã«ã«ãŒã«ãã¡ã€ã«ãåå²ããŠå¿
èŠãªã¿ã€ãã³ã°ã§ã®ã¿èªã¿èŸŒãæ¹åŒã«ãããããµããšãŒãžã§ã³ããæŽ»çšããŠåŠçã忣ããããªã©ã®å·¥å€«ãå¿
èŠã§ãã ã¬ãã¥ãŒè² è·ãžã®å¯Ÿå¿ AIã®ã¢ãŠããããéãå¢ããããšã§ã人éã®ã¬ãã¥ãŒè² è·ãå¢å€§ãããšãã課é¡ããããŸãããã®èª²é¡ã«å¯ŸããŠã¯ã以äžã®ã¢ãããŒããæ€èšããŠããŸãã ã¬ãã¥ãŒã軜æžããããã»ã¹ã®æ§ç¯: èªåãã¹ããLintã®æŽ»çš AIã®åºåå質ãäžãã工倫: ããã³ããã®æ¹åãã«ãŒã«ã®æŽå 段éçãªã¬ãã¥ãŒ: åã¹ããŒãžã§ã®æ¿èªã«ãã忣 ãããã®æé©è§£ã¯ãããŒã ããããã¯ãã«ãã£ãŠç°ãªããããç¶ç¶çã«æ¹åããŠããå¿
èŠããããŸãã æåŸã« AI-DLCã¯ãAIãæŽ»çšããéçºã«ããããããã«ããã¯ãç¹å®ããè§£æ¶ããŠãããããã®ãã¬ãŒã ã¯ãŒã¯ãšããŠææã ãšæããŠããŸãã ä»åèŠããŠãã課é¡ã¯AI-DLCã®ãã¬ãŒã ã¯ãŒã¯èªäœã®åé¡ã§ã¯ãªããAIãšäººéãååããäžã§å¿
ç¶çã«çºçããåé¡ã§ããä»åŸãç¶ç¶çã«æŽ»çšããªãããããŒã ã«æé©ãªåœ¢ã«ã«ã¹ã¿ãã€ãºããŠãããããšèããŠããŸãã
ãã®èšäºã¯ every Tech Blog Advent Calendar 2025 ã® 27 æ¥ç®ã®èšäºã§ãã ã¯ããã« ããã«ã¡ã¯ããªããŒã«ããéçºéšã®æž
æ°Žã§ãã ç§ãã¡ã¯å°å£²åããµãŒãã¹ãLaravelã§éçºããŠããŸãã ãã®ãããžã§ã¯ãã§ã¯Git hooksã®pre-commitèšå®ã䜿çšããŠã³ãããã®ã¿ã€ãã³ã°ã§Laravel Pint, LarastanãåŒã³åºãããšã§ã³ãŒãåè³ªãæŽããããã®ä»çµã¿ã䜿çšããŠããŸãã ãã®ä»çµã¿ã®ããŒã¹ã¯ããããžã§ã¯ãåæã«æŽåããããã®ãåŒãç¶ãã ãã®ã§ãä»åãã®å
容ãèŠçŽããªããæŽçããŸããã ã¡ããã©è¯ãæ©äŒã§ããã®ã§ãæ¬èšäºã§ç§ãã¡ã䜿çšããŠããèšå®å
容ãã玹ä»ããããŸãã Git hooksãšã¯ïŒ Git hooksãšã¯ãgit commit ã git push ãªã©ã® Git æäœããã£ããã«ãèªåã§ã¹ã¯ãªãããå®è¡ã§ããä»çµã¿ã§ãã ã³ãããåã«ãã§ãã¯åŠçãæããªã©ãäººã®æäœãã¹ãé²ãããã®èªååŠçãçµã¿èŸŒãçšéã§äœ¿ãããŸãã https://git-scm.com/docs/githooks Laravel Pintãšã¯ïŒ Laravel Pint ã¯ãLaravelå
¬åŒãæäŸããŠãã PHPã³ãŒãã®èªåãã©ãŒããã¿ãŒã§ãã æ±ºããããã³ãŒãã£ã³ã°èŠçŽïŒLaravel / PSR-12 ãªã©ïŒã«åŸã£ãŠãPHPã³ãŒãã®æžãæ¹ãèªåçã«çµ±äžããŸãã https://laravel.com/docs/12.x/pint Larastanãšã¯ïŒ Larastan ã¯ãPHP ã®éçè§£æããŒã« PHPStan ã Laravel åãã«æ¡åŒµããããŒã«ã§ãã ã³ãŒããå®è¡ããã«è§£æããååšããªãããããã£ãåã®äžæŽåãªã©ã®åé¡ãäºåã«æ€åºããŸãã https://github.com/larastan/larastan ã³ããããè¡ã£ãæã®åŠçã®æµã git commitãå®è¡ãããšãGit hooksã®pre-commitããã¯ãèµ·å ã³ããã察象ã®PHPãã¡ã€ã«ãååŸ Laravel Pintã«ãããã©ãŒããããã§ã㯠Larastanã«ããéçè§£æ 3 or 4ã®ãã§ãã¯ã§ãšã©ãŒãæ€åºãããå Žåãã³ããããäžæ å
šãŠã®ãã§ãã¯ããã¹ããå Žåã®ã¿ãã³ããããå®äº pre-commitèšå®å
容 #!/bin/sh set -eu # --- 1) ã³ããã察象ïŒã¹ããŒãžæžã¿ïŒã®PHPãã¡ã€ã«ã ãæŸã --- php_files=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.php$' || true) # PHPãã¡ã€ã«ããªããã°äœãããªã if [ -z "$php_files" ]; then exit 0 fi echo "ã³ããã察象ã®PHPãã¡ã€ã«ããã§ãã¯ããŠããŸã..." # --- 2) PintïŒãã©ãŒããããã§ãã¯ïŒä¿®æ£ã¯ããªãïŒ --- echo "Pintã§ãã©ãŒãããããã§ãã¯ããŠããŸã..." if ! echo "$php_files" | xargs ./vendor/bin/pint --test; then echo "" echo "â ãã©ãŒããããšã©ãŒããããŸãã" echo " 以äžã®ã³ãã³ãã§ä¿®æ£ããŠãã ããïŒ" echo " make lint" exit 1 fi echo "â ãã©ãŒããããã§ã㯠OK" # --- 3) LarastanïŒéçè§£æ --- if echo "$php_files" | grep -qE '^app/'; then echo "Larastanã§éçè§£æãå®è¡ããŠããŸã..." if ! ./vendor/bin/phpstan analyse --no-progress --memory-limit=1G; then echo "" echo "â éçè§£æãšã©ãŒããããŸãã" echo " ãšã©ãŒãä¿®æ£ããŠããå床ã³ãããããŠãã ããã" exit 1 fi echo "â éçè§£æ OK" fi echo "" echo "â å
šãŠã®ãã§ãã¯ãå®äºããŸããã" exit 0 Makeã³ãã³ãã®çŽ¹ä» ã³ãããã®ã¿ã€ãã³ã°ã ãã§ã¯ãªããæåã§Laravel Pint, Larastanãå®è¡ãããå Žé¢ããããŸãã 以äžã®Makeã³ãã³ãã§å®è¡ã§ããããã«ããŠããŸãã # ã³ãŒãã¹ã¿ã€ã«ãã§ãã¯&ä¿®æ£ lint: @files=$$(git diff --cached --name-only --diff-filter=ACM | grep "\.php$$" | sed "s|^$$(basename $$(pwd))/||"); \ if [ -n "$$files" ]; then \ docker compose -f $(COMPOSE_FILE) exec -T $(CONTAINER_PHP) sh -c "./vendor/bin/pint $$files"; \ else \ echo "ã¹ããŒãžãããPHPãã¡ã€ã«ããããŸãã"; \ fi # ã³ãŒãã¹ã¿ã€ã«ãã§ã㯠lint-check: @files=$$(git diff --cached --name-only --diff-filter=ACM | grep "\.php$$" | sed "s|^$$(basename $$(pwd))/||"); \ if [ -n "$$files" ]; then \ docker compose -f $(COMPOSE_FILE) exec -T $(CONTAINER_PHP) sh -c "./vendor/bin/pint --test $$files"; \ else \ echo "ã¹ããŒãžãããPHPãã¡ã€ã«ããããŸãã"; \ fi # éçè§£æ larastan: docker compose -f $(COMPOSE_FILE) exec $(CONTAINER_PHP) ./vendor/bin/phpstan analyse --memory-limit=1G å®éã«ã³ãããããæµã Laravel Pint, Larastanã§åŒŸãããå
容ã®ã³ãŒããäœæ <?php namespace App\Http\Controllers; // importãååé ã«ãªã£ãŠããªã use Retailapp\Common\Models\User; use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; class TestController extends Controller { public function index () : JsonResponse { $ user = User :: find ( 1 ) ; $ name = $ user -> undefined_property; // ååšããªãããããã£ãåŒã³åºããŠãã return response () -> json ([ 'name' => $ name ]) ; } } ã³ãããã詊ã¿ããšããã©ãŒããããšã©ãŒã§åŒŸããã % git commit -m '匟ãããŠã»ããã³ããã' ã³ããã察象ã®PHPãã¡ã€ã«ããã§ãã¯ããŠããŸã... Pintã§ãã©ãŒãããããã§ãã¯ããŠããŸã... ⚯ ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ Laravel FAIL ............................................. 1 file, 1 style issue ⚯ app/Http/Controllers/TestController.php no_unused_imports, ordered_import⊠â ãã©ãŒããããšã©ãŒããããŸãã 以äžã®ã³ãã³ãã§ä¿®æ£ããŠãã ããïŒ make lint pintã§èªåçã«ä¿®æ£ % make lint â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ Laravel FIXED ...................................... 1 file, 1 style issue fixed â app/Http/Controllers/TestController.php no_unused_imports, ordered_import⊠ããäžåºŠã³ããããããšãä»åºŠã¯Larastanã§åŒŸããã % git commit -m '匟ãããŠã»ããã³ããã' ã³ããã察象ã®PHPãã¡ã€ã«ããã§ãã¯ããŠããŸã... Pintã§ãã©ãŒãããããã§ãã¯ããŠããŸã... ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ Laravel PASS ............................................................ 1 file â ãã©ãŒããããã§ã㯠OK Larastanã§éçè§£æãå®è¡ããŠããŸã... ------ -------------------------------------------------------------------------- Line Http/Controllers/TestController.php ------ -------------------------------------------------------------------------- :14 Access to an undefined property Retailapp\Common\Models\User::$undefined_property. ð¡ Learn more: https://phpstan.org/blog/solving-phpstan-access-to-undefined-property ------ -------------------------------------------------------------------------- [ERROR] Found 1 error â éçè§£æãšã©ãŒããããŸãã ãšã©ãŒãä¿®æ£ããŠããå床ã³ãããããŠãã ããã Larastanã«éåããéšåãä¿®æ£ <?php namespace App\Http\Controllers; use Illuminate\Http\JsonResponse; use Retailapp\Common\Models\User; class TestController extends Controller { public function index () : JsonResponse { $ user = User :: find ( 1 ) ; $ name = $ user -> name ; // ä¿®æ£ return response () -> json ([ 'name' => $ name ]) ; } } ã³ãããæå % git commit -m 'éã£ãŠã»ããã³ããã' ã³ããã察象ã®PHPãã¡ã€ã«ããã§ãã¯ããŠããŸã... Pintã§ãã©ãŒãããããã§ãã¯ããŠããŸã... . ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ Laravel PASS ............................................................ 1 file â ãã©ãŒããããã§ã㯠OK Larastanã§éçè§£æãå®è¡ããŠããŸã.. [OK] No errors â éçè§£æ OK â å
šãŠã®ãã§ãã¯ãå®äºããŸããã ãããã« æ¬èšäºã§ã¯ãç§ãã¡ã® Laravel ãããžã§ã¯ãã§äœ¿çšããŠãã Git hookã®pre-commit èšå®ãšããã®äžã§ Laravel Pintã»Larastan ãã©ã®ããã«çµã¿èŸŒãã§ããããã玹ä»ããŸããã åæ§ã®ä»çµã¿ãæ€èšãããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã æåŸãŸã§ãèªã¿ããã ããŸããŠããããšãããããŸããã
åç»
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã












