èæ¯ ããã«ã¡ã¯ããã£ãã£æ ªåŒäŒç€ŸD&Aéšã®å±±ïšåºä¹ãšç³ããŸãã çŸåšãçè
ãã®ããŒã ã§ã¯ããã£ãã£ã®ããã·ã§ã³ã§ãããã¢ãã¥ããç£æ¥ã®ããã³ã·ã£ã«ãè§£æŸãããããã®æ°ããã¢ãããŒãã«åãçµãã§ããŸããå
·äœçã«ã¯ã調éé åã®èª²é¡è§£æ±ºã«åãã仮説æ€èšŒïŒãã£ãŒãžããªãã£ã¹ã¿ãã£ïŒãéãã顧客ã«ãšã£ãŠã®çã®äŸ¡å€ãæ¢ãåœãŠãæ°èŠæ©èœã®ç«ã¡äžããã§ãŒãºã®çã£åªäžã§ãã ãã®æ€èšŒãµã€ã¯ã«ãåŸåã«é²ãã é ããã顧客ãžã®ãã¢ãªã³ã°ã®ããã«AIãšãŒãžã§ã³ããæŽ»çšãããã¢ã¢ããªãäœæãå§ããŸããã AIãšãŒãžã§ã³ãã䜿ã£ãéçºãšãããšãéçºæéã®ççž®ãã«ã°ããç®ãè¡ããã¡ã§ãããããŒã ã§RetrospectiveãããŠã¿ããšãå®ã¯ã¢ããªäœæèªäœãã³ãã¥ãã±ãŒã·ã§ã³ã課é¡è§£æ±ºã«ãããŠå€§ããªã¡ãªããããããããŠãããšæ°ã¥ããŸããã ä»åã¯ãçè
ãã宿ããã3ã€ã®ã¡ãªãããã«ã€ããŠã話ãããŸããã¢ãžã£ã€ã«ã«éçºãé²ããŠããæ¹ã®å©ãã«ãªãã°å¹žãã§ãã å®éã«ãã¢ã¢ããªãèŠããªãã説æããããšããã§ãããŸã é£ãããã Retrospective ã§çšããä»ç®ãèŠãã€ã€è©±ããããšæããŸãã 1. ããŒã ã¡ã³ããŒãé ã«æããŠãããã®ãåæã§ãã éçºãé²ããŠãããšãããŒã ã¡ã³ããŒãããããããã®ã¯ã§ããªããããšå£é ã§ä»®èª¬ãææ¡ãããããšããããããŸãã ãã¢ã¢ããªäœæåã¯ãçè
ããé ã®äžã§ã€ã¡ãŒãžããªãããã§ããã¯ãã ãããããããªã¢ã€ãã¢ã§ããããšåçããŠããŸããããããäœæéå§åŸã¯AIãšãŒãžã§ã³ããæŽ»çšããŠããããšããããããããææ¥äœã£ãŠããŸãããšå³åº§ã«ãããšãããç¿æ¥ã«ã¯å®ç©ãèŠãŠè°è«ã§ããŸããã èšèãå³è§£ã ãã§ãªããåããã®ãäžå¿ã«è°è«ããããšã§èªèã®ããããªããªããããå
šå¡ãåãæ¹åãåããŸãã æ¯ãè¿ãã§ãã以äžã®ãããªããžãã£ããªæèŠãåºãŠããŸããã ãåããã®ãããã®æé«ã ãAppãéãããšã§ã¬ã€ãã³ã·ãŒïŒé
å»¶ïŒãäœæã§ããã®ãããã ãèªåãã¡ã®ããŒã«ãšããŠäœ¿ãããšã§äœéšãæŽç·ŽãããŠããæ°ãããã ð¡ AIãšãŒãžã§ã³ãã®çºéã§ãå°æ¥çã«ã¯PdMãå«ããããŒã ã¡ã³ããŒãããããèªåã®ã¢ã€ãã¢ããµã¯ããšå
·çŸåããŠããŒãã£ã³ã°ã«æã£ãŠããæªæ¥ãæåŸ
ããŠããŸãã 2. åªå
床ãäœãããã€å®çŸå¯èœæ§ãäžæçãªã¿ã¹ã¯ããŸãšããŠå®äºã§ãã ãå®çŸå¯èœæ§ãäžæçã ãããããåé¡ãªãã ããããšããã¿ã¹ã¯ããåªå
床ã®é¢ä¿ã§ä¿çãããããšããã°ãã°ãããŸããã ãããã£ãã¿ã¹ã¯ã¯ãåé¡ã¯ãªãããšæãã€ã€ãã100ïŒ
å®çŸã§ãããšèšãåããŸãããæªè§£æ±ºã®æžå¿µäºé
ãšããŠé ã®çé
ã«æ®ãç¶ããããããªããèªç¥ãªãœãŒã¹ãæ¶è²»ãã粟ç¥è¡çäžããããããŸããã§ããã ããããä»åãã¢ã¢ããªãäœæããéçšã§ããããã®ã¿ã¹ã¯ããŸãšããŠå®äºã§ããŸãããçµæãšããŠé ã®ã¢ã€ã¢ã€ãæŽããäœèšãªãªãœãŒã¹ãå²ããã«ãä»åãçµãããšãã ãã«éäžã§ããããã«ãªããŸããã ð¡ æ¯ãè¿ãã§ãããããŒãšãã¢ããªã¢ã«ã«è¿ã¥ãããã£ãŒãããã¯ãããŠããã£ãããšãã声ããããããŒã ã§ååããŠæ€èšŒç°å¢ã®è³ªãäžããããã®ã¯å€§ããªåç©«ã§ããã 3. 顧客ã«äŸ¡å€ãæäŸããããã«UI/UXããã®è§£æ±ºæ¡ãææ¡ã§ãã å人çã«äžçªå€§ããªæ°ã¥ãã ã£ãã®ãããã§ãã åœåãéçºããŒã ã®ç®æšã¯ãããŒã¿ã®èªã¿åãããAIãæåŸ
éãã®åºåããã粟床ãäžããããšãã§ããã ãããã倧ç®çã¯ãããŸã§ã顧客ã®ãã€ã³ãåãé€ãã¢ããªãäœããã¢ãã¥ããç£æ¥ã®ããã³ã·ã£ã«ãè§£æŸããããšãã§ãã AIãçšããæè¡çãªã¢ãããŒãã®ã¿ã§æåŸ
éãã®çµæãå®å
šã«åºãç¶ããã®ã¯é£ããéçããããŸãããã¢ã¢ããªãããããšã§ããã®éçãUI/UXã§å¯Ÿå¿ãããè°è«ãããã§ããŸããã èª²é¡ UI/UXã«ããè§£æ±ºæ¡ ç²ŸåºŠãžã®å¯Ÿå¿ ãŠãŒã¶ãŒã容æã«èšæ£ã§ããUIã«ãã ã¬ã€ãã³ã·ãŒãžã®å¯Ÿå¿ æ
å ±ã®é次衚瀺ãããŒãã£ã³ã°ã¹ãããŒã®å·¥å€«ã«ãããäœæåŸ
ã¡æéãã³ã³ãããŒã«ãã ãŸããUXã§äžèšã®ãããªå·¥å€«ããããããããéã«ãAIã®ç²ŸåºŠã¯ãããããããã°å®çšã«è¶³ãããšç²ŸåºŠã®ç·åŒããæ¹ããŠå®çŸ©ã§ããŸããã ãããã®ææ¡ã¯ãããŒã¿ã®å
¥åã»åºåã®ã¿ãè¡ãçŽç²ãªç²ŸåºŠæ€èšŒããã¯åŸãããããã¢ã¢ããªãéããã³ãã¥ãã±ãŒã·ã§ã³ã§ã¯ãããŠåŸããããšãããŸãã ãã¡ããã粟床åäžãžã®ãã£ã¬ã³ãžãç¶ç¶ããŠåãçµãã§ããŸãã ð¡ åžžã«ããã¯ããªèŠç¹ïŒUI/UXãå«ãã顧客ã®ãã€ã³è§£æ¶ïŒããšããã¯ããªèŠç¹ïŒç²ŸåºŠåäžã®åãçµã¿ïŒãã®äž¡èŒªãæèããããå¿ãããŠããŸãã ãŸãšã ãã¢ã¢ããªãäœã£ãŠã³ãã¥ãã±ãŒã·ã§ã³ããããšã®ã¡ãªããã«ã€ããŠãŸãšããŸãã ã¡ãªãã 詳现 ããŒã ã¡ã³ããŒãé ã«æããŠãããã®ãåæã§ãã å
šå¡ãåãæ¹åãèŠãããšãã§ããããã«ãªããŸãã åªå
床ãäœããã€å®çŸå¯èœæ§ãäžæçãªã¿ã¹ã¯ããŸãšããŠå®äºã§ãã äœèšãªãªãœãŒã¹ãå²ããã«ä»åãçµãããšã ãã«éäžãã 顧客ã«äŸ¡å€ãæäŸããããã« UI / UX ããã®è§£æ±ºæ¡ãææ¡ã§ãã ãã¯ããªèŠç¹ãšãã¯ããªèŠç¹ãåžžã«æèã解決ãã AIã䜿ã£ãŠãæ©ãäœããã ãã§ãªããäœã£ããã®ãèµ·ç¹ã«ã©ãããŒã ã§å¯Ÿè©±ãã顧客ã®äŸ¡å€ã«åãåãããéèŠã ãšæ¹ããŠçæããŸããã ãŸãããã®ãããªåãçµã¿ãé«éã«è¡ãããšã§ããããã¯ããå±ãããŸã§ã®æéãççž®ã§ãããšæããŠããŸãã ãã®ããã«ããã£ãã£æ ªåŒäŒç€Ÿã§ã¯ãææ°æè¡ãåãå
¥ãã€ã€ããŒã ã§è°è«ããªããäžäžžãšãªã£ãŠæ¬è³ªçãªèª²é¡è§£æ±ºã«åãçµãã§ããŸãã æåŸã«ãªããŸãããAI Agentã«é¢ããåãçµã¿ãè£œé æ¥ã«ãããCVã«é¢ããåãçµã¿ã«é¢ããŠã¯ãä»ã«ã以äžã®ãããªãã£ãã£ã®ã¡ã³ããŒãæžããèšäºãããŸãã ãèå³ããã°ãã²ãèªã¿ããã ãããå¬ããã§ãã AI Agent ã«é¢ããåãçµã¿ caddi.tech caddi.tech è£œé æ¥ã«ããã CV ã«é¢ããåãçµã¿ caddi.tech
ã¯ããã« ã¯ãããŸããŠã2025幎10æã«ãã£ãã£æ ªåŒäŒç€Ÿãžå
¥ç€Ÿããããšã³ãžãã¢ãªã³ã°ãããŒãžã£ãŒïŒEMïŒã®è¹æŸ€ã§ãã å
æ¥ããªãŒãã¢ãŒããã¯ãã®å°æ£®ïŒ@littleforest12ïŒããèšèšãã§ãŒãºã«ãããäžç¢ºå®æ§ãžã®åãåãæ¹ãç¶Žã£ãèšäºïŒ https://caddi.tech/2025/12/16/112311 ïŒãå
¬éããŸãããæ¬èšäºã¯ãåããããžã§ã¯ãããããžã§ã¯ããããŒãžã£ãŒïŒPMïŒãšããŠæ
åœããç§ããã®ãã¢ã³ãµãŒãœã³ã°ã§ãã æ¬ãããžã§ã¯ãã¯ãä»åŸãã¹ãŠã®ããŒã ãäŸåããããã£ãã£ã®æ ¹å¹¹ã«ãºããºããšæãå
¥ãããããªåºå¹¹æ©èœéçºã§ããããããªèšèšãã¹ãå°æ¥ã®å
šç€Ÿã®éçºé床ãå·Šå³ããããªãã倱æã®èš±ãããªã暪æãããžã§ã¯ãã§ãããå¹
åºããã£ãã£ãçè§£ããæ©äŒãšããŠããšããæå³ã§ã®ã¢ãµã€ã³ã§ããããåœæã®ç§ã¯ãã¡ã€ã³ç¥èãŒããå
¥ç€Ÿ2é±éç®ãæ£çŽã«èšãã°ãããªããªããæåžããããªãããšè奮ããŠããŸããã åæã«ãå·éã«ç¶æ³ãèŠããšãããã¯æ°ãã€ããªããšããçãããç«çš®ã®å€ããããžã§ã¯ãã§ããããŸããããã¡ããç§ãPMãšããŠç倧ã«ãããžã§ã¯ãã«ç«ãåŽãããŠããŸã£ãçµéšããããŸãããªããªããæ°åè
ã®ç§èªèº«ãç°¡åã«ç«çš®ã«ãªãåŸãŸãã ããèªèãããšããèªåã®åœ¹å²ãèŠããŠããŸããã ããŒã ãèªåŸçã«åããç°å¢ãäœããèªåãããã«ããã¯ã«ãªããªã ãããããŽãŒã«ãžã®æçã«ãŒãã ãšã çµæãšããŠããããžã§ã¯ãã¯ãªãªãŒã¹ã«åããŠïŒèªåã§ãé©ãã»ã©ïŒé 調ã«é²ãã§ããŸããã¡ã³ããŒã«æµãŸããéšåã倧ããã®ã¯åæã§ãããæ¯ãè¿ããšã以äžããã€ã³ãã ã£ããšæããŸãã ã¢ãŒããã¯ãã£ã«åŒããã責任å¢çãšããåã®ç· 2床ã®èšèšèŠçŽããšãåŒãè¿ãåæ° 仿§çè² åµããã ã®ã劥åãã«ããªã ãæ§é ãåµããèªåŸãçã¿åºããããããŒãžã£ãŒã®äŸ¡å€ å®å
šãªçããæã£ãŠããããã§ã¯ãããŸããããåããããªç¶æ³ã«çœ®ãããæ¹ã®ãäœããã³ãã«ãªãã°å¬ããã§ãã æ°åè
ã ã£ãåœæã®ç§ããæ°åãšæ ¹æ§ã®é²æç®¡çãã§ã¯ãªãããæ§é ã®åãã§ããŒã ãæé«éã§èªåŸé§åãããããã®èå°è£ãå
±æããŸãã ã¯ããã« ã¢ãŒããã¯ãã£ã«åŒããã責任å¢çããšããåã®ç· äºåºŠã®èšèšèŠçŽããšãåŒãè¿ãåæ° 仿§çè² åµããã ã®ã劥åãã«ããªã ãæ§é ãåµããèªåŸãçã¿åºããããããŒãžã£ãŒã®äŸ¡å€ æåŸã« ã¢ãŒããã¯ãã£ã«åŒããã責任å¢çããšããåã®ç· ãŸãå¿
èŠã ã£ãã®ã¯ãã¹ã±ãžã¥ãŒã«ã®èª¿æŽãªã©ã§ã¯ãªããã¢ãŒããã¯ãã£ã«çŽåŸã®ããæç¢ºãªç·ãåŒãããšã§ããã ã¢ãŒããã¯ãã®å°æ£®ãäžå¿ã«ã¢ãŒããã¯ãã£ã®åææ€èšããé²ã¿ãŸãããèŠæ±ã®å€æŽãæã蟌ãã§è€é床ãé«ãŸã£ããããããæŽçããããç¹°ãè¿ããŸãã åãããŠããŒã¿ã¢ãã«ãæ€èšããŠãããŸãããã®éãããã¡ã³ããŒã«ãDDDçãªèгç¹ã§å¢çç·ãåŒããŠã¿ãŠã»ããããšäŒããŸããã ã¢ãŒããã¯ãã£ã¯ãªãŒããŒã®ç°ãªãè€æ°ã®ã³ã³ããŒãã³ãã®é£æºã§ãããããã«æ°ããããŒã¿ã¢ãã«ãæå
¥ããŸããèªæãªãšããããããŸãããåœç¶è€é床ã¯é«ããªããæ¥µç«¯ã«èšãã° å
šå¡ãå
šæ¹äœãå¿é
ããŠç¡éã«äŸåé¢ä¿ã確èªãç¶ãããããªæã ã§ãè°è«ãçºæ£ããã¡ã§ããã ããŒã¿ã¢ãã«ã«åŒãããäžæ¬ã®ç·ã«ããèãã屿åããã¢ãŒããã¯ãã£ã«ãå¢çç·ã衚çŸãããæèã®éäžã¯é«ãŸãè°è«ãæŽç¶ãšé²ãããã«ãªããŸããã誰ã®ããŒã«ãåãããªãé åã¯ãŒãã§ãã ããã§åŒãããç·ãããåããŒã ãæã€ã責任å¢çãã§ãããã£ãã£ã®çµç¹èšèšã¯éã³ã³ãŠã§ã€æŠç¥ã«åã£ãŠãããã³ã³ããŒãã³ããšããŒã ãšã察ã«ãªã£ãŠããŸããã€ãŸãã¢ãŒããã¯ãã£ã«ç·ãåŒãããšã¯ãããŒã ã®çµ¶å¯Ÿçãªå®å
šå°åž¯ãå®çŸ©ããããšã§ãããä»ããŒã ã®äžåã®åœ±é¿ã倧ãããããïŒããã°ã¬ãŒãŸãŒã³ã§ããã³ãããã«ãªããããïŒããšãã æšªæãããžã§ã¯ãç¹æã®æŒ ç¶ãšããäžå®ããã¢ãŒããã¯ãã£ãšããæ§é ã§è§£æ¶ ããããšãã§ããŸããã ãèªåã®ã³ã³ããŒãã³ãã®ããšã ãèããŠããã°å€§äžå€«ã ãã®é«ãéäžãæ£ããç£ã¿åºãç°å¢ããããŒã ãæé«éã§èªåŸé§åããããšç¢ºä¿¡ããŸããã äºåºŠã®èšèšèŠçŽããšãåŒãè¿ãåæ° èªä¿¡ã®ããã¢ãŒããã¯ãã£ãã§ããããŒã ã®ããã¯ãªããéå¬ããŸãããã¢ãŒããã¯ãã£ã«ã€ããŠCTOãšãåæãåããŸãããèšèšã®è©³çްåãé²ããŠãããŸãã ãããªäžãPdMãããäŸ¡å€æäŸã«ãããŠãã¯ãæäœéå¿
èŠã ããšãäžåºŠã¯ã¹ã³ãŒãã¢ãŠãããèŠä»¶ã®èŠçŽãè°è«ãããããŸãããçŽæãæèããæç¹ã§ã®å€æŽã¯ãç«çš®ãã§ããæ£çŽèšã£ãŠé¿ãããæ°æã¡MAXã§ããããè°è«ã«ãããçŽæãªã¹ã¯ã¯ããããäžéå端ãªãã®ãåºãããšã«ãªãããšåçæ§ãçè§£ããåãèŸŒãæ±ºæãããŸãããå®çŸã«åããŠè©³çްãè©°ããäžã§ããŒã¿ã¢ãã«ã«ä¿®æ£ãå ããããå®å¹æ§ã®é«ãã¢ãŒããã¯ãã£ãžãšãã©ãã·ã¥ã¢ãããããŸããã ããããªããããããšçŽåŸããæ¹ããŠã¹ããŒã¯ãã«ããŒãšã®å¯Ÿè©±ã«èšã¿ãŸãã ããã®ä¿®æ£ã ãšãè¿ãå°æ¥ã®æ¡åŒµæ§ã®æ¯æããUXã®äœäžã«ç¹ãããªããïŒã ç®ã®åã®ä»æ§ã«æ²¡é ããããŠçãŸããç²ç¹ããæ£ç¢ºã«å°æãCTOã®ææã§ããã ããã£ãã詳现ãŸã§è©°ããã®ã«ããçŽæã¯ã©ããªããããªããšããç·åŒµãèµ°ããŸãã PMãšããŠã¯ãçŽæãçŸã«èšèšãæ»å®ããåããèããŸãããããããææãããæ§é ã®æªã¿ãå°æ¥ã®çŸå Žãç²åŒããããããã§åŒãè¿ããªããšåŸæããããšããçŽæã«åŸããŸããã ç²ç¹ã«ãªã£ãŠããç®æãä¿®æ£ãã圱é¿ç¯å²ãæŽã£ãŠå
šäœçãªæŽåãä¿ãããŠããããšã確èªãUXã¬ãã«ã§ã倿Žããããããã®è°è«ãçµãŠèšèšä¿®æ£ã¯å®äºãCTOãšã®åã¬ãã¥ãŒã§ãOKãåºãŠããã£ãšéçºå®è£
ã«çæããæºåãæŽããŸããã ããæžããšç°¡åããã§ãããããŒã¿ã¢ãã«ã«æãå
¥ã£ãŠãããããæãããæ°ãé£ãå·¥çšã§ããå°æ£®ãããããã 仿§çè² åµããã ã®ã劥åãã«ããªã ãããŸã§åæèšèšã§åœåæ³å®ãããæéã䜿ã£ãŠããŸããããã«æåŸã«ä¿®æ£ãå床éããããšã§ãéçºæéã¯åãããç¶æ³ã§ããã ãæ°åãã§éã«åãããããïŒããšç¡éªæ°ã«éŒèããŠå«ãªé¡ããããã®ã¯æåŸã®ææ®µã«ããŠãçŽæèª¿æŽãä»åã¯é£ãããããã¹ã³ãŒã調æŽãè¡ããŸãã èŠä»¶ãäžèЧåããèŠæ±ã¬ãã«ãè©äŸ¡ããMUSTã§ãªãé«é£åºŠé«ãªã¹ã¯ãªå®è£
é
ç®ãäžã€ãã€PdMãšè°è«ããåŸããæ§é ãå€ããå·®ã蟌ããããçãåºæºã«ã¹ã³ãŒãã¢ãŠããæ±ºæããŸãã ããèªäœã¯ç¹å¥å€ãã£ã颚æ¯ã§ã¯ãªããšæããŸããïŒäž»ã«å¿ã®ïŒçã¿ãèŠãæãåºã«ãªã£ãŠãããã€ã§ãã ãããç§ãã¡ã¯ãã¹ã³ãŒãã¢ãŠãããé
ç®ãããšããèª°ãæ¢ããªãããã¥ã¡ã³ãã«æ®ããŠçµããããšãè¯ããšãããã仿§çè² åµãã§ãããšåå®çŸ©ããŸãããããã«ã¯åææ®µéã§MVPãæ€èšããæã«å€ãããèŠæ±ãå«ããŠããŸããæè¡çè² åµã§ãã仿§çè² åµã§ãããè² åµã¯èšç»çã«è¿æžãããã 劥åããé
ç®ãããã€ããããã®é§ã®äžã«æ¶ãã®ã§ã¯ãªããããŒã ãæèãç¶ããããæ§é ã«çœ®ããŠãã ãããããä»åç§ãã¡ã倧åã«ããããšã§ããã å
·äœçã«ã¯ãå
šãŠã®è² åµé
ç®ã«å¯ŸããŠãå
容ã¯ãã¡ãããæ³å®ãããè² ã®åœ±é¿åºŠåããè§£æ¶ãã¹ãææãè©äŸ¡ããªã¹ãã«ããŸãããã®ãªã¹ããPdMãéçºã¡ã³ããŒãšèªèåãããè¡ãããã®äžã§ãªãã£ã·ã£ã«ãªéçºé
ç®åè£ãšããŠPdMã®ç®¡çäžãšããŸãããããã¯ãã°ã®å¥¥åºã«æ²ããŠçµããã§ã¯ãªããå®éã«éçºæ€èšãé²ããããŠããŸãã ãæ§é ãåµããèªåŸãçã¿åºããããããŒãžã£ãŒã®äŸ¡å€ æ§é ãæŽçããè² åµã®æ±ããæç¢ºã«ãããããã«ããããŒã ã¯é«ãéäžãåŸãããã¯ãã ããããšä¿¡ããŠããŸãããããéçºãé²ãã°ä»æ§èª¿æŽã»çŽæèª¿æŽã»ãªã¹ã¯ç®¡çã»ããããè°è«ã倿ããããã®äŒè°ã§ã«ã¬ã³ããŒãåãŸããããªããšèšãèŠæãæã£ãŠããŸãããäžå¿ã念ã®çºã ãããããã€ãªãŒããŒãã£ã³ã°ã§ã®æ°èŠãªã¹ã¯å ±åã§ã¯ãé©åãªå¯Ÿçæ¡ãã€ããŠãããåã¹ããªã³ãã§ã®ã¹ã±ãžã¥ãŒã«æžå¿µã¯ããªã«ããªãã©ã³ã«åã£ãŠæ¬¡ã¹ããªã³ãã§èŠéããã€ãã仿§èª¿æŽãè°è«ã¯æ
åœå士ã§å®çµããããã¹ããå§ãŸã£ãŠãå質ãé«ããèªåãã¡ã®è£éãè¶
ãã倿ã¯ã¡ãããšçžè«ããããããŒã ãèªä¿¡ãæã£ãŠæ¯ã¥ããŠãããéçºãå¥å
šã«é²ã¿ç¶ããŠããŸãã ãããžã§ã¯ãã¯ããçµç€ã§ãããå®å®çãªç¶æ³ã«ã誰ããæ°ãæãäºããªããããããä»ããŠãããããšãããåã£ãŠããããããšãã£ãã ãŒãã§ãã PMãšããŠè¶
人åã§å¥èµ°ããå¿
èŠãªã©ãªããããŒã ãã©ãã©ããšèªåŸé§åãç¶ããã ããããããšåç®ã«ã¯ããã®PMäœãããªããªããªç¶æ
ã«èŠãããããããŸããããããã«ããã¯ã«ãªã£ãŠã¯ãªããªãããšããçãéãã§ããã æé«ã®è€ãèšèã§ããããããšãã 磚ãäžããå¢çç·ã«å®ãããããŒã ããèªåãã¡ã®åºãã¹ã䟡å€ã«éäžãåãåããŠãããé«å¯åºŠã®èªåŸããããã®ããŒã ãåºããææã蚌æããŠããŸãã ããŒã ããã®ç¶æ
ã«å°ããããšã¯ãPMãšããŠãEMãšããŠã匷çãªæå¿ããæããããäœéšã§ããããããŠãããããå®çŸã§ãããã£ãã£ãã§ã®ããããã«ããŸããŸãã¯ã¯ã¯ã¯ããŠããŸãã æåŸã« ãã£ãã£ã«å
¥ç€Ÿæ©ã
ããããªã«ãšããµã€ãã£ã³ã°ãªæåžã«ç«ã€ããšãã§ããŸããããããŠä»ã¯ãŸãå¥ã®ã·ãããæåžã«ç«ã¡åãã£ãŠããŸãã ãæ§é ã§é«åºŠãªèªåŸãåŒãåºãããšããææŠããããŠãããå®çŸã§ããã¡ã³ããŒãçµç¹èšèšãæè¡æŠç¥ããã£ãã£ã«ã¯ãããŸãã æ°åãšæ ¹æ§ã§ã¯ãªããããžã¡ã³ããææŸãããã® ç±éããã£ãšæ¬è³ªçãªäŸ¡å€ã«åãããæ¬²åŒµããªPM/EMã®ã¿ãªããŸããã£ãã£ã§ã¯ãããªä»²éãåéããŠããŸãïŒ èå³ãæã£ãŠããã ããæ¹ã¯ããã²æ¡çšãµã€ããã芧ãã ãããã«ãžã¥ã¢ã«é¢è«ããåŸ
ã¡ããŠããŸãïŒ ãã£ã㣠æ¡çšãµã€ã https://careers.caddi.com ã«ãžã¥ã¢ã«é¢è« https://open.talentio.com/r/1/c/caddi-jp-recruit/pages/78398?_fsi=2IcRhEF0
Data Platform éšã®æ£®å²¡ã§ããèŠããªããªã£ããã®ãããã«æšãŠãããããŒã¿åºç€ãæèããŠæ¥ã
éçºããŠããŸãã ãã®èšäºã¯ ãè§£èªããŒã¿ã¢ãŒããã¯ãã£ãïŒåé¡: Deciphering Data ArchitecturesïŒ ã«ã€ããŠã®æžè©ãšãªããŸãã 1. ãªãä»ãã®æ¬ãªã®ã (æ¬æããåŒçš) ããŒã¿ã¡ãã·ã¥ãããŒã¿ãŠã§ã¢ããŠã¹ãããŒã¿ã¬ã€ã¯ããŠã¹ãšãã£ãçšèªãé£ã³äº€ã£ãŠããŸããã 10人ã«ãããŒã¿ã¡ãã·ã¥ãšã¯äœãããšå°ããã°ã11éãã®çããè¿ã£ãŠããã§ãããã ããŒã¿ãšã³ãžãã¢ãªã³ã°ã®çéã«ããã°ããããŒã¿ãã¡ããªãã¯ããããŒã¿ã¬ã€ã¯ããŠã¹ããããŒã¿ã¡ãã·ã¥ããšããèšèã«ã€ããŠèããããšããã人ã¯å€ããšæããŸãã ãããããããã®çšèªã«ã¯çµ±äžãããå®çŸ©ããããšã¯èšãé£ãããã³ããŒãå°éå®¶ã®ç«å Žã«ãã£ãŠç°ãªãæå³ã§äœ¿ãããŠããŸãã ãŸããããããã®ãã³ããŒã®ããŒã±ãã£ã³ã°çãªæå³åãã垯ã³ãããšãå€ãã§ãã ããŒã±ãã£ã³ã°çšèªã ãããã¡ã ãšèšãã€ããã¯ãããŸãããéèŠãªã®ã¯ãããããããºã¯ãŒãã«æ¯ãåãããªãããšã§ããæµè¡ãã®èšèããã®ãŸãŸéµåã¿ã«ããã®ã§ã¯ãªãããèªåãã¡ã«æ¬åœã«å¿
èŠãªãã®ã¯äœããäœãã¹ããã®ã¯äœãããèªãã®èšèã§å®çŸ©ããããŒã å
ã®èªèãåãããããšãã建èšçãªè°è«ã®äžæ©ç®ãšãªããŸãã æ¬æžã¯ããã®ããã®ç¥èã®åå°ãæäŸããŠãããŸãã 2. ææ³ éã®åŒŸäžžã¯ãªããããã¬ãŒããªãããšåãåã æ¬æžã¯ããã¹ãŠã®çµç¹ãç¶æ³ã«é©çšã§ããäžèœãªã¢ãŒããã¯ãã£ïŒéã®åŒŸäžžïŒã¯ååšããªãããšããåæããåºçºããŸãã æåäŒæ¥ãæ¡çšããŠããããããããã¯æè¿ããè³ã«ããæ§æã ãããšãã£ãçç±ã§ã¢ãŒããã¯ãã£ãéžãã§ããŸããšãå€å€§ãªã³ã¹ããšæéããããã«ãããããããèªçµç¹ã«ã¯é©åããªãã£ãããšããçµæã«ãªããããŸããã æ¬æžãéããŠç¹°ãè¿ãèªãããŠããã®ã¯ãã¢ãŒããã¯ãã£éžå®ããæ£è§£æ¢ããã«ããŠã¯ãããªããšããç¹ã§ããèè
ã¯æ¬¡ã®ãããªèãæ¹ãäžè²«ããŠæç€ºããŠããŸãã ãã¹ãŠã®ã¢ãŒããã¯ãã£ã«ã¯ãã¬ãŒããªãããã : æµè¡ãã®ã¢ãŒããã¯ãã£ã«é£ã³ã€ãã®ã§ã¯ãªããããããã®é·æã»çæããããŠäœãç ç²ã«ããã®ãïŒãã¬ãŒããªãïŒãçè§£ããããšãéèŠã ãæè¡ãã§ã¯ãªãã人ãšããã»ã¹ã : ããŒã¿ãããžã§ã¯ãã®å€±æã¯ãæè¡çãªéçããããã人ãšããã»ã¹ãã®åé¡ããæè¡ã®èª€ã£ãé©çšã«èµ·å ããããšãã»ãšãã©ã 絶察ã®å®çŸ©ã§ã¯ãªãè°è«ã®åºçºç¹ãšã㊠: æ¬æžãæç€ºããæŠå¿µã¯ãæ¥çã®çµ¶å¯Ÿçãªæšæºãã§ã¯ãªãããããŸã§è°è«ãå§ããããã®åºçºç¹ãšããŠæäŸãããŠããã ãã®ãäœã§ã解決ããéã®åŒŸäžžã¯ãªãããšããã¹ã¿ã³ã¹ã«ã¯éåžžã«å
±æããŸãããªããªããããŒã¿ã¢ãŒããã¯ãã£ã«ã寿åœãååšããããã§ãã ããŒã¿ã¢ãŒããã¯ãã£ã®å¯¿åœ ãããŒã¿ãèªäœã®äŸ¡å€ã寿åœã¯é·ãç¶ããŸããããããæ¯ããã¢ãŒããã¯ãã£ã®å¯¿åœã¯ãããŸã§é·ããªãããã«æããŸããDWHãã¯ã©ãŠã補åã®ç§»è¡ãETL/ELTãã€ãã©ã€ã³ãããŒã¿ã¢ãã«ã®å·æ°ãªã©ãå€ãã®äŒæ¥äºäŸãå
¬éãããŠããã®ããããè£ä»ããŠããŸããç¹ã«ãç§ãæå±ãããããªå€åã®æ¿ããã¹ã¿ãŒãã¢ããç°å¢ã§ã¯ããã®çããããäžå±€æããŸãã ã ãããããã¢ãŒããã¯ãã£éžå®ã«ãããŠã¯ãæéã¹ã±ãŒã«ãã®èŠç¹ãäžå¯æ¬ ã§ããæ°ã¶æã§ç Žç¶»ãããããªèšèšã¯è«å€ã§ãããããã®ã¢ãŒããã¯ãã£ã§3幎ããããã¯5幎æŠãããããŸããããå¿
èŠã«ãªã£ããšãã«ç§»è¡ãã§ããã®ãããèŠæ¥µããé©åãªèšèšãããã®ãã¢ãŒããã¯ãã ãšèšããŸãã æ¬æžã§ããããŒã¿ã¢ãŒããã¯ãã£ã¯æ®µéçã»å埩çã«æ¡åŒµããŠãããã®ã ããšäž»åŒµãããŠããããã®ç¹ãã寿åœãåæãšããŠãå€åã«èãããæè»ãªèšèšãããŠããããšããå®åçãªã¢ãããŒãã®éèŠæ§ãæããŸãã 宿ãªäºé
察ç«ããã®è±åŽ ããŒã¿ã¢ãŒããã¯ãã£ã®è°è«ã§ã¯ããã°ãã°åçŽåããããå¯Ÿç«æ§é ããç»å ŽããŸãã ããšãã° Inmon vs KimballãããŒã¿ãŠã§ã¢ããŠã¹ vs ããŒã¿ã¬ã€ã¯ããŠã¹ ãšãã£ãæ§å³ã§ãããããã¯çè§£ãå©ãããã¬ãŒã ã¯ãŒã¯ãšããŠã¯æçšã§ãããå®åã®æææ±ºå®ã«ãã®ãŸãŸæã¡èŸŒããšèª€è§£ãçã¿ãããåŽé¢ããããŸãã æ¬æžã䞻匵ããŠããã®ã¯ããããããã©ã¡ããæ£ãããããšããå¯Ÿç«æ§é ãšããŠæããã¹ãã§ã¯ãªãããšããç¹ã§ããçŸå®ã®äŒæ¥ã«ãããŠã¯ãåäžã®ææ³ãã¢ããªã³ã°ææ³ã ãã§å
šèŠä»¶ãæºããã±ãŒã¹ã¯ã»ãšãã©ãªãã§ãããã æ¬æžã§ç޹ä»ãããŠããããã«ãInmonã®ææ³ãšKimballã®ææ³ãçµã¿åãããã¢ãããŒãã¯æããçãããã®ã§ã¯ãªããå€ãã®çµç¹ãæé»çã«æ¡çšããŠããã®ã§ã¯ãªãã§ãããããåæ§ã«ãã¬ã€ã¯ããŠã¹ãæ¢åã®DWHãããŒã¿ããŒããå®å
šã«çœ®ãæããååšãšããããã¯ãçšéã«å¿ããŠå
±åã»åœ¹å²åæ
ãããããšãçŸå®çã ãšæããŸããã€ãŸããéèŠãªã®ã¯ãã©ã®ã¢ãŒããã¯ãã£ãæ¡çšããããã§ã¯ãªããã©ã®åé¡ã解決ããããã«ãã©ã®ç¹æ§ãåã蟌ãããšããèŠç¹ã§ãã ã¢ãŒããã¯ãã£ã¯ã€ããªãã®ãŒã§ã¯ãªããèšèšã«ãããéžæã®éåã§ãã çæ³çãªãæ£è§£ããæ¢ãã®ã§ã¯ãªããèªçµç¹ã®å¶çŽã»äººæã»æé·æ®µéã«åãããŠæ³¥èãæé©è§£ãæ§ç¯ããŠããã®ãæ¬è³ªãªã®ã ãšæããŸããã 3. ãã®æ¬ãããããããã人ã»ããã§ãªã人 ããããããã人: ããŒã¿ã¢ãŒããã¯ããããŒã¿åºç€ã®ãªãŒããšã³ãžã㢠CTO / Engineering Manager ãªã©ã®æè¡çãªæææ±ºå®è
èªç€Ÿã«å°å
¥ãã¹ãã¢ãŒããã¯ãã£ã«ã€ããŠãããŒã å
ã§ãå
±éèšèªããäœããã人 ããã§ãªã人: SQLãPythonã®å
·äœçãªã³ãŒãã£ã³ã°æ¹æ³ãç¥ãããååŠè
ç¹å®ã®ããŒã«ïŒdbtãAirflowãç¹å®ã®ã¯ã©ãŠããµãŒãã¹ãªã©ïŒã®å®è£
ãã¥ãŒããªã¢ã«ãæ±ããŠããäººïŒæ¬æžã¯ãHow-toãæ¬ã§ã¯ãªãèæ¯ãšè«çãåŠã¶æ¬ã§ãïŒ 4. 泚æç¹ åè¿°ã®éããæ¬æžãæäŸããå®çŸ©ã¯çµ¶å¯Ÿçãªæ£è§£ã§ã¯ãªãããããŸã§ãèè
ã®äžæèŠããšããŠèªããªãã©ã·ãŒãæ±ããããŸãã ãã®æ¬ããããå°ãšããŠãããŒã å
ã§ã®å
±éèªèãæ§ç¯ããŠããããšãç®æãã¹ãã§ãã ãŸããç¹å®ã®ãã³ããŒã«äŸåããªããã¥ãŒãã©ã«ãªç«å ŽããšããšæèšãããŠããŸãããèè
ãMicrosoftã«é·å¹Žæå±ããŠãããããç¡æèã«Azureãšã³ã·ã¹ãã ã®ä»æ§ã念é ã«çœ®ããè©äŸ¡ãå¶çŽãå«ãŸããŠããå¯èœæ§ãããç¹ã¯ãå·®ãåŒããŠèªããšè¯ããšæããŸãã 5. ãŸãšã ãè§£èªããŒã¿ã¢ãŒããã¯ãã£ãã¯ãææŸãã§å°å
¥ã§ãããããªãçµ¶å¯Ÿã®æ£è§£ãã¯æžãããŠããŸãããã ãããããæµè¡ãããã³ããŒã®ããžã·ã§ã³ããŒã¯ã«æ¯ãåãããããšãªãããèªåãã¡ãäœãã¹ããã®ããèªåãã¡ã®èšèã§å®çŸ©ããããã®æèã®åå°ãäžããŠãããŸãã ãã¬ãŒããªããæ£ããçè§£ããèªçµç¹ã®èª²é¡ãæç床ã«åãããŠæŠç¥çã«ããŒã¿ã¢ãŒããã¯ãã£ãéžæãããããã¹ãŠã®ãšã³ãžãã¢ããªãŒããŒã«ããããããŸãã We are hiring ãŸããCADDiã§ã¯äžç·ã«åãã¡ã³ããŒãçµ¶è³åéäžã§ã! ã«ãžã¥ã¢ã«é¢è«ãªã©ãæ°è»œã«ãé£çµ¡ãã ããã カジュアル面談申し込み_エンジニア・プロダクトデザイナー / キャディ株式会社 Data Engineer / キャディ株式会社 speakerdeck.com
ã¯ããã« ããã«ã¡ã¯ã2æã«Senior Research EngineerãšããŠãã£ãã£ã«å
¥ç€Ÿãã çŠå ã§ããçŸåšããã£ãã£ã§ãªãµãŒãçµç¹ãæ¬æ Œçã«ç«ã¡äžããŠããŸãã ããªãµãŒãçµç¹ããšèšã£ãŠããåã«ç ç©¶ãè¡ãªã£ãŠè«æãæžãããšã ããæã
ã®ç®çã§ã¯ãããŸããããã£ãã£ãæ²ãããã¢ãã¥ããç£æ¥ã®ããã³ã·ã£ã«ãè§£æŸããããšããããã·ã§ã³ãå®çŸããããã«ãæå
ç«¯ã®æè¡ãç ç©¶ããããããããã¯ãã®äŸ¡å€ãšããŠå®ããŒã¿äžã§æ€èšŒãããšãããŸã§ããåã â ããããã®çµç¹ã®ååšæçŸ©ã§ãã ãã®èšäºã§ã¯ããã£ãã£ãåãçµãã§ããããããã¯ããããæãããšããŠããæè¡èª²é¡ããComputer VisionïŒCVïŒãAIã®åéã§çãã«è°è«ãããŠããé£åãšããã«æ·±ãéãªã£ãŠãããããææ°ã®ç ç©¶ååãšãšãã«ç޹ä»ããŸãã çµè«ãå
ã«è¿°ã¹ããšããã£ãã£ã®ãããã¯ããè¡ãªã£ãŠãããè£œé æ¥ã®å³é¢ã»3DCADã»ä»æ§æžãšãã£ããã«ãã¢ãŒãã«ãªããŒã¿ãæ£ç¢ºã«èªèã»é¢é£ä»ããè¡ããæšªæçã«æ€çŽ¢ã»æšè«ãããŠããŠãŒã¶ãŒã®æææ±ºå®ã«éèŠãªç€ºåãåºãããšããããã»ã¹ã«å«ãŸããæè¡çãªèª²é¡ã¯ãComputer VisionãšAIã®ç ç©¶ã³ãã¥ããã£ãçŽé¢ããŠããéèŠãªèª²é¡ãšåŒ·ãäžèŽããŠããŸãããããè£œé æ¥ã¯ãææ§ãããããã£ãœãçãããèš±ãããªã粟床ãšåçŸæ§ãç¹ã«éèŠãªäžçã§ãããããäŒè°ã®æå
端ç ç©¶ã§åãçµãŸããŠãã課é¡ããçŸå®ã®å³ããå¶çŽã®ããšã§è§£ã â ãããCADDiã®ãªãµãŒãçµç¹ãåãçµãã§ãã課é¡ã§ãã ã¯ããã« ãã£ãã£ã®ãªãµãŒãçµç¹ãåãçµãç ç©¶èª²é¡ VLMã®èšèªåéïŒæå
端ã¢ãã«ããèºã空éã»å¹Ÿäœæšè«ã®éç ãã¯ã¹ãã£ãªãçŽç²å¹ŸäœïŒåœ¢ç¶ã ãã§ãªãæå³ãæãã3Dèªè ããããªãã¢ããŒã¿ã¯ååšããªãïŒäžå®å
šãªãã«ãã¢ãŒãã«ç©ºéã®ã¢ã©ã€ã³ã¡ã³ã ããã£ãœã3Dã¯ãããªãïŒå¹Ÿäœå¶çŽãšããããžãŒãä¿èšŒãã補é å¯èœãª3Dçæ ãã®ä»ã®ç ç©¶éçºèª²é¡ ã¢ã«ããã¢ãšã®é£æº ãŸãšã 仲éãåéããŠããŸãïŒ ãã£ãã£ã®ãªãµãŒãçµç¹ãåãçµãç 究課é¡ïŒè©³çްçïŒ VLMã®èšèªåé æ£ç¢ºãª3D幟äœåœ¢ç¶ã®èªè ãã«ãã¢ãŒãã«ãªããŒã¿ã®åŠç 3Dçæ ãã®ä»ã®ç ç©¶éçºèª²é¡ ãã£ãã£ã®ãªãµãŒãçµç¹ãåãçµãç ç©¶èª²é¡ ããã§ã¯ãå
·äœçãªç 究課é¡ã1ã€ãã€åãäžãããããããCVãAIã®ç ç©¶ã³ãã¥ããã£ã§ã©ã®ããã«åãçµãŸããŠãããããææ°ã®ç ç©¶ååãšãšãã«ç޹ä»ããŸãã ãç¥ãã æ¬ç« ã¯ãCVãAIã®åéãå°éãšãããŠããªãæ¹ã«ããã®é¢çœããç¥ã£ãŠããã ããããããããŠåã¿ç ãã衚çŸã§è§£èª¬ããŠããŸããå°éç¥èããæã¡ã®æ¹ããããæè¡çã«æ£ç¢ºãªå
容ãç¥ãããæ¹ã¯ããã² ãã¡ãã®è©³çްç ãã芧ãã ããã VLMã®èšèªåéïŒæå
端ã¢ãã«ããèºã空éã»å¹Ÿäœæšè«ã®éç çŸåšã®Vision-Language ModelïŒVLMïŒã¯ãèšèªç©ºéã«ãããæ
å ±åŠçã«èããåã£ãŠããŸãããã®çµæãè£œé æ¥ã§æãéèŠãªã幟äœããã空éãã®èªèã«ãããŠãèŽåœçãªåŒ±ç¹ãæ±ããŠããŸãã çŽç²ãªèŠèŠèœåãæž¬ãã BabyVision ããã³ãããŒã¯ã®å ±åã«ããã°ãæãæ§èœã®è¯ããšãããGemini 3 Proã§ããã¹ã³ã¢ã¯49.7%ã«çãŸãã人éã®å¹³åçãªå€§äººã®ã¹ã³ã¢ïŒ94.1%ïŒãã倧ããä¹é¢ããã人éã®3æ³å
ã®ã¹ãã«ãšã»ãŒåçããšããè¡æçãªçµæã瀺ãããŠããŸãããŸããèæ¯ãã€ãºãåãé€ããç©ºéæšè«åé¡ã MathSpatial ãã§ãã人éã95%è¶
ã§è§£ããåé¡ã«å¯ŸããŠå€ãã®ã¢ãã«ã60%ã«å±ããŸããã è£œé æ¥ã®ãããã¯ãã«ãããŠãããã®ç©Žã¯å³é¢ã®ã©ã®äœçœ®ã«ãããããè£åŽã«ã©ããªåœ¢ç¶ãé ããŠãããããšãã£ã空éçã»å¹Ÿäœçãªå¯Ÿå¿é¢ä¿ãæ£ç¢ºã«èªèã§ããªããã°ãå質管çãèšè𿝿Žã¯æç«ããŸãããå®éã«ã建ç¯å³é¢ã察象ãšããææ°ã®ãã³ãããŒã¯ã AECV-Bench ãïŒ2026幎1æå
¬éïŒã§ããããã¹ãäžå¿ã®QAã¯é«ç²ŸåºŠãªäžæ¹ã§ã空éèªèãªã©ãèŠããã¿ã¹ã¯ã§ã¯0.40ã0.55%çšåºŠã®ç²ŸåºŠã«çãŸãããšãå ±åãããŠããŸãã ãã£ãã£ã§ã 以åã®Tech Blog ã§ç޹ä»ãããè£œé æ¥ã«é¢é£ããã¿ã¹ã¯ã«é¢ããèªç€Ÿãã³ãããŒã¯ãçšããæ€èšŒã§ãç©ºéæšè«ã«é¢ããã¿ã¹ã¯ã®æ§èœã®äŒžã³æ©ã¿ã«çŽé¢ããŠããŸããCVPR 2026ã§ææ¡ãããã3Dåæ§æã¿ã¹ã¯ãšç©ºéæšè«ãçµ±åããã G2VLM ãã®ãããªã¢ãããŒãã1ã€ã®åžæã§ãããå®çšã¬ãã«ãžã®æè¯ã¯ãŸãã«ããããã®èª²é¡ã§ãã ãã¯ã¹ãã£ãªãçŽç²å¹ŸäœïŒåœ¢ç¶ã ãã§ãªãæå³ãæãã3Dèªè è£œé æ¥ã§æ±ã3DCADã¢ãã«ã¯ããã¯ã¹ãã£æ
å ±ãæããªãçŽç²ãªå¹Ÿäœåœ¢ç¶ã®è¡šçŸã§ããB-RepãMeshãPoint Cloudãšãã£ã圢åŒã§èšè¿°ããã3D圢ç¶ãæ£ç¢ºã«èªèããããšã¯ãèªç¶ç»åã®ããã«ãã¯ã¹ãã£ã§è£ããæ
å ±ãå°ãªãããã2Dç»åèªèãªã©ãšæ¯èŒãããšäŸç¶ãšããŠé£ããã¿ã¹ã¯ã§ãã çŸåšãCADããŒã¿ãLLMã«å
¥åããããã«Pythonã³ãŒããããŒã¯ã³ã«å€æããææ³ïŒã BrepCoder ããªã©ïŒãç»å Žããå¹
åºãã¿ã¹ã¯ãåŠçã§ããããã«ãªãã€ã€ãããŸãããããããã®æ¹æ³ã§ã¯xyz座æšãå³å¯ã«æå®ããæšè«ããç¹å®ã®é åã«é¢ããé«åºŠãªè³ªçå¿çã¯äŸç¶ãšããŠå°é£ã§ãã æã
ãè§£ããªããã°ãªããªãã®ã¯ãåãªã圢ç¶ã®åŸ©å
ã§ã¯ãããŸãããããã®ç©Žã¯ãã«ãçšã§ãããããã®é¢ã¯å¥ã®éšåãšã®åµåé¢ã§ããããšãã£ãã圢ç¶ã®ãæå³ïŒã»ãã³ãã£ã¯ã¹ïŒãã®çè§£ã§ãã CVPR 2025ã®Best Paperã«éžåºãããã VGGT ããæå³ã®åææšè«ã«ãŸã§æ¡åŒµãããã UNITE ãïŒRGBç»åãã3Dåæ§æãšã»ãã³ãã£ã¯ã¹ãåæã«äºæž¬ïŒããNeRFã®éã¿ãLLMã«çŽæ¥å
¥åããŠç©ºéçãªäœçœ®é¢ä¿ãææ¡ããã¢ãããŒãïŒ Amaduzzi et al., 2025 ïŒãªã©ã3D CVã®æåç·ããŸãã«ãã®é åã«æãã§ããŸãããè£œé æ¥ã®è€éãª3DCADããŒã¿ã§ã©ããŸã§éçšãããã¯ãæã
ãå®èšŒããŠããé åã§ãã ããããªãã¢ããŒã¿ã¯ååšããªãïŒäžå®å
šãªãã«ãã¢ãŒãã«ç©ºéã®ã¢ã©ã€ã³ã¡ã³ã å®éã®è£œé çŸå Žã§ã¯ãããããªãã¢ããŒã¿ãååšããªãã±ãŒã¹ãå°ãªããããŸããã 2Dã®å³é¢ã3Dã®CADã¢ãã«ããããŠããã¹ãã§æžããã仿§æžãäžå
·åå ±åæžãããã衚çŸåœ¢åŒããç°ãªããã«ãã¢ãŒãã«ãªããŒã¿ããäžå®å
šãªç¶æ
ã§æ£ãã°ã£ãŠããŸãã ç§ãã¡ãå®ããŒã¿äžã§å®çŸããªããã°ãªããªãã®ã¯ãã仿§æžã®ããã¹ãèšè¿°ãããCADäžã®ç¹å®ã®é¢ãå
¬å·®ã®æ
å ±ããªã³ã¯ãããããšãã£ãã¢ããªãã£ãè·šãã æ
å ±ã®çŽä»ãããã3Dã®MeshããŒã¿ãç»åãããã¹ããåãæœåšç©ºéã«åã蟌ãããšãã£ãçµ±äžçãªåŠçã§ãã ãããã課é¡ã«å¯ŸããçŸåšã®ç ç©¶ã³ãã¥ããã£ã§ã¯ãå®å
šãªãã¢ããªãããšãåæã«çµ±äžåã蟌ã¿ãžæŽåãããã CrossOver ãããç¹çŸ€ã»ç»åã»ããã¹ããçµ±åããŠCADãã³ãããŒã¯ã§æé«æ°Žæºã®æ§èœãéæããã cadrille ããªã©ã®ã¢ãããŒããæ³šç®ãããŠããŸããããããããããçŸå Žã§æ©èœãããã«ã¯ãè£œé æ¥ç¹æã®ãã¡ã€ã³ç¥èããã«ãã¢ãŒãã«ãªã¢ãã«ã«ã©ãçµã¿èŸŒãããšããéèªæãªèª²é¡ã«åãçµãå¿
èŠããããŸãã ããã£ãœã3Dã¯ãããªãïŒå¹Ÿäœå¶çŽãšããããžãŒãä¿èšŒãã補é å¯èœãª3Dçæ èšèšãã§ãŒãºã®ã¢ã·ã¹ãã«ãããŠ3DCADã¢ãã«ã®çæã«ã¯å€§ããªéèŠããããŸããããããçŸç¶ã®çæã¢ãã«ãé¥ããã¡ãªã®ããèŠãç®ã¯ããã£ãœãããè£œé æ¥ã®çŸå Žã§ã¯åœ¹ã«ç«ããªãããŒã¿ããåºåããŠããŸãåé¡ã§ãã è£œé æ¥ã«ããã3DããŒã¿ã¯ã以äžã®æ¡ä»¶ãæºãããªããã°äŸ¡å€ããããŸããã ãŠã©ãŒã¿ãŒã¿ã€ãã§ããããšïŒç©Žã空ããŠããããçŸå®ã«ã¯ããåŸãªãäœçžã«ãªã£ãŠããªãããšïŒ é¢åå£«ã®æææ¡ä»¶ãé©åã§ããããš åŸãã人éããã©ã¡ããªãã¯ã«åŸ®ä¿®æ£ã§ããããš ãã ã®ãããã£ãœã3D圢ç¶ãã§ã¯ãªãã補é ã»ç·šéãå¯èœãª3D圢ç¶ããçæããå¿
èŠããããŸãããã®é£é¡ã«å¯ŸããB-Repãè·é¢é¢æ°ãšããŠç¬Šå·åãæå¹ãªããããžãŒãä¿èšŒããã BR-DF ãããVLMã®ã¬ã€ãã§è€éãªCADããã°ã©ã ãæ®µéçã«çæããã CADEvolve ããšãã£ãææ°ç ç©¶ãç»å ŽããŠããŸãããç©ççã«å®çŸäžå¯èœã§ç·šéäžå¯èœãªåœ¢ç¶ãããã®è±åŽã¯ãåŠè¡çãšç£æ¥çãååããŠè§£ãã¹ãéèŠãªããŒãã§ãã ãã®ä»ã®ç ç©¶éçºèª²é¡ ç§ãã¡ãèŠéã«å
¥ããŠããæè¡é åã¯ãCVãNLPã®æ ã«çãŸããŸãããèªèããããŒã¿ãåºã«ãçŸå Žã§äŸ¡å€ã®ããæææ±ºå®ãæ¯æŽãããããäžé·æçã«ã¯ä»¥äžã®ãããªè£œé æ¥ç¹æã®è€éãªããŒã¿æ§é ãç©ççå¶çŽã«åãåã課é¡ã«ãåãçµãã§ããèšç»ã§ãã è€éã«çµ¡ã¿åãã°ã©ããšå æé¢ä¿ ïŒè£œé æ¥ã®ããŒã¿ã¯ãéšåæ§æïŒBOMïŒã補é å·¥çšããµãã©ã€ãã§ãŒã³ãªã©ãæ¬è³ªçã«å·šå€§ãªã°ã©ãæ§é ãæã£ãŠãããGNNãæŽ»çšããæ
å ±åŠçãæå¹ã§ãããŸããæ©çãŸãæ¹åãäžè¯åã®æ ¹æ¬åå åæïŒRCAïŒã«ãããŠã¯ããåãªãçžé¢ãã§ã¯ãªãå³å¯ãªãå ææšè«ããåºæ¥ããšåŒ·åã§ããã CusGNN ãã®ãããªæ±çšã¢ãŒããã¯ãã£ããå æãã€ãžã¢ã³ãããã¯ãŒã¯ãšãã¬ããžã°ã©ãã®èåããçŸå Žã®æ³¥èãããŒã¿ã§ã©ããŸã§æ©èœããã®ããããããŸã éæã®äœå°ã ããã§ãã éãããç©çã·ãã¥ã¬ãŒã·ã§ã³ã®é«éå ïŒè£œåèšèšã«äžå¯æ¬ ãªCAEïŒæ§é ã»ç±è§£æïŒãCFDïŒæµäœè§£æïŒãšãã£ãç©çã·ãã¥ã¬ãŒã·ã§ã³ã¯ãèšç®ã³ã¹ããèšå€§ã§ããããã代çã¢ãã«ã§æ°æ¡ã¬ãã«ã§é«éåããã Neural Operator ãããç©çãœã«ããŒã䜿ããã«äºååŠç¿ãããã GeoPT ããªã©ã®æè¡ã¯ãèšèšããã»ã¹ãæ ¹æ¬ããèŠãããã³ã·ã£ã«ãæã£ãŠããŸãã ããã³ããè·šããªããæ©å¯ããŒã¿ãã®å£ ïŒãã£ãã£ã¯äžç4ã«åœã«æ ç¹ãæã¡ãŸããã顧客ã®èšèšå³ããµãã©ã€ã€ãŒã®è£œé ããŒã¿ã¯æ©å¯æ
å ±ã§ãããäžç®æã®äžå€®ãµãŒããŒã«éçŽããŠã¢ãã«ãåŠç¿ãããããšã¯ã§ããŸãããããŒã¿ãããããã®å Žæã«çãããŸãŸåŒ·åãªã°ããŒãã«ã¢ãã«ãåŠç¿ããããé£ååŠç¿ãã®æŽ»çšããã¢ãã«ã®æ§èœã®åäžã®ããã«èŠéããªãæè¡ã§ãã ã¢ã«ããã¢ãšã®é£æº åé ã§è«æã®å·çã¯ææ®µã§ãã£ãŠç®çã§ã¯ç¡ããšããããšãæžããŸããããã ãããšãã£ãŠãã£ãã£ã®ãªãµãŒã掻åãã瀟å
ã«éãããã®ã«ããã€ããã¯ãããŸãããã¯ãŒã¯ã·ã§ããã®äž»å¬ããã£ã¬ã³ãžã®éå¬ãéããŠãã¢ã«ããã¢ã®åãæå€§éã«åããŠèª²é¡ã®è§£æ±ºãé²ããŠè¡ããŸãã Computer Visionã®åéã§ã¯ãç£æ¥çãšã¢ã«ããã¢ãã³ã³ããã¯ãŒã¯ã·ã§ããã®éå¬ãªã©ãéããŠå®äžçã®éèŠãªèª²é¡ãæç€ºããã³ãã¥ããã£å
šäœã§ãããè§£ãæåãæ ¹ä»ããŠããŸããCVPR 2025ã® Perception for Industrial Robotics Automation (PIRA) ã¯ãŒã¯ã·ã§ãã ã§ã¯Alphabetã»NVIDIAã»Googleã»Metaãªã©ã®äŒæ¥ãäžå¿ãšãªã£ãŠ$60,000èŠæš¡ã®Bin Pickingãã£ã¬ã³ãžãéå¬ããŸãããCVPR 2026ã§ãNVIDIAã®ç ç©¶è
ããªãŒã¬ãã€ã¶ãŒãåãã 4D Digital Twins (4DDT) ã¯ãŒã¯ã·ã§ãã ãMicrosoft Researchãé·å¹Žäž»å°ããŠã Computer Vision in the Wildã¯ãŒã¯ã·ã§ãã ãªã©ãäŒæ¥ãç ç©¶ã³ãã¥ããã£ããªãŒãããäºäŸãå¢ããŠããŸãã ãããŸã§æ¬èšäºã§åãäžããŠãã課é¡ã«å¯ŸããŠããCVPR 2026ã§ã¯å€ãã®ã¯ãŒã¯ã·ã§ããããã£ã¬ã³ãžãéå¬ãããŸãã空éç¥èœã«é¢ããŠã¯ 3D-LLM/VLA ã Multimodal Spatial Intelligence (MUSI) ãåè¿°ã®Computer Vision in the Wildå
ã® SITE-Bench challengeãããã«ãã¢ãŒãã«èªèã§ã¯ Any-to-Any Multimodal Learning (A2A-MML) ã Computer Vision for the Built World (CV4AEC) ãã3Dçæã§ã¯ Generative 3D Reconstruction(GenRec3D) ã 3D Geometry Generation for Scientific Computing (3D4S) ãããããéå¬äºå®ã§ããããããã®èª²é¡ãã³ãã¥ããã£å
šäœã§åãçµãŸããŠããããšãããããŸãã ç§èªèº«ãICCV 2025ã§åºç€ã¢ãã«ãå®ç£æ¥ã«ç§»è»¢ããããã«å¿
èŠãªããŒã¿æ§ç¯ã»ãã¡ã€ã³é©å¿ã»è©äŸ¡èšèšãè°è«ãã Foundation Data for Industrial Tech Transfer (FOUND)ã¯ãŒã¯ã·ã§ãã ãäž»å¬ããŸãããCVPR 2026ã«ãããŠãè€æ°ã®ã¯ãŒã¯ã·ã§ããã®ãªãŒã¬ãã€ãºãè¡ãªã£ãŠããïŒ VGIã¯ãŒã¯ã·ã§ãã ã BigMACã¯ãŒã¯ã·ã§ãã ïŒããã£ãã£ã«ãããŠãã³ã³ããã¯ãŒã¯ã·ã§ããã®äž»å¬ãªã©ãéããŠãè£œé æ¥AIãšããç ç©¶é åãã®ãã®ã®çºå±ã«ãè²¢ç®ããŠãããããšèããŠããŸãã ãŸãšã ãã£ãã£ã¯æ¥æ¬ã»ç±³åœã»ãããã ã»ã¿ã€ã®4ã«åœã«æ ç¹ãæã¡ã800人ãè¶
ããèŠæš¡ãŸã§æé·ããŠããŸããããã£ãã£ã®AIçµç¹ã¯ ãã¡ãã®ããã° ã«ãèšèŒãããããã«çŽäœæ²æãçµãŠããŸããããåçµéãæãããä»ãé£èºã®æãè¿ããŠããŸãã ãããŸã§è¿°ã¹ãŠããããã«ãæã
ãæ±ã課é¡ã¯Computer VisionãšAIã®æåç·ãšæ·±ã亀差ããŠããŸããVLMã®ç©ºéæšè«ãæ£ç¢ºãª3D幟äœåœ¢ç¶ã®èªèãäžå®å
šãªãã«ãã¢ãŒãã«ããŒã¿ã®çµ±åãå¶çŽæ¡ä»¶ãèæ
®ãã3Dçæ â ãããããããäŒè°ã§æŽ»çºã«è°è«ãããªãããåæã«è£œé æ¥ã®çŸå Žã§æ¥ã
çŽé¢ããŠãã課é¡ã§ãããããŠæã
ã«ã¯ãæå
端ã®ç ç©¶ææãããã«è©Šããå®ããŒã¿ãšãããã¯ãã䟡å€ãå±ããã¹ããŠãŒã¶ãŒãããŸããç ç©¶ãšäŸ¡å€æ€èšŒã®è·é¢ãããã»ã©è¿ãç°å¢ã¯ããªããªããããŸããã ããã«æžãã課é¡ã®ã©ãã1ã€ã§ããã³ãšããæ¹ããã£ãã£ã§äžç·ã«ã¢ãã¥ããç£æ¥ã®ããã³ã·ã£ã«ãè§£æŸããŸãããïŒ ä»²éãåéããŠããŸãïŒ ãã£ãã£æ ªåŒäŒç€Ÿã§ã¯ãæ¬èšäºã§ç޹ä»ããç 究課é¡ãã¯ãããAIèŠçŽ æè¡ã®ç ç©¶éçºã«å
šåã§åãçµã¿ãããã·ã§ã³ãã¢ãã¥ããç£æ¥ã®ããã³ã·ã£ã«ãè§£æŸãããã®å®çŸãç®æããŠããŸãã ãã®èšäºãèªãã§ãèªåãªããã解決ãããããã®æè¡ãé¢çœããããšæãããªãµãŒãã£ãŒããšã³ãžãã¢ã®æ¹ããã²ãå¿åãåŸ
ã¡ããŠãããŸãïŒ è©³çŽ°ã¯ä»¥äžã®æ¡çšããŒãžããã芧ããã ããŸãïŒ https://speakerdeck.com/caddi_eng/enziniaxiang-kehui-she-shao-jie-zi-liao https://recruit.caddi.tech/29d6e245ed2d80f5bc93ffaa8d144860 åŒç€Ÿäž»å¬ã®ã€ãã³ããéå¬ããŠããŸãã®ã§ããèå³ããã°ãã²ãåå äžããïŒ https://connpass.com/event/385864/ ãã£ãã£ã®ãªãµãŒãçµç¹ãåãçµãç 究課é¡ïŒè©³çްçïŒ VLMã®èšèªåé 2023幎ã®GPT-4Vã®ç»å Žä»¥éãèŠèŠãšèšèªãçµ±åããVLMïŒVision-Language ModelïŒ/ MLLMïŒMultimodal LLMïŒã¯æ¥éãªé²åãéãããã®æ§èœã¯åäžãç¶ããŠããŸããäŸãã°ã倧åŠã¬ãã«ã®å€åéãã«ãã¢ãŒãã«çè§£ãè©äŸ¡ãã MMMU-Pro ãã³ãããŒã¯ã§ã¯Gemini 3 Deep Thinkã81.5%ã«éãã人éã®å°éå®¶ã®äžäœã¹ã³ã¢ïŒ85.4%ïŒã«è¿«ã£ãŠããŸããææžç解㮠DocVQA ã§ã¯ Qwen3-VL-32B ã96.9%ãšäººéã®ã¹ã³ã¢ïŒ94.36%ïŒãè¶
ããæ°åŠçãªæšè«èœåãè©äŸ¡ãã MathVista ã§ãOpenAI o1ã®æç¹ã§æ¢ã«73.9%ãšäººéã®å¹³åïŒ60.3%ïŒã倧ããäžåã£ãŠããŸãã ãã®ãããªæ§èœåäžãåããŠæ§ã
ãªç£æ¥ã§VLMãMLLMã®ç€ŸäŒå®è£
ãé²ãã§ããŸãããããããããã®VLM/MLLMã®ãè³¢ããã¯èšèªç©ºéã«ãããæ
å ±ã®åŠçã«åã£ãŠããã空éã幟äœã«é¢ããã¿ã¹ã¯ã§ã¯æå
端ã®ã¢ãã«ã§ãäŸç¶ãšããŠäœãæ§èœã«ãšã©ãŸã£ãŠããããšãæããã«ãªã£ãŠããŸãã BabyVision ã¯ãèšèªç¥èã«äŸåããªãçŽç²ãªèŠèŠèœåãæž¬ãããã«å
š388åã»22ãµãã¯ã©ã¹ã»4ã«ããŽãªã®ãã³ãããŒã¯ãæ§ç¯ããŸãããçµæãæãæ§èœã®è¯ãGemini 3 Proã§ãã49.7%ãšãå¹³åçãªå€§äººã®ã¹ã³ã¢ïŒ94.1%ïŒãã倧ããä¹é¢ããŠããã人éã®3æ³å
ã®ã¹ãã«ãšã»ãŒåçãšããçµæãå ±åãããŠããŸãããŸãã MathSpatial ã¯ãèæ¯ããã¯ã¹ãã£ãªã©ã«ãããã€ãºãåãé€ãã空éçãªæšè«åé¡ãããªããã³ãããŒã¯ãäœæãã人éã95%è¶
ã§è§£ããåé¡ã«å¯ŸããŠå€ãã®MLLMã60%ã«ãå±ããªãããšã瀺ããŸãããä»ã«ãã Chen et al., 2025 ã¯ãæå
端ã®VLMã§ãã£ãŠããunder / behindãã®ãããªåçŽãªäºç©äœã®ç©ºéé¢ä¿ã§ããèªèãé£ããããšãææãããŠããããã®åå ãTransformerã®æ³šææ©æ§ã®å²ãåœãŠã®åé¡ã«ããããšã瀺åããŠããŸãã ãã®ããã«æå
端ã®VLMã§ãã£ãŠãèšèªåéã«ãã£ãŠå¹Ÿäœã空éã«é¢ããæ§èœãéå®çã§ããããšãå ±åãããŠããŸãããè£œé æ¥ã«ãããŠã¯å¹Ÿäœã空éçãªèªèã¯ãããã¯ãã®äŸ¡å€ãæ§èœã«çŽçµããäžå¿çãªèœåã§ããéšåã®åœ¢ç¶ã寞æ³ãå
¬å·®ã察å¿é¢ä¿ â ããããæ£ç¢ºã«èªèã§ããªããã°ãVLMã«ããèšèšãå質管çã®æ¯æŽãæç«ããŸããããã£ãã£ã§ã¯ 以åã®Tech Blog ã§ç޹ä»ããããã«ãè£œé æ¥ã«é¢é£ããæ§ã
ãªã¿ã¹ã¯ãçšãããã³ãããŒã¯ãäœæããVLMãå«ããŠç¶²çŸ
çãªè©äŸ¡ãããŠããŸããããã¯ããã®èšèªåéãåå ãšæããã空éã»å¹Ÿäœã¿ã¹ã¯ã®æ§èœã®äŒžã³æ©ã¿ã«çŽé¢ããŠããŸãã2026幎1æã«å
¬éããã建ç¯å³é¢ã察象ãšãã AECV-Bench ã§ããOCRãããã¹ãäžå¿ã®QAã¯é«ã粟床ã瀺ãäžæ¹ã§ã空éèªèãªã©ãèŠããã¿ã¹ã¯ã§ã¯0.40ã0.55%ã®çšåºŠã®ç²ŸåºŠã«çãŸããšå ±åãããŠãããè£œé æ¥ã»å»ºç¯æ¥ãšãã£ãé¡äŒŒãã¡ã€ã³ã«å
±éãã課é¡ã§ããããšã䌺ããŸãã ãã®ã®ã£ãããåããããã®ç ç©¶ãé²ãã§ããŸããCVPR 2026ã«æ¡æããã G2VLM ã¯ãVLMã®ç©ºéç¥èœã®åŒ±ãã®æ ¹æ¬åå ãã2Dç»åãã3Dãåæ§æãã幟äœåŠç¿ã®æ¬ åŠããšæãã3Dåæ§æã¿ã¹ã¯ãšç©ºéæšè«ãçµ±åãããGeometry-grounded VLMããææ¡ããŠããŸããç»åããå¹Ÿäœæ§é ãæç€ºçã«åŠç¿ãããããšã§ç©ºéæšè«ã®ç²ŸåºŠãåäžãããã¢ãããŒãã§ãããæã
ãçŽé¢ããŠãã課é¡ã«å¯Ÿãã1ã€ã®è§£æ±ºã®æ¹åæ§ã瀺ããŠããŸãã æ£ç¢ºãª3D幟äœåœ¢ç¶ã®èªè è£œé æ¥ã§æ±ã3DCADã¢ãã«ã¯ããã¯ã¹ãã£æ
å ±ãæããªãçŽç²ãªå¹Ÿäœåœ¢ç¶ã®è¡šçŸã§ããB-RepãMeshãPoint Cloudãšãã£ã圢åŒã§èšè¿°ããã3D圢ç¶ãæ£ç¢ºã«èªèããããšã¯ãèªç¶ç»åã®ããã«ãã¯ã¹ãã£ã§è£ããæ
å ±ãå°ãªãããã2Dç»åèªèãªã©ãšæ¯èŒãããšäŸç¶ãšããŠé£ããã¿ã¹ã¯ã§ãã ãã®åé¡ã«å¯ŸããçŸåšã®äž»æµãªã¢ãããŒãã®1ã€ã¯ãCADã®ããŒã¿ãPythonã³ãŒããããŒã¯ã³ã«å€æããŠããã¢ãã«ã«å
¥åããæ¹æ³ã§ãã BrepCoder ã¯ã3DCADã®B-Rep衚çŸïŒè£œé æ¥ã§æ±ãããæšæºçãªè¡šçŸïŒãšPythonã³ãŒã衚çŸïŒLLMãçè§£ãããã衚çŸïŒãå
±éã®ç©ºéã«åã蟌ããšã³ã³ãŒããŒãåŠç¿ããææ³ãææ¡ããŸãããããã«ãããæšæºçãªè¡šçŸã§ããB-Repã®ããŒã¿ããšã³ã³ãŒããŒãéãã ãã§LLMã«æž¡ãããšãå¯èœã«ãªãã圢ç¶ã®åŸ©å
ããCADã«é¢ãã質çå¿çãŸã§ãå¹
åºãã¿ã¹ã¯ã1ã€ã®ã¢ãã«ã§çµ±åçã«åŠçããããšã«æåããŸããããããããã®æ¹æ³ã§ã¯xyz座æšã䜿çšããQAãé åãæå®ããQAã¯å°é£ã§ãã è£œé æ¥ã®ã¿ã¹ã¯ã§ã¯ã3D圢ç¶ã®å¹Ÿäœãæ£ç¢ºã«èªèããã ãã§ãªããããã®ç©Žã¯ãã«ãçšãããã®é¢ã¯åµåé¢ããšãã£ã圢ç¶ã®æå³ïŒã»ãã³ãã£ã¯ã¹ïŒãåæã«çè§£ããããšãæ±ããããŸãã3D Computer Visionã®ç ç©¶ã¯ãŸãã«ãã®æ¹åã§é²ãã§ããŸãã UNITE ã¯CVPR 2025ã®Best Paperã«éžåºããã VGGT ãæ¡åŒµããRGBç»åã®ã¿ãã3Dåæ§æãšã»ãã³ãã£ã¯ã¹ãçµ±äžã¢ãã«ã§åæã«äºæž¬ããã¢ãããŒããææ¡ããŠããã圢ç¶ãšæå³ã®åæèªèãšããç®æšã«çŽçµããç ç©¶ã§ãã 3D圢ç¶ã«å¯ŸããèšèªããŒã¹ã®QAã§ã¯ãNeRFïŒNeural Radiance FieldïŒã®éã¿ãçŽæ¥ãã«ãã¢ãŒãã«LLMã«å
¥åããã¢ãããŒããæ³šç®ãããŠããŸããNeRFã®éã¿ã¯åœ¢ç¶ãšå€èгãé£ç¶çã«ç¬Šå·åããŠãããããç¹çŸ€ãžã®é¢æ£åã§ã¯å€±ãããŠããŸãæ
å ±ãä¿æãããŸãŸ3D圢ç¶ãæ±ããŸãã LLaNA ããã®ã¢ãããŒããåãæããåŸç¶ã® Amaduzzi et al., 2025 ã®ç ç©¶ã§ã¯ãNeRFã®éã¿ãã空éçã«å±æåãããããŒã¯ã³åãçæããã¡ã¿ãšã³ã³ãŒããå°å
¥ããããšã§ãã°ããŒãã«ãªåäžããŒã¯ã³ã§ã¯æããããªãã£ãéšåéã®äœçœ®é¢ä¿ã詳现ãª3D QAãå®çŸããŠããŸãã ããã§ç޹ä»ãã3D圢ç¶ãšã»ãã³ãã£ã¯ã¹ã®çµ±åèªèã¯ããã£ãã£ã«ãšã£ãŠãå³é¢ãCADã®å¹Ÿäœæ
å ±ãæ£ç¢ºã«èªã¿åããé¡äŒŒéšåã®æ€çŽ¢ãå å·¥æ¹æ³ã®æšå®ãèŠç©ã倿ã«ç¹ããããã«éèŠãªèŠçŽ æè¡ã§ãã ãã«ãã¢ãŒãã«ãªããŒã¿ã®åŠç è£œé æ¥ã§æ±ãããŒã¿ã¯æ¬è³ªçã«ãã«ãã¢ãŒãã«ã§ããå³é¢ïŒ2DïŒãCADïŒ3DïŒã仿§æžã»äžå
·åå ±åæžã»çºæ³šå±¥æŽïŒããã¹ãïŒ â ããããæšªæçã«çµ±åããŠåŠçããå¿
èŠããããŸããã3DCADããé¡äŒŒããå³é¢ãæ€çŽ¢ããããå³é¢ãã察å¿ãã3DCADãæ€çŽ¢ãããã仿§æžã®èšè¿°ãCADã®é¢ã»ç©Žã»å
¬å·®ãšãªã³ã¯ããããšãã£ãã¢ããªãã£ãè·šãã ãŠãŒã¹ã±ãŒã¹ãé »åºããŸããããã«ã3D圢ç¶ã®è¡šçŸ1ã€ããšã£ãŠãMeshãPoint CloudãB-Repãªã©å€æ§ãªè¡šçŸåœ¢åŒãæ±ãå¿
èŠããããŸãã ãã®ãããªãã«ãã¢ãŒãã«ãªããŒã¿ãçµ±äžçã«æ±ãããã®ç ç©¶ïŒç¹ã«åã蟌ã¿ç©ºéã«é¢ããç ç©¶ïŒãçãã«è¡ãããŠããŸãã ULIP-2 ã¯3Dç¹çŸ€ã»ç»åã»èšèªã®3ã€çµããã©ã€ã¢ãŒãã«äºååŠç¿ã§æããæ çµã¿ãææ¡ããLLMã«ããèšèªèšè¿°ã®èªåçæã§ããŒã¿ã®ã¹ã±ãŒãªã³ã°ãå¯èœã«ããŠããŸãã CrossOver ã¯ãRGBç»åãç¹çŸ€ãCADã¢ãã«ãããã¢ãã©ã³ãããã¹ããªã©ã®è€æ°ã¢ããªãã£ããå®å
šãªãã¢ããªãããšãåæã«çµ±äžåã蟌ã¿ãžæŽåãããŠããŸããå
šã¢ããªãã£ã®ããŒã¿ãæã£ãŠããªãç¶æ³ã§ãåäœããç¹ã¯ãå¿çšããäžã§åŒ·åãªç¹åŸŽã§ãã 3DCADã®æ€çŽ¢ãåæ§æã¿ã¹ã¯ã«å¯ŸããŠããã«ãã¢ãŒãã«ãªã¢ãããŒããæ€èšãããŠããŸãã cadrille ã¯Point Cloudãç»åãããã¹ãã®3ã€ã®ã¢ããªãã£ãçµ±äžçã«æ±ãã匷ååŠç¿ã«ãããã¡ã€ã³ãã¥ãŒãã³ã°ã§10åã®CADãã³ãããŒã¯ã«ãããŠæé«æ°Žæºã®æ§èœãéæããŠãããCADããŒã¿ã«ããããã«ãã¢ãŒãã«çµ±åã®æå¹æ§ãå®èšŒããŠããŸãã GenCAD-3D ã¯Point CloudãMeshãªã©ç°ãªã衚çŸã§è¡šããã3DããŒã¿ã察ç
§åŠç¿ã§å
±éã®ç©ºéã«åã蟌ãããšã§ãã¢ã©ã€ã³ã¡ã³ãã®ãšãã匷åãªæœåšç©ºéã®åŠç¿ã«æåããæ€çŽ¢ãšçæã®äž¡æ¹ã§é«ãæ§èœãéæããŠããŸãã 3Dçæ 3DCADã¢ãã«ã®çæã«ã€ããŠã¯ãèšèšãã§ãŒãºã®ã¢ã·ã¹ããã¢ãã«åŠç¿ã®ããã®è¿œå ããŒã¿çæãªã©è£œé æ¥ã«ãããŠãå€ãã®éèŠããããŸããããããçŸç¶ã®çæã¢ãã«ãåºåãã3D圢ç¶ã¯ãŠã©ãŒã¿ãŒã¿ã€ãïŒæ°Žå¯ïŒã«ãªã£ãŠããªãã£ãããé¢åå£«ã®æææ¡ä»¶ãé©åã«èæ
®ãããŠããªãã£ããããŸããçµæãšããŠå®éã«ã¯å®çŸäžå¯èœãªåœ¢ç¶ãçæããããã人éã埮修æ£ãå ããããšãå°é£ã ã£ããããŸãããèŠãç®ãããã£ãœã3DããŒã¿ããäœããããã«ãªã£ãŠããè£œé æ¥ã§ã®å¿çšäžã¯åœ¢ç¶ã®å®çŸå¯èœæ§ãç·šéå¯èœæ§ãæºããããŠããªããã°äŸ¡å€ãåºãŸããã MiCADangelo ã¯3Dã¹ãã£ã³ããŒã¿ãããã©ã¡ããªãã¯ã§ç·šéå¯èœãª3DCADã¢ãã«ãžã®åŸ©å
ãã人éã®èšèšããã»ã¹ã«è¿ãæé ã§è¡ããäžéšã®å¶çŽã®èæ
®ãå¯èœã§ãã CADKnitter ã¯è€æ°éšåã®çµã¿åãããåæã«ã幟äœå¶çŽãšããã¹ãã«ããæ¡ä»¶ä»ããæºãããè£å®ããŒããã®çæãããã¢ãã«ã310kè¶
ã®ããŒã¿ã»ããã§åŠç¿ããŸããããŸãããŠã©ãŒã¿ãŒã¿ã€ããªåœ¢ç¶ãçæãããããšãä¿èšŒããããã«ã BR-DF ã¯B-RepãSDF/UDFã®è·é¢é¢æ°ãšããŠç¬Šå·åããããšã§ã確å®ã«æå¹ãªããããžãŒãæã€B-Repãžã®å€æãå®çŸãã衚çŸãææ¡ããŸãããçŽè¿ã§ã¯ CADEvolve ãVLMã¬ã€ãã®é²åçç·šéãã€ãã©ã€ã³ã§åçŽãªåœ¢ç¶ããç£æ¥ã¬ãã«ã®è€éãªCADããã°ã©ã ãæ®µéçã«çæããæ¹æ³ãææ¡ããImage2CADã®è€æ°ãã³ãããŒã¯ã§æé«æ°Žæºã®æ§èœãéæããŠããŸãã ãã®ä»ã®ç ç©¶éçºèª²é¡ äžèšã«å ããŠããã£ãã£ã§ã¯ä»¥äžã®ãããªé åã«ãç ç©¶éçºèª²é¡ããããŸãã GNN/å ææšè« ïŒè£œé æ¥ã®ããŒã¿ã¯ãéšåæ§æã»å·¥çšã»ãµãã©ã€ã€ãŒãªã©ãæ¬è³ªçã«ã°ã©ããšããŠæ±ãã¹ãé¢ä¿ããŒã¿ãå€ããããGNNãæŽ»çšããç ç©¶ãçãã«è¡ãããŠããŸããäŸãã°ã CusGNN ã¯CADã¢ã»ã³ããªã¢ããªã³ã°åãã®æšèŠã·ã¹ãã ã®ããã«ããŒã¿åºæã®GNNã¢ãŒããã¯ãã£ãèªåèšèšããæ çµã¿ãææ¡ããŠããŸããå質管çãæ ¹æ¬åå åæïŒRCAïŒã«ã¯å ææšè«ãéèŠãªæè¡ã§ã Schwarz et al., 2024 ã¯åå°äœLED補é ã®åå 工倿ã«å ææšè«ãé©çšã2ã3%ã®æ©çãŸãæ¹åãåºæ¥ãããšãå®ããŒã¿ã§å®èšŒããŠãããã Wehner et al., 2024 ã¯å æãã€ãžã¢ã³ãããã¯ãŒã¯ãšãã¬ããžã°ã©ããçµã¿åãããããšã§è£œé ã©ã€ã³ã®RCAãèªååããææ³ãææ¡ããŠããŸãã 代çã¢ãã«ã«ããã·ãã¥ã¬ãŒã·ã§ã³ã®é«éå ïŒCAEïŒComputer Aided EngineeringïŒæ§é ã»ç±ã»æ¯åãªã©ã®æ°å€ã·ãã¥ã¬ãŒã·ã§ã³ïŒãCFDïŒComputational Fluid DynamicsïŒæµäœã·ãã¥ã¬ãŒã·ã§ã³ïŒã¯è£œé æ¥ã«ããã補åèšèšã«äžå¯æ¬ ã§ããããã®èšç®ã³ã¹ãã¯éåžžã«é«ãã代çã¢ãã«ã«ããé«éåã«ã¯å€§ããªéèŠããããŸãã Neural Operator ã¯ãã®å
é§çãªåãçµã¿ãšããŠé¢æ°ç©ºééã®ååãåŠç¿ãåŸæ¥ã·ãã¥ã¬ãŒã¿ã«å¯ŸããŠ4ã5æ¡ã®ã¹ããŒãã¢ãããéæããŠãããç©çæ³åãæå€±é¢æ°ã«çµã¿èŸŒã PIIN ãè£œé æ¥ãžã®æŽ»çšãé²ãã§ããŸãããŸããçŽè¿ã§ã¯ GeoPT ããéçãª3D幟äœããŒã¿ã«çæããããã€ããã¯ã¹ãä»äžããåŠç¿ææ³ãææ¡ããç©çãœã«ããŒãäžå䜿ããªãäºååŠç¿ã§å¿
èŠãªã©ãã«ä»ãç©çããŒã¿ã20ã60%åæžãã€ã€ãèªåè»ç©ºåããè¡çªè§£æãŸã§ç£æ¥ã¹ã±ãŒã«ã®è€æ°ãã³ãããŒã¯ã§äžè²«ããæ¹åãå ±åããŠããŸãã é£ååŠç¿ ïŒãã£ãã£ã¯äžç4ã«åœã«æ ç¹ãæã¡ãŸãããåœãããã³ããè·šãã§ããŒã¿ãã¢ãã«ããã®ãŸãŸå
±æã¯ã§ããŸãããé£ååŠç¿ã®æè¡ãçšããããšã§ãããŒã¿ãããããã®å Žæã«çãããŸãŸåŒ·åãªã¢ãã«ãåŠç¿ã§ããŸãã Islam et al., 2023 ã«ãã£ãŠé£ååŠç¿ã®è£œé æ¥ãžã®å¿çšã«é¢ãããµãŒãã€ã§ã¯äºç¥ä¿å
šã»å質管çã»çç£æé©åãªã©5ã€ã®é åã§ç¹ã«é£ååŠç¿ãææã§ããããšãå ±åãããŠããŸãã
ããã«ã¡ã¯ãData Platforméšã«å°ä»»QAãšããŠãžã§ã€ã³ããçŸåšQAããŒã ã®ç«ã¡äžãã«å¥®éããŠããokanã§ãã çããã¯QAããŒã ã®ç«ã¡äžããšèããŠãã©ã®ãããªç¶æ³ãæ³åããŸããïŒ ããã¹ããå
šããªãç¡æ³å°åž¯ã«ç§©åºããããããããã°ã ããã®ãããã¯ããç«ãŠçŽããâŠã ç§ãæåã¯ãããªç«æ¶ãã®ãããªããã·ã§ã³ãæ³åããããããŸã§ã®çµéšã掻ãããŠãããªããªãã¹ããåããïŒããšææ°èŸŒãã§ããŸããã ããããããData PlatformããŒã ã«å
¥ã£ãŠã¿ããšãããã«ã¯å¬ããæ³å®å€ãåŸ
ã£ãŠããã®ã§ãã ä»åã¯ããã§ã«ãšã³ãžãã¢ã®å質æèãé«ãçµç¹ã«ãããŠãç«ã¡äžãçŽåŸã®QAãã©ã®ããã«ç«ã¡åãã䟡å€ãåºãããšããŠããã®ããšãããçŸåšé²è¡åœ¢ã®ãªã¢ã«ãªè©Šè¡é¯èª€ããå±ãããŸãã ãæ¬èšäºã®äž»åŒµïŒãäŒããããããšïŒã åªç§ãªãšã³ãžãã¢ãæãçµç¹ã«ãããŠãQAã¯ãã°ãèŠã€ãããã¹ã¿ãŒãããã»ã¹ãå®ãããèŠå¯ã«ãªã£ãŠãããŸãããå±äººçãªå質æ
ä¿ããè±åŽããããŒã ãæéãã€å®å
šã«ã¹ã±ãŒã«ããããã®ä»çµã¿ãäœãã¢ãŒããã¯ãïŒã®ã«ããã¹ã¿ãŒïŒã«ãªãã¹ãã ããšããããšã§ãã ç®æ¬¡ ããïŒãã§ã«å質ããã£ã¡ãé«ããªãïŒ èŠå¯ã§ã¯ãªãã®ã«ããã¹ã¿ãŒãžãã€ã³ããªæŠé掟QAã®èªç ããŒã ã®èª²é¡ãç¶æ
ç°åžžãšããŠå¯èŠåããïŒTCG颚ãŸãšãïŒ ããŒã¿å質ã¯ããŒã·ã§ã³ãç«ã¡äžãã3ã€ã®KR çæ³ãšçŸå®ãæ³¥èã詊è¡é¯èª€ã®çŸåšå° ãããã« ããïŒãã§ã«å質ããã£ã¡ãé«ããªãïŒ ããŒã ã«å
¥ã£ãŠçã£å
ã«é©ããã®ã¯ããšã³ãžãã¢é£ãæ¥åžžçã«äœæããŠããããã¥ã¡ã³ããšããã®å質ã«å¯Ÿããè§£å床ã®é«ãã§ããã äŸãã°ãã€ã³ãã©ã®ããŒãžã§ã³ã¢ããã®éããšã³ãžãã¢ãã以äžã®ãããªæ§æã®ããã¥ã¡ã³ããåœããåã®ããã«æåºãããŸãã ãæåºãããæ€èšŒããã¥ã¡ã³ãã®æ§æäŸã ç Žå£ç倿ŽïŒBreaking ChangeïŒã®ç¹å® æ¢åèšå®ïŒJMXããã£ãã·ã¥çïŒãšã®äºææ§åæ åã¬ã€ã€ãŒã§ã®ãã¹ãèšç»ïŒUnit / E2E / ããã©ãŒãã³ã¹ïŒ äžãäžåé¡ãèµ·ããå Žåã®ãã©ãŒã«ããã¯ïŒCloud Tasksãçšããåå®è¡ã¹ã¯ãªããçã®æ·»ä»ïŒ ãŸããQAãžäŸé Œãæ¥ãéããåã«ããããäœã£ããããã¹ãããŠãã§ã¯ãããŸããã 倿Žå
容ãšã»ããã§ãæ³å®ãã圱é¿ç¯å²ãšãªã¹ã¯ããªãåé¡ãªããšèšããã®ãã®æè¡çæ ¹æ ãããã«ã¯äžãäžåé¡ãèµ·ããå Žåã®ãã©ãŒã«ããã¯ïŒåŸ©æ§æé ã圱é¿ã®æ¥µå°åïŒãŸã§ã衚圢åŒã§èšèªåãããŠããŸãããããããŒã¹ã«ãstgç°å¢ã§äœããã¹ããã¹ããããšã³ãžãã¢åŽãããã§ã«ææ¡ãããŠããç¶æ
ã ã£ãã®ã§ããããã«ããšã©ãŒçºçæã®ãªãã©ã€ããªã«ããªæé ãã誰ã§ãå®è¡å¯èœãªã¬ãã«ã§ã¹ã¯ãªããåã»æé åãããŠããŸããã ããã¯æ¬åœã«çŽ æŽãããããšã§ããããããããåæã«ç«ã¡äžããä»»ãããç§ã¯åŒ·ãçŠããæããŸããã ãããŸã§ãšã³ãžãã¢èªèº«ã§ãªã¹ã¯è©äŸ¡ãšãã¹ãèšèšãé«ãã¬ãã«ã§å®çµã§ããçµç¹ã§ãç§ãåã«ãã¹ãèšèšã»å®è¡ãã人ã«ãªã£ãŠããå
šãããªã¥ãŒãåºããªããâŠïŒ ãšã³ãžãã¢åã
人ã®é«ãæèã«ãã£ãŠå質ãæ
ä¿ãããŠããç¶æ
ã¯ãèŠæ¹ãå€ããã°å±äººæ§ãé«ãç¶æ
ã§ããããŸããQCïŒå質管çïŒã®èгç¹ããèŠããšãäººã®æ³šæåã«äŸåããããã»ã¹ã¯ãçµç¹ãã¹ã±ãŒã«ããéã«ãã¥ãŒãã³ãšã©ãŒã«ããã°ãã€ããçã¿ãŸãã ç§ã¯èªãã®åœ¹å²ãåŸæ¥ã®ããããQAãããå°éç¥èãæŽ»ãã㊠人ã§ã¯ãªãä»çµã¿ã§è§£æ±ºããã¢ãŒããã¯ã ãžãšåå®çŸ©ããå¿
èŠããããŸããã èŠå¯ã§ã¯ãªãã®ã«ããã¹ã¿ãŒãžãã€ã³ããªæŠé掟QAã®èªç ããã§ç§ã¯ãèªãã®ç«ã¡äœçœ®ã ã€ã³ããªæŠé掟QA ãšåä»ããŸããã ã€ã³ããªQAïŒããŒã±ã¿ãŒèŠç¹ïŒ åžå Žã顧客ã®å£°ãåæããããã®ããŒã¿ã¯èª°ããäœã®æææ±ºå®ã«äœ¿ãã®ãããšããããŒã¿ãªããŒãžã®æäžæµïŒäŸ¡å€ïŒããéç®ããŠã ç¡é§ãªéçºãé²ãèŠç¹ æŠé掟QAïŒæè¡ã»äŒŽèµ°èŠç¹ïŒ ã·ããã¬ãããå®è·µããã³ãŒãã¬ãã«ã®æè¡çãªäŒè©±ãéããŠããŒã å
šäœã§ã®å質åäžãäž»å°ãã å質ã®äŒéåž« QAãããªãã®ãåœããåã ã£ãçµç¹ã«ããããªãæ£è«ãæ¯ãããããŠæŠåšãåãäžããèŠå¯ã«ãªã£ãŠããçŸå Žã¯åŒããŠããŸããŸããç§ãç®æããã®ã¯ãéçºè
ã«æåŒ·ã®ããïŒå質ä¿èšŒïŒãããã ã®ã«ããã¹ã¿ãŒ ãšããŠã®æ¯ãèãã§ããã ããã®èšèšã§çœ ã«ããããªãïŒããšå°å³ïŒDesign DocïŒãæã¡èŸŒãã§ãããã° äžç·ã«çœ ãæ¢ãïŒïŒã¢ãŒããã¯ãã£ã¬ãã¥ãŒã§ã®ãšããžã±ãŒã¹ãéæ©èœèŠä»¶ã®æœåºïŒ ãããªãªãŒã¹ãæãããšèšãããã° èªåãã¹ããšããçµçã匵ãïŒïŒCIãã€ãã©ã€ã³ãžã®E2Eãã¹ãèªåå®è¡ã®çµã¿èŸŒã¿ïŒ ã ãããªé¢ä¿æ§ãç¯ãããã®ç¬¬äžæ©ãšããŠããäºãã®ããšãç¥ãã課é¡ãå
±ã«è§£æ±ºããŠããããšãé¡ãããŸãã¯åããŒã ãšãã£ãã°ããã«è©±ãäŒãéå¬ããŸããã ããŒã ã®èª²é¡ãç¶æ
ç°åžžãšããŠå¯èŠåããïŒTCG颚ãŸãšãïŒ å®ã¯ãã®ãã¢ãªã³ã°ãéããŠãããäžã€èŠããŠããçµç¹ã®èª²é¡ããããŸãããããã¯ããŒã éã®æšªã®ç¹ããã§ãã åããŒã ãé«åºŠãªå°éæ§ãæã£ãŠãããããããéçºã®çµç€ã«ãªã£ãŠä»ããŒã ãšã®èªèãåã¿åã£ãŠããªãããšãçºèŠãããªã©ãã³ãã¥ãã±ãŒã·ã§ã³ã®ããéãã«ããææ»ããçºçããŠãããéåžžã«ãã£ãããªããšæããå Žé¢ããã£ãã®ã§ãã ãäºãã®åŒ·ã¿ãæå€§éã«æŽ»ããã«ã¯ããŸãéšå
šäœãä»ããŒã ã®ç¹æ§ãçŸåšã®èª²é¡ã楜ããç¥ããã£ãããå¿
èŠã ãšèããŸããã ããã§ããã¢ãªã³ã°ããå
容ããã ã®è°äºé²ïŒããã¹ãïŒã§å
±æããã®ã§ã¯ãªããèªèº«ã®æç¬ãã¢ãã«ã«ãQA TCGïŒãã¬ãŒãã£ã³ã°ã«ãŒãã²ãŒã ïŒé¢šã«ãŸãšããŠåããŒã ã«å±éããã®ã§ãã åãªããéã³ã§ã¯ãªããããŒã ã®ç¹æ§ã以äžã®5ã€ã®ãã©ã¡ãŒã¿ã«åé¡ã»èšèªåãããã¬ãŒã ã¯ãŒã¯ãšããŠæŽ»çšããŠããŸããããŒã ã®åŒ·ã¿ãšèª²é¡ãåãåããããšã§ãQAãã©ãã«ä»å
¥ãã¹ãããæç¢ºã«ãªããŸã 屿§ / ã¯ã©ã¹ïŒ ããŒã ã®åœ¹å²ïŒäŸïŒPlatform, AI Researcherãªã©ïŒ HP / MPïŒ ããŒã ã®ãªãœãŒã¹ç¶æ³ããæè¡çãªå°ãå
·å ç¹æ®èœå (Skill)ïŒ ãã®ããŒã ãªãã§ã¯ã®åŒ·ã¿ãç¹åŸŽ ç¶æ
ç°åžž (Debuff)ïŒ ä»æ±ããŠãã課é¡ãæ©ã¿ïŒããã«ããã¯ïŒ å¬åã³ã¹ã (QA Request)ïŒ QAã«ããŠã»ããããšïŒïŒQAãæ¯æãå·¥æ°ïŒ ãTCGåäŸã ãã®éã³å¿ãåãå
¥ããåãçµã¿ã«ãããåãªããã¹ãå®è¡è
ã§ã¯ãªãã ããŒã ããšã®ç¹æ§ãçè§£ããŠäžç·ã«ç¶æ
ç°åžžãæ²»ããŠããã仲é ãšããŠèªèããŠãããè¯ãã¹ã¿ãŒãããã·ã¥ãåããã¯ãâŠïŒãã£ãšã ããŒã¿å質ã¯ããŒã·ã§ã³ãç«ã¡äžãã3ã€ã®KR ããŒã ããšã®èª²é¡ãèŠããŠããä»ãããããç§ã®æã£ãŠãããœãããŠã§ã¢å質ã®å°éç¥èïŒJSTQBãJCSQEãITæ€èšŒæè¡è
ãªã©ïŒã解決çãšããŠèœãšã蟌ããã§ãŒãºã«å
¥ã£ãŠããŸãã ç§ã¯ããŒã¿å質ãRPGã® ããŒã·ã§ã³ ã«äŸããŠããŒã ã«æµžéãããããšããŠããŸãããã¹æŠã®æäžã«é£²ãã ããŒã·ã§ã³ãæéåãã ã£ãããæ¯ã ã£ããããã°å
šæ»
ããŠããŸããŸãã ãããŠããã®åè³ªãæ¹åããããã«ã¯ããŸãã¯çŸç¶ãæ£ããæž¬å®ã»å®çŸ©ãããããããŸãããå±äººåãæé€ãã誰ããå®å¿ããŠéçºã§ããä»çµã¿ãäœããããQAããŒã ã®ããŒãããããšããŠä»¥äžã®3ã€ã®KRïŒKey ResultïŒãçå®ããå®è¡ã«ç§»ãå§ããŸããã KR1: ããŒã¿å質ã®å
±éèšèªãå®çŸ©ããèšèšããã»ã¹ãžå°å
¥ãã ãå質ãšã¯äœãããã©ãèšé²ãããããšããã«ãŒã«äœãã§ãããªããšãªãã®åã§è¡ãããŠãããã¹ãèšèšã«å¯Ÿããåå€åå²ãçŽäº€è¡šãªã©ã®å°éæ§ã泚å
¥ãã€ã€ã ã¹ããŒã倿޿ã®åœ±é¿ç¯å²ç¹å®ãããŒã¿é®®åºŠïŒFreshnessïŒã®èš±å®¹å€ãªã©ãçã蟌ãã TestDocã®ãã³ãã¬ãŒãå ãé²ããŠããŸãããŸãã起祚ã«ãŒã«ããã°ç®¡çã®ãã©ãŒãããçµ±äžãè¡ãããšã§ãã¹ããŒã¯ãã«ããŒéã®èªèã®ãºã¬ããªãããå±äººåã®è§£æ¶ãç®æããŠããŸãã  KR2: éšå
šäœãç°åžžã«ããæ°ã¥ããåºæºã確ç«ãã ãæ¬åœã«ããã§åºããŠå€§äžå€«ãïŒããšããçå¿æé¬Œãææãããããå®éçãªåºæºãäœããŸããå
·äœçã«ã¯ã ããŒã¿ã®ãµã€ã¬ã³ããªäžæŽåãæ€ç¥ããéã®ãªãªãŒã¹å€å®Gatekeeperåºæº ãã Bugfix/Hotfixã®åªå
床ã倿ããããªã¢ãŒãžã©ã€ã³ã®çå® ã§ããããããã¯SLO/SLAãªã©ã®çšŒåæ°Žæºçå®ããç°åžžæ€ç¥åŸã®ã€ã³ã·ãã³ã察å¿ã®æŽåãŸã§èžã¿èŸŒã¿ããã§ãïŒèªç§°ã€ã³ã·ãã³ã倧è£ãšããŠè
ã®èŠãæã§ãïŒïŒã KR3: 倿޿ã®äºæ
ãé²ãéçºã¬ãŒãã¬ãŒã«ã®éçšãéå§ãã äžå
·åã®æµåºãç©ççã»ã·ã¹ãã çã«é²ãããã éåžžéçºã»ãªãªãŒã¹æ¿èªã»Bugfixã»Hotfixããããã®ã¯ãŒã¯ãããŒãææå ããå®å
šãªæé ãæŽåããŠããŸãããŸãã倿Žã«ãããã°ã¬ãé²ãããã®ãªã°ã¬ãã·ã§ã³ãã¹ãé
ç®ã®äœæããã¹ãããŒã¿ã®æºåãªã©ãå®éã«æãåããæ³¥èãããã»ã¹ã«ãçæãã¯ãããŠããŸãã çæ³ãšçŸå®ãæ³¥èã詊è¡é¯èª€ã®çŸåšå° ãšãããã£ãœãããšãæžããŠããŸãããçŸå®ã¯æ³¥èã詊è¡é¯èª€ã®é£ç¶ã§ããData Platformç¹æã®æè¡ã³ã³ããã¹ãïŒETLã忣åŠçãBigQueryã®è€éãªã¯ãšãªãªã©ïŒã®ãã£ããã¢ããã«å¿
æ»ã§ãæåã¯ãšã³ãžãã¢ã®æžããé«åºŠãªåœ±é¿ç¯å²åæã®ã¬ãã¥ãŒã«å
šãæ¯ãç«ããªãããšããããŸããã ãŸããä»çµã¿åãæ¥ãããŸããã¬ãã¬ãã®æ¿èªãããŒãææ¡ããŠããŸããããã ãšãªãªãŒã¹ã®éåºŠãæ»ã¬ããšãšã³ãžãã¢ãããã£ãŒãããã¯ãããã£ãããšããããŸãïŒççïŒã éçºã®ã¢ãžãªãã£ïŒé床ïŒãèœãšããŠããŸããªããã ãããã®å€æŽã¯ãªã¹ã¯ãäœãããQAã¬ãã¥ãŒãã¹ãããããããšãã£ããªã¹ã¯ããŒã¹ã§ã®ãšã³ãžãã¢ãšã®è²¬ä»»åçç¹ãæ¥ã
æ¢ãåã£ãŠããŸãã ãããã« å質æèããã§ã«é«ãçµç¹ã«ããããQAããŒã ç«ã¡äžãã®ããã·ã§ã³ã ããã¯ãŒããããã¹ãã®æåãäœãããšã§ã¯ãªãã ãã§ã«ååšããåªããæåãã¹ã±ãŒã«ãããããã®ãæºãããªãQAããã»ã¹ã®ç€ïŒããããïŒãç¯ãããš ã§ãã ããçããã®çµç¹ãããšã³ãžãã¢ã®å質æèã¯é«ãããã©ãå±äººåããªãªãŒã¹ã®éãã«æ©ãã§ãããã®ã§ããã°ããŸãã¯QAãèŠå¯ã§ã¯ãªãã®ã«ããã¹ã¿ãŒãšããŠçŸå Žã«å
¥ã蟌ã¿ãããŒã ã®ç¶æ
ç°åžžãå¯èŠåããããšããå§ããŠã¿ãŠãã ããããã£ãšããšã³ãžãã¢ãã¡ã¯æé«ã®ååè
ã«ãªã£ãŠãããã¯ãã§ãã ãŸã ãŸã ææ¢ãã®ç¶æ
ã§ããããããããã€ã³ããªæŠé掟QAãšããŠãData PlatforméšãšããæåŒ·ã®ããŒãã£ã®äŸ¡å€æå€§åã«è²¢ç®ããŠãããããšæã£ãŠããŸãã â»ãã§ã«å質ãé«ãçµç¹ãä»çµã¿ã§ããã«ããŒã¹ãããããšããææŠã«ã¯ã¯ã¯ã¯ããæ¹ããã²äžåºŠãã£ãã°ããã«ã話ãããŸãããïŒ
ããã«ã¡ã¯ããã£ãã£ã§ Quote ãšããã¢ããªã±ãŒã·ã§ã³ãéçºããŠãã plant ããšç³ç° ( @plant_ja ) ã§ãã Claude Code ã¯ãããŸã§ããŒã«ã§ãã£ãŠãäœ¿ãæ¹ã«ãã£ãŠå€§ããããã©ãŒãã³ã¹ãå·Šå³ãããããã«æããŠããŸãã ä»åã¯ã³ã³ããã¹ããšãã芳ç¹ãã Claude Code ã®åäœåçãçŽè§£ããªãããæã
ãæåŸ
ããã³ãŒããå®å®ããŠåºåããŠãããããã®ã³ã³ããã¹ããããžã¡ã³ãã®çè«ãšå®è·µã«ã€ããŠæãã銳ããŠã¿ãããšæããŸãã æ³å®èªè
Claude Code ãæ¥ã
䜿ã£ãŠããããAI ãããŸãè³¢ããªãããã«æãã人 Claude Code ã䜿ãå§ããã°ããã®äºº æ¥ã
ã®éçºã§ Plan Mode ãæŽ»çšããŠãããããªãã§ Plan Mode ã ãšããŸããããã ãããã£ãŠæã£ãŠãã人 ããŒã ã¡ã³ããŒã«ã³ã³ããã¹ããããžã¡ã³ãã®éèŠæ§ã説æããã人 æ³å®èªè
ãã®èšäºã®ãŽãŒã«ãšæå³ çè« ã³ã³ããã¹ãã£ãŠäœïŒ Claude Code ã§ã®ã³ãŒãã£ã³ã°ã«ãããã³ã³ããã¹ãã®éèŠæ§ åè å®è·µ TIPS äžèЧ Plan Mode ã䜿ãã Plan ãã¡ã€ã«ã«é²æãèšèŒããã ã¹ããŒã¿ã¹ã©ã€ã³ã«çŸåšã®ã³ã³ããã¹ãå©çšéã衚瀺ããã çµæãæ°ã«å
¥ããªãã£ãããrewind ã§å·»ãæ»ããŠå床æç€ºããã /context ã§ããŒã¯ã³ãäœã«äœ¿ã£ãŠããããèŠãŠã¿ãã CLAUDE.md ãã¹ãªã ã«ããã ãã¡ã€ã«ã®æå®æ¹æ³ãç¥ãã /insights ã³ãã³ãã§ Claude Code ã«æ¹åç¹ãæããŠãããã çµããã« ãªã³ã¯é ãã®èšäºã®ãŽãŒã«ãšæå³ ãŽãŒã«ã¯ãèªãã§ãããŠããããªãã® Claude Code ã®äœ¿ãæ¹ã«å°ãã§ãå€å®¹ãèµ·ããããšã§ããåºæ¥ãã ãèšå®ãäžèŠã§ãã·ã¥ããšå®åã§äœ¿ãããšããããšãéèŠèŠããæ§æã«ãªã£ãŠããŸãã ãã®èšäºã¯æ¬ã®ããã«é·ãããã§ã¯ãªãã§ãããçè«âå®è·µ ãšããç« ç«ãŠã«ãªã£ãŠããŸãã Claude Code ãªãããAIãšãŒãžã§ã³ãã®é²åã¯åãŸããã¹ããŒããªã®ã§ãæ°æ©èœãåºãŠããæã«èªèº«ã§è¯ãæªãã䜿ãæãã¡ãããšè©äŸ¡ã§ããããã«ãªãããã«ã¯ãçè«ãæŒãããŠããããšãéèŠã ãšèããŠããŸãã çè«ããŒãã¯ã¡ãã£ãšéå±ã«æãããããããŸããããClaude Code ã®æ°æã¡ãçè§£ããããŒããšããŠèªãã§ãããããšå¬ããã§ãã â¶ è£è¶³: ãªã仿Žã³ã³ããã¹ããããžã¡ã³ãã®èšäº? 2ã€ã®çç±ããããŸãã 1ã€ç®ã¯ãã³ã³ããã¹ããããžã¡ã³ããä»ã®ãããããã©ã¯ãã£ã¹ã®åå°ã«ãªã£ãŠããããã§ããSkills ã SubagentsãMCPãRulesãHooks ãªã©ãClaude Code ãåãå·»ãç°å¢ã«ã¯æ§ã
ãªããŒã«ããããããããã®äœ¿ãæ¹ã Tips ã«ã€ããŠã®èšäºãå€ãåºãŠããŸããããããããããããŸãã¯ãŒã¯ãããã©ããã¯ãã¢ãã«ã®æ§èœãåŒãåºããŠãããã©ããã«ãäžå®äŸåããŠããŸããããããããŒã«ã¯ LLM ã®ç¹æ§äžã確ççãªæåã«ãªãããšãå€ãããã®ç¢ºçãããã«ããŠé«ãç¶æãããã Claude Code ã«å®å®ããæåããããããã®éèŠãªèŠçŽ ã«ãªããŸãã 2ã€ç®ã¯ãã³ã³ããã¹ããããžã¡ã³ãã«ã€ããŠã®èšäºãæè¿ããŸãèŠãããªããªã£ãããã§ããå幎ã»ã©åã¯ã³ã³ããã¹ããã©ããããžã¡ã³ããããã«ã€ããŠã®èšäºãã¡ããã¡ããåºãŠããŸããããæè¿ã¯ãããçè§£ããŠããããšãåæãšããèšäºãå€ããªã£ãŠããããã«æããŸããããæè¿ Claude Code ã䜿ãå§ãã人ãã¡ã«ãšã£ãŠã¯ããã®åæéšåã«è§Šããæ©äŒãå°ãªãã®ã§ã¯ãªãã§ããããããã®ã®ã£ãããåãã圹å²ã«ãªãã°ãšæãããã®èšäºãæžããŸããã çè« ã³ã³ããã¹ãã£ãŠäœïŒ ãããã³ã³ããã¹ããšã³ãžãã¢ãªã³ã°ãã£ãŠèããŸãããããŸãã¯ã³ã³ããã¹ãã«ã€ããŠã®çè§£ãæ·±ããŠãããŸãããã Claude Code ã¯äžèšã®ãããªæ
å ±ãå
šãŠã³ã³ããã¹ããšããŠä¿æããŠããŸãã èŠçŽ èª¬æ äŒè©±å±¥æŽ ãŠãŒã¶ãŒãšã®ããåããã¹ãŠ å©çšã§ããããŒã«çŸ€ å©çšã§ããã¹ãã«ããµããšãŒãžã§ã³ããMCP ã®æŠèŠ ããŒã«åŒã³åºãçµæ ãã¡ã€ã«èªã¿èŸŒã¿ã»ã³ãã³ãå®è¡ã®åºå ã·ã¹ãã ããã³ãã Claude Code ã®åœ¹å²ãæèšããŠããããã³ãã ããããã〠LLM ã«ã¯ãã³ã³ããã¹ããŠã£ã³ããŠããšåŒã°ããåŠçã§ããããŒã¯ã³æ°ã®äžéããããŸãã ãã®èšäºãæžããŠããæ®µéã§ã®ææ°ã¢ãã«ã§ãã Sonnet 4.6, Opus 4.6 ã®ã³ã³ããã¹ããŠã£ã³ããŠã¯ 200,000 ããŒã¯ã³ã§ããïŒå°ãβçãšã㊠1,000,000 ããŒã¯ã³ããŒãžã§ã³ãæäŸãããŠããŸãïŒ LLM ã®æ ¹å¹¹ãšã㊠Self-Attention ãšããæ©æ§ããããŸããããã¯ãå
¥åãšããŠåãåã£ãããŒã¯ã³çŸ€ïŒ= ã³ã³ããã¹ãïŒã®äžã®ããŒã¯ã³å士ã®é¢é£æ§ãèšç®ãããã®ã§ããã®ä»çµã¿ããããããã Claude Code (ãªãã LLM) ã¯ãå€å°ææ§ãªæç€ºã§ãæèãèžãŸããŠã¬ã¹ãã³ã¹ãè¿ããŠãããŠããŸãã ããã§éèŠãªã®ã¯ãLLM ã«ã¯ã¢ãã³ãªããã°ã©ãã³ã°èšèªã®ãããªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãååšããªãããšã§ããã€ãŸãã話é¡ãåãæ¿ãã£ãæã«ãäžèŠã«ãªã£ãããšå€æããŠã³ã³ããã¹ãã空ããããšãã§ããªãã®ã§ãã åè¿°ã® Self-Attention ã®ä»çµã¿ã¯ãããŒã¯ã³éã n ãšããæã«èšç®éã O(n^2) ã§å¢å ãããããã³ã³ããã¹ãã倧ãããªããšã¬ã¹ãã³ã¹ãé
ããªããŸãããããããã以äžã«éèŠãªã®ã¯å質é¢ãžã®åœ±é¿ã§ããããŒã¯ã³ãå¢ããã»ã©åããŒã¯ã³ãžã®æ³šæïŒattentionïŒã忣ããæ¬åœã«éèŠãªæ
å ±ãæ£ããåç
§ãã粟床ãäžãã£ãŠãããŸãã ãã®ãããªæ§è³ªãããã³ã³ããã¹ããŠã£ã³ããŠå
ã®ããŒã¯ã³éãå¢ããã«ã€ããã¢ãã«ã®ããã©ãŒãã³ã¹ã¯å£åããŠããåŸåããããŸãããŸããæšè«ãå¿
èŠãªã¿ã¹ã¯ã«ã€ããŠã¯ããã®åŸåãããé¡èã«ãªããšãããŠããŸããããã«ãé¢é£ãããã ãã©ééã£ãŠããæ
å ±ã«åœ±é¿ãåãããããªããšããå ±åããããŸãã äžèšã¯ Context Rot ãšããã¿ã€ãã«ãä»ããããã¬ããŒã (2025/07) ã®çµæã«åºã¥ãããã®ã§ããOpus 4 ã Sonnet 4 ã§ã®å®éšçµæã«ãªã£ãŠããŸãããOpus 4.6 ã Sonnet 4.6 ã Transformer ã¢ãŒããã¯ãã£ãªã®ã§ãå€å°å£åãã«ãããšã¯ããåãæ§è³ªãæã€ãšèããããŸãã LLM ã¯æ¯ååãçµæãè¿ãããã§ã¯ãªãã®ã§ãããã©ãŒãã³ã¹ãå£åããããšããã®ã¯ãã人éãäžããã¿ã¹ã¯ãæåãã確çãäžãã£ãŠããããšè§£éããããšãã§ããŸããæåããæããããã©ãæå確çãšããŠã¯äžãã£ãŠãããšããããšã§ãã å°ãäžè¬çãªçšèªã§ã¯ãªãã®ã§ãããäžéšã®çéã§ç®å®ãšããŠã³ã³ããã¹ããŠã£ã³ããŠã® ~40% ãŸã§ã Smart zoneããã以éã Dumb zone ãšåŒãã§ããŠããããããããŠåã¯å¥œãã§ãã以éã®èª¬æã§ã䜿ããŸãã â¶ è£è¶³: Smart zone / Dumb zone ã®åºå
žã«ã€ã㊠Smart zone / Dumb zone ãšãã衚çŸã¯ã Ralph Wiggum Loop ã®ç£ã¿ã®èŠªã§ãã Geoffrey Huntley ã ai that works ãšãããããªããããã£ã¹ã ã«åºæŒããéã«ãDex ãšããéçºè
ã話ããŠãããã®ã§ãã AIãšãŒãžã§ã³ãã䜿ã£ãéçºã¯ç¢ºçãšåžžã«é£ãåããã§ãã AIãšãŒãžã§ã³ãã®ç¯ããéã¡ããAI ã®æ§èœããã£ãšè¯ããªãã°è§£æ±ºããããšèããã®ã§ã¯ãªãããããããç¶æ³äžã§ãéã¡ãç¯ãã®ãããšèªåã®æèŠå€ã«ãã£ãŒãããã¯ããäžã§ãã©ã®ãããªã¢ãããŒãã§ãã®ç¢ºçå€ãå€ããŠãããããšããããšãèããããšã倧äºã ãšæã£ãŠããŸãã Claude Code ã§ã®ã³ãŒãã£ã³ã°ã«ãããã³ã³ããã¹ãã®éèŠæ§ ãã®æ§è³ªãåºã« Claude Code ã§ã®ã³ãŒãã£ã³ã°ãèããŠã¿ãŸãããã Claude Code ã® âã³ãŒãã£ã³ã°èœåâ ã ããã¥ã¡ã³ãã調æ»çµæããåŸããããæ±ããããŠããã³ãŒãã®æžãæ¹ãã«æ²¿ã£ãŠã³ãŒããæžãèœå ãšå®çŸ©ã¥ãããšããŠã次ã®ããšãèšãããã§ãã äžåã®ã»ãã·ã§ã³ãé·ããªãã»ã©ãã³ãŒãã£ã³ã°èœåãèœã¡ãŠããå¯èœæ§ããã ãã€ãäžåã®ã»ãã·ã§ã³ã®äžã«è€æ°çš®å¥ã®æç€ºããããšããããããé¡èã«ãªã åç
§ããããã¥ã¡ã³ããå¢ãããŠããå¿
ãããã³ãŒãã£ã³ã°èœåãäžãããšã¯éããªã ããããã¿ã¹ã¯ã«é¢ä¿ãªãããã¥ã¡ã³ãã®èªã¿èŸŒã¿ã¯ãã³ã³ããã¹ããŠã£ã³ããŠãå§è¿«ããã®ã§ã³ãŒãã£ã³ã°èœåãäžããããšã«ç¹ãã ãŸããã³ãŒãã£ã³ã°èœåã ãã§ãªããæ±ºããããã«ãŒã«ã«æ²¿ã£ãŠéçºãé²ããèœåãåæ§ã«å£åããŠããåŸåããããŸãã ãã®ãããªå£å㯠Opus ã®ãããªæšè«èœåã®é«ãã¢ãã«ã ãšçžå¯Ÿçã«èµ·ãã«ããã®ã§ããSonnet ã¯å€ãªã³ãŒããæžããã©ãOpus ã¯ã¡ãããšããã³ãŒããæžãïŒããšããæèŠã«ã€ãªããã®ã ãšæããŸãã ã§ã¯ããã®æ§è³ªãåºã«çæ³ç㪠Claude Code ã®äœ¿ãæ¹ãèããŠã¿ããšã©ããªãã§ããããïŒ 1ã€ã®ã»ãã·ã§ã³ã§ã¯1ã€ã®ã¿ã¹ã¯ã«éäžãããããšã§ãã¢ãã«ã®æ§èœãçºæ®ãããã ~40% (Smart zone) ã®ã³ã³ããã¹ãã§ã¿ã¹ã¯ãçµãããã ãããã¯1ã€ã®ã¿ã¹ã¯ãå°ãããã ã¿ã¹ã¯éè¡ã«æå°éå¿
èŠãªæ
å ± âã ãâ ãäžãã æç€ºãæç¢ºã«ããããšã§ãã§ããã ãæšè«ããªãã§äœæ¥ã§ããããã«ããŠããã©ãŒãã³ã¹ã®å£åãåãã«ãããã ãPlan Mode ã䜿ãããšããã®ã1ã€ã®ãã©ã¯ãã£ã¹ã«ãªã£ãŠããã®ã¯ãç¹ã«æèããã«äœ¿ã£ãŠãäžèšã®ãã€ã³ããæŒããããããªãããã ãšèããŠããŸãã Plan Mode ç¡ãã§ã®éçºããã»ã¹ã ãšãè²ã
ãªèª¿æ»ãè¡ã£ãäžã§å®è£
ã«å
¥ã£ãããéäžã§ Claude ã«è»éä¿®æ£ããããããããšã«ãªãã®ã§ãSmart zone å
ã§å®è£
ãå®äºãããããšãé£ãããªããŸããïŒããŒã¯ã³éã¯ãã£ãããšããã€ã¡ãŒãžã§ãïŒ ããããPlan Mode ã䜿ããšãå®è£
ãã©ã³ãç«ãŠãã»ãã·ã§ã³ãšå®è£
ããã»ãã·ã§ã³ãåããããšãã§ããŸããæ°ãã綺éºãªã³ã³ããã¹ããŠã£ã³ããŠã§ãå
·äœçãªå®è£
èšç»ãåºã«å®è£
ããããšã§ã¢ãã«ã®äžçªæ§èœã®è¯ãéšåãå®è£
ãã§ãŒãºã«å
ãŠãããšãã§ããããã«ãªããŸãã ç¬ç«ããã³ã³ããã¹ããŠã£ã³ããŠãæã€ãµããšãŒãžã§ã³ããæŽ»çšããããšããã¿ã¹ã¯ã®çްååãªãã Smart zone ã®æŽ»çšãšèããããšãã§ããŸããã äŸãã°ãã¡ãã£ãšåã®ããŒãžã§ã³ãããClaude Code ã調æ»ãè¡ãæã«èªåçã«äžèšã®ããã« Explore ãµããšãŒãžã§ã³ãã調æ»ãè¡ãããã«ãªããŸããã ⺠Explore(XXX ã®èª¿æ») â¿ Done (24 tool uses · 48.2k tokens · 1m 29s) ããã¯ãã³ãŒãããŒã¹ã®èª¿æ»ãšããããŒã¯ã³ãæ¶è²»ããã¿ã¹ã¯ãå¥ã®ã³ã³ããã¹ããŠã£ã³ããŠã«æŒã蟌ãããšã«ãã£ãŠãã調æ»ã®çµæãã ããã¡ã€ã³ã®ã»ãã·ã§ã³ã§åŸãããšãã§ããŠãæ§èœå£åãåé¿ãã€ã€åŸç¶ã®ã¿ã¹ã¯ã宿œã§ãããã ãªããšçè§£ããããšãã§ããããã§ãã åè å°ãåã®èšäºã§ãããããå°ãæãäžããŠç¥ããã人ã¯äžèšã®èšäºãããããã§ãã Effective context engineering for AI agents \ Anthropic å®è·µ ããŠããã£ãšå®è·µããŒãã§ãããããã㯠Claude Code ãªã©ã®ããŒã«ã®å€åã«ãã£ãŠå€ãããããéšåã§ã¯ãããŸããã2026/03 æç¹ã§ã®ãã©ã¯ãã£ã¹ãšããŠèšèŒããŠãããŸãã ããã§ã¯ãããã«å®åã§äœ¿ãããããšãåªå
ããããã«ãèšå®ãªã©ãäžèŠãª TIPS ã玹ä»ããŸãã䜿ãæ
£ããŠãã人ã«ãšã£ãŠã¯åœããåã®ããšããæžããŠããªããããããªãã§ããããäºæ¿ãã ããã TIPS äžèЧ Plan Mode ã䜿ãã Plan ãã¡ã€ã«ã«é²æãèšèŒããã ã¹ããŒã¿ã¹ã©ã€ã³ã«çŸåšã®ã³ã³ããã¹ãå©çšéã衚瀺ããã çµæãæ°ã«å
¥ããªãã£ãããrewind ã§å·»ãæ»ããŠå床æç€ºããã /context ã§äœã«ããŒã¯ã³ã䜿ã£ãŠããããèŠãŠã¿ãã CLAUDE.md ãã¹ãªã ã«ããã ãã¡ã€ã«ã®æå®æ¹æ³ãç¥ãã /insights ã³ãã³ãã§ Claude Code ã«æ¹åç¹ãæããŠãããã Plan Mode ã䜿ãã Claude Code ãç«ã¡äžããŠã Shift+Tab ã2åæŒããš Plan Mode ã«ãªããŸãã /plan ã§ãåããŸããããšã¯é©åœã«æç€ºããããšãClaude Code ãèªåŸçã«åœ±é¿ç¯å²ã調æ»ãããããŠãŒã¶ãŒã«è³ªåãããããäžã§å®è£
èšç»ãäœæããŠãããŸãã ãŸãã clear context (N% used) and auto-accept edits ãå®è¡ãããšããŸã£ãããªç¶ºéºãªã³ã³ããã¹ãã§ âå¿
èŠæå°éã®â å®è£
èšç»ã«åºã¥ããŠäœæ¥ãé²ããŠãããŸããã³ã³ããã¹ãã®éèŠæ§ãçè§£ããŠãããšããããã©ãã»ã©æå¹ãã宿ã§ããããšæããŸãããŸããã³ã³ããã¹ããã¯ãªã¢ããªã 2. ã® auto-accept edits ããæ§èœå£åããã¢ãã«ã«å®è£
ãä»»ããããšã«ãªããããªãããšã«ãæ°ã¥ããã®ã§ã¯ãªãã§ããããã Plan ãã¡ã€ã«ã®åºåå
ã¯èšå®ã§å€ãããããããã®ã§ã.gitignore ã®èšå®ã«è¿œå ããŠã¬ããžããªå
ã«çœ®ããŠãããŠã¢ã¯ã»ã¹ããããããã®ãããããã§ãã Plan ãã¡ã€ã«ã«é²æãèšèŒããã Plan Mode ã䜿ã£ãŠãå®è£
éãæžãããã§ã¯ãªãã®ã§ããŸã£ãããªç¶ºéºãªã³ã³ããã¹ãã§å®è£
ãéå§ãããšããŠãã³ã³ããã¹ããŠã£ã³ããŠã®30~40%ãè¶
ããŠããŸãããšããããšæããŸãããããªæã¯ãPlan Mode ã§çæãã Plan ãã¡ã€ã«ã«é²æãèšèŒããããšã§ãã³ã³ããã¹ããã¯ãªã¢ãã€ã€å¥ã³ã³ããã¹ãããäœæ¥ãåŒãç¶ããããã«ããŠã¿ãŸãããã äžèšã®ããã«æç€ºããã°ãPlan ãã¡ã€ã«ãæŽæ°ããŠãããŸãã ⯠å®è£
ã®ããªãè¯ãã¿ã€ãã³ã°ã§ Plan ãã¡ã€ã«ã®å®è£
é²æãæŽæ°ããŠãã ãããPlan ãã¡ã€ã«ã¯ `Bash(ls -t -1 ~/.claude/plans/*.md | head -n 1)` ã§ååŸã§ããŸãã ïŒClaude Code 2.1.50 ã ãšãPlan Mode ã§å®è£
ãéå§ããŠã該åœã® Plan ãã¡ã€ã«ã®ååšã¯èªç¥ããŠããªããããªæåã ã£ããããããã§ã¯ path ãæç€ºçã«æå®ããŠããŸãïŒ Plan ãã¡ã€ã«ã®æŽæ°ãå®äºããããå¥ã® Claude Code ã»ãã·ã§ã³ãç«ã¡äžããŠäžèšã®ããã«æç€ºãããš Plan ãã¡ã€ã«ãèªã¿èŸŒãã§ç¶ãããäœæ¥ããŠãããŸãã > Plan ãã¡ã€ã«ãèªã¿èŸŒãã§ãäœæ¥èšç»ãšäœæ¥é²æãææ¡ããŠãã ããã`Bash(ls -t -1 ~/.claude/plans/*.md | head -n 1)` ãå®è¡ããŠãäžçªçŽè¿ã® Plan ãã¡ã€ã«ã察象ãšããããšã ãããã£ãæç€ºãæ¯åã³ããããã®ãé¢åã«ãªã£ãŠããããSkills ãšãã«ã¡ããã£ãšç»é²ããŠãããš /resume-plan ãšãä»»æã®ã³ãã³ããšããŠåŒã³åºããããã«ãªããŸããããã Claude Code ã« äžèšã®æç€ºãæ¯åæã€ã®ãããã©ãããã®ã§ãSkills ã«ããŠãïŒä»¥äžãã³ãã³ãïŒ ãšæç€ºããã° ok ã§ãã â¶ è£è¶³: ã³ã³ããã¹ããŠã£ã³ããŠãåãŸã£ãŠãããèªåçã«èµ°ã auto-compact ã ãšãã¡ãªã®ïŒ compact ã¯ã»ãã·ã§ã³ã®å
容ãèŠçŽããŠãæ°ããã»ãã·ã§ã³ã«åŒãç¶ãæ©èœã§ãã è©äŸ¡ã¯äººã«ãã£ãŠéããšæãã®ã§ãããèªåã¯äžèšã®çç±ãã compact, auto-compact ãããŸã奜ãã§ããŸããã auto-compact ã«ã€ããŠã¯ããããã 95% ã«ãªã£ãŠããå®è¡ãããã®ã§å®è¡ã¿ã€ãã³ã°ãšããŠé
ã (ãã¡ããã¡ãæ§èœå£åããç¶æ
ã® LLM ã«äœæ¥é²æãèŠçŽãããã®ãæããªãã§ããïŒ) compact ãšããã³ã³ã»ããã¯ããããã»ãã·ã§ã³ã®èšæ¶ïŒ= ã³ã³ããã¹ãïŒã«åŒãç¶ãä»çµã¿ãªã®ã§ãè€æ°ã®ã»ãã·ã§ã³ããã® write ãã§ããªãã£ããããŒã«ãšã®çžæ§ãæªã ã»ãã·ã§ã³ã§ã¯ãªããã¡ã€ã«ã«æ°žç¶åããŠãè€æ°ã®ã»ãã·ã§ã³ããã¢ã¯ã»ã¹ããããããã äœæ¥ã®èšç»ã»é²æã¯ãšãŒãžã§ã³ããæã
ã«ãšã£ãŠéèŠãªè³ç£ã§ãããããæ®çºãããã âã³ã³ããã¹ãâ ãšããæŠå¿µãšããŠç®¡çããã®ã¯å¿äœç¡ããšæããŠãããããå€éšãã¡ã€ã«ã«äœãããã®åœ¢ãšããŠæžãåºãã®ã 2026-03 æç¹ã§ã®èªåã®å¥œã¿ã§ããcompact å
ãšããŠå€éšãã¡ã€ã«ãæå®ã§ããããã«ãªãã°åé¡ãªãã®ãããããŸãããã å°ããã®èšäºãšã¯å°ãè¶£æšãéããã詳现ã¯çããŸãããèªåã¯æ¥ã
ã®éçºã§ã¯ Plan Mode ã䜿ããã«èªåã§å®çŸ©ãããã©ãŒãããã§èšç»ã»é²æã管çããŠããŸãã ã¹ããŒã¿ã¹ã©ã€ã³ã«çŸåšã®ã³ã³ããã¹ãå©çšéã衚瀺ããã ~/.claude/settings.json ã«äžèšã远å ããããšã§ãClaude Code ãç«ã¡äžããŠããæäžã«åžžã«ã³ã³ããã¹ãå©çšéãèŠããããã«ãªããŸãã(jq ãã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸã) "statusLine": { "type": "command", "command": "jq -r '(.model.display_name // \"Claude\") + \" | Context: \" + (.context_window.used_percentage // 0 | tostring) + \"% used\"'" } ããã§ãã±ã£ãšèŠã§ã³ã³ããã¹ããŠã£ã³ããŠã®äœå²ã䜿ã£ãŠããããåããããã«ãªããŸãã /statusline ã³ãã³ããããè²ã
èšå®ãè¡ããã®ã§ãèå³ããã人ã¯è©ŠããŠã¿ãŠãã ããã çµæãæ°ã«å
¥ããªãã£ãããrewind ã§å·»ãæ»ããŠå床æç€ºããã æç€ºãããæã«ãæãéãã« Claude Code ãåããŠãããªãããšããããšæããŸãã ãããªæã¯ rewind ãšããæ©èœã§ããåããç¡ãã£ãããšã«ããŠãå床æç€ºãåºããŸããããEsc ã2åæŒäž (ããã㯠/rewind ) ãããšãéå»ã®ããåãã衚瀺ãããéžæãããšå·»ãæ»ãã®éžæè¢ã衚瀺ãããŸãã Restore conversation ãå®è¡ãããšãã³ã³ããã¹ããŠã£ã³ããŠå
ã®ããŒã¯ã³ãå·»ãæ»ãããŸããä¿®æ£æç€ºãç©ã¿éãããšãã¢ãã«ã®æ§èœãèœã¡ãŠããŸãã®ã§ãã¯ãªãŒã³ãªç¶æ
ããããçŽããã®ã¯æ³å以äžã«äŸ¿å©ã§ãã Restore code ãå®è¡ãããšãã³ãŒãã®ä¿®æ£ãå·»ãæ»ããŸãã ãŸãã Summarize from here ããããšãèŠçŽããæ
å ±ã ããæã¡åž°ãããšãã§ãã ( åè ) ã®ã§ãè²ã
掻çšããŠã¿ãŠãã ããã /context ã§ããŒã¯ã³ãäœã«äœ¿ã£ãŠããããèŠãŠã¿ãã ã³ã³ããã¹ããŠã£ã³ããŠã®äœ¿çšéãèŠããããã«ãªããšãäœã«ããŒã¯ã³ã䜿ã£ãŠããã®ããæ°ã«ãªãããã«ãªã£ãŠããŸãããããªæã¯ /context ãå®è¡ãããšãäžå³ã®ããã«å©çšå²åãåãããŸããMCP ããŒã«ãªã©ã¯äºæ³ä»¥äžã«ããŒã¯ã³ã䜿ã£ãŠãããããã®ã§ããããã£ãããšã«æ°ã¥ãããšãã§ããŸãã CLAUDE.md ãã¹ãªã ã«ããã CLAUDE.md ã¯ããããŸã§ã€ã³ããã¯ã¹ãšããŠæ±ããŸãããããããšããããã«ãŒã«ãå®è£
æ¹æ³ãè©°ã蟌ããšãã³ã³ããã¹ããŠã£ã³ããŠã®éŒè¿«ã«ããæ§èœå£åããCLAUDE.md ã®å
容ãç¡èŠããããšãã£ãæåã«ã€ãªããããšããããŸãã 茪éãšå°å³ãããã°ãClaude Code ã¯ã¿ã¹ã¯ã®å
容ã«å¿ããŠèªåŸçã«ã³ãŒãããŒã¹ãæ¢çŽ¢ããããšãã§ããŸããïŒãã®ãããªæ®µéçãªæ¢çŽ¢ãæ
å ±åé㯠Progressive disclosure ãšåŒã°ããŠããŸãïŒ åè: Writing a good CLAUDE.md | HumanLayer Blog 効果的なCLAUDE.mdの書き方 ãã¡ã€ã«ã®æå®æ¹æ³ãç¥ãã Progressive disclosure çãªè©±ã®æŽŸçç³»ãšããŠã¯ã@ã䜿ã£ããã¡ã€ã«æå®ãšãããã§ãªããã¡ã€ã«æå®ãªã©ãããŸã䜿ãåããããšãããããããŸãã èŠ³ç¹ @ ãã @ ãªã ãã¡ã€ã«èªã¿èŸŒã¿ã¿ã€ãã³ã° ã¡ãã»ãŒãžéä¿¡æ(峿) Claude ã倿ã㊠Read ããŒã«å®è¡ ç¢ºå®æ§ å¿
ãã³ã³ããã¹ãã«å«ãŸãã Claude ãèªãŸãªãããšããã ã³ã³ããã¹ãæ¶è²» åžžã«ããŒã¯ã³ãæ¶è²» å¿
èŠãªå Žåã®ã¿ ãŠãŒã¶ãŒã®å¶åŸ¡ æç€ºç Claude ã«å§ãã @ ã§ã®ãã¡ã€ã«æå®ã¯ãæå®ãããã¡ã€ã«ãå³åº§ã«ã³ã³ããã¹ãã«å±éãããŸããããããç§ã¯ããŸã䜿ããŸãããClaude Code ãèªåŸçã«èŠã«ããããšã§ãå¿
èŠãªã¿ã€ãã³ã°ã§å¿
èŠãªæ
å ±ãåãã«è¡ãããããšãã§ããŸãããã¡ã€ã³ã»ãã·ã§ã³ã®ã³ã³ããã¹ããæ¶è²»ããããµããšãŒãžã§ã³ãã®äžã§åç
§ããŠãããã°è¯ãã±ãŒã¹ãããããã§ãã /insights ã³ãã³ãã§ Claude Code ã«æ¹åç¹ãæããŠãããã /insights ã³ãã³ããæã€ãšãéå»ã®ã»ãã·ã§ã³æ
å ±ã«åºã¥ããŠå°ç¶ºéºãªã¬ããŒããçæãããŸããé¢çœãã®ã§ãã²è©ŠããŠã¿ãŠãã ããã çµããã« ãã®èšäºã§ã¯ãã³ã³ããã¹ããšã³ãžãã¢ãªã³ã°ã«ã€ããŠã®çè«ãšå®è·µã玹ä»ããŸãããä»åã¯ãããŸã§ãã³ã³ããã¹ããšã³ãžãã¢ãªã³ã°ãã«ã€ããŠã®èšäºã§ãããããã以å€ã«ã Claude Code ã®æŽ»çšæ¹æ³ã¯æ§ã
ã§ããããããããèªãã§èå³ãæ¹§ããããSkills/Subagents/Rules/Hooks ãªã©ã®ããŒã¯ãŒãã§è²ã
ãšèª¿ã¹ãŠã¿ãŠãã ããã æåå³åã§ãã 図で考える AI コーディングの最適化 - CADDi Tech Blog ã«ãæŠå¿µããã¯ãªããšãè²ã
æžããŠããã®ã§ãããèå³ãããã°ãã¡ããèªãã§ã¿ãŠããã ãããšå¬ããã§ãã ãŸãããã£ãã£ã§ã¯äžç·ã«åã仲éã倧åéäžãªã®ã§ãèå³ãããã°äžèšããã²ã芧ãã ããã speakerdeck.com ãªã³ã¯é cchistory - Claude Code Version History Context Rot: How Increasing Input Tokens Impacts LLM Performance | Chroma Research Effective context engineering for AI agents \ Anthropic Writing a good CLAUDE.md | HumanLayer Blog 効果的なCLAUDE.mdの書き方 図で考える AI コーディングの最適化 - CADDi Tech Blog
ããã«ã¡ã¯ïŒâš ãã£ãã£æ ªåŒäŒç€Ÿã®CADDi QuoteéçºããŒã ã§QAãšã³ãžãã¢ãããŠãã naco ã§ãâïž 2026幎1æ15æ¥ã«ãªã³ã©ã€ã³ã€ãã³ãã ãAIæä»£ã®éçºæŠç¥ãéçºã¹ããŒããšå質ã®äž¡ç«ã«åã㊠㌠3瀟ãšã³ãžãã¢ã®äºäŸããåŠã¶ ããéå¬ãããŸããã ããã§ç»å£ã®æ©äŒãããã ããŸããããã£ããŒïŒâ𠿬èšäºã§ã¯ããã®éã«ã話ããããQAãGeminiã§å身ããŠãåãå
¥ãåºæº(AC)ã¬ãã¥ãŒãèªååããéçºã¹ããŒãã«è¿œãã€ãããã®åãçµã¿ããããã°åãã«æŽçããŠãŸãšããŸãŒãã åœæ¥ã®ã¹ã©ã€ãã¯ãã¡ãð ð¥ã¯ããã«ïŒãã®èšäºã§ãããACã¬ãã¥ãŒãã®å®çŸ©ãæç¢ºã«ããŸã ããã§ã®ACã¬ãã¥ãŒã¯ãåãå
¥ãåºæºïŒAcceptance CriteriaïŒãæžãåºããŠåæããã¬ãã¥ãŒæŽ»åãæããŠããŸããé©çšç¯å²ã¯ãã¹ããŒãªãŒçæåã«ãACãææåããå Žé¢ãã§ããïŒã¹ã©ã€ãP.4ïŒ ãã®æ®µéã§æåŸ
å€ãæã£ãŠãããšãææ»ããæžããã¹ããäœãããããªããŸããäžæ¹ã§ããããææ§ãªãŸãŸã ãšãåŸå·¥çšã«ãºã¬ãæã¡è¶ããããããªããŸãã ð¥èæ¯ïŒéçºã¯éããªã£ãŠããã®ã«ããªãªãŒã¹ãéããªããªã ãããã®æå±ããããŒã ã§ã¯ãéçºçç£æ§åäžã®ããã«AI掻çšãSREã«ããéçšæ¹åãªã©ã«åãçµãã§ããŸãããã€ãŸããäœãé床ãããå®ãä»çµã¿ããã€ãã€ãã«ãã«ãã£ãŠãç¶æ
ã§ãã QAããã®äžã§ãéçºã¹ããŒãåäžã®äžç°ãšããŠACã¬ãã¥ãŒã宿œããŠããŸãããåãçµã¿ã®çãã¯ã·ã³ãã«ã§ãçæåã«æåŸ
å€ãæããåŸå·¥çšã®ææ»ããæžããããšã§ãã ã§ãå®éã«ã¯ãACã¬ãã¥ãŒèªäœã¯äŸ¡å€ãããäžæ¹ã§ãæ³å以äžã«å·¥æ°ã倧ãããªããŸãããå¢ããŠããã®ã¯ããã§ãã¯ãã®ãã®ãšãããããã¬ãã¥ãŒã«å¿
èŠãªæ
å ±ãéããŠçè§£ããæéã§ãããïŒã¹ã©ã€ãP.10ïŒ çµæãšããŠãACã¬ãã¥ãŒã®å·¥æ°å¢å€§ã«ããäœæ¥ãè©°ãŸããšãå®è£
çæãé
ããããACã¬ãã¥ãŒãéã«åããèªèãºã¬ãåŸãã«æã¡è¶ããããããŠãé
ãæ¹ãããããå¢ããŠããŸããŸãã ããã«ãããQAãæ¬æ¥æè³ãããå質åºç€ãããã»ã¹æ¹åã®æéãåããããããããšã¯å¢ããŠãã®ã«æ¹åãé²ãŸãªããç¶æ
ã«ãªã£ãŠããŸããã ð¥èª²é¡ã®çµã蟌ã¿ïŒæè³å¯Ÿå¹æãåºããããšããããçæãã QAæ¥åã®å¹çåãçãã«ãããããªã¿ãŒã³ã倧ããã³ã¹ããäœããœãªã¥ãŒã·ã§ã³ã«éå®ããŠãçæã§ææãåºãããšã«ãã©ãŒã«ã¹ããŸãããïŒã¹ã©ã€ãP.11ïŒ ãããæ»ç¥ã§ãããšãæéãçãŸããä»ã®æ¹åã«ãæãåºãããšèããŸããã ããã§ä»åéžãã ã®ãããAIã«ããACã¬ãã¥ãŒèªååãã§ãããã€ã³ãã¯ãAIãå
šéšãããã§ã¯ãªãããQAã®å身ð¥·ããšããŠåããŠãããããšã§ããã人ã®å€æã¯æ®ãã€ã€ãäžæºåãAIã«å¯ããçãã§ãã ð¥Key Success FactorïŒAIãå身ãšããŠä»²éã«ããããã®æç«æ¡ä»¶ð¥· AIãQAã®å身ãšããŠæŽ»çšããã«ã¯ã次ã®3ç¹ãå¿
èŠã ãšæŽçããŸããã QAã®èããåã«ããïŒå€æã®äžè²«æ§ãæ
ä¿ããïŒ æ£ããããŒã¿ãšæèãæž¡ãïŒQA - AIéã®åæãºã¬ã«ããææ»ããæžããïŒ äººãšAIã®åœ¹å²åæ
ãæç¢ºã«ããïŒéä¿¡ã»è»œèŠã®äž¡æ¹ãé²ãïŒ éã«ãããææ§ã ãšãAIã®ææãæºãããã誀ã£ãåæã§çã®ããããšãèšã£ãŠããŸã£ããããŠãéçšãšããŠæç«ãã«ãããªããŸãã ð¥ACã¬ãã¥ãŒèªååïŒå
·äœçã«ãã£ãããš ããã§ã¯ãKSFãå®è£
ã«èœãšãããã«ãã£ãããšã3ã€ã«åããŠç޹ä»ããŸãã â ã¬ãã¥ãŒèгç¹ã®ååïŒQAã®å€æããAIã«æž¡ãã圢ãžïŒ ãŸããACã¬ãã¥ãŒèгç¹ããåãã«ããŸãããã€ã¡ãŒãžãšããŠã¯ãQAã®é ã®äžã«ããå€æåºæºããAIãåç
§ã§ãã圢ã«èœãšãåãçµã¿ã§ãã å
·äœçã«ã¯ãæ®æ®µã®å€æãMarkdownã®ããã³ãã芳ç¹å³ã«ãã芳ç¹å³ã¯PlantUMLãã¡ã€ã«ãšããŠç®¡çããŸãããPlantUMLã«ããçç±ã¯æ¬¡ã®éãã§ãã AIãæ§é ãšããŠèªã¿åãããã 人ãå³ãšããŠãããã¬ãã¥ãŒã§ãã ããã¹ããªã®ã§å·®å管çã§ãã芳ç¹ãè³ç£ãšããŠè²ãŠãããïŒAIã«ã人ã«ãåããœãŒã¹ãèŠããããïŒ ãã€ã³ãããããMermaidããèŠããããšæãã çãã¯ã倿ã®äžè²«æ§ãšå±äººåã®äœæžã§ãã â¡æèã»ããŒã¿ã®æ¥ç¶ïŒåæãºã¬ãæžããïŒ AIã¯åæã1ã€ãºã¬ãã ãã§ãããã£ãœããå€ããŠããã¬ãã¥ãŒã«ãªããããã§ãããããªããšã人é - AIéã®ã¬ãã¥ãŒã®ææ»ããå¢ããŸãã ããã§ãAIãåç
§ãã¹ãæ
å ±ã«ãããã«è¡ããç¶æ
ãæŽããŸãããå°ãªããšãã仿§ã»èšèšã»å®è£
ã«ã¢ã¯ã»ã¹ã§ããªããšã¬ãã¥ãŒãæç«ãã«ããããã§ããå
¥åã®å質ãäžããåç
§ã§ããæ
å ±ãå¢ããã»ã©ãåºåã®å質ãå®å®ããŸãã â¢äººãæçµãã§ãã¯ããéçšïŒéä¿¡ã軜èŠãé¿ããïŒ AIã¯äžæžãã»ææ¡ãè¡ããæçµå€æã¯äººãè¡ãéçšã«ããŸããã 圹å²åæ
ãææ§ã«ãããšã次ã®2ã€ãèµ·ãããããšèããŠããŸãã ãAIãOKãšèšã£ãããOKããšããéä¿¡ ãAIã®ææã ããè»œãæ±ãããšããè»œèŠ ã©ã¡ããå質ã®èгç¹ã§ã¯å±éºã§ãã ããã§ãAIãäžæ¬¡ã¬ãã¥ãŒ â 人ãåŠ¥åœæ§ãèŠãŠæ¡åŠå€æ â ãã®çµæãæ¹åã«åããšãããµã€ã¯ã«ã§åããŠããŸãã ð¥Before / AfterïŒQAã®æ¥åç¯å²ãçµã ã¹ã©ã€ãã§ã¯ãBefore/AfterãšããŠæ¥åç¯å²ïŒéæ ïŒã®å€åã瀺ããŠããŸããå€åã®æ¬è³ªã¯ãQAãç¹ã«æéã䜿ã£ãŠãã ãæ
å ±åéããšãçè§£ã®ããã®äžæºåã ãAIã«å¯ããããç¹ã§ããïŒã¹ã©ã€ãP.16ïŒ ããã«ãããACã¬ãã¥ãŒã®ã远ãã€ããªããããã°ãã€ããã¯è§£æ¶æ¹åã«é²ã¿ãŸãããQAã®åœ¹å²ããæ
å ±ãæ¢ã人ãããã倿ãã人ããžå¯ãããããªããŸããã ð¥ããããã®åãçµã¿ïŒçæROIã®ç¶æãšãäžé·æãªã¿ãŒã³ãžã®åæè³ ACã¬ãã¥ãŒã¯ROIãé«ãã®ã§ãäœã³ã¹ãã§ç¶ç¶ããŠããäºå®ã§ããâšãã®ããã§ä»åŸã¯ãäžé·æçãªãªã¿ãŒã³ã倧ãããããã»ã¹æ¹åãã«åãçµã¿ãŸããåçºã®æ¹åã§ã¯ãªããå®çŸ©ããŠãéçšããŠãæ¹åãåãç¶æ
ãç®æããŸãã ãŸããQAããŒã ã®AI掻çšã¯ACã¬ãã¥ãŒã«çãŸããããã¹ãã±ãŒã¹äœæã®åèªååããäžå
·ååæã«ãåºããã€ã€ãããŸãããã¡ããããã䜿ãããã圢ã«é²åãããŠããããã§ãã ð¥ãŸãšã éçºã¹ããŒããäžãã£ãŠãããªãªãŒã¹ãéããªããªãããšããããŸãã 課é¡ã®äžã€ããäžæµå·¥çšã§ããACã®ã¬ãã¥ãŒã远ãã€ããªãããšã§ããã 察çãšããŠãQAãAIã䜿ã£ãŠå身ããACã¬ãã¥ãŒã®äžæºåãèªååããŠéçºã¹ããŒãã«è¿œãã€ãã¢ãããŒããåããŸããã KSFã¯ã芳ç¹ã®ååïŒæèããŒã¿ã®æ¥ç¶ïŒäººãšAIã®åœ¹å²åæ
ã®æç¢ºåã®3ç¹ã§ãã ãŸã 詊è¡é¯èª€äžã§ãããçŸç¶ã¯ãAIã§çœ®ãæããããããAIã«ä»»ãããšãããæ±ºããŠãéçšãšããŠåããã®ã䜿ãããããšæããŠããŸãã ãããŸãïŒ
ããã«ã¡ã¯ããã£ãã£ã§æ©æ¢°åŠç¿ãšã³ãžãã¢ãããŠããç±å·ã§ããæ±äº¬ã®å€§æçºã«æè¿ãªãŒãã³ãããµãŠãæœèšã«è¡ãããããæŽèœãŠããªããšæãã€ã€ååã«ãªã©ãã¯ã¹ãã§ããŸãããäŒæ¯ã倧åã§ãã ããŠæ¬é¡ã«æ»ããšãç§ã¯ä»¥äžãç®çãšããŠLLM *1 ã«é¢ããè©äŸ¡ãã³ãããŒã¯ã¥ããã«åãçµãã§ããŸãã è£œé æ¥ã®èª²é¡ã解決ããããã«ã¯ã©ã®ãããªLLMãéžã¹ã°ããã倿ãããããã ãã£ãã£ãæã€è£œé æ¥ã®æ§ã
ãªããŒã¿ïŒå³é¢ç»åã3Dã¢ãã«ã仿§æžãªã©ïŒã«å¯ŸããŠFine-tuningãªã©ã®ææ®µãé©çšããããšã§ãè£œé æ¥ã«é¢ããæ§ã
ãªèª²é¡ãè§£ããæ±çšçãªLLMãéçºãã 以åãåãçµã¿ã®å
šäœåã è£œé æ¥ç¹åLLMãéçºããããã®è©äŸ¡ãã³ãããŒã¯ ã«ãŠç޹ä»ããŸããã æ¬èšäºã§ã¯ãç©ºéææ¡ãšåŒãã§ãããã³ãããŒã¯ã¿ã¹ã¯ãéããŠåãçµã¿ã®å
·äœäŸããäŒãããããšæããŸãã ãã¡ã€ã³ç¹åLLMãè©äŸ¡ãããã³ãããŒã¯ãäœãããšèããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã ç©ºéææ¡ãšã¯ 2Då³é¢ãã3DCADãžã®åœ¢ç¶åŸ©å
è©äŸ¡æ¹æ³ã»è©äŸ¡ææš è©äŸ¡æ¹æ³ è©äŸ¡ææš ãŸãšã æåŸã« ç©ºéææ¡ãšã¯ ç©ºéææ¡ãšã¯ä»¥äžã®è¡šã«ããã¿ã¹ã¯ã®ããšã§ãã çç·Žããèšèšè
ãæè¡è
ã®ããã«ãè£œé æ¥ã«ã€ããŠååã«çè§£ããŠãã人éãå³é¢ãçè§£ããããã»ã¹ã®äžã€ãšããŠå®çŸ©ããŠããŸãããã®ããã»ã¹ãLLMã§ãå®çŸã§ãããè©äŸ¡ããããšãæèããŠã¿ã¹ã¯èšèšãè¡ã£ãŠããŸãã ã¿ã¹ã¯ã«é¢ãã詳现ã«èå³ãããã°ã è£œé æ¥ç¹åLLMãéçºããããã®è©äŸ¡ãã³ãããŒã¯#ãã³ãããŒã¯ã¿ã¹ã¯ã®å®çŸ© ãåç
§ããã ããã°æããŸãã 人éãå³é¢ãçè§£ããããã»ã¹ ããã»ã¹ã®æŠèŠ LLMãè§£ãã¿ã¹ã¯ã®äŸ ç©ºéææ¡ å³é¢ã®äžã«æžãããŠããç«äœãã©ã®ãããªåœ¢ãææ¡ãã äŸïŒããã®å³é¢ã«æžãããŠããã®ã¯Lååã®æ¿éã 2Då³é¢ãã3DCADãžã®åœ¢ç¶åŸ©å
以éãLLMãè§£ãã¿ã¹ã¯ã§ãã2Då³é¢ãã3DCADãžã®åœ¢ç¶åŸ©å
ã«ã€ããŠãLLMãçšããå
·äœçãªåœ¢ç¶åŸ©å
æ¹æ³ãšããã®è©äŸ¡æ¹æ³ã玹ä»ããŸãã 2Då³é¢ãã3DCADãžã®åœ¢ç¶åŸ©å
ã¿ã¹ã¯ã®å
šäœåã¯ä»¥äžã®ç»åã®ãšããã§ãã 2Då³é¢ãã3DCADãžã®åœ¢ç¶åŸ©å
ã®æŠèŠãå³é¢ã¯ã客æ§ã®å³é¢ã§ã¯ãªãããµã³ãã«ã§ãã 以äžãæå³ããŠãã®ã¿ã¹ã¯ãèšå®ããŸããã LLMã«ã¯ãå³é¢ãšCADãšããè£œé æ¥ã§åãæ±ãããŒã¿ã«å¯Ÿããç©ºéææ¡èœåããããã©ããæããã«ããã ã客æ§ãžã®äŸ¡å€æäŸã«ã€ãªãããŠãŒã¹ã±ãŒã¹ã®åµåºãã§ãããæããã«ããã ãã®ã¿ã¹ã¯ã§ã¯ãLLMã䜿ã£ãŠã©ã®ããã«2Då³é¢ãã3次å
ç¹çŸ€ãäœãããéèŠã§ãã ãŸãã¯ããã«æãæµ®ããã ã2Då³é¢ããxyz座æšïŒâ3次å
ç¹çŸ€ïŒã§æ§æãããç¹ãLLMã«çŽæ¥åºåãããããšãæ€èšããŸããã ããããLLMã®ããŒã¯ã³æ°ã®äžéã«ãããååãªæ°ã®ç¹ãçæã§ããŸããã§ããã ç¹ã®æ°ãå°ãªãïŒâç¹ã®å¯åºŠãäœãïŒãš3DCADããäœã£ãæ£è§£ç¹çŸ€ãšã®èª€å·®ãå¿
èŠä»¥äžã«å€§ãããªãé©åãªè©äŸ¡ãã§ããªãããããã®æ¹éãæå¿µããããšã«ããŸããã ç§ã¯ä»åã®åãçµã¿ãŸã§ã3DããŒã¿ãæ±ã£ãçµéšããããŸããã§ãããåœç¶ãLLMã䜿ã£ãŠ3DããŒã¿ãçæããæ¹æ³ãå
šãç¥ããªãã£ããããè«æèª¿æ»ãéããŠäžã®äžã§ã¯ã©ã®ããã«ãã£ãŠããã®ã調ã¹ãããšã«ããŸããã 調æ»ããçµæãã¡ãã·ã¥ *2 ã«å¿
èŠãªé ç¹ãšé¢ãLLMã§çæããé ç¹ãšé¢ããã¡ãã·ã¥ãçæãããšããã¢ãããŒã *3 ããããšããããŸããããããåèã«ä»¥äžç»åã®ããžãã¯ãé©çšããŸããããã®çµæãæ£è§£ç¹çŸ€ãšé©åã«æ¯èŒã»è©äŸ¡ã§ããã ãã®ãååãªæ°ã®ç¹ãçæã§ããããã«ãªããŸããã äœè«ïŒLLMïŒå³å¯ã«ã¯VLMïŒã¯ãç©äœã®ç©ºéçãªäœçœ®é¢ä¿ïŒååŸãäžäžå·Šå³ãªã©ïŒãææ¡ããã®ãèŠæãšããå ±å *4 ããããŸãã 3DCADãžã®åœ¢ç¶åŸ©å
ã«ã¯ç©ºéææ¡èœåãäžå¯æ¬ ã§ãããçŸæç¹ã§ã¯LLMã«ã¯ããŒãã«ã®é«ãã¿ã¹ã¯ã ãšèšããŸããããã§ãç©ºéææ¡èœåãè£ã3DCADãçæããäŸãšããŠã以äžã®ãããªã¢ãããŒããææ¡ãããŠããŸãã LLMã«ããäžéçæç©ãçµç±ããŠ3DCADãçæã äžèšã®ããã«é ç¹ãšèŸºããã¡ãã·ã¥ãäœãæ¹æ³ãã CadQuery ãšãã3DCADãäœãããã®Pythonã©ã€ãã©ãªã®ã³ãŒãããäœãæ¹æ³ *5 ããããŸãã ãªããCadQueryãã3DCADãäœãæ¹æ³ã¯äžæ¡çšã«ããŸããã çç±ïŒæ¬æ¥ã®ç®çã§ããLLMã®ç©ºéææ¡èœåã®è©äŸ¡ãã§ããªããªã£ãŠããŸããšèããããã§ãããã®æ¹æ³ã§ã¯ãLLMãç«äœãæ£ããçè§£ã§ããŠãããã§ã¯ãªããCadQueryç¹æã®ã³ãŒããã©ãã ãç¥ã£ãŠããããšãããã©ã€ãã©ãªã®ç¥èãè©äŸ¡ããããšã«ãªã£ãŠããŸããŸãã 3DCADçæAPIãå€éšããŒã«ãšããŠåŒã³åºããAIãšãŒãžã§ã³ããæ§ç¯ãã *6 ã è©äŸ¡æ¹æ³ã»è©äŸ¡ææš LLMã«ç©ºéææ¡èœåããããã©ããç¥ãããã«ã¯ãé©åãªè©äŸ¡æ¹æ³ãšè©äŸ¡ææšãå¿
èŠã§ããããã§ã¯ã2Då³é¢ãã3DCADãžã®åœ¢ç¶åŸ©å
ã«ãããŠãã©ã®ãããªè©äŸ¡æ¹æ³ãšè©äŸ¡ææšãé©çšããŠããã玹ä»ããŸãã è©äŸ¡æ¹æ³ 以äžã®éãè©äŸ¡ãè¡ã£ãŠããŸããäœçœ®åããã¯ICPïŒIterative Closest PointïŒãšããç¹çŸ€ã®äœçœ®åããã§ä»£è¡šçãªæ¹æ³ããæ£è§£ç¹çŸ€ãšäºæž¬ç¹çŸ€ã§åç¹ã®äœçœ®ãæãããšãã£ãæ¹æ³ãçµã¿åãããŠããŸãã äºæž¬ç¹çŸ€ã«å¯ŸããŠæ£è§£ç¹çŸ€ãšäœçœ®ãåãããçç±ã¯ãåŸè¿°ããè©äŸ¡ææšã圢ç¶ã®éãã®ã¿ã«èµ·å ããå€ãšããããã§ãã äœçœ®ãåãããã«è©äŸ¡ãããšãæ£è§£ç¹çŸ€ãšã®åœ¢ç¶ã®éãã«ãã誀差ãšäœçœ®ãéãããšã«ãã誀差ã®åºå¥ã§ããªããªã£ãŠããŸããŸãã è©äŸ¡ææš 以äžè¡šã«æžããææšãæ¡çšããŠããŸãããããã®ææšã¯åœ¢ç¶åŸ©å
ã«é¢ããè«æã§æ¡çšãããããšããããŸãã è©äŸ¡ææš æŠèŠ ã¡ãªãã ãã¡ãªãã Wassersteinè·é¢ ã»æ£è§£ç¹çŸ€(CADããäœã£ãç¹çŸ€)ãšäºæž¬ç¹çŸ€(LLMãäœã£ãç¹çŸ€)ãšã®è·é¢ ã»å€ãå°ããã»ã©åŸ©å
粟床ãé«ã ã»(F-scoreãšæ¯èŒãããš)ãããå€ã«äŸåããã«åœ¢ç¶ã®éããææ¡ã§ãã 0ã1ã®ç¯å²ã§è¡šçŸã§ããªããããè·é¢ã®å€§å°ãã©ããªæå³ãæã€ã®ããããã«ãã F-score 以äžã®PrecisionãšRecallã®èª¿åå¹³åã å€ã倧ããã»ã©åŸ©å
粟床ãé«ã ã»PrecisionïŒæ£è§£ç¹çŸ€ãšè·é¢ 以å
ã«ããäºæž¬ç¹çŸ€ã®æ° / äºæž¬ç¹çŸ€ã®æ° ã»RecallïŒæ£è§£ç¹çŸ€ãšè·é¢ 以å
ã«ããäºæž¬ç¹çŸ€ã®æ° / æ£è§£ç¹çŸ€ã®æ° ã»ãããå€ ä»¥å
ã®ç¹ã ãæ£è§£ãšè©äŸ¡ããã®ã§ãæå®ãã蚱容誀差ã§åŸ©å
ããããšãã£ã掻çšãã§ãã ã»0ã1ã®éã§è¡šçŸã§ããã®ã§ãææšã®è¯ãæªãããããããã ãããå€ ãæ±ºããã®ãé£ãã 圢ç¶åŸ©å
ã®ã¿ã¹ã¯ã§ã¯ãChamferè·é¢ãšããææšãçšããããããšãå€ãã§ãããäžæ¡çšãšããŠããŸãã çç±ã¯ãChamferè·é¢ã§ã¯æ£è§£ç¹ãšäºæž¬ç¹çŸ€ã®è·é¢ã®å¹³åãããšã«èšç®ããŠãããããç¹ã®ååžã®ã°ãã€ãã倧ããå Žåã«è·é¢ãå¿
èŠä»¥äžã«å€§ãããªãããã§ãããã®ãããChamferè·é¢ãšæ¯ã¹ãŠååžã®ã°ãã€ããåžåã§ãã *7 Wassersteinè·é¢ãæ¡çšããŠããŸãã ãŸãšã æ¬èšäºã§ã¯ãç©ºéææ¡ãšããã¿ã¹ã¯ãäŸã«è£œé æ¥ç¹åLLMã®éçºã«åãããã³ãããŒã¯äœæã®ããã»ã¹ã玹ä»ããŸããã 瀟å
ã§åºã䜿ããããã³ãããŒã¯ãç®çãšããŠãè«æãç»ååŠçã¿ã¹ã¯ãªã©ã«ãã確ç«ãããæšæºçãªææ³ãçšããŠLLMã®èœåãè©äŸ¡ããŠããŸãã ç©ºéææ¡ãšããåãçµã¿ãéããŠãæã£ãããã圢ç¶åŸ©å
ãã§ããLLMãããã°ãå
šã埩å
ã§ããªãLLMããããšããäºå®ããè©äŸ¡ææšãšããå®éçãªçµæãšLLMãäœã£ãç¹çŸ€ãš3DCADããäœã£ãç¹çŸ€ãèŠæ¯ã¹ããšãã宿§çãªçµæã§å®æããããšãã§ããŸããã è£œé æ¥ã®LLMãã³ãããŒã¯äœãã§ã¯ã3DCADãå³é¢ç»åãšãã£ãåžå°æ§ããã¡ã€ã³æ§ã®é«ãããŒã¿ãåãæ±ããŸãããã®ãããªããŒã¿ã«å¯ŸããŠãã©ã®ãããªè©äŸ¡ããŒã¿ãè©äŸ¡æ¹æ³ãæ¡çšããã°ãããçµ¶å¯Ÿã®æ£è§£ã¯ãããŸããããã®äžã§è¿·ããªãããäœãè©äŸ¡ãã/ããªãã®ã決ããé£ããã¯ãããŸãã ããããåžå°æ§ãšãã¡ã€ã³æ§ã®é«ãããŒã¿ã«å¯ŸããLLMã®é²åãšéçãç¥ãããšãã§ããã®ã§ããšãŠãé¢çœãåãçµã¿ã ãšæã£ãŠããŸãã æåŸã« ã玹ä»ããåãçµã¿ã«éãããæã
ãæ©æ¢°åŠç¿ãLLMã䜿ã£ãŠè§£æ±ºãããè£œé æ¥ã®èª²é¡ã¯æ¬åœã«ãããããããŸãããã£ãã£ã¯äººãå¢ããŠããŠããããããå°œãããŠããããããªãã®ïŒãšèšãããããšããããå
¥ç€Ÿåã¯èªåãããæã£ãŠããŸãããããããå
¥ç€ŸããŠã¿ããšããããããšæã£ãŠãããã©ã§ããŠããªãããšã¯ãããããããšå®æããŸããã æ¬èšäºããã£ããã«ãã£ãã£ãšã¯ããããäœã«åãçµãã§ããäŒç€Ÿãªã®ããæ©æ¢°åŠç¿ãLLMã䜿ã£ãŠäœãå®çŸãããã®ãããªã©ãèå³ããã°ãã²ãæ°è»œã«ãé£çµ¡ãã ããã speakerdeck.com recruit.caddi.tech open.talentio.com *1 : æç« ã ãã§ãªãç»åãå
¥åããŠããã®ã§ããã«ãã¢ãŒãã«LLMïŒMLLMïŒãVLMïŒVision-Language ModelïŒãšè¡šèšããã®ãæ£ããã§ãããæ¬èšäºã§ã¯ãããããããåªå
ããŠLLMãšè¡šèšããŸãã *2 : 3Dã¢ãã«ãäžè§åœ¢ãåè§åœ¢ã®éãŸãã§è¡šçŸãããã®ãOBJãSTLãšãããã¡ã€ã«ãã©ãŒãããã§è¡šçŸããããšãäžè¬çã *3 : Wang, Zhengyi, et al. "Llama-mesh: Unifying 3d mesh generation with language models." arXiv preprint arXiv:2411.09595 (2024). *4 : Chen, Shiqi, et al. "Why Is Spatial Reasoning Hard for VLMs? An Attention Mechanism Perspective on Focus Areas." Proceedings of the 42nd International Conference on Machine Learning, PMLR 267:9910-9932, 2025. *5 : Rukhovich, Danila, et al. "Cad-recode: Reverse engineering cad code from point clouds." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2025. *6 : Mallis, Dimitrios, et al. "CAD-assistant: tool-augmented vllms as generic cad task solvers." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2025. *7 : Nguyen, Trung, et al. "Point-set distances for learning representations of 3d point clouds." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021.
Control Plane éš èªèšŒèªå¯ã°ã«ãŒãïŒâ»1ïŒã®ãšã³ãžãã¢ãªã³ã°ãããŒãžã£ãŒãããŠããå
å±±( @ksakiayma134 )ã§ãã çŸåšãã£ãã£ã¯ãCADDi Drawer ãš CADDi Quote ãšãã£ãè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãã客æ§ãžæäŸãããã³ã³ããŠã³ãæŠç¥ïŒãã«ããããã¯ãåïŒããæšãé²ããŠããŸãã ããããè€æ°ã¢ããªã±ãŒã·ã§ã³ãå±éããã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã§ã¯ãå
±éå©çšããæ©èœããã©ãããã©ãŒã ã¬ã€ã€ãŒãšããŠåãåºãããšãäžè¬çã§ããç§ãã¡ãèªèšŒã»èªå¯æ©èœããã©ãããã©ãŒã åããåã¢ããªéçºè
ãžæäŸããŠããŸãã æ¬èšäºã§ã¯ãçŸåšã®ãã£ãã£ã®èªèšŒèªå¯ãæ¯ããŠããã·ã¹ãã 矀ã«ã€ããŠã玹ä»ããŸãã Control Plane éšã«ã€ã㊠äžè¬çãªèª¬æ ãŸãããControl Planeããšããèšèã«ã€ããŠç°¡åã«è§ŠããŠãããŸãã äžè¬çã« SaaS ã¢ãŒããã¯ãã£ã«ããã Control Plane ãšã¯ã AWS ã®ãã¯ã€ãããŒã㌠çã§ãå®çŸ©ãããŠããéãããããã³ãïŒé¡§å®¢ïŒã®ç®¡çããšãã¢ããªã±ãŒã·ã§ã³ã®æ©èœããåé¢ãã管çå±€ã®ããšãæããŸãã å
·äœçã«ã¯ãããã³ãã®ã©ã€ããµã€ã¯ã«ç®¡çïŒäœæã»åé€ïŒãèªèšŒã»èªå¯ã課éãã¡ããªã¯ã¹éèšãªã©ããã¹ãŠã®ããã³ãã«æšªæçã«é©çšãããéçšæ©èœãæ
ãã·ã¹ãã 矀ã§ããããããã¢ããªã±ãŒã·ã§ã³å±€ïŒApplication PlaneïŒããåãåºãããšã§ãåã¢ããªããŒã ã¯çŽç²ãªæ©èœéçºã«éäžã§ããããã«ãªããŸãã èªèšŒèªå¯ã°ã«ãŒãã®äœçœ®ã¥ã èªèšŒèªå¯ã°ã«ãŒãã¯ãçŸåšãã® Control Plane éšã«æå±ããŠããŸãã ããã¯ãéã³ã³ãŠã§ã€ã®æ³åããæèããçµç¹èšèšã§ããã€ãŸããã·ã¹ãã ã®ãããããå§¿ïŒèªèšŒèªå¯ãç¬ç«ãããã©ãããã©ãŒã ã§ããç¶æ
ïŒããå
ã«å®çŸ©ããããã«åãããŠäººå¡é
眮ãçµç¹æ§é ãæ±ºå®ããŸããã ããšããšèªèšŒèªå¯ã°ã«ãŒãã¯ãCADDi Drawer ã®èªèšŒèªå¯ã®ã¿ã責åãšããŠããŸãããããããã³ã³ããŠã³ãæŠç¥ãéè¡ããã«ããããCADDi Drawer ãšå¯çµåã ã£ãã·ã¹ãã ãåãé¢ããç¬ç«ããŠéçšããå¿
èŠããããŸãã ãã§ã«åãé¢ããå®äºãããã®ãããã°ããŸã å¯çµåã§çã«ãªã£ãŠããªããã®ããããçŸåšé²è¡ç³»ã§éæåé¢ãé²ããŠãããã§ãŒãºã§ãã Control Plane ãæ¯ããã·ã¹ãã ãã¡ èªèšŒãã©ãããã©ãŒã CADDi Drawer ã CADDi Quote çãå
šã¢ããªã®èªèšŒãæ¯ããå
±éåºç€ã§ãã 以åã¯ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãåå¥ã« nextjs-auth0 SDK ãçµã¿èŸŒã¿ãããããã OIDC Client ãšããŠæ©èœããæ§æããšã£ãŠããŸããã åã¢ããªãããããOIDC Clientãå®è£
ããã€ã¡ãŒãž ãã®æ¹æ³ã§ãã¹ã±ãŒã©ããªãã£ã¯æ
ä¿ã§ããŸãããçµç¹ãæ¡å€§ããã«ã€ããŠä»¥äžã®ãããªèª²é¡ãç®ç«ã£ãŠããŸããã 倿Žå®¹ææ§ã®äœäž: èªèšŒèªå¯ã°ã«ãŒãåŽã§åºç€çãªä¿®æ£ãå
¥ãããå Žåãåã¢ããªåŽã®èšå®å€æŽããããã€ãŸã§é¢åãèŠãªããã°ãªããªãã ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ãã®å¢å€§: æ°èŠã¢ããªã®ç«ã¡äžãæãéçºè
ã OIDC/OAuth2 ã®ãã©ã¡ãŒã¿ïŒCallback URL ã Scope çïŒãæ·±ãçè§£ããŠããªããšèšå®ãå®äºãããéœåºŠèªèšŒèªå¯ã°ã«ãŒãã®ãµããŒããå¿
èŠã«ãªãã ã©ã€ãã©ãªäŸåã®ãªã¹ã¯: äŸãã° nextjs-auth0 v4 ã®ãããªç Žå£çãªå€æŽãå
¥ã£ãéãåã¢ããªããŒã åŽã§ã®ããŒãžã§ã³ã¢ãã察å¿è² è·ãé«ããçµ±å¶ãåãã¥ããã ããã§ç§ãã¡ã¯ãåã¢ããªãåå¥ã« OIDC ãããŒããã³ããªã³ã°ããã¢ãŒããã¯ãã£ããããèªèšŒãããŒãã®ãã®ãäžå€®ã§ã³ã³ãããŒã«ããä»çµã¿ïŒGateway/Proxy ãã¿ãŒã³ïŒã«åãæ¿ããŸããã ã¢ãŒããã¯ãã£ã®ã€ã¡ãŒãžãšããŠã¯ãOSS ã® oauth2-proxy ã«è¿ãã§ãã èªèšŒ Proxy ã§å®è£
ããã€ã¡ãŒãž ãŸãããã®å·æ°ã«åãããŠãã·ã¹ãã å
éšã§ã¯ Auth0 ã®ããŒã¯ã³ã§ã¯ãªããCADDi ç¬èªã® Internal Token ãå©çšãããã倿ŽããŸãããããã¯ãJWT ã® ClaimïŒæ
å ±ïŒãèªåãã¡ã§æè»ã«ã³ã³ãããŒã«ããããã§ãã å€éš IDaaS ã§ãã Auth0 ã«å
éšããžãã¯ãããŒã¿ãäŸåããããšèŠéããæªããªããããAuth0 ã¯ãèªèšŒãã«ç¹åãããè€éãªãèªå¯ãæ
å ±ã¯ Internal Token ãžå¯ãã倿ãããŸããã M2M Token Issuer ãŠãŒã¶ãŒã®æäœãä»ããªãã·ã¹ãã ééä¿¡ïŒSystem-to-System CallïŒãããããåŠçãªã©ã®ã¯ãŒã¯ããŒãã«åããä»çµã¿ã§ãã å
ã®èªèšŒãã©ãããã©ãŒã å·æ°ã«ãããã·ã¹ãã å
éšã® API èªèšŒã¯ Internal Token ã«çµ±äžãããŸããããã®ããããŠãŒã¶ãŒæäœã䌎ããªãã¯ãŒã¯ããŒãã§ãã£ãŠããåæ§ã« Internal Token ãååŸã§ããææ®µãå¿
èŠã«ãªããŸãã ããã§ãOAuth2 ã® Client Credentials Flow ãçšããã瀟å
å°çšã®ããŒã¯ã³çºè¡ã·ã¹ãã ãM2M (Machine to Machine) Token IssuerããéçºããŸããã çŸåšã¯ã·ã³ãã«ã« client_id / client_secret ãåã¯ãŒã¯ããŒãã«é
åžããŠéçšããŠããŸãããå°æ¥çã«ã¯ãã®ãããªæåã§ã®éµé
åžïŒã¢ãŠããªããã³ãéçšïŒãäžèŠãªæ¹åŒãžã®ç§»è¡ã屿ããŠããŸãã äŸãã° OAuth çéã§ã OAuth SPIFFE Client Authentication ããã©ãããšããŠååšããŠããããã«ãã¯ãŒã¯ããŒãã® Identity ãã©ã蚌æã»ç®¡çããããšãã課é¡ã«ããèªèšŒèªå¯ã°ã«ãŒããšããŠç©æ¥µçã«åãåã£ãŠããäºå®ã§ãã Tenant Platform Control Plane ã®äžæ žã§ãããããã³ã管çãããèªèšŒèªå¯ã°ã«ãŒãã®éèŠãªè²¬åã§ãã çŸåšãç§ãã¡ã¯ããã³ãæ
å ±ïŒã©ã®é¡§å®¢ãäœã®ãã©ã³ãå©çšããŠããããã©ã®æ©èœãªãã·ã§ã³ãæå¹ãçïŒã Tenant Platform ãšããã·ã¹ãã ã«ãŠä¿ç®¡ããŠããŸãã 以åãããã®æ
å ±ã¯ CADDi Drawer ã®ããŒã¿ããŒã¹å
ã«æ ŒçŽãããŠããŸããããç¬ç«ãããµãŒãã¹ãšããŠåé¢ããCADDi Quote çã®ä»ã·ã¹ãã ãããçµ±äžãããã€ã³ã¿ãŒãã§ãŒã¹ã§åç
§ã§ããç¶æ
ã«ããŠããŸãã ããããŠããŒã¿ãäžå€®ã«éçŽããããšã§ãåã¢ããªéçºããŒã ãåå¥ã«äŒŒããããªç®¡çããŒã¿ãæã€å¿
èŠããªããªããŸãã ãŸãéèŠãªç¹ãšããŠãããã«ã¯ããã«ãããã³ã SaaS ãå¶åŸ¡ããããã®ç®¡çããŒã¿ïŒMetadataïŒãã®ã¿ãä¿åããŠãããã客æ§ã®æ¥åããŒã¿ïŒå³é¢ããŒã¿çïŒã¯ä¿åããŠããŸããããã®ããã«è²¬åãæç¢ºã«åé¢ããããšã§ãã客æ§ã®ä¿åããããŒã¿é åïŒData Plane / Application PlaneïŒãšã®å¢çç·ãæç¢ºã«åŒãã¢ãŒããã¯ãã£ãå®çŸããŠããŸãã 顧客ã®ããã³ã管çUIã·ã¹ãã ã客æ§åŽã®ç®¡çè
ïŒAdministratorïŒã®ã¿ãå®è¡å¯èœãªæäœãæäŸããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã§ãã ãŠãŒã¶ãŒã®æåŸ
ãæš©éïŒããŒã«ïŒå€æŽãã¢ã«ãŠã³ããããã¯ãªã©ãè¡ããç»é¢çããã¹ãã£ã³ã°ããŠããŸãã ãã®ãããªç®¡çç»é¢ã¯åã¢ããªããŒã ãç¬èªã«éçºããã®ã§ã¯ãªããèªèšŒèªå¯ã°ã«ãŒããæäŸãã UI ãå©çšããããšãšããŠããŸãã ãŸã å
¬éã§ããªãã·ã¹ãã ãã¡ ããã§ç޹ä»ãããã®ä»¥å€ã«ããéæéçºäžã®ã·ã¹ãã ãããŸã å
¬éã§ããªããããžã§ã¯ããè€æ°åããŠããŸãã æ£çŽã«ç³ãäžããŸããšãã·ã¹ãã ã®åé¢ã¯ãŸã å®å
šã§ã¯ãããŸãããä»ã§ãã¬ã¬ã·ãŒãªæ§æã§æ®ã£ãŠããã·ã¹ãã ã¯ååšããŸãã åãé¢ãã確å®ãã€å®å
šã«é²ããŠããããããªäœå¶ããããžã§ã¯ãããçå®ã«çµæããŠããäºå®ã§ãã ãŸã R&D ã®äžç°ãšããŠãGoogle Zanzibar ãæšä»ã®èªå¯æè¡ã®æœ®æµïŒâ»2ïŒãåèã«ã瀟å
ã§å©çšå¯èœãªãæ±çšçãªèªå¯å¶åŸ¡ã·ã¹ãã ãã®æ€èšŒãªã©ãè¡ã£ãŠããŸãã We're hiring! Control Plane éšã§ã¯ãçŸåšããã¯ãšã³ããšã³ãžãã¢ãããã³èªèšŒèªå¯ãšã³ãžãã¢ãçµ¶è³åéäžã§ãïŒ çŸæç¹ã§ OIDC ã OAuth ã®æ·±ãç¥èããªããŠããå
¥ç€ŸåŸã«ãã£ããã¢ããããŠããã ããã°åé¡ãããŸããã ç¹å®ã®ãããã³ã«ã«è©³ããããšãããããã¹ã±ãŒã©ãã«ãªãã©ãããã©ãŒã ãã©ãèšèšã»æ§ç¯ãããããšããèŠç¹ããããã¯ãšã³ããšã³ãžãã¢ãšããŠã®æ±çšçãªèšèšåãéèŠããŠããŸãã ãŸããèªèšŒèªå¯ãšã³ãžãã¢ã®æ¹ã«ãšã£ãŠã¯ããèªåãã¡ã§ OIDC ãã¹ã¯ã©ããå®è£
ã§ããªãããéå±ããšæããããããããŸãããããããéã«èšãã°ãèªèšŒã®ã³ã¢ã Auth0 ã«ä»»ããããšã§ãããé«åºŠãªèªå¯å¶åŸ¡ããã©ãããã©ãŒã å
šäœã®ã¢ãŒããã¯ãã£èšèšã«ã¬ãã¬ããžãå¹ãããããç°å¢ã§ããããŸãã æè¡ã¹ã¿ãã¯ãšããŠã¯ãããã¯ãšã³ãã§ã¯ Go ãç©æ¥µçã«æ¡çšããŠããããµãŒãã¹ã¡ãã·ã¥å±€ã§ã®èªèšŒå¶åŸ¡ãªã©ãè¡ã£ãŠããŸãã SaaS ãæ¯ããå
±éåºç€ïŒControl PlaneïŒãšãããæ»ãããã®ããé åã«èå³ãããæ¹ããã²äžåºŠã話ãããŸãããã ã«ãžã¥ã¢ã«é¢è«ã¯ãã¡ãããïŒ open.talentio.com â»1: 瀟å
ã§ã¯ IAM (Identity and Access Management) Group ãšããåç§°ã§æŽ»åããŠããŸãã â»2: AWS ã® Cedar ã SpiceDB ãªã©ãå°é ããŠããŠããå°è±¡ãæã£ãŠããŸãã
ããã«ã¡ã¯ãData&Analysiséšã®å®æ¬ã§ããæè¿ç§çšã®PCãããPCã«ä¹ãæããŸãããçã¹ããŒã¹ã¯æ£çŸ©ã ããŠãç§ã®æå±ããAI for ApplicationããŒã ã§ã¯LLMã«ããå³é¢èªè§£ãçšãããããã¯ãéçºã«åãçµãã§ããŸãããã®äžã§ å°éé åã«ãããè©äŸ¡ã®ææ§æ§ ãšããæè¿ããèã課é¡ã«çŽé¢ããŸããããã®èšäºã§ã¯ããã®èª²é¡ãšæ¹åæ¹æ³ãšããŠãè³æ ŒååŸããšããå€å
žçã ãéå¹çããã§ããŸãéžã°ãªãhowãã©ãå¹ããããã玹ä»ããŸãããã®èšäºãå°éé åã®è©äŸ¡ã«èŠããæ¹ã®åèã«ãªãã°å¬ããã§ãã ãªããã®èšäºã§åã£ãæ¹æ³ã¯éçºè
èªèº«ã®ç¥èãå€ãããã®ãªã®ã§ãæ°ããè©äŸ¡æ¹æ³ãæåŸ
ããæ¹ã«ã¯not for meãšæããããšæããŸãã®ã§ãæ¿ç¥ãããã ããã 課é¡ïŒAIåºåã®è©äŸ¡ããã»ã¹ã®ææ§æ§ 察çïŒååçãªã€ã³ããããããèœåçãªæ§é åãž ææïŒè§£å床ã®åäžãšå±äººæ§ã®æ¹å å³é¢ã®èŠãæ¹ãå€ãã£ã è©äŸ¡ããã»ã¹ã®æ¹å ä»åŸã®ææŠ æåŸã« 課é¡ïŒAIåºåã®è©äŸ¡ããã»ã¹ã®ææ§æ§ ãŸãèæ¯ãšããŠãå³é¢èªè§£ããšããã¿ã¹ã¯ã«ã€ããŠã説æããŸããå³é¢ãšã¯ã補åãäœãããã®æ
å ±ãçµµãšæåã§æãããè£œäœæç€ºæžãã§ããå³é¢èªè§£ã¯èªãã§åã®åŠããå³é¢ãèªã¿è§£ãã¿ã¹ã¯ã§ãã ãã®ã¿ã¹ã¯ã®é¢çœãç¹ã¯ãèªã¿æã«ãã£ãŠåãåãæ
å ±ãç°ãªãããšã§ããå³é¢ã«ã¯ãããŠå
šãŠã®è£œäœæ¹æ³ãæç« ã§æžã蟌ãŸããçµµãšæççãªæ
å ±ã®ã¿ãèšèŒãããŠããŸããããã¯ãèšèšã»è£œäœã«é¢ããããããç«å Žã®äººããèªåãå¿
èŠãªæ
å ±ãäžç®ã§ç¢ºèªã§ããããã«ããããã§ãã å®éã«ãäžå³ã®ãããªå³é¢ãèªãéã®äŸãèããŠã¿ãŸãããã å³é¢ããå¿
èŠãªæ
å ±ãèªã¿åã£ãŠããã®ã§ããããã®æ
å ±ãèªã¿æã®èŠç¹ã«ãã£ãŠä»¥äžã®ããã«ç°ãªããŸãã 補äœè
ã®èŠç¹ïŒ 穎ã®ãµã€ãºãå
¬å·®ãæ¿åãèªã¿åããèªç€Ÿã®å å·¥ããã»ã¹ãæ€èšããŸãããã®äžã§ãäœãææãšããã©ã®ãããªæé ã§å å·¥ããããšãããå·¥çšããçµã¿ç«ãŠãŸãã å質管çè
ã®èŠç¹ïŒ ããããã®æç€ºå
容ããèªç€Ÿã®æ©æã§ã©ã®ããã«è©äŸ¡ã»æ€åããããšãããæ€æ»ææ³ããèããŸãã ãã®ããã«ãå³é¢èªè§£ãšã¯ ãå³é¢å
ã®æççãªæ
å ±ãæŒããªãéããŠè¡éãåããèªã¿æã«ãšã£ãŠå¿
èŠãªã³ã³ããã¹ãã圢æããããšã ã ãšèšããŸãã ãŸããå®éã®å³é¢ã¯éåžžã«è€éã§ãã倧éã®ã©ãã«æ
å ±ãç¶²ã®ç®ã®ããã«ã€ãªãããã°ã©ãæ§é ããæã£ãŠããããã£ãäžã€ã®æ
å ±ãèŠèœãšãã ãã§çµæãå
šãç°ãªã£ãŠããŸããŸãããã®æ¥µããŠã·ãã¢ãªç²ŸåºŠãæ±ããããç¹ããå³é¢èªè§£ã¿ã¹ã¯ã®å€§ããªç¹åŸŽã§ãã LLMã䜿ã£ãå³é¢èªè§£æ€èšŒã人ã®ç®ãšåæ§ã®ããã»ã¹ã§ã¢ãããŒãããŠããŸããããªãã¡ãå³é¢ããæç€ºã«é¢é£ããèŠçŽ ãåãåºãïŒç»åèªèïŒããã®æççãªæ
å ±ã®è¡éãåããŠçè§£ãïŒã³ã³ããã¹ã圢æã»æšè«ïŒãæç€ºã«å¿ããåçãè¿ãïŒåºåçæïŒãšããããã»ã¹ã§ãã ããã§è©äŸ¡ãåé¡ã«ãªããŸããæçµåçã®è¯ãæªãã¯é¡§å®¢ããFBãåŸãã瀟å
ã®å°é人æã«é Œãããšã§åŸãããŸããããšã³ãžãã¢ãªã³ã°ãšããŠäœãåŸéã«ãªã£ãŠããŠã©ãæ¹åãããæ±ºããã«ã¯ãéçºè
ãåããã»ã¹ã®åºåãèªã¿è§£ããªããšã§ããŸãããã€ãŸãéçºè
ãå³é¢ãèªããªããšããã³ããã®è©äŸ¡ãã§ããªãã®ã§ãã è¶³ããªãç¥èã調ã¹ã€ã€è©äŸ¡åºæºãäœã£ããã®ã®ããšã³ããŠãŒã¶ãŒã®ãŠãŒã¹ã±ãŒã¹ã«æ²¿ã£ãäœéšãã©ãã»ã©å¿ å®ã«è©äŸ¡ã§ããŠãããèªä¿¡ãæã¡ã¥ãããšãã課é¡ã«é¥ã£ãŠããŸããã 察çïŒååçãªã€ã³ããããããèœåçãªæ§é å㞠察çãšããŠãŸã詊ããã®ã¯ãå°éæžãããã€ãèªãããšã§ããããã¯è§£å床ãäžãã广ã¯ãããŸããããç¹ã«æªç¥ã®æ
å ±ã§ã¯ç®ãæ»ã£ãŠããŸã£ãŠãç¹ãã®æ
å ±ããåŸããããèªèº«ã®æ€èšŒã«ãããŠäœç³»çãªè©äŸ¡ã»æ¹åã«ã€ãªãã广ã¯ããŸãæããããŸããã§ããã ããã§è³æ Œã®ååŸã«åãçµã¿ãŸãããæ°ããåŠç¿æ³ã®äžã§ããããŠè³æ Œè©Šéšãšãã圢ãåã£ãçç±ã¯ä»¥äžã®2ã€ã§ãã æèã®ãã¬ãŒãã³ã°ãšæ§é å æžç±ã§ã®åŠç¿ã¯ãäžæãªç¹ããããšèªã¿é£ã°ããŠããŸããã¡ã§ãããã®ç¹ãå顿Œç¿ã¯çްéšãŸã§èªã¿èŸŒãŸãªããšè§£ããªããããç¥èãæŒããªãã€ã³ãããã§ããŸãããŸããéå»åã§å埩æŒç¿ãç¹°ãè¿ãããšã§ãåãªãæèšã§ã¯ãªããæ§é çãªç¥èããšããŠå®çãããããšãçããŸããã 匷å¶åã«ããé«åŒ·åºŠãªåŠç¿ åºé¡ç· åçŽåã«ç³ã蟌ãããšã§ãèªåã«ãç· ãåã广ããšããé©åºŠãªè² è·ããããŸãããããã«ãããçæéã§éäžããŠã€ã³ãããã«åãçµãããšãã§ããŸããã åéšããã®ã¯ãæ©æ¢°èšèšæè¡è
詊éšïŒ3çŽïŒãã§ãèšèšè
ãäœãèããŠå³é¢ãæžãã®ãããã®èæ¯ç¥èãåã詊éšã§ãã3çŽãéžãã ã®ã¯å®åçµéšãäžèŠã ã£ãããã§ãã ãã®è©ŠéšãéããŠãå³é¢ã®æç€ºãæžãæ¹ã¯ãã¡ããããããå®çŸããå å·¥æ¹æ³ãéšåã®åœ¹å²ïŒåã®äŒéèšç®ãªã©ïŒãäœç³»çã«åŠã¹ãŸããããã®çµæãã補åããšãå³é¢ãããããŠãçç£æ¹æ³ããäžã€ã®ç¹ãããšããŠèªèã§ããããã«ãªã£ãã®ã倧ããªåç©«ã§ãããŸããç§ã¯ååŠç³»åºèº«ãªã®ã§ããã詊éšç¯å²ã«å°éåéãå«ãŸããŠãããããå
šãã®ãŒãããã§ã¯ãªããèªåã®ããã¯ã°ã©ãŠã³ããæŽ»ããã€ã€ã¹ã ãŒãºã«åŠç¿ãé²ããããšãã§ããŸããã ææïŒè§£å床ã®åäžãšå±äººæ§ã®æ¹å å³é¢ã®èŠãæ¹ãå€ãã£ã 察çãéããŠæãå€ãã£ãã®ã¯å³é¢ã®èŠãæ¹ã§ããå
ã
ã¯ç»åãšããŠã¿ãŠããã®ã§ããããœãããŠã§ã¢ã§ãããœãŒã¹ã³ãŒãã®ãããªæãæ¹ãããããã«ãªããŸãããäŸãã°å³é¢äžã®ç©Žã®èŠãæ¹ã以äžã®ããã«å€ãããŸããã ãããŸã§ïŒç©Žãšãã圢ç¶ãšããŠèŠã åéšåŸïŒç©Žã®åœ¢ãšå¯žæ³ã»äœçœ®é¢ä¿ã»é¢é£æç€ºãããå€åãã«ããéãããã®ç©Žã§ããããã颚ã«å å·¥ããŠã»ãããã ããããšãã®åœ¢ç¶ã®ç®çãšå å·¥æ¹æ³ãã€ã¡ãŒãžãã ç®çãããããšãããæºããããã®æ
å ±ãèã¥ãåŒã«ããããŸããäŸãã°ãã«ãçšã®ç©Žãªãããã»ã©å³ããå
¬å·®ã¯ãããªãã¯ãããšãã£ã圢ã§åæšéžæãã§ããŸããå®éã®å³é¢ã§ã¯æ§ã
ãªã³ã³ããã¹ããå
¥ãä¹±ããŠããã®ã§ããã®åæšéžæãã§ããããã«ãªãèªç¥äžå¯ãæ Œæ®µã«è»œæžããŸããã ãŸãå°éçšèªãçè§£ã§ããããã«ãªã£ãããšãè¯ãã£ãç¹ã§ããæ€çŽ¢ããŒã¯ãŒããã·ã£ãŒãã«ãªããæ±ããæ
å ±ãèŠã€ãããããªããŸãããç¹ã«LLMã«è³ªåããéã¯å°éçšèªã䜿ãããšã§ãã質åã«ç¹åããçããè¿ããŠãããããã«ãªããŸãããããã³ããã®æ¹åã«é¢ããŠã¯ä»¥äžã®èšäºã§ãŸãšããŠãŸãã®ã§ãããã°ã芧ãã ããã caddi.tech è©äŸ¡ããã»ã¹ã®æ¹å ãã®çµæãšããŠçãéããè©äŸ¡ããã»ã¹ãæ¹åããŸããã ãŸãè©äŸ¡ææšã®èšèšãæ¹åããŸããããŠãŒã¶ãŒäœéšãæ³åã§ããããã«ãªã£ãããšã§ææšãåé¡ã®åºæºãæç¢ºã«ãªããŸããã ãŸãããã³ãããæ¹åããŸãããäŸãã°äžå³ã®å³é¢ã®äžå¿ã®ç©Žã軞ãã¯ã蟌ã穎ãšããŠLLMãããŸãèªèã§ããŠããªãå Žåãã¯ãããå
¬å·®ãšããç¹æã®æç€ºããŸãæ¢ãããã«æç€ºããããšã§èŠèœãšããæžããªã©ãå
éšã®ããã»ã¹ã«èžã¿èŸŒãã 調æŽãå¯èœã«ãªã£ãŠããŸããã ããã«ãè©äŸ¡ããŒã¿äœæãåæ
ã§ããããã«ãªã£ãç¹ãå¬ããå€åã§ãããèªåãå³é¢èªè§£ããããã®ããŠããŠãããŒã ã«ã€ã³ã¹ããŒã«ããããšã§ãä»ã®äœæ¥è
ãšã®èªèãºã¬ãæžã£ãããåæ
ãããããªããããŒã ãšããŠããŒã¿äœæãé²ããããšãã§ããããã«ãªããŸããããããŸã§çްããªäŸå€ã±ãŒã¹ãããåãããªããé²ããå¿
èŠããã£ããšããããèãããšãå±äººæ§ãããªã軜æžãããšæããŠããŸãã ä»åŸã®ææŠ å®ã¯ãŸã ãŸã éåã°ã§ããäžè¬ç¥èã«é¢ããŠããŸã ãŸã æªç¥ã®é åãå€ãã§ãããæ¥çå¥ã®ç¥èãªã©ãããããæ·±ãŒããšããããããããããŸãã ãŸãããã®å³é¢èªè§£ã¿ã¹ã¯ã«ãããŠã¯ã³ã³ããã¹ããšã³ãžãã¢ãªã³ã°ãç¹ã«éèŠãšèããŠããŸãã ãã®çç±ã®äžã€ã¯ãæã
ãæ±ãããŒã¿ã¯ããããã®é¡§å®¢ãç¬èªã§ç®¡çããã¯ããŒãºããªããŒã¿ã§ããããšã§ããå瀟ã®ç¬èªã®ããŠããŠãçã蟌ãŸããŠããŠãäžè¬ç¥èã ãã§ã¯çè§£ã§ããªãããšãããããèšèŒãããŠããŸãããããã£ãŠå瀟ç¬èªã®ã³ã³ããã¹ããå
ã«å³é¢èšèŒãè§£éããå¿
èŠããããŸãã ãŸããã®èšäºã§æžããããšã¯åç¬ã®å³é¢ã®èªè§£ã§ãããå®éã®å³é¢ã¯æ§ã
ãªããã¥ã¡ã³ãã3DããŒã¿ãªã©ã®ããŸããŸãªãã¡ã€ã«ãä»ããŠãéåžžã«è€éãªã³ã³ããã¹ãã圢æãããŠããŸãããããã®ãã¡ã€ã«éã®ã³ã³ããã¹ããããŸãæ±ãå¿
èŠããããŸãã ããã«ãèªã¿æã®ã³ã³ããã¹ããéèŠã§ããåè¿°ããéããå³é¢ããèªã¿åãæ
å ±ã¯èªã¿æã«ãã£ãŠç°ãªããŸããLLMã§å³é¢èªè§£ããµããŒãããã«ã¯ã倿§ãªãŠãŒã¹ã±ãŒã¹ã«å¯ŸããŠå¿
èŠãªæ
å ±ãå¿
èŠãªã ãå±ãã工倫ãå¿
èŠã§ãã ãããã®ã³ã³ããã¹ããããŸãäŒããããšã§LLMã®å³é¢èªè§£æ§èœãåäžããåŸåãèŠããŠããŠããŸããããŸããŸãªæ¢æ±ã®äœå°ãããé¢çœãåéã ãšæã£ãŠããŸãã æåŸã« ããããªããä»è©äŸ¡ã§è¡ãè©°ãŸããæããŠãããªãããã¡ã€ã³ç¥èãæ·±ãŒãããšã§æŽ»è·¯ãèŠãããããããŸãããäžæ¬¡æ
å ±ã«è§ŠããŠçè§£ã§ãããšãã¯ã楜ããã®ã§ãå人çã«ã¯è³æ Œãåã£ãŠããã£ããšæããŠããŸããAIã䜿ã£ãæ°ããæ¥åããã»ã¹ã顧客ã«äœ¿ã£ãŠãããããã«ãããããæ©ã«é¡§å®¢ãšåãèŠç¹ã§è°è«ã§ãããšè¯ããªãšæã£ãŠããŸãã ãŸãããã£ãã£ã§ã¯äžèšã®ãããªèª²é¡ã«äžç·ã«åãçµãã§ããã ãã仲éãåéããŠããŸãã ææ§ãªè©äŸ¡ææšã«é ŒãPoCããè±åŽãããã æ¥çã®æ·±ãã³ã³ããã¹ãã«é£ã³èŸŒã¿ã顧客ãšäžç·ã«AIã§æ°ããåžžèãå®è£
ãããã ãããªæããæã€æ¹ããã²äžåºŠã話ãããŸãããã以äžãããå¿åãåŸ
ã¡ããŠããŸãã open.talentio.com
ããã«ã¡ã¯ããã£ãã£æ ªåŒäŒç€ŸAnalysis Platform Groupã§ããã¯ãšã³ããšã³ãžãã¢ãããŠããæ£®è°·( @yudmo_ )ã§ãã 2025幎11æã«ãžã§ã€ã³ããçŸåšã¯æ©æ¢°åŠç¿æšè«ã®ããã®ã€ã³ãã©ãããã¯ãšã³ãã®æ§ç¯ãéçšãæ
åœããŠããŸãã 2026幎1æ7æ¥ãã3æ¥éã«ãããéå¬ããã Regional Scrum Gathering Tokyo 2026 (以äžãRSGT)ã«ãä»å¹Žãå®è¡å§å¡ãšããŠåå ããŠããŸãããã¹ã¿ãããšããŠã®æŽ»åãã¡ã€ã³ã§ããããå°è±¡ã«æ®ã£ãã»ãã·ã§ã³ããRSGTãªãã§ã¯ã®äœéšããããŠã¹ã¿ããã¯ãŒã¯ãéããŠæããããšãæ¯ãè¿ããããšæããŸãã å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ïŒãèŠã¯ãã©ã³ã¹ããèŠæ¥µãã - ADRå®è·µã§ç®æãæè¡çåè¶ãžã®é ã¹ã¿ããæ¥åã®åéã«åå ããäžã§ãç¹ã«å¿ã«æ®ã£ãã®ããã®ã»ãã·ã§ã³ã§ãã å
¬éãããçºè¡šè³æã¯ ãã¡ã ã§ãã ãã®ã»ãã·ã§ã³ã§ã¯ãçæAIã«ã¯äžåããšãããADR(Architectural Decision Record)ã®äœæå®è·µãéããåŠã³ãå
±æãããŸãããåŒç€Ÿã®ãããã¯ãéçºã«ãããŠããADRãäœæãã¬ãã¥ãŒããããã»ã¹ããããŸããç§ãå人çã«é¢å¿ãæã£ãŠããã®ã¯ã"å°æ¥ã®èªåãã¡ãæææ±ºå®ãæ¯ãè¿ãéã«ããã«æçšãªææãæ®ããã"ãšããç¹ã§ãã å®ã¯ãå®è¡å§å¡ãšããŠã®ã»ãã·ã§ã³æ¡æäŒè°ã®æ®µéããâããã¯èããŠã¿ãããªâãšæšããŠããã»ãã·ã§ã³ã§ããããŸãããå
容ãæåŸ
éãã§ãADRã«å«ããã¹ãå
·äœçãªé
ç®ããé¥ããã¡ãªã¢ã³ããã¿ãŒã³ã®ç޹ä»ãªã©ãæ¥åã«æŽ»ãããããªç¥èŠãåŸãããšãã§ããŸããã RSGTã§ã¯ãããŒããŒããå«ããŠæ¡æãããã»ãã·ã§ã³ã¯åŸæ¥YouTubeã§å
¬éãããã®ã§ãèããªãã£ããã®ãèŠè¿ããããããŒã å
ã§åæèŠèŽäŒããããããªãããã»ãã·ã§ã³ããåŸãããåŠã³ãçµç¹ã§å
±æã§ããã°ãšæã£ãŠããŸãã åå è
ãšã®äº€æµãšOST RSGTã®ééå³ãšããã°ãDay3ã«è¡ãããOST(Open Space Technology)ãã¯ãããšãããã»ãã·ã§ã³æ 以å€ã§ã掻çºã«è¡ãããåå è
å士ã®å¯Ÿè©±ã§ãã å»äžã§ã®ç«ã¡è©±ãäŒæ©æéã®äº€æµã§ã¯ãçŸåšæå±ããŠããããŒã ã§âã¹ããªã³ãã¬ãã¥ãŒãéå¬ã§ããŠããªãããšâãžã®èª²é¡æã話ããŠã¿ãŸãããã¹ããŒã¯ãã«ããŒãããã£ãŒãããã¯ãããããéçºæ¹éãé©å®èª¿æŽããã®ãçæ³ã§ããããšã¯çè§£ãã€ã€ããé¢ä¿è
ãéããé£ãããããçšåºŠã®éçºå
容ããã§ã«æ±ºãŸã£ãŠããç¶æ³ããããä»ã¯ã¹ã¯ã©ã ã¬ã€ãéãã«é²ããããŠããŸããããããªäžã§ãâä»ã®éçºãããŸããã£ãŠããæå¿ãããããªããç¡çã«åœ¢åŒã«åœãŠã¯ããŠéå¬ããªããŠãè¯ãã®ã§ã¯ãªããâãšè©±ãããŸããããŸãã¯ãçŸç¶ã«å³ããŠã§ããããšããããšãããšããã§ã察話ãéããŠèª²é¡ãå
±æããªããäžæ©é²ãããšãã§ããããªãšæããŠããŸãã ãŸããDay3ã®OSTã§ããSREãPlatform Engineeringã«æºããã»ãã®åå è
ã®çãããšããã®é åã§ã©ã®ããã«ã¹ã¯ã©ã ãé©çšããŠãããã«ã€ããŠã®è°è«ã«åå ããŸããã15䞊åã§ã»ãã·ã§ã³ãè¡ãããäžãã¹ããªã³ããŽãŒã«ã®èšå®ãé£ãããšããã§ãã£ãããç·æ¥ã®å¯Ÿå¿ãªã©ã§ã¹ããªã³ããäžæããããããšãã£ãæ©ã¿ã次ã
ãšäžãããåããããªèª²é¡ãæ±ããŠãããã ãªãšå
±æãããšããããããŸãããçŸå®ã®é£ãããåãå
¥ãã€ã€ããå°ããã€æ¹åããŠããããã®ã¢ã€ãã¢ãåºãåããã®ããéåžžã«ææçŸ©ãªè°è«ã®æéãšãªããŸããã ç§ã¯ä»åã§10åç®ã®RSGTã®åå ãšãªããŸããããåœå
å€ã®ã¹ã¯ã©ã å®è·µè
ãéãŸã£ãŠãäºãã«èããå
±æããâå ŽâãšããŠãåçååã®è©±ã ãã§ãªããå®éã®çŸç¶ãšå®æ
ãå
ã«æèŠäº€æãã§ããããšã«å¯ŸããŠãæ¹ããŠåå ããã¡ãªãããæããŸããã ã¹ã¯ã©ã ãäœçŸããã¹ã¿ããã¯ãŒã¯ æåŸã«ãå®è¡å§å¡ãšããŠã®ãµããããã§ããRSGTã®éå¶ã¯ãå®è¡å§å¡ãå«ããã¹ãŠãã©ã³ãã£ã¢ã§æ§æãããŠããŸããä»åã¯ãå®è¡å§å¡ã«å ããŠã2åç®ä»¥äžã®ãã©ã³ãã£ã¢åå ãšãªãã¹ã¿ããã®ã¿ã§éå¶ããŠããŠãããŒã ãšããŠã®ç·ŽåºŠã®é«ããšèªåŸçãªåããéåžžã«å°è±¡çã§ããã ä»å¹Žã¯äŒå Žå€æŽãšãã倧ããªå€åããããåœæ¥ã«ãªã£ãŠåããŠæ°ã¥ã課é¡ãå€ããããŸããããã®ãããªç¶æ³äžã§ããæç€ºãããã®ãåŸ
ã€ã®ã§ã¯ãªããããããã®ã¹ã¿ãããã«ã³ãã¡ã¬ã³ã¹ãæåãããããã«äœãå¿
èŠãã倿ããŠåãæ§åã¯ãçæ³çãªã¹ã¯ã©ã ããŒã ãäœçŸããŠããããã ã£ããªãšæããŠããŸããã§ããããšã¯ãã£ãŠã¿ããã§ããªãããšã¯æ¥å¹Žæ¹åããããšããå²ãåããå«ããŠãããŒã å
šäœã§ã§ããããšã«éäžããRSGTãšããäœéšãç¡äºã«æäŸã§ããã®ã§ã¯ãªãããšæããŠããŸãã ãããã« ä»åãå®è¡å§å¡ãšããŠåå ããããšã§ãåã«ã»ãã·ã§ã³ãèŽè¬ããããšä»¥äžã«ãRSGTãšããâå Žâãã®ãã®ãçãããšäœãäžããäœéšãã§ããŸããã æåŸã«ãªããŸãããã話ãããã ããã¹ããŒã«ãŒãæ¯ããŠãã ãã£ãã¹ãã³ãµãŒãã¹ã¿ããããŒã ããããŠäŒå ŽãçãäžããŠãããåå è
ã®çãããæ¬åœã«ããããšãããããŸããã çŸåšãç§ã®æå±ãããã£ãã£ã®ããŒã ãéåžžã«ã³ãã¥ãã±ãŒã·ã§ã³ã掻çºã§è¯ãç¶æ
ã«ãããŸããä»åã®ã€ãã³ããéããŠåŸãããç¥èŠããã¹ã¿ããã¯ãŒã¯ãéããŠèã§æããâããŒã ãèªåŸçã«åããçç±âãèªåãªãã«èšèªåããçµç¹ã®ç®æšéæã«åããŠæ¥ã
ã®æ¥åã«éå
ããŠãããããšæããŸããåå ã¬ããŒããšããŠã ãã§ãªããåŸããããšãã«ã®ãŒãããšã«ãããè¯ããããã¯ãã¥ããã«ç¹ããŠããããã§ãã
Analysis Platform éšã®æŸïšã§ãã ãã㯠ãã£ãã£æ ªåŒäŒç€Ÿã®ã¢ããã³ãã«ã¬ã³ã㌠25 æ¥ç®ã®èšäºã§ãã CADDi ã§ã¯ãæ©æ¢°åŠç¿ã¯ãŒã¯ããŒãã«ãããè€éãªåŸåŠçïŒPythonã¹ã¯ãªããçïŒã®å®è¡åºç€ãšããŠãã¯ãŒã¯ãããŒãšã³ãžã³ã® Kestra ãæ¡çšããŸããã æ§ã
ãªãšã³ãžã³ãšæ¯èŒæ€èšããçµæãæã
ã®ãŠãŒã¹ã±ãŒã¹ã«ãšã£ãŠãã¹ããªéžæã ã£ããšæããŸãã ããããå®éã«éçºãå§ããŠã¿ããšãéçºå
ã§ãã Kestra ç€Ÿã®ææ³ããšãæã
ãããããéçšãã®éã«ãå°ãã ãæºãããããšã«æ°ã¥ããŸãããä»åã¯ãæã
ããã®æºãã©ããã£ãŠåããKestra ãšä»ãåã£ãŠãã£ãŠããããã玹ä»ããŸãã æ¹åæ§ã®éããæãæããã®ã¯ãFlowïŒã¯ãŒã¯ãããŒå®çŸ©ïŒã File ã®ç»é²ã«é¢ããã€ã³ã¿ãŒãã§ãŒã¹ã§ããKestra ã¯éåžžã«åªãã UI ãæã£ãŠãããUI äžã§ YAML ãæèããã« Flow ãå®çŸ©ããããšãã§ããŸãããã®å©ç¹ã¯çãããªãæã¯ãªããAPI èšèšããã® UI æäœã«æé©åãããŠããå°è±¡ãåããŸãã äžæ¹ã§ãæã
éçºããŒã ã«ã¯ãå¯èœãªéããã¹ãŠãã³ãŒãããŒã¹ã§ç®¡çãããããšããæãããããŸãããããå
·äœçã«æžã衚ããš GitHub äžã§ã³ãŒãã管çãã倿Žå±¥æŽãæ®ããã Pull Request ããŒã¹ã§ã¬ãã¥ãŒãè¡ããã ããŒãžãããã CI/CD ã§èªåãããã€ããã ãšããããšã«ãªããŸãããã®ã¢ãããŒãããšãããšããæãKestra æšæºã® API ã€ã³ã¿ãŒãã§ãŒã¹ã§ã¯äžå·¥å€«ãå¿
èŠã§ããã Kestra ã§ã¯äžã€ã®åŠçåäœã Flow ãšåŒã³ãYAML ã§èšè¿°ããŸãã æã
ãšããŠã¯ããã® YAML ãã¡ã€ã«ã Git ãªããžããªã§ç®¡çããCI ãã API çµç±ã§ç»é²ããããšèããŸãããããããKestra ã® API 㯠UI ã§ã®æäœãæèããŠãã1ã€ã® Flow ãåå¥ã«ç»é²ãããããšãæšå¥šãããŠãããããªèšèšã«ãªã£ãŠããŸããäžæ¬ç»é²ãçšæãããŠã¯ããŸããããè€æ°ã® Flow å®çŸ©ã 1 ã€ã®ãã¡ã€ã«ã«ããŒãžãããŠããç¶æ
ããåãåããã®ã§ããã ãªããžããªäžã§ã¯å¯èªæ§ãé«ããããã«ã1 Flow = 1 ãã¡ã€ã«ãã§ç®¡çãããã®ã§ãããAPI ã¯ããŸãšãŸã£ã 1 ã€ã®ãã¡ã€ã«ãã§ããããšãæ±ããããŠããŸã£ãŠããç¶æ
ã§ããå°å³ãªããã§ãããéçºäœéšäžæ©ãŸãã課é¡ã§ãããããã§æã
ã¯ãKestra ã®ä»æ§ã«åããã€ã€ãèªåãã¡ã®éçºäœéšãæãªããªãããã®ãããã€ã¹ã¯ãªãããèªäœããããšã«ããŸããã ã¢ãããŒãã¯ä»¥äžã®éãã§ãã YAML ãã¡ã€ã«ã¯ 1 Flow = 1 ãã¡ã€ã« ã§äœæããããããã¬ãã¥ãŒãè¡ãã ã³ãããæã« Lint ããããæ§æãšã©ãŒãé²ãã ãããã€æã«ã¹ã¯ãªããã§å
š YAML ããKestra ã奜ã 1 ã€ã®ãã¡ã€ã«åœ¢åŒãã«çµåããã çµåããããŒã¿ã Kestra ã® Bulk API ã§ç»é²ãããåé€ãªãã·ã§ã³ãã€ããäžèŠãª Flow ã®åé€ãå¯èœã«ããã ããã«ãããéçºè
㯠Kestra ã®å
éšä»æ§ã API ãæèããããšãªããæ®æ®µéãã® Git ãããŒã§éçºãé²ããããšãã§ããããã«ãªããŸãããå®éã« CI/CD ã§åãããŠãã Python ã¹ã¯ãªããã®ããžãã¯ã¯ãæŠã以äžã®ãããªåœ¢ã«ãªã£ãŠããŸãã ïŒè©³çްã¯é èœããŠããŸãããåŠçã®æµãã®ã€ã¡ãŒãžã§ãïŒ def main (): # 1. ã³ãã³ãã©ã€ã³åŒæ°ã®ååŸ # (察象ãã£ã¬ã¯ããª, Kestra URL, 察象Namespace, åé€ãã©ã°, ãã¡ã€ã«åæãã©ã°ãªã©) config = parse_arguments() # 2. ãããŒã®åæãå®è¡ sync_flows(config) def sync_flows (config): """ ãããŒå®çŸ©ã®åæåŠç """ # æå®ãã£ã¬ã¯ããªãã察象ãšãªãåå空é(ãã£ã¬ã¯ããª)ã®ãªã¹ããååŸ target_namespaces = get_namespace_list(config.flows_dir, config.target_namespace) logger.info(f "{len(target_namespaces)} åã®åå空éã«ã€ããŠãããŒãåæããŸã" ) for namespace in target_namespaces: # A. ãã®åå空éå
ã®YAMLãã¡ã€ã«ãå
šãŠåé yaml_files = collect_yaml_files(namespace) # B. è€æ°ã®YAMLã1ã€ã®ãªã¯ãšã¹ãçšã«ããŒãž (--- åºåããªã©) merged_flow_content = merge_yamls(yaml_files) # C. Kestra API ãžéä¿¡ (PUT/POST) # delete_flow=True ã®å Žåãããã«å«ãŸããªãæ¢åãããŒã¯åé€ããã api_client.push_flows( namespace=namespace, content=merged_flow_content, delete_others=config.delete_flow ) if __name__ == "__main__" : main() ãã®ã¹ã¯ãªããã CI ã«çµã¿èŸŒãããšã§ãéçºè
㯠GitHub ã« Push ããã ãã§ Kestra ç°å¢ãåæãããéçºç°å¢ãå®çŸã§ããŸããã æšä»ã®ãœãããŠã§ã¢éçºã«ãã㊠OSS ã®æŽ»çšã¯äžå¯æ¬ ã§ãããããŒã«ã®ææ³ãšèªåãã¡ã®ããããããšã 100% äžèŽããããšã¯çšã§ãããã¡ãããæ¬å®¶ã« Pull Request ãéã£ãŠæ¹åã§ããã°ãã¹ãã§ããããããåæ ãããã®ãåŸ
ã£ãŠãããšããžãã¹ãæ¢ãŸã£ãŠããŸãããšããããŸãã ãããªæã¯ãã䜿ãã«ããããšè«Šããã®ã§ã¯ãªããä»åã®ããã«ãèªåãã¡ã®çæ³ãšã®å·®åããšã³ãžãã¢ãªã³ã°ã§åããããšããã¢ãããŒãããäžã€ã®è§£ã ãšæã£ãŠããŸãã Kestra ã¯ã¯ã»ããããŸãããæã
ã«ã¯å¿
èŠäžå¯æ¬ ãªæè¡ã§ãããã®èšäºããKestra ãä»ã®ããŒã«å°å
¥ã§æ©ãã§ããæ¹ã®ãã³ãã«ãªãã°å¹žãã§ãã
ããã«ã¡ã¯ãAnalysis PlatformããŒã ã®äžéã§ãã ãã£ãã£æ ªåŒäŒç€Ÿã®ã¢ããã³ãã«ã¬ã³ã㌠24æ¥ç®ã®èšäºã§ãã ãã®èšäºã§ã¯Analysis PlatformããŒã ã§å®æœãããæ©æ¢°åŠç¿ã¢ãã«ã®è€éãªåŸåŠçã®å®è¡åºç€ã®æè¡éžå®ã«ã€ããŠèª¬æããŸããåæ§ã®æè¡éžå®ãããéã®åèã«ãªããšå¹žãã§ãã æ¢åã®ã¢ãŒããã¯ãã£ãšãã®èª²é¡ ãã£ãã£ã§ã¯äžéšã®æ©æ¢°åŠç¿ã¢ãã«ã®æšè«åŠçã以äžã®ãããªéåæã®ã¢ãŒããã¯ãã£ã§è¡ãªã£ãŠããŸããäžéšã®æšè«ã¯ãŒã«ãŒã§ã¯ä»ã®ã¯ãŒã«ãŒã®çµæãšçµã¿åãããŠåŸåŠçãããå¿
èŠããããã¯ãŒã«ãŒããšã®æšè«çµæãæ ŒçŽããBigQueryã®ããŒãã«ãäžåºŠçµç±ãã圢ã«ãªã£ãŠããŸãã æšè«ã¯ãŒã«ãŒãåŠçããçµæãGoogle Cloud Pub/SubïŒä»¥éPub/SubãšåŒã¶ïŒã«ãããªãã·ã¥ããã Pub/SubããBigQueryã«çµæãæ ŒçŽããã BigQueryã«æ ŒçŽãããããŒã¿ãåŸåŠçãããã®ãæçµçãªçµæãšããŠå¥ã®ããŒãã«ã«æ ŒçŽããã 詳现ã¯çããŸããããã®ä»çµã¿ã«ã¯ä»¥äžã®ãããªèª²é¡ããã£ããããåŸåŠçãè¡ãã·ã¹ãã ãå¥ã®ä»çµã¿ã§çœ®ãæããããšã«ãªããŸããã æçµçãªããŒã¿å質ã®å¯èŠåã®ä»çµã¿ãäžååã§ãä»ã®ã·ã¹ãã ããã®å©çšã«ããŒãã«ãããã è€éãªåŸåŠçããžãã¯ãSQLã§èšè¿°ãããŠãããæ°èŠéçºã»ã¡ã³ããã³ã¹ãè€éã§éçºãéçšå·¥æ°ãé«ããªãã æè¡éžå® äžèšã®ãããªèª²é¡ã解決ããããã«ã倧ãŸãã«ä»¥äžã®èŠä»¶ãæºããèšèšãè¡ãããšã«ããŸããã èŠä»¶1: ããŒã¿å質ãç£èŠãå¯èŠåã§ããããšã ããã§ã¯ç¹ã«è§£æçµæããšã©ãŒçã§ã©ã®çšåºŠæ¬ æããŠããããããŒã¿å質ãšããèšèã§è¡šçŸããŠããŸãããã®èšäºã§ã¯ä»¥éã§ãåæ§ã®æå³ã§ããŒã¿å質ãšããèšèã䜿çšããŸãã èŠä»¶2: æ©æ¢°åŠç¿ãšã³ãžãã¢ãåŸåŠçã容æã«éçºãä¿å®ã§ããããšã çŸåšã®ä»çµã¿ã眮ãæããããã ãã§ã¯ãªããå°æ¥çã«ããè€éãªåŸåŠçãè§£æãããŒãå®è£
ããããªã£ãéã«ãããããµããŒãã§ãããšããè¯ãã ããããšããèãããããŸããã èŠä»¶3: è€æ°ã®è§£æã¯ãŒã«ãŒã®åºåãå°çããã®ãåŸ
æ©ããŠåŸåŠçãéå§ã§ããããšã äºã€ç®ã®èŠä»¶ã§ããè€éãªåŸåŠçãè§£æãããŒã®å®è£
ã«ã¯ã¯ãŒã¯ãããŒãšã³ãžã³ãæ¡çšããã®ãé©åã§ãããšèãã以äžã®ã¯ãŒã¯ãããŒãšã³ãžã³ããéžå®ããããšã«ããŸããã Temporal Kestra Google Cloud WorkflowsïŒä»¥éCloud WorkflowsãšåŒã¶ïŒ Argo Workflows ãã ãCloud WorkflowsãšArgo Workflowsã¯ãããã以äžã®ç¹ããæ©ãæ®µéã§æ€èšå¯Ÿè±¡ããå€ããŸããã Cloud Workflows: è€éãªåŠçã§ã¯åºæ¬çã«å€éšAPIãåŒã³åºã圢ã«ãªãã®ã§ãåŸåŠçAPIãå¥ã§çšæããå¿
èŠãããã远å ã®å·¥æ°ããããã Argo Workflows: ãã§ã«ä»ããŒã ã§éçšå®çžŸãããããéçšã«å°éããŒã ãå¿
èŠã§ããéçšå·¥æ°ãé«ããã TemporalãšKestraãããããèŠä»¶ãæºããããã©ãããå®éã«å°ãè§Šã£ãŠã¿ãŠæ¯èŒããŠã¿ãŸãããçµæã®æŠèŠã以äžã«ç€ºããŸããæ©èœçã«ã¯ã©ã¡ããåé¡ãªãã£ãã®ã§ãããTemporalã¯Kestraãšæ¯èŒããŠå°ãåŠç¿ã³ã¹ããé«ãããªãšããå°è±¡ãåããŸããã èŠä»¶1 èŠä»¶2 èŠä»¶3 Temporal âïž ðº âïž Kestra âïž âïž âïž Temporal Temporalã¯äžã€ã®èŠä»¶ã®ãã¡äºã€ã¯å¯Ÿå¿å¯èœã§ããããäžã€ã¯Kestraãšæ¯ã¹ãŠå£ããšããçµæã«ãªããŸããã ãŸãããããŒã¿å質ãç£èŠãå¯èŠåã§ããããšãã«ã€ããŠã§ãããããã¯ãã°ãªã©ãé©åã«ä»èŸŒãããšã§åé¡ãªãèŠä»¶ãæºããããšãã§ãããšèããããŸãããŸããå®è¡äžã®Workflowã«å¯ŸããŠã¡ãã»ãŒãžãéãããšã®ã§ãã Signalæ©èœ ã䜿çšããã°ä»¥äžã®ããã«è€æ°ã®è§£æã¯ãŒã«ãŒã®åºåã®å°çãåŸ
ã£ãŠåŠçãéå§ã§ããã®ã§ããã¡ãã®èŠä»¶ãæºããããã§ãã ãŸãã¯çµæãåãåãåŽã®ã¯ãŒã¯ãããŒãå®çŸ©ããŸãã以äžã®ããã«Signalæ©èœãçšããŠçµæãåãåãããã®é¢æ°ãšãå®éã«ã¯ãŒã¯ãããŒã®å®è¡äžã«çµæãåŸ
æ©ããåŠçãæžãããšã§çµæã®åŸ
æ©ãã§ããŸãã @ workflow.defn class AnalysisWorkflow : ... # Signalæ©èœã䜿ã£ãŠçµæãåãåã @ workflow.signal def analysis_data_available (self, request: AnalysisRequest) -> None : ... self._received_analysis_data[request.analysis_type] = request # ã¯ãŒã¯ãããŒãšããŠå®è¡ãããåŠç @ workflow.run async def run (self, workflow_input: AnalysisWorkflowInput) -> dict [ str , Any]: ... # å¿
èŠãªããŒã¿ãæããŸã§åŸ
æ© expected_types = set (AnalysisType.__members__.values()) await workflow.wait_condition( lambda : set (self._received_analysis_data.keys()) == expected_types, timeout=timedelta(minutes= 10 ), # 10åã®ã¿ã€ã ã¢ãŠã ) ... Signalãéä¿¡ããåŽã§ã¯ Signal-With-Start ã®æ©èœãçšããŠä»¥äžã®ããã«Signalãéä¿¡ã§ããŸããã¯ãŒã¯ãããŒãèµ·åããŠããå Žåã¯Signalãéä¿¡ããèµ·åããŠããªãå Žåã¯èµ·åããŠSignalãéä¿¡ã§ããŸãã await self.client.start_workflow( AnalysisWorkflow.run, AnalysisWorkflowInput( job_id=request.job_id, tenant_id=request.tenant_id ), id =workflow_id, task_queue=activity.info().task_queue, start_signal= "analysis_data_available" , start_signal_args=[request], ) äžæ¹ã§ãå®è£
ã®éã«ã¯Temporalç¹æã®æŠå¿µãåŠã¶å¿
èŠããããåŸè¿°ã®Kestraãšæ¯èŒãããšåŠç¿ã³ã¹ããé«ãããã«æããããŸãããåŠç¿ã³ã¹ããé«ããšå®è£
ã®ãµããŒããã¬ãã¥ãŒã®å·¥æ°ãé«ããªãå¯èœæ§ããããä¿å®éçšãæ©èœéçºã®å·¥æ°ãå§è¿«ããæžå¿µããããŸããã Kestra Kestraã¯äžã€ã®èŠä»¶å
šãŠã«å¯Ÿå¿å¯èœã§ããã ããŒã¿å質ã®ç£èŠã»å¯èŠåã¯Temporalãšåæ§ã«å¯èœã§ãããŸããã¯ãŒã¯ãããŒã®å®çŸ©ã¯YAMLã§èšèŒã§ããGitHub Actionsçã«æ
£ããŠããã°åŠç¿ã³ã¹ãã¯ãããŸã§é«ããªãããã§ããããã«ãè€æ°ã¯ãŒã«ãŒã®åºåã®å°çã®åŸ
æ©ã KV Store ãçšããŠä»¥äžã®ããã«æ¬äŒŒçã«å®è£
å¯èœã§ãã ãŸãã¯Pub/Subããçµæãåãåã£ãŠKV Storeã«æ ŒçŽããã¯ãŒã¯ãããŒãçšæããŠã以äžã®ãããªã¹ãããã§KV Storeã«æžã蟌ã¿ãè¡ããŸãã ... - id : set_kv type : io.kestra.plugin.core.kv.Set namespace: demo description: è§£æçµæãKVã¹ãã¢ã«ä¿å key: "{{trigger.body.job_id}}.{{trigger.body.analysis_type}}" value: "{{trigger.body}}" overwrite: true kvType: JSON ttl: PT24H # 24æéã®æå¹æé ... 次ã«ãçµæãå©çšããã¯ãŒã¯ãããŒãå¥ã§çšæããããã§KV Storeããçµæãèªã¿åã圢ã«ããŸãã errorOnMissing: true ãšããããšã§ãKV Storeã«å¯Ÿè±¡ã®ããŒãååšããªãå Žåã¯ãªãã©ã€ãããçµæãäžå®æéåŸ
æ©ãããããªæåãå®çŸã§ããŸãã ... - id : get_analysis_results type : io.kestra.plugin.core.flow.ForEach values: "{{ inputs.required_analysis_types }}" tasks: - id : get_kv type : io.kestra.plugin.core.kv.Get key: "{{ trigger.body.job_id }}.{{ taskrun.value }}" errorOnMissing: true retry: type : exponential interval: PT10S maxInterval: PT10M maxDuration: PT12H ... çµè« æçµçã«Kestraãæ¡çšããããšã«ãªããŸãããTemporalãšæ¯èŒãããšåŠç¿ã³ã¹ããäœããéçºãéçšã³ã¹ããæããããããªç¹ãéèŠããŸãããçµæãåãåã£ãŠKV Storeã«æ ŒçŽããéšåã¯å®è£
ãå¿
èŠã«ãªããŸããããã®ä»çµã¿ãæã
ã®ããŒã ã§å®è£
ããããšã§åŸåŠçããžãã¯ã®å®è£
ã®è² æ
ãå¢ããããšãªãèŠä»¶ãæºããããã§ãã èšèš äœè«ã§ãããKestraãçšããŠåŸåŠçã眮ãæããåŸã®ã¢ãŒããã¯ãã£ã¯ä»¥äžã®ããã«ãªããŸãããããã«ãããçµæãåããŸãšããããã«çšããŠããäžéããŒãã«ãäžèŠã«ãªã£ãããPythonã§åŸåŠçããžãã¯ãèšèŒã§ããããã«ãªããªã©ãããŒã¿ãããžãã¯ã®åãæ±ããã·ã³ãã«ã«ãªããŸãã ã¡ãªã¿ã«Kestraã«ã¯ Cloudç ãååšããŸãããéçºéå§æç¹ã§ã¯Alphaçã ã£ãããã瀟å
ã«ååšããGKEã¯ã©ã¹ã¿ã«OSSçãã»ã«ããã¹ãããããšã«ããŸããã ãããã« ãã®èšäºã§ã¯ãã£ãã£ã«ãããæ©æ¢°åŠç¿ã¢ãã«ã®åŸåŠçã®çŸç¶ãšèª²é¡åã³ããã解決ããããã®æè¡éžå®ã«ã€ããŠèª¬æããŸããããã®èšäºãåæ§ã®æè¡éžå®ãè¡ãéã®åèã«ãªãã°å¹žãã§ãã
ãã®èšäºã¯ã CADDi Tech/Product Advent Calendar 2025 ã®23æ¥ç®ã®èšäºã§ãã DataManagementããŒã ã®çŠç°ã§ããåŒç€Ÿã§ã¯CTOãšå
±ã«æ©å¯ããŒã¿ã®åãæ±ããæ±ºå®ãããã®æ¹éãBigQuery Policy TagsãšDataContractã§èªåçã«åæ ããäœå¶ãæ§ç¯ããŠããŸããä»åã¯çŽ15,000ã«ã©ã 以äžã®ããŒã¿ã§å®è·µããçµå¶å±€ãå·»ã蟌ãã ããŒã¿ã¬ããã³ã¹ã®ä»çµã¿ã解説ããŸãã ã¯ããã« äŒæ¥åãSaaSã§ã¯ã顧客ããŒã¿ã«å¯ŸããŠéåžžããã峿 Œãªã¢ã¯ã»ã¹å¶åŸ¡ãæ±ããããŸãã äŸãã°ãæ©å¯æ§ã®é«ãããŒã¿ãäžè¬ã®ç€Ÿå¡ã«ã¯é²èЧããããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«ãããŠã®ã¿éå®ãããã°ã«ãŒãã®ã¿ãã¢ã¯ã»ã¹ã§ããããã«ããå¿
èŠããããŸãã ãã®ãããªèŠä»¶ã«å¯ŸããŠãBigQueryã® Policy Tags ãš Data Masking Policy ãæŽ»çšããããšã§ãã¯ãšãªæã«ééçãªãã¹ãã³ã°ãå®çŸã§ããŸããããã«DataContractã§æ©å¯æ§ã宣èšçã«ç®¡çããããšã§ããçšåºŠã®èªååãšç£æ»å¯èœæ§ãäž¡ç«ããåºç€ãæ§ç¯ããŸããã BigQueryã®Policy Tagsæ©èœ Policy Tagsãšã¯ BigQueryã®Policy Tagsã¯ãã«ã©ã ã¬ãã«ã§ã¢ã¯ã»ã¹å¶åŸ¡ãšããŒã¿ãã¹ãã³ã°ãå®çŸããGAæ©èœã§ããTaxonomyãäœæãããã®äžã«Policy Tagãå®çŸ©ããŸããPolicy Tagã«Data Masking PolicyãçŽä»ããããŒãã«ã®ã«ã©ã ã«é©çšããããšã§ãIAMæš©éã«å¿ããŠèªåçã«ããŒã¿ããã¹ãã³ã°ã§ããŸãã ééçãã¹ãã³ã°ã®ä»çµã¿ Policy Tagsã®æå€§ã®ç¹åŸŽã¯ã åãããŒãã«ã«åãã¯ãšãªãå®è¡ããŠãããŠãŒã¶ãŒã®æš©éã«ãã£ãŠè¿ãããããŒã¿ãèªåçã«å€ãã ããšã§ãããã¹ãã³ã°ãã¥ãŒãå¥éäœæããå¿
èŠã¯ãããŸãã å
·äœäŸïŒé¡§å®¢é£çµ¡å
ããŒãã«ãžã®ã¯ãšãª ãã®äŸã§ã¯ã email ãš phone ã«ã©ã ã«Policy Tagãé©çšãããŠããã customer_name ã¯éæ©å¯ã«ã©ã ãšããŠæ±ãããŠããŸãã -- ç¹æš©ã°ã«ãŒãã®ãŠãŒã¶ãŒãäžè¬ãŠãŒã¶ãŒããåãSQLãå®è¡ SELECT customer_name, email, phone FROM `my-project.customer_data.customer_contacts` WHERE customer_id = 12345 ç¹æš©ã°ã«ãŒãã®ãŠãŒã¶ãŒïŒ roles/datacatalog.categoryFineGrainedReader æš©éããïŒïŒ customer_name email phone ç°äžå€ªé tanaka-example@caddi.com 03-1234-5678 äžè¬ãŠãŒã¶ãŒïŒæš©éãªãïŒïŒ customer_name email phone ç°äžå€ªé ************************ ************ customer_name ã¯éæ©å¯ã«ã©ã ã®ããäž¡ã°ã«ãŒããšã衚瀺ãããŸããã email ãš phone ã¯æ©å¯ã«ã©ã ãšããŠãã¹ãã³ã°ãããŸãããã®ããã«ã ã«ã©ã åäœ ã§çްããã¢ã¯ã»ã¹å¶åŸ¡ãèšå®ã§ããŸãã ããŒãã«ã¹ããŒããžã®Policy Tagsé©çš Policy TagsãããŒãã«ã®ã«ã©ã ã«é©çšããã«ã¯ãBigQueryã®ã¹ããŒãå®çŸ©ã«Policy Tag IDã远å ããŸãã Terraform ã§ã®èšå®äŸïŒ resource "google_bigquery_table" "customer_contacts" { dataset_id = "customer_data" table_id = "customer_contacts" schema = jsonencode ( [ { name = "customer_id" type = "STRING" mode = "REQUIRED" } , { name = "customer_name" type = "STRING" # Policy TagãªãïŒéæ©å¯ã«ã©ã ïŒ } , { name = "email" type = "STRING" policyTags = { names = [ google_data_catalog_policy_tag.confidential.name ] } } , { name = "phone" type = "STRING" policyTags = { names = [ google_data_catalog_policy_tag.confidential.name ] } } ] ) } ãã®ããã«ãæ©å¯æ§ã¬ãã«ã«å¿ã㊠äžéšã®ã«ã©ã ã«ã®ã¿Policy Tagsãé©çš ããããšã§ãæè»ãªã¢ã¯ã»ã¹å¶åŸ¡ãå¯èœã«ãªããŸãã CADDiã«ãããããŒã¿ã¬ããã³ã¹äœå¶ åŒç€Ÿã§ã¯ãæ©å¯ããŒã¿ã®åãæ±ãã«é¢ããæææ±ºå®ãCTOãšå
±ã«è¡ã£ãŠããŸããããã§æ±ºå®ãããã©ã®ããŒã¿ã誰ãã©ã®ãããªæ¡ä»¶ã§ã¢ã¯ã»ã¹ã§ãããã«ã€ããŠäŒç€Ÿçµç¹å
šäœãšåæåœ¢æãè¡ã£ãŠããŸãã ãã®äœå¶ã«ãããæè¡çãªå®è£
ã ãã§ãªããããžãã¹èŠä»¶ãšã»ãã¥ãªãã£èŠä»¶ãäž¡ç«ãããæææ±ºå®ãå¯èœã«ãªã£ãŠããŸããç¹ã«é¡§å®¢ããŒã¿ãé ããSaaSäŒæ¥ãšããŠãããŒã¿ã®åãæ±ãã«ã€ããŠçµå¶å±€ãå·»ã蟌ãã ã¬ããã³ã¹ã¯äžå¯æ¬ ã§ãã ããŒã¿ã¬ããã³ã¹ã®ããã»ã¹ æ©å¯æ§åé¡ã®æ±ºå®ããæè¡çãªé©çšãŸã§ã以äžã®ããã»ã¹ã§éçšããŠããŸãïŒ ããŒã¿ã¬ããã³ã¹å§å¡äŒã§åæ : CTOã»ããŒã¿ãªãŒããŒãåå ããæ©å¯æ§åé¡ã«ã€ããŠè°è«ã»æ±ºå® Spreadsheetã§ç®¡ç : å
šã«ã©ã ã®æ©å¯æ§ã¬ãã«ã管ç DataContractã§ã³ãŒãå : CIã§SpreadsheetããDataContract YAMLãèªåçæãGitç®¡ç æ§ã
ãªçšéã«èªååæ : Policy TagsãããŒã¿ã«ã¿ãã°ãªã©è€æ°ã®çšéã«å±é å€§èŠæš¡éçšã«ããã課é¡ãšDataContractã®å¿
èŠæ§ å€§èŠæš¡ãªããŒã¿åºç€ã§æåéçšãããšãå
šãŠã®æ©å¯ã«ã©ã ã«å¯ŸããŠTerraformã§1ã€ãã€èšå®ããå¿
èŠããããèšå®ãã¹ã®ãªã¹ã¯ãé«ããªããŸããããã¯ãã¹ã¿ãšãªãã¹ãã¬ããã·ãŒããçšæããã¹ã¯ãªãããªã©ã§TerraformåãJSONãçæãããšããéžæè¢ãèããããŸããããããæã
ã®ããŒã ã§ã¯ DataContractãäžéå±€ãšããŠæã ã¢ãããŒããéžæããŸããã DataContractãšã¯ DataContractã¯ãããŒã¿ã®ãå¥çŽæžããšããŠãã¹ããŒãã ãã§ãªããããŒã¿åè³ªãæ©å¯æ§ãæææš©ãªã©ã®ã¡ã¿ããŒã¿ãã³ãŒãã§ç®¡çããä»çµã¿ã§ããããŒã¿ãªãŒããŒãããã®ã«ã©ã ã¯ã©ã®ããã«æ±ãã¹ãããã宣èšçã«å®çŸ©ããŸãã DataContractã®åºæ¬æ§é : dataContractSpecification : 1.2.0 id : company.customers models : customers : description : 顧客ãã¹ã¿ fields : customer_id : type : string description : 顧客ID quality : - type : not_null - type : unique email : type : string description : ã¡ãŒã«ã¢ãã¬ã¹ confidentials : classification : 'pii' # å人æ
å ±ãšããŠåé¡ Data Contract CLIãšã¯ cli.datacontract.com DataContractã®äœæã»ç®¡çã»æŽ»çšãæ¯æŽãããªãŒãã³ãœãŒã¹ã®CLIããŒã«ã§ããYAML圢åŒã®DataContractå®çŸ©ãã¡ã€ã«ãäžå¿ã«ãããŒã¿ã¬ããã³ã¹ãèªååããå
æ¬çãªãšã³ã·ã¹ãã ãæäŸããŸããäž»ãªæ©èœãšããŠä»¥äžãæããããŸãã ã€ã³ããŒã¿ãŒ : BigQueryãSnowflakeãPostgreSQLãªã©ããã¹ããŒããèªåååŸããŠDataContractçæ Exportæ©èœ : dbtã¹ããŒããOpenAPIãAvroãSQLãªã©ãžã®å€æ ã«ã¿ãã°çæ : DataContractããHTMLããŒã¿ã«ã¿ãã°ãèªåçæ ããªããŒã·ã§ã³ : å®ããŒã¿ãšDataContractã®æŽåæ§ãã§ã㯠ã«ã¹ã¿ã æ¡åŒµ : Importer ã¯ã©ã¹ãç¶æ¿ããŠç¬èªã®ããŒã¿ãœãŒã¹ã«å¯Ÿå¿å¯èœ ä»åæã
ã¯ã«ã¹ã¿ã ã€ã³ããŒã¿ãŒæ©èœã䜿ã£ãŠBigQueryã«çšæããããŒãã«ããDataContractãèªåçæããæšæºã®Exportæ©èœã§ã¯å¯Ÿå¿ããŠããªãTerraformåãJSONæœåºã¯ç¬èªå®è£
ããŠããŸãã ãªãData Contract CLIãæ¡çšããã dbt sourceãã¡ã€ã«ã«ã¯æ©å¯æ§æ
å ±ãå«ããŠããŸãããäž¡è
ã¯ç®çãç°ãªãããã§ããäž¡è
ãåé¢ããããšã§é¢å¿ã®åé¢ãå®çŸããããããã®ç®çã«ç¹åãã管çãå¯èœã«ãªããŸãã dbt source : dbtã¢ãã«æ§ç¯ã®ããã®ã¡ã¿ããŒã¿ïŒããŒã¿åãããŒãã«æ§é ïŒ DataContract : ããŒã¿ã¬ããã³ã¹ã®ããã®ã¡ã¿ããŒã¿ïŒæ©å¯æ§åé¡ãå質ã«ãŒã«ïŒ DataContractã®äœæãšç®¡ç åè¿°ã®ããŒã¿ã¬ããã³ã¹å§å¡äŒã§æ±ºå®ãããæ©å¯æ§åé¡ã¯ããŸãSpreadsheetã§ç®¡çããBigQueryã®å€éšããŒãã«ãšããŠãåç
§ã§ããããã«ãªã£ãŠããŸãã DataContract YAMLãã¡ã€ã«ã®äœæã»æŽæ°ã¯ãData Contract CLIã®ã«ã¹ã¿ã ã€ã³ããŒã¿ãŒæ©èœã䜿ã£ãŠå®å
šã«èªååããŠããŸãã Data Contract CLIã® Importer ã¯ã©ã¹ãç¶æ¿ããBigQueryã«çšæããå€éšããŒãã«(ã¹ãã¬ããã·ãŒã)ããæ©å¯æ§åé¡ãååŸããŠDataContract YAMLãèªåçæããŸãã CIã«ããã«ã¹ã¿ã ã€ã³ããŒã¿ãŒãå®è¡ããDataContractãã¡ã€ã«ã«å·®åãããã°èªåçã«PRãäœæããŸãã ç°¡ç¥åããã³ãŒãäŸ : from datacontract.imports.importer import Importer class DatalakeColumnImporter (Importer): def import_source (self, data_contract_specification, source, import_args): """BigQueryå€éšããŒãã«ããDataContractãèªåçæ""" query = """ SELECT dataset_name, table_name, column_name, data_type, confidential FROM `my-project.governance.spreadsheet_of_column_confidential_level` """ # DataContract YAMLãèªåçæ for row in bq_client.query(query): field_spec = { "data_type" : row.data_type, "confidentials" : { "confidential" : row.confidential } } DataContractããæ©å¯ã«ã©ã ãæœåº åè¿°ã®éããData Contract CLIã®æšæºExportæ©èœã§ã¯ã ãDataContractããç¹å®ã®æ©å¯æ§åé¡ãæã€ã«ã©ã äžèЧãTerraformåãã«JSON圢åŒã§æœåºãããããšãã§ããŸãã ãPolicy Tagsé©çšã®ããã«ã¯ã以äžã®æ
å ±ãå¿
èŠã§ãã ãããžã§ã¯ãIDãããŒã¿ã»ããåãããŒãã«å æ©å¯ã«ã©ã åãšãã®ããŒã¿å Terraform for_each ã§åŠçã§ããJSONæ§é ãã®ãããç¬èªã®Pythonã¹ã¯ãªãããå®è£
ããŸããã æœåºã¹ã¯ãªããäŸ def extract_confidential_columns (datacontract_path: Path) -> list [ dict [ str , str ]]: """ DataContract YAMLãã confidential='yes' ã®ã«ã©ã ãæœåº """ with open (datacontract_path, encoding= "utf-8" ) as f: contract_data = yaml.safe_load(f) # ãã¹ãã dataset_name ãš table_name ãååŸ # äŸ: datacontract/contracts/customer_data/customer_contacts/datacontract.yml dataset_name = datacontract_path.parts[- 3 ] table_name = datacontract_path.parts[- 2 ] confidential_columns = [] models = contract_data.get( "models" , {}) for model_name, model_info in models.items(): for column_name, field_info in model_info[ "fields" ].items(): confidentials = field_info.get( "confidentials" , {}) if confidentials.get( "confidential" ) == "yes" : confidential_columns.append({ "dataset_name" : dataset_name, "table_name" : table_name, "column_name" : column_name, }) return confidential_columns çæãããJSON : confidential_columns.json [ { " project_id ": " my-project ", " dataset_name ": " customer_data ", " table_name ": " customer_contacts ", " columns ": [ { " name ": " customer_name ", " type ": " STRING " } , { " name ": " email ", " type ": " STRING " } , { " name ": " phone ", " type ": " STRING " } , { " name ": " address ", " type ": " STRING " } ] } ] å®è¡: cd terraform/modules/data_masking/scripts uv run python -m src.fetch_confidential_from_contract --env prod ãã®çæããJSONãTerraformã§èªã¿èŸŒã¿ãPolicy TagsãšData Masking PolicyãäœæããŠããŒãã«ã®æ©å¯ã«ã©ã ã«èªåé©çšããããšã§ãééçãªãã¹ãã³ã°ãå®çŸããŸãã å°å
¥æã®èª²é¡ ãã®ä»çµã¿ãšéçšã«ã«ãããŠãæå€§ã®é¢åããããã€ã³ãã¯åææ§ç¯æã«å©çšãããå
šãŠã®ã«ã©ã ãã¹ãã¬ããã·ãŒãã§ç²Ÿæ»ããæ©å¯æ§åé¡ããå¿
èŠãããããšã§ãã åŒç€Ÿã®å Žåãå
šãŠã®ããŒãã«ãåãããŠ15,000ã«ã©ã 以äžã粟æ»ããŸããããããããã¯å®å
šã«éçšããããã®å¿
èŠã³ã¹ããšå²ãåã£ãŠãããããŸããã äžæ¹ã§BigQueryãä»ç€ŸDWHã«ã¯AIã§èªåçã«æ©å¯ã«ã©ã ãæ€åºããæ©èœãåãã£ãŠããŸããããã§æ€åºã§ããæ©å¯ã¯åœããåã§ããemailãäœæãªã©ã®å人æ
å ±ã§ããæã
ã¯description ã tag ãªã©ã®ãããªããŒã¿ãä¿è·ãããæ©å¯ããŒã¿ãšããŠå®çŸ©ããŠããã®ã§é©çšã¯é£ããã§ãããã®ããæã
ã¯æçµçã«ã¯äººéãã¬ãã¥ãŒããŠæ£ããæ©å¯æ§åé¡ãããããšãéèŠãšèããŠããŸãã ãŸãšã BigQueryã®Policy TagsãšDataContractãçµã¿åãããããšã§æ©å¯ããŒã¿ã«å¯Ÿãã峿 Œãªã¢ã¯ã»ã¹å¶åŸ¡ãå®çŸããŸããã æ¬ã¢ãããŒãã¯ãæ©å¯åºŠã®é«ãããŒã¿åºç€ã«ãããŠãç¥ããªãéã«æ©å¯ããŒã¿ãåæå¯èœã«ãªããããªãªã¹ã¯ãåé¿ãã€ã€ãé©åãªã¡ã³ããŒã«ã¯åæå¯èœãªåºç€ãæäŸããããã«èšèšãããŸããã äžæ¹ã§ãéçšè² è·ãšã®ãã¬ãŒããªããšããŠã飿ºããŠããå
šãŠã®ããŒã¿ã«å¯ŸããŠã«ã©ã ã¬ãã«ã§æ©å¯æ§ã倿ã»å®çŸ©ãç¶ããå¿
èŠããããŸãã ãããã顧客ããããŒã¿ãé ããç«å ŽãšããŠå®å
šã«éçšããããšã¯ããŒã¿ã¬ããã³ã¹ã®è²¬åã§ããããã®éçšè² è·ã¯åãå
¥ããã¹ãã³ã¹ããšèããŠããŸããåæ§ã®èª²é¡ãããçæ§ã®åèã«ãªãã°å¹žãã§ãã CADDiã§ã¯äžç·ã«åãã¡ã³ããŒãçµ¶è³åéäžã§ã! ã«ãžã¥ã¢ã«é¢è«ãªã©ãæ°è»œã«ãé£çµ¡ãã ããã カジュアル面談申し込み_エンジニア・UI/UXデザイナー / キャディ株式会社 Data Engineer / キャディ株式会社
æ¬èšäºã¯ CADDi Tech/Product Advent Calendar 2025 22æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ãData & Analysiséšã§æ©æ¢°åŠç¿ãšã³ãžãã¢ãããŠããç±å·ã§ãã ç§ã¯ãè£œé æ¥ç¹åLLMãéçºããããã®è©äŸ¡ãã³ãããŒã¯ã¥ããã«åãçµãã§ããŸããæ¬èšäºã§ã¯ããã®åãçµã¿ã«ãããŠåŸãããç¥èŠãèŠåŽããŠããããšã玹ä»ããããšæããŸãã ãã¡ã€ã³ç¹åLLMã«é¢ããè©äŸ¡ãã³ãããŒã¯ãäœãããšããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã ãªãè£œé æ¥ç¹åã®è©äŸ¡ãã³ãããŒã¯ãäœãã®ã ãã³ãããŒã¯ã¿ã¹ã¯ã®å®çŸ© ãã³ãããŒã¯ã¿ã¹ã¯ã®ããŒã¿ã»ããäœæ è©äŸ¡å¯Ÿè±¡ãšãªãå³é¢ã®éžå® è©äŸ¡å¯Ÿè±¡ã®å³é¢ãã¢ãããŒã·ã§ã³ ãã³ãããŒã¯ã¿ã¹ã¯ã®è©äŸ¡ è©äŸ¡æ¹æ³ è©äŸ¡ææš ãã³ãããŒã¯ã¿ã¹ã¯ã®è©äŸ¡ã·ã¹ãã ãŸãšã ãªãè£œé æ¥ç¹åã®è©äŸ¡ãã³ãããŒã¯ãäœãã®ã 以äžã®ãšããæŽ»çšããããã§ãã ãã³ãããŒã¯ã§ã®ç²ŸåºŠãæ¯èŒããããšã§ãè£œé æ¥ã®èª²é¡ã解決ããããã«ã¯ã©ã®LLMãéžã¹ã°ãããéžå®ã§ããããã«ãããã ãã£ãã£ãæã€è£œé æ¥ã®æ§ã
ãªããŒã¿ïŒå³é¢ç»åã3Dã¢ãã«ã仿§æžãªã©ïŒã«å¯ŸããŠFine-tuningãªã©ã®ææ®µãé©çšããããšã§ãè£œé æ¥ã«é¢ããæ§ã
ãªèª²é¡ãè§£ããæ±çšçãªLLMãéçºãããã ïŒç¹ã«ããããã®ã¯ãã¡ãïŒ äžèšã®æŽ»çšãããããã«ããŸãã¯OpenAIã®æäŸããGPTç³»ãGoogleã®æäŸããGeminiç³»ãšãã£ãäžã®äžã«ããæ±çšLLMããè£œé æ¥ã®ã©ã®ãããªåé¡ãåŸæ/èŠæãæããã«ããå¿
èŠããããŸãã ãããæããã«ããããã«ã¯ãè£œé æ¥ã«é¢ããè©äŸ¡ãã³ãããŒã¯ãå¿
èŠã§ãã ããããè£œé æ¥ã®å³é¢ã仿§æžã3Dã¢ãã«ã«ã€ããŠçè§£ã§ããŠãããè©äŸ¡ãããã³ãããŒã¯ã¯äžççã«èŠãŠãæ°ãå°ãªãã§ãã ãŸããæ¢åã®ãã³ãããŒã¯ã§ã¯æž¬ããªããè£œé æ¥ç¹æã®è€éããè©äŸ¡ããããã«ã¯ãå®éã®æ¥åã§æµéããŠããããŒã¿ãäžå¯æ¬ ã§ãã ããã§ããã£ãã£ã«ã¯çºå·¥å Žãã倧æäŒæ¥ãŸã§æ§ã
ãªã客æ§ã«å¥çŽããã ãããšã§èç©ãããããŒã¿ããããŸãã ãã®èšå€§ãªããŒã¿ã掻çšããå®è·µçãªè©äŸ¡ãã³ãããŒã¯ãäœæããããšã«ããŸããã ãªããã客æ§ã®ããŒã¿ã¯ãã£ãã£ç€Ÿå
ã§æ©æ¢°åŠç¿ã«æŽ»çšããããšã«åæããã ããããŒã¿ã®ã¿å©çšããŠããŸãã ãã³ãããŒã¯ã¿ã¹ã¯ã®å®çŸ© LLMãè£œé æ¥ã®èª²é¡ãè§£ããã確èªã§ãããã³ãããŒã¯ã¿ã¹ã¯ãšã¯äœã§ããããïŒ ãã®åãã®çããšããŠãæã
ã¯çç·Žããèšèšè
ãæè¡è
ã®ããã«è£œé æ¥ã«ã€ããŠååã«çè§£ããŠãã人éãå³é¢ãçè§£ããããã»ã¹ãèšèªåããŸããã ãã®ããã§ããã®ããã»ã¹ãLLMã§åçŸããã¿ã¹ã¯ãå®çŸ©ããŸãã *1 ã 人éãå³é¢ãèŠãŠçè§£ããããã»ã¹ãšãLLMãè§£ãã¿ã¹ã¯ãšã®å¯Ÿå¿é¢ä¿ã¯ä»¥äžè¡šã®ãšããã§ãã 人éãå³é¢ãçè§£ããããã»ã¹ ããã»ã¹ã®æŠèŠ LLMãè§£ãã¿ã¹ã¯ã®äŸ ç©ºéææ¡ å³é¢ã®äžã«æžãããŠããç«äœãã©ã®ãããªåœ¢ãææ¡ãã äŸïŒããã®å³é¢ã«æžãããŠããã®ã¯Lååã®æ¿éã 2Då³é¢ãã3DCADãžã®åæ§ç¯ã¿ã¹ã¯ èŠçŽ èªè å³é¢å
ã®åã
ã®èŠçŽ ïŒæåãèšå·ã寞æ³ãªã©ïŒãäœãèªèãã äŸïŒãããã«çŽåŸ10mmã®åãããã ã»ç©äœæ€åº ã»å¯žæ³å€ã®æšå® æ§é ææ¡ èŠçŽ éã®é¢ä¿æ§ãäœçœ®é¢ä¿ãææ¡ãã äŸïŒããã®å¯žæ³ç·ã¯ããã®åœ¢ç¶ã®æ·±ãã衚ããŠããã ã»åé¡åé¡ ã»æ°å€ã®æšå® æ©èœçè§£ èŠçŽ ãã©ã®ãããªæ©èœãæããã®ããã©ã®ãããªæå³ã§èšèšãããã®ãçè§£ãã äŸïŒããã®å
¬å·® *2 ã¯ãã®éšåãã¯ããããã«å¿
èŠã ç»åãã£ãã·ã§ã³ã¿ã¹ã¯ 補é ã»å質çè§£ å³é¢ãéããŠäœãããèšèšãã©ã®ããã«è£œé ãããæ€æ»ãããã¹ãããçè§£ãã äŸïŒããã®åœ¢ç¶ã¯æåå å·¥ *3 ãããæ¹ãè¯ãã ããã®å¯žæ³ã¯æž¬å®åšAã§æ€æ»ããå¿
èŠãããã Q&Aã¿ã¹ã¯ 衚ã®å¯Ÿå¿é¢ä¿ã«ãããLLMã¯å³é¢ã«æžãããŠããèŠçŽ ã¯äœãããšããåãªãç»åèªèã«ãšã©ãŸããã髿¬¡ã®æ
å ±ïŒäŸïŒèŠçŽ éã®é¢é£æ§ãèŠçŽ ã«ã¯ã©ããªæ©èœãããããã®æ©èœã«èŸŒããããæå³ã¯äœãïŒãçè§£ããŠãããè©äŸ¡ããããã«ããŸããã ã髿¬¡ã®æ
å ±ãã®çè§£ãè©äŸ¡ããå
·äœäŸãšããŠãç»åãã£ãã·ã§ã³ã¿ã¹ã¯ã®æ¡çšçç±ã説æããŸãã è£œé æ¥ã®çŸå Žã§ã¯ãå³é¢ããèšå·ã寞æ³ãšãã£ãèŠçŽ ãèŠã€ããããšã ãã§ãªããèŠçŽ ãæ§æãã補åã®èšèšæå³ã説æã§ããããšãæ±ããããŸãã ããã§ãç§ãã¡ã¯ãã®èª¬æãLLMã§åçŸããã«ã¯ã©ãããã°ãããèããç»åããé©åãªèª¬ææïŒãã£ãã·ã§ã³ïŒãçæãããã¿ã¹ã¯ãè¡ãã°ããã ãããšå€æãæ¡çšããŸããã 衚ã®å¯Ÿå¿é¢ä¿ã¯ãããªããšã§ãããã®ã§ã¯ãªããçç·Žè
ãç¡æèã«è¡ã£ãŠããè³å
åŠçãè©äŸ¡å¯èœãªã¿ã¹ã¯ãšããŠå®çŸ©ããããšãé£ããã£ãã§ãã ã¿ã¹ã¯ãæ€èšããéã瀟å
ã§è£œé æ¥ã«ãã¡ã€ã³ç¥èã®ããæ¹ãã¡ã«å³é¢ãèªããšãã«äœãèããŠãããããã¢ãªã³ã°ããŸããããçŽæçã«èŠãŠããåŸåããããŸããããã®ãããçç·Žè
èªèº«ãèšèªåã«èŠæŠããŠããŸããã ãŸãã人ã«ãã£ãŠèŠè§£ãç°ãªã£ãŠããããã絶察çãªæ£è§£ã¯ãªãäžã§ã¿ã¹ã¯ãå®çŸ©ããŸããã 以äžãèžãŸããŠãæ¬ç¯ãéããŠãäŒããããããšã¯ããã³ãããŒã¯ã¿ã¹ã¯ã¯äººéãå®éã«è¡ãããã»ã¹ãåçŸã§ãããããããŠè©äŸ¡ãããããšã¯äœã決ããããã§èšèšããŸãããããšããããšã§ãã ãã³ãããŒã¯ã¿ã¹ã¯ã®ããŒã¿ã»ããäœæ ãã³ãããŒã¯ã¿ã¹ã¯ã®å®çŸ©ãã§ãããããã®ã¿ã¹ã¯ã«é¢ããè©äŸ¡ããŒã¿ã»ãããäœãå¿
èŠããããŸããè©äŸ¡ããŒã¿ã¥ããã¯ä»¥äžã®ã¹ãããã§è¡ã£ãŠããŸãã è©äŸ¡å¯Ÿè±¡ãšãªãå³é¢ã®éžå® è©äŸ¡å¯Ÿè±¡ã®å³é¢ãã¢ãããŒã·ã§ã³ è©äŸ¡å¯Ÿè±¡ãšãªãå³é¢ã®éžå® éã»å²åã»è³ªãšãã3ã€ã®èгç¹ã§ä»¥äžãæèããŠéžå®ããŸããã èŠ³ç¹ é 粟床ã«ãã¬ãåºãªãçšåºŠã®éãããããš å²å å³é¢å
ã®è£œåã®åœ¢ç¶ãæžãæ¹ã®ãã©ãŒããããããçšåºŠå
žåçã§ããã€ã€ã倿§æ§ãããããšã 質 å³é¢ã®æžããæ¹ãç»åã®è§£å床ãªã©ããå®éã«ã客æ§ã«å©çšãããŠããç¶æ
ã«è¿ãå³é¢ãéžã¶ããš ããŒã¿éžå®ã«ãé£ããã¯ãããŸããæã
ãèŠåŽããã®ã¯ãããŒã¿ã¯ã¬ã³ãžã³ã°ã§ãã äŸãšããŠã2Då³é¢ãã3DCADãžã®åæ§ç¯ã¿ã¹ã¯ã®å Žåãè£œé æ¥ã®ãã¡ã€ã³ç¥èããããããã¯ããããŒãžã£ãŒã以äžã1ä»¶ãã€ç®èŠããããã§ããŒã¿ãéžå®ããŸããã æ£è§£ãšãªã2Då³é¢ãš3DCADã®å¯Ÿå¿é¢ä¿ãæ£ããã 2Då³é¢ã3DCADã宿æžã¿ãïŒæªå®æã®ãã®ãå«ãŸããããšãããããïŒ è©äŸ¡å¯Ÿè±¡ã®å³é¢ãã¢ãããŒã·ã§ã³ ãã£ãã£ã«ã¯ãå³é¢ã«é¢ããã¢ãããŒã·ã§ã³ãè¡ãçµç¹ããããŸãïŒåèïŒ MLã®è£åŽãæ¯ããã¢ãããŒã·ã§ã³çµç¹éå¶ã®å®è·µçŠ ïŒã åºæ¬çã«ã¯ãã¢ãããŒã·ã§ã³çµç¹ã®æ¹ã«äŸé ŒããŠã¢ãããŒã·ã§ã³ããã ãããšã§è©äŸ¡ããŒã¿ã»ãããäœããŸãã *4 ã ã¢ãããŒã¿ãŒã«äŸé ŒããŠããŒã¿ãããŸãã®ãåŸ
ã€ã ããšããåçŽãªè©±ã«ã¯ãªããã以äžã®ç¹ãé£ããã§ãã äœã®ããŒã¿ããã©ã®ããããããšãããèŠéããã€ãã«ããç¹ ç»åãã£ãã·ã§ã³ã¿ã¹ã¯ã®ããã« æç« ãæ£è§£ãšããŠåãæ±ãã¿ã¹ã¯ã«ãããŠãçµ¶å¯Ÿã®æ£è§£ãååšããªãç¹ã äŸãã°ä»¥äžãé£ããã§ãã äœãæžãããŠããã°æ£è§£ãšãããã®å®çŸ© æ£è§£ãã©ããã®å€æåºæºïŒäŸïŒããéšåã¯ãã£ãŠãããå¥ã®éšåãéãã±ãŒã¹ãèšè¿°ã¯è¶³ããŠãªããééã£ãŠããªãã±ãŒã¹ãæ£è§£ãšãããã©ããïŒ ãã³ãããŒã¯ã¿ã¹ã¯ã®è©äŸ¡ è©äŸ¡ããŒã¿ã»ããã®äœæãã§ããããLLMã®ç²ŸåºŠã®åªå£ãè©äŸ¡ã§ããããã«ããããã«ãè©äŸ¡æ¹æ³ãšè©äŸ¡ææšã決ããå¿
èŠããããŸãã è©äŸ¡æ¹æ³ 以äžãæèããŠãè«æèª¿æ»ãäºåæ€èšŒããããã§æ¹æ³ã決ããŠããŸãã LLMéã§ç²ŸåºŠã®åªå£ãã€ãã¿ã¹ã¯ã åªå£ãã€ãã¿ã¹ã¯ã§ããå¿
èŠæ§ã¯ã ãªãè£œé æ¥ç¹åã®LLMãã³ãããŒã¯ãäœãã®ã ã«æžããæŽ»çšãã§ããããã«ããããã§ãã ã¢ããªã±ãŒã·ã§ã³éçºã®éã«å®éã«è¡ãã§ãããè©äŸ¡æ¹æ³ã ã¢ããªã±ãŒã·ã§ã³éçºã§é©çšããå
¥åºåã«ãªã£ãŠããã å
¥åã®äŸïŒç»åããªãµã€ãºããŠããLLMã«å
¥åãããã çç±ïŒå
ã®ç»åãµã€ãºã®ãŸãŸLLMã«å
¥åãããšãããŸãã«ç»åãµã€ãºã倧ããå Žåã¯æšè«é床ãé
ããªãããã«ãèšç®è³æºã®å©çšè²»ãé«ããªãããã åºåã®äŸïŒã¢ããªã±ãŒã·ã§ã³ã§ã¯LLMã®æšè«çµæãWeb APIã䜿ã£ãŠååŸããããããjsonåºåãã§ããæ§é ååºåãé©çšããã è©äŸ¡ææš åé¡åé¡ã®ãããªããããã¿ã¹ã¯ã§ã¯PrecisionãRecallãªã©ä»£è¡šçãªè©äŸ¡ææšãæ¡çšããŸãã ããã§ã¯ãªããã³ãããŒã¯ã¿ã¹ã¯ã®å Žåãè©äŸ¡çµæãã©ã®ããã«æŽ»çšããããŠãŒã¹ã±ãŒã¹ãèããLLMããã®ãŠãŒã¹ã±ãŒã¹ãæºããã確èªã§ããææšãå®çŸ©ããŠããŸãã 倿§ãªãŠãŒã¹ã±ãŒã¹ã«å¯ŸããŠãLLMãåŸæ/èŠæãªããšããããããã«ããããã«ãåºæ¬çã«ã¯è€æ°ã®è©äŸ¡ææšãèšããŠããŸãã å®çŸ©ããè©äŸ¡ææšã«ãã£ãŠã¯ãç®åºãããçµæã劥åœãªã®ãã宿§çã«æ€èšŒããããšããããŸãã äŸãã°ãæç« çæã¿ã¹ã¯ã«ãããŠæç« ãæ£ããããè©äŸ¡ããæ¹æ³ãšããŠLLM as a Judgeã䜿ãç¶æ³ãèããŸãã ãã®ãšããLLM as a Judgeã«ããåºåããããæ£ããã»æ£ãããªããšããçµæãã®ãã®ã劥åœãªã®ãæ€èšŒããå¿
èŠããããŸãã ããã€ãæ¹æ³ã¯èããããŸãããåŠ¥åœæ§ã確å®ã«ä¿èšŒããã«ã¯ãLLMã«å€æçµæã ãã§ãªã倿çç±ãåºåãããçç±ãèžãŸããŠåŠ¥åœãªã®ãã人ãè©äŸ¡ããããåŸãªãã§ãããã ãã®ããã«ããããšãªã£ãã人ãè©äŸ¡çµæã®åŠ¥åœæ§ãä¿èšŒããå Žåãããã®ããè©äŸ¡ãã³ãããŒã¯ã¥ããã§å€§å€ãªããšã®äžã€ã ãšæã£ãŠããŸãã ãã³ãããŒã¯ã¿ã¹ã¯ã®è©äŸ¡ã·ã¹ãã å®çŸ©ããè©äŸ¡æ¹æ³ãšè©äŸ¡ææšã«åºã¥ãçµæãåç
§ã§ããããã«ããããã«ã以äžã®ãããªè©äŸ¡ã·ã¹ãã ã瀟å
åãã«äœã£ãŠããŸãã ãã³ãããŒã¯ã®è©äŸ¡ã·ã¹ãã ããã³ãããŒã¯ã¿ã¹ã¯ããšã®LLMã®ç²ŸåºŠããããããã«ããŠããŸãã ãã®ã·ã¹ãã ã§ç¢ºèªã§ãããã³ãããŒã¯ã¿ã¹ã¯ã®è©äŸ¡çµæãéããŠã ãªãè£œé æ¥ç¹åã®LLMãã³ãããŒã¯ãäœãã®ã ã«æžããæŽ»çšãã§ããããšãç®æããŠããŸãã ãŸãšã æ¬èšäºã§ã¯ãéåã°ã§ã¯ãããŸãããè£œé æ¥ç¹åLLMãéçºããããã®è©äŸ¡ãã³ãããŒã¯ã«é¢ããåãçµã¿ã玹ä»ããŸããã èšäºãéããŠãäŒããããããšã¯ä»¥äžã®ãšããã§ãã ãã³ãããŒã¯ã¿ã¹ã¯ã¯ã人éãå®éã«è¡ãããã»ã¹ãåçŸã§ãããããããŠè©äŸ¡ãããããšã¯äœã決ããããã§èšèšãããšè¯ã è©äŸ¡æ¹æ³ã¯ãã¢ããªã±ãŒã·ã§ã³éçºã§ãè¡ãããã§ãããæ¹æ³ãæ¡çšããããš è©äŸ¡ææšã¯ããã³ãããŒã¯ã®çµæãéããŠæããã«ããããŠãŒã¹ã±ãŒã¹ãèšå®ããè€æ°èšããŠããããš ãããšãªã£ããã以äžã人ãè¡ãå¿
èŠããã è©äŸ¡ããŒã¿ã«äžåãäžèŠãªæ
å ±ããªããã®ããŒã¿ã¯ã¬ã³ãžã³ã° è©äŸ¡çµæãã®ãã®ã劥åœãã©ããã®ç¢ºèª ä»åã玹ä»ããè©äŸ¡ãã³ãããŒã¯ã¥ããã«éãããæ©æ¢°åŠç¿ãLLMã«é¢ããæè¡ã«ãã£ãŠè§£æ±ºãããè£œé æ¥ã®èª²é¡ã¯ãããããããŸãã ããããäœã«åãçµãã§ããäŒç€Ÿãªã®ããæ©æ¢°åŠç¿ãLLMã䜿ã£ãŠäœãå®çŸãããã®ããªã©ããèå³ããã°ãã²ãæ°è»œã«ãé£çµ¡ãã ããã speakerdeck.com recruit.caddi.tech open.talentio.com *1 : å³é¢ãã¿ã¹ã¯ã®å¯Ÿè±¡ã«ããŠããã®ã¯ãè£œé æ¥ã«ãããŠæ
å ±ã®ããåãã®äžå¿ã«ããã®ã¯å³é¢ã ããã§ãã仿§æžã®ãããªææžããŒã¿ã3DããŒã¿ã«é¢ããã¿ã¹ã¯ãæ§ç¯äºå®ã§ãã *2 : å³é¢ã«æžãããŠãã寞æ³å€ããã©ãã ããºã¬ãŠè¯ããã衚ã蚱容誀差 *3 : ææãå転ãããåŸã«å·¥å
·ãåœãŠãããšã§ãç®çã®åœ¢ç¶ãäœãå å·¥æ¹æ³ *4 : ãã³ãããŒã¯ã¿ã¹ã¯ã®è©äŸ¡ã«é¢ããæ€èšŒãããçŽ æ©ãè¡ããããã¢ãããŒã·ã§ã³çµç¹ã®å·¥æ°ç¢ºä¿ãé£ãããšãã£ãäºæ
ã§ãè£œé æ¥ã®ãã¡ã€ã³ç¥èãæã€ãããã¯ããããŒãžã£ãŒãå°éããŒã¿ãã¢ãããŒã·ã§ã³ããããšããããŸãã
ããã«ã¡ã¯ããã£ãã£ã®Data & Analysiséšã®ä»éã§ãããã®èšäºã¯ CADDi Tech/Product Advent Calendar 2025 21æ¥ç®ã®èšäºã§ããä»åã¯å
æ¥éå¬ããåœéšã®å宿ã«ã€ããŠã玹ä»ããŸãã ã¯ããã« èªå·±ç޹ä»&ããŒãã³ã° æŠç¥èª¬æ ããã«ãœã³ æåŸã« ã¯ããã« ãã£ãã£ã¯ãè£œé æ¥AIããŒã¿ãã©ãããã©ãŒã CADDiããæäŸããŠããŸãã ç§ãæå±ããData & AnalysiséšïŒä»¥äžãD&AïŒã¯ãTechçµç¹ã®äžã§ä»¥äžã®ãããªäœçœ®ä»ãã«ãªã£ãŠããŸãã Tech çµç¹å³ D&Aã¯ãå³é¢ãææžãªã©ã®åéãããããŒã¿ãML/AIãå©çšããŠè§£æãè¡ãããšãã¡ã€ã³ã®æ¥åã«ãªã£ãŠããŸããä»å¹Žã®ååã®æç¹ã§ã¯ãã¢ãã«ã«ãã£ãŠè§£æãè¡ãAnalysisãè§£æåºç€ãäœãAnalysis Platformããããã®æè¡ã®ã¢ããªã±ãŒã·ã§ã³ãžã®å¿çšãæ¢çŽ¢ããAI for ApplicationãšããããŒã ã§æ§æãããŠããŸããããã®åŸãã¯ãŒã¯ãããŒããŒã¹ã®AIãšãŒãžã§ã³ãã«ãããœãªã¥ãŒã·ã§ã³ãé«éã«æäŸããŠããããã®åºç€ãéçºããAgent PlatformãšããããŒã ãæ°èšãããŸããã ä»åã®å宿ã¯ãçµç¹ã®å€æŽãæ°ããå
¥ç€Ÿããã¡ã³ããŒãå€ãD&AïŒç§ãä»å¹Žã®4æã«å
¥ç€ŸããŸããïŒã®äžã§ã³ã©ãã¬ãŒã·ã§ã³ã®ããŒãã«ãäžããããšããããã¯ãåã³éšçœ²ã®æŠç¥ãæ·±ããããšãããã«ãœã³ãéããŠå
šå¡ãAgentåºç€ã«è§Šããããšã§äžäžžãšãªã£ãŠäŸ¡å€æäŸã§ããç¶æ
ãäœãããšããç®çãšããŠéå¬ãããŸããã èªå·±ç޹ä»&ããŒãã³ã° ãŸãã¯ãäºãã®ããšãããæ·±ãç¥ãã¹ããããŒã ããšã«èªå·±ç޹ä»ãšããŒãã³ã°ãè¡ããŸããã èªå·±ç޹ä»ã«ã¯ä»¥äžã®ãã©ãŒãããã䜿çšããŸããã èªå·±ç޹ä»ã®ãã©ãŒããã æ®æ®µåãéšçœ²ã§åããŠããŠãç¥ããªãå
容ãå€ãã®ã§ããã©ãŒãããã«æ²¿ã£ãŠèªå·±ãé瀺ããã ãã§ãæ¹ããŠãäºããç¥ãè¯ãæ©äŒã«ãªã£ããšæããŸããã éšé·ã®èªå·±çŽ¹ä» ããŒãã³ã°ã®ã³ã³ãã³ããšããŠã ito ãšããããŒãã²ãŒã ãæ¡çšããŸãããitoã®åºæ¬çãªã«ãŒã«ã¯ã1~99ãŸã§ã®æ°åã®ã©ãããèšèŒãããã«ãŒãã1æãã€èªåã ããèŠãããç¶æ
ã§é
ãããäºåã«æ±ºããããããŒãã«æ²¿ã£ãå
容ã§é
ãããæ°åã®å€§ããã衚çŸãããäºãã®æ°åã®å€§ãããäºæž¬ãããšãããã®ã§ãïŒäŸïŒããŒãããåç©ã®å€§ãããã§ãé
ãããã«ãŒããã80ãã®æããçããšããŠåšå²ã«äŒãããåšå²ãåãããã«èªåã®æ°åã«åãããåç©ãéžã³ãã€ã¡ãŒãžãæŠãåãããªããããããã®æ°åã®å€§å°ãäºæž¬ããïŒã itoã®æ§å ããŸã話ããããšããªãã¡ã³ããŒã§ããã²ãŒã ã®é²è¡ã®äžã§èªç¶ã«ããããã®äŸ¡å€èгãæç€ºããããšã«ãªãã®ã§ãéåžžã«ããŒãã³ã°ã«åããŠããã²ãŒã ã ãªãšæããŸãããäžæ¹ã§ãã飲é£åºã®äººæ°ããšããããŒãã®äžã§ç§ã®å¥œããªãããã§ãŒã³ãåšå²ã®èªèãšæãããªä¹é¢ããã£ãããšããããã¢ã€ã¢ã€ãæ®ã£ãŠããã®ã§ãããããè¯ãã䞻匵ããŠãããããšæããŸãã ã¡ãªã¿ã«ãD&Aã«ã¯ããŒãã²ãŒã ãæããã¡ã³ããŒãè€æ°ããŠã宎äŒåŸã®æå¿ã®ã¡ã€ã³ã³ã³ãã³ããããŒãã²ãŒã ã§ããã æŠç¥èª¬æ 次ã®ã³ã³ãã³ãã¯æŠç¥èª¬æã§ããã æåã«VP of Product Strategyã«ãããããã¯ãæŠç¥ã®èª¬æãããããã®åŸData Platformæ¬éšãD&AãD&Aå
ã®åããŒã ã®ã¬ãã«ã§æŠç¥ã®ç޹ä»ããããŸããã æ¹ããŠèªãããD&Aã®ããã·ã§ã³ 説æãèããåŸã¯ãèªå·±ç޹ä»&ããŒãã³ã°ãçµãåããŒã ã§å
容ãååŒããŠè°è«ããæçµçã«åããŒã ããéãŸã£ã質åãã¹ããŒã«ãŒã«ã¶ã€ãããããšããæµãã«ãªããŸããããã£ãã£ã§ã¯æœè±¡çããå
·äœçãå
šç€ŸããããŒã ã¬ãã«ãŸã§æ§ã
ãªç²åºŠã§æŠç¥ãã¢ããããŒãããç¶ããã®ã§ãæ¥åã®æãæ¢ããŠäžã€äžã€ã®ç解床ãé«ããŠãã£ããã¢ããã§ããè¯ãæ©äŒãšãªããŸãããç¹ã«ããããã¯ãæŠç¥ã¯éåžžã¯å
šç€Ÿã«åããŠçºä¿¡ãããå
容ãªã®ã§ãå宿ã®äžã§è¡ãããããšã§D&Aã®å
·äœçãªåãçµã¿ãšçŽä»ããªããæ·±æãã§ãã貎éãªæ©äŒãšãªã£ããšæããŸãã ããã«ãœã³ ãã®å宿ã®ã¡ã€ã³ã®ã³ã³ãã³ããšãªãããã«ãœã³ã¯ã1æ¥ç®ã®çµç€ãã2æ¥ç®ãçµæ¥è²»ãããŠå®æœããŸãããããŒãã¯Agentåºç€ãå©çšããŠèº«è¿ãªèª²é¡ã解決ãããœãªã¥ãŒã·ã§ã³ãå®è£
ããããšã§ããã3~4人ã§ç·šæãããããŒã ã§ããŒã決ãã»MVPã®å®è£
ã»ãã¬ãŒã³ãè¡ããæçµçã«ã¢ã€ãã¢ã®ãŠããŒã¯ãã»MVPãšããŠã®å®æåºŠã»æè¡çãªé¢çœãã®3ã€ã®èгç¹ã§æç¥šãè¡ããã1äœã®ããŒã ã«ã¯è±ªè¯ãªæ¯åãèŽãããŸããã ããŒã ããšã«å®è£
äž å人çã«ã¯ãAIãšãŒãžã§ã³ãã®è³ªãé«ããèŠçŽ ã®äžã§ã¯ãäœãAIã®å€æã«å§ããäœã決å®è«çã«è¡ããã©ãã«äººéãä»å
¥ãããã®ããã»ã¹èšèšã倧ããªãŠã§ã€ããå ããŠãããšæã£ãŠããŸããæ®æ®µã®æ¥åã®äžã§ã¯è£œé æ¥ãšããéåžžã«é«åºŠãªãã¡ã€ã³ç¥èãæ±ããããã®ã§ãããä»åã¯èº«è¿ãªèª²é¡è§£æ±ºãšããããŒãã«çµãããŠããã®ã§ãã¡ã€ã³çè§£ã¯ååæããŠããåæã§ããã»ã¹èšèšã«æ³šåã§ãããœãªã¥ãŒã·ã§ã³ãäœãããšãžã®è§£å床ãäžããããšãã§ããŸããã æçµçã«ãããŒã ããšã§ä»¥äžã®ãããªããŒããšãªããŸãããäžã€äžã€ã説æãããšé·ããªãã®ã§è©³çްã¯å²æããŸãã 1çïŒã€ã³ã·ãã³ãã³ãã³ã㌠ãšãŒãžã§ã³ã 2çïŒé«æ©èœGoogleCalendarã¹ã±ãžã¥ãŒã«èª¿æŽãšãŒãžã§ã³ã 3çïŒã¯ãŒã¯ãããŒæé©åãšãŒãžã§ã³ã 4çïŒäŒè°ã®çšå¿æ£ 5çïŒãã©ãŠã¶ã»ã«ã¡ã©ã»ãã€ã¯ã»æ ãããŒã«ã«LLMã®ãã®å
ãWEB LLM ãšææ
èªèã®ã·ããžãŒã§è¶
ããŠããæ°äžçã 6çïŒïŒæ¥åã«é¢ããé åã®ãã瀟å€ç§ïŒ åå®¿ã®æåŸã«ããŒã ã®ææç©ãžã®æç¥šãè¡ãããŸãããæåã®æç¥šã§ã¯åç1äœãšãªãããã®åŸã®æ±ºéžæç¥šã®çµæãç§ã®æå±ãã3çã®ã¯ãŒã¯ãããŒæé©åãšãŒãžã§ã³ãã1äœãšãªããŸãããæè§ãªã®ã§ç°¡åã«å
容ãã玹ä»ããããšæããŸããããã¯â æ¢åã®ä»»æã®ã¯ãŒã¯ãããŒãåŒã³åºããŠçµæãè©äŸ¡ããâ¡åºåãå
ã«AIãåå ãç¹å®ããâ¢ã¯ãŒã¯ãããŒã®å
容ã®ä¿®æ£ã人éã«ææ¡ãâ£ä¿®æ£å
å®¹ãæ¿èªãããã°ã¯ãŒã¯ãããŒãåå®è¡ãæ¿èªãããªããã°ãã£ãŒãããã¯ãå
ã«ä¿®æ£å
容ãååºŠææ¡ãããšããããã»ã¹ãç¹°ãè¿ããã®ã§ããè©äŸ¡ããéã®ç²ŸåºŠãäžå®å€ä»¥äžãŸãã¯ã«ãŒããäžå®åæ°ä»¥äžã«ãªãã°çµäºãšãªããŸãã ã¯ãŒã¯ãããŒæé©åãšãŒãžã§ã³ãã®ãã€ã¢ã°ã©ã ããŸããã£ãç¹ãšããŠã¯ã人éã®ãã£ãŒãããã¯ãèªç¶ãªæµãã§åã蟌ã圢ã«ã§ããããšãšãä»»æã®ã¯ãŒã¯ãããŒã«é©çšã§ããŠæ±çšæ§ããã圢ã«ãªã£ãŠããããšããªãšæããŸããä»åã¯æéãéãããŠããããæé©åããã¯ãŒã¯ãããŒãžã®ä¿®æ£å¯èœãªéšåãã¹ãããã®äžã®ããã³ããã«çµããŸãããããã®ä»ã®ãã©ã¡ãŒã¿ãã¯ãŒã¯ãããŒå
éšã®ãã©ã³ãã³ã°ïŒå®è¡ããã¹ãããã®éžæïŒèªäœã倿Žã§ããããã«æ¡åŒµã§ããã°æŽã«é¢çœãå
容ã«ãªãããã ãªãšæããŸããã å®çšã®å¯èœæ§ãããã¯ãŒã¯ãããŒãæé©åã®å¯Ÿè±¡ãšããä»åã®ãšãŒãžã§ã³ãããã¢ããŒã¿ã«å¯ŸããŠé©çšãã圢ã§ã¯ãŒã¯ãããŒã®ç²ŸåºŠãå®éã«åäžããããšãå®éçã«ç€ºãããšãã§ããããšãæç¥šããŠããããèŠå ã ã£ãããã«æããŸãã ãã以å€ã«ããåããŒã ã§å€§å€è峿·±ãå
容ãšãªã£ãŠããŸãããéåžžã«éãããæéã®äžã§ã»ãšãã©ã®ããŒã ãã³ã³ã»ããã ãã§ãªãå®éã«åããã®ãæç€ºããããšãã§ããŠããŠãç·è©ã§ã幎ã
ããã«ãœã³ã®ææç©ãæŽç·ŽãããŠãããšèšåãããŠããŸãããAgentåºç€ãçå®ã«æŽåãããŠããäžã§ãClaude Codeãªã©ã®ã³ãŒãã£ã³ã°ããŒã«ãå©çšã§ããããšãèŠå ãšããŠå€§ããã£ããšæããŸãã æåŸã« æ§ã
ãªã³ã³ãã³ããéããŠæ¥åäžã®é¢ãããè¶
ããã¡ã³ããŒå士ã®äº€æµããããåœåã®ç®çã«é©ã£ãå®ã®ããå宿ã«ãªã£ãããã«æããŸãã D&Aã§ã¯ãMLãšã³ãžãã¢ãMLOpsãšã³ãžãã¢ãã¯ãããšããŠæ§ã
ãªè·çš®ã§æ¡çšãè¡ã£ãŠããŸãïŒ ãã£ãã£ã«ã¯ã客æ§ã®éåžžã«éèŠãªè³ç£ã§ããå³é¢ãã¯ãããšããç¹æã®ããŒã¿ããããäžçæå€§ã®ç£æ¥ã§ããè£œé æ¥ã®ããã³ã·ã£ã«ã®è§£æŸã«åããŠè§£ããªããã°ãªããªã課é¡ãããããååšããŠããŸãã æ±çšã®AIã¯ææ¶ã®å¢ãã§é²åãéããŠããŸããããã¡ã€ã³ã®ç¹æ§ã«ãã£ãŠçããæåŸ
ãšã®ã®ã£ããã¯äŸç¶ãšããŠååšããŸããç§ã®æå±ããAI for applicationããŒã ã¯ããããŸã§å¹ã£ãŠããè§£ææè¡ã»åºç€ã®æŽ»çšããŠãŒã¶ãŒäœéšã®æ€èšãè©äŸ¡èšèšãšãã£ãå
šãŠãçµã¿åãããŠã¢ããªã±ãŒã·ã§ã³ã«æ°ããªäŸ¡å€ãçã¿åºãããšãç®æããŠããŸãã å°ãã§ãèå³ãæã£ãŠããã ããŸããããâã®æ¡çšããŒãžãã芧ãã ããããå¿åãã«ãžã¥ã¢ã«é¢è«ãããåŸ
ã¡ããŠãããŸãïŒ ãšã³ãžãã¢æ¡çš ã«ãžã¥ã¢ã«é¢è«ç³ã蟌ã¿_ãšã³ãžãã¢ã»UI/UXãã¶ã€ã㌠/ ãã£ãã£æ ªåŒäŒç€Ÿ
ããã«ã¡ã¯ããã£ãã£ã§ Quote ãšããã¢ããªã±ãŒã·ã§ã³ãéçºããŠãã plant ããšç³ç° ( @plant_ja ) ã§ãã ãã®èšäºã¯ ãã£ãã£æ ªåŒäŒç€Ÿã®ã¢ããã³ãã«ã¬ã³ã㌠ã®20æ¥ç®ã®èšäºã§ãã adventar.org ä»å㯠AI ã³ãŒãã£ã³ã°ãå³ã§è¡šçŸãã€ã€ãæã
ãæåŸ
ããææç©ãåºåããŠãããããã®æ§ã
ãªã¢ãããŒãã«æãã銳ããŠã¿ãããšæããŸãã ãŽãŒã«èšå® ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããžã®æåŸ
ãšçŸå® AI ãæžãã³ãŒããã確çå¯åºŠé¢æ°ããšããŠèããŠã¿ã ã¢ãããŒã1: 解空éã®ç¢ºçå¯åºŠãäžãã 解空éã®å®çŸ© 解空éã®ã€ã³ãããã³ã¹ããšã©ãåãåãã ã³ã³ããã¹ãã®å¢å€§ ã¢ãããŒã2: 解空éå€ã®åºåãæå¶ãã linter ã«ããæå¶ ã¿ã¹ã¯ã®åè§£ã«ããã³ãŒãåºåããªãšãŒã·ã§ã³ã®çµã蟌㿠2ã€ã®ã¢ãããŒãã®æ¯èŒ çµããã« ãŽãŒã«èšå® ãŸããè§£ãããåé¡ããããŸããäŸãã°ãæ°èŠãŠãŒã¶ãŒç»é²çšã® API ãäœæããããªã©ã§ãã説æã容æã«ããããã«ãããã§ã¯ããå°ã现ååããŠããŠãŒã¶ãŒãšã³ãã£ãã£ã DB ãš firebase ã«ä¿åããããšããã¿ã¹ã¯ãé²ããŠãããšä»®å®ããŸãããã 现ååãããšã¯ãããå®éã®åé¡ã¯ãã£ãšè€éã§ããçæãã人ã眮ãããç¶æ³ïŒ= ã³ã³ããã¹ãïŒã«ãã£ãŠäžèšã®èª²é¡ã¯æ§ã
ãªå¶çŽãæã€ããšãšãªããŸãã èšèªçã»åœ¢åŒçãªã³ãŒãã£ã³ã°èŠçŽã«æºæ ããŠããããš Lint ãšã©ãŒããªãããã©ãŒããã¿ãŒãé©çšãããŠãã åœåèŠåãªã©ãããŒã ã®æšæºã«åŸã£ãŠãã ãããžã§ã¯ãåºæã®ã¢ãŒããã¯ãã£ã»èšèšææ³ãšæŽåããŠããããš ã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ã®æ¹åãæ£ããããš æ¢åã®å
±éåŠçãæ£ããåå©çšããŠãã æ¬çªéçšã«èãããéæ©èœèŠä»¶ãæºãããŠããããš é©åãªãã®ã³ã°ãäŸå€åŠçãå®è£
ãããŠãã ããã©ãŒãã³ã¹ãã»ãã¥ãªãã£äžã®æžå¿µããªã å®éã®ãããã¯ãéçºã§ã¯ãæç€ºçãããã¯æé»çã«ããã«ããã«çްç²åºŠãã€å€æ°ã®å¶çŽãæã€ããšãšãªããŸããéã«ããããã®å¶çŽæ¡ä»¶ãå
šãŠæºãããããªã³ãŒãã¯ãmain branch ã«ããŒãžã§ããåå
¥å¯èœãªã³ãŒãã§ãããšèšããŸãã ãå¶çŽæ¡ä»¶ãå
šãŠæºãã main branch ã«ããŒãžã§ããã³ãŒããã¯é·ãã®ã§ããã®èšäºã§ã¯ã解空éããšåŒã¶ããšã«ããŸãããã ãã®èšäºã§ã¯ãäžèšã®ãããªè§£ç©ºéã«è©²åœããã³ãŒãããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«1åã®æç€ºã§åºåããŠãããããšããŽãŒã«ãšèšå®ããŸãã ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããžã®æåŸ
ãšçŸå® ããŠãã§ã¯ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ããŠãŒã¶ãŒãšã³ãã£ãã£ã DB ãš firebase ã«ä¿åããŠããšæç€ºããã°ãäœæ¥ãå
šãŠå®äºããŠç§ãã¡ã¯éå€ã§ããã®ã§ããããïŒ ãã»ã©æçããã³ã³ããã¹ããšã³ãžãã¢ãªã³ã°ãå®è·µãããŠããªãéã㯠No ã§ãããã以äžã®ãããªåºåãèããããŸãã æ©èœèŠä»¶ã¯æºãããŠããããã¢ãŒããã¯ãã£ã«ãŒã«ã«éåããŠãã æ©èœèŠä»¶ã¯æºãããŠããã¢ãŒããã¯ãã£ã«ãŒã«ãéµå®ããŠãããããã°ãªã©ã®éæ©èœèŠä»¶ãäžè¶³ããŠãã ããããæ©èœèŠä»¶ãæºãããŠããªã 5åã»ã©ãããããç°ãªãã»ãã·ã§ã³ã§ããŠãŒã¶ãŒãšã³ãã£ãã£ã DB ãš firebase ã«ä¿åããŠããšããæç€ºã詊ããŠã¿ããšããããæ¬¡ã®ããã«è²ã
ãªã³ãŒããåºåãããã§ãããã ïŒå³å
ã®è©³çްãªã³ãŒãå
容ã¯éèŠã§ã¯ãªããåè¿°ã®å¶çŽæ¡ä»¶ãå
šãŠæºããåºåã®é£ãããäŒããã°ååã§ãïŒ ãã®ãããªå®éšã10åã100åã1000åãšç¹°ãè¿ãããšãæ³åããŠã¿ãŸãããã 解空éã«çžåœããã³ãŒããçæãããããšãããã°ãå
šãŠã®åã®å€ã«äœçœ®ãããããªãå
šãŠã®å¶çŽãå®ããŠããªããããªã³ãŒããçæãããããšãããã§ãããããã®ããã«ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããçæããå¯èœæ§ãããå
šãŠã®ã³ãŒã矀ããæ¢çŽ¢ç©ºéããšåŒã¶ããšã«ããŸãããã 解空éã®å€ã«åºåãããã³ãŒãã¯å
šãŠãååºŠä¿®æ£æç€ºãããããæçŽããå¿
èŠãšããããšã«ãªããŸãã LLM ã¯ç¢ºççãªåçãè¿ãã®ã§ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããçæããã³ãŒããåæ§ã«ç¢ºççãªçµæã«ãªããŸããã§ã¯ãå°ããã®ç¢ºçã«ã€ããŠèããŠã¿ãŸãããã AI ãæžãã³ãŒããã確çå¯åºŠé¢æ°ããšããŠèããŠã¿ã ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã䜿ã£ã AI ã³ãŒãã£ã³ã°ã¯ãæç€ºãã€ã³ããããšããŠåãåã£ãŠãã³ãŒããã¢ãŠãããããšããŠåºåãã確ççãªé¢æ°ãšèããããšãã§ããŸãã ã§ã¯ãäŸãšããŠé£éåã®ã°ã©ããèããŠã¿ãŸããããå°ãããã§ã®ç®çã¯ç¢ºçèªäœã®å³å¯æ§ã§ã¯ãªããAI ã³ãŒãã£ã³ã°ãæé©åããããã®ã¢ã€ãã¢ãåŸãããšã§ãã å
çšã¯äºæ¬¡å
ã ã£ãæ¢çŽ¢ç©ºéããããã§ã¯äžæ¬¡å
ã§è¡šçŸãããŠããããšã«æ³šæ ã°ã©ãã®æšªå¹
ãæ¢çŽ¢ç©ºéã§ãé«ãã確çå¯åºŠã衚ããŠããŸãã æ¢çŽ¢ç©ºé: ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããçæããå¯èœæ§ãããå
šãŠã®ã³ãŒã矀 確çå¯åºŠ: åãæç€ºãäžããæã«ããããããããã®ããªãšãŒã·ã§ã³ã®ã³ãŒãã®çžå¯Ÿçãªåºåããããã ãã®ã°ã©ãã«ãå
ã»ã©ã®è§£ç©ºéããããã³ã°ããŠã¿ãŸãããã ã°ã©ãäžã§ã®ç¹ã®é«ãã¯ç¢ºçå¯åºŠïŒã³ãŒãã®çžå¯ŸçãªåºåãããããïŒã衚ããããæ¬¡ã®ãããªããšãèšãããã§ãã å
šãŠå¶çŽãæºããã³ãŒããåºåããã確ç = èµ€ããã€ã©ã€ããããŠããé¢ç© / ã°ã©ãå
šäœã®é¢ç© ä»åã¯ãäžåã®æç€ºã§ãã®è§£ç©ºéã«è©²åœããã³ãŒããçæãããããšããŽãŒã«ãšèšå®ããŠããŸãããäžèšã®ã°ã©ãã§ã¯ãå
šãŠã®å¶çŽãæºããåå
¥å¯èœãªã³ãŒããåºåããã確çã¯ãããã 10% çšåºŠãããããŸãããããã§ã¯ããããã10åã«1åããåå
¥å¯èœãªã³ãŒãã1çºã§çæããŠããããä»ã®9åã¯ä¿®æ£æç€ºãå¿
èŠã«ãªããŸããããŒããããã§ã¯äººéã«ãããã£ãŒãããã¯ãå€ãå¿
èŠãããªã®ã§ãäœæ¥ã®äžŠååãªã©ã¯é£ãããã§ããéã«ãããã8~9å²ã»ã©ããã°ã人éã®é¢äžã¯ã»ãšãã©äžèŠã«ãªãããã§ãã ã°ã©ãã®äŸãããAI ã³ãŒãã£ã³ã°ã®æé©åã ãã°ã©ãå
šäœã«å¯ŸããŠã®èµ€ãé¢ç©ã®å²åãå¢ãããŠããã²ãŒã ã ã ãšèããŠã¿ãŸããããèµ€ãé¢ç©ã®å²åãå¢ããã°å¢ããã»ã©ãAI ã³ãŒãã£ã³ã°ã®ç²ŸåºŠãå¹çãäžãã£ãŠãä¿®æ£æç€ºã«è¿œãããããšããªããªããšããã§ãã ããããã¯ãã©ã®ãããªã¢ãããŒãã«ãã£ãŠèµ€ãé¢ç©ã®å²åãå¢ãããŠããããããèããŠãããŸãã 解空éã®ç¢ºçå¯åºŠãäžããïŒèµ€ãé¢ç©ãå¢ããïŒ è§£ç©ºéå€ã®åºåãæå¶ããïŒèµ€ããªãéšåã®é¢ç©ãæžããïŒ ã¢ãããŒã1: 解空éã®ç¢ºçå¯åºŠãäžãã ãŸãæåã«ã解空éã®ç¢ºçå¯åºŠãäžãããšããã¢ãããŒããèããããŸãã ããã¯ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããåºåããã³ãŒãã®ç²ŸåºŠãäžããããšãæå³ããŠãããã°ã©ãã§ãããšããã®èµ€ãé¢ç©ãå¢ãããããªèãæ¹ã«ãªããŸãã ãã®ã¢ãããŒãã¯ãæç€ºã®åºãæ¹ã工倫ããããã³ãããšã³ãžãã¢ãªã³ã°ã«å§ãŸãããšãŒãžã§ã³ãã«ã³ã³ããã¹ããæ³šå
¥ããã³ã³ããã¹ããšã³ãžãã¢ãªã³ã°ãªã©å¹
åºãææ³ã§å®çŸããããšãã§ããŸããããŸãã«ã倿°ã®ææ³ããããããããã§ã¯è©³çްã«ã¯è§ŠããŸããããweb ã§æ€çŽ¢ãããªã Deep Research ã«ããããªããããšãã®æã
ã®ãã¹ããã©ã¯ãã£ã¹ãåŸãããã§ãããã ææ³ã¯è²ã
ããã©ãéèŠãªã®ã¯ ã解空éã®å®çŸ©ïŒ= åºåãã¹ãã³ãŒããæºããã¹ãå¶çŽæ¡ä»¶ïŒãæç¢ºã«ããŠãå¿
èŠæäœéã®æ
å ±ãå¿
èŠãªæã«ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«äŒããã ãšããããšã§ãã解空éã®å®çŸ©ãææ§ã ãšãããããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«æ£è§£ãäŒããããšãã§ããŸããããæ
å ±ãå€ããããããŠãççŸãçºçãããã³ã³ããã¹ãã®éŒè¿«ã«ããæ§èœå£åãçããŠããŸããŸãã 解空éã®å®çŸ© 解空éã®å®çŸ©ã®éèŠæ§ã¯ AI ã³ãŒãã£ã³ã°ã«å§ãŸã£ã話ã§ã¯ãããŸãããã³ãŒããæžãã®ã人éã ããã AI ã ããããåè³ªåºæºã¯å€ãããŸããããã©ããã£ãã³ãŒããæžãããšãæ±ããããŠããã®ããã现éšãŸã§èª¬æã§ããããŸãã¯å¿
èŠã«ãªã£ãæã«åç
§ã§ããç¶æ
ã§ã¯ãªããšãããŒã ã§ã®åè³ªåºæºãæºãããã³ãŒããæžãããšã¯é£ããã§ãããã ããããã®ãŸãŸæç€ºã«èœãšã蟌ãããšã§ã解空éã®ç¢ºçå¯åºŠãäžããããšãã§ããŸãã BAD:ããŠãŒã¶ãŒãšã³ãã£ãã£ã DB ãš firebase ã«ä¿åããŠã GOOD:ãUser åã®åŒæ°ãåãåã£ãŠãŠãŒã¶ãŒãšã³ãã£ãã£ãä¿åããã¡ãœãããäœæããŠãæ°žç¶å㯠repository ãä»ã㊠DB ãš firebase ã«ä¿åããŠã firebase ã¯å€éšãµãŒãã¹ãªã®ã§ãUserRepository ãšã¯å¥ã« FirebaseRepository ãäœã£ãŠãfirebase ã§ã®ãŠãŒã¶ãŒäœæã¯ãã©ã³ã¶ã¯ã·ã§ã³å¢çã®å€ã«ãªãã®ã§ãå
±éã¢ãžã¥ãŒã«ãšããŠæäŸãããŠãã logger ã䜿ã£ãŠãªã¯ãšã¹ããæåãããã°ãæ®ããŠãã ããã®å»¶é·ç·ã«ããã®ãã仿§é§åéçºããšããææ³ã ãšç§ã¯çè§£ããŠããŸãããäœãã©ãäœããããæåã«å®çŸ©ããããšã¯ã解空éã®å®çŸ©ãæç¢ºã«ããããšãšèããããšãã§ããŸãã 解空éã®ã€ã³ãããã³ã¹ããšã©ãåãåãã äžæ¹ã§ãäžèšã®äŸãèŠãã°åããéãã解空éãæç€ºçã«ãªãã°ãªãã»ã©ããããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ã€ã³ãããããã³ã¹ããäžãã£ãŠãããŸããæ¯åæ¯åãããªé·æã§æç€ºãããã®ã¯åå«ã§ãã ããã§ãããç¥ãããŠããããã«ããã¥ã¡ã³ããã«ã¹ã¿ã ããã³ããã®æŽåãªã©ãé²ããããšã«ãã£ãŠã³ã¹ããæããããšãã§ããŸããããã¥ã¡ã³ããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«æž¡ããããããã³ãããåå©çšå¯èœã«ããããšã§æç« ãæžãã³ã¹ããäžããããšãã§ããŸãã ãŸããåä»ããé©åã«è¡ãããšã§æåæ°ãããã®æ
å ±éãå¢ãããšããææ®µããããŸãã å
ã®ããã³ããã®äŸã ãšãRepositoryããšããæŠå¿µã DB ãžã®æ°žç¶åã«ã firebase ãžã®ãªã¯ãšã¹ãã«ã䜿ã£ãŠããŸã£ãŠããŸãããããã ãšãå€éšãµãŒãã¹ãšã®éä¿¡ã®å Žåã¯ãããšãã if æãæç€ºãããã¯ããã¥ã¡ã³ãã®äžã«å¿
èŠã«ãªã£ãŠããŸããŸããããã§ãPorts & Adapters ãã¿ãŒã³ã«å£ã£ãŠãå€éšãµãŒãã¹ãšã®æ¥ç¶ã«ã¯ Repository ã§ã¯ãªã Adapter ãšããæŠå¿µãçšããããã«ãããšãif æã1ã€æžããŸããããã¥ã¡ã³ããå¢ããã°å¢ããã»ã©ããã®1ã€ã®éãã¯å€§ããªå·®ã«ãªããŸãããŸããããã§ã®åä»ãã¯ãäžè¬çã§ããã°ããã»ã©ã¢ãã«ãåŠç¿ããŠããããè¯ãã§ããããã仮㫠Adapter ã§ã¯ãªãç¬èªã« GaiserïŒ Gai -bu ser -viceïŒãšåä»ããŠããŸããšãGaiser ã®è²¬åãæŠå¿µã1ã€1ã€ã€ã³ãããããå¿
èŠæ§ãçããŠããŸããŸãã *1 ã³ã³ããã¹ãã®å¢å€§ ã€ã³ãããããã³ã¹ããšã¯å¥ã«ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããäœæ¥ãé²ããã«ã€ããŠã³ã³ããã¹ããå¢å€§ããŠãããããæç€ºãžã®æ³šæã匱ãŸã£ãŠããŸããšããåé¡ããããŸãããã®åé¡ãžã®å¯Ÿå¿çãšããŠãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããèªåŸçã«æ
å ±ãåéã»å€æã§ããããã«ã€ã³ããã¯ã¹ãšãªãããã¥ã¡ã³ããçšæããŠãããããå¿
èŠãªã¿ã€ãã³ã°ã§æ
å ±ãååŸãã«ãããšããæ®µéçé瀺 (Progressive Disclosure) ãšããææ³ã Claude Code ã§ã¯ skill *2 ãšããæŠå¿µãšããŠå®è£
ãããŠãããããŸãã äžèšã®ãããªæ§ã
ãªåãçµã¿ã«ãã£ãŠã解空éã®ç¢ºçå¯åºŠãäžããããšãã§ããŸããæ¬¡ã«ããã1ã€ã®ã¢ãããŒãã«ã€ããŠèããŠã¿ãŸãããã ã¢ãããŒã2: 解空éå€ã®åºåãæå¶ãã ã解空éã®ç¢ºçå¯åºŠãäžããããšããã¢ãããŒãããã°ã©ãã§ãããšããã®èµ€ãé¢ç©ãå¢ãããšããå¶ã¿ã ã£ãã®ã«å¯ŸããŠããã¡ãã®ã¢ãããŒãã¯ãèµ€ããªãéšåã®é¢ç©ãæžããããšãã察ç
§çãªå¶ã¿ã«ãªããŸãã ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããäœæ¥å®äºããæã«ãæ©æ¢°çãããã¯èªå·±çãªãã£ãŒãããã¯ãä¿ãããšã§ãåºæºã«æºããªãã³ãŒãã ã£ãå Žåã«èªåŸçã«ä¿®æ£ãããŠãããããšããã¢ãããŒãã«ãªããŸãã確ççã«çæãããã³ãŒãããlinter ãªã©ã®éçè§£æãåäœãã¹ããªã©ã®æ±ºå®çãªåŠçã«ãã£ãŠæ€èšŒããããšã§ã解空éå€ã®ã³ãŒããæ©æ¢°çã«æå¶ããããšãå¯èœã§ãã linter ã«ããæå¶ äŸãã°ãlinter ã§ããã¡ã€ã³å±€ããã¯ã€ã³ãã©å±€ãåç
§ããŠã¯ãªããªãããšããã«ãŒã«ãèšè¿°ããŠããã°ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããã¢ãŒããã¯ãã£éåã®ã³ãŒããæžããç¬éã«ãšã©ãŒãšããŠåŒŸãããšãã§ããŸãããŸããAST ããŒã¹ã§ã®ã«ãŒã«ãå®çŸ©ããã° èŠçŽ ã« alt text ãã€ããŠããããšã匷å¶ããã ã switch æã®äžã® case ã©ãã«ãã¢ã«ãã¡ãããé ã«åŒ·å¶ ããããšè²ã
ãªããšãã§ããŸãã ã¿ã¹ã¯ã®åè§£ã«ããã³ãŒãåºåããªãšãŒã·ã§ã³ã®çµã蟌㿠ãŸããã¿ã¹ã¯ã®åè§£ãšããã®ã1ã€ã®æã§ãããã1åã®æç€ºã§åºåããã³ãŒãã®éãå°ãªããã°å°ãªãã»ã©åºåãããã³ãŒãã®ããªãšãŒã·ã§ã³ã¯éãããããã1åã®æç€ºã§è§£ç©ºéã«äœçœ®ããã³ãŒããåºåããããšã容æã«ãªãã§ãããã 2ã€ã®ã¢ãããŒãã®æ¯èŒ ã§ã¯ãäžèšã®2ã€ã®ã¢ãããŒããã©ã®ããã«äœ¿ãåããã¹ããªã®ã§ããããïŒpros/cons ãæŽçããŠã¿ãŸãããã ã¢ãããŒã1: 解空éã®ç¢ºçå¯åºŠãäžãã æŠèŠ æç€ºãã³ã³ããã¹ãã工倫ããæåããæ£è§£ãåºãããããã«ãã pros çŽæ¥çã«åºå粟床ãäžãã äœã³ã¹ãã§æ€èšŒã§ãã cons 確ççãªåºåãè¡ã LLM ã®æ§è³ªäžãåºåçµæã«äžå®ã®ãã¬ãçããããšã¯èš±å®¹ããå¿
èŠããã ã³ã³ããã¹ãã®å¢å€§ã«ããæ§èœå£åã«åŒ±ã ã¢ãããŒã2: 解空éå€ã®åºåãæå¶ãã æŠèŠ Linterããã¹ãã§åºåãæ€èšŒããäžæ£è§£ã匟ããŠä¿®æ£ããã pros 決å®çãªåŠçã«ãããã£ãŒãããã¯ãªã®ã§ã確çã«å·Šå³ãããªã ãã ããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããã³ãŒããåºåããåŸã« lint ãåäœãã¹ããå®è¡ãããä»çµã¿äœããå¿
èŠ åå¥ã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«äŸåããªã cons æç€ºããŠããçµæãåŸããããŸã§ã®æéãããã ã³ãŒãåºå â æ±ºå®çãªåŠçã«ãããã£ãŒããã㯠â ãšãŒãžã§ã³ããèªåŸçã«å€æããŠä¿®æ£ è€éãªã«ãŒã«ã«ã€ããŠã¯å®è£
ãå¿
èŠ ããããã§åŒ·ã¿ãç°ãªããããçæ¹ã ãã䜿ããšãããããã¯äž¡æ¹ãçµã¿åãããŠæŽ»çšããŠããã®ãè¯ãããã§ããã çµããã« ãšããããšã§ãä»åã¯å³ãçšã㊠AI ã³ãŒãã£ã³ã°ã®æé©åã«ã€ããŠèããŠã¿ãŸãããæé©åãé²ãã§ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«1åã®æç€ºã§åå
¥å¯èœãªã³ãŒããåºåããŠãããã確çãäžãããšãè€æ°ã®ã»ãã·ã§ã³ã䜿ã£ã䞊è¡éçºã ã£ãã Devin ã®ãããªãã£ãŒãããã¯ãµã€ã¯ã«ãé·ããšãŒãžã§ã³ããããå¹ççã«å©çšããããšãã§ããããã«ãªããŸãã ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããåºãŠããŠãã°ããã®æéãçµã¡ãŸããã人ã«ãã£ãŠ AI ã³ãŒãã£ã³ã°ãšã®åãåãæ¹ã¯æ§ã
ã ãšæããŸããããã²çããã幎æ«ãšãããã®ã¿ã€ãã³ã°ã§æ¹ã㊠AI ã³ãŒãã£ã³ã°ã®å¯èœæ§ãæ¢ç©¶ããŠã¿ãŠãã ããããã®èšäºãå°ãã§ãæ°ã¥ããçºèŠã«ç¹ãããšå¹žãã§ãã ãŸãããã£ãã£ã§ã¯äžç·ã«åã仲éã倧åéäžã§ãã ã©ãããæè¿ company deck ã update ããããããªã®ã§ãèå³ãããã°æ¯éèŠãŠã¿ãŠãã ããã speakerdeck.com CADDi Careers - æ¡çšç·åãµã€ã careers.caddi.com CADDi Careers - ãšã³ãžãã¢åãæ¡çšæ
å ± careers.caddi.com *1 : å°ãGaiser ãšããã¢ãŒãã£ã¹ãã®æ¹ãããã£ãããããã§ã *2 : https://platform.claude.com/docs/ja/agents-and-tools/agent-skills/best-practices#
ããã«ã¡ã¯ãD&Aéšã®å®æ¬ã§ãã ãã®èšäºã§ã¯ç§ãæ¥ã
AIãšæ Œéããäžã§åŸãTIPSã玹ä»ããŸãã ãªãããã®èšäºã¯ CADDi Tech/Product Advent Calendar 2025 19æ¥ç®ã®èšäºã§ããä»ã®èšäºã«ã€ããŠããã²ã芧ããã ãããšå¬ããã§ãã ã¯ããã« èª²é¡ 1.æ£è§£ãå®ãŸããªãå
容ãå€ãããš 2.æãã åçãåŸãããŠããããããã¥ããã㚠解決ç 1.åçããŠã»ãã察象ãæç¢ºã«ãã³ã³ããã¹ããäŒããããš 2.å°éçšèªãé©åãªæèã§äœ¿ãããš å¿çšäºäŸ å³é¢è§£æã®é£ãã æã
ã®åãçµã¿çŽ¹ä» ãŸãšã æåŸã« ã¯ããã« ç§ã¯AI for ApplicationããŒã ãšãããæ©æ¢°åŠç¿æ©èœãæ¥åã¢ããªã±ãŒã·ã§ã³ã«æäŸããããã®ããŒã ã«æå±ããŠããŸãããã®ããã«é¡§å®¢ã®æ¥åçè§£ãå¿
èŠãªå Žé¢ããããããããèæ¯ç¥èãåŸãããã«æ±çšLLMïŒä»¥äžAIïŒã掻çšããŠããŸãããã®èšäºã§ã¯æè¿èª¿æ»ããããšãå€ãæ©æ¢°å å·¥æè¡ã察象ã«ãã€ãŸã¥ããç¹ãšTIPSãæŽ»çšäºäŸããŸãšããŠãããŸãã èª²é¡ ç§ãAIã«è³ªåããŠæ©æ¢°å å·¥æè¡ã«ã€ããŠæ
å ±ãåŸãäžã§ãã€ãŸã¥ããç¹ã¯å€§ãã2ã€ãããŸããããŸãããããã玹ä»ããŠãããŸãã 1.æ£è§£ãå®ãŸããªãå
容ãå€ãããš äŸãã°ãããžç©Žã®é·ãã¯æäœã©ã®çšåºŠå¿
èŠãããç¥ãããå Žåããªãã¡ã¬ã³ã¹ã«ãã£ãŠäžå³ã®ããã«å
容ãç°ãªããŸãã ãããã¯èšèŒã®åæãç°ãªãã ãã§ãã©ãããæ£è§£ã»ééããšããããã§ã¯ãããŸãããããããAIããæ
å ±ãåŸãéã«ã¯èªåãç¥ãããã£ãå
容ãã確èªããå¿
èŠããããŸãã 2.æãã åçãåŸãããŠããããããã¥ããããš AIããæãã åçãåŸãããªãã±ãŒã¹ãšããŠæ¬¡ã®2ãã¿ãŒã³ãèããããŸããã²ãšã€ã¯ãã«ã·ããŒã·ã§ã³ïŒAIã®åïŒã§ããããç¥ãããŠããéããAIã¯è³ªåãããå
容ã«å¯ŸããŠèª€ã£ãåçãããããšããããŸããããã²ãšã€ã¯ã課é¡1ã§èšèŒããããã«ã質åãããå
容ãäŒãã£ãŠããªãå ŽåããããŸããå人çã«ã¯ãAIããæ°ããç¥èãåŸãäžã§ã¯åŸè
ã®åœ±é¿ã倧ãããšæããŠããŸãã ããã§åé¡ãšãªãã®ã¯ãæãã åçãåŸãããŠãããã倿ãé£ããç¹ã§ãããã®åå ã®ã²ãšã€ã¯ãèªåã«ãšã£ãŠæªç¥ã®ç¥èã®ããæ£ããã®å€æãé£ããããšãããã²ãšã€ã¯AIã®åçã«è³ªåã«å¯ŸããŠçŽæ¥çãªåçã§ãªãããšãå€ãå«ãããšã§ããããã¯AIã«ããŸã質åå
容ãäŒãã£ãŠããªãããã«èµ·ãããŸãããã®å Žåã倧æµã¯AIã®äžã§ãäœãçããã°è¯ããå
·äœçã«ã¯ããã£ãŠããªããããAIã¯èãããéžæè¢ãç¶²çŸ
çã«åçããããšããŸãããããã®åœ±é¿ã§ãããããåçãåºãŠãããã©ããããããªãã£ãããšããçµæã«ã€ãªãããŸãã 解決ç ãã®ã»ã¯ã·ã§ã³ã§ã¯äžèšèª²é¡ã®æ¹åã«åœ¹ç«ã£ãTIPSããŸãšããŸãã 1.åçããŠã»ãã察象ãæç¢ºã«ãã³ã³ããã¹ããäŒããããš ããèšãããããšã§ããã察象ãæç¢ºã«ããã³ã³ããã¹ããäŒããããšã¯ãšãŠãæå¹ã§ããããããäŒããããšã§ãèªåã®ç¥ãããå
容ãæç€ºã§ããã®ã§èªåãæ¬²ããã£ãåçããã³ãã€ã³ãã§åŸãããããã«ãªããŸããäŸãšããŠå
ã»ã©ã®ãããžç©Žã®æºé·ãã¯æäœã©ã®çšåºŠå¿
èŠããã®å Žåã«ã€ããŠäžå³ã«ãŸãšããŸããã ãã®ããã«æžãæããããšã§ãæ¬åœã«æ¬²ããã£ãæ
å ±ã®ã¿ãåçãããããã«ãªããŸãã â»1ïŒæè³ªã®äžçš®ã â»2ïŒã¿ãã穎ïŒ=ããåã穎ïŒãµã€ãºã®åŒç§°ã â»3ïŒããåã穎ã®å¥åãæ©æ¢°å å·¥ã§ã¯ã¿ãã穎ãšåŒã°ããããšãå€ãã â»4ïŒç©Žã®çžãçç¶ã«ç«ã¡äžããããžã®é·ãã確ä¿ããå å·¥ã 2.å°éçšèªãé©åãªæèã§äœ¿ãããš å°éçšèªã䜿ãããšã§ãå¹ççã«è³ªåã®åæãäŒããããšãã§ããŸããäŒŒãææ³ãšããŠãããªãã¯ããã®å°éå®¶ã§ãããšãã£ã圢ã§ãç¹å®ã®æèãAIã«äžããææ³ããããŸããå°éçšèªã䜿ãããšã§ããã«éå®çãªæèæ
å ±ãäžããããšãã§ããããããã广çã«ãªããŸããèªåã®äœéšãšããŠããäžè¬çãªèšèãçµã¿åãããŠèª¬æãããããå°éçšèªã䜿ã£ãŠã·ã³ãã«ã«æç€ºããæ¹ã广çãªåçãè¿ã£ãŠãããšæããŠããŸãã ãã®æ¹æ³ã¯ã質åã®å
·äœæ§ãäžããããšãšãã䌌ãŠããŸããäŸãã°ã¹ããŒããã©ã³ããããã«ã€ãªããã«ããå ŽåãèããŠã¿ãŸããããããã§AIã«è³ªåããéã«ãã¹ããŒããã©ã³ãâãiPhone 12ããšèªåã®äœ¿ã£ãŠããæ©çš®ãäŒããããšã§ãçµæ§å€ãæ©çš®ã䜿ã£ãŠãããã ãªãiOSã®ãµããŒããåããŠããªãã確èªãããããšèããããããã«ãªããŸããå°éçšèªã䜿ãããšã§ããããšåæ§ã«ãå¹ççã«èæ¯ãšèª²é¡ãäŒããããšãã§ããŸãã æ³šæç¹ããããŸããã²ãšã€ã¯æ£ããæèã§çšããå¿
èŠãããããšã§ãã誀ã£ãæèã§å°éçšèªã䜿ããšããã£ãŠåç粟床ãäžããå¯èœæ§ããããŸããããã²ãšã€ã¯ãAIã®ç¥èã«ãªãçšèªã䜿ããšãã®è§£éã誀ãããšã§ããç¹ã«ç€Ÿå
çšèªã«ã¯ã泚æãã ãããæ®æ®µåœããåã«äœ¿ã£ãŠããèšèãäžè¬çãªèšèã§ã¯ãªãå ŽåããããŸãã å¿çšäºäŸ ãããŸã§AIå©çšã®ã³ãã玹ä»ããŠããŸãããããããã¯ç§ãã¡ãéçºããŠããå³é¢è§£æã®é£ããã«çŽçµããŠããŸãããã®å
容ãšé¢é£ããåãçµã¿ã«ã€ããŠã玹ä»ããŸãã å³é¢è§£æã®é£ãã å³é¢ãšã¯è£œåã®ç¹åŸŽãè£œäœæ¹æ³ã説æããããã®ç»åæ
å ±ã§ãããã®ããã«æžããšå³é¢è§£æ = ç»åè§£æãšããã€ã¡ãŒãžã«ãªãããšæããŸãããå®éã«ã¯ä»¥äžã®ãããªèª²é¡ãçµã¿åããã£ãè€åã¿ã¹ã¯ã§ãã 1æã®ç»åã«èŸŒããããæ
å ±éãå€ãå¿
èŠãªæ
å ±ã®ã¿ãåãåºãå¿
èŠããã â ç»åããäœãèªã¿åãããã广çã«æå®ããããã³ãããšã³ãžãã¢ãªã³ã° è€æ°ãã¡ã€ã«ïŒç»åãšç»åãç»åãšææžãªã©ïŒãçµã¿åãããŠæç€ºããå Žåããã â é¢é£ããæ
å ±ãæ£ããåŒãåœãŠãïŒRAGãªã©ïŒ å³é¢ã«æžãããæåã»çµµãšAIã®å°éç¥èãçµã¿åãããèªè§£ãå¿
èŠ â ç»åæ
å ±ãšæåæ
å ±ãã»ãã³ãã£ãã¯ïŒæå³çïŒã«è§£éã»è§£æãã æã
ã¯ãããã®æ
å ±çŸ€ãããŠãŒã¶ãŒãç¥ãããæ
å ±ãé©åã«åãåºãããšã«ãã£ã¬ã³ãžããŠããŸãã æã
ã®åãçµã¿çŽ¹ä» ãã£ãã£ã¯ã以äžã®ãããªæŠåšãæã£ãŠããããããã®èª²é¡ã解決ã§ããæ°å°ãªãäŒæ¥ã®äžã€ã§ãã è£œé æ¥ã®èª¿éããã»ã¹ã«å®éã«å
¥ã蟌ãã çµéšç¥ã»ãã¡ã€ã³ç¥è è£œé æ¥ç¹åã®LLMãã³ãããŒã¯ããŒã¿ã»ãããå
ã«LLMã®ç¥èéãæž¬å®ã§ãã æ§ã
ãªè£œé æ¥ããŒã¿ã®è§£ææè¡ã»RAGã䜿ã£ãéèšæè¡ çè
ã¯äžèšã®ã¢ã»ãããæŽ»çšãããã¡ã€ã³ãšãã¹ããŒãã®ç¥èãåãã€ã€èª²é¡ãæŽçããŠæè¡æ€èšŒããŠããŸããã²ãšã€ã²ãšã€ãã£ããã¢ããããªããé²ãããããšãŠãæ³¥èãã§ãããçå®ã«åã«é²ããããŠãããšæããŠããŸãã ãªããRAGæè¡ã«ã€ããŠã¯åŒç€Ÿç«¹æ¬ãå¥èšäºã§ãŸãšããŠããŸãã®ã§ãã²ã芧ãã ããã https://caddi.tech/2025/12/10/090000 ãŸãLLMãã³ãããŒã¯ããŒã¿ã»ããäœæã«ã€ããŠãè¿æ¥äžã«å¥èšäºã§ã玹ä»ããäºå®ã§ãã ãŸãšã ã玹ä»ããæ¹æ³ã䜿ãããšã§èªåãç¥ãããå
容ãAIã«å¹ççã«äŒããããšãã§ããã³ã³ããã¹ããæããæãã åçãåŸãããªãããšã¯ã°ããšæžããšæããŸããäžæ¹ãAIã¯æ£ãã質åãçè§£ããŠããŠãééã£ãåçãè¿ãããšãããã®ã§ã泚æãå¿
èŠã§ãã AIã¯ãäœ¿ãæ¹ã«ã¯æ³šæãå¿
èŠã§ãããé©åã«äœ¿ãã°ãšãŠã䟿å©ãªãã®ã§ããç§ã顧客ã«AIãããã¯ããæäŸããã«ããããè£œé æ¥ãšAIãããã¯ãã®äž¡æ¹ãèžãŸããŠè°è«ããå Žé¢ãé »ç¹ã«ãããäž¡è
ãå¹ççã«çè§£ããããAIãããããæŽ»çšããŠããŸããå®ã¯ãã®ããã°ã®ç»åãAIã§çæããç»åãå°ãæçŽããããã®ã§ãã ãã®ç¥èŠãAIããç¥èãåŸããæ¹ã®ã圹ã«ç«ãŠããšå¬ããã§ãã æåŸã« ãã£ãã£ã§ã¯æ§ã
ãªããžã·ã§ã³ã§æ°ãã仲éãåéããŠãããç§ãæå±ããAI for applicationããŒã ã§ã倧åéäžã§ããæ°ããé åã«é£ã³èŸŒãããšã奜ãã§ãæè¡çãªèª²é¡è§£æ±ºããããæ¹ã«ã¯ç¹ã«ãªã¹ã¹ã¡ã§ãããèå³ããã°ãã²ã«ãžã¥ã¢ã«é¢è«ã«ãè¶ããã ããïŒ https://open.talentio.com/r/1/c/caddi-jp-recruit/pages/78398
ãã®èšäºã¯ dbt Advent Calendar 2025 ã®16æ¥ç®ã®èšäºã§ãã Data Management ããŒã ã®æ£®å²¡ã§ããèŠããªããªã£ããã®ãããã«æšãŠãããããŒã¿åºç€ãæèããŠæ¥ã
éçºããŠããŸãã ãã®èšäºã§ã¯ãCADDi ã«ããã SQL ã¬ãã¥ãŒãå¹çåããããã® CI ã®å®è·µç¥ã«ã€ããŠç޹ä»ããŸãã ã¯ããã« çæ AI ã®å°é ã«ãããããŒã¿ãšã³ãžãã¢ãªã³ã°ã¯å€§ããå€ããã€ã€ãããŸãã CADDi ã§ã¯ãAI ãšãŒãžã§ã³ããDevinãã Slack ã¯ãŒã¯ãããŒã«çµã¿èŸŒãããšã§ãBiz è·ã®ã¡ã³ããŒã§ãèªåŸçã« dbt model ã®äœæã»ä¿®æ£ãè¡ããç°å¢ãæ§ç¯ããŠããŸãã ãã®åãçµã¿ã«ãã£ãŠéçºé床ã¯å€§ããåäžããŸãããããã®äžæ¹ã§ é±30ã50ä»¶ã®PR ãšãã倧éã®ã¬ãã¥ãŒè² è·ãçºçããŸããã SQL ã®äœæã³ã¹ããã»ãŒãŒãã«è¿ã¥ãäžã§ãããã«ããã¯ã¯ãå®è£
ããããã¬ãã¥ãŒããžãšç§»ã£ãŠããŸãã ãã®ããçŸåšã®éèŠãªèª²é¡ã¯ãããã«å®å
šãã€é«éã«ã¬ãã¥ãŒãå®äºããããã§ãã SQL ã¬ãã¥ãŒã®èŸã SQL ã¬ãã¥ãŒã«ãããŠãã¬ãã¥ã¢ãŒã®æéã奪ãäž»ãªèŠå ã¯æ¬¡ã®ãããªç¢ºèªäœæ¥ã§ãã å®è¡å¯åŠã®ç¢ºèª (è³å
ã³ã³ãã€ã«ã®éç): dbt model 㯠Jinja ãå«ãããããããšèŠã ãã§ã¯å®è¡å¯èœãª SQL ã倿ã§ããŸãããæ£ç¢ºã«ç¢ºèªããã«ã¯ããŒã«ã«ã§ã³ã³ãã€ã«ãéãå¿
èŠããããå°å³ã«æéãããããŸãã ã³ãŒãã£ã³ã°ã«ãŒã«ã®éµå®ç¢ºèª: äžè²«æ§ãšä¿å®æ§ãä¿ã€ãããããŸããŸãªåœåèŠåãã³ãŒãã£ã³ã°ã«ãŒã«ãååšããŸããããããæ¯åæåã§ç¢ºèªããã®ã¯è² æ
ã倧ãããã¬ãã¥ã¢ãŒããšã«ãã§ãã¯ç²åºŠãç°ãªããå±äººåããèµ·ããã¡ã§ãã SQL ããžãã¯ã®ç¢ºèª: SQLã®æ§æãæ£ãããŠããäœæè
ãæå³ãããããžãã¹ããžãã¯ãšããŠæ£ããããŒã¿ãåºåãããŠããããã®æ€èšŒã«ã¯æéãããããŸãã ä»ã® dbt model ãžã®åœ±é¿èª¿æ»: äžã€ã®ã¢ãã«å€æŽãäžæµã«ã©ãæ³¢åããããæ¯åãªããŒãžã°ã©ãã蟿ã£ãŠç¢ºèªããã®ã¯éªšã®æããäœæ¥ã§ããç¹ã«ã¢ãã«æ°ãå€ããšãå®å
šç¢ºèªã ãã§ããªãã®æéãèŠããŸãã ãããã®èª²é¡ã解決ãããããCADDi ã§ã¯ dbt ã® CI ãæŽåããŠããŸãã éçºãããŒã®å
šäœå â» ãšã³ãžãã¢ã¯ãå¿
ããã Devin ãçµç±ããå¿
èŠã¯ãªããåèªã奜ããªæ¹æ³ã§PRãäœæããŠããŸãã以äžã¯ãç°¡åã®ãã Devin ã䜿ã£ãå Žåã®éçºãããŒã瀺ããã·ãŒã±ã³ã¹å³ã§ãã sequenceDiagram actor äŸé Œè
participant Devin as Slackã¯ãŒã¯ãããŒïŒDevinïŒ participant GitHub participant CI as GitHub Actions participant BQ_tmp as BigQueryïŒäžæããŒã¿ã»ããïŒ actor ã¬ãã¥ã¢ãŒ participant BQ_prod as BigQueryïŒstg ããŒã¿ã»ããïŒ äŸé Œè
->>Devin: Slackã¯ãŒã¯ãããŒã§<br/>dbt modeläœæ/ä¿®æ£äŸé Œ Devin->>GitHub: PRäœæ GitHub->>CI: CIèªåå®è¡ CI->>CI: 倿Žãããmodelãæ€åº CI->>BQ_tmp: dbt buildå®è¡<br/>äžæããŒã¿ã»ããäœæ<br/>(tmp_PR_XXX) CI->>GitHub: ãã³ã³ãã€ã«æžã¿SQLããšãäžæããŒã¿ã»ããã®ãªã³ã¯ããã³ã¡ã³ã CI->>äŸé Œè
: ãã«ãå®äºéç¥ äŸé Œè
->>BQ_tmp: äžæããŒã¿ã»ããã§ããŒã¿ç¢ºèª opt ä¿®æ£ãå¿
èŠãªå Žå äŸé Œè
->>Devin: 確èªã»è¿œå æç€º Devin->>GitHub: PRæŽæ° GitHub->>CI: CIåå®è¡ end ã¬ãã¥ã¢ãŒ->>GitHub: PRã¬ãã¥ãŒ ã¬ãã¥ã¢ãŒ->>GitHub: Approve & Merge GitHub->>BQ_prod: stg ããŒã¿ã»ããã«ããã〠Note over BQ_tmp: 7æ¥åŸ BQ_tmp->>BQ_tmp: äžæããŒã¿ã»ããèªååé€ CADDi ã® dbt CI ã®æ§æ ããããã¯ãå
ã»ã©ã®ã·ãŒã±ã³ã¹å³ã«æ²¿ã£ãŠãå CI ã³ã³ããŒãã³ãã®åœ¹å²ã説æããŸãã ã¹ããã1: PRäœæïŒDevin ã«ããèªåçæïŒ äŸé Œè
ãSlackã¯ãŒã¯ãããŒãèµ·åãããšãDevin AIã察話çã«dbt modelãäœæã»ä¿®æ£ããGitHub PRãèªåäœæããŸããããã«ãããBizè·ã§ã dbt model ã®å€æŽãå¯èœã«ãªããŸãã Slack ã¯ãŒã¯ãããŒã®èµ·åç»é¢ ã¹ããã2: PR ããŒã¿ã»ããã®ãã«ã 察å¿ãã課é¡: â å®è¡å¯åŠã®ç¢ºèªã⢠SQLããžãã¯ã®ç¢ºèª GitHub ã§PRãäœæããããšãCI (GitHub Actions) ãèªåçã«èµ·åãã倿Žåã®ã¿ãäžæããŒã¿ã»ãã ( tmp_PR_{PRçªå·} ) ã«ãã«ããããããŒãå®è¡ããŸãã ãã€ã³ã PRã«å«ãŸãã dbt model ãåäžã®ããŒã¿ã»ããé
äžã«ãŸãšããããšã«ã¯æããŸãããããã«ããèŠèªæ§ãåäžããäŸé Œè
ã»ã¬ãã¥ã¢ãŒãšãã« BigQuery ã³ã³ãœãŒã«ãã容æã«ããŒã¿ã確èªã§ããŸãã 以äžã«ãã®å
·äœçãªå®è£
ã¹ãããã解説ããŸãã 2-1. 倿Žãããã¢ãã«ã®æ€åº ãŸããGitHub Actions ã§ã¯ã tj-actions/changed-files ãªã©ã䜿ã£ãŠPRã§å€æŽããã dbt model ãæ€åºããŸããæ€åºãã ã¢ãã«åã¯ãåŸç¶ã® job ã«æž¡ãããã«ç°å¢å€æ°ãšããŠä¿åããŸãã jobs : extract_dbt_models : runs-on : ubuntu-latest outputs : MODEL_NAMES : ${{ steps.extract-model-names.outputs.MODEL_NAMES }} steps : # ãœãŒã¹ã³ãŒãããã§ãã¯ã¢ãŠã - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # PRã§å€æŽããããã¡ã€ã«ãæ€åº - name : Get changed files id : changed-files uses : tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47 with : files : | dbt/models/**/*.sql # ãã¡ã€ã«ãã¹ããã¢ãã«åãæœåº # - dbt/models/hoge/model_name.sql â model_name - name : Extract model names from changed files id : extract-model-names run : | CHANGED_FILES="${{ steps.changed-files.outputs.all_changed_files }} " MODEL_NAMES="" for file in $CHANGED_FILES; do model_name=$(basename " $file" .sql) MODEL_NAMES="$MODEL_NAMES $model_name" done MODEL_NAMES=$(echo $MODEL_NAMES | xargs) # å
é ã»æ«å°Ÿã®ç©ºçœåé€ echo "Extracted model names: ${MODEL_NAMES}" echo "MODEL_NAMES=${MODEL_NAMES}" >> $GITHUB_OUTPUT 2-2. dbt build ã®å®è¡ 次ã«ãæœåºããã¢ãã«åã --select ãªãã·ã§ã³ã«æž¡ãã倿Žåã®ã¿ããã«ãããŸãã ãã®éã--vars ãªãã·ã§ã³ãéããŠãPRçªå·ããšãPR察象ã¢ãã«ïŒå€æŽããã¢ãã«ïŒãã dbt ã«æž¡ããŸãã # 倿Žãããã¢ãã«ã®ã¿ããã«ã # - SELECT ã§æå®ããã¢ãã«ã¯ äžæããŒã¿ã»ããã«ãªãã€ã¬ã¯ãããŠæ¬çªç°å¢ã«åœ±é¿ãäžããªã - name: Build changed models id: dbt-build if: ${{ env.MODEL_NAMES != '' && env.PR_NUMBER != '' }} run: | echo "Building models: ${{ env.MODEL_NAMES }}" uv run dbt build \ --target prod \ --cache-selected-only \ --select ${{ env.MODEL_NAMES }} \ --vars '{"pr_number": "${{ env.PR_NUMBER }}","pr_target_models": "${{ env.MODEL_NAMES }}"}' working-directory: dbt/my_dbt_project ããã§ãvarsåŒæ°ãšãdbt ãã¯ãã®ãªãŒããŒã©ã€ããçµã¿åãããŠã以äžã®ãããªåŠçãããŠããŸãã äžæããŒã¿ã»ãããžã®ãªãã€ã¬ã¯ãïŒ generate_schema_name ã®ãªãŒããŒã©ã€ãïŒ generate_schema_name ãã¯ãã§ã¯ã以äžã®ãããªåŠçãããŠããŸãã PR察象ã¢ãã«: PRå°çšã®äžæããŒã¿ã»ããïŒtmp_PR_123 ãªã©ïŒã«äœæ ãã以å€ã®ã¢ãã«: æ¬çªããŒã¿ã»ããããã®ãŸãŸåç
§ {% macro is_pr_mode() %} {{ return (var( " pr_number " , none) is not none) }} {% endmacro %} {% macro generate_schema_name(custom_schema_name, node) -%} {# 倿°ãååŸ #} {%- set node_name = node.name -%} {%- set default_schema = target.schema -%} {%- set pr_number = var( " pr_number " , "" ) -%} {%- set pr_target_models = var( " pr_target_models " , "" ).split() -%} {%- if is_pr_mode() and node_name in pr_target_models -%} {# PRã¢ãŒã ã〠çŸåšã®ã¢ãã«ãPR察象ã«å«ãŸããŠããå Žåã¯PRåºæã®ã¹ããŒããäœ¿çš #} {{ " tmp_PR_ " ~ pr_number }} {%- elif custom_schema_name is not none -%} {# config ã§ schema ãèšå®ãããŠããå Žåã¯ãããäœ¿çš #} {{ custom_schema_name | trim }} {%- else -%} {# ããã©ã«ãåŠç: target.schema ããã®ãŸãŸäœ¿çš #} {{ default_schema }} {%- endif -%} {%- endmacro %} ãšã€ãªã¢ã¹åã®è¡çªé²æ¢ïŒ generate_alias_name ã®ãªãŒããŒã©ã€ãïŒ dbt ã§ã¯ãalias ã䜿ãããšã§ãã¢ãã«åãšã¯ç°ãªãããŒãã«åãæå®ã§ããŸããã€ãŸãã以äžã®ãããªããŒãã«ãäœæããããšãã§ããŸãã dataset_1.hoge_table dataset_2.hoge_table ããããPRããŒã¿ã»ããã§ã¯ãåããšã€ãªã¢ã¹åãæã€ããŒãã«ãè€æ°ååšãããšè¡çªããŠããŸããŸãã ããã§ãPRããŒã¿ã»ããã§ã¯ããšã€ãªã¢ã¹åã䜿çšãããå¿
ãããã©ã«ãã®ã¢ãã«åã䜿çšããŸãã {% macro generate_alias_name(custom_alias_name=none, node=none) -%} {# 倿°ãååŸ #} {%- set node_name = node.name -%} {%- set pr_target_models = var( " pr_target_models " , "" ).split() -%} {%- if is_pr_mode() and node_name in pr_target_models -%} {# PRã¢ãŒã ã〠çŸåšã®ã¢ãã«ãPR察象ã«å«ãŸããŠããå Žåã¯ããã©ã«ããšã€ãªã¢ã¹ãäœ¿çš #} {{ node_name }} {%- elif custom_alias_name -%} {# config() ã§ alias ãèšå®ãããŠããå Žåã¯ãããäœ¿çš #} {{ custom_alias_name | trim }} {%- else -%} {# ããã©ã«ãåŠç: node.name ããã®ãŸãŸäœ¿çš #} {{ node_name }} {%- endif -%} {%- endmacro %} Incrementalã¢ãã«ã¯åžžã«å·®åæŽæ°ïŒ is_incremental ã®ãªãŒããŒã©ã€ãïŒ Incremental ã¢ãã«ãååå®è¡ããå Žåãéåžžã¯å
šä»¶ãã«ããè¡ããããããã³ã¹ããé«é¡ã«ãªããã¡ã§ãã ãŸããPRããŒã¿ã»ããã®äž»ãªç®çã¯ãSQLããžãã¯ã®åäœæ€èšŒãã§ãããå¿
ãããå
šæéã®ããŒã¿ãåŠçããå¿
èŠã¯ãããŸããã ããã§ãPRããŒã¿ã»ããäžã§ã¯ is_incremental() ãåžžã« true ãè¿ãããã«ãã¯ãããªãŒããŒã©ã€ããã匷å¶çã«å·®åæŽæ°ã¢ãŒããšããŠåäœãããŸãã {% macro is_incremental() %} {# PRããŒã¿ã»ããã§ã¯åžžã«trueãè¿ããåžžã«å·®ååŠçãè¡ã #} {% if is_pr_mode() %} {{ return ( true ) }} {% else %} {{ return (dbt.is_incremental()) }} {% endif %} {% endmacro %} ãã®ãªãŒããŒã©ã€ãã«ãããPRããŒã¿ã»ããã§ã¯ååå®è¡ã§ãã£ãŠã is_incremental() ã true ãšãªããã¢ãã«å
ã§å®çŸ©ãããæéãã£ã«ã¿ïŒäŸïŒçŽè¿7æ¥éïŒãèªåçã«é©çšãããŸããããã«ãããã¹ãã£ã³éãå¿
èŠæå°éã«æããã³ã¹ãåæžãã§ããŸãã select * from {{ ref( " hoge_models " ) }} where true {% if (is_incremental()) %} -- PRããŒã¿ã»ããã§ã¯ãååå®è¡ã§ããã®ãã£ã«ã¿ãé©çšããã and jst_date >= date_sub( current_date (), interval 7 day) {% endif %} ãã€ã³ã: defer æ©èœã®æ€èš ãããŸã§èªããšãdbt ã«è©³ããæ¹ã§ããã°ãdbt ã® defer æ©èœã䜿ãã°ãããã·ã³ãã«ã«å®çŸã§ããã®ã§ã¯ïŒããšæãããããããŸããã å®éã« defer ã®æ¡çšãæ€èšããŸããããæ¬æ§æã§ã¯ãPR ã§äœæãããããŒãã«ã¯åäžã®ããŒã¿ã»ããã«éçŽããããšããèšèšæ¹éãæ¡ã£ãŠããŸãããã®å Žåãdefer ã䜿ã£ããšããŠã generate_schema_name ãªã©ã® macro ãªãŒããŒã©ã€ããäžå¯é¿ã§ããã defer ãçšããããšã§ã倿Žã®ãã£ãã¢ãã«ã®ç¹å®ã dbt ã«å§ãããããšããã¡ãªããã¯ãããŸããããã®äžæ¹ã§ãmanifest ãã¡ã€ã«ã®ç®¡çããåç
§å
ãæé»çã«åãæ¿ããããšã«ããæåã®åããã«ãããšãã£ãéçšã³ã¹ããçºçããŸãã ããããç·åçã«èæ
®ããçµæãæ¬ã±ãŒã¹ã§ã¯ defer ã®å°å
¥ã«ãã广ã¯éå®çãšå€æããæç€ºçã«å¶åŸ¡ã§ãã macro ããŒã¹ã®ã¢ãããŒããæ¡çšããŠããŸãã ã¹ããã3: ã³ã³ãã€ã«æžã¿SQLãš PRããŒã¿ã»ããã®ãªã³ã¯ãã³ã¡ã³ã ãã«ãæååŸãdbt ãã³ã³ãã€ã«ãã SQL ã PR ã«èªåã³ã¡ã³ãããŸãã # PR ã§äœæããã dbt ã® compiled ããã SQL ã pull request ã®ã³ã¡ã³ãã«è¿œå # partial parsing ã䜿ãããã« vars ãåãã«ãã - name : Get compiled dbt model paths id : compiled-paths if : ${{ env.MODEL_NAMES != '' && env.PR_NUMBER != '' }} run : | dbt_model_paths_json=$(uv run dbt ls \ --quiet \ --target prod \ --no-populate-cache \ --resource-type model \ --select ${{ env.MODEL_NAMES }} \ --vars '{"pr_number": "${{ env.PR_NUMBER }}","pr_target_models": "${{ env.MODEL_NAMES }}"}' \ --output json \ --output-keys original_file_path \ ) dbt_compiled_paths=$(echo "$dbt_model_paths_json" | jq -r -s 'map("dbt/my_dbt_project/target/compiled/my_dbt_project/" + .original_file_path) | unique | join(" ")' ) echo "dbt_compiled_paths:: ${dbt_compiled_paths}" # åºåã¯1è¡ã«ãªããããã·ã³ãã«ãª echo ã§èšå®ã§ãã echo "COMPILED_PATHS=${dbt_compiled_paths}" >> $GITHUB_OUTPUT working-directory : dbt/my_dbt_project - name : Comment compiled SQL on PR uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 if : steps.compiled-paths.outputs.COMPILED_PATHS != '' env : COMPILED_PATHS : ${{ steps.compiled-paths.outputs.COMPILED_PATHS }} PR_NUMBER : ${{ env.PR_NUMBER }} with : github-token : ${{ secrets.GITHUB_TOKEN }} script : | ##### é·ãã®ã§ã³ã¢éšåã®ã¿æç² ##### const fs = require('fs'); const path = require('path'); const compiledPaths = process.env.COMPILED_PATHS.split(' '); let bodySQLs = `## Compiled SQLs for changed models:\n\n`; for (const fullPath of compiledPaths) { const fileName = path.basename(fullPath); let detailBlock; try { const sql = fs.readFileSync(fullPath, 'utf8' ); detailBlock = `<details><summary>â
$ { fileName } </summary>\n\n\`\`\`sql\n$ { sql.trim() } \n\`\`\`\n\n</details>\n`; } catch (error) { detailBlock = `<details><summary>ð« $ { fileName } </summary>\n\n\`\`\`\nError : $ { error.message } \n\`\`\`\n\n</details>\n`; console.error(`Error reading file $ { fullPath } : $ { error.message } `); } bodySQLs += detailBlock; totalLength += detailBlock.length; } ##### é·ãã®ã§ã³ã¢éšåã®ã¿æç² ##### æçµçã«ã以äžã®ãããªã³ã¡ã³ããäœæãããŸããããã«ãããBigQueryã§ãã®ãŸãŸå®è¡ã§ããã³ã³ãã€ã«æžã¿SQLãã¯ã³ã¯ãªãã¯ã§ååŸã§ããŸãã GitHub ã³ã¡ã³ãã®äŸ ã¹ããã4: AIã¬ãã¥ãŒ 察å¿ãã課é¡: â¡ ã³ãŒãã£ã³ã°ã«ãŒã«ã®éµå®ç¢ºèª CIå®è¡ãšäžŠè¡ããŠã devin_coding_style_review ã©ãã«ãä»ãã PR ã«å¯Ÿã㊠Devin AI ãèªåçã«ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãã¬ãã¥ãŒããŸãã ã¬ãã¥ãŒèгç¹ã®ææå ã¬ãã¥ãŒã®å±äººåãé²ãããã以äžã®ããã¥ã¡ã³ããæŽåããDevin ã«èªã¿èŸŒãŸããŠããŸããéåãããã°ãPR ã³ã¡ã³ãã§ææãããã®ã§ããããããšã« Devin ãä¿®æ£ãããŸãã review_check_list.md : ã¬ãã¥ãŒèгç¹ã®ãã§ãã¯ãªã¹ã coding_style_guide.md : ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã¬ã€ã ã¹ããã5: ããŒã¿ç¢ºèªãšãã£ãŒããã㯠察å¿ãã課é¡: ⢠SQLããžãã¯ã®ç¢ºèª ãã«ãå®äºæã«ãPR äœæè
ã® Slack ã¹ã¬ããã«èªåéç¥ããŸãã äŸé Œè
ã¯ãSlackéç¥ãåãåã£ãåŸãBigQueryã®äžæããŒã¿ã»ãã ( tmp_PR_{PRçªå·} ) ã§å®éã®ããŒã¿ã確èªããŸããããæå³ããããŒã¿ãšç°ãªãå Žåã¯ãDevinã«è¿œå æç€ºãåºããŠPRãæŽæ°ã§ããŸãããã®ä¿®æ£ã«ãŒãã«ãããã¬ãã¥ã¢ãŒã«æž¡ãåã«ããŒã¿ã®å質ãé«ããããŸãã Slack ã¯ãŒã¯ãããŒã®ã³ã¡ã³ãäŸ ã¹ããã6: ã¬ãã¥ãŒïŒããŒãž ã¬ãã¥ã¢ãŒã¯ã以äžã確èªããŠPRãã¬ãã¥ãŒããŸãïŒ ã³ã³ãã€ã«æžã¿SQL : PRã³ã¡ã³ãã§å®éã®SQLãç¢ºèª å®ããŒã¿ : BigQueryã§äžæããŒã¿ã»ããã®ããŒã¿ãç¢ºèª Devinã¬ãã¥ãŒçµæ : AIã¬ãã¥ãŒã®ã³ã¡ã³ããç¢ºèª ãããã®æ
å ±ãæã£ãŠãããããã¬ãã¥ãŒæéã倧å¹
ã«ççž®ã§ããŸããæ¿èªåŸãPRãmainãã©ã³ãã«ããŒãžããŸãã ã¹ããã7: STG ããã〠- Post-Merge 察å¿ãã課é¡: ⣠ä»ã®dbt modelãžã®åœ±é¿èª¿æ» PR ãããŒãžããããšãèªåçã«STGç°å¢ã§ dbt build ãå®è¡ãããŸãããã®éã察象ã¢ãã«ã« + ãä»äžããããšã§ãäžæµã¢ãã«ãå«ããäŸåé¢ä¿ã®æ€èšŒãè¡ããŸãã ãã build ã倱æããå Žå㯠Slack ã«éç¥ãããŸããããã«ãããæ¬çªãããã€åã«åé¡ã確å®ã«æ€åºã§ããŸãã ãªã CIïŒPre-MergeïŒã§ãããªãã®ãïŒ æ¬æ¥ã§ããã°ããŒãžåã® CI ã§å
šéãã§ãã¯ãè¡ãã®ãçæ³ã§ããã以äžã®çç±ãã Post-Merge ã§ã®å®æœãšããŠããŸãã æéãšã³ã¹ã: äžæµã¢ãã«ãŸã§ãã¹ãŠãã«ããããšãCIã®å®è¡æéãšã³ã¹ããèšå€§ã«ãªãããã äœé »åºŠ : å®ç§ã§ã¯ãããŸããããDevinãäœæããPRã¯äŸåé¢ä¿ãå«ããä¿®æ£PRãããŠãããå¯èœæ§ãé«ãã£ãã ãªã«ããªã®ç¶äº: ç¿æ¥ã® Prod ãã«ãïŒæ¬çªæŽæ°ïŒãŸã§ã«ä¿®æ£ãéã«åãã°å®å®³ã¯ãªãã ãŸãšã æ¬èšäºã§ã¯ãCADDi ã«ããã SQL ã¬ãã¥ãŒãå¹çåããããã® dbt CI ã®å®è·µç¥ ã玹ä»ããŸããã ãã®ä»çµã¿ã«ãããã¬ãã¥ã¢ãŒã¯ä»¥äžã®åœ¢ã§ã¬ãã¥ãŒãè¡ããŸãã ã³ã³ãã€ã«æžã¿ SQL 㯠PR ã³ã¡ã³ããèŠãã ã ããžãã¹ããžãã¯ã®åææ€èšŒã¯äŸé Œè
åŽã§å®æœ ã³ãŒãã£ã³ã°ã«ãŒã«ã¯ AI ã¬ãã¥ãŒã§æ
ä¿ äžæµåœ±é¿ã¯ Post-Merge ã§èªåæ€åº çµæãšããŠãSQL ã¬ãã¥ãŒã®è² è·ã倧å¹
ã«è»œæžã§ããŸããã çæ AI ãäœæãã PR ã®ã¬ãã¥ãŒã«æ©ãã§ããããŒã¿ãšã³ãžãã¢ã®æ¹ã
ã®åèã«ãªãã°å¹žãã§ãã ä»å¹Žã¯ã CADDi Tech/Product Advent Calendar 2025 ã§ãããã«ãããã³ãSaaSã§åå¥ã®BigQueryãªãœãŒã¹ãäœæããéã«ããã£ãåé¡ãšãã®è§£æ±ºçã«ã€ããŠæžããŸããããã¡ããèªãã§ããã ãããšå¬ããã§ãã Terraformã®Stateè¥å€§åãè§£æ¶ïŒTerramate ã§å®çŸãã ãã«ãããã³ã SaaS ã®ããŒã¿åºç€
Control Planeéšã® å°æ£® ( @littleforest12 )ã§ãã ãã¡ã㯠ãã£ãã£æ ªåŒäŒç€Ÿã®ã¢ããã³ãã«ã¬ã³ã㌠ã®16æ¥ç®ã®èšäºã§ãã æè¿ã瀟å
ã§ãããŸã§ã®äžã§ã¯æ¯èŒçå€§èŠæš¡ãªéçºãããžã§ã¯ãã®ãªãŒãã¢ãŒããã¯ããæåœããŸããŠãå¥èµ°ããŠããŸãã ãããžã§ã¯ãã¯ããããç«ã¡äžãã£ãŠãããšããã§ãããã¢ãŒããã¯ããšããŠã®èããã¡ã³ããŒåãã«çºä¿¡ããããšæžãã¯ãããããšãããã£ãããªã®ã§Tech Blogã«ãããããããšæããŸãã èæ¯ ç§ãã¡ã¯ã è£œé æ¥AIããŒã¿ãã©ãããã©ãŒã CADDi ããšããŠãããã¯ããå±éããŠããããã©ãããã©ãŒã ã®äžéšãšã㊠CADDi Drawer ã CADDi Quote ãšãã£ãã¢ããªã±ãŒã·ã§ã³ãæäŸããŠããŸãã ãã¡ããããããã¯éçºããéçšãŸã§ãã¹ãŠãå
補ã§ãã éåžžã¯ãåã¢ããªã±ãŒã·ã§ã³ããã©ãããã©ãŒã 暪æã§ããããã4ã8åçšåºŠã®ããŒã ã«åãããŠæ°æ©èœã®éçºãæ¹ä¿®ãšãã£ãéçºãããžã§ã¯ããæ¥ã
é²ããŠããŸãã ä»åã¯è€æ°ããŒã ã®æ
åœé åã«ãŸãããéçºãå¿
èŠã§ãããŒã 暪æã§ã®ã¢ãŒããã¯ãã£èšèšã課é¡è§£æ±ºãå¿
èŠãšãªããŸããã ããã§ãåææ®µéããé¢ãã£ãŠããç§ããªãŒãã¢ãŒããã¯ããæ
åœããããšã«ãªããŸããã ç§èªèº«ã¯ãã€ãã¢ãŒããã¯ãããã£ãŠããããã§ã¯ãããŸããã ãœãããŠã§ã¢ãšã³ãžãã¢ãšããŠãç¶æ³ã«å¿ãã圹å²ãæ
ã£ãŠããŸãããä»åã¯ä¹
ãã¶ãã«(ãããŠãã£ãã£ã«ãžã§ã€ã³ããŠåããŠ!)ã¢ãŒããã¯ãã®åžœåããã¶ãããšã«ãªããŸããã ãããŸã§ããéçºçŸå Žã§ã¢ãŒããã¯ããããã«æºããç«ã¡äœçœ®ã§ä»äºãããããšã¯äœåºŠããããŸãã ãã®ãã³ã«æ©ãã§ããã®ãã èªåãèããã¢ãŒããã¯ãã£ããã©ããã£ãŠã¿ããªã«åãå
¥ããŠããããïŒ ããšããããšã§ãã äœåºŠããã®ç«å Žãçµéšããããšã§ãèªåãªãã®ã¢ãããŒããèŠããŠããŸããã æ¬èšäºã®ååã§ã¯ãã®æ©ã¿ã®èæ¯ã説æããåŸåã§ã¯ç§ããšã£ãŠããã¢ãããŒãã玹ä»ããŸãã å
ã«æ žå¿ãç¥ãããæ¹ã¯ã è
¹ãããããæåŸãŸã§äŒŽèµ°ããã£ãŠãããã¢ãŒããã¯ã ãããèªã¿ã¯ãããŠãã ããã ç®æ¬¡ èæ¯ ã¢ãŒããã¯ãã¯ãã¹ãŠãèŠéããªã èŠæ±/èŠä»¶ã¬ãã«(What)ã®äžç¢ºå®æ§ æè¡ã¬ãã«(How)ã®äžç¢ºå®æ§ äžç¢ºå®æ§ã«ã©ãã¢ãããŒããããïŒ è
¹ãããããæåŸãŸã§äŒŽèµ°ããã£ãŠãããã¢ãŒããã¯ã ã¢ãŒããã¯ãã¯ã¹ãŒããŒãã³ã§ã¯ãªã 1. ã¢ãŒããã¯ãã£ã«è³ã£ãèãã®éçãå
±æãã 2. åããŒã /ã¡ã³ããŒã«çްéšã®æ€èšãå§è²ãã 3. ãããããŠã³ã§æŒãã€ããªãã»ãã ãããã«ææ¡ã蚱容ãã ãå
±åµãã§äžç¢ºå®æ§ãä¹ãè¶ãã æåŸã« ã¢ãŒããã¯ãã¯ãã¹ãŠãèŠéããªã ã¢ãŒããã¯ãã£ãšã¯ããèŠæ±äºé
ãã·ã¹ãã ãšããŠå®çŸããéã®ããã®æ¹åŒã®å±å°éªšããšãèšããããã§ãããæåã«èããã¢ãŒããã¯ãã£ããã¹ãŠã®ç¶æ³ãæ³å®ã§ããããã§ã¯ãããŸããã ç§ãã¡ãæªæ¥ãèŠéããªã以äžãã©ããªã¢ãŒããã¯ãã£ããåææ®µéã§ã¯æ¬è³ªçã«äžç¢ºå®ã§ãã ãã®äžç¢ºå®æ§ã«ã¯ã2çš®é¡ã®èŠå ããããŸãã ããã¯ãã èŠæ±/èŠä»¶ã¬ãã«ã®äžç¢ºå®æ§ ããšã æè¡ã¬ãã«ã®äžç¢ºå®æ§ ãã§ãã ã¢ãŒããã¯ãã£çå®ããã¹ããããžã§ã¯ãã®åææ®µéã§ã¯ããã®äž¡æ¹ã®äžç¢ºå®ããåãå
¥ããã°ãªããŸããã èŠæ±/èŠä»¶ã¬ãã«(What)ã®äžç¢ºå®æ§ å€ãã®çããããåãã®éããITã·ã¹ãã ããããã¯ãã«å¯ŸãããŠãŒã¶ãŒã®èŠæ±ããã¡ããšèšèªåããã®ã¯å°é£ã§ãã ããŠãŒã¶ãŒã¯äœããããã®ãããã®ããã«ã·ã¹ãã ã¯äœãå®çŸãã¹ããªã®ãããšããWhatãã¯ã£ããããããªãããšããã®ããèŠæ±/èŠä»¶ã¬ãã«ã®äžç¢ºå®æ§ãã§ãã ãŠã©ãŒã¿ãŒãã©ãŒã«éçºã®èãæ¹ã§ã¯ãèŠæ±ãèŠä»¶ãæç¢ºã«ããŠããã¢ãŒããã¯ãã£ãèããã¹ãã§ãããå€ãã®ãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸãããããã¯ãéçºã§ã¯ãã¢ãŒããã¯ãã£ç宿®µéã§ãã¹ãŠã®èŠæ±/èŠä»¶ãæç¢ºã«ããã®ã¯äžå¯èœã§ãã ãŸãããããã¯ãã¯åžžã«é²åããŠãããã®ã§ãã ãã£ãããšèŠããŠããè¿ãå°æ¥ã®æ§æ³ã«åãããæ¡åŒµæ§ããšããéæ©èœèŠä»¶ãæ±ããããŸããããã£ãããšããèŠããŠããªããããæ¡åŒµæ§ããšããèŠä»¶ã®å
·äœçãªèšèªåãå°é£ã§ãåœç¶ãããèžãŸããã¢ãŒããã¯ãã£èšèšãå°é£ã«ãªããŸã *1 ã æè¡ã¬ãã«(How)ã®äžç¢ºå®æ§ äžæ¹ãèŠæ±/èŠä»¶ã確å®ã§ãã£ãŠãããã®å®çŸææ®µ(How)ãã¯ã£ããããªããšããã®ããæè¡ã¬ãã«ã®äžç¢ºå®æ§ãã§ãã ããšãã°ãå
žåçãªèŠä»¶ã§é¡äŒŒã®éçºäºäŸãå€ãã®ãªããæè¡çãªäžç¢ºå®æ§ã¯ã»ãšãã©ç¡ãã§ãããã å€ãäŸã§ãããWeb-App-RDBã®äžå±€æ§é ã§ãSpringFrameworkã䜿ãã°OKïŒãçšåºŠã®æ±ºãã§ãããªããšããªããŸãã ãããã£ãæ¹éãæ±ºããŠããããæ®ãã¯éçºããŒã ã®çããã§ããããïŒããšã次ã®çŸå Žãžé¢¯çœãšå»ã£ãŠè¡ãã¢ãŒããã¯ãã¯ã«ãã³ãããããããŸããã ãããããããªçæ³éãã«ã³ããé²ãéçºçŸå Žããç§ã¯èŠãããšããããŸããã ãªã«ãããŸããããªãã®ã§ããããïŒ åææ®µéã§ããã¹ãŠãèŠéããããããªãããã§ãã ç¹ã«ãå€ãã®é¡§å®¢ã«å¯ŸããŠæäŸãããŠéçšäžã®ãµãŒãã¹ã«å¯Ÿããåºç¯å²ã®ä¿®æ£ãæ©èœè¿œå ã¯ãæè¡çã«å€§ããªäžç¢ºå®æ§ã䌎ããŸãã æ®å¿µãªãããæ¢åã·ã¹ãã ã®èšèšãæ¯ãèããããã¹ãŠãã¡ããšããã¥ã¡ã³ãåãããŠããããšã¯çšã§ãããã ãã®ãããã¢ãŒããã¯ãã£ç宿®µéã§ããã以éã®èšèšã¬ãã«ã®æŽåæ§ã確èªãããã®ãå°é£ã§ãã ãŸãèšèšãé²ãã§ãããé ããŠããèŠä»¶ãçºèŠããããšãå€ãã§ãããã èŠèœãšããŠããèŠä»¶ã«å¯Ÿå¿ãããããã¢ãŒããã¯ãã£ã®èŠçŽããå¿
èŠã«ãªãã±ãŒã¹ããããããããŸããã ã¢ãŒããã¯ãã£ãåºæ¬èšèšã¬ãã«ã§ã¯æŽåæ§ãåããŠããããã«èŠããŠãããã詳现ãªèšèšãå®è£
ãé²ããŠãã£ããšãã«ã¯ãããŠæããã«ãªãäžæŽåã¯ã©ãããŠãçºçããŸãã ããšãã°ã次ã®ãããªç¶æ³ãçµéšãã人ã¯å€ãã®ã§ã¯ãªãã§ããããã æ©èœAã®æ¯ãèãã倿Žããçµæãæ¬æ¥äºå®ããŠããªãã£ãæ©èœBã®æ¯ãèããåãããã«å€æŽããªããšããããã¯ããšããŠã®æŽåæ§ããšããªããªã æ°ãã責åãã³ã³ããŒãã³ãAã«è¿œå ããããããããèããé²ãããšããã®è²¬åãæã€ã¹ããªã®ã¯ã³ã³ããŒãã³ãBã®æ¹ã ã£ã ããŒã ã®è²¬ä»»ç¯å²ã«éããäžæŽåãªãã°ãããŒã å
ã®èšèšå€æŽã§æžãã®ã§ã倧ããªåœ±é¿ã¯ãããŸããã ããããæ©èœé
眮ã責åã®èŠèª€ããšãã£ãã¬ãã«ã®åé¡ã¯ãããŒã å¢çãè·šããåé¡ã«çºå±ããŸãã æ¬æ¥ãªãã°ãã¢ãŒããã¯ãã£ã®ã¬ãã«ã§è»éä¿®æ£ããã®ãçã ã£ããããã±ãŒã¹ãå€ãã§ãããã ããã«ããŠã©ãŒã¿ãŒãã©ãŒã«éçºã§å·¥çšæ¯ã«æ
åœäŒç€Ÿãéããããªã±ãŒã¹ã¯ãã£ãšå€§å€ã§ãã ææ»ãã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ãã®æ¹ã倧ããã®ã§ãéç¶ãšããªãæãããã€ã€ãçŸå Žã¬ãã«ã§ã®èŸ»è€åãããããããåŸãªãã±ãŒã¹ãåºãŠããŸãã ïŒãããŠããªãã§ãããèŠèœãšãããã ïŒããšã人ç¥ããã¢ãŒããã¯ãã¯æšã¿ãè²·ããŸãïŒïŒ äžç¢ºå®æ§ã«ã©ãã¢ãããŒããããïŒ ãã®äžç¢ºå®æ§ã«å¯ŸåŠããããã®äžè¬çãªã¢ãããŒãã¯ã¢ãžã£ã€ã«éçºã§ãã éçºãµã€ã¯ã«ãé«é »åºŠã«ãŸããããŠãŒã¶ãŒããã®ãã£ãŒãããã¯ãåããããšã§äžç¢ºå®æ§ããåãã圱é¿ãæå°åãããšããã¢ãããŒããåããŸãã å°ããªç²åºŠã®ãªãªãŒã¹ãç¹°ãè¿ããããã¢ãŒããã¯ãã£ã挞é²çã«æ¹åã§ããæè¡çãªäžç¢ºå®æ§ãäžããããã§ãããã ç¹ã«æ°èŠéçºã§ã¯ããã®ã¢ãããŒãã¯ããªãæå¹ã§ãã äžæ¹ãã¢ãžã£ã€ã«éçºçã¢ãããŒããåãã«ããç¶æ³ããããŸãã ãã®1ã€ããæ¢ã«å€ãã®ãŠãŒã¶ãŒã«äœ¿ãããŠãããããã¯ãã«å¯ŸããŠãæ¢åæ©èœã«å¯Ÿããæšªæçãªæ©èœè¿œå ã倿Žãè¡ãå Žåã§ãã çŸåšç§ãåãçµãã§ãããããžã§ã¯ããããŸãã«ãã®ç¶æ³ã§ãã ç§ãã¡ã®å±éãããããã¯ãã®ã客æ§ã¯äŒæ¥ã§ãããå Žåã«ãã£ãŠã¯ã客æ§åŽã®æ¥åã«ãã£ã€ãçµã¿èŸŒãŸããŠå©çšãããŠããã±ãŒã¹ããããŸãã ãã®ãããå©çšè
ãå¢ããã°å¢ããã»ã©ããã§ã«éçšäžã®æ©èœå
šäœã«åœ±é¿ãããããªå€æŽããããç°¡åã«ãªãªãŒã¹ã§ããªããªããŸãã æ¬æ¥ãªãã°ãããŒã¿çãªã©ãæäŸããŠåå¿ãèŠãªããæ¹åãããšãã£ãææ³ããšããããšããã§ãã åçºã®æ°æ©èœã§ããã°ãããããããã§ãããæšªæçãªæ©èœã§ã¯ããããããŸãã *2 ã äžæããããšãã客æ§ã®äŒæ¥æŽ»åã«åœ±é¿ãäžããã¬ãã«ã®é害ãçºçãããããªãããã§ãã è
¹ãããããæåŸãŸã§äŒŽèµ°ããã£ãŠãããã¢ãŒããã¯ã ãããããæ¬é¡ã§ãã ãã®ããã«ããŸããŸãªäžç¢ºå®æ§ãããç¶æ³ã§ããããžã§ã¯ããåã«é²ããããã«ãã¢ãŒããã¯ãã¯ã©ã®ããã«æ¯ãèãã¹ããªã®ã§ããããã æåã«èããæ¡éãã«æåŸãŸã§èµ°ããããããšã¯ãããå°ãªãã«ãé¢ããããåææ®µéã§ã¯ãå€ãã®éžæè¢ã®ãã¡ãæ£è§£ãæãããªç¶æ³ã¯åžã§ãã ã¢ãŒããã¯ãã¯ç¡æ°ã®éžæè¢ãããæŽåæ§ããã£ãŠç®çãéæã§ããçµåããè€æ°çã¿åºããããããããã«ããè¯ããšä¿¡ããããéžæè¢ãéžã³åã£ãŠæåŸã¯ã ããã«è³ããïŒ ããšè
¹ãããããªããã°ãªããŸããã ãŸãã«ãç®ãã€ã¶ã£ãŠéã®ç©Žã«ç³žãéããããªå°é£ãªããšã§ãã ç§ã¯ã¢ãŒããã¯ããæ
åœãã以äžãã èšèšã»å®è£
ã»ãã¹ãã»ãªãªãŒã¹ãŸã§éçºãããžã§ã¯ãã«äŒŽèµ°ããåæã«èæ¡ããã¢ãŒããã¯ãã£ãå®å¹æ§ãæã£ãŠåœ¢ãšãªããŸã§è²¬ä»»ãæã€ã¹ã ãã ãšèããŠããŸãã ãã®éçšã§ã¯ãããŒã éã§ã®ä»æ§ã調æŽããããå
šäœã«é¢ãã課é¡ã®æœåºã解決ãšãã£ã掻åãç¶ç¶çã«è¡ããªããã°ãªããŸããã ã¢ãŒããã¯ãã¯ã¹ãŒããŒãã³ã§ã¯ãªã ãšã¯ãã£ãŠããã¢ãŒããã¯ãããã ã®äººéã§ããã¹ãŒããŒãã³ã§ã¯ãããŸããã ãããžã§ã¯ãèŠæš¡ã倧ãããªããšçްéšãã¹ãŠã«ç®ãé
ããŸãããã責任æãåã£ãŠãã¹ãŠã®åé¡ãäžäººã§è§£æ±ºããããšãããšãèªåèªèº«ãããã«ããã¯ãšãªã£ãŠãããžã§ã¯ããæ¢ããŠããŸããŸãã ãèªåãããš10人ããã°ã»ã»ã»ããªããŠæã£ãããšããã人ãå€ãã§ããããç§ãããæããŸãã ã§ã¯ãã©ãããã°ããã®ã§ããããã ç§ããããŸã§ã®çµéšããåŸããã€ã³ãã¯ã次ã®3ã€ã§ãã èãã®éçãå
±æããã㚠现éšã®æ€èšã¯åããŒã ãã¡ã³ããŒã«å§è²ããããš èªåã®èãã«ãã ãããããã倿Žã蚱容ããããš ãããã説æããŸãããã 1. ã¢ãŒããã¯ãã£ã«è³ã£ãèãã®éçãå
±æãã èªåäžäººã§ã¯ãã¹ãŠã解決ã§ããªãã®ã§ãã§ããã ãåãèããå
±æããåãèãã«åºã¥ããŠè§£æ±ºã§ãã人ãå¢ããäœæŠã§ãã ããã°ãã¢ãŒããã¯ãã£æèã®æ°Žå¹³ã¹ã±ãŒãªã³ã°ã§ãã ä»åã¯ãåæã¢ãŒããã¯ãã£ãèããã«ãããããããžã§ã¯ãã«é¢ããåããŒã ã®äž»èŠäººç©ã«ååããŠããããã¢ãŒããã¯ãã£æ€èšããŒã ãšããŠäžç·ã«èããŸããã æ¢åæ©èœã«ã€ããŠã¯ãåœç¶åããŒã ã®ã¡ã³ããŒã®æ¹ã詳ããã§ãããããšããç§ãä»ã®ã·ã¹ãã ã现éšãŸã§ææ¡ã§ããŠããããã§ã¯ãããŸããã ããããããèšèšæ¡ãåºããŠãããã€ã€ãè°è«ãéããŠç§ããããåããŸãšããããããã«ããŸããã ã¢ãŒããã¯ãã£æ€èšããŒã ãšããŠã®ã¢ãŠããããã¯ã以äžã®ãããªãã®ã«ãªããŸããã å
šäœã®æŠå¿µã¢ãã« èŠæ±ã«å¯Ÿããçè§£ãå³ç€ºããèŠä»¶ãžãšèœãšã蟌ãããã®å
¥ãå£ãšãªããã®ã ERå³ãšããŠè¡šçŸã ãã£ããã¢ãŒããã¯ã㣠åããŒã ãæ
åœããæ¢åã³ã³ããŒãã³ãã«å¯Ÿãã責ååæ
ãããŸããªã¬ãã«ã®APIãæ³å®ã·ãŒã±ã³ã¹ã®æç€º æ€èšéçšã§æœåºããæè¡èª²é¡ã®äžèЧã»èŠä»¶ã®äžèЧ ã¢ãŒããã¯ãã£çå®éçšã§è§£æ±ºãããã®ãããããåããŒã ã«è§£æ±ºãå§ãããã®ããã 課é¡ã«ãã£ãŠã¯ãââããŒã ãšÃÃããŒã ã®éã§è§£æ±ºããŠãã ããããšå§ããã±ãŒã¹ããã èŠä»¶ã¯PdMãšè©±ããŠããããªãããšæ±ºããããšããã®çç±ãæããã«ãã æ€èšéçšã§ã¯ãPdM(ãããã¯ããããŒãžã£ãŒ)ãæç€ºããèŠæ±äºé
ããPdMãšã®è°è«ãéããŠå
·äœçã«æ·±æãããããäžæç¢ºã ã£ãèŠä»¶ã®å
·äœåãšãã£ãäœæ¥ãè¡ããŸããã ã³ãã¥ãã±ãŒã·ã§ã³éã¯ããªãå€ããªããŸããããè°è«ãçµãããšã§ã¢ãŒããã¯ãã£æ€èšããŒã å
ã®èãæ¹ã¯èªç¶ãšæã£ãŠããŸãã ãã®æç¹ã§ãåããããã®è§£å床ã§ã¢ãŒããã¯ãã£ãçè§£ããŠãã人ãè€æ°ã§ããã®ã§ãäžäººã§ã¢ãŒããã¯ãã£ãèããŠããã¥ã¡ã³ãã ããéããŠäŒããããããåŸã
ã®å¹çãæ Œæ®µã«è¯ããªããŸãã ãã¢ãŒããã¯ãã£èšèšãã«å¯Ÿããã¢ãŠããããã€ã¡ãŒãžã¯äººã«ãã£ãŠéããããããŸãããããããŸã§ã®ã¢ãŠãããããããã¥ã¡ã³ãåããã°ããã¢ãŒããã¯ãã£èšèšå®äºããšèšãããããããŸããã ããããã®ãŸãŸã§ã¯ããã以éæããã«ãªãã§ããããããŸããŸãªäžç¢ºå®æ§ã«ã¯å¯ŸåŠã§ããŸããã ãããŸã§ã¯äžæºåããã¢ãŒããã¯ãã£æ¡ããšåŒã¹ãã®ãããããã§ãããããå
ãæ¬çªã§ãã 2. åããŒã /ã¡ã³ããŒã«çްéšã®æ€èšãå§è²ãã ãããŸã§ã®ã¢ãŠãããããå
ã«ããŠãã1Day campããšç§°ããéçºã¡ã³ããŒå
šå¡ãéãŸãå Žãèšå®ããç解床ã®ãããªãå¹³æºåãå³ããŸããã ååäžã¯æŠå¿µã¢ãã«ãã¢ãŒããã¯ãã£ã®è§£èª¬ãååŸã¯å®éã®æ¢åç»é¢ãå
šå¡ã§ç¢ºèªããªããPdMã亀ããŠçްéšã®èŠä»¶ã®ç¢ºèªãè°è«ãè¡ããŸããã ç¹ã«ååŸã®ããŒãã¯ã¢ãŒããã¯ãã£ãèžãŸããäžã§ããã·ã¹ãã ãšããŠãŠãŒã¶ãŒã«ã©ã®ãããªæ¯ãèããèŠãããïŒãããã®æ¯ãèãã¯ä»æ³å®ããŠããã¢ãŒããã¯ãã£ã§å®çŸã§ããã®ãïŒããšãã£ãå®å¹æ§ã®ããè°è«ãã§ããŸããã 忥ã§ãã¹ãŠã®èª²é¡ã解決ã¯ã§ããŸãããããäœã課é¡ãªã®ãïŒãã課é¡ãè§£ãåæãšãã¹ãã¢ãŒããã¯ãã£ã¯ã©ããªãã®ãïŒããšããç®ç·ãæããããã°ã倧ããªåé²ã§ãã ãã以éã®æ€èšã¯ãé¢ä¿ããããŒã ã«å§è²ããããšãã§ããŸãã å®éããã®ã1Day campããçµãããšã§ãåããŒã ã«çްéšã®æ€èšãå§è²ã§ããããã«ãªãã䞊å床ãããã£ãŠäžæ°ã«ã¹ããŒããå¢ããŸããã ãã¡ãããã¢ãŒããã¯ããšããŠã®ç§ã¯ãå¯èœãªéãåããŒã ã®è°è«ã«åå ããããæ€èšçµæããã§ãã¯ãããããŠãåœåã®ææ³ãã倧ããªãºã¬ãçããªããããªã³ã³ãããŒã«ãããŠãããŸãã 3. ãããããŠã³ã§æŒãã€ããªãã»ãã ãããã«ææ¡ã蚱容ãã ãããŠå€§äºãªã®ããåæã®ã¢ãŒããã¯ãã£ã«ãã ãããããªãããšã§ãã å§è²ããå
ã§åé ã§ã説æããæŽåæ§ãèŠä»¶ã®èŠèœãšããªã©ãçºèŠãããšãåæã®ã¢ãŒããã¯ãã£æ¡ã®èŠçŽããè¿«ãããããšãããã§ãããã ä»®ã«ãã¢ãŒããã¯ãã£ããšããææç©ãã ãããåãåã£ããšã³ãžãã¢ãããããšããã®èãæ¹ã«åååæã§ããã«ããããªã¢ãŒããã¯ãã£ã¯ã€ã±ãŠãªãïŒããšæã£ãŠããŸã£ããããèªåã ã£ããããããïŒããšãå¥ã®æ¹åæ§ãæãã€ããããã人ãããã¯ãã§ãã ã¢ãŒããã¯ãã«ãšã£ãŠããã£ããèããã¢ãŒããã¯ãã£éãã«éçºãé²ãŸãªãã®ã¯ãããŸãæ°åãè¯ããªããã®ãããããŸããã ãã£ããæéããããŠæ±ºããããšãèžãè¿ãããã®ã¯ãéå¹çãªã³ãã¥ãã±ãŒã·ã§ã³ã«èŠããããšããããŸãã ããã«å¯ŸããŠã¢ãŒããã¯ãããããããããšã«ããæ¢ã«æ±ºããäºã ããããã®æ¹éã§äœã£ãŠããïŒããšããæå¿æ±ºå®ãæŒãéããšãã©ããªãã§ããããã çæçã«ã¯ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ãããããã«æžãã®ã§ãè¯ããããããŸããã ããããé·æçã«ã¯åãšã³ãžãã¢ããã®ãããžã§ã¯ãã§ãã®å
çºçãã課é¡ãèªåã§è§£æ±ºã§ãããã©ããã§ã¢ãŒããã¯ãã«ãã®ããå¯ããæ¥ãŸãã ããããã®æç¹ã§ã¢ãŒããã¯ãããããžã§ã¯ãããé¢ããŠããããåœåã®ã¢ãŒããã¯ãã£ã¯çµå±åŽ©å£ããã§ãããã ã€ãŸããäžç¢ºå®æ§ã®é«ãã¢ãŒããã¯ãã£ã匷å¶ããã®ã¯çµå±å€±æããã®ã§ãã çŸä»£ã®ã³ã³ãã¥ãŒã¿ã·ã¹ãã ã¯ãæçµçã«ãã¹ãŠã®æ¯ãèããã³ãŒãã§è¡šçŸããªããã°ãæåŸ
éãã«åäœããŸããã ã¢ãŒããã¯ãã£ãåºæ¬èšèšã®æ®µéã§çްéšã«è³ããŸã§ãã¹ãŠã®æ¯ãèããèŠå®ã§ããªã以äžãæçµçã«ã¯çްéšã®èšèšãèãããã³ãŒããæžããããã人ã®è£éã«å§ããªããŠã¯ãªããªãéšåãã§ãŠããŸãã ã¢ãŒããã¯ãã£ãªã©ã®æ¹éã«çŽåŸã§ããŠããªãç¶æ³ã§ãã¢ãŒããã¯ãã£ã«èµ·å ããæ³å®ã®èª²é¡ã«çŽé¢ãããšãããšã³ãžãã¢ã¯èªåã®èãã§ããã解決ããã®ãå°é£ã«ãªããŸããå°ãªããšããå§åçã«ããŒã¹ã¯èœã¡ãã§ãããã éçºãé²ãã ç¶æ³ã§ãããªã£ãŠããŸããšããªã«ããªã¯å°é£ã§ãã ã§ãã®ã§ãèªåã®èããšã¯éãèšèšæ¡ãã¡ã³ããŒããæç€ºããããšããæãããªèª€ãããªãã®ã§ããã°ãç§ã¯äžæŠã¯ãããåãå
¥ãããã®äººã«åŒãç¶ããã®æ¡ãäž»äœçã«æ€èšããããšããé¡ãããããã«ããŠããŸãã çµæããã®äººãæç€ºããæ¡ãæ¡çšãããããè¯ãèšèšãšã§ããã°äºãã«ãšã£ãŠHappyã§ãããæçµçã«æç€ºãããæ¡ããããšãªã£ãŠåœåã®æ¡ã«æ»ã£ããšããŠããç¡é§ã§ã¯ãããŸããã ãã®äººã¯èªåèªèº«ã®æ¡ãèããé¢ä¿è
ãšè°è«ããçµæãå
ã®æ¡ã«èœã¡çããã®ã§ãçŽåŸåºŠãéããŸãã ãäžããããæ¹éã®éãã«ã€ãããã®ã§ã¯ãªãããèªåã§èããŠè³ã£ãçµè«ã«åºã¥ããŠã€ãããã®ã§ã以éã®å·¥çšã§çºçããäºæãã¬èª²é¡ã«å¯ŸããŠããããèªåŸçã«è§£æ±ºã®ããã®è¡åãåãããšãã§ããã§ãããã ãã®ãããªããæ¹ã¯ãç®å
ã¯ç¡é§ãªã³ãã¥ãã±ãŒã·ã§ã³ãåã£ãŠããããã«èŠããŸãã äžèŠé åãã«èŠããŸããããã®ã»ããçµæçã«ãããžã§ã¯ãå
šäœãžã®è¯ã圱é¿ïŒã¬ãã¬ããžïŒã倧ãããªãã®ã§ãã ãã®ããããã¢ãŒããã¯ããåæã®èšèšã«ãã ããããã¡ã³ããŒã«çްéšã®æ€èšãå§è²ãã€ã€ãäžç·ã«èãããããšã§ããããžã§ã¯ãã¡ã³ããŒãšã®ç®ç·ã»ã³ã³ããã¹ããæããããšãã§ããã¢ãŒããã¯ããããã«ããã¯ãšãªãããšãé²ããŸãã ãå
±åµãã§äžç¢ºå®æ§ãä¹ãè¶ãã ã¢ãŒããã¯ãã以äžã®ãããªè¡åãåãããšã§ããã¢ãŒããã¯ããèããã¢ãŒããã¯ãã£ãã§ã¯ãªããã ã¿ããªã§èããã¢ãŒããã¯ã㣠ããšãªãããšãç§ã¯æåŸ
ããŠããŸãã ã¢ãŒããã¯ããæåã«æç€ºããã®ã¯ããã®å©ãå°ã«ãããŸããã ããŠä»åããã®ã¢ãããŒããããŸãããã®ãã©ããã ããã¯ç§ã«ãšã£ãŠãææŠã§ãããçµæããããã®ã¯ããã°ããå
ã§ãã æåŸã« ãã£ãã£ã§ã¯ãäžç·ã«åã仲éãåéäžã§ãã æ¬èšäºã§ç޹ä»ãããããªã¢ãããŒããåããã®ãããããåãå
¥ããŠèªåŸçã«èããè¡åã«ç§»ããé Œãããå€ãã®ä»²éãããããããã§ãã ãããªãã£ãã£ã§ã®ãœãããŠã§ã¢éçºã«èå³ãæã£ãæ¹ã¯ããã²æ¡çšãµã€ããã芧ãã ããã ã«ãžã¥ã¢ã«é¢è« ããåŸ
ã¡ããŠããŸãïŒ CADDi Careers - æ¡çšç·åãµã€ã careers.caddi.com CADDi Careers - ãšã³ãžãã¢åãæ¡çšæ
å ± careers.caddi.com *1 : YAGNIååã«åã£ãŠåãæšãŠããæ°æã¡ãæ¹§ããŸãããããããªäºæ
ãããã®ã§ãã *2 : åœç€Ÿã®éçºç°å¢ã¯dev-stg-prodãšã¹ããŒãžãåãããŠã¯ããŸãããå°ããªç²åºŠã®ãªãªãŒã¹ãåæãšããŠãããããã顧客ã«è©ŠéšæäŸããŠãããŸããããªãã£ãããããçŽãïŒããšããããšãã§ãããããªè€æ°é¢ã®ç°å¢ãçšæã§ããŠããããã§ã¯ãããŸããããŸããæ¬ãããžã§ã¯ãã§æäŸããæ©èœã顧客ã«äœ¿ã£ãŠãããã«ã¯ã顧客åŽãçžå¿ã®æºåãå¿
èŠã§ãããããã¢ãžã£ã€ã«çææ³ãåãã«ãããšããèæ¯ããããŸãã