
æå³é§åèšèš(IDD) çµç« â ãããã« ã æå³ãšãããåºçºç¹
ð é£èŒãæå³é§åèšèšïŒIDDïŒãå š20ç« ã®äžéšã§ã
⌠GitHub ã§ãå
¬éããŠããŸã
https://github.com/okawa14all/intent-driven-design
æåŸã«ããã®æ¹æ³è«ããã©ãããæ¥ãã®ãã話ãããã
ç§ã®ããã¯ã°ã©ãŠã³ãã¯ããœãããŠã§ã¢éçºã ãã³ãŒããæžãããšããå§ãŸããäºå代ã§äŒç€Ÿã®çµå¶ã«æºããããã«ãªã£ãŠããã¯ãçµç¹ãã€ããããšã«ããæ·±ãé¢ãã£ãŠãããéçºãšãçµç¹éçºããã®äž¡æ¹ããäºå幎è¿ããè¡ãæ¥ããŠããã
è¿å¹ŽãAIãšãŒãžã§ã³ãã®å°å ¥ããçŸå Žã§æšãé²ãããªãã§ãã²ãšã€ãã¯ã£ãããšæããããšããããAIãšãŒãžã§ã³ãã®å°å ¥ã¯ããœãããŠã§ã¢éçºãšãããããçµç¹éçºã ããšããããšã ã
èããŠã¿ãã°ãåœç¶ã ã£ãããšãŒãžã§ã³ããå ¥ãããšããç§ãã¡ãæ¬åœã«åãåã£ãŠããã®ã¯ãæè¡ã§ã¯ãªããåãã¯ãã€ããããã ã£ããã©ããªåœ¹å²ãäžããããã©ãã³ãã¥ãã±ãŒã·ã§ã³ãèšèšããããäœãçµç¹ã®æšæºãšããã©ããªã¬ãŒãã¬ãŒã«ãèšããäŸå€ãã©ããšã¹ã«ã¬ãŒã·ã§ã³ããããåã ã®èœåããã©ã䌞ã°ãããæèã®ç°ãªãéšçœ²ãšãã©ã飿ºããããââã
ãããã¯ãç§ãçµç¹éçºã§ããã£ãšèããŠããããšãã®ãã®ã ã£ããçžæã人éãããšãŒãžã§ã³ããžããããã¯äººéãšãšãŒãžã§ã³ãã®æ··æãžãšå€ãã£ãŠããåãã®åœ¢ã¯ãé©ãã»ã©å€ãããªãã£ããæ¬æžã§æžããŠããããšã¯ãç ãè©°ããã°ããã®åããã¡ãžã®ãç§ãªãã®çãã ã
ãªãŒããŒã·ãããšãããçã
çµç¹éçºãç¶ãããªãã§ãç§ãæãéèŠã ãšèããããã«ãªã£ããã®ãããããªãŒããŒã·ããã ã
ç§ã¯ãããŸã§ãæ°å€ãã®åæ»ãããããžã§ã¯ãã«ããã³å ¥ã圹ãšããŠå ¥ããç«ãŠçŽããŠããããããŠããã®ã»ãŒãã¹ãŠã«ãå ±éããŠæ¬ ããŠãããã®ããã£ãããªãŒããŒã·ããã ã誰ãããã®ææããèªåã®ãã®ãšããŠåŒãåããŠããªããåªç§ãªäººãæããç«æŽŸãªèšç»ããã£ãŠãããªãŒããŒã·ãããæ¬ ãããããžã§ã¯ãã¯ãäŸå€ãªãåæ»ããŠããã
ãªãŒããŒã·ãããšã¯ãäœããç§ã®çè§£ã§ã¯ãããã¯ãææã«åãããæå³ãã ããããããããããããããããžããã©ãçãããããšãããåŒãåããããæå¿ããããæã€èª°ãããããã©ããããçµç¹ãåãããåæ»ããããåããã
æå³é§åèšèšââIntent-Driven Designââãšããååã¯ãããããæ¥ãŠãããçµç¹ãåããã®ã¯ãæè¡ã§ããèšç»ã§ãããªãœãŒã¹ã§ããªããæå³ã ãã ãããçµç¹ã®èšèšã¯ãæå³ããå§ããªããã°ãªããªããæ¬æžãã第äžã®ååã«ãæå³äž»æš©ãã眮ããã®ã¯ãäºå幎ãããŠãã©ãçããããã®ç¢ºä¿¡ããã ã£ãã
æå³ã¯ãæŸã£ãŠãããŠã¯äŒãããªã
ã ããããã«ãæ¬æžã貫ããŠããããäžã€ã®äž»é¡ãã絡ãã§ããã
æå³ãæºæ³ã ãšããŠââãã®æå³ã¯ãæŸã£ãŠãããŠããäŒãããªãã人ã«ãããšãŒãžã§ã³ãã«ãã
ãªããªããåºç« ã§æžããéãã人ã¯ãããããã®ä¿¡å¿µãšçµéšãšæèã®ãªãã«çããŠããŠããã®å€åŽãæ³åããããšããæ§é çã«é£ããããã ãç§ã¯ããããåããåããªãããšåŒãã ãæå³ãæã£ãŠããŠãããããçžæã«å±ããšã¯éããªããããããå±ããªãããšã®ã»ãããå€ããã ãããããåæ»ã¯èµ·ãããã ãããããAIãšãŒãžã§ã³ãã¯ããªãããºã¬ããçããè¿ãã
æå³ãšããåºçºç¹ãšãåããåããªããšããéå£ãæ¬æžã®å «ã€ã®ååããäžã€ã®ã¬ã³ãºããçªãè©°ããã°ããã®äºã€ã«å¿ããããã®ãã®ã ã£ããæå³ããæç€ºçã«æºæ³ããæµã(æå³äž»æš©)ãäžé ã®ããã ã«æ©ãæ¶ã(翻蚳局)ããºã¬ãæ©ãæã(æ€èšŒ)ãæéããããŠæºãçããŠãã(SDRC)ãæå³ããåããåããªããè¶ããŠãå±ãããããã®ããã®ãäœç³»çãªå·¥å€«ã ã£ãã
ãã¡ã³ã·ãŒãªAIã¹ããã
ãã®äž»é¡ã¯ãAIæä»£ã«ããã£ããåå®ã«ãªã£ãŠããã
AIãšãŒãžã§ã³ãã¯ãæè»œã«ãèŠæ ãã®ããã¢ãŠãããããäœã£ãŠããããæŽã£ãæç« ããããããèšç»ãåãã³ãŒããã ãââããã«ãäººã®æå³ãä»åšããªããã°ãçãŸããã®ã¯ããã¡ã³ã·ãŒãªã ãã®ã空çãªçæç©ã«ãããªããèŠãç®ã¯ç«æŽŸã ãã誰ã®äœã®ããã§ããªããAIã¹ããã(AIã®åãåºããŽã)ã ã
æå³ã®ãªããšããã«ãAIã¯ãããããããã®ããããã§ãéç£ãããã ããããã¯ãææã§ã¯ãªããææãšã¯ã誰ãã®æå³ããçŸå®ãåãããããšã®è¬ãã ãAIãã©ãã ãè³¢ããªã£ãŠãããã®äžç¹ââæå³ã®æºæ³ã人éã«ããããšââã¯ãå€ãããªãããããAIãè³¢ããªãã»ã©ãããããã空çãéç£ããåãå¢ãã¶ããæå³ã®æç¡ãããã£ããæ±ºå®çã«ãªãã
æå³ãæã€ããªãŒããŒãž
å°ãã ããèŠéãåºãããã
æ¥æ¬ã¯ããœãããŠã§ã¢ã匱ããšèšããããšã³ãžãã¢ã¯äžè¶³ããé«éœ¢åãšåŽå人å£ã®æžå°ãšãããéã課é¡ãæ±ããŠãããã ãããããAIã䜿ãåæ©ã¯ãã©ã®åœããã倧ããã¯ãã ãããŸã䜿ããã°ãããã¯ã倧ããªæ©äŒã«ãªãããã
ã ãããã®ããã«ã¯ãæè¡ãå°å ¥ããã ãã§ã¯è¶³ããªããæ¹åã§ã¯ãªããæ¹é©ãèŠãããããŠæ¹é©ã«ã¯ãæå³ãæã£ãŠããããåŒãåãããªãŒããŒãèŠããåæ»ãããããžã§ã¯ãã«æ¬ ããŠããããã®ãªãŒããŒã·ãããæã€äººããæè¡ã¯ã誰ã§ãè²·ãããã ããæå³ã¯ãè²·ããªããæå³ãæã¡ãåããåããªããè¶ããŠããããçµç¹ã«å±ããããšãã人ââãã®äººãããŠåããŠãAIã¯ãææã«å€ããã
æ¬æžã®ååãšæ¹æ³è«ãããããªäººãã¡ã«ãäœãã²ãšã€ã§ããã€ã³ã¹ãã¬ãŒã·ã§ã³ãäžãããããªããå°é£ã«çŽé¢ãããšãããã€ãç§ãå©ããŠãããã®ãå 人ãã¡ã®ç¥æµã ã£ãããã«ãæ¬æžãã誰ãã«ãšã£ãŠã®ããããããªç¥æµã«ãªãããªããããã«ãŸããåã³ã¯ãªãã
åŠã³ç¶ãã
æåŸã«ãæ£çŽãªããšãèšã£ãŠããããã
ãã®æ¹æ³è«ã¯ãå®æåœ¢ã§ã¯ãªããå€åã®ããŸãã«éããã®æä»£ãææ¥ã«ã¯å€ã³ãéšåãããã£ãšåºãŠããã ããã仿¥ãæ°žç¶ããããšæžããããšããèŠãæ¥ãæ¥ããããããªããããã§ããã
ãã ãããã€ãå€ã³ãããšæŒ ç¶ãšèšã£ãŠæžãŸããã®ã¯ãèª å®ã§ã¯ãªããã©ã®åæã厩ãããããã®æ¹æ³è«ã®ã©ããæºããã®ãââããããèªåã§åæãããŠãããããæ¬æžã¯ãäºã€ã®åæã®äžã«ç«ã£ãŠããã
ã²ãšã€ã¯ãäžé ãæ°žç¶ãããšãã䞻匵ã ãããã¯ãè«çã®å¿ ç¶ã§ã¯ãªãããå®ååã«ãã£ãŠä»äºãã·ã¹ãã ãžéããéãããããæ°ããéå®åã®ããã³ãã£ã¢ãçãŸããéãã®ã»ãããäžåãç¶ããããšãããçµéšçãªè³ãã®äžã«ç«ã£ãŠãããããŸã®ãšãããããã³ãã£ã¢ã¯çž®ãã©ããããåºããç¶ããŠããããšãŒãžã§ã³ããæ±ããã¿ã¹ã¯ã¯é·ããè€éã«ãªãããã®å ã«ã¯ãããã«é£ããæªç¥ãçŸãç¶ããŠãããã ãããããã€ããæ°ããä»äºã®çæãé æã¡ã«ãªããå®ååã ããé²ãæä»£ãæ¥ãã°ââäžé ã¯ã人ãšã·ã¹ãã ã®äºé ãžãšãéãã«ç³ãŸããŠããã ãããç§ã¯ãããã¯ãªããªãã»ãã«è³ããŠãããã ããããã¯è³ãã ã
ããã²ãšã€ã¯ãæå³ãšè²¬ä»»ã®æºæ³ãã人éã«ãããšããåæã ãããã¯ããšãŒãžã§ã³ããã©ãã ãè³¢ããªãããšæºãããªãââãšãç§ã¯èããŠãããã ãããã¯ãæè¡ã®åé¡ã§ã¯ãªãã責任ãšãããã®ããæçµçã«ã¯äººæ Œã«ããåž°å±ãããªãããšãããç§ãã¡ã®ç€ŸäŒã®ããã¡ã«äŸã£ãŠãããããããã®æ ¹æ¬ãå€ããæ¥ãæ¥ããªãââæå³äž»æš©ãšãããæ¬æžã®ç¬¬äžã®ååã¯ãæžãæããè¿«ãããã ããã
ãã®äºã€ã®åæããé ããã«çœ®ããŠãããããããããšã§ãæ¬æžã¯ãäœããã£ãŠãæ£ããããšãã空æåœ¢ã§ã¯ãªãããã©ãã厩ããããã©ãééããããèªåã§èªãããæ€èšŒå¯èœãªãã®ã«ãªããç®èãªããšã«ãããã¯æ¬æžããšãŒãžã§ã³ãã«æ±ããããšââæ€èšŒã§ãã圢ã§äžã«åºãââãšãåãèŠåŸã ãæ¹æ³è«ããŸãããã®äŸå€ã§ã¯ãªãã
å 人ãã¡ããå£ãæããŠãåŠã³ç¶ããããšã®å€§åããã説ããŠãããããã³ã°ããããšã¿ãããã®ææ³ã®æ ¹ã«ãçµãããªãåŠç¿ã眮ããŠãããç§ãããããããããæ¬æžããç³ç¢ã§ã¯ãªããå©ãå°ãšããŠå·®ãåºããç°è«ãæè¿ããå蚌ãæè¿ãããããŠç§èªèº«ãåŠã³ãæŽæ°ãç¶ããŠããã
æºã¯ãæ¶ããªããæå³ã¯ãæŸã£ãŠãããŠã¯äŒãããªããAIã¯ããŸããŸãè³¢ãããŸããŸã空çãéç£ããã
ããã§ãââãããã ããããã
æå³ãæºæ³ã«çœ®ããåããåããªãã«æ©ãæ¶ããªããã人ãšã·ã¹ãã ãšãšãŒãžã§ã³ããããšãã«ææãžåããããã®èšèšããããããããèãç¶ãããã
ããªããšãäžç·ã«ã
åèæç®
æ¬æžã¯ãããã€ãã®å 人ã®ç¥æµã«å€ããè² ã£ãŠãããåååãæºæµãšãããäžå¿çãªæç®ãæãããéŠèš³ã®ãããã®ã¯ãåºãæµéããŠããéŠèš³çãèšããã
ãœã·ãªãã¯ãã«ã«ã»ã·ã¹ãã è« â Tri-Optimization ã®æºæµ
Eric Trist & Ken Bamforth, "Some Social and Psychological Consequences of the Longwall Method of Coal-Getting," Human Relations, 1951.
ããšã¿çç£æ¹åŒ â èªèµ°åååã®æºæµ
倧éèäžãããšã¿çç£æ¹åŒââè±èŠæš¡ã®çµå¶ãããããŠããã€ã€ã¢ã³ã瀟ã1978幎.
å質管ç(ããã³ã°)ã»DevOps â Verification by Design ãš SDRC ã®æºæµ
W. Edwards Deming, Out of the Crisis, MIT Press, 1982.
Gene Kim, Jez Humble, Patrick Debois & John Willis èãæŠå地 ç£ä¿®ãThe DevOps ãã³ãããã¯ãæ¥çµBP瀟ã2017幎.(åè The DevOps Handbook, 2016)
ããŒã ã»ããããžãŒã»å¶çŽæ¡ä»¶ã®çè« â èªç¥è² è·ã®åé åã®æºæµ
ãã·ã¥ãŒã»ã¹ã±ã«ãã³ãããã¥ãšã«ã»ãã€ã¹ èãåç°éšéã»ã èš³ãããŒã ããããžãŒââ䟡å€ãããœãããŠã§ã¢ããã°ããå±ããé©å¿åçµç¹èšèšãæ¥æ¬èœçåäŒãããžã¡ã³ãã»ã³ã¿ãŒã2021幎.(åè Team Topologies, 2019)
ãšãªã€ãã»ãŽãŒã«ãã©ãã èãäžæ¬æšäº® èš³ãã¶ã»ãŽãŒã«ââäŒæ¥ã®ç©¶æ¥µã®ç®çãšã¯äœãããã€ã€ã¢ã³ã瀟ã2001幎.(åè The Goal, 1984)
ãã¡ã€ã³é§åèšèš â 翻蚳局ãšå¢çèšèšã®æºæµ
ãšãªãã¯ã»ãšãŽã¡ã³ã¹ èãä»é¢å ç£èš³ãåæºå³æ¡ã»ç§éç¥å èš³ããšãªãã¯ã»ãšãŽã¡ã³ã¹ã®ãã¡ã€ã³é§åèšèšãç¿æ³³ç€Ÿã2011幎.(åè Domain-Driven Design, 2003)
任忿®ã»ããªã³ã·ãã«ã»ãšãŒãžã§ã³ãçè« â æå³äž»æš©ã®æºæµ
任忿®(Auftragstaktik):ããã€ã»ã³ã»ãã€ãè»ã«ç±æ¥ããææ®ææ³ãç¹å®ã®åèã§ã¯ãªããè»äºçè«ã®ç³»èãšããŠåç §ããã
ããªã³ã·ãã«ã»ãšãŒãžã§ã³ãçè«:çµæžåŠã»çµç¹è«ã«ãããå¥çŽçè«ã®ç³»èã
ãã®ã»ããæ¬æžãäŸæ ããäž»èŠãªæŠå¿µ
èªç¥è² è·çè«:John Sweller, "Cognitive Load During Problem Solving," Cognitive Science, 1988.
ãã¶ã€ã³ãã¿ãŒã³:Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994.(éŠèš³ããªããžã§ã¯ãæåã«ãããåå©çšã®ããã®ãã¶ã€ã³ãã¿ãŒã³ããœãããã³ã¯)
å¡äŸ â åŒçšãšåŒ·èª¿ã«ã€ããŠ
æ¬æžã§ã¯ãåŒçšèšæ³(blockquote)ããéèŠãªåœé¡ã匷調ããããã«çšããŠãããããã«çœ®ãããæã¯ã次ã®ããããã§ããã
èè ç¬èªã®äž»åŒµã»åœé¡ â æ¬æžãæç€ºããååãå®çŸ©ãªã©ã
å 人ã®çè«ã®ãèè ã«ãããã©ãã¬ãŒãº â ãœã·ãªãã¯ãã«ã«ã»ã·ã¹ãã è«ãããŒã ã»ããããžãŒãå¶çŽæ¡ä»¶ã®çè«ããã¡ã€ã³é§åèšèšã任忿®ãªã©ã®äžæ žçãªèãããèè ãèŠçŽãããã®ãåå žããã®éèªåŒçšã§ã¯ãªãã
ãããã«å¯Ÿãã逿¬åŒ§ããã§å²ãŸããæ(ããã³ã°ãå質ãéæããããã«ãæ€æ»ã«äŸåããã®ãããããã倧éèäžãæšæºããªããã°ãæ¹åã¯ãªãããªã©)ã¯ãåå žã®èšèã«åºã¥ãåŒçšã§ããã
èŠããã«ââ逿¬åŒ§ã®ãªã匷調ã¯èè ã®èšèã逿¬åŒ§ã®ãã匷調ã¯åå žã®èšèããšèªãã§ããã ãããã