仿§é§åéçºãžã®æçïŒãªã2025幎ã«ãŠã©ãŒã¿ãŒãã©ãŒã«ã埩掻ããã®ã
å°å ¥ïŒæ¢èŠæã®ãã䞻匵
SNSãæè¡èšäºã§ã仿§é§åéçºããšããèšèãç®ã«ããããã«ãªã£ããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã䜿ã£ãéçºã«ãããŠãã仿§ããã¹ãŠç¢ºå®ããŠããéçºãããã人ã¯ä»æ§ãèªã¿å€æŽããã ãã«ããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯ä»æ§ãèªã¿åã£ãŠã³ãŒããä¿®æ£ãããã人ã¯ã³ãŒããè§Šããªãããšãã£ã䞻匵ã ã
ãã®äž»åŒµãç®ã«ããç¬éãç§ã¯åŒ·ãéåæãèŠãããããã¯ããŠã©ãŒã¿ãŒãã©ãŒã«ã§ã¯ãªããïŒ
ãœãããŠã§ã¢éçºã®æŽå²ãæ¯ãè¿ãã°ããŠã©ãŒã¿ãŒãã©ãŒã«ããã¢ãžã£ã€ã«ããšã¯ã¹ããªãŒã ããã°ã©ãã³ã°ïŒXPïŒãžãšç§»è¡ããŠããçµç·¯ããããå®è£ ããã®ãã£ãŒãããã¯ã®éèŠæ§ã仿§ãšå®è£ ã®çžäºäœçšãç¶ç¶çãªæ¹åââãããã®ç¥èŠãç¡èŠããŠãåã³ã仿§ãå ã«ãã¹ãŠæžãããšããæ¹åã«åããã®ã¯ãæŽå²ã®éè¡ã«çããã®ã§ã¯ãªããã
仿§é§åéçºãšã¯äœã
ã仿§é§åéçºïŒSpecification-Driven Development, SDDïŒãã¯ã2025幎7æã«Amazon Web ServicesïŒAWSïŒããªãªãŒã¹ããçµ±åéçºç°å¢ãKiroãã§æå±ãããéçºææ³ã ãå幎9æã«ã¯GitHubãåæ§ã®ææ³ã«åºã¥ããGitHub Spec Kitããå ¬è¡šããæ¥æ¬ã§ãKDDIç³»äŒæ¥ãå°å ¥ãéå§ããã
Kiroã®ã¯ãŒã¯ãããŒã¯èŠä»¶ â èšèš â å®è£ ãšãã3段éã§æ§æãããã仿§ããçå®ã®æºïŒSource of TruthïŒããšäœçœ®ä»ãããããã¥ã¡ã³ã第äžãã®ã¢ãããŒããæ¡çšããŠããã人éãšAIã®å ±éèšèªãšããŠä»æ§ãæ±ããããããã³ãŒããçæãããã
ãã®ææ³ã泚ç®ãããèæ¯ã«ã¯ãããã€ãã³ãŒãã£ã³ã°ããžã®å±æ©æããããAIã«ææ§ãªæç€ºãåºããŠã³ãŒããçæãããææ³ã¯ãå€§èŠæš¡ã³ãŒãããŒã¹ã§æ··ä¹±ãæããå質ãšã¡ã³ããã³ã¹æ§ã®æžå¿µãçãã仿§é§åéçºã¯ã**ãç¡ç§©åºãªAI掻çšãvsã仿§é§åéçºã**ãšããäºé 察ç«ã®æ§å³ã§èªãããããšãå€ãã
æŽå²ã®ç®èïŒãªã2025幎ã«ãŠã©ãŒã¿ãŒãã©ãŒã«ã埩掻ããã®ã
ãœãããŠã§ã¢éçºã®æŽå²ãæ¯ãè¿ããšããŠã©ãŒã¿ãŒãã©ãŒã«ã¢ãã«ã¯é·ããäž»æµã ã£ããèŠä»¶å®çŸ© â èšèš â å®è£ â ãã¹ããšããé æ¬¡çãªããã»ã¹ã¯ã建ç¯ãè£œé æ¥ããåçšãããã¢ãããŒãã ã
ãããããã®ã¢ãã«ã«ã¯èŽåœçãªåé¡ããã£ããå®è£ 段éã§åããŠçºèŠãããåé¡ãå€ãããã®ã ã仿§ãææ§ã ã£ãããæè¡çã«å®çŸäžå¯èœã ã£ããããŠãŒã¶ãŒã®ããŒãºãšä¹é¢ããŠãããââããããåé¡ã¯ãå®éã«ã³ãŒããæžããŠã¿ãªããšåãããªãã
ã¢ãžã£ã€ã«ãXPãéçããçç±ã¯ããŸãã«ãã®ç¹ã«ããã仿§ãšå®è£ ã®éã«ã¯è€éãªãã£ãŒãããã¯ã«ãŒãããããäž¡è ãåŸåŸ©ããªããæ¹åããŠããããšããè¯ããœãããŠã§ã¢ãäœãéµã ãšçè§£ãããããã«ãªã£ãã
ãšããã2025幎ããèŠä»¶ â èšèš â å®è£ ããšãããŠã©ãŒã¿ãŒãã©ãŒã«çãªã¯ãŒã¯ãããŒãåã³ç»å Žãããããã¯æŽå²ã®ç®èãšããèšãããããªãã
ãªã人ã¯ã仿§ãå ã«æžãã°è§£æ±ºããããšããå¹»æ³ã«ç¹°ãè¿ãé¥ãã®ã
ãã®çŸè±¡ã®èåŸã«ã¯ã人éã®å¿çãé¢ä¿ããŠãããšç§ã¯èããŠããã
è€éæ§ãžã®ææââãœãããŠã§ã¢éçºã¯æ¬è³ªçã«è€éã ããã®è€éæ§ãšåãåãããšã¯ãäžç¢ºå®æ§ãæ··æ²ã«èããããšãæå³ãããã仿§ãå ã«ãã¹ãŠæžãããšããã¢ãããŒãã¯ããã®äžç¢ºå®æ§ãæé€ã§ãããšããå¹»æ³ãäžããã
äºæž¬å¯èœæ§ãžã®æžæââãããžã§ã¯ã管çè ãã¹ããŒã¯ãã«ããŒã¯ãäºæž¬å¯èœãªããã»ã¹ãæããã仿§ã確å®ããã°ãããšã¯æ©æ¢°çã«å®è£ ããã ãããšããå³åŒã¯ãéåžžã«é åçã«æ ãã
極端ããæ¥µç«¯ãžã®æ¯ãââããã€ãã³ãŒãã£ã³ã°ããšããç¡ç§©åºãžã®ååãšããŠãã仿§é§åéçºããšããç§©åºãžã®éé¿ãèµ·ãããããããé©åãªè€éæ§ãšã®åãåãæ¹ã¯ãåŸã ã«ããŠäžåºžã«ããã
Martin Fowlerã®æçè«ïŒæš©åšããã®æ¹å€
è峿·±ãããšã«ãèåãªãœãããŠã§ã¢ãšã³ãžãã¢ã§ããMartin Fowlerã®ããã°ã«ã¯ãBirgitta Böckelerã«ãã仿§é§åéçºã®æ¹å€çè©äŸ¡ãæ²èŒãããŠããã
圌女ã¯å®éã«Kiroãšspec-kitã詊çšãã以äžã®åé¡ãææããŠããïŒ
éå°ãªè€éæ§
å°ããªãã°ä¿®æ£ã«å¯ŸããŠãKiroã¯4ã€ã®ãŠãŒã¶ãŒã¹ããŒãªãŒãš16åã®åãå ¥ãåºæºãçæããã圌女ã¯ããã**ãéãæã€ã®ã«ãã³ããŒã䜿ãïŒsledgehammer to crack a nutïŒã**ãšè¡šçŸããŠããã
ã€ãŸããå°ããªã¿ã¹ã¯ã«ã¯éå°ã§ã倧ããªã¿ã¹ã¯ã«ã¯äžååââé©çšç¯å²ã極ããŠçããšããããšã ã
éæ±ºå®æ§ã®åé¡
ããã«èŽåœçãªã®ã¯ãLLMïŒLarge Language ModelïŒã®éæ±ºå®æ§ã ãã©ãã ã詳现ãªä»æ§ãæžããŠããå®è¡ã®ãã³ã«AIãç°ãªãã³ãŒããçæããå¯èœæ§ãããã
"Because of the non-deterministic nature of this technology, there will always remain a very non-negligible probability that it does things that we don't want"
ãã®ææã¯æ¬è³ªçã ã仿§ãã©ãã ãå®ç§ã§ããLLMã®éæ±ºå®æ§ã«ããåçŸæ§ãä¿èšŒãããªããªããçµå±ã®ãšããå®è£ ãèŠãŠä¿®æ£ãããã£ãŒãããã¯ã«ãŒããäžå¯æ¬ ã«ãªãã
éå»ã®å€±æïŒã¢ãã«é§åéçºïŒMDDïŒ
èšäºã§ã¯ãã¢ãã«é§åéçºïŒModel-Driven Development, MDDïŒãšããéå»ã®è©Šã¿ã«ãèšåãããŠãããã¢ãã«é§åéçºããŸããã¢ãã«ïŒä»æ§ïŒããèªåçã«ã³ãŒããçæããããšããã¢ãããŒãã ã£ãããåºãæ®åããããšã¯ãªãã£ãã
æŽå²ã¯ç¹°ãè¿ãã
æœè±¡åã®é²åïŒNext.jsããåŠã¶æèš
æœè±¡åã¯äžåºŠã§å®ç§ã«ã§ãããã®ã§ã¯ãªããå®è£ ããã®ãã£ãŒãããã¯ãåããŠã段éçã«æ¹åããŠãããã®ã ã
Reactéçºè ã§ããSebastian MarkbÃ¥geæ°ã®æ ŒèšãããïŒ
ãééã£ãæœè±¡åããå埩ãããããæœè±¡åããªãç¶æ ããå埩ããæ¹ãç°¡åã
ãã®æŽå¯ã¯ãNext.jsã®ãã£ãã·ã³ã°æŠç¥ã®å€é·ã«åŠå®ã«çŸããŠããã
Next.jsã®3段éã®é²å
v13-14: æé»çãªCacheïŒéçºè ãæèããªãæœè±¡åïŒ
åœåãNext.jsã¯ãéçºè ããã£ãã·ã¥ãæèããªããŠããèªåçã«æé©åãããããšããçæ³ãæ²ããããããçŸå®ã«ã¯ïŒ
v14-15: 段éçãªæ¹åïŒããã¥ã¡ã³ããããã©ã«ã倿ŽïŒ
ã³ãã¥ããã£ã®ãã£ãŒãããã¯ãåããŠã段éçã«æ¹åïŒ
ãããããããã¯å¯Ÿççæ³ã«éããªãã£ãã
v16: "use cache"ã«ããæç€ºçãªæœè±¡å
æ ¹æ¬çãªèšèšå€æŽãšããŠã"use cache"ãã£ã¬ã¯ãã£ããå°å ¥ãæé»çïŒOpt-outïŒããæç€ºçïŒOpt-inïŒãžã®è»¢æã«ãããéçºè ãæå³ããå Žæã§ã®ã¿ãã£ãã·ã¥ãåãããã«ãªã£ãã
æèšïŒå®ç§ãªä»æ§ã¯äºåã«æžããªã
Next.jsããŒã ã¯åœåããéçºè ãæèããªãããšãã仿§ïŒèšèšææ³ïŒãæ²ãããããããå®è£ ããŠã¿ãŠãå®éã«ãŠãŒã¶ãŒã䜿ã£ãŠã¿ãŠãåããŠãã®ä»æ§ã®åé¡ãæããã«ãªã£ãã
æœè±¡çã«ã¯æç«ããŠããèšèšããå ·äœåããããšãããšççŸãææ§ããé²åããââããã¯å€ãã®éçºè ãçµéšçã«ç¥ã£ãŠããããšã ã
æ°å¹ŽãããŠã³ãã¥ããã£ã®ãã£ãŒãããã¯ãåããPPRïŒPartial Pre-RenderingïŒãšããæ°ããçºèŠãçµãŠãããããåªããæœè±¡åã«å°éããã
ããNext.jsããŒã ãã仿§ãå ã«å®ç§ã«ç¢ºå®ããŠããå®è£ ãããã¢ãããŒããåã£ãŠãããããã®é²åã¯èµ·ãããªãã£ãã ããã
éæ±ºå®æ§ãšã¹ã±ãŒã«ã®åé¡ãæãäžãã
ããã§ãç§èªèº«ããæ¬åœã«äžå¯èœãªã®ãïŒããšããçåãæã£ããäœããã®å·¥å€«ã§ã仿§é§åéçºãæ©èœãããããšã¯ã§ããªãã ãããã
å šçæ vs å·®åãã€ã°ã¬ãŒã·ã§ã³
äŸãã°ã仿§ãããã¹ãŠã®ã³ãŒãã宣èšçã«çæããã®ã§ã¯ãªãã仿§ã®å·®åã«å¯Ÿããæ¢åã³ãŒãã®ãã€ã°ã¬ãŒã·ã§ã³ãšããŠæããã°ã©ãã ãããïŒæ¢åã®ã³ãŒãããŒã¹ã«å¯ŸããŠã仿§ã®å€æŽãåæ ãã圢ã§AIããã€ã°ã¬ãŒã·ã§ã³ãè¡ãã
ãããªããããçšåºŠã¯å®çŸå¯èœãªæ°ãããã
ããããããã«åé¡ãèŠããŠããã仿§ã®å€æŽãæ¢åã®å®è£ æ§é ãšççŸããå Žåãã©ã察åŠããã®ãïŒæ§é äžã®èŽåœçãªççŸãå ¥ã蟌ããªã¹ã¯ããããçµå±ã®ãšãã人éã«ããæ€èšŒãå¿ é ã«ãªãã
ãã€ã¯ããµãŒãã¹ã¬ãã«ãªãïŒ
ã§ã¯ãã¹ã±ãŒã«ãéå®ããã°ã©ãã ããïŒäŸãã°ãEventDrivenã¢ãŒããã¯ãã£ã«ããã1ãµãŒãã¹ã¬ãã«ã®ç²åºŠââååã«å°ãããç¬ç«æ§ãé«ããå¢çãæç¢ºãªã³ã³ããŒãã³ãã
ãã®ãµã€ãºãªãã仿§é§åãæ©èœããã®ã§ã¯ãªããïŒ
ã ãããããããFowlerã®ææãã**ãã¹ã±ãŒã«ã®åé¡ã**ã ãå°ããããã¿ã¹ã¯ã«ã¯éå°ã§ã倧ããªã¿ã¹ã¯ã«ã¯äžååãé©çšç¯å²ã極ããŠçãã
ãã§ããããããã°...ããšèããããªãå¿çââããèªäœããéã®åŒŸäžžãæ±ããæ¬²æãªã®ãããããªããè€éæ§ããéããããšããæ¬²æããç§ãã¡ãç¹°ãè¿ãåãå¹»æ³ã«å°ãã
æ¬è³ªçãªåãïŒäœãå€ãã£ãŠãäœãå€ãããªãã®ã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ç»å Žã«ãã£ãŠã確ãã«äœããå€ãã£ãããããããã¹ãŠãå€ãã£ãããã§ã¯ãªãã
ãã®åãã«çãããããéçºè ã®èªç¥æ§é ãèããŠã¿ãããéçºè ã®èªç¥ã¯**ã³ã³ã»ããã¢ãã«ïŒããã¹ãå§¿ïŒãšãããã¯ã·ã§ã³ã¢ãã«ïŒçŸç¶ã®çè§£ïŒ**ãšãã2ã€ã®ã¢ãã«ããæ§æãããã仿§é§åéçºã«ãããã仿§ãã¯ããŸãã«ãã®ã³ã³ã»ããã¢ãã«ãæããŠããã
仿§é§åéçºã®åé¡ã¯ãã³ã³ã»ããã¢ãã«ãå ã«å®ç§ã«æ§ç¯ããŠããäžæ°ã«ãããã¯ã·ã§ã³ã¢ãã«ã«åæ ããããšããç¹ã«ãããããã¯ãã£ãŒãããã¯ãåŸããããäž¡è ã®ä¹é¢ãæ¡å€§ããäžç¢ºå®æ§ãæå€§åãããââãŠã©ãŒã¿ãŒãã©ãŒã«ã倱æããçç±ãã®ãã®ã ã
å€ãã£ãããš
仿§âå®è£ ã®å€æã³ã¹ããåçã«äœäžããã
以åãªãæ°æéããã£ãŠããå®è£ ããæ°åã§å®äºãããã€ãŸããã³ã³ã»ããã¢ãã«ããããã¯ã·ã§ã³ã¢ãã«ã«åæ ãããµã€ã¯ã«ãçéã«ãªã£ãã
ãããã¿ã€ãã³ã°ãé«éåãã詊è¡é¯èª€ã®ãµã€ã¯ã«ãççž®ãããã
å€ãããªãããš
ãããã以äžã¯å€ãã£ãŠããªãïŒ
æ¬è³ªïŒã³ã³ã»ãããšãããã¯ã·ã§ã³ã®é«éåŸåŸ©
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®æ¬è³ªã¯ããã³ã³ã»ããã¢ãã«ãå ã«ç¢ºå®ãããããšã§ã¯ãªãããã³ã³ã»ããã¢ãã«ãšãããã¯ã·ã§ã³ã¢ãã«ãé«éã«åŸåŸ©ã§ãããããšã«ãããšç§ã¯èããŠããã
以åã¯ã仿§ïŒã³ã³ã»ããã¢ãã«ïŒã倿ŽããŠããå®è£ ïŒãããã¯ã·ã§ã³ã¢ãã«ïŒãæŽæ°ãããŸã§ã«æéãããã£ããã ããã仿§ãå ã«ç¢ºå®ãããããšãéèŠãããã
ãããä»ã¯ãäž¡è ãäœåºŠã§ãé«éã«åŸåŸ©ã§ãããã ããããããã£ãŒãããã¯ã«ãŒããåããªããäž¡è ãå ±é²åãããã¢ãããŒããå¯èœã«ãªã£ãã
å·®åããŒãã«ããããšã¯åççã«äžå¯èœã ïŒåžžã«å€éšããæ°ããªãã£ãŒãããã¯ãå ¥ããã³ã³ã»ããã¢ãã«ãå ã«é²ãã§ããŸãïŒãéèŠãªã®ã¯ãå·®åãå°ããä¿ã¡ãæ±ããããããããšãªã®ã ã
DDDãšã³ã³ããã¹ãã®å¶çŽ
ãã¡ã€ã³é§åèšèšïŒDDDïŒã®èгç¹ãããã仿§é§åéçºã«ã¯çåããããEric Evansã匷調ãããŠããã¿ã¹èšèªã¯ããã¡ã€ã³ãšãã¹ããŒããéçºè ããããŠã³ãŒãã®éã§å ±æããããããã¯ä»æ§ãšã³ãŒããåé¢ããŠããªãããšãæå³ããã
ã³ãŒãããŒã¹ãšææžã®äž¡æ¹ãã¡ã³ããã³ã¹å¯Ÿè±¡ãšãããšããã©ã¡ããæ£ãããããšããèªç¥è² è·ã®æºæ³ãçããã ãã®èгç¹ãããæ£ã®æ å ±æºïŒSource of TruthïŒã¯ã³ãŒãããŒã¹ã«éå®ãã¹ãã ãèšèšæ¡ãADRãªã©ã®ææžã¯ãæ€èšã®èšé²ããšããŠæ®ãããç¶ç¶çãªã¡ã³ããã³ã¹å¯Ÿè±¡ãšã¯ããªãåæãæç¢ºã«ããŠããããšã§ãå·®åè² è·ã®å¢å€§ãé²ããã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããšã®å¯Ÿè©±ã«ãããŠãåæ§ã ãLLMã«ã¯ã³ã³ããã¹ããµã€ãºã®å¶çŽãããã仿§æžãšã³ãŒãã®äž¡æ¹ãèªãŸããã®ã¯ã³ã³ããã¹ããæµªè²»ãããã³ãŒãããŒã¹ã«ååãªæ§é ãšæå³ã衚çŸãããŠããã°ãAIã¯ã³ãŒãããŒã¹ãèªãããšã§ãããã¯ã·ã§ã³ã¢ãã«ãçè§£ã§ããã
第äžã®éïŒä»æ§ã»å®è£ å ±é²åã®ã¢ãããŒã
ããã€ãã³ãŒãã£ã³ã°ãã§ãã仿§é§åéçºãã§ããªãã第äžã®éãããã仿§ãšå®è£ ãé«éã«åŸåŸ©ããã¢ãããŒãã ã
äŸãã°ãèªèšŒæ©èœã远å ããå ŽåããŠã©ãŒã¿ãŒãã©ãŒã«çã«ã¯ãOAuth 2.0ãJWTããªãã¬ãã·ã¥ããŒã¯ã³ãã»ãã·ã§ã³ç®¡ç...ãããã¹ãŠå ã«èšèšãããããã仿§ã»å®è£ å ±é²åã§ã¯ããŸãããŠãŒã¶ãŒã¯ã¡ãŒã«ã¢ãã¬ã¹ãšãã¹ã¯ãŒãã§ãã°ã€ã³ã§ããããšããæå°éã®ã³ã³ã»ããã¢ãã«ããå§ãããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«å®è£ ãããçæãããã³ãŒããèŠãŠãããŒã¯ã³ã®ä¿åã¯localStorageããã§ãXSS察çã§httpOnlyã¯ãããŒã«ãã¹ãã§ã¯ïŒããšæ°ã¥ããã³ã³ã»ããã¢ãã«ãæŽæ°ããåå®è£ ããã®ãµã€ã¯ã«ãé«éã«åãããšã§ãå·®åãå°ããä¿ã¡ãªããæ®µéçã«æŽç·ŽãããŠããã
ãããã¯ã·ã§ã³ã¢ãã«ããã®ãã£ãŒãããã¯ããªããã°ãè¯ãã³ã³ã»ããã¢ãã«ã¯æžããªãã
çµè«ïŒãã£ãŒãããã¯ã«ãŒããããæ¬è³ª
仿§é§åéçºã®äž»åŒµè ãã¡ãèŠèœãšããŠããã®ã¯ãè€éæ§ã¯ä»æ§ãšå®è£ ã®çžäºäœçšã®äžã«ããååšãããšããããšã ã仿§ã詳现åããŠãè€éæ§ã¯æ¶ããªãã
éã®åŒŸäžžã¯ãªãã Fred Brooksã1986å¹Žã«ææãããã®ççã¯ã2025幎ã®ä»ã§ãå€ãããªããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããšãã匷åãªããŒã«ãæã«å ¥ããç§ãã¡ã¯ãã仿§ãæžãã°èªåçã«ã³ãŒããã§ããããšããå¹»æ³ã«é£ã³ã€ããããªãããããæŽå²ãæããŠãããã®ã¯ã極端ããæ¥µç«¯ãžã®æ¯ãã¯å€±æãããšããããšã ã
Next.jsã®ãã£ãã·ã³ã°æŠç¥ã®é²åããŠã©ãŒã¿ãŒãã©ãŒã«ããã¢ãžã£ã€ã«ãžã®ç§»è¡ããããŠä»åã®ä»æ§é§åéçºè«äºââããããã¹ãŠã«å ±éããã®ã¯ããã£ãŒãããã¯ã«ãŒãã®éèŠæ§ã ãå®è£ ããã®ãã£ãŒãããã¯ãåããŠä»æ§ãæ¹åãã仿§ã®æå³ãå®è£ ã«åæ ãããŸããã£ãŒãããã¯ãåããããã®åŸªç°ããããè¯ããœãããŠã§ã¢ãçã¿åºãéµã§ããã
