ã¿ã€ããŒã®ãããã¯ããããŒãžã£ãŒã®é£¯ç°ã§ãã ä»åã¯ã12/4ã«éå¬ããã ãããã¯ããããŒãžã£ãŒã«ã³ãã¡ã¬ã³ã¹ ïŒä»¥äžpmconfïŒã«åå ããŠããŸããããã®ã€ãã³ããéããŠéåžžã«ææçŸ©ãªåŠã³ãåŸããããããã¿ã€ããŒã®ãããã¯ããããŒãžã£ãŒïŒæ¿è°·ãå°å®®å±±ãéŽæšãå°è¥¿ãäœã
æšãæ¥ æ¬ã飯ç°ïŒãããåã»ãã·ã§ã³ããåŠãã å
容ããå
š3åã®èšäºã§ç޹ä»ããŸãã (æ¬èšäºã¯ãå
š3åã®ãã¡ãPart3ã§ãã) âªïžPart1ã»Part2ã¯ãã¡ã pmconf2025ã«åå ããŠããŸãã part1 pmconf2025ã«åå ããŠããŸãã part2 ãã«ããããã¯ãã®ã«ãªã¹ãå¶ããããããã¯ããã£ã·ãžã§ã³ã¬ã³ãŒããã§å®çŸããããŒã 暪æã®ã¢ã©ã€ã³ã¡ã³ãæŠç¥ ç»å£è
ïŒ æ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ / ãããã¯ãæšé²æ¬éš ã¢ãŒããã¯ã ãããã¯ããããŒãžã£ãŒ äžæµŠ ç æ° ç»å£è³æïŒ speakerdeck.com æ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ã§ãã«ã€ãã±ãã®ãªãã¥ãŒã¢ã«è²¬ä»»è
ãåããäžæµŠæ°ã«ãããäžç¢ºå®æ§ã®é«ããã«ããããã¯ãéçºã«ãããæææ±ºå®ããã»ã¹ããããã¯ããã£ã·ãžã§ã³ã¬ã³ãŒãïŒPDRïŒãã«ã€ããŠã®ã»ãã·ã§ã³ãã¬ããŒãããŸãã â ãã«ããããã¯ãã«ããããäžç¢ºå®æ§ãã®æ£äœ ã«ã€ãã±ã¯40以äžã®ãµãŒãã¹ã»ãããã¯ããå±éãã巚倧ãªããŒãã£ã«ã«SaaSã§ãæ¥åÃæ¥æ
ã®æãåããã«ããè€éæ§ïŒã«ãªã¹ïŒãæ±ããŠããŸããè€æ°ã®ãããã¯ã飿ºãåæãšãããã«ã€ãã±ã³ãã¯ããã®éçºã§ã¯ãå°æ¥ã®äºæž¬ã®å°æ¥äºæž¬ã®å°é£ãïŒç°å¢ã®äžç¢ºå®æ§ïŒãã誰ã«äœãèãã°ãããåãããªãããšïŒéä¿¡ã®äžç¢ºå®æ§ïŒã課é¡ãšãªãããèª°ãæ±ºããã®ãïŒããããæ±ºãŸã£ãã®ãïŒããšãã£ãæ··ä¹±ãçããŠããŸããã â æææ±ºå®ã®ãããã³ã«ããããã¯ããã£ã·ãžã§ã³ã¬ã³ãŒãã ãã®äžç¢ºå®æ§ã®äžã§æææ±ºå®ãæ©èœããããããã³ã«ãšããŠèšèšãããã®ãããããã¯ããã£ã·ãžã§ã³ã¬ã³ãŒãïŒPDRïŒãã§ããå
ã
ã¯ãšã³ãžãã¢ãªã³ã°ã®æèã§ããArchitecture Decision RecordïŒADRïŒãããŒã¹ã«ããŠãããæ±ºå®å
容ã ãã§ãªããããªããã®æ±ºå®ã«è³ã£ãã®ãããšããèæ¯ãæèïŒã³ã³ããã¹ãïŒãæ®ãããšãéèŠããŠããŸãã ãã³ãã¬ãŒãã«ã¯ä»¥äžã®é
ç®ãå«ãŸããŸãïŒ ã€ã·ã¥ãŒãšã³ã³ããã¹ã : çœé»ã€ããŠããªãåé¡ãšããªãä»ããã解決ããã®ãã ã¯ãªãã£ã«ã«ãŠãŒã¶ãŒãžã£ãŒã㌠: 圱é¿ãåããUX/CUJã ãªãã·ã§ã³ãšè©äŸ¡è»ž : éžæè¢ã®ã¡ãªããã»ãã¡ãªãããšã倿ã®ããã®ãã¬ãŒããªãåºæºã 決å®ãšçç± : æçµçãªçµè«ãšããã®éžæçç±ã â éçšãšå®çã®ãã€ã³ã PDRã¯åãªãããã¥ã¡ã³ãã§ã¯ãªããäŒè°äœã®ã¢ãžã§ã³ããšé£åãããSlackãžã®ããã·ã¥ãããŒãããããžã®åæ ãè¡ããµã€ã¯ã«ã§éçšãããŠããŸããç¹ã«ã圱é¿ç¯å²ãåºãäžå¯éãªæ±ºå®ãããéèŠãªãªãªãŒã¹åã®æææ±ºå®ãã«ãããŠãWIPïŒæžãéäžïŒã®æ®µéããéææ§ã確ä¿ããªããåæåœ¢æãå³ãç¹ãéèŠã§ãã â åå ããŠæããããš ãæ±ºå®ãããŒã¿ããŒã¹åããäžèЧæ§ã®é«ã圢ã§èŠããåããããšããã¢ãããŒãã¯ãã·ã³ãã«ãªãããå®è¡é£æåºŠãé«ãåãçµã¿ã ãšæããŸããã ããããäžç¢ºå®æ§ãé«ãç°å¢ã ãããããåœæã®æææ±ºå®ã®èæ¯ïŒã³ã³ããã¹ãïŒãè³ç£ãšããŠæ®ãããšã®äŸ¡å€ã¯èšãç¥ããŸãããå°èŠæš¡ãªããŒã ããå€§èŠæš¡ã»éšçœ²æšªæã®ãããžã§ã¯ããŸã§ãèŠæš¡ãåããæ±çšçã«æŽ»çšã§ãããã¬ãŒã ã¯ãŒã¯ã§ãããèªçµç¹ã§ãåãå
¥ããŠãããããšæããŸããã ïŒå·çïŒæ¥ å
ä¹
è²ŽïŒ å
çµå¶äŒç»CSOïŒæŠç¥è²¬ä»»è
ïŒã®PMãèªãããããã¯ããåµãäºæ¥æŠç¥ãã®ãªã¢ã« ããPLã«æ¯ãåãããã䟡å€ããéç®ããäºæ¥è²¢ç®ã®æå€§åã ç»å£è
ïŒ ãã£ãã£æ ªåŒäŒç€Ÿ / VPoPSïŒProduct StrategyïŒ å²žæ¬ è£å² æ° ç»å£è³æïŒ speakerdeck.com ãããããããžãã¹äŸ¡å€ãšé¡§å®¢äŸ¡å€ã®ãã¬ãŒããªããããããããžãã¹èгç¹ãæã¡ããããšããèª²é¡æãããã¡ãã®ã»ãã·ã§ã³ã«åå ããŸããã PMãèŠããããPL責任è«ã PMã®çŸå Žã§ã¯ãåŸã
ã«ããŠä»¥äžã®å¯Ÿç«æ§é ãçãŸããŸãã PMã®æ³ã : ããŠãŒã¶ãŒã®ããã«äŸ¡å€ãããããã¯ããäœãããïŒäžé·æèŠç¹ïŒã çµå¶ã»äºæ¥åŽã®èŠæ± : ã仿ã®å£²äžã¯ã©ããããã ïŒçæèŠç¹ïŒã ãã®æ¿æã¿ã«ãªããPLéæã®ããã«æ¬è³ªçã§ãªãæ©èœéçºã«è¿œãããŠããŸãã®ããPMãããããã§ãã岞æ¬ããã¯ããããåãªãã³ãã¥ãã±ãŒã·ã§ã³äžè¶³ã§ã¯ãªãã èŠãŠããææšãšæé軞ã®ãºã¬ ã«ããæ§é çãªåé¡ã ãšææããŸããã èŠç¹ãå€ãã3ã€ã®ãã€ã³ã 1. 売äžã¯ãé
广§ææšãã§ãã çµå¶äŒç»ãçµå¶é£ã«ãšã£ãŠã売äžãªã©ã®è²¡åæ°å€ã¯ãããŸã§ãçµæïŒé
广§ææšïŒãã«éããŸããã çµå¶è
ãçã«èŠæ¥µãããã®ã¯ããã§ã«èµ·ããçµæã§ã¯ãªãããé ããæªæ¥ïŒå
è¡ææšïŒãã§ãã ãããã¯ããæ¬è³ªçãªäŸ¡å€ãæäŸã§ããŠãããã©ããããå°æ¥ã®å£²äžãäœãå
è¡ææšãšãªãåŸãŸãã 2. ææšãèŠããé åºããå€ãã ã売äžãäœãããã«ãããã¯ããäœããã®ã§ã¯ãªãããåžå ŽïŒTAM/SAM/SOMïŒãšãã倧ããªããã³ã·ã£ã«ããéç®ããäŸ¡å€æäŸã®é²æã確èªããããšããã¢ãããŒããžã®è»¢æãææ¡ãããŸããã TAM/SAM/SOMãèŠæ®ãã : ãŸãèªåãã¡ãæŠã£ãŠããåžå Žã®å
šäœåãšããã³ã·ã£ã«ãå®çŸ©ããã 䟡å€ã®éæã¹ããŒãã確èªãã : ãã®å·šå€§ãªåžå Žã«å¯ŸããŠããããã¯ããã©ã®çšåºŠã®ã¹ããŒãã§äŸ¡å€ãå±ããããŠããããæž¬å®ããã çµæãšããŠå£²äžãèŠã : äžèšã®çµæãšããŠã€ããŠããæ°åãšããŠå£²äžãæããã ãã®é åºã§ããžãã¯ãçµãããšã§ããçæçãªå£²äžããšããå°ããªæ çµã¿ã§ã¯ãªããã巚倧ãªåžå Žãåãã«è¡ãããã®æè³ããšããæèã§ãããã¯ãéçºãèªããããã«ãªããŸãã 3. äºæ¥æŠç¥ãšã¯ã䟡å€ããéç®ããããšã ãã£ãã£ç€Ÿã®äºäŸïŒè£œé æ¥2,000å
ååžå Žãžã®ææŠïŒãæããªãããç£æ¥å
šäœã®èª²é¡ïŒIssueïŒããTAMãèŠå®ããããããéç®ããŠçŸåšã®ãããã¯ãæŠç¥ãæãéèŠæ§ãèªãããŸããã PLã«æ¯ãåãããã®ã§ã¯ãªãã PLïŒçµæïŒãã³ã³ãããŒã«ããããã®å€æ°ãããããã¯ã䟡å€ãã§ãã ãšå®çŸ©ãçŽãããšããæŠç¥çPMãžã®ç¬¬äžæ©ãšã®ããšã§ãã ææ³ ã売äžã¯é
广æšã§ãããã¯ã䟡å€ããã®åå°ã§ããããšããã®ã¯ãèšãããŠã¿ãã°åœããåã®ããšã§ããäžæ¹ã§ãå®åã§ãã®èãæ¹ã«åºã¥ãã倿ãã§ããŠããããšãããšãããã§ã¯ãªãã£ããšæããŸããã PLãæèããŠå°æå
ã®åãçµã¿ã«çµå§ããããšãããåçããããŸãã ãããèžãŸããŠä»åŸã¯åžå Žãšé¡§å®¢ãæ·±ãçè§£ãã䟡å€ãããŒã¹ã«ãããã¯ãã®å±æã倧ãããã€æ ¹æ ãæã£ãŠèªããããã«ããŠãããã°ãšæããŸããã (å·çïŒå°è¥¿ è£ç) ãPMãæªæ¥ã«æããã£ãŠäœïŒââå€åã®æä»£ã«â察話âã§æªæ¥ãæãã ç»å£è
(ã€ã³ããŒãµãŒã¯ã«)ïŒ æ ªåŒäŒç€ŸTVer / ãµãŒãã¹ãããã¯ãæ¬éšãããã¯ãæšé²éšéšé· æŸå²¡ ç¶Ÿä¹ BASEæ ªåŒäŒç€Ÿ / å·è¡åœ¹å¡ BASE BANK äºæ¥ äºæ¥è²¬ä»»è
æ³å· æ
¶å€ª PM Jam / ãããã¯ããããŒãžã£ãŒ 飯沌 äºçŽ ãã¡ã·ãªããŒã¿ãŒïŒ Product People Inc. / ææºãããã¯ãã³ãŒã åºç¬ äž æ° ãPdMã®æªæ¥ããåããç±æ°ãã1æé45å ããã£ãã·ã¥ããŠã«åœ¢åŒã§è°è«ããããPMäžèŠè«ããšãæ¬è³ªçãªåœ¹å²ãã OSTã®è£åŽã§ã¯ããPMã®æªæ¥ããããŒãã«ãåå è
å士ã察話ãè¡ãããã£ãã·ã¥ããŠã«ã圢åŒã§ã®ãã£ã¹ã«ãã·ã§ã³ã宿œããŠããŸããã â è°è«ã®ããŒããšåœ¢åŒ åœåã®ããŒãã¯ãPMã®æªæ¥ãã§ããããè°è«ã¯ãããããPMã¯ãããªãã®ã§ã¯ïŒããšãããããæ ¹æºçãã€æçºçãªåãããã¹ã¿ãŒãããŸããããã£ãã·ã¥ããŠã«ãšããçºæ£åã®å€§èŠæš¡å¯Ÿè©±ææ³ãçšããããšã§ãäºå®ãããŠãã1æé45åã¯ããã§ãŒãºãç«å Žã®ç°ãªãåå è
ãã¡ã«ããæ¿å¯ãªè°è«ã®å ŽãšãªããŸããã â ããŸããŸãªããã㯠è°è«ã®äžã§ã¯ããããã¯ããããžã¡ã³ãã®åœ¹å²ã®ææ§ããå€é¢æ§ã«ã€ããŠã以äžã®ãããªèŠç¹ãé£ã³äº€ããŸããã äºæ¥ãã§ãŒãºã«ããPMã®åœ¹å²å€é· çµå¶å±€ãšçŸå Žãã€ãªããçµç¯ç¹ããšããŠã®æ©èœ ããªãããžãã¹ãµã€ãã§ã¯ä»£æ¿ã§ããªãã®ãïŒããšããåã çµå¶è
ã»äºæ¥è²¬ä»»è
ãšPdMã®å¢çç· â å°è±¡çãªè°è«ïŒãããŒãããããæžããŠæšãŠãïŒã ãã®äžã§ãå°è±¡ã«æ®ã£ããããã¯ã®äžã€ãããããŒããããã¯æžããŠæšãŠãïŒããšããäžèšããå§ãŸã£ããäžç¢ºå®æ§ã®é«ãçŸä»£ã«ãããããŒããããã®ããæ¹ã§ãã è°è«ã®äžã§ã¯ãäžç¢ºå®æ§ã®é«ãæä»£ã«ãããŠãåºå®åã¯ãªã¹ã¯ã§ããããšããèªèã®ããšãç¶æ³ã«åãããŠé©åã«ããŒãããããæžãæããäœãæåããèãæãããšã®éèŠæ§ãèªãããŸããã ããããåã«æžãæããã ãã§ã¯çæçãªæœçã«çµå§ããŠããŸãæžå¿µããããŸãããã®ããã2-3幎åŸãæèãçŸåšå°ãææ¡ããªãããä»ã®ç¶æ³ã«å¿
èŠãªæææ±ºå®ãããŠããèŠåº§ãæ±ããããŸãã ããã«ã¯ãPMã«ã¯èšç»çå®èœåã ãã§ãªããç¶æ³ã«å¿ããæææ±ºå®åããã¹ããŒã¯ãã«ããŒãžã®èª¬æè²¬ä»»ãé©åãªã³ãã¥ãã±ãŒã·ã§ã³ãªã©ã®ç·åçãªã¹ãã«ãæ±ãããããšæ°ä»ããŸããã åã«ãPMãšã¯äœãããå®çŸ©ããã®ã§ã¯ãªããå€åã®æ¿ããæä»£ã«ãããŠãã©ã®ãããªèŠåº§ã§ãããã¯ããçµç¹ã«åãåãã¹ããããåèããããããéåžžã«ç€ºåã«å¯ãã ã»ãã·ã§ã³ãšãªããŸããã (å·çïŒé£¯ç° å²çŽ) ãããã« å
š3åã«ããããpmconf2025ã®ã»ãã·ã§ã³ã¬ããŒãããå±ãããŸããã èš7åã®PMã§åå ããä»åã®ã«ã³ãã¡ã¬ã³ã¹ãåã»ãã·ã§ã³ãéããŠããŸããŸãªåŠã³ãåŸãããŸããã ã売äžã¯ãããã¯ã䟡å€ã®é
广æšã§ããããšããèšèã®éããç§ãã¡ãåãåãã¹ãã¯åžžã«ããŠãŒã¶ãŒã®ãã€ã³ããšããã®å
ã«ãããåžå Žãžã®äŸ¡å€æäŸãã§ãã ä»ååŸãç±éãšç¥èŠãæ¥ã
ã®éçºã«éå
ããã¿ã€ããŒã¯ããããããã¯ããããã®ã€ã³ãã©ãšããŠããŠãŒã¶ãŒã®çæ§ã«é©ããšä¿¡é Œãå±ãããããã¯ããã€ããç¶ããŠãããŸãã ãããã«ãpmconfã§ã¯ããŒã¹ãåºå±ããŠããŸããããã¿ã€ããŒã§ã¯ãå
±ã«ãã¯ããããã®æªæ¥ãã€ãã仲éãåéããŠããŸããèå³ãæã£ãŠããã ããæ¹ã¯ããã²ã«ãžã¥ã¢ã«ã«ã話ãããŸãããïŒ ïŒå·çïŒé£¯ç° å²çŽã»ã¿ã€ããŒPMäžåïŒ
ããã«ã¡ã¯ãã¿ã€ããŒã§ãšã³ãžãã¢ãããŠãã埳å¯ïŒ @yannKazu1 ïŒã§ãã ååã®èšäºã§ã¯ã EKS äžã« self-hosted GitHub Actions Runner åºç€ãæ§ç¯ãã話 ãã玹ä»ããŸããã ⌠ååã®èšäº https://tech.timee.co.jp/entry/2025/09/22/122415 ãããããããšã«ããã®åãçµã¿ã¯ AWS ããã®å
¬åŒããã°ã§ãã玹ä»ããã ããŸãã ã ð AWS ããã° https://aws.amazon.com/jp/blogs/news/timee-amazon-eks-auto-mode/ ä»åã¯ãã®ç¶ç·šãšããŠã EKS ã®ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ããããã©ããã£ãŠå®å
šã«èªååããã ã«ã€ããŠã話ãããŸãã EKS ã®ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãããå°å³ã«ã€ãã EKS ãéçšããŠãããšãã©ãããŠãé¿ããŠéããªãã®ã 宿çãªã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãã ã§ãã Kubernetes ã®ãã€ããŒããŒãžã§ã³ã¯å®æçã« EOL ãæ¥ã æŸçœ®ãããšãµããŒãåãã«ãªã ãšã¯ãããæ¯å人ã確èªããŠæåã§äžããã®ã¯æ£çŽããã©ã ããããããå°ã楜ã«ã§ããªããïŒã ããæã£ãã®ããä»åã®ä»çµã¿ãèãå§ãããã£ããã§ããã ä»åã®åæïŒEKS Auto Mode ã䜿ã£ãŠãã ä»åéçšããŠãã EKS ã§ã¯ã EKS Auto Mode ãæ¡çšããŠããŸãã EKS Auto Mode ã§ã¯ã ããŒã管ç äž»èŠãª Add-on 管çïŒVPC CNI / AWS Load Balancer Controller ãªã©ïŒ ã AWS åŽã§ç®¡çããŠãããéçšè² è·ã軜æžã§ããŸãã ãã®ãããã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ããã®æµãã¯æ¯èŒçã·ã³ãã«ã§ãã ãããã§ã¹ãã§ éæšå¥š API ã䜿ã£ãŠããªããç¢ºèª ãã åé¡ãªããã° ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ãã¢ãã ãã ããŒããäž»èŠ Add-on 㯠AWS ãèªåã§è¿œåŸ ãã ããã« EKS ã«ã¯ Upgrade Insights ãšãã䟿å©ãªä»çµã¿ããããŸãã éæšå¥š API ã®äœ¿çšç¶æ³ ããŒãžã§ã³ã¢ããæã«åé¡ã«ãªããããªç¹ ãäºåã«ãã§ãã¯ã§ããããã ããã®ããŒãžã§ã³ã«äžããŠå€§äžå€«ãïŒããããªã楜ã«å€æã§ããŸãã èªååã®æ¹é ãšã¯ããããããªãæ¬çªã¯ã©ã¹ã¿ãŒããŒãžã§ã³ãèªåã§äžããã®ã¯ããããã«æãã ããã§ãæ¬¡ã®æ¹éã§ä»çµã¿ãäœããŸããã 1. æ¬çªãšã¯å¥ã«ãã¹ãçšã¯ã©ã¹ã¿ãŒãçšæãã Self-hosted Runner çšã® main ã¯ã©ã¹ã¿ãŒãšã¯å¥ã«ã æ€èšŒå°çšã® test ã¯ã©ã¹ã¿ãŒ ãçšæããŠããŸãã ã³ã¹ããæãããã Spot ã€ã³ã¹ã¿ã³ã¹ãäœ¿çš ãã æå°æ§æã§ test-runner ã®ã¿ãèµ·å ãã ã€ã³ãã©ã¯æ¬¡ã®ããã«ç®¡çããŠããŸãã ã¯ã©ã¹ã¿ãŒã AWS ãªãœãŒã¹ïŒ Terraform ARC Controller ãªã©ã® Helm ãªãœãŒã¹ïŒ Terraform ãã®ä»ã® Kubernetes ãªãœãŒã¹ïŒ ãããã§ã¹ãïŒKustomizeïŒ ãã®æ§æã«ããŠããããšã§ã test / main ã¯ã©ã¹ã¿ãŒã« ã»ãŒåãèšå®ããã®ãŸãŸé©çš ã§ãã runner ã® å°æ°ããµã€ãºã ããç°å¢ããšã«åãæ¿ã ããã ãšãã£ãããšãç°¡åã«ã§ããŸãã çµæãšããŠã ã³ã³ãããŒã©ãèšå®ã¯æ¬çªãšåäž ãªãœãŒã¹ïŒã€ã³ã¹ã¿ã³ã¹ãµã€ãºã»å°æ°ïŒãæå°æ§æã«ãã test-runner ãšããããæ¬çªã«éããªãè¿ãããäœã³ã¹ããªã³ããŒç°å¢ããäœããŠããŸãã 2. ãã¹ãã¯ã©ã¹ã¿ãŒã§å
ã«ããŒãžã§ã³ã¢ãããã ãã¹ãã¯ã©ã¹ã¿ãŒã§ã¯ãæ¬¡ã®æ¡ä»¶ãæºãããå Žåã®ã¿ èªåã§ããŒãžã§ã³ã¢ãããè¡ããŸãã â ãªãªãŒã¹ãã 1 ãæä»¥äžçµéããããŒãžã§ã³ã§ããããš aws eks describe-cluster-versions \ --include-all \ --query 'clusterVersions[?versionStatus==`STANDARD_SUPPORT`].{version: clusterVersion, releaseDate: releaseDate}' \ --output json ååŸããçµæã jq ã§å å·¥ãã ããªãªãŒã¹ãã 1 ãæä»¥äžçµéããŠããããŒãžã§ã³ãã®ã¿ã察象ã«ããŸãã â¡ Upgrade Insights ããã¹ãŠ PASS ããŠããããš INSIGHTS_JSON=$(aws eks list-insights \ --cluster-name ${{ inputs.cluster-name }} \ --output json) ERROR_COUNT=$(echo "$INSIGHTS_JSON" | jq '[.insights[] | select(.category=="UPGRADE_READINESS" and .insightStatus.status=="ERROR")] | length') WARNING_COUNT=$(echo "$INSIGHTS_JSON" | jq '[.insights[] | select(.category=="UPGRADE_READINESS" and .insightStatus.status=="WARNING")] | length') ERROR / WARNING ãããã°ãããã¯ãã UNKNOWN ã¯æªäœ¿çšæ©èœãªã®ã§èš±å®¹ãã ãããã®æ¡ä»¶ããã¹ãŠæºãããŠããå Žåã®ã¿ãæ¯æ 7 æã« GitHub Actions ãã aws eks update-cluster-version ãå®è¡ããŸãã 3. test ã¯ã©ã¹ã¿ãŒã®çµæã cluster_version.txt ã® PR ãšããŠæ®ã æ¬çªã¯ã©ã¹ã¿ãŒã®ããŒãžã§ã³ã¢ããã¯ã cluster_version.txt ã«æžãããããŒãžã§ã³ãžæŽæ°ãã ãšããåæã§èšèšããŠããŸãã ãã®ããã æ¬çªããã€äžãããã ãã¯äººã倿ã§ããããã« cluster_version.txt ã®æŽæ°ã¯å¿
ã PR çµç±ã«ããŠããŸãã test ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãããæ£åžžã«å®äºãããšã å®éã«äžãã£ã EKS ããŒãžã§ã³ã ãã®ãŸãŸ cluster_version.txt ã«æžã蟌㿠èªåã§ PR ãäœæ ããŸãã # **cluster_version.txt** 1.34 ãã® PR ãããŒãžãããšã ãã®æ¥ã®æ·±å€ã« æ¬çªã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãããå®è¡ãããŸãã æ€èšŒã¯èªåã§å®äºæžã¿ æ¬çªåæ ã®æ¥ä»ã ã人ã倿ãã ãšãããã©ã³ã¹ã«èœã¡çããŸããã æ¬çªã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãããã㌠æ¬çªã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ããã¯ã æ¯æ¥ æ·±å€ 2 æ ã« GitHub Actions ãã宿å®è¡ããŠããŸãã æµãã¯æ¬¡ã®ãšããã§ãã 1. cluster_version.txt ãšã®å·®åãç¢ºèª cluster_version.txt ã®ããŒãžã§ã³ çŸåšã®æ¬çªã¯ã©ã¹ã¿ãŒã®ããŒãžã§ã³ ãæ¯èŒããå·®åããªããã°ããã§çµäºããŸãã å·®åãããå Žåã®ã¿ã以éã®ãã§ãã¯ã«é²ã¿ãŸãã 2. Upgrade Insights ã PASS ããŠããããšãç¢ºèª INSIGHTS_JSON=$(aws eks list-insights \ --cluster-name ${{ inputs.cluster-name }} \ --output json) ERROR_COUNT=$(echo "$INSIGHTS_JSON" | jq '[.insights[] | select(.category=="UPGRADE_READINESS" and .insightStatus.status=="ERROR")] | length') WARNING_COUNT=$(echo "$INSIGHTS_JSON" | jq '[.insights[] | select(.category=="UPGRADE_READINESS" and .insightStatus.status=="WARNING")] | length') 3. test-runner ã®ãã«ã¹ãã§ãã¯ãå®è¡ æ¬çªã¢ããã°ã¬ãŒãåã«ã test ã¯ã©ã¹ã¿ãŒäžã® Self-hosted Runner ãæ£åžžã«åãã ã確èªããŸãã ç°¡å㪠workflow_dispatch ã®ã¯ãŒã¯ãããŒãçšæããŠããŸãã name: Test Runner Health Check on: workflow_dispatch jobs: health-check: runs-on: test-runner # testã¯ã©ã¹ã¿ãŒäžã®test-runnerãæå®ãã timeout-minutes: 10 steps: - run: | echo "â
test-runner is healthy!" hostname date ãã®ã¯ãŒã¯ãããŒã gh ã³ãã³ãã§èµ·åãã 10 å以å
ã« success ããããš ã確èªããŸãã ïŒããŒãªã³ã°åŠçã¯çç¥ããŠããŸãããå®è£
äžã¯å®äºãåŸ
ã£ãŠããŸãïŒ 4. åé¡ãªããã°æ¬çªã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãã aws eks update-cluster-version \ --name ${{ env.MAIN_CLUSTER_NAME }} \ --kubernetes-version "$TARGET_VERSION" æµããå³ã§è¡šããšã以äžã®ãšããã§ãã ãªãæ·±å€ 2 æã«ãèªåã§ãäžããã®ãïŒ ãæ¬çªåæ ã®æ¥ä»ã¯äººãå¶åŸ¡ããšæžããŸããããå³å¯ã«ã¯ PR ãããŒãžããæ¥ã®æ·±å€ 2 æã«èªåã§ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãããèµ°ã ä»çµã¿ã§ãã ã€ãŸããäººãæ±ºããã®ã¯ ããã€ã®æ·±å€ã«ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãããå®è¡ãããã ã ãã ãã®èšèšã«ããŠããçç±ã¯ 2 ã€ãããŸãã 1. æ·±å€ãªããããã€ãšç«¶åããªã ãããã€ãèµ°ã£ãŠããªãæé垯ã§ãã ããŒãæŽæ°æã« Pod ãéé¿ããŠã圱é¿ãåºã«ãã ãããã€éäžã§ Pod ãèœã¡ãäºæ
ãé²ãã 2. åé¡ãèµ·ããŠãæ¥åéå§åŸã«å¯ŸåŠã§ãã Self-hosted Runner ã®å©çšç®æã§ã¯ãOrganization variablesã䜿ã£ãŠ runner ãæå®ããŠããŸãã runs-on : ${{ vars.RUNNER_AMD64_STANDARD }} ããã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ããåŸã«åé¡ãçºèŠããŠãããã®å€æ°ã®å€ã ubuntu-latest ãªã©ã«å€æŽããã ãã§ãå
šãªããžããªã®ã¯ãŒã¯ãããŒã GitHub-hosted runner ã§åãããã«ãªããŸãã ã³ãŒããäžå倿Žããã«ãã©ãŒã«ããã¯ã§ããããã æ¥åéå§åŸã«æ°ã¥ããŠããã®å¯Ÿå¿ã§ãååéã«åããŸã ã ãã®ãã©ãŒã«ããã¯ææ®µãããããããã æ·±å€ã«èªåã§ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ãããå®è¡ 人ã¯ãæ¥ä»ã決ãããã ã ãšããéçšãæãç«ã£ãŠããŸãã Terraform 管çãšã®ä»ãåãæ¹ ã€ã³ãã©ã¯ Terraform ã§ç®¡çããŠããŸããã EKS ã®ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã ã㯠Terraform 管çå€ ã«ããŠããŸãã cluster_version ã« ignore_changes ãèšå®ããŠãã ããŒãžã§ã³ã¢ãã㯠CLI ã§å®æœããŠãã ããã«ããã CLI ã§äžããŠã Terraform å·®åãåºãªã IaC ãšéçšã®è²¬åããããã«åé¢ã§ãã ãšããã¡ãªããããããŸãã ãŸãšã ãã®ä»çµã¿ãå°å
¥ããããšã§ã ã¯ã©ã¹ã¿ãŒããŒãžã§ã³ã¢ããã® toil ã倧å¹
ã«åæžã§ãã ãtest â æ¬çªãã®å®å¿ã§ãããããŒãèªååã§ãã Self-hosted Runner ãå£ããªãããšãäºåã«ä¿èšŒã§ããããã«ãªã£ã ãšããææãåŸãããŸããã EKS Auto Mode ã®ç¹æ§ã掻ããããšã§ã ãäººãæ°åã§åãéçšãããäžæ®µéé²ããããããªãšæã£ãŠããŸãã åãããã« EKS ãéçšããŠããæ¹ã®åèã«ãªãã°å¬ããã§ã ð
ããã«ã¡ã¯ãDevPFããŒã ã®è
åã§ãã çŸåšãåŒç€Ÿã®ã¢ããªã±ãŒã·ã§ã³åºç€ïŒECS on FargateïŒã§ã¯ãã³ã³ãããã°ã®åéã»è»¢éã« FireLens ãæ¡çšãã Datadog Logs ãžéçŽããŠããŸããFireLensã¯ã¿ã¹ã¯å®çŸ©ã«æ°è¡èšè¿°ããã ãã§ãã°åºç€ãæŽãéåžžã«äŸ¿å©ãªæ©èœã§ããäžæ¹ã§è£åŽã§ã¯ã Fluent Bit ããµã€ãã«ãŒãšããŠåäœããè€éãªãã€ãã©ã€ã³ãåŠçããŠããŸãã ããã°ãªããŠæšæºåºåã«åºãã°ãããšã¯åæã«å±ããã®ã ããæãããã¡ã§ãããå®éã«ã¯ã¢ããªã±ãŒã·ã§ã³ã³ã³ããããDatadog Logsã®explorerã«è¡šç€ºããããŸã§ã«ã¯ãããã€ãã®é£æãååšããŸããä»åã¯ããã°ãDatadogã«å°éãããŸã§ã®ã¢ãŒããã¯ãã£ãçŽè§£ããªããããã°ããã©ãã§ãããªããæ¬ æããã®ãã解説ããŸãã ãã°è»¢éã®ã¢ãŒããã¯ãã£æŠèŠ ãŸãã¯çŸåšã®æ§æã®ããããã§ãã åºç€ : AWS ECS on Fargate(v1.4) ãã°åé : FireLens (å®äœã¯FluentdãŸãã¯Fluent Bitãµã€ãã«ãŒãåŒç€Ÿã§ã¯Fluent Bitãæ¡çš) éä¿¡å
: Datadog Logs ã¢ããªã±ãŒã·ã§ã³ãåºåãããã°ã¯ã倧ãŸãã«ä»¥äžã®çµè·¯ã蟿ããŸãã Appã³ã³ãã : stdout/stderrãžãã°ãæžã蟌ã shim logger ãã©ã°ã€ã³ : containerd-shimã®ãã¬ãŒãã©ã°ã€ã³ãshim loggerãåã³ã³ããã®stdout/stderrããã€ãçµç±ã§å®æçã«èªã¿èŸŒã¿ããµã€ãã«ãŒã®Fluent Bitã«è»¢éã Log router (Fluent Bit)ã³ã³ãã : ãã°ãåãåãããããã¡ãªã³ã°ã»å å·¥ãè¡ã Network : Datadog APIãžHTTPSã§éä¿¡ Datadog : IngestïŒåã蟌ã¿ïŒã»IndexingïŒã€ã³ããã¯ã¹åïŒ äžèŠã·ã³ãã«ã§ããããã®çµè·¯ã«ã¯å€§ããåããŠ4ã€ã®ãæ¬ æãªã¹ã¯ããæœãã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ ã Fluent Bitéã®ããã¯ãã¬ãã·ã£ãŒ æåã®é£é¢ã¯ããã°ããµã€ãã«ãŒã«æž¡ãç¬éã§ãã ä»çµã¿ FireLensã䜿çšããå ŽåãFargate (v1.4) ã®å
éšã§ã¯ shim-loggers-for-containerd ã䜿çšãããŸãã ã¢ããªã±ãŒã·ã§ã³ãåºåãããã°ã¯ããã® shim logã«ãã£ãŠãã€ãçµç±ã§èªã¿åãããUnix Socketãçµç±ã㊠Fluentd Forward Protocol ã§ãµã€ãã«ãŒã®Fluent Bitã«è»¢éãããŸãã ããã§äœãèµ·ãããïŒ Fluent Bitã§åŠçãè©°ãŸã£ããããŠãããã¡ããã£ã±ãã«ãªããšãFluent Bitã¯Inputãäžæåæ¢ããŸãããã®éãã¢ããªã±ãŒã·ã§ã³ãåºåãç¶ãããã°ã¯ã©ããªãã§ããããïŒ Fluent BitãInputã忢ããŠããéã«åºåããããã°ã¯ãFargateåºç€åŽã®shim loggerå
ã®ã¡ã¢ãªãããã¡ããã®å段ã®ãã€ãã®ãããã¡ã«æºãŸããŸãããããããã®ãããã¡ãæéã§ãããã£ãŠFluent Bitã埩垰ããŠåéãããšãã«ã¯ããã®éã®ãã°ã¯éã«æ¶ããŠããå¯èœæ§ããããŸãã application-to-sidecar 察ç åºæ¥ãã ãåŠçãè©°ãŸããªãããã«ãããå¯èœãªç¯å²ã§ãããã¡ã倧ããããããšã察çãšãªããšèããŸããäŸãã°æ¬¡ã®ãããªããšãã§ããã§ãããã äžèŠãªãã°ãåºåããªã log-driver-buffer-limit ãªãã·ã§ã³ã§ã®shim loggerã¬ã€ã€ã®ãã¥ãŒãã³ã° log_routerã®ãããã¡ãµã€ãºãretryã®äžéèšå®çã®ãã¥ãŒãã³ã° Outputã®å€±æãšéé£ãæ¬ æ Fluent Bitããã°ãåãåã£ãåŸãDatadogãžéä¿¡ãããã§ãŒãºã§ãã ä»çµã¿ Fluent Bitã¯ãã°ã1ä»¶ãã€éãã®ã§ã¯ãªããå¹çåã®ããã«è€æ°ã®ãã°ããŸãšããŠChunkã«ããäžå®ãµã€ãºãŸãã¯äžå®æéããšã«éä¿¡ããŸãã ããã§äœãèµ·ãããïŒ Outputã®å€±æã¯ããã€ã³ãã©èµ·å ããšããã°å
容起å ãã®2ã€ã®ãã¿ãŒã³ã«åãããããšèããŸããããããã®æåãšãªã¹ã¯ãèŠãŠãããŸãããã ã€ã³ãã©èµ·å ïŒãããã¯ãŒã¯ã転éå
ã®é害 ã€ã³ã¿ãŒãããæ¥ç¶ã®åé¡ããDatadog APIåŽã®äžæçãªé害ããããã¯APIããŒçã®èšå®ãã¹ãªã©ãããã«è©²åœããŸãã Fluent Bitã¯éä¿¡ã«å€±æãããšãèšå®ãããåæ°ïŒ Retry_Limit èšå®ïŒã ãåéã詊ã¿ãŸããããããé害ãé·æéç¶ããŠãªãã©ã€åæ°ã䜿ãåããšããã®Chunkã¯ç Žæ£ãããŸãã æ¬ æãé²ãããã«ãªãã©ã€ãç¡éã«èšå®ããããšãå¯èœã§ãããéä¿¡ã§ããªããã°ãFluent Bitã®ãããã¡ã«æ»çãç¶ããããšã«ãªããŸãããããè§£æ¶ãããªããšãããã¡ãåãŸã£ããŸãŸã«ãªããçµæãšããŠåè¿°ã®ã€ã³ãããã®äžæåæ¢ãåŒãèµ·ãããæ°ããªãã°ã®åã蟌ã¿èªäœãæ¢ãŸã£ãŠããŸããŸãã https://docs.fluentbit.io/manual/data-pipeline/buffering#per-input-settings ç¹å®ãã°èµ·å ïŒ äžæ£ãªãã°ã«ããå·»ãæ·»ãæ¬ æ ãããåä»ãªã±ãŒã¹ã§ããã€ã³ãã©ã¯æ£åžžã§ããã¢ããªã±ãŒã·ã§ã³ãåºåãããç¹å®ã®ãã°ããåå ã§çºçããããšããããŸãã Datadog Logs APIã«ã¯ãããã€ããŒããããæå€§ã³ã³ãã³ããµã€ãºïŒéå§çž®ïŒ: 5MBããšããå¶éããããŸãã äŸãã°ãBase64ãšã³ã³ãŒããããç»åãPDFããŒã¿ãå«ã æ°MBã®å·šå€§ãªãã° ã1ä»¶åºåããããšããŸããFluent Bitã¯ãã®å·šå€§ãã°ãšãåãã¿ã€ãã³ã°ã§åºåãããæ£åžžãªå°ãããã°ããŸãšããŠ1ã€ã®Chunkã«ããŠããŸããŸããFluent Bitã®datadog output pluginã¯Chunkåäœã§ãã°ãéä¿¡ããŸãããã®Chunkãéä¿¡ããããšãããšããµã€ãºå¶éè¶
éã«ããDatadogãã 413 Payload Too Large ãšã©ãŒãè¿ãããããæ¥ç¶ããªã»ããããããããŸãã éèŠãªã®ã¯ã åé¡ã®ãã巚倧ãã°ã ãã§ãªããåãChunkã«å«ãŸããŠããæ£åžžãªãã°ããŸãšããŠæåŠãããŠããŸã ç¹ã§ãããã£ã1è¡ã®è¡åã®æªããã°ã®ããã§ãåšå²ã®ç¡å®ãªãã°ãŸã§éé£ãã«ããŠæ¶ããŠããŸãå¯èœæ§ãããã®ã§ãã Fluent Bitã®ã¡ã¢ãªãããã¡ã®ãµã€ãºå¶éãèšããã°ããã®ã§ã¯ïŒãšæããããããããŸããããããã該åœãã mem_buf_limit èšå®ã¯ ãœãããªããã ãšããŠå®è£
ãããŠããããã§ããèªã¿è§£ãããœãŒã¹ã³ãŒãã¬ãã«ã®æåãšããŠã¯ããæžã蟌ã¿åã«ç©ºã容éããã§ãã¯ãããã®ã§ã¯ãªãããæžã蟌ãã åŸã«äžéãè¶
ããŠããªãããã§ãã¯ããããšããåãã§ãäžæçã«äžéãè¶
éããããšã¯èš±å®¹ãããŠããããã§ããã mem_buffer_limit = 5MBã®æã«å·šå€§ãªãã°ãæ¥ãå Žåã®æå å¯Ÿç æ¹åæ§ã¯å€§ããã¢ããªã±ãŒã·ã§ã³å±€ã§ã®äºé²çèšèšãšã転éå±€ã§ã®ãã£ã«ã¿ãªã³ã°ã»ãããã¡å¶åŸ¡ãèããããŸãããããããã¬ãŒããªãã䌎ããããã·ã¹ãã ã®ç¹æ§ã«å¿ãããã©ã³ã¹ãæ±ããããŸãã ã¢ããªã±ãŒã·ã§ã³åŽã§é·å€§ãªãã°ãåºåããªãããå¶éãã ã¢ããªã±ãŒã·ã§ã³ãŸãã¯fluent bitã¬ã€ã€ã§äžå®ãµã€ãºãè¶
ãããã°ãã£ãŒã«ããèªåçã«åãæšãŠãããã«ãã ç¹å®ãã¿ãŒã³ã®ãã°ãé€å€ãŸãã¯çœ®æãã mem_chunk_size , flush_interval ãçãããŠå·»ãæ·»ãæ¬ æã®åœ±é¿ç¯å²ãå°ãããã ã¡ã¢ãªãããã¡ã®æ¶å€± Fargateã®ãããªã³ã³ããç°å¢ç¹æã®ãªã¹ã¯ã§ãã ä»çµã¿ Fluent Bitã®ãããã¡èšå®ãããã©ã«ãã® memory ã«ããŠããå Žåããã°ã¯éä¿¡å®äºãŸã§ã¡ã¢ãªäžã«ããååšããŸããã ããã§äœãèµ·ãããïŒ ã³ã³ãããäºæãã忢ããå Žåãã¡ã¢ãªäžã®æªéä¿¡ãã°ã¯æ¶æ»
ããŸããããã¯ç°åžžæã ãã§ãªããéåžžã®ãããã€ãããŒã§ãçºçãåŸãŸãã ECSã¿ã¹ã¯åæ¢æãã³ã³ããã«ã¯SIGTERMãéãããŸãã ã¿ã¹ã¯å®çŸ©ã® stopTimeout ïŒããã©ã«ã30ç§ïŒä»¥å
ã«çµäºããªãå ŽåãSIGKILLã§åŒ·å¶çµäºãããŸãã Fluent BitåŽã«ãã·ã£ããããŠã³æã®åŸ
æ©èšå®ïŒ Grace ïŒããããŸãããããããåã¿åããããããã¡ãFlushãããåã«ããã»ã¹ã匷å¶åæ¢ããããšãã°ã¯æ¬ æããŸãã åŒçš: ãECS ã®ã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«ã·ã£ããããŠã³ããæ¹æ³ã, Amazon Web Services ããã°, https://aws.amazon.com/jp/blogs/news/graceful-shutdowns-with-ecs/ 察ç ãããã¡ã®ã¹ãã¬ãŒãžã¿ã€ãã filesystem ã«å€æŽãæ°žç¶åããããã ãECS Fargateã®å ŽåãçŸå®çã«äœ¿ããã®ãEFSãããã§æ°žç¶åã¹ãã¬ãŒãžã®å©çšã«å¶éããããããã¬ãŒããªãã®æ€èšãå¿
èŠã§ãã stopTimeout ãš Grace ã®å€ãé©åã«èª¿æŽããã·ã£ããããŠã³æã«Flushå®äºãŸã§ã®ååãªç¶äºæéã確ä¿ããã flush_interval ãçãèšå®ãããããã¡ã«æºãŸããã°ã®éãæžããããšã§ãã·ã£ããããŠã³æã®æ¬ æãªã¹ã¯ãæå°åããããã ãããããã¯ãŒã¯è² è·ãšã®ãã©ã³ã¹ãèæ
®ããå¿
èŠããããŸãã DatadogåŽã®å¶é ç¡äºã«ã€ã³ã¿ãŒããããè¶ããŠDatadogã«å±ããŠããæåŸã®é£æããããŸãã ããã§äœãèµ·ãããïŒ DatadogåŽã«ã峿 Œãªåå
¥ã«ãŒã« ããããããã«éåãããšåã蟌ã¿åŸã«åé€ããŸãã¯åãæšãŠãããŸãã æ¥æ¬¡ã¯ã©ãŒã¿è¶
é : ã³ã¹ã管çã®ããã«èšå®ããã€ã³ããã¯ã¹ã®äžéãè¶
ããå Žåãã€ã³ããã¯ã¹ã«ã¯ä¿åãããŸããïŒã¢ãŒã«ã€ãèšå®ãããã°S3ã«ã¯æ®ããŸãïŒã ã¿ã€ã ã¹ã¿ã³ã : ãã°ã®æ¥æãã18æé以äžéå»ãã®å Žåãåã蟌ã¿å¯Ÿè±¡å€ãšãªãåé€ãããŸãã ãµã€ãºå¶é : åäžãã°ã1MBãè¶
ããå ŽåãDatadogã«ãã£ãŠåãæšãŠïŒTruncateïŒãè¡ãããŸãã åè¿°ã®éããAPIãžã®éä¿¡ãã€ããŒãå
šäœïŒéå§çž®ïŒã5MBãè¶
ãããšãããããåãå
¥ãããããšã©ãŒãšãªããŸãã å¯Ÿç æ¥æ¬¡ã¯ã©ãŒã¿ã®ç£èŠã¢ã©ãŒããèšå®ãã åè¿°ã®éããã¢ããªã±ãŒã·ã§ã³åŽãšFluent BitåŽã§å¯Ÿçãè¡ããDatadogåŽã®å¶éã«åŒã£ããããªãããã«ããã retryééãã¿ã€ã ã¹ã¿ã³ãã®å¶éãè¶
ããªãããã«åéã®èšèšããã ãŸãšã ãã°åºç€ã®ä¿¡é Œæ§ãé«ããããã«ã¯ããããã®æ¬ æãã€ã³ããçè§£ããäžã§ã®èšèšã»éçšãå¿
èŠã§ãã Input : Fluent Bitãè©°ãŸããšãã®å段ã§ãã°ãæº¢ãæ¬ æãããã Output : Chunkåäœã§åŠçããããããç°åžžãªãã°ãæ£åžžãªãã°ãå·»ã蟌ãããšããããéä¿¡ãªãã©ã€ã¯ãã¬ãŒããªããããã Buffer : ã¡ã¢ãªãããã¡ã¯æ®çºãããã Ingest : DatadogåŽã®ã¯ã©ãŒã¿ããµã€ãºå¶éãæèããã ãã°ãæ¬ æããŠãããšããäºè±¡ã«çŽé¢ãããšããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã ãã§ãªãããã®éºããéã®ãã®ã©ãã§è©°ãŸã£ãŠããã®ããæ³åã§ãããšã調æ»ã®è§£å床ããã£ãšäžããã¯ãã§ãã åèè³æ Amazon Web ServicesïŒ2025ïŒã詳现: Fargate ããŒã¿ãã¬ãŒã³ãïŒAWS ããã°ïŒïŒ2026幎2æ2æ¥ïŒ https://aws.amazon.com/jp/blogs/news/under-the-hood-fargate-data-plane/ ïŒïŒ Amazon Web ServicesïŒ2025ïŒãSend Amazon ECS logs to an AWS service or AWS PartnerãïŒAmazon ECS Developer GuideïŒïŒ2026幎2æ2æ¥ïŒ https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html ïŒïŒ Amazon Web ServicesïŒ2025ïŒãECS ã®ã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«ã·ã£ããããŠã³ããæ¹æ³ãïŒAWS ããã°ïŒïŒ2026幎2æ2æ¥ïŒ https://aws.amazon.com/jp/blogs/news/graceful-shutdowns-with-ecs/ ïŒïŒ Fluent BitïŒ2025ïŒãBuffering and StorageãïŒFluent Bit ManualïŒïŒ2026幎2æ2æ¥ïŒ https://docs.fluentbit.io/manual/administration/buffering-and-storage ïŒïŒ Fluent BitïŒ2025ïŒãBackpressureãïŒFluent Bit ManualïŒïŒ2026幎2æ2æ¥ïŒ https://docs.fluentbit.io/manual/administration/backpressure ïŒïŒ DatadogïŒ2025ïŒããã°ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãïŒDatadog DocsïŒïŒ2026幎2æ2æ¥ïŒ https://docs.datadoghq.com/ja/logs/troubleshooting/ ïŒïŒ
æ ªåŒäŒç€Ÿã¿ã€ããŒã®shihorinã§ãã 1æ7ã9æ¥ã«éå¬ããããRegional Scrum Gathering Tokyo 2026ïŒRSGT2026ïŒãã«åå ããŠããŸããã RSGTã«åå ããã®ã¯ãæšå¹Žã«ç¶ã2åç®ã§ããæšå¹Ž11æã«ãDevEnable宀ïŒãããã¯ãçµç¹éå¶ãæè¡åºå ±ãæ
ãããŒã ïŒãã«ç°åãããããä»åã¯çµç¹éå¶ãæåéžæã®èгç¹ãç¹ã«æèããŠåå ããŸããã ç¹ã«å°è±¡çã ã£ãã»ãã·ã§ã³ãOSTã§åŸãããåŠã³ã»ææ³ãããã®ããã°ã§ã¢ãŠããããããŠã¿ãŸãã 𪎠ã³ãã¥ããã£æåãçµç¹ã«æ ¹ä»ããããæšé²è
ãšããã³ãåãåã£ãå®è·µè
ãèªãã³ãã¥ããã£ã®äŸ¡å€ãšæç¶å¯èœæ§ãžã®éçã speakerdeck.com æ ªåŒäŒç€Ÿãã°ã©ã¹ã®é£¯ç°ããã»æ°žäºããã«ããã»ãã·ã§ã³ã§ãã ã³ãã¥ããã£ã«åå ãå§ããã³ãã¥ããã£ã«å©ããããå人ã®çµéšãèµ·ç¹ã«ã瀟å
ã§ã³ãã¥ããã£æåãæ ¹ä»ãããæç¶ããããŸã§ã®å®è·µçãªåãçµã¿ããã¹ããŒãªãŒã«æ²¿ã£ãŠèªãããã»ãã·ã§ã³ã§ããã1人ã§å§ããããšãäŒç€Ÿããèªããããããã«ãªãããããŠå
±ã«æšé²ããŠããã仲éã«ããã³ãç¹ãããããçŽ æµãªã¹ããŒãªãŒã ãªãšæããŸããã ãã®ã»ãã·ã§ã³ãèããŠãéèŠã ãšæã£ãèŠçŽ ã¯ãã®2ã€ã§ãã èªåããã£ãŠã¿ãŠãåšãã«åºãã ããªãã ãæãããšæã£ãŠãããã£ãããéããé£ã³èŸŒãã§ã¿ããããã§åŸããããã®ãåšãã«åºããã èªåãããããšã§ã掻åã®äŸ¡å€ãèªããããã«ãªãã ç¶ç¶ãå€§äº ç¶ç¶ããããšã§è€å©çã«äŸ¡å€ãäžããã ç¶æããåªåãç¶ããªããã°ç¶æã§ããªãã1人ã®åŒ·ããã¯ãŒã ãã§ãç¶ããªããè€æ°ã®å°ããªã¢ã¡ã³ã¿ã ãçããã£ããäœããšãç¶æããããã®åŸæŒããæ ¹æ°ããè¡ãã ãããã¯ã³ãã¥ããã£æŽ»åã«éãããã«ã«ãã£ãŒãã€ããã»åºããäžã§å
±éããèãæ¹ã§ã¯ãªãã§ããããã æè¿ç§ã¯ãçºä¿¡æåãç¶ç¶çã«è²ãŠãããšããæ¥åã«åãçµã¿å§ããŸãããèªåèªèº«ããçºä¿¡æŽ»åã®äŸ¡å€ããèªããããã«ãªãããã«ãä»å¹Žã¯ã©ããã®ã«ã³ãã¡ã¬ã³ã¹ã«ããããŒã¶ã«ãåºããŠã¿ãããšæããŸãâŠâŠïŒ ãããŠãã®ã»ãã·ã§ã³ã¯ãèªåèªèº«ã®ã³ãã¥ããã£æŽ»åã«é¢ãããããŸã§ãšçŸåšå°ãæ¯ãè¿ããµãããããã£ããã«ããªããŸããã ç§ã¯ã¿ã€ããŒå
¥ç€ŸåãŸã§ãæ°ãåããæã«ããçšã«connpassã§ã€ãã³ããèŠã€ããŠåå ãããããã§ãããå
¥ç€ŸåŸã¯ãåšãã®ã¡ã³ããŒãã«ã³ãã¡ã¬ã³ã¹ãã€ãã³ãã«ç©æ¥µçã«åå ããŠããã®ãç¥ããç§ãåæ§ã«è¶³ãéã¶ããã«ãªããŸããã倧ããªé²æ©ã§ã¯ãããšæããŸãããããã®å Žã«è¡ãã ãã§æºè¶³ããŠããŸã£ãŠããã®ããããšãã»ãã·ã§ã³ãéããŠæ°ã¥ããŸãããä»ãããåªåã®æ¹åæ§ãå€ããã¿ã€ãã³ã°ãªã®ãããããŸãããä»åŸã¯ãå°ãããŠãè¯ãã®ã§èªåããã®å Žã«äœããè²¢ç®ããããæèããŠã³ãã¥ããã£åå ã§ããããã«ãªããããšæããŸãã ð¥ èªå·±ç®¡çåããŒã ãšå人ã®ã»ã«ããããžã¡ã³ã speakerdeck.com æ ªåŒäŒç€Ÿã«ã±ãã·ã®å°ç°äžããã«ããã»ãã·ã§ã³ã§ãã èªå·±ç®¡çåããŒã ã§ããããã«å€§åãªããšãèªãããŠããŸããã äžäººã²ãšãã®ã»ã«ããããžã¡ã³ããå¿
èŠãã»ã«ããããžã¡ã³ãã®åå°ã«ã¯ãã¢ãããŒã·ã§ã³ãããžã¡ã³ããããããã¢ãããŒã·ã§ã³ã®æºæ³ïŒå¿ã®çç«ç¹ïŒã¯äººã«ãã£ãŠãæã«ããã£ãŠå€åããã ã¡ã³ããŒã®ã¿ã€ãã«ãã£ãŠããããããã¢ãããŒã·ã§ã³ã®åŒãåºãæ¹ïŒç®æšèšå®ããããŒãžã£ãŒã®åãããæ¹ïŒãããã æ¬²æ±ïŒERGçè«ã§ãããæé·ããé¢ä¿ããååšãïŒãæãªããããšæ©æŠãèµ·ãããã¢ã«ããŒãã»ãšãªã¹ã®ABCçè«ãçšããŠå
çããæ©æŠãä¹ãè¶ããããããã«è¡åããã ãããŠæåŸã¯ããèªåãäœã«ã¢ãããŒã·ã§ã³ãæããããæç¢ºã«ãããŸãã¯èªåããã»ã«ããããžã¡ã³ãããŠã¢ãããŒã·ã§ã³ãåŒãåºããŠããããšã«ãã²ãã©ã€ããŠãã ããããšããã¡ãã»ãŒãžã§ç· ããããŠããŸããã â»ERGçè«: ãæé·ããé¢ä¿ããååšãã®3ã€ã®æ¬²æ±ã§æ§æãããã¢ãããŒã·ã§ã³çè«ã®ããš â»ABCçè«: çºçããåºæ¥äºã«å¯Ÿãã信念ã圱é¿ãèµ·ãããææ
ãåŒãèµ·ããããšããçè« ç§ãæå±ããŠããããŒã ã¯ã以åã¯åèªã®å®åç¯å²ã«éäžããã¹ã¿ã€ã«ã§ããããä»ã¯ãäºãã«è¶å¢ãæ¯ãåãå§¿ãç®æããŠããŸãããŸãã«ãã®ã»ãã·ã§ã³ã§èªãããŠãããèªå·±ç®¡çåããŒã ãã ãšæ°ã¥ããŸããã ç§ã¯ã€ãããŒã ã®ããã»ã¹ã«çŠç¹ãåœãŠãã¡ã§ãã¡ã³ããŒäžäººã²ãšãïŒèªåãå«ããŠïŒã®å
é¢ã«ç®ãåããããšãçãã«ãªã£ãŠããããã«æããŸãããŸãã¯èªåããããŠåšãã®ã¡ã³ããŒã®ã¢ãããŒã·ã§ã³ã®æºæ³ã«æãã銳ããå¿ã®ç«ãçããç¶ããããããæ¯æŽããŠããããã§ãð¥ Day3ã®OST 16ãã©ã㯠x 4æ ïŒ1æ 30åïŒã®ããŒãã起祚ãããŠããŸãããããããšããŒãã䞊ãã ããŒãã¯å§å·»ã§ããïŒ ã©ãã«ãããè¿·ãã€ã€ãä»åãçµãã§ããæ¥åã«é¢é£ããããªããŒããéžãã§åå ããŠããŸããã ãã®å
2ã€ã«ã€ããŠæžããŠã¿ãŸãã ããŒãïŒä»æ¥ã®åŠã³ãå°ããã€ãã»ãã®å°ããã€ãããŒã ãçµç¹ã®å
±éç¥ã«å€ããä»çµã¿ ã¿ã€ããŒã®ãããã¯ãçµç¹ã§ã¯ãæ¥åæéå
ã«ã«ã³ãã¡ã¬ã³ã¹ã«åå ããå Žåã瀟å€çºä¿¡ã¬ããŒãã®å·çãããã¯ç»å£ããé¡ãããŠããŸããäžæ¹ã§ãã¬ããŒãå·çã»ç»å£ä»¥å€ã«ãåŠã³ãåºããææ®µã¯æ§ã
ããã¯ãã§ããã£ãšè©Šããªãã ãããããšå人çã«èª²é¡æãæã£ãŠããããããã®ããŒãã«åå ããŸããã ãã®ããŒãã起祚ããæ¹ã®ãè©±ãæ·±æãããŠãããšã äŒç€ŸããRSGTã«åå ããŠããã¡ã³ããŒãå°æ°ãRSGTãã¢ãžã£ã€ã«ãã¹ã¯ã©ã ã«èå³ãæã£ãŠãã人ãçŸæç¹ã§ã¯éãããŠããã ããã¥ã¡ã³ãã«ãŸãšããŠæž¡ããŠããåéãå€ããšåãåãã¥ããããšããããéãããšæããããŠããã®ã§ã¯ãªãããšèããŠããã åŠãã§ããããšãç±å¿ã«è©±ããŠãã人ã«ãã£ãŠåå¿ã®æž©åºŠå·®ãããã ãšããèæ¯ããããšåãããŸããã åŠãã§ããåŽã®å¿ã®ç«ã¯çãäžãã£ãŠããŠããåãåãåŽã®æºåãã§ããŠããªãç¶æ
ã®ããã«èŠããŸãã ãã£ã¹ã«ãã·ã§ã³ã§åºããåŠã³ã100ãã®ãŸãŸã¶ã€ããã®ã§ã¯ãªããçžæãåãåããã¿ã€ãã³ã°ã§å±ããããããèŠæ¥µããããšã倧äºãªã®ã§ã¯ããšããã¢ã€ãã¢ã¯ãç¹ã«çŽåŸæããããèšæ¶ã«æ®ããŸããããä»ããã®ã¿ã€ãã³ã°ã ïŒããšæ°ã¥ããæã«ããåãåºããããã«ãåŠãã ããšã®èšèªåã»äœç³»åãã»ããã§å¿
èŠããã§ããã DevEnable宀ãçå®ããŠãããçºä¿¡ã«ãŸã€ããã¬ã€ãã©ã€ã³ãã§ã¯ããèªèº«ã®ç¥èŠã圢åŒç¥ã«å€æã§ããããšããçºä¿¡æŽ»åã®1ã€ã®ç®çãšããŠèšèŒããŠããŸããããã«ããæãæ¥ãæã«ããåãåºããŠäœ¿ããããšããå
·äœçãªå©çšã·ãŒã³ãè£è¶³ããããšãæ€èšããããšæããŸãã ããŒãïŒããã¯ãã³ã«ãŒã«ãã©ãããŠãïŒ å
æ¥è¡ããã瀟å
æèŠªäŒã§ãåå è
ã«ããã¯ãã³ã«ãŒã«ãžã®ãååããé¡ãããŸãããã§ãããç¥ã£ãŠãã人å士ã§åºãŸã£ãŠããŸããã¡ã§ããã ãããã¯ãã³ã«ãŒã«ãžã®ååããé¡ãããã ãã§ã¯è¶³ããªãããšããŒã å
ã§è©±ããŠããããããã³ããåŸãããšãã®ããŒãã«åå ããŸããã ãã£ã¹ã«ãã·ã§ã³ããªããèªåãã¡ã§ããã¯ãã³ã«ãŒã«ã詊ããçµæã2ã€ã®ã³ããåãã£ãŠããŸããã ä»åŸæèŠªäŒãªã©ã§ããã¯ãã³ã«ãŒã«ã䜿ãæã¯ã説æã¹ã©ã€ãã®äžã«ããããå
¥ããŠã¿ãããšæããŸãã ããã¯ãã³åŽãããé£ãã«ãããïŒããã¯ãã³ã圢æããŠãã人ãã¡ã¯ãè¿ããæ©ããŠãã人ãèŠã€ãããæãå
¥ããïŒç®ãåããããææããããã¹ããŒã¹ãéããïŒã ããã¯ãã³ã«èªããé£ããã«ãããïŒãä»ã©ããªè©±ãããŠãããã§ããïŒããšãããã¬ãŒãºã䜿ãã°éäžããã§ãå
¥ã£ãŠãããã話ããããããŠOKæãèªåããæŒåºããïŒäŸïŒã話ããããææè¡šç€ºã·ãŒã«ã貌ãïŒã éå¶ã®ç«å Žã ãšãã人ãéãŸããå Žæãçšæããããšãã1ã€ã®å·¥å€«ãšããŠå®è·µã§ãããã§ãã äŸãã°ãå£éã«æ€
åã䞊ã¹ãŠã¿ããšã3人䞊ãã§åº§ã£ãŠãã°ã«ãŒããéããç¶æ
ã«ãªããªãã®ã§ã4人ç®ãå
¥ããããã§ãããã çµããã« ååã®RSGTã¯æ°èšããŒã ã®ã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠåå ããŠããŸããããä»åã¯éãç«å Žã§ã®åå ã§ããã ã»ãã·ã§ã³ãOSTã®éžã³æ¹ã¯ãã¡ãããã¹ãã³ãµãŒããŒã¹ãå»äžã§ã®äŒè©±å
容ãååãšã¯å€åããããæ°é®®ãªæ°æã¡ã§åå ã§ããŸããã ä»ååŸãããåŠã³ã¯ãèšèªåã»åè»ããŠãæãæ¥ãæã«ããæ±ããããã«æºåããããšæããŸãã ãããŠæåŸã«å®£äŒã§ãïŒ ã¿ã€ããŒã§ã¯çŸåšãäžç·ã«ã¯ããã仲éãåéäžã§ãã åŠç¿ãšå®è·µã®ãµã€ã¯ã«ããŸãããªãããããã¯ãéçºã«åãçµã¿ããæ¹ããèå³ãããã°ãã²ã話ãããŸãããïŒ ãããã¯ãæ¡çšãµã€ãTOP ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã
ä»åã¯ãã¿ã€ããŒã®ã Kaigi Pass ãå¶åºŠãå©çšããŠã12/4ã«éå¬ã®ããããããã¯ããããŒãžã£ãŒã«ã³ãã¡ã¬ã³ã¹ïŒä»¥äžãpmconfïŒã«åå ããŠããŸããã ãã®å¶åºŠãéããŠãéåžžã«ææçŸ©ãªåŠã³ãåŸãããšãã§ããŸããã®ã§ããã®å
容ãå
±æããŸãã åå ã»ãã·ã§ã³ ãã¡ã«ã«ãªã®ããŒã¿åæAIãšãŒãžã§ã³ããSocratesïŒãœã¯ã©ãã¹ïŒããšããããæ¯ããããŒã¿æŽåã ç»å£è
ïŒæ ªåŒäŒç€Ÿã¡ã«ã«ãª ããŒã¿ã¢ããªãã£ã¯ã¹ããŒã ã»ãã·ã§ã³è©³çްã»åŠã³ 1. èæ¯ãšèª²é¡ (As-is) ã¡ã«ã«ãªã§ã¯å°ä»»ã®ããŒã¿ã¢ããªã¹ãã®ãªãœãŒã¹ã最沢ã§ã¯ãªããã¢ããªã¹ããããªãããŒã ïŒ0åã®ããŒã ãååšïŒã§ã¯ãPdMãèªããåæãè¡ãå¿
èŠããããŸããã éšéãè¶
ããã€ã³ãµã€ãåéã®å°é£ã: èªåã®æ
åœå€ã®é åïŒäŸïŒã¡ã«ã«ãªæ
åœãã¡ã«ãã€ã®ããŒã¿ãèŠãçïŒã¯åæã®ããŒãã«ãé«ããå·¥æ°ãèŠãããããè€åçãªæææ±ºå®ãå°é£ã§ããã ãªãœãŒã¹ã®å£: ãåæãã£ãã·ãã£ããããã«ããã¯ãšãªããåãã®éãšè³ªãå¶éãããŠããŸããã 2. 解決çïŒAIãšãŒãžã§ã³ããSocratesã (To-be) èªç¶èšèªã§å¯Ÿè©±å¯èœãªåæãšãŒãžã§ã³ããå°å
¥ããããšã§ã以äžã®ç¶æ
ãå®çŸããŠããŸãã æªç¥ã®é åã«ã察å¿: ãã¡ã«ãã€ã®é éæ®é«ã®äœ¿ãéå
èš³ãã®ãããªããã¡ã€ã³ç¥èããªãé åã§ãããšãŒãžã§ã³ããããŒã¿ãæ¢ãåºããŠéèšã»å¯èŠåããŠãããŸãã 䞊åæè: è€æ°ã®èгç¹ïŒParallel AgentïŒã§ãã¬ã¹ããè¡ãã仮説åºãããæ€èšŒãŸã§ãäžæ°é貫ã§å®è¡ããŸãã åãã®éãšè³ªã®åäž: ãªãœãŒã¹å¶çŽãæ°ã«ãã貪欲ã«èª¿ã¹ãããããã«ãªããããšã§ãã¢ãŠããããã®ç·éããçŽçµããŠåäžããŸãã 3. å®çŸã®ããã®åå°ïŒBasic Tables AIãæ£ããããŒã¿ãæ±ããçç±ãšããŠã ãAI-ReadableãªããŒã¿åæåºç€ã ã®ååšã匷調ãããŸããã 3å±€æ§é : Raw Data Tables â Basic Tables â Analytical Tables/Views ãšããæ§é ãæ¡çšã ç¹åŸŽ: ãBasic Tablesãã¯äººéãšAIã®äž¡æ¹ãåæããããããã«æŽçãããäžéããŒãã«ã§ãããããã«ç²ã匷ãæè³ããããšãåå ã§ãã 4. çµç¹ãšéçšã®å·¥å€« ããŒã«ãå
¥ããã ãã§ãªããããã䜿ãããªãããã®çµç¹ã¥ãäœããã»ããã§è¡ãããŠããŸãã ç¬ç«ããå®è¡çµç¹: äŒç»ã»éçºã»ããŒã±ãŸã§å®çµã§ããéè»çãªãBI ProductããŒã ããéçºãäž»å°ã 䜿ãããªãã®ã«ãŒã«: æ°ã«ãªã£ãããŸããšãŒãžã§ã³ãã«èãïŒäŸé Œããåã«çžè«ïŒã åºç€çãªSQLãšç€Ÿå
DBã®çè§£ãæã¡ãã¯ãšãªã¬ãã¥ãŒã培åºããŠå質ãæ
ä¿ããã 人ãåããããã®æŽ»çš: ã¬ããŒããèç©ããã ãã§ãªãããéããã°åæã¬ããŒããã·ã¥ãããšæç€ºãããã¡ã¯ããããŒã¹ã«çµç¹å
šäœãåããæåãã€ãäœã£ãŠããŸãã 5. èŠä»¶å®çŸ©ããã»ã¹ãžã®å¿çš åæã ãã§ãªããèŠä»¶å®çŸ©ã®ããã»ã¹å
šäœïŒã€ã³ãããâåŠçâã¢ãŠããããïŒã§ã«ãããŠã掻çšãããŠããŸãã ã€ã³ããã: ãŠãŒã¶ãŒãã°ã宿§èª¿æ»ãç«¶å調æ»ãªã©ã ã¢ãŠãããã: ãŠãŒã¶ãŒã¹ããŒãªãŒãæ©èœä»æ§æžãABãã¹ãèšèšæžãªã©ã ããããAIãåŠçããããšã§ãPdMã®æ¥åå¹çãé£èºçã«é«ããŠããŸãã çŸå ŽèŠç¹ã§ã®æ°ã¥ããšãããããã®ã¢ã¯ã·ã§ã³ ä»åã®ã»ãã·ã§ã³ãèããŠç§ãã¡ãäœãæããçŸåšé²ããŠãããããžã§ã¯ããã©ãå éãããŠããã®ããããŒã ãšããŠã®ãç±éããšã次ã®äžæãããŸãšããŸããã ç§ãã¡ãåŸãã確信ããšãæ°ã¥ãã â ãé åæšªæãããããGrowthã®å£ãå£ã ã¹ã©ã€ãã«æ ãåºããããéšéãè¶
ããã€ã³ãµã€ãåéãå°é£ããšããæ©ã¿ã¯ãæ£çŽãªãšããããããä»ã®ç§ãã¡ã®ããšã ããšçæããŸããã ç¹ã«Growthé åã§ã¹ããŒãæãæã£ãŠä»®èª¬æ€èšŒãåãããšãããšãã©ãããŠãæ
åœå€ã®ããŒã¿ããã¡ã€ã³ç¥èã®å£ã«ã¶ã€ãããŸãããããSocratesãã®ããã«ç€Ÿå
ã®å
šããŒã¿ãå°ç¶ãã«ãªããAIããã®æèãŸã§ãçè§£ããŠãããã°ãSQLãæžãæéãããŠãŒã¶ãŒã«åãåã£ãŠæèããæéãã«å€ããããŸãããããããã®æªæ¥å³ã«ã匷ãå¯èœæ§ãæããŸããã â 誰ãããè¿·åãã«ãªããã«æææ±ºå®ã§ããçµç¹ãž ãæææ±ºå®ã®éå±€ãæžããããšããææ³ããçµç¹ãæ¥æ¡å€§ããŠããä»ã®ç§ãã¡ã«ãšã£ãŠéåžžã«éèŠãªããŒãã§ãã æ°ãããžã§ã€ã³ããã¡ã³ããŒããè€éãªããŒãã«å®çŸ©ã®æ£®ã§è¿·åã«ãªãããAIãšãããçžæ£ããéããŠéå»ã®çµç·¯ãããŒã¿ã«å³åº§ã«ã¢ã¯ã»ã¹ã§ããããããå®çŸã§ããã°ããªã³ããŒãã£ã³ã°ã®ã¹ããŒãããèªèµ°åãåçã«å€ããã¯ãã§ãã â 宿§ããŒã¿ããè³ç£ããšããŠäœ¿ãåã æ°åïŒå®éããŒã¿ïŒã ãã§ãªããåè«ã¡ã¢ãè¡åãã°ãšãã£ãã宿§æ
å ±ããŸã§AIã«èªãŸãããšããæ§æ³ã«ã¯ã¯ã¯ã¯ã¯ããŸããã ãæ°åã«ã¯è¡šããªãããã©ãçŸå Žã«ã¯èœã¡ãŠãããã³ãããAIãæŸãäžããŠãããã°ãç§ãã¡ãçã¿åºã仮説ã®ç²ŸåºŠã¯ãã£ãšé«ãŸãã¯ãããããæ¯ããããã®ã培åºããããŒã¿æåãããBI ProductããŒã ããšããäœå¶ã¥ãããå«ããŠãæ¬æ°ã§ç䌌ããŠãããããã€ã³ãã§ãã ããããããããšïŒNext ActionsïŒ â é²è¡äžã®PoCããããã«ç£šã蟌ã å®ã¯çŸåšãç§ãã¡ã瀟å
ã§åæ§ã®ããŒã¿åºç€æ§ç¯ã«åããåãçµã¿ãã PoCïŒæŠå¿µå®èšŒïŒãšããŠãã§ã«å§ããŠããŸãã¹ã¿ãŒããããŠããŸãã ãæ¹åæ§ã¯ééã£ãŠããªãã£ãããšããå¿åŒ·ããæãããšåæã«ãä»åã®ã»ãã·ã§ã³ã¯ããã®PoCãæåãããããã®å€§ããªãã³ãã«ãªããŸããã å
·äœçã«ã¯ã以äžã®åããããã«å§ããŸãã ãBasic Tablesãã®ææ³ããèªåãã¡ã®PoCãž ä»åã®å€§ããªåŠã³ã§ãããBasic TablesïŒAIãšäººéãäž¡æ¹ãèªã¿ãããäžéå±€ïŒãã®æ§é ããçŸåšç§ãã¡ãé²ããŠããPoCã®èšèšãšç
§ããåãããŠã¿ãŸãã DRE (Data Reliability Engineering) ããŒã ãšã飿ºãããä»ã®èšèšã§AIãæ¬åœã«ããŒã¿ãæ£ããèªããã®ãïŒããšããèŠç¹ã§ããã®ã£ãããæŽãåºããPoCã®èšèšå³ããã©ãã·ã¥ã¢ããããŸãã ã¹ã¢ãŒã«ã¹ã¿ãŒãã§ã察話ããå§ãã åºç€æŽåãšäžŠè¡ããŠããŸãã¯ç¹å®ã®ããŒã¿ã»ããã«çµã£ã圢ã§ãã察話åã€ã³ã¿ãŒãã§ãŒã¹ãã詊ããªããæ€èšããŸããæ¥é±ãã£ããããŒã ã§éãŸããå
·äœçãªããŒãããããåŒãäºå®ã§ãã ã¡ã«ã«ãªããã®äºäŸãåºæ¿ã«ãç§ãã¡ããæªæ¥ã®ããŒã¿åæäœéšãã®å®è£
ãäžæ°ã«é²ããŠãããŸãã é¢é£è³æ ⌠åç
§ãªã³ã¯ïŒã»ãã·ã§ã³å
ã§èšåã»é¢é£æ
å ±ïŒ ã¡ã«ã«ãªã®å¹ççãªããŒã¿æŽ»çšãæ¯ããããŒã¿ã€ã³ã¿ãã§ãŒã¹ Basic TablesïœMercari Analytics Blog æ§æ³1ã¶æã§ããŒã³ããã¡ã«ã«ãªã®æ°åæããŒã«ãSocratesããé«éã§éçºã§ããçç± | mercan
MLOpsãšã³ãžãã¢ã®tomoppiã§ãã ããŒã¿ãšã³ãžãã¢ãªã³ã°éš ããŒã¿ãµã€ãšã³ã¹ã°ã«ãŒãïŒä»¥äžãDSGïŒã«æå±ããMLïŒLLMåºç€ã®æ§ç¯ã»æ¹åã«åãçµãã§ããŸãã AI Security Conference ã«åå ããŠããã®ã§ããã®ã¬ããŒãèšäºãšãªããŸãã äœè«ã§ãããåœæ¥ã¯ãŸãæ³ã®ãåŒåœããçšæããã ããŸããã倧奜ããªãŸãæ³ã®ã«ããµã³ããåºãŠããŠãå人çã«æããã³ã·ã§ã³ãäžãã£ããã€ã³ãã§ããã Findy Toolsãããšã¹ãã³ãµãŒã®äŒæ¥æ§ã«ã¯ãæè¬ããŠãããããŸããã 以éãçé¢ç®ã«ã¬ããŒãããŠãããŸãã åå åæ© MLOpsãšã³ãžãã¢ãšããŠæ¬ã«ã³ãã¡ã¬ã³ã¹ã«åå ããçç±ã¯ã3ã©ã€ã³ã¢ãã«ã®ã第1ç·ããæ
ãç«å ŽãšããŠãLLMç¹æã®ãªã¹ã¯ç®¡çãMLOpsã®ãµã€ã¯ã«ã«çµã¿èŸŒãéèŠæ§ãæããŠããããã§ãã çŸåšãã¿ã€ããŒã®MLOpsããŒã ã§ã¯ãLLM APIïŒLLMOpsåºç€ã®éçºã»éçšãéãããå®å¿ã»å®å
šãªå©çšããæåªå
äºé
ã®äžã€ãšããŠåãçµãã§ããŸãã ãããŸã§ãã LLMã¢ããªã±ãŒã·ã§ã³åãProduction Readiness Checklist ã®çå®ãéããŠãã»ãã¥ãªãã£èгç¹ã®æŽçãé²ããŠããŸããã ãŸã瀟å
å匷äŒã§ã¯ã OWASP Top 10 for LLM ã AI-IRS ãšãã£ããã¬ãŒã ã¯ãŒã¯ã玹ä»ãããªã©ã瀟å
å
±æãè¡ã£ãŠããŸããã ä»åã¯ããããŸã§ã®ç¥èŠãããã«äžæ©é²ããã¹ããä»ç€Ÿã®å®åã«å³ããã»ãã¥ãªãã£éçšã®äºäŸãåéããèªç€Ÿåºç€ãžãã£ãŒãããã¯ãããã³ããåŸãç®çã§åå ããŠããŸããã å
šäœãéã㊠倧ããåãããšãããŒãã¯æ¬¡ã®3æ¬ç«ãŠã§ããã AIã¬ããã³ã¹ ïŒçµç¹ãšããŠã©ã決ããŠåããïŒ Security & Safety for AI ïŒLLMãå©çšããéã®ã»ãã¥ãªãã£å¯ŸçïŒ AI for Security ïŒã»ãã¥ãªãã£éçšã§AIãã©ã䜿ããïŒ å瀟ã®åæãéãã¶ããå¯äžã®æ£è§£ããããããã§ã¯ãªããããããã®çŸå®çãªèœãšãæãå
±æãããŠããã®ãè¯ãã£ãã§ãã å
±éããŠããã¡ãã»ãŒãžã¯ã次ã®3ç¹ã ãšçè§£ããŸããã ã»ãã¥ãªãã£ã¯éèŠã ãã ãã¬ãŒãã«ãªãããããšæŽ»çšãæ¢ãŸã ã ãããã Secure by Defaultãšãªãã¢ãŒããã¯ãã£ãšããã»ã¹ ãå€§äº ãã ãåçš®ããŒã«ã¯ãŸã æªæçã§ããã¬ãŒããªãã®äžã§åç€Ÿãæææ±ºå®ããŠãã å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ ä¿¡é Œã§ããAIã®å®çŸã«åããæ±äº¬æµ·äžã°ã«ãŒãã®AIã¬ããã³ã¹ãšã»ãã¥ãªãã£æŠç¥ïŒæ±äº¬æµ·äžããŒã«ãã£ã³ã°ã¹æ ªåŒäŒç€ŸïŒ ãã®ã»ãã·ã§ã³ã¯ããä¿¡é Œã§ããAIãã«ã€ããŠã æ¹éâåºæºâéçšâæè¡ ã®æµãã§äžæ¬ã®ç·ãšããŠèª¬æãããŠãããå
šäœåãã€ãã¿ãããã£ãã§ãã ãã€ã³ã ã»ãŒãã㣠㚠ã»ãã¥ãªã㣠ããŸãåãåããŠèãã ã»ãŒããã£: AIã誀çãåãã§ã害ãåºããªããããã«ããïŒå質ã»å«çã»èª¬æè²¬ä»»ïŒ ã»ãã¥ãªãã£: æ»æãæŒæŽ©ãããå®ããïŒããã³ããã€ã³ãžã§ã¯ã·ã§ã³ãæ©å¯æ
å ±ãæš©éãªã©ïŒ ãããŠäž¡æ¹ããå Žåœãã察å¿ã§ã¯ãªã ã¬ããã³ã¹ ïŒæ¹éã»åœ¹å²ã»ããã»ã¹ã»ç£æ»ïŒãšããŠéçšãã ã¬ããã³ã¹ã åºæ¬æ¹éïŒå®æœåºæºïŒå®æœèŠé ã®3å±€ã«åããå€åããšéçšãåãåãã AIãªã¹ã¯ã®è°è«ã¯ãŸã ãªã¹ã¯ã®å°å³ ãäœã£ãŠãã話ãïŒè«ç¹ã®æŒãã»éè€ãé²ãïŒ äŸ: æå³ããªãæå®³ããã€ã¢ã¹ã説æè²¬ä»»ãæ
å ±æŒæŽ©ãã¢ãã«è匱æ§ãªã©ãäžäœã«ããŽãªãšããŠæŒããã ã¢ãã«æ€èšŒïŒéçºæïŒ ãš ã¬ãŒãã¬ãŒã«ïŒå®è¡æïŒ ãåããŠèãã ç¬èªæµã§ã¯ãªããå¯èœãªéã ã°ããŒãã«æšæºã®æ çµã¿ ã«å¯ããïŒäŸ: MITRE ATLAS ïŒ ããŒã«ã¯é»ææãªã®ã§ãããŒã«ãããã§ã¯ãªã ã¢ãŒããã¯ãã£ãšããã»ã¹ã§çµ±å¶ã§ããå ãå
ã«äœã ææ³ ã»ãŒããã£ïŒã»ãã¥ãªãã£ãåããŠâéçšâã«èœãšãèãã¯ãã¿ã€ããŒã§é²ããŠããLLMåºç€èšèšã§ã掻çšããããšæããŸããã ãŸããã°ããŒãã«äŒæ¥ãšããŠé¢é£äŒç€Ÿãå€ãããšãããå
šäœãæãã AI CoEïŒCenter of ExcellenceïŒ / AI Hub ã®æ§æ³ãèªãããŠããŸãããçµç¹ã®å€§ããããããã§ã¬ããã³ã¹ãã¹ã±ãŒã«ãããé£ããã«ã€ããŠããã³ããåŸãããå
容ã§ããã freee瀟ã®AIå°å
¥ãšã»ãã¥ãªãã£å¯ŸçïŒããªãŒæ ªåŒäŒç€ŸïŒ freee瀟ã®ã»ãã·ã§ã³ã¯ããAIãå
šç€Ÿã§äœ¿ããåæã«ç«ã£ããšãã«ãã»ãã¥ãªãã£ããã¬ãŒãã§ã¯ãªããåã«é²ããä»çµã¿ããšããŠèšèšããŠããã®ãå°è±¡çã§ããã ãã€ã³ã äž»èŠãªã¹ã¯ã¯ æŒæŽ© ã» ãã«ã·ããŒã·ã§ã³ ã» ã³ã¹ã ïŒæ±ãããŒã¿ãæ©åŸ®ãªã®ã§ïŒ å±é㯠å®éšå Ž â 亀éã«ãŒã« â å®å
šè£
眮 â æ¬æ Œå±é ã®æ®µéèšèš ãå®å
šè£
眮ãã ãããã·ïŒLiteLLMãªã©ïŒã§åå ãããã°ã»æ©åŸ®æ
å ±é®æã»åºåå¶åŸ¡ãå¿
é ã©ã€ã³å åžå Žã远ãã€ããªãé å㯠å°ããå
補 ïŒã»ãã¥ãªãã£ã¬ãã¥ãŒïŒè匱æ§èšºæã®èªååãªã©ïŒ 圹å²åæ
ããåŸæ¥ã® CSIRTïŒã³ãŒãã¬ãŒãïŒïŒPSIRTïŒãããã¯ãïŒ ã®åæ
ãåæã«ãã€ã€ã ãã«ãŒïŒã¬ããïŒãã¯ã€ãïŒããŒãã« ã®ãè²ãã§è²¬åãåãçŽã èæ¯: ãããã¯ãç¹æ§ã®å€åã«ããå®ãç¯å²ãåºãããåŸæ¥ã®åæ¥ã ãã ãšå£ãã§ãããã ããã: ç¹ã« ããŒãã« ã§ã¬ãããšãã«ãŒã®é£æºãä¿é²ããã¹ããŒããèœãšããªã ææ³ freee瀟ã®çºè¡šã¯ãã»ãã¥ãªãã£æ
åœéšéãšããŠâäœãã©ãå®ããâãå
·äœçã§ãè§£å床ãäžãããŸãããèŠçŽ æè¡é¢ã«é¢ããŠããã¿ã€ããŒã§ LiteLLMãå©çšããåºç€éçºãé²ã㊠ããããšããããå®éçã«åèã«ãªãå
容ãå€ãã£ãã§ãã ãŸãšã ä»åäžçªã®ããŒã¡ãã»ãŒãžã ãšæã£ãã®ã¯ããAIã»ãã¥ãªãã£ã¯ããŒã«ãæããåã«ã ã¬ããã³ã¹ãšã¢ãŒããã¯ãã£ã§åãå ãå
ã«äœãã®ã倧äºããšããç¹ã§ããã æ±äº¬æµ·äžã®ã»ãã·ã§ã³ã§ã¯ãã»ãŒãã㣠/ ã»ãã¥ãªãã£ãåãåããããã§ãæ¹éâåºæºâéçšâæè¡ãžèœãšããŠããããšã§ãå Žåœãã察å¿ãé²ãããšããç¹ãæŽçãããŠããŸããã freeeã®ã»ãã·ã§ã³ã§ããæ®µéçã«å±éãã€ã€ããããã·ããå®å
šè£
眮ããšããŠååããŠã¹ããŒããèœãšããªãèšèšãéèŠãšèªãããŠããŸããã å®ç§äž»çŸ©ã§å
šéšæããŠããé²ãã®ã§ã¯ãªãã ãªã¹ã¯ããŒã¹ ã§æ®µéçã«é²ããªããã䜿ãã ãã§å®ãããç¶æ
ïŒSecure by DefaultïŒã«è¿ã¥ããŠããããšããåœé¢ã®ç®æšã«ãªãããã ãšæããŸããã AI CoEãã«ã©ãŒã³ãŒãã®ãããªçµç¹èšèšã¯ãããŸããç䌌ã§ãããã®ã§ã¯ãªãã§ããããæŽ»çšãæ¢ããªãããã«ãã©ã責åãšããã»ã¹ãèšèšãããããšãã芳ç¹ã¯æã£ãŠããããã§ãã ã¿ã€ããŒã§ãçŸåšãLLMåºç€ã®æ§ç¯ãšäžŠè¡ããŠãLLMæ©èœã®æ€èšŒãããããé²ããŠããŸããä»åã®åŠã³ããã³ãã«ãåãçµã¿ãå®å
šã«å éãããŠãããŸãã
1. ã¯ããã« ããã«ã¡ã¯ãæ ªåŒäŒç€Ÿã¿ã€ããŒã®ããŒã¿ãµã€ãšã³ã¹ã°ã«ãŒãïŒä»¥äžãDSGïŒã§ã°ã«ãŒããããŒãžã£ãŒãåããŠããèå°ã§ãã ååã®èšäº ã§ã¯ãã¿ã€ããŒã®DSGãèªç¥è² è·ãã³ã³ãããŒã«ããããã«ä»®æ³ããŒã ãšãã圢æ
ããšããããŒã ããããžãŒã®èãæ¹ãããŒã¹ã«çµç¹ãéå¶ããŠããããšãã話ãããŸããã ãã®äžã§ãMLOpsãšã³ãžãã¢äž»äœã®ãã©ãããã©ãŒã ããŒã ã®åœ¹å²ããå°éæ§ãæå€§åããããã®å
±éåºç€ãæäŸããããšããšå®çŸ©ããŸãããçŸåšããã®åºç€ã®äžã§ããããªãããã¯ãšãªã£ãŠããã®ããLLMãã¯ãããšããåºç€ã¢ãã«ã®æŽ»çšã§ãã æšä»ã®åºç€ã¢ãã«ã®æ¥éãªé²åã«äŒŽããã¿ã€ããŒã®åãããã¯ãããŒã ïŒããŒã ããããžãŒã«ãããStream Aligned Teamã以äžSA TeamïŒããããåºç€ã¢ãã«ã䜿ã£ãŠãŠãŒã¶ãŒäœéšãåäžããããããšããã¢ã€ãã¢ã次ã
ãšçãŸããŠããŸãããããã¯ãå
ã®ã³ã³ãã³ãçæããæ¥åã®å¹çåãŸã§ãåºç€ã¢ãã«ã掻çšããããšã§è§£æ±ºã§ãã課é¡ã®å¹
ã¯éåžžã«å€å²ã«ããããŸãã ãã ãåºç€ã¢ãã«ããããã¯ãã®æ©èœãšããŠçµã¿èŸŒãããã»ã¹ã¯ãåŸæ¥ã®ãœãããŠã§ã¢éçºãšã¯ç°ãªãèæ
®äºé
ãå€ããäžç¢ºå®æ§ã䌎ããŸãã ããããããã®èª²é¡ã«åºç€ã¢ãã«ã¯æé©ãªã®ãïŒã ã粟床ã®è©äŸ¡ã¯ã©ã客芳çã«è¡ãã°ããã®ãïŒã ãã»ãã¥ãªãã£ãã³ã¹ãã®ç®¡çã¯ã©ããã¹ããïŒã ãããã®åãã«å¯ŸããŠããã¹ãŠã®æ¡ä»¶ã«MLOpsãšã³ãžãã¢ãããŒã¿ãµã€ãšã³ãã£ã¹ããä»ãã£ããã§é¢äžããŠãããšãã©ãããŠãéçºã®ã¹ããŒãæãç¶æããã®ãé£ãããªãããšããããŸããDSGãããã«ããã¯ã«ãªãã®ã§ã¯ãªããSA Teamãèªåãã¡ã®åã§èªåŸçã«ããã€å®å
šã«åºç€ã¢ãã«ã掻çšããæ©èœããªãªãŒã¹ã§ãããããªç¶æ
ãæŽããŠããå¿
èŠããããŸãã ãã®ãããªèæ¯ãããDSGãšããŠãåºç€ã¢ãã«ãçšããæ©èœéçºã®ã¬ã€ãã©ã€ã³ããçå®ããŸããã æ¬èšäºã§ã¯ãSA Teamã®ã»ã«ããµãŒãã¹ãªéçºãæ¯æŽããçµç¹å
šäœã§äŸ¡å€æäŸãå éãããããã®ã¬ã€ãã©ã€ã³ã®ãšãã»ã³ã¹ãã玹ä»ããŸãã 2. éçºäœå¶ãã¿ãŒã³ãšDSGã®é¢ããæ¹ åºç€ã¢ãã«ã掻çšããæ©èœéçºãé²ããã«ãããããŸãç§ãã¡ãæŽçããã®ããéçºã®ç¹æ§ã«å¿ããéçºäœå¶ãã¿ãŒã³ã§ãã ãã¹ãŠã®éçºãåããããŒã«ä¹ããã®ã§ã¯ãªããæè¡çãªè€éããæ±ããããå°éæ§ã«å¿ããŠåœ¹å²åæ
ãæç¢ºã«ããããšã§ãSA Teamãè¿·ããã«éçºãéå§ã§ããããã«ããŠããŸãã éžæã®æéïŒã¹ããŒããå°éæ§ã ããã2ã€ã®ãã¿ãŒã³ã®ã©ã¡ããéžæãããã¯ãäž»ã«ãåºç€ã¢ãã«ã®åºåããã®ãŸãŸäŸ¡å€ã«ãªãããããããšããè€éãªããžãã¯ãæ¢åã·ã¹ãã ãšã®é«åºŠãªçµ±åãå¿
èŠãããšãã芳ç¹ã§å€æããŸãã ãã¿ãŒã³1. ã»ã«ããµãŒãã¹ãã¿ãŒã³ïŒã¬ã€ãã©ã€ã³ã®ã¡ã€ã³å¯Ÿè±¡ïŒ SA Teamãäž»äœãšãªããã¯ã©ãŠããããã€ããŒãæäŸããAPIãå©çšããŠéçºãé²ãããã¿ãŒã³ã§ããåºç€ã¢ãã«åšèŸºã®å®è£
ãæ¯èŒçã·ã³ãã«ã«å®çµããããã³ããã®èª¿æŽãåºæ¬çãªRAGïŒæ€çŽ¢æ¡åŒµçæïŒã®æ§æã§ååãªäŸ¡å€ãåºããã±ãŒã¹ãæ³å®ããŠããŸãã äž»ãªãŠãŒã¹ã±ãŒã¹ïŒå®åæã®çæãããã¥ã¡ã³ãã®èŠçŽãã·ã³ãã«ãªåé¡ã¿ã¹ã¯ãªã©ã è²¬ä»»ã®æåšïŒæ©èœã®äŒç»ãããã³ãããšã³ãžãã¢ãªã³ã°ãå®è£
ãè©äŸ¡ãŸã§ãSA Teamãå®çµããŠæã¡ãŸãã DSGã®åœ¹å²ïŒDSGã¯ãAPIå©çšç°å¢ã®æãåºãããã»ãã¥ãªãã£ã»ã³ã¹ãã®ã¬ãŒãã¬ãŒã«æäŸãæè¡çãªå£æã¡çžæãšããŠã®äŒŽèµ°ïŒEnablingïŒã«åŸ¹ããŸãã ãã®ãã¿ãŒã³ã®æå€§ã®ã¡ãªããã¯ãDSGãšã®èª¿æŽã³ã¹ããæå°åããSA Teamã®ã¹ããŒãæã§äŸ¡å€æ€èšŒã®ãµã€ã¯ã«ãåããããšã«ãããŸãã ãã¿ãŒã³2. Complicated Subsystemãã¿ãŒã³ ã·ã¹ãã ãããžãã¯èªäœãé«åºŠã«è€éã§ãéçšã»æ¹åã«ããŒã¿ãµã€ãšã³ãã£ã¹ããMLOpsãšã³ãžãã¢ã®å°éç¥èŠãäžå¯æ¬ ãªã±ãŒã¹ã§ããäŸãã°ãåºç€ã¢ãã«ã®åºåãç¬èªã®æ°çã¢ãã«ãæšèŠã¢ã«ãŽãªãºã ãšçµã¿åãããå Žåãããã¡ã€ã³ç¹æã®è€éãªè©äŸ¡ææšãå¿
èŠãªå Žåã該åœããŸãã äž»ãªãŠãŒã¹ã±ãŒã¹ïŒè€éãªãããã³ã°ããžãã¯ãžã®çµã¿èŸŒã¿ãé«åºŠãªæšè«ãã€ãã©ã€ã³ã®æ§ç¯ãªã©ã è²¬ä»»ã®æåšïŒDSGãã¢ã«ãŽãªãºã ãããã¯ãšã³ãã®äž»èŠããžãã¯ã«è²¬ä»»ãæã¡ãSA TeamãšååããŠãããã¯ããžçµ±åããŸãã DSGã®åœ¹å²ïŒã¢ãã«éžå®ãããã€ãã©ã€ã³æ§ç¯ã粟床è©äŸ¡ã®èšèšãŸã§ãæ·±ããªãŒãããŸãã å°éæ§ãæ±ããããéšåãDSGãåŒãåããããšã§ãSA Teamãåºç€ã¢ãã«ã®æ·±ãå°éç¥èããã¹ãŠåŠç¿ããè² è·ãäžãã€ã€ããããã¯ãã®ã³ã¢äŸ¡å€ãæå€§åããŸãã 3. äžç¢ºå®æ§ãä¹ãããªã5ã€ã®éçºãã§ãŒãº åºç€ã¢ãã«ã掻çšããæ©èœéçºã¯ãåŸæ¥ã®ãœãããŠã§ã¢éçºã«æ¯ã¹ãŠäžç¢ºå®æ§ãé«ãããã£ãŠã¿ãªããšããããªãããšãå€ãé åã§ãããã®ããããŠã©ãŒã¿ãŒãã©ãŒã«åã§äžæ°ã«äœã蟌ãã®ã§ã¯ãªããã¢ãžã£ã€ã«ãªã¢ãããŒãã§æ®µéçã«ä»®èª¬æ€èšŒãé²ããããšãæåã®éµãšãªããŸãã ã¬ã€ãã©ã€ã³ã§ã¯ãéçºããã»ã¹ã以äžã®5ã€ã®ãã§ãŒãºã«å®çŸ©ããŠããŸããããã§ã¯ãåãã§ãŒãºã®æŠèŠãšãç§ãã¡ãéèŠããŠããæ€èšŒã®ãã€ã³ãã玹ä»ããŸãã å®éã®ã¬ã€ãã©ã€ã³ã§ã¯ãåã¹ãããã§ãã©ã®ãããªæ§è³ªã®ææç©ãæ±ããããã®ãããå
·äœçã«å®çŸ©ããŠããŸããããã«ãéå»ã®æåäºäŸã§äœæããã·ã¹ãã æ§æå³ããæè³å¯Ÿå¹æïŒROIïŒã®å€æè³æãããã³ããã®è©äŸ¡ãã°ãªã©ãåç
§ã§ããããã«ããŠãããåã¹ãããã§ç®æãã¹ããŽãŒã«ãæç¢ºã«ã€ã¡ãŒãžã§ããããã«å·¥å€«ããŠããŸãã Phase 1: èšç»ã»èšèšãã§ãŒãº ãããžã§ã¯ãã®ç®çãå®çŸ©ããããžãã¹äŸ¡å€ãšæè¡çå®çŸæ§ã®äž¡é¢ããããããžã§ã¯ãã®åŠ¥åœæ§ãæ€èšŒããŸãã æ€èšŒã®ãã€ã³ãïŒè§£æ±ºããã課é¡ã«å¯ŸããŠåºç€ã¢ãã«ãæé©ãªææ®µã§ããããæåãæž¬ãããã®ææšïŒKGI/KPIïŒãæç¢ºããæ¢åã·ã¹ãã ãšã®å®å
šãªé£æºãå¯èœãã æåŸ
ãããææç©ã®äŸïŒæååºæºãå®çŸ©ããããã¥ã¡ã³ããå
šäœçãªã·ã¹ãã æ§ææ¡ãæ³å®ããããªã¹ã¯ãšå¯Ÿçæ¹éã®æŽçã Phase 2: PoCéçºãã§ãŒãº ããã®æ©èœã¯æ¬åœã«ãŠãŒã¶ãŒäŸ¡å€ããããïŒããšããä»®èª¬ãæ€èšŒãããããæå°éã®ã³ã¹ãã§è¿
éã«ã³ã¢æ©èœãæ§ç¯ãããã§ãŒãºã§ãã æ€èšŒã®ãã€ã³ãïŒåºç€ã¢ãã«ã®å¿çæ§èœãå®çšã¬ãã«ã«éããŠããããæç€ºããããŠãŒã¶ãŒäœéšïŒUXïŒã課é¡è§£æ±ºã«ç¹ãã£ãŠãããã æåŸ
ãããææç©ã®äŸïŒäž»èŠãªããã³ããã®åæ¡ãã³ã¢æ©èœãå®éã«åäœãããããã¿ã€ããã³ã¹ããæ§èœãå¯èŠåããç°¡æçãªã¢ãã¿ãªã³ã°ç°å¢ã Phase 3: PoCè©äŸ¡ã»æ¬çªç§»è¡èšç»ãã§ãŒãº PoCã§åŸãããå®éçã»å®æ§çãªããŒã¿ã«åºã¥ããæ¬çªéçºãžé²ãã¹ããã客芳çã«å€æãããã§ãŒãºã§ãã æ€èšŒã®ãã€ã³ãïŒç²ŸåºŠãã³ã¹ããé床ãç·åçã«è©äŸ¡ããéã«ãååãªæè³å¯Ÿå¹æïŒROIïŒãèŠèŸŒãããã æåŸ
ãããææç©ã®äŸïŒæ¬çªéçºãžã®ç§»è¡ã倿ããããã®æææ±ºå®ããã¥ã¡ã³ãã æææ±ºå®ã®ããã»ã¹ïŒã¿ã€ããŒã§ã¯ãæ¬çªç§»è¡ã«ããã£ãŠæè¡ããã³ãããã¯ã責任è
ã«ããæ¿èªãå¿
é ãšããŠãããã¹ããŒããšã¬ããã³ã¹ã®äž¡ç«ãå³ã£ãŠããŸãã Phase 4: æ¬çªéçºãã§ãŒãº æ€èšŒããã䟡å€ããå
šãŠãŒã¶ãŒã«å®å®ããŠæäŸã§ãããã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ãæ©èœãæ§ç¯ãããã§ãŒãºã§ãã æ€èšŒã®ãã€ã³ãïŒæå€§ãã©ãã£ãã¯ã«èãããè² è·å¯ŸçããªãããŠããããããã³ããã®å€æŽãå質å£åãæããªãããã®è©äŸ¡åºç€ãæŽã£ãŠãããã æåŸ
ãããææç©ã®äŸïŒç°å¢åé¢ïŒdev/stg/prodïŒã培åºãããæ¬çªæ©èœãå質å£åãé²ãããã®èªåè©äŸ¡ïŒãªã°ã¬ãã·ã§ã³ãã¹ãïŒç°å¢ãéçšã®ããã®åçš®ã¬ããŒãã Phase 5: æ¬çªéçšã»ç¶ç¶çæ¹åãã§ãŒãº å®å®çšŒåãç¶æãã€ã€ãåéããããŒã¿ã«åºã¥ããŠç¶ç¶çã«æ©èœãæ¹åããããžãã¹äŸ¡å€ãæå€§åãããã§ãŒãºã§ãã æ€èšŒã®ãã€ã³ãïŒå®éã®å©çšããŒã¿ã«åºã¥ããKPIãæ³å®éãæ¹åãããŠãããã æåŸ
ãããææç©ã®äŸïŒæ®µéçãªãªãªãŒã¹èšç»ãã€ã³ã·ãã³ãçºçæã®å¯Ÿå¿ãããŒããŠãŒã¶ãŒãã£ãŒãããã¯ã®åéã»åæããã»ã¹ã ç¶ç¶çæ¹åïŒæ°ããã¢ãã«ã®ç»å Žãã¢ãã¿ãªã³ã°ç¶æ³ã®å€åã«åãããè¿
éã«ããã³ãããã¢ãã«ãã¢ããããŒãã§ããäœå¶ãç¶æããŸãã 4. ãããã¯ãåè³ªãæ¯ããæè¡ãã¬ããžã®äœç³»å éçºããã»ã¹ãæŽã£ãŠããåã
ã®æè¡çãªå€æåºæºãå±äººåããŠããŠã¯ããããã¯ãå
šäœã®å質ãäžå®ã«ä¿ã€ããšã¯ã§ããŸãããã¬ã€ãã©ã€ã³ã§ã¯ãSA TeamãèªåŸçã«æé©ãªæææ±ºå®ãè¡ãããããåºç€ã¢ãã«æŽ»çšã®åæãæè¡ãã¬ããžãšããŠéçŽããŠããŸãã ããã§ã¯ãç§ãã¡ãã¬ã€ãã©ã€ã³ã§å®ããŠããæè¡ãã¬ããžã®æŠèŠãããã€ãã玹ä»ããŸãã æ¬åœã«ãåºç€ã¢ãã«ããæé©ãïŒ åºç€ã¢ãã«ã¯æ¥µããŠæ±çšæ§ãé«ãããŒã«ã§ããããã¹ãŠã®èª²é¡ã«å¯Ÿããæ£è§£ã§ã¯ãããŸãããç§ãã¡ã¯ãéçºãå§ããåã«ãæ¬åœã«ãã®èª²é¡ãåºç€ã¢ãã«ã§è§£ãã¹ããïŒããç«ã¡æ¢ãŸã£ãŠèããããšãæšå¥šããŠããŸãã åºç€ã¢ãã«ãåŸæãªããš: åµé æ§ãæ±ããããæç« çæãèšå€§ãªæ
å ±ã®èŠçŽããããŠãæèããã¥ã¢ã³ã¹ããæ±²ã¿åã£ãé«åºŠãªåé¡ã»æœåºãç»åãé³å£°ãçµ±åããŠçè§£ãããã«ãã¢ãŒãã«ãªåŠçã åºç€ã¢ãã«ãèŠæãªããšã»é©ããŠããªãããš: 100%ã®æ£ç¢ºæ§ãæ±ãããããã·ã³ãã«ãªæ¡ä»¶åå²ã§æžãã«ãŒã«ããŒã¹ã®åŠçããã§ã«ç¹å®ã®ã¿ã¹ã¯ã«ç¹åããå°çšAI APIãååšããã±ãŒã¹ã ãææ°æè¡ã ãã䜿ããã®ã§ã¯ãªããã³ã¹ãã»ç²ŸåºŠã»å®å®æ§ã®ãã©ã³ã¹ãéã¿ãŠãåŸæ¥éãã®ããã°ã©ã ãå°çšAPIã®æ¹ãåªããŠããªãããå·éã«èŠæ¥µããçŒãé€ãããã®åºæºãææåããŠããŸãã çŽ æ©ãäŸ¡å€æ€èšŒãšããŒã¿è³ç£ã®ç©ã¿äžã äžæ¹ã§ãåºç€ã¢ãã«ã®å€§ããªåŒ·ã¿ã¯ãæ©æ¢°åŠç¿ã®äºåæºåãã·ã§ãŒãã«ããã§ããããšãã«ãããŸãã åŸæ¥ã®æ©æ¢°åŠç¿ãããžã§ã¯ãã§ã¯ãç¹å®ã®ã¿ã¹ã¯ãè§£ãããã«å€§éã®åŠç¿ããŒã¿ãæºåããã¢ãã«ããã¬ãŒãã³ã°ãããšããæ°é±éãæ°ã¶æåäœã®ããã»ã¹ãå¿
èŠã§ãããåºç€ã¢ãã«ã䜿ãã°ããã®éããå·¥çšãé£ã³è¶ããããã³ããã®èª¿æŽã ãã§æ°æ¥ãæ°é±éã§ãŠãŒã¶ãŒãžã®æäŸäŸ¡å€ãæ€èšŒã§ããå¯èœæ§ããããŸãã ããšãåæã®APIã³ã¹ããé«ãã€ãããšããŠãããŸãã¯æéã§ããããããã®æ©èœããŠãŒã¶ãŒã«æ±ããããŠãããããšããæ¬è³ªçãªä»®èª¬ã«çããåºãããããŠæ€èšŒã®éçšã§èç©ãããããŠãŒã¶ãŒã®å
¥åããšããã£ãŒãããã¯ãã¯ãå°æ¥çã«å°çšã¢ãã«ãèªç€Ÿç¬èªã®ã¢ãã«ãžç§»è¡ããéã®è²ŽéãªåŠç¿ããŒã¿ãšãªããŸãã ããŸãã¯åºç€ã¢ãã«ã§çŽ æ©ãäŸ¡å€æ€èšŒãè¡ããæåããã°ãã®ããŒã¿ãåºã«ãããæé©ãªãœãªã¥ãŒã·ã§ã³ãžé²åãããŠããããšãããæé軞ã峿¹ã«ã€ããæŠç¥ãåãããããšãææåããŠããŸãã åŠçã®å®å®æ§ãšä¿¡é Œæ§ åºç€ã¢ãã«ã®åºåãããã°ã©ã ã§å®å®ããŠæ±ãããã«ã¯ãèªç±ãªæç« ã§ã¯ãªããåŸç¶ã®åŠçã§æ±ãããã圢åŒã§ããŒã¿ãåãåãããšãäžå¯æ¬ ã§ããããã¯äžè¬çã«æ§é ååºåãšåŒã°ããŠããŸãããç§ãã¡ã¯æ§é ååºåãå®è£
ã«ãããæšæºãšããŠå®çŸ©ããŠããŸãã ããã³ããã«ããæç€ºã«å ããã¢ãã«ã®ãã€ãã£ãæ©èœãããªããŒã·ã§ã³çšã®ã©ã€ãã©ãªãé©åã«çµã¿åãããããšã§ãã·ã¹ãã ã®å®å®æ§ãé«ããŸãããŸããAPIã®å©çšå¶éãäžæçãªè² è·å¢å€§ã«ãããšã©ãŒã«åããèªåçãªå詊è¡ã代æ¿ã¢ãã«ãžã®åãæ¿ããšãã£ãããããã¯ã·ã§ã³ç°å¢ã«èãããä¿¡é Œæ§èšèšã®ãã¿ãŒã³ãå
±éåããŠããŸãã 5. ãããã« ä»åã玹ä»ããã¬ã€ãã©ã€ã³ã¯ãäžåºŠçå®ããŠçµããã§ã¯ãããŸãããçŸå Žããã®ãã£ãŒãããã¯ãæ¥ã
é²åããæè¡ååãåãå
¥ããªãããåžžã«ã¢ããããŒããç¶ããããã¥ã¡ã³ããšããŠéçšããŠããŸãã ç§ãã¡ããã®ã¬ã€ãã©ã€ã³ãéããŠå®çŸãããã£ãã®ã¯ãäžç¢ºå®æ§ã®é«ããåºç€ã¢ãã«ã掻çšããéçºã«ãããŠãåãããã¯ãããŒã ãäœèšãªè¿·ããªãèªåŸçã«åãããããå¿
èŠãªæéã瀺ããç°å¢ãæŽããããšã§ããã DSGããã¹ãŠã®æ¡ä»¶ãæ±ã蟌ãã®ã§ã¯ãªããå°éç¥èŠãæšæºåããŠçµç¹å
šäœã«éæŸããŠããããã®ããã»ã¹ããããã¿ã€ããŒãæè¡ã®åã§ããã·ã§ã³ãéæããããã®å€§ããªåååã«ãªããšä¿¡ããŠããŸãã Weâre Hiring! ã¿ã€ããŒã§ã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ããMLOpsãšã³ãžãã¢ã¯ãã¡ãããä»åã玹ä»ãããããªã¬ã€ãã©ã€ã³ãåºç€ã䜿ãåããŠãããã¯ãã«äŸ¡å€ãå±ãããšã³ãžãã¢ããããã¯ããããŒãžã£ãŒãªã©ãå
šæ¹äœã§äžç·ã«åãã¡ã³ããŒãåéããŠããŸãïŒ ææ°ã®æè¡ãã©ã瀟äŒå®è£
ããããšããä»çµã¿ã¥ããã«èå³ã®ããæ¹ã¯ããã²ã«ãžã¥ã¢ã«é¢è«ã§ã話ãããŸããããçããã®ææŠããåŸ
ã¡ããŠããŸãïŒ ã¿ã€ããŒæ¡çšæ
å ± - Product Team
1. ã¯ããã« ããã«ã¡ã¯ãæ ªåŒäŒç€Ÿã¿ã€ããŒã®ããŒã¿ãµã€ãšã³ã¹ã°ã«ãŒãïŒä»¥äžãDSGïŒã§ã°ã«ãŒããããŒãžã£ãŒãåããŠããèå°ã§ãã ã¿ã€ããŒã§ã¯ããã¯ãããããéããŠäººçã®å¯èœæ§ãåºããã€ã³ãã©ãã€ããããšããããã·ã§ã³ãæ²ããæ¥ã
èšå€§ãªãããã³ã°ããŒã¿ãè¡åããŒã¿ã掻çšããŠããããã¯ãã®äŸ¡å€åäžãæææ±ºå®ã®é«åºŠåã«åãçµãã§ããŸãã ãããããããšã«ãæè¿ã¯æ¡çšæŽ»åãéããŠå€ãã®æ¹ãšã«ãžã¥ã¢ã«é¢è«ã§ã話ãããæ©äŒãå¢ããŠããŸãããã®äžã§ãéåžžã«ããããã ãã®ããDSGã¯ã©ã®ãããªçµç¹äœå¶ã§ãã©ã®ããã«ã³ãã¥ãã±ãŒã·ã§ã³ãåããªããçµç¹éå¶ããŠãããã§ããïŒããšããã質åã§ãã ãããŸã§ã¯é¢è«ã®å Žã§åå¥ã«ãäŒãããŠããŸããããç§ãã¡ã®çµç¹ãæ¡å€§ãããã§ãŒãºã«åãããŠæè»ã«åœ¢ãå€ããŠããŸãããããã§ä»åãæ¹ããŠã¿ã€ããŒDSGã®çŸåšã®ãçµç¹ã®ã«ã¿ãããèšèªåããåè£è
ã®çããã«ç§ãã¡ã®ããŒã ã®çŸåšå°ã詳ãããäŒãããããšæãããã®èšäºãæžãããšã«ããŸããã ç§ãã¡ã®çµç¹éå¶ã®ããŒã¯ãŒãã¯ããèªç¥è² è·ã®äœæžããšãèªåŸæ§ã®æå€§åãã§ãã ãã€ãŠã¯å
šå¡ã§äžã€ã®ã¹ã¯ã©ã ãçµãã§ããŸããããçŸåšã¯ãä»®æ³ããŒã ããšãã圢æ
ããšããåããŒã ãèªåŸçã«éçºãµã€ã¯ã«ãåããŠããŸããæ¬èšäºã§ã¯ãããŒã ããããžãŒã®èãæ¹ãåãå
¥ããçµç¹æ§é ãããå
·äœçãªéçºãããŒããããŠã°ã«ãŒãå
ã®æåãŸã§ã玹ä»ããŸãã 2. çµç¹ã®å€é·ïŒãªããä»®æ³ããŒã ããžãšç§»è¡ããã®ã å
šå¡ã§ãã¹ãŠãææ¡ããŠãããåäžã¹ã¯ã©ã ãæä»£ 以åããŸã ã°ã«ãŒãã®äººæ°ãå°ãªãã£ãé ã¯ãDSGå
šäœã§äžã€ã®ã¹ã¯ã©ã ããŒã ãšããŠæŽ»åããŠããŸãããåœæã¯å
šå¡ããã¹ãŠã®åãçµã¿ã®ç¶æ³ãææ¡ããæ¯æ¥ã®ãã€ãªãŒã¹ã¯ã©ã ã§æ
å ±ãå
±æããå
šå¡ã§ãªãã¡ã€ã³ã¡ã³ãïŒããã¯ãã°ã®ç²Ÿæ»ïŒãè¡ã£ãŠããŸããããã®ã¹ã¿ã€ã«ã¯ãæ
å ±ã®éææ§ãé«ãã誰ãäœããã£ãŠããããäžç®ã§ããããšãã倧ããªã¡ãªããããããŸããã æ¥æé·ã«äŒŽããèªç¥è² è·ãã®éç ããããã¿ã€ããŒãšãããããã¯ãã®æé·ã«åãããDSGã解決ãã¹ã課é¡ã¯æ¥éã«å¢ãããã€å€æ§åããŠãããŸããã æ
åœãããã¡ã€ã³ã®æ¡å€§ MLOpsåºç€ã®é«åºŠåãšãããã«äŒŽãå°éç¥èã®æ·±å ã¹ããŒã¯ãã«ããŒã®å¢å ããããç¶æ³äžã§ãäžã€ã®å€§ããªã¹ã¯ã©ã ãç¶æããããšãããšãã¡ã³ããŒäžäººã²ãšãã远ããªããã°ãªããªãæ
å ±éãççºçã«å¢ããŠãããŸãããäŸãã°ãããããŒã¿ãµã€ãšã³ãã£ã¹ãã«ãšã£ãŠã¯ãèªåãæ
åœããŠããªãé åã®çްãã仿§æ€èšãå»¶ã
ãšèãç¶ããªããã°ãªãããéã«MLOpsãšã³ãžãã¢ã«ãšã£ãŠã¯ããã¹ãŠã®ã¢ãã«ã®æ°ççãªèæ¯ãŸã§æ·±ãçè§£ãç¶ããªããã°ãªããªãâŠãšãã£ãå
·åã§ãã ããããæ¬èšäºã®ããŒã¯ãŒãã§ãããèªç¥è² è·ããéçã«éããç¬éã§ããã ãä»®æ³ããŒã ããšããŒã ããããžãŒã®å°å
¥ ãã®èª²é¡ã解決ããããã«ç§ãã¡ãåãå
¥ããã®ããå®çµç¹ã®äžãããã€ãã®ãä»®æ³ããŒã ãã«åå²ããéçšã§ãã ãå®çµç¹ããšããŠã¯äžã€ã®DSGã§ãããæ¥ã
ã®æŽ»åïŒã¹ã¯ã©ã ïŒã¯åä»®æ³ããŒã ïŒSquadïŒåäœã§è¡ããŸãããã®äœå¶ãèšèšããéãæžç±ã ããŒã ããããžãŒ 䟡å€ãããœãããŠã§ã¢ããã°ããå±ããé©å¿åçµç¹èšèš ãã®èãæ¹ãåèã«ããŸããã ããŒã ããããžãŒãšã¯ãããŒã ã®ãèªç¥è² è·ããèæ
®ããŠçµç¹ãšã·ã¹ãã æ§é ãæŽåãããé«éãªäŸ¡å€æäŸãç®æãçµç¹è«ã§ããç§ãã¡ã¯ããã«åºã¥ããããŒã ã®æ§è³ªã以äžã®ããã«å®çŸ©ããŸããã MLOpsãšã³ãžãã¢äž»äœã®ããŒã ïŒãã©ãããã©ãŒã ããŒã DSãäžå¿ãšãã倿§ãªå©çšè
ããML/LLMãçšããäŸ¡å€æäŸã«éäžã§ããããã«ãæ©æ¢°åŠç¿åºç€ãLLMåºç€ãCI/CDãMLããã«ãŠã§ã¢ãªã©ã®ãå°éæ§ãæå€§åããããã®å
±éåºç€ããæäŸãã圹å²ã ããŒã¿ãµã€ãšã³ãã£ã¹ãäž»äœã®ããŒã ïŒã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ã»ããŒã æšèŠã»ãããã³ã°ãã¢ãã¬ãŒã·ã§ã³ãšãã£ãç¹å®ã®ãã¡ã€ã³ã«è²¬ä»»ãæã¡ãé«åºŠãªãµãã·ã¹ãã ã®éçºãããžãã¹äžã®è€éãªèª²é¡è§£æ±ºãæ
ã圹å²ã ãã®ããã«åœ¹å²ãšããŒã ãæç¢ºã«åãåããããšã§ãã¡ã³ããŒã¯ãä»èªåãæ³šåãã¹ãé åãã«èªç¥çãªãœãŒã¹ãéäžããããšãã§ããããã«ãªããŸããã DSGå
ã®ä»®æ³ããŒã é¢ä¿å³ %%{init: {'theme': 'base', 'themeVariables': { 'fontFamily': 'arial', 'primaryColor': '#ffffff', 'edgeLabelBackground':'#ffffff', 'tertiaryColor': '#f8fafc' }}}%% graph BT %% --- ã¹ã¿ã€ã«å®çŸ© --- classDef platform fill:#2563eb,stroke:#1e40af,stroke-width:2px,color:#ffffff,rx:10,ry:10,font-size:15px,font-weight:bold; classDef css fill:#f97316,stroke:#c2410c,stroke-width:2px,color:#ffffff,rx:10,ry:10,font-size:15px,font-weight:bold; classDef dsgContainer fill:#f1f5f9,stroke:#3b82f6,stroke-width:3px,stroke-dasharray: 6 4,color:#1e40af,font-weight:bold,font-size:16px; %% --- DSGå
éšã®çµç¹æ§é --- subgraph DSG ["DSG (Virtual Organization Structure)"] direction BT %% äžå±€ïŒäŸ¡å€åµåºã®äž»äœ CSS["ã³ã³ããªã±ã€ãã£ãã<br/>ãµãã·ã¹ãã ããŒã <br/>(Squads)"]:::css %% äžå±€ïŒåŒ·åºãªåºç€ MLP["MLåºç€ããŒã <br/>(Platform Team)"]:::platform %% äŸçµŠãããŒïŒåŒ·åãªæ¯æŽïŒ MLP ====>|å°éæ§ãæå€§åããããã®å
±éåºç€ãæäŸ| CSS end %% ã¹ã¿ã€ã«ã®é©çš class DSG dsgContainer linkStyle 0 stroke:#3b82f6,stroke-width:4px; é¢é£èšäºãšããŠãããŒã¿ãµã€ãšã³ãã£ã¹ãã®ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ããã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ãžã®é
çœ®å€æŽã®å€é·ã¯ã以äžã®èšäºããåç
§ããã ããã°ãšæããŸãã tech.timee.co.jp 3. çŸå Žã®æææ±ºå®ãå éããããSquad Leadã ä»®æ³ããŒã ïŒSquadïŒã¯ãç¹å®ã®ãããžã§ã¯ããéè¡ããããã ãã®ã¿ã¹ã¯ãã©ãŒã¹ã§ã¯ãªããæ
åœãã¡ã€ã³ã®ææã«å¯ŸããŠäžé·æçã«è²¬ä»»ãæã€åæ°žä¹
çãªçµç¹ãšããŠæ©èœããŠããŸãã ãã®Squadã«ãããŠãçŸå Žã®èªåŸæ§ãæ¯ããŠããã®ãDSGç¬èªã®åœ¹å²ã§ãããSquad LeadïŒSLïŒãã§ããSLã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ããMLOpsãšã³ãžãã¢ãæ¬æ¥ã®æ¥åãšå
Œåããåœ¢ã§æ
ããå
éšçãªããŒã«ãã§ãã GMãšSLã®åœ¹å²åæ
ç§ïŒã°ã«ãŒããããŒãžã£ãŒïŒGMïŒãšSLã¯ããçµç¹ã®åå°äœãããšããã¡ã€ã³ã®æŠç¥å®è¡ããšãã軞ã§åœ¹å²ãåæ
ããŠããŸãã GMïŒæ¡çšã»é
眮ã»è©äŸ¡ã»ãã£ãªã¢æé·ãªã©ããããã»ã¢ãã»ã«ãããšãã£ãçµç¹åºç€ã®æé©åã SLïŒæ
åœãã¡ã€ã³ã«ããããã³ãïŒãããã¯ãã»èª²é¡ïŒãã®è§£æ±ºãããŒããããçå®ãçæãäžæã®ææåµåºãã¹ããŒã¯ãã«ããŒãšã®åæåœ¢æã«è²¬ä»»ãæã€ã çŸå Žã®ã³ã³ããã¹ããäžçªçè§£ããŠããã¡ã³ããŒãSLãšããŠæææ±ºå®ãäž»å°ããç§ã¯ãããçµç¹çãªåŽé¢ããå
šåã§ãµããŒãããããã®è£å®é¢ä¿ãç¯ãããšã§ããããŒãžã£ãŒãããã«ããã¯ã«ãªããªãã¹ããŒãã£ãªéçºäœå¶ãå®çŸããŠããŸãããŸãããããŠãä»®æ³ããšããæè»ãªåœ¢ã«ããŠããããšã§ãã¡ã³ããŒããªãŒããŒã·ãããçµéšããæ©äŒãåºããäºæ¥ç¶æ³ã«åãããæ©åçãªããŒã ç·šæãå¯èœã«ããŠããŸãã 4. å°éæ§ãæå€§åãããã©ãããã©ãŒã ãšéçºãã㌠ã§ã¯ãå
·äœçã«ã©ã®ããã«ãããã¯ãéçºãé²ããããŠããã®ã§ãããããããããã¯ãMLOpsãšã³ãžãã¢ãšããŒã¿ãµã€ãšã³ãã£ã¹ãã®é£æºã«çŠç¹ãåœãŠãŠã玹ä»ããŸãã MLOpsãšã³ãžãã¢ãæŽãããå°éæ§ã«éäžããããã®å
±éåºç€ MLOpsãšã³ãžãã¢ã¯ããããããã©ãããã©ãŒã ããŒã ãšããŠãå©çšè
ãæ¬æ¥ã®åœ¹å²ã«éäžã§ãããããå
±éã®éçºç°å¢ããããã€ãããŒãæŽããŠããŸãã å©çšè
ã®äžå¿ã¯DSã§ãããé åã«ãã£ãŠã¯ããŒã¿ã¢ããªã¹ãããããã¯ããšã³ãžãã¢ãæ³å®ãŠãŒã¶ãŒã«å«ãŸããŸããGoogle Cloudãã¡ã€ã³åºç€ãšããã¢ããªãæ§æã§ã®ãã£ã¬ã¯ããªèšèšãTerraformã«ããæ§æç®¡çãCI/CDã¹ã¯ãªããã®æŽåãããã«LLMåºç€ã®æ§ç¯ãMLããã«ãŠã§ã¢ã®å°å
¥ã»éçšãŸã§ãå¹
åºãæ
åœããŸããããã«ãããã€ã³ãã©ããããã€ã®è€éããæèãããšããå®å
šãã€é«éã«äŸ¡å€ãéãåºããä»çµã¿ãæŽã£ãŠããŸãã 倧ãŸããªæ©æ¢°åŠç¿åºç€ã®æ§æã¯äžèšããŒãžã®ã Architecture ãã»ã¯ã·ã§ã³ãã芧ããã ããã°ãšæããŸãã product-recruit.timee.co.jp ããŒã¿ãµã€ãšã³ãã£ã¹ãã«ããäžæ°é貫ã®äŸ¡å€åµåº ããŒã¿ãµã€ãšã³ãã£ã¹ãã¯ãã®åºç€ã䜿ãåããããžãã¹èª²é¡ã®çºèŠãã解決ãŸã§ãäžæ°éè²«ã§æ
ããŸãã äžæµå·¥çšïŒèª²é¡èšå®ãåé¡çºèŠãã¹ããŒã¯ãã«ããŒãšã®æåŸ
å€èª¿æŽã éçºã»å®è£
ïŒåæãPoCïŒLLM掻çšå«ãïŒãæ¬çªç°å¢ãžã®ãšã³ãžãã¢ãªã³ã°ã æ€èšŒã»æ¹åïŒãããã€åŸã®ABãã¹ãã广æ€èšŒãããã«åºã¥ãæ¹åãµã€ã¯ã«ã®å®è¡ã æŽåããããã©ãããã©ãŒã äžã§ãDev / Stg / Prod ã®åç°å¢ã䜿ãåããªããé«éã«ãµã€ã¯ã«ãåããŠããŸãããã®ããã«ãåºç€ãæ¯ããã¹ãã·ã£ãªã¹ããšãäºæ¥äŸ¡å€ãåµåºããã¹ãã·ã£ãªã¹ããèäžãé ãåããé¢ä¿æ§ããã¿ã€ããŒDSGã®åŒ·ã¿ã§ãã 5. ããŒã éå¶ãšã·ããžãŒãçãä»çµã¿ ä»®æ³ããŒã ãšããŠåãããŠæŽ»åãã€ã€ããã°ã«ãŒãå
šäœãšããŠã®ç¥èŠã®å
±æããè·çš®ãè¶ãã飿ºãæ¯ããããã®ãå Žãããä»çµã¿ãã倧åã«ããŠããŸãã MLOpsãšDSãç¹ããã£ãŒãããã¯ã«ãŒã MLOpsãšã³ãžãã¢äž»äœã®ãã©ãããã©ãŒã ããŒã ã¯ã2é±éã®ã¹ããªã³ãã§åããŠããŸããã¹ããªã³ãã®çµããã«ã¯ãåºç€ã®å©çšè
ïŒäž»ã«DSïŒã«åãããMLåºç€ã¢ããããŒãå
±æäŒãã宿œããŠããŸãã ããã§ã¯æ°æ©èœã®åšç¥ã ãã§ãªããå©çšè
ããã®æ¹åãªã¯ãšã¹ããå°ãããšãçŽæ¥åãä»ããã¹ããªã³ãã¬ãã¥ãŒã®ãããªåœ¹å²ãæãããŠããŸãããäœã£ãŠçµãããã§ã¯ãªããåžžã«å©çšè
ã®å£°ãèããªããåºç€ããã©ãã·ã¥ã¢ããããŠããããã®å¯Ÿè©±ã®ä»çµã¿ããããDSGå
ã§ã®é«ãéçºäœéšãæ¯ããŠããŸãã AIãé§äœ¿ããŠåºæ¿ãäžãåããåŠã³ãã®ç¿æ
£ ç§ãã¡ã¯æè¡çãªç éœãæ¬ ãããŸãããããã®ãç¶ç¶ãããããã«ããã ãã£ãŠããŸããDSGå
ã§ã¯å®æçã«å匷äŒãéå¬ããŠããŸãããçŸåšã¯éé±1æéã§ãæ¯å3,4åã10ã15åãã€çºè¡šããããšããã¹ã¿ã€ã«ããšã£ãŠããŸãã æèããŠãããã€ã³ããšããŠã¯ãçºè¡šã®ããŒãã«ã極éãŸã§äžããŠããããšã§ããçºè¡šæéãçãããããšã§ããããã¯ã®è«ç¹ã端çã«ãŸãšããããããçºè¡šã®ããŒãã«ãäžããŠããŸããçºè¡šè³æã®äœæã«ã¯Notion AIãNotebookLMãšãã£ãããŒã«ãç©æ¥µçã«æŽ»çšããæºåã®çååãæšå¥šããŠããŸããããã«ãããè³æäœãã«è¿œãããŠã¢ãŠãããããåå«ã«ãªããã®ãé²ãããã€ã¹ããŒãã§ç¥èŠã埪ç°ãããããšã«ææŠããŠããŸãã ãŸããã°ã«ãŒãå
ã«éãããä»éšçœ²ã®ãšã³ãžãã¢ã亀ããåå茪èªäŒãè¡ã£ãŠããããŒã ããããçµç¹ãè¶ããŠäºãã«é«ãåãæåãæ ¹ä»ããŠããŸãã å¶åºŠã掻çšãããããŒã ãã«ãã£ã³ã°ã ä»äºä»¥å€ã§ã®ç¹ããããå¿ççå®å
šæ§ãé«ããéèŠãªèŠçŽ ã§ããã¿ã€ããŒã«ã¯ããŒã ãã«ãã£ã³ã°è²»çšã®è£å©ãåºãå
šç€ŸçãªçŠå©åçå¶åºŠãããããããæŽ»çšããŠæ¯æãéšçœ²å
å€ã®ã¡ã³ããŒãšäº€æµïŒé£²ã¿äŒã芪çŠäŒïŒãè¡ã£ãŠããŸãã éšçœ²å
ã®çµæãæ·±ããæãããã°ãä»éšçœ²ã®ã¡ã³ããŒãšäº€æµããæãããããããã宿çãªäº€æµã®å Žããå°ã£ãæã«ãã€ã§ãçžè«ã§ãããé¢ä¿æ§ã®åå°ã«ãªã£ãŠããŸãã 6. ãããã« ä»åã¯ãã¿ã€ããŒã®ããŒã¿ãµã€ãšã³ã¹ã°ã«ãŒãïŒDSGïŒãã©ã®ãããªçµç¹æ§é ã§ãã©ã®ãããªææ³ãæã£ãŠæ¥ã
éçºã»éçšãè¡ã£ãŠããã®ããã玹ä»ããŸããã ç§ãã¡ããä»®æ³ããŒã ãããSquad LeadïŒSLïŒããšããéçšã«è¡ãçããã®ã¯ãåã«çµç¹ã管çããããã§ã¯ãªãããã¡ã³ããŒäžäººã²ãšããèªç¥è² è·ã«æ¯ãåããããæ¬æ¥ã®å°éæ§ãæå€§éã«çºæ®ããŠããããã¯ãã«äŸ¡å€ãå±ããããç°å¢ããäœãããã£ãããã§ãã çµç¹ã®åœ¢ã¯ããããã¯ãã®ãã§ãŒãºã課é¡ã«åãããŠæè»ã«å€ãã£ãŠããã¹ããã®ã§ããä»åã玹ä»ããäœå¶ãçŸåšã®ãæé©è§£ãã§ã¯ãããŸãããä»åŸããã«çµç¹ãæ¡å€§ããŠããäžã§ãç§ãã¡ã¯ãŸãæ°ããå£ã«ã¶ã€ããã圢ãå€ãç¶ããŠããã¯ãã§ããããããå€åãæ¥œãã¿ãªãããä»çµã¿ãã®ãã®ãã¢ããããŒãããŠãããããšããä»ã®ã¿ã€ããŒDSGã®é¢çœãã ãšæããŠããŸãã ãã®èšäºãéããŠãç§ãã¡ã®çµç¹éå¶ãããŒã ã®é°å²æ°ãå°ãã§ãäŒãã£ãŠããã°å¹žãã§ãã Weâre Hiring! ã¿ã€ããŒã§ã¯ããŒã¿ãµã€ãšã³ãã£ã¹ãã»MLOps Engineerãã¯ãããäžç·ã«åãã¡ã³ããŒãåéããŠããŸãïŒ ã«ãžã¥ã¢ã«é¢è« ãè¡ãªã£ãŠãããŸãã®ã§ãèå³ã®ããæ¹ã¯ãã²ãæ°è»œã«ãç³ã蟌ã¿ãã ããïŒ https://product-recruit.timee.co.jp/
ã¯ããäºäºã§ãã yykamei ãšããååã§ã€ã³ã¿ãŒãããã§ã¯ããããŠããã£ãŠããŸããæå±ã¯ã¿ã€ããŒã§ãã Regional Scrum Gathering Tokyo 2026ïŒRSGT2026ïŒã«ããã©ã³ãã£ã¢ã¹ã¿ãããšããŠåå ããŸããã ä»å¹Žã¯äŒå Žãå€ãã£ãããšããããéå¶åŽãšããŠãæ°ããªææŠãå€ã幎ã§ãããä»åã¯ãéå¶ãšããŠã®åŠã³ããšãã»ãã·ã§ã³ã察話ããåŸããããå®è·µç¥ãšããŠã®åŠã³ããšããäºã€ã®èŠç¹ãããä»å¹Žã®RSGTãæ¯ãè¿ããŸãã ãã©ã³ãã£ã¢ã¹ã¿ãããšããŠèŠããçŸå Žããšãé©å¿ã ä»å¹Žã®å€§ããªãããã¯ã¯ããã¯ãäŒå Žãå€ãã£ãããšã§ãããããã«ãã£ãŠãé·å¹Žèç©ãããŠããããã®äŒå Žãªãããåãã°ããããšããç¹å®ã®å Žæã«äŸåããããŠããŠã䜿ããªããªããŸããã ããããå
·äœçãªæé æžããªã»ãããããç¶æ
ã§ããã¹ã¿ãããããããããã®ã€ãã³ãã«ãããŠèªåã¯äœãããã¹ããããšããæ¬è³ªãçè§£ããŠãããããé¿åœã®åŒåžã§ãªããšããªã£ãããã«æããŸããèªå·±çµç¹çãªã³ãã¥ããã£ãŒã§ãããçµãã£ãåŸã«ã¹ã¿ããã§ãã®RSGT2026ã«ã€ããŠå
šå¡ãäžèšãè¿°ã¹ãã®ã§ãããçãããããããã®èŠç¹ãããããããªåŠã³ããã£ãŒãããã¯ãæã¡èŸŒãã§ãã ãã£ããããããããä»åã¯ã©ã®ãããªå¿æã¡ã§æãã§ãããããšãã話ãããŠããããããŠãã«ã³ãã¡ã¬ã³ã¹ã®ã¹ã¿ãããšããŠã©ã®ãããªäŸ¡å€ãåºãã¹ãããšããããšã«ã€ããŠãããšãããããŸããã ä»åã®ç§ã®ã¹ã¿ã³ã¹ã¯ãç¡çã«ããã°ããªãããšããããšã§ããããçµãã£ãŠã¿ããšããããã®æ©æ°ã皌ãã§ããŸã£ãã®ã§ãç®æšéæã¯ã§ããªãã£ãããã§ããããããããã ã人ãšã®äŒè©±ã楜ãããã®ããªãšæããŸãã ã空調ããšãå°ç·ã äŒå Žã®ç©ºèª¿ç®¡çãé£ããã£ãã§ããçµæãšããŠãå¯ãããšããæèŠãããžã§ãªãã£ãå ããŠããŸã£ãããã«æããŸããRSGTã¯äŸå¹Ž1æã®æãå¯ãææã«éå¬ããããããåºæ¬çã«ã¯ãé«ãã®æž©åºŠèšå®ããããã©ã«ãã«ããŠããã®ãæ£è§£ã ãšããæç¢ºãªåŠã³ãåŸãŸãããããã¯æ¥å¹Žãžã®éèŠãªåŒç¶ãäºé
ãããããªãã§ããããšã¯ãã£ãŠãã空調管çã¯ä»ã®ã¹ã¿ããããã£ãŠãããŠããã®ã§ããŸãã¯ç©ºèª¿æ©åšã®æäœæ¹æ³ãèŠãããšãããããæ¥å¹Žã®ã¹ã¿ãŒãã«ãªãããã§ãã ãŸããäŒå Žã¬ã€ã¢ãŠãã«ã€ããŠãæ°ã¥ãããããŸãããHall AãšHall Bã¯åºæ¬çã«ã¯åãäœãã®ã¯ããªã®ã§ãããæºã®é
眮ã®åœ±é¿ã§ãHall Aã¯äž¡ãµã€ãã«å»äžçã¹ããŒã¹ïŒéè·¯ïŒããªãã人ã®ç§»åããã¥ããç¶æ
ã«ãªã£ãŠããŸãããäžæ¹ã§Hall Bã¯äœè£ããããã¹ã ãŒãºãªåéãã§ããŠããŸãããæ¥å¹Žã¯Hall AãHall Bã®ãããªé
眮ããããšããã®ã ãããªãšæã£ãŠãããŸãã å£ãåãæã ä»åã®äŒå Žã§ãããã«ãµãŒã«çŸœç°ç©ºæž¯ã¯ãéšå±ãšéšå±ãã€ãªãããªã©ãã¬ã€ã¢ãŠãã«æè»æ§ããããŸãããŸããéšå±ã®æ°ãå€ãã®ã§ãä»åã¯ã¹ãã³ãµãŒããŒã¹ãšããŠéšå±ãäºã€åãããã®éã®å£ããªãããŠã€ãªããŠããŸããã ããã¯å€§æåã ã£ãããã§ããŠãã¹ãã³ãµãŒã®æ¹ããããåå è
ãåéã§ããŠããããšããããžãã£ããªãã£ãŒãããã¯ããã£ãããã§ãã ãæ
å ±ä¿éããšèœåçãªãã£ããã¢ãã RSGTã¯æšå¹Žåæ§ãä»å¹Žãæ
å ±ä¿éã«ããªãåãå
¥ããŠããŸããããããããã©ã³ãã£ã¢ã¹ã¿ãããšããŠåå ããŠããªããããã®å
·äœçãªä»çµã¿ãéçšããŠããŠã«ã€ããŠãç§èªèº«ãæå€ãšç¥ããªãããšã«æ°ã¥ããããŸããã éå¶ããã¥ã¢ã«ãšããŠæåãè¶³åãæããããããã§ã¯ãªãã®ã§ãã¹ã¿ããèªèº«ãç©æ¥µçã«ç¥ãããšåããªããšããã®è£åŽã«ããåªåãä»çµã¿ãç¥ãããšãã§ããŸããã ããã£ãŠãªã³ããŒãã£ã³ã°ã®ãªãäŒç€Ÿã«å
¥ç€Ÿãããšããšåãã§ããããæ¥å¹Žã¯ããã®æ
å ±ä¿éã®é åã«ã€ããŠãããã£ãšèœåçã«ãã£ããã¢ããããŠããããšå¿ã«æ±ºããŸããã ã»ãã·ã§ã³ãèŠãææ³ éå¶ã®åéã«åå ããã»ãã·ã§ã³ãšãéšå±ä»ããšããŠåå ããã»ãã·ã§ã³ã«ã€ããŠæžããŠã¿ãŸãã æ¹ããŠã¹ã¯ã©ã ã«ã€ããŠã®åŠã³ ryuzeeããã®ããŒããŒãã§ã® ãã€ãªãŒã¹ã¯ã©ã Deep Dive ã®ã»ãã·ã§ã³ã«éšå±ä»ããšããŠå
¥ããŸããããã€ãªãŒã¹ã¯ã©ã ã¯åãªãå ±åäŒã§ã¯ãªããéææ§ã確ä¿ããæ€æ»ãšé©å¿ãè¡ãããã®ã€ãã³ãã§ãããšããã¹ããªã³ããŽãŒã«éæãå¯äžã®ç®çãã§ããããã®ããã®æ€æ»ã§ããããšãã£ãããšããã£ããã£ãŠããããã«æããŸããç¹ã«å°è±¡çã ã£ãã®ãããã¿ã€ã ããã¯ã¹ã®å»¶é·ãèš±ãã®ã¯ãå²ãçªçè«ããšåãã§ããããšããææã§ããäžåºŠæéãå®ããªããªããšãä»ã®èŠåŸããªã厩ãçã«å®ããªããªããšã®ããšã§ããããPBIåäœã§ãäžããé çªã«ç¢ºèªããããšããå
·äœçãªã¢ããã€ã¹ããã¹ããªã³ããŽãŒã«ãã§ãã¯ã€ã³ãšããææ³ã¯ãããã«çŸå Žã§è©Šããç¥èŠã§ããã ãŸããYohããã® ããããããªãããšãå€ãå Žåã®èšç»ã¥ããã®ã³ã ã«ãéšå±ä»ãã§å
¥ããŸããããããããªãããšã¯ããããªãããšèªãã现ããèšç»ããããããããããªãããšãèŠããåãããããã«é »ç¹ã«èšç»ãèŠçŽãããšãã£ãããšããã£ããã£ãŠãããããªæ°ãããŸããé¢çœãã®ã¯ããããããªãããšãªã¹ããçãªãã®ãäœæããŠããããšããç¹ã§ããããããã¯ãKent BeckããTidy First?ãã§èšã£ãŠããããæ¥œãã¿ãªã¹ããã¿ãããªãã®ãããããªãããšåæãªããæããŸããããªã¹ãã«å«ããŠããããšããè¡çºããã£ããå¿ããããšãã§ããã®ã§ããã§ãããã ãšã¿ãããã»ç°å£ããã® Sprint Reviewã§ãããžãã¹ãšéçºã®ãåœããåããåæãã ããã¡ããéšå±ä»ãã§èãããŠããã ããŸãããã¬ãã¥ãŒãçãäžãããªãæ ¹æ¬åå ã¯ãåŠç¿ã®å Žã«ãªã£ãŠããªããããšã«ãããšããææã«ã¯æ·±ãé ·ããŸãããã¹ããŒã¯ãã«ããŒã«ã¯ãã¢ãžã£ã€ã«ããšããçšèªã䜿ããã«å¯Ÿè©±ãããšãã話ããã£ãã®ã§ãããããããã話ã ãªãšæããŸããã è€éããšåãåãçµç¹ã¥ãã çµç¹è«ã®èгç¹ã§ã¯ãé·æ²¢ããã® EBMå®è·µã®ã«ã¿ ââ å®è·µãšãŽãŒã«ãšèšæž¬ãçµã³ã€ããã¢ãžã£ã€ã«ã®ããããå§¿ãž ãå°è±¡ã«æ®ã£ãŠããŸãããéçºäœæ¥ã§ã¯ãªãå®éšãããã¹ãããšããèšèããããŠããªãŒããŒã¯æŠç¥çãŽãŒã«ã瀺ããå®è·µè
ãæŠè¡çãŽãŒã«ãå®ãããšããæ§é ã¯ãå¥å
šãªèªåŸçµç¹ã®æ¡ä»¶ã ãšæããŸãã æ£®ããã® ãç§ã®èŠæ±æåªå
ïŒããªãåŸåãããããªå¯Ÿç«ãè¶
ããŠããžãã¹ãéçºãé¡§å®¢ãæ¬åœã«æ¬²ããã£ããã®ãå
šäž¡ç«ãããããã¯ãçµç¹ã®äœãæ¹ ã§ã®ãåŸªç°æ§é åãã¬ãŒããªãïŒAããããšBãã ãã«ãªããBããããšAãã ãã«ãªãïŒããšãã話ãããããã¯ãéçºã®ãªã¢ã«ïŒãšããæãã§ããããããžãã¹ãéçºã顧客ã®éã§æºãåãäžã§ããé·æçãªæå®³ãããããžã¡ã³ããããšããçºæ³ã¯ãªãã£ããªãŒãšæããŸãããä»ãŸã§æ°ã«ãªããªãã£ããã®ãæ°ã«ãªãå§ããããããã¯å·¥å€«ãå§ãŸã£ãŠãã蚌æ ã ãšããèšèã«ã¯åæ°ã¥ããããŸããã ããã¹ããã® AIæä»£ã®ã¢ãžã£ã€ã«ããŒã ãç®æã㊠- "ã¹ã¯ã©ã "ãšããã³ã³ãã©ãŒããŸãŒã³ããã®è±åŽ- ã§ã¯ãçµç¹ããããŒã ã®ãããªå¯åºŠãã§æããããŒã«ãåçã«ããŠãããšãããããããã®çµç¹ã®ããæ¹ã瀺åãããŠããŸãããæ¯ãè¿ã£ãŠã¿ããšãããã¯Day3ã®æŒåããã® ã¯ããŒãžã³ã°ããŒããŒã ã«ã€ãªãã£ãŠãããªããšããæ°ãããŸãã 人ãã¢ãããŒã·ã§ã³ããããŠç©èª Day2ã®ãããããã® èªå·±ç®¡çåããŒã ã®äžå¡ãšãªãããã®ã»ã«ããããžã¡ã³ãïŒã¢ãããŒã·ã§ã³ç·š ããã¡ãã¯ããŸããŸç§ã®ããªãŒãªæéãéãªã£ãã®ã§è©±ãèãããšãã§ããŸããããèªå·±ç®¡çåããŒã ãšå人ã®ã»ã«ããããžã¡ã³ã ãã¢ãããŒã·ã§ã³ç·šãããšããã¿ã€ãã«ã§ããERGçè«ïŒæé·ã»é¢ä¿ã»ååšïŒãšãABCçè«ïŒåºæ¥äºã»ä¿¡å¿µã»çµæïŒãšãã£ãçè«ã玹ä»ãã€ã€ããèªèº«ã®çµéšãããšã«ããçºè¡šã§ãããããããããããããªããšãæã£ãŠãããã ããšããæãã§ãããã®äžã§ããèªåã¯ãã€ãã¡ã³ããŒã«æµãŸããŠããããšèšã£ãŠããã®ã§ãããã·ã³ãã«ã«ãããèšãããããŒãžã£ãŒã£ãŠããããªããšæããŸãããã ã¡ããããã® ç°èã§20幎ã¹ã¯ã©ã ïŒåŸç·šïŒïŒäžå人ãäŒæ¥ã§é·ææŠã¢ãžã£ã€ã«ã«æãæå³ ããã¡ãã¯éšå±ä»ãã§å
¥ã£ãŠããŸãããæ¥éœãéšå±ä»ããäžäººã§ããããšã«ãªã£ãŠãã¿ãã¿ãããã ã£ãã®ã§ãããããã§ãå
容ã¯çµæ§å°è±¡ã«æ®ã£ãŠããŸããç§ã®å°è±¡ã§ã¯äžèšã§èšãã°ãã§ã³ãžãšãŒãžã§ã³ãã®è©±ã§ãããããããã§ã³ãžãšãŒãžã§ã³ããšãã£ãŠãããã20幎ãã£ãŠããããã§ãããèšèã®éã¿ãéããŸããããçŸå Žãå€ããããšãã人ã
ã®èäžãæŒããããªçŽ æŽãããå
容ã§ããã æåŸã« ã»ãã·ã§ã³ã ãã§ãªããå»äžã§ã®éè«ãRSGTã®ééå³ã§ãããã¶ãã€ã³ã¿ãŒãããã§å
¬éã§ããªããããªè©±ãèãããšæããŸãã ãã©ã³ãã£ã¢ã¹ã¿ããã®æã¡äžãçãªé£²ã¿äŒã§ãæ°žç¬ãããããããããŠããããã®ãã¡ã¢ããã®ãèŠè¿ããšããã»ãµãã¹ããªãŒãããã¹ã³ã¹ã³ããšæžããŠãããŸããã äŒå Žå€æŽãšãã倧ããªå€åã®äžã§ããã©ã³ãã£ã¢ã¹ã¿ãããšããŠãé©å¿ããå®è·µã§ããããšããããŠãã»ãã·ã§ã³ãéããŠã¹ã¯ã©ã ã®ãåºæ¬ããšãæ¬è³ªãã«ç«ã¡è¿ããããšã ä»å¹Žã®RSGTã¯ãéå¶ãšããç«å Žã ããããåŸããããçµç¹ãšããŠã®åãæ¹ãã®åŠã³ãšãã³ã³ãã³ãããã®åŠã³ããªã³ã¯ãããéåžžã«æ¿å¯ãªæéã§ããã ããã§åŸãç±éãšç¥èŠããææ¥ããã®çŸå ŽããããŠæ¥å¹Žã®RSGTã«ã€ãªããŠãããããšæããŸãã
ã¯ããã« ããã«ã¡ã¯ãã¿ã€ããŒã§Platform EngineerãããŠããè¿è€ã§ãã ã¿ã€ããŒã§ã¯ãã€ã³ãã©ç®¡çã«ãããŠTerraformãç©æ¥µçã«æŽ»çšããŠããŸãã åœåã¯AWSãªãœãŒã¹ã®ç®¡çãäžå¿ã§ããããäºæ¥ãçµç¹ã®æ¡å€§ã«äŒŽãã管ç察象ã¯å€å²ã«ãããããã«ãªããŸããã çŸåšã§ã¯ã以äžã®ãããªæ§ã
ãªçšéã§TerraformãªããžããªãéçšãããŠããŸãã AWSã€ã³ãã©: ã¡ã€ã³ãšãªããµãŒãã¹åºç€ã®æ§ç¯ã»éçš GCPã€ã³ãã©: BigQueryãªã©ã®ããŒã¿åæåºç€ããç¹å®ã®Google CloudãªãœãŒã¹ç®¡ç SaaSã¢ã«ãŠã³ã管ç: GitHubãDatadogãªã©ã®ãŠãŒã¶ãŒã»æš©é管ç ãã®ä»: Elastic Cloudãªã©ã®å°çšãªãœãŒã¹ç®¡ç ãã®ããã«ãã¯ã©ãŠããããã€ããŒãçšéãç°ãªãè€æ°ã®ãªããžããªãååšããç¶æ³ã«ãããŠãç§ãã¡ã¯ãTerraformã¯ãŒã¯ãããŒã®å
±éåãã«åãçµã¿ãŸããã å
±éååã®èª²é¡ ãªããžããªãå¢ããã«ã€ããŠãéçºã»éçšããŒã ã¯æ¬¡ã®ãããªèª²é¡ã«çŽé¢ããŠããŸããã ã¯ãŒã¯ãããŒã®å®è£
ãšæ©èœã®ãã©ã€ã ãªããžããªããšã«CI/CDã®èšå®ãã³ãããšç¬èªæ¹å€ãç¹°ãè¿ããŠäœãããŠãããããããããªããžããªã§ã¯Lintãèµ°ãããå¥ã®ãªããžããªã§ã¯èµ°ããªããããããªããžããªã§ã¯Slackéç¥ãé£ã¶ããå¥ã®ãªããžããªã§ã¯éç¥èªäœããªãããšãã£ãäžæŽåãèµ·ããŠããŸããã ã¡ã³ããã³ã¹ã³ã¹ãã®å¢å€§ æ°ããã»ãã¥ãªãã£ãã§ãã¯ããŒã«ã®å°å
¥ããTerraformã®ããŒãžã§ã³ã¢ããã«äŒŽãCIä¿®æ£ãè¡ãããšãããšãå
šãŠã®ãªããžããªã«å¯ŸããŠåå¥ã«ä¿®æ£PRãéãå¿
èŠããããŸããã æ°èŠãªããžããªäœæãžã®å¿ççããŒãã« ããªããžããªãåããã»ãã責åãæç¢ºã«ãªãããšåãã£ãŠããŠããããŸããã®CIèšå®ãã³ããŒããŠã¡ã³ããã³ã¹ããã®ãããšããè² æ
ãé ãããããæ¢åã®ãªããžããªã«ç¡çãããªãœãŒã¹ã远å ããŠããŸãã±ãŒã¹ããããŸããã çµæãšããŠãã¯ãŒã¯ãããŒã®ç¶æç®¡çã倧å€ããã§ãæ°ããçšéã§ã®æŽ»çšãèºèºããŠããŸããšããç¶æ
ã«ãªã£ãŠããŸããã 解決çïŒå
±éTerraformã¯ãŒã¯ãããŒåºç€ã®éçº ãããã®èª²é¡ã解決ããããã«ã瀟å
ã®Terraformãªããžããªã§å©çšããããã®CI/CDã¯ãŒã¯ãããŒãå
±éåããåäžã®ãããã¯ããšããŠç®¡çããå
±éTerraformã¯ãŒã¯ãããŒåºç€ãéçºããŸããã å®å
šãã€èªååãããé
åžã®ä»çµã¿ å
±éåã«ããã£ãŠã¯ã倿Žãå
šãªããžããªã«æ³¢åãããªã¹ã¯ãèæ
®ããå®å
šã«éçºã»é
åžã§ããä»çµã¿ãæ§ç¯ããŸããã ãµã³ãããã¯ã¹çšãªããžããªã§ã®éçº ãŸããTerraformçšã®å®éšãªããžããªã§æ©èœè¿œå ãä¿®æ£ãè¡ããŸããããã§å®éã«Terraformãåãããåäœãæ€èšŒããŸãã å
±éã¯ãŒã¯ãããŒåºç€ãªããžããªãžã®èªåPR ãµã³ãããã¯ã¹ã§ã®æ€èšŒãå®äºã㊠main ãã©ã³ãã«ããŒãžããããšãèªåçã«å
±éTerraformã¯ãŒã¯ãããŒåºç€ãªããžããªã«å¯ŸããŠPull RequestãäœæãããŸãã åãªããžããªãžã®èªåé
åž å
±éTerraformã¯ãŒã¯ãããŒåºç€åŽã§PRãããŒãžãããšããã®å€æŽã察象ãšãªãå
šãŠã®å®å©çšãªããžããªïŒAWSçšãGCPçšãSaaSçšãªã©ïŒã«å¯ŸããŠèªåçã«é
åžãããŸãã ãã®ãµã€ã¯ã«ã«ãããéçºè
ã¯å®å¿ããŠå
±éåºç€ãæ¹åã§ããå©çšè
ãåžžã«æ€èšŒæžã¿ã®ææ°ã¯ãŒã¯ãããŒã享åã§ããããã«ãªããŸããã åæã¯ãŒã¯ãããŒã®å®è£
äžèšã®é
åžãããŒã¯ãGitHub Actions ãš GitHub App ã䜿ã£ãåæã¯ãŒã¯ãããŒã«ãã£ãŠå®çŸãããŠããŸããå
·äœçãªå®è£
ãèŠãŠãããŸãããã åæã¯ãŒã¯ãããŒã®å
šäœå name : Sync Workflow on : push : branches : [ main ] workflow_dispatch : jobs : # é
åžå
ãªããžããªäžèЧãèšå®ãã¡ã€ã«ããèªã¿èŸŒã¿ load_repositories : outputs : repositories : ${{ steps.load.outputs.repositories }} steps : - uses : actions/checkout@v4 - id : load run : | REPOS=$(yq -o=json '.repositories' sync-repositories.yaml | jq -c) echo "repositories=$REPOS" >> "$GITHUB_OUTPUT" # åãªããžããªã«å¯ŸããŠãããªã¯ã¹å®è¡ã§åæ sync_workflow : needs : load_repositories strategy : matrix : include : ${{ fromJson(needs.load_repositories.outputs.repositories) }} steps : # GitHub Appã§é
åžå
ãªããžããªçšã®ããŒã¯ã³ãçºè¡ - uses : actions/create-github-app-token@v2 id : app-token with : app-id : ${{ vars.BOT_APP_ID }} private-key : ${{ secrets.BOT_APP_PRIVATE_KEY }} owner : ${{ matrix.owner }} repositories : ${{ matrix.name }} # ãœãŒã¹ãšé
åžå
ã®äž¡æ¹ããã§ãã¯ã¢ãŠã - uses : actions/checkout@v4 with : repository : ${{ matrix.owner }}/${{ matrix.name }} token : ${{ steps.app-token.outputs.token }} path : target-repo # sync-files.yaml ã«åºã¥ããŠãã¡ã€ã«ãã³ã㌠- name : Copy workflow files run : .github/scripts/sync-copy-files.sh # å·®åãããã°PRãäœæ - name : Create PR if changed run : .github/scripts/sync-create-pr.sh env : GH_TOKEN : ${{ steps.app-token.outputs.token }} é
åžå
ãªããžããªã®èšå®ïŒsync-repositories.yamlïŒ é
åžå
ãšãªããªããžããªã¯ãèšå®ãã¡ã€ã«ã§ç®¡çããŸããå
±éåºç€ãªããžããªã§ã¯ãå®å©çšãªããžããªãã¹ãŠãé
åžå
ãšããŠå®çŸ©ããŠããŸãã # å
±éåºç€ãªããžããªã® sync-repositories.yaml repositories : - owner : your-org name : repo-a # å©çšãªããžããªA - owner : your-org name : repo-b # å©çšãªããžããªB - owner : your-org name : repo-c # å©çšãªããžããªC # ... ä»ã®å©çšãªããžããª äžæ¹ããµã³ãããã¯ã¹ãªããžããªã§ã¯ãå
±éåºç€ãªããžããªã®ã¿ãé
åžå
ãšããŠå®çŸ©ããŸãã # ãµã³ãããã¯ã¹ã® sync-repositories.yaml repositories : - owner : your-org name : workflow-base # å
±éåºç€ãªããžããªã®ã¿ åæå¯Ÿè±¡ãã¡ã€ã«ã®èšå®ïŒsync-files.yamlïŒ åæãããã¡ã€ã«ãšé€å€ãããã¡ã€ã«ã¯ãèšå®ãã¡ã€ã«ã§æç¢ºã«ç®¡çããŸãã # .github/config/tf/sync-files.yaml # åæå¯Ÿè±¡ã®ãã¡ã€ã«ã»ãã£ã¬ã¯ã㪠files : - .github/config/tf/ # å
±éèšå®ãã¡ã€ã« - .github/workflows/ # ã¯ãŒã¯ãããŒãã¡ã€ã« - .github/actions/tf_* # ã«ã¹ã¿ã ã¢ã¯ã·ã§ã³ # é€å€å¯Ÿè±¡ïŒãªããžããªåºæã®èšå®ïŒ exclude : - .github/workflows/tf_sync_workflow.yml # åæWFèªäœ - .github/config/tf/sync-files.yaml # åæèšå® - .github/config/tf/sync-repositories.yaml - .github/config/tf/.env.local # ããŒã«ã«ç°å¢å€æ° - .github/config/tf/dirs.json # 察象ãã£ã¬ã¯ããªäžèЧ - .github/config/tf/filters.local.yaml # ããŒã«ã«ãã£ã«ã¿ - .github/config/tf/.tflint.hcl # tflintèšå® - .github/config/tf/trivy.yaml # trivyèšå® ãã®ããã«ãå
±éåãã¹ããã¡ã€ã«ãšããªããžããªåºæã§ããã¹ããã¡ã€ã«ãæç¢ºã«åé¢ããããšã§ãæè»æ§ãä¿ã¡ãªããäžè²«æ§ãç¶æããŠããŸãã èšå®ãã¡ã€ã«ã«ããæ¯ãèãã®å¶åŸ¡ å
±éã¯ãŒã¯ãããŒã®æ¯ãèãã¯ãéå±€åãããèšå®ãã¡ã€ã«ã«ãã£ãŠæè»ã«å¶åŸ¡ã§ããŸãã èšå®ãã¡ã€ã«ã®éå±€æ§é .github/config/tf/ âââ .env # ã°ããŒãã«èšå®ïŒå
±éïŒ âââ .env.local # ãªããžããªåºæã®èšå® âââ dirs.json # 察象ãã£ã¬ã¯ããªäžèЧ âââ filters.yaml # ã°ããŒãã«å€æŽæ€åºãã£ã«ã¿ âââ filters.local.yaml # ããŒã«ã«å€æŽæ€åºãã£ã«ã¿ âââ .tflint.hcl # tflintèšå® âââ trivy.yaml # trivyèšå® envs/ âââ production/ â âââ .env # ãã£ã¬ã¯ããªåºæã®èšå® âââ staging/ âââ .env ã°ããŒãã«èšå®ïŒ.envïŒ å
šãªããžããªã§å
±éã®èšå®ã§ããåæã«ãã£ãŠé
åžãããŸããäž»ãªèšå®é
ç®ã¯ä»¥äžã®éãã§ãã Terraformå®è¡èšå® : äžŠåæ°ïŒ TF_MAX_PARALLEL_JOBS ïŒãCLIåŒæ°ïŒ TF_CLI_ARGS_plan ïŒãªã© Gitèšå® : ã³ãããæã®ãŠãŒã¶ãŒåã»ã¡ãŒã«ã¢ãã¬ã¹ Slackéç¥èšå® : ã¹ããŒã¿ã¹ããšã®è²ã»ã¡ãã»ãŒãžã»çµµæåã»ã¢ã€ã³ã³ã SLACK_STATUS_{STATUS}_{PROPERTY} 圢åŒã§å®çŸ© Slackéç¥ã®èšå®ã¯ããŒã¿ãšããŠå®çŸ©ããã¯ãŒã¯ãããŒåŽã§ã¯ã·ã§ã«ã®éæ¥å€æ°å±éã䜿ã£ãŠãžã§ãã®ã¹ããŒã¿ã¹ïŒsuccess / failure / cancelled / maintenanceïŒã«å¿ããå€ãåçã«åç
§ããèšèšã«ããŠããŸãã ãªããžããªåºæã»ãã£ã¬ã¯ããªåºæã®èšå® ã°ããŒãã«èšå®ãäžæžãããèšå®ã¯ã以äžã®2ç®æã§å®çŸ©ã§ããŸãã .env.local : ãªããžããªå
šäœã«é©çšãããèšå®ïŒåæã®é€å€å¯Ÿè±¡ïŒ envs/{env}/.env : ç¹å®ã®ãã£ã¬ã¯ããªã«ã®ã¿é©çšãããèšå® äž»ãªèšå®é
ç®ïŒ TF_MAX_PARALLEL_JOBS : APIã¬ãŒãå¶éãèæ
®ããäžŠåæ°ã®äžæžã AWS_ROLE_TO_ASSUME / GCP_WORKLOAD_IDENTITY_PROVIDER : èªèšŒèšå® SLACK_CHANNEL_ID / SLACK_MENTION_NAME : éç¥å
ãã£ã³ãã«ãšã¡ã³ã·ã§ã³ 察象ãã£ã¬ã¯ããªèšå®ïŒdirs.jsonïŒ terraform plan/apply ã®å¯Ÿè±¡ãã£ã¬ã¯ããªãå®çŸ©ããŸãã [ " envs/production ", " envs/staging ", " envs/development " ] 倿޿€åºãã£ã«ã¿ïŒfilters.yamlïŒ å
±éã¢ãžã¥ãŒã«ãèšå®ãã¡ã€ã«ã®å€æŽæã«å
šãã£ã¬ã¯ããªãåå®è¡ããããã®ã°ããŒãã«ãã£ã«ã¿ã§ãã # .github/config/tf/filters.yamlïŒå
±éïŒ terraform_trigger : - modules/ - .github/config/tf/ - .github/actions/tf_*/** - .github/workflows/tf_* - .github/workflows/*tf** - .terraform-version # .github/config/tf/filters.local.yamlïŒãªããžããªåºæïŒ terraform_trigger : - shared/ # ãªããžããªåºæã®å
±æã¢ãžã¥ãŒã« èªèšŒåŠçã®å
±éåïŒtf_init ã¢ã¯ã·ã§ã³ïŒ èªèšŒåŠçã¯Composite ActionãšããŠå
±éåããAWS OIDC / GCP Workload Identity Federation ã®äž¡æ¹ã«å¯Ÿå¿ããŠããŸãã # .github/actions/tf_init/action.yml name : Terraform Init inputs : directory : required : true credentials : required : false runs : using : composite steps : # ãªããžããªåºæã®ããããããã°é©çš - name : Check if tf_patch exists id : check-patch shell : bash run : | if [ -d ".github/actions/tf_patch" ] ; then echo "exists=true" >> "$GITHUB_OUTPUT" fi - name : Apply patches if : steps.check-patch.outputs.exists == 'true' uses : ./.github/actions/tf_patch with : directory : ${{ inputs.directory }} # TerraformããŒãžã§ã³ã®ã»ããã¢ãã - name : Setup Terraform uses : hashicorp/setup-terraform@v3 with : terraform_wrapper : false terraform_version : ${{ steps.var.outputs.terraform-version }} # ç°å¢å€æ°ã®èªã¿èŸŒã¿ïŒã°ããŒãã« â ããŒã«ã« â ãã£ã¬ã¯ããªåºæïŒ - name : Load environment variables shell : bash run : | for env_file in \ ".github/config/tf/.env" \ ".github/config/tf/.env.local" \ "${{ inputs.directory }}/.env" ; do if [ -f "$env_file" ] ; then envsubst < "$env_file" >> "$GITHUB_ENV" fi done # AWS OIDCèªèšŒïŒèšå®ãããå ŽåïŒ - name : Configure AWS credentials if : env.AWS_ROLE_TO_ASSUME != '' uses : aws-actions/configure-aws-credentials@v4 with : aws-region : ${{ env.AWS_REGION }} role-to-assume : ${{ env.AWS_ROLE_TO_ASSUME }} # GCP Workload IdentityèªèšŒïŒèšå®ãããå ŽåïŒ - name : Authenticate to Google Cloud if : env.GCP_WORKLOAD_IDENTITY_PROVIDER != '' uses : google-github-actions/auth@v2 with : workload_identity_provider : ${{ env.GCP_WORKLOAD_IDENTITY_PROVIDER }} service_account : ${{ env.GCP_SERVICE_ACCOUNT }} # Terraform init - name : Terraform init shell : bash run : | terraform -chdir=${{ inputs.directory }} init å°å
¥ææ éçšé¢ã§ã®æ¹å å
±éåºç€ã1ç®æä¿®æ£ããã ãã§ãå
šãªããžããªã«æ¹åãè¡ãæž¡ãããã«ãªããŸãããã»ãã¥ãªãã£ã¹ãã£ã³ã®è¿œå ãããŒã«ã®ããŒãžã§ã³ã¢ããããäžæ¬ã§é©çšå¯èœã§ãã ãŸããã©ã®ãªããžããªãè§Šã£ãŠãããPRãåºãã°Planãèµ°ããçµæãã³ã¡ã³ããããããããŒãžããã°Applyãããããšããåãæåãä¿èšŒãããããã«ãªããŸãããããã«ããããšã³ãžãã¢ãæ°ãããªããžããªãè§Šãéã®åŠç¿ã³ã¹ããäžãããŸããã æè¡çã«å®çŸã§ããããš å
±éTerraformã¯ãŒã¯ãããŒåºç€ã§ã¯ãã€ã³ãã©éçšã«å¿
èŠãªä»çµã¿ã次ã®ãããªåœ¢ã§ãŸãšããŠæäŸããŠããŸãã Terraformå®è¡ãã€ãã©ã€ã³ã®å
±éå: PRããšã«Â terraform plan ãmainããŒãžæã«Â terraform apply  ãèªåå®è¡ããè€æ°ç°å¢ããããªã¯ã¹å®è¡ããªããäžŠåæ°ãå¶åŸ¡ã å®è¡ã®å®å
šæ§ãšã¬ãŒããªããã察ç: ã¯ãŒã¯ãããŒã®ã³ã³ã«ã¬ã³ã·ãŒããã£ã³ã»ã«ããªã·ãŒãèšå®ããäžèŠãªåå®è¡ãé¿ãã€ã€ãGitHub API ãã¯ã©ãŠããããã€ãAPIã®ã¬ãŒããªãããã«ããããªãããã«å®è¡ãå¶åŸ¡ã å質ã»ã»ãã¥ãªãã£ãã§ãã¯ã®æšæºå: terraform fmt  / validate  / tflint  / trivy  ã«å ããåçš®Lintãäžæ¬ã§èµ°ãããçµæãPRã¬ãã¥ãŒãšããŠãã£ãŒãããã¯ã ããªããæ€åºãšèªåPR: 宿çãªPlanã§å®ç°å¢ãšã®ããªãããæ€åºããå·®åãããã°èªåã§PRãäœæã»ç®¡çã PRã¬ãã¥ãŒäœéšã®åŒ·å: Plan/Applyçµæã蚺æçµæã«å ããAIããŒã¹ã®PRãšãŒãžã§ã³ãã«ããèŠçŽã»ã¬ãã¥ãŒã³ã¡ã³ãçæã§ã¬ãã¥ãŒè² è·ã軜æžã èªèšŒãšæš©é管çã®äžè²«æ§: AWS OIDC / GCP Workload Identity Federation ãšã¢ã¯ã»ã¹ããŒèªèšŒã®äž¡æ¹ã«å¯Ÿå¿ãã plan  / apply  ããšã«é©åãªèªèšŒæ
å ±ãéžæã§ããããçµ±äžã èšèšæã«æèããããš Terraformã¯ãŒã¯ãããŒããåãªãCIèšå®ãã§ã¯ãªããç¶ç¶çã«æ¡åŒµã»æ¹åããŠãããå
±éåºç€ã«ããããã«ã次ã®ãããªèšèšæ¹éãšå®è£
äžã®å·¥å€«ãåãå
¥ããŠããŸãã 1ã€ã®ãœãŒã¹ããè€æ°ãªããžããªãžå®å
šã«é
åžã§ããããš å
±éã¯ãŒã¯ãããŒã®æŽæ°ããã®ãŸãŸå
šãªããžããªã«æ³¢åãããããå¿
ããµã³ãããã¯ã¹ã§æ€èšŒããŠããå
±éåºç€ã«åã蟌ãäºæ®µéãããŒã«ããŠããŸãããã®äžã§ãGitHub App ã䜿ã£ãããŒã¯ã³çºè¡ãšåæå°çšã¯ãŒã¯ãããŒã«ãããã人æã§ã³ããããã«ãã¬ãã¥ãŒæžã¿ã®å€æŽã ããåãªããžããªãžé
åžããããšããæµããèªååããŸããã é
åžæ¹æ³ãšããŠã¯ãreusable workflow ã䜿ã£ãŠçŽæ¥åŒã³åºãæ¡ãæ€èšããŸããããããããŠãŒã¹ã±ãŒã¹ã瀟å
éå®ã§ããããšãé
åžæã®å·®åãPRãšããŠç¢ºèªã§ããã»ããã¬ãã¥ãŒããããããšãåŒã³åºãå
ã¯ãŒã¯ãããŒåŽã®èšå®ãå«ããŠå°æ¥çã«å€æŽããå¯èœæ§ãããããšãããGitHub App ã§åãªããžããªã«PRãäœæããæ¹åŒãéžã³ãŸããã èšå®ãã¡ã€ã«ã§æ¯ãèããåãæ¿ããããããš Terraform ã®å®è¡å¯Ÿè±¡ãããªã¬ãŒãšãªããã¡ã€ã«ãã¿ãŒã³ãªã©ã¯ãã¯ãŒã¯ãããŒå
ã«ãã¿æžããããã°ããŒãã«èšå®ãšãªããžããªããšã®èšå®ãã¡ã€ã«ãããŒãžããŠè§£æ±ºããæ§é ã«ããŠããŸããããã«ããããå
±éã®ããŒã¹ã©ã€ã³ã¯ç¶æãã€ã€ããããžã§ã¯ãããšã«ç£èŠå¯Ÿè±¡ãå®è¡é »åºŠã ãå€ããããšãã£ã調æŽãã³ãŒã倿Žãªãã§è¡ããããã«ããŸããã èªèšŒã»æš©éãŸãããã¯ãŒã¯ãããŒåŽã§è©ä»£ããããããš AWS OIDC / GCP Workload Identity Federation ã«ããããŒã¬ã¹èªèšŒãšãåŸæ¥ã®ã¢ã¯ã»ã¹ããŒèªèšŒã®äž¡æ¹ãã©ãããã plan / apply ãªã©ã®ã¢ã¯ã·ã§ã³ããšã«é©åãªæš©éãéžã³åããããããã«ããŠããŸããåã
ã®ãªããžããªã§ã¯ãã©ã®ããŒã«ïŒãµãŒãã¹ã¢ã«ãŠã³ãã䜿ãããã ããæèããã°ãããèªèšŒãããŒãã®ãã®ã®å®è£
ã¯å
±éåºç€ã«éã蟌ããŠããŸãã å
±éã¯ãŒã¯ãããŒãšåãªããžããªã®å®è£
ãæè»ã«ã€ãªããããããš ã¯ãŒã¯ãããŒã®äžã§ãTerraformãã¡ã€ã«ã«å¯ŸããŠå°ããªããããåœãŠãå°çšã¢ã¯ã·ã§ã³ tf_patch ãçšæããŠããŸãã äŸãã°ãåãªããžããªã® providers.tf ã«ã¯ãéå»ã®çµç·¯ããããŒã«ã«éçºçšã®AWSèªèšŒèšå®ïŒãããã¡ã€ã«æå®ãããŒã«åŒãåãèšå®ïŒãå«ãŸããŠããŸããCIç°å¢ã§ã¯OIDCèªèšŒã䜿çšãããããããã®èšå®ã¯äžèŠã§ããããããå¹²æžããŠããŸããŸãã tf_patch ã¢ã¯ã·ã§ã³ã¯ terraform init ã®åã«ãããã®è¡ãèªåçã«åé€ããã©ã®ãªããžããªã§ãåãOIDCèªèšŒã®åæã§å
±éã¯ãŒã¯ãããŒãå®è¡ã§ããããã«ããŠããŸãã ãã®ããã«ãå
±éã¯ãŒã¯ãããŒãšåãªããžããªåºæã®å®è£
ã®éãã€ãªãã¢ããã¿ãšããŠæ©èœãããããšã§ãæ¢åã³ãŒããžã®å€æŽã¯æå°éã«æãããŸãŸå
±éåãé²ããããããã«ããŠããŸãã çŸç¶ã®èª²é¡ å
±éåã«ãã£ãŠå€ãã®ã¡ãªãããåŸãããŸããããéçšãç¶ããäžã§ããã€ãã®æ¹åç¹ãèŠããŠããŸããã åæé€å€å¯Ÿè±¡ã®ç®¡ç çŸåšãåæå¯Ÿè±¡ããé€å€ãããã¡ã€ã«ã¯ sync-files.yaml ã«ãã¡ã€ã«åãåå¥ã§å®çŸ©ããŠããŸããããããé€å€å¯Ÿè±¡ãå¢ããã«ã€ããŠãã®ãªã¹ãã®ç®¡çãç
©éã«ãªã£ãŠããŸããããã£ã¬ã¯ããªæ§é ãæŽçãããå
±éåãããã®ããšããªããžããªåºæã®ãã®ããæç¢ºã«ãã£ã¬ã¯ããªã§åé¢ããããšã§ãé€å€èšå®ãã·ã³ãã«ã«ã§ããäœå°ããããŸãã ãã¡ã€ã«ã®å·®å管ç åæã¯ãŒã¯ãããŒã¯ããœãŒã¹ãªããžããªã«ãããã¡ã€ã«ãé
åžå
ã«ã³ããŒããããšããåäœãããŸããããœãŒã¹ãªããžããªã§ãã¡ã€ã«ãåé€ã»ç§»åããå Žåã«ãé
åžå
ã®å€ããã¡ã€ã«ãèªåã§åé€ãããããªä»çµã¿ã«ã¯ãªã£ãŠããŸããããã®ããããã¡ã€ã«æ§æã倿Žããéã«ã¯ãé
åžå
ãªããžããªã«äžèŠãªãã¡ã€ã«ãæ®ã£ãŠããŸãããšããããŸãããã®åé¡ããäžè¿°ã®ãã£ã¬ã¯ããªæ§é ã®èŠçŽãã«ãã£ãŠå¯Ÿå¿ã§ãããšèããŠããŸããçŸç¶ã§ã¯ãAIã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã® Devin ãæŽ»çšããŠãäžèŠã«ãªã£ããã¡ã€ã«ã®ãæé€PRãäœæããŠããããªã©ã人åã§ã®å¯Ÿå¿ãè¡ã£ãŠããŸãã ãããã« å
±éTerraformã¯ãŒã¯ãããŒåºç€ã«ãã£ãŠãã€ã³ãã©ãåçš® SaaS ã¢ã«ãŠã³ã管çã®ã¯ãŒã¯ãããŒã¯äžè²«æ§ãæã£ãŠéçšã§ããããã«ãªããåã
ã®ãªããžããªããšã« CI ãå®è£
ã»ã¡ã³ããã³ã¹ããè² æ
ã¯å€§ããæžããŸããããã®ããã§ãéçºè
ã¯ããªããžããªããšã® Terraform ã®äžèº«ãã«éäžãããããªããã¯ãŒã¯ãããŒèªäœã¯å
±éåºç€ãšããŠç¶ç¶çã«æ¹åããŠãããç¶æ
ã«ãªã£ãŠããŸãã ãŸãããã®èšäºã§ç޹ä»ããã®ãšåããããªèãæ¹ã§ãã¢ããªã±ãŒã·ã§ã³ã®ã¢ãã¬ãã«å¯Ÿãããããã€ã¯ãŒã¯ãããŒãå
±éåããŠããŸãããã¡ãã«ã€ããŠããæ©äŒãããã°å¥ã®ãšã³ããªãšããŠè©³ãã玹ä»ã§ããã°ãšæããŸãã
ããã«ã¡ã¯ãã¿ã€ããŒã§ããã¯ãšã³ãã®ããã¯ãªãŒããããŠããæ°è°·ïŒ @euglena1215 ïŒã§ãã Rails ã¢ããªã±ãŒã·ã§ã³ã®éçºãããŠãããšãfat ã«ãªã£ãŠããŸã£ã Sidekiq worker ãããã¡ã€ã³ããžãã¯ãããå®è£
ãæžãããŠãã Serializer ã«ééããããšãããã®ã§ã¯ãªãã§ããããã ãã®èšäºã§ã¯ãMVC ã¢ãŒããã¯ãã£ãäžæ®µéæœè±¡åããŠæããããšã§ãRails ã®ããŸããŸãªã¬ã€ã€ãŒã«å¯ŸããŠäžè²«ãããã©ã¯ãã£ã¹ãé©çšããèãæ¹ã玹ä»ããŸããããçšåºŠ Rails ãè§Šã£ãããšã®ãããšã³ãžãã¢ãæèŠçã«çè§£ããŠããæŠå¿µããæ¹ããŠèšèªåãããã®ã§ãã MVC ã®åœ¹å²ãæ¹ããŠæŽçãã ãŸããMVC ã®åã¬ã€ã€ãŒã®åœ¹å²ãæŽçããŠãããŸãããã Model : ããžãã¹ããžãã¯ãããŒã¿ãã«ãŒã«ãã®ãã®ã衚çŸããããŒã¿ã®ä¿åã»ååŸãè¡ã View : ããŒã¿ããŠãŒã¶ãŒã«è¿åŽããããã®é©åãªåœ¢ã§å€æãã Controller : å€éšããã®å
¥åãåãåããModel ãæäœãããŒã¿ã®ååŸã»æŽæ°ãè¡ããView ã§å€æããããŒã¿ãå€éšãžåºåãã ããã§éèŠãªã®ã¯ãMVC ããModel, View, Controller ãšããäžã€ã®ãã£ã¬ã¯ããªããšããŠæããã®ã§ã¯ãªãããäžã€ã®è²¬åããšããŠæœè±¡çã«æããããšã§ãã ãå®è³ªããããšããèŠç¹ äžçªåãããããäŸã¯ãJSON ã®çµã¿ç«ãŠãè¡ã Serializer ã§ããSerializer 㯠app/serializers ãã£ã¬ã¯ããªã«é
眮ãããŸããããã®è²¬åã¯ãããŒã¿ãé©åãªåœ¢ã«å€æããŠãŠãŒã¶ãŒã«è¿åŽãããããšã§ããããã㯠å®è³ªçã« View ã§ãã ãã®ãå®è³ªããããšããèŠç¹ã§ã¿ã€ããŒã® Rails ã¢ããªã±ãŒã·ã§ã³ã®åã¬ã€ã€ãŒãåé¡ããŠã¿ãŸãããã å®è³ª Model ãã£ã¬ã¯ã㪠説æ app/models Model ãã®ãã® app/policies ç¹ã«èªå¯ã«ãã©ãŒã«ã¹ãããã® app/validators ç¹ã«ããªããŒã·ã§ã³ã«ãã©ãŒã«ã¹ãããã® Policy ã Validator ã¯ãããžãã¹ã«ãŒã«ã衚çŸãããšããç¹ã§ã Model ã®è²¬åãæ
ã£ãŠããŸãã å®è³ª Controller ãã£ã¬ã¯ã㪠説æ app/controllers Web API ãªã¯ãšã¹ãã«ããããšã³ããªãã€ã³ã app/workers éåæåŠçã«ããããšã³ããªãã€ã³ã app/mailers ã¡ãŒã«éä¿¡ã«ããããšã³ããªãã€ã³ã lib/tasks rake ã¿ã¹ã¯ã«ããããšã³ããªãã€ã³ã app/services ãšã³ããªãã€ã³ãããæ¬ãåºãããåŠç app/forms ãšã³ããªãã€ã³ãããæ¬ãåºãããåŠç ãã€ã³ãã¯ãService *1 ã Form *2 ããšã³ããªãã€ã³ãã§ã¯ãªããã®ã®ãController ã«å®è£
ãããã¹ãåŠçãæ¬ãåºãããã®ã§ãããšããç¹ã§ãããã®ãããå®è³ªçã«ã¯ Controller ãšæããã®ã劥åœã§ãã å®è³ª View ãã£ã¬ã¯ã㪠説æ app/views HTML ãã¡ãŒã«æé¢ã®çµã¿ç«ãŠ app/serializers JSON ã®çµã¿ç«ãŠ Serializer ã View ãšæããããšã§ãView ã«é¢ãããã©ã¯ãã£ã¹ã Serializer ã«ãé©çšã§ããããã«ãªããŸãã ãã®èŠç¹ã®ã¡ãªãã ãããã¯å®è³ªçã« Model / View / Controller ã§ããããšããæèŠãæã€ããšã§ãMVC ã®äžè¬çãªãã©ã¯ãã£ã¹ã MVC 以å€ã®ã¬ã€ã€ãŒã«ãé©çšã§ããŸãã äŸãã°ã以äžã®ãããªã»ã«ããã§ãã¯ãå¯èœã«ãªããŸãã äžè¬ç㪠MVC ã®ãã©ã¯ãã£ã¹ ãã§ãã¯ãªã¹ã å®è³ª Controller ã¯ååã«èãããã¡ã€ã³ããžãã¯ã衚瀺çšããžãã¯ãæ··ãã£ãŠããªããïŒ ãã¡ã€ã³ããžãã¯ã¯å®è³ª Model ã«å¯ããŠãããïŒ è¡šç€ºã®ããã®ããŒã¿å å·¥ã¯å®è³ª View ã«å¯ããŠãããïŒ å®è³ª Model ã¯å®è³ª Controller ã«äŸåããŠããªããïŒ å®è³ª Model ã¯å®è³ª View ã«äŸåããŠããªããïŒ å
·äœäŸ äŸãã°ããService ã¯ã©ã¹ãè¥å€§åããŠããããšããåé¡ããã£ããšããŸãã Service ã¯å®è³ª Controller ãªã®ã§ããController ãè¥å€§åããŠããããšèšãæããããŸããController ãè¥å€§åããåå ã¯ããã¡ã€ã³ããžãã¯ã衚瀺çšããžãã¯ãæ··å
¥ããŠããããšãå€ãã§ãã ãããã£ãŠã解決çã¯ä»¥äžã®ããã«ãªããŸãã ãã¡ã€ã³ããžã㯠â ModelïŒãŸã㯠Policy, ValidatorïŒã«ç§»å 衚瀺çšããžã㯠â ViewïŒãŸã㯠SerializerïŒã«ç§»å ãã®ããã«ãMVC ã®ãã©ã¯ãã£ã¹ãé©çšããããšã§ãèªç¶ãšé©åãªèšèšã«å°ãããŸãã ãŸãšã MVC ã¯ãäžã€ã®ãã£ã¬ã¯ããªãã§ã¯ãªããäžã€ã®è²¬åããšããŠæãã Rails ã®åã¬ã€ã€ãŒããå®è³ª Model / View / Controllerãã§åé¡ããããšã§ãäžè¬ç㪠MVC ãã©ã¯ãã£ã¹ãé©çšã§ãã Service ã¯å®è³ª ControllerãSerializer ã¯å®è³ª ViewãPolicy ã¯å®è³ª Model ãã®èŠç¹ãæã€ããšã§ãäžè²«æ§ã®ããã¯ã©ã¹èšèšãå¯èœã«ãªã æ¥ã
ã®ã³ãŒãã¬ãã¥ãŒãèšèšå€æã®éã«ããããã¯å®è³ªã©ã®ã¬ã€ã€ãŒãïŒããšåããããŠã¿ãŠãã ããã *1 : ã¿ã€ããŒã§ã¯ãService ã¯ã©ã¹ãController ã Sidekiq worker ããåŒã¶ãã®ãšäœçœ®ä»ããModel ããã¯åŒã³åºãããªããããªã«ãŒã«ã«ããŠããŸãã詳现㯠https://tech.timee.co.jp/entry/2024/01/29/170000 ãã芧ãã ããã *2 : ã¿ã€ããŒã§ã¯ãForm ã¯ã©ã¹ã«ãããæç¢ºãªã«ãŒã«ã¯ãªããã®ã®ãç¹å®ã®ãšã³ããã€ã³ãã«ãããåŠçãæ¬ãåºãããã®ãšããäœçœ®ä»ãã®äœ¿ãæ¹ãããŠããããšãå€ãããããããã£ãæŽçãããŠããŸãã
ã¯ããã« ãã®èšäºã¯ Timee Product Advent Calendar 2025 ã®25æ¥ç®ã®èšäºã§ãã MLOpsãšã³ãžãã¢ã® tomoppi ã§ããããŒã¿ãšã³ãžãã¢ãªã³ã°éš ããŒã¿ãµã€ãšã³ã¹ã°ã«ãŒãïŒä»¥äžDSGïŒã«æå±ããML/LLMåºç€ã®æ§ç¯ã»æ¹åã«åãçµãã§ããŸãã 2024幎10æã«ã¿ã€ããŒãžãžã§ã€ã³ããæ°ãã€ãã°1幎ããŸããçµã¡ãŸããã2025幎ã¯LLM/LLMOpsã«å¥èµ°ãã1幎ã§ãPoCã宿œããæœçã®æ¬çªå°å
¥ããLLMã®å¯èŠ³æž¬æ§ã»ããã³ãããããžã¡ã³ãã«åãçµã¿ãèµ°ããªããèããèããªããèµ°ãæ¥ã
ã§ããã ãããªäžã§ããµãšæãããã«ãªããŸãããã2026幎ãã¿ã€ããŒã®LLMåºç€ã¯ã©ãããã¹ããïŒã æ¬èšäºã¯ããã®åãã«å¯Ÿããç§ãªãã®çãââãšããããã 倢ãšåŠæ³ ã§ãããã®1幎ã§èŠããŠãã課é¡ãšããããä¹ãè¶ããããã®æ§æ³ããã§ããã ãå
·äœçã«æããŠã¿ãŸãã 2025å¹Žã®æ¯ãè¿ã å人çãªæ¯ãè¿ã ãŸãã¯ãç§ããã®1幎åãçµãã§ããããšã«ã€ããŠãç°¡åã«è§ŠããããŠããã ããããšæããŸãã 幎åæç¹ã§ã¯ã瀟å
ã§ããã€ãã®LLMé¢é£PoCãåããŠãããã§ãŒãºã§ããŸã MLOpsãšããŠã®LLMãžã®é¢ããã¯èãç¶æ
ã§ãããäžæ¹ã§ãDSGå
ã§ã¯LLMãžã®æ³šç®ãé«ãŸãããã£ããã¢ãããç®çãšããLLMå匷äŒãå§ãŸããŸããïŒãã®å匷äŒã¯çŸåšãç¶ç¶ããŠããŸãïŒã ãã®æµãã§ã2æã«ãLLMOpsãšã¯äœãããããŒãã«å匷äŒãéå¬ããè©äŸ¡ææ³ãããã³ãã管çãã¢ãã¿ãªã³ã°ãªã©ãåŸæ¥ã®MLOpsãšã¯ç°ãªãè«ç¹ãDSGã§å
±æããŸããã 3æã«å
¥ããšãPoC段éã ã£ãLLMæ©èœãæ¬çªå°å
¥ããåããå¢ãããã©ãèšèšããã°å®å
šãã€çŸå®çã«éçšã§ãããããäžããè©°ããŠããããšã«ãªããŸããããã®éçšã§åŸãããç¥èŠã»çµéšã¯ã LLMã¢ããªã±ãŒã·ã§ã³åãProduction Readiness Checklist å·çã®åæ©ã«ãªããŸããã LLMOpsããŒã«å°å
¥ã®æ€èšã䞊è¡ããŠè¡ãã10æé ãLLMOpsåºç€ãšããŠDatadog LLM Observabilityã®æ¬æ Œéçšãéå§ããŸããã ããªããšãªãåããŠããããããã¡ãããšéçšã§ããŠãããç¶æ
ãžãåŸã
ã«é²ããŠããæèŠããããŸããã ãŸããDatadog瀟ããã®ã声ããã§ã Datadog LLM Observabilityã顿ãšããç»å£ ã®æ©äŒãããã ããå®ãã®å€ã1幎ãšãªããŸããã LLMOpsãšTeam Topologies MLOpsããŒã ã¯ãTeam Topologiesã§èšãCollaboration Modeã§ãããŒã¿ãµã€ãšã³ãã£ã¹ãããŒã ïŒas Complicated Subsystem TeamïŒããããã¯ããšã³ãžãã¢ïŒas Stream-aligned teamïŒãšå¯ã«é£æºããŠããŸããã AIæœçããšã«MLOpsãšã³ãžãã¢ããããžã§ã¯ãã«åç»ããåæã®å£æã¡ããã¢ãŒããã¯ãã£èšèšãå®è£
ãŸã§äŒŽèµ°ããŠããŸããããã®é²ãæ¹ã¯ããã¬ããžãå°ãªãäžç¢ºå®æ§ãé«ãç¶æ³ã§ãç¥èŠãçŽ æ©ãèç©ããéçºã®ã¢ãžãªãã£ã確ä¿ããããã§éåžžã«æå¹ã§ããã äžæ¹ã§ããã®äœå¶ã¯é·æçã«ã¯æç¶ããªãããšãèŠããŠããŸããã ãAIã䜿ãããããšããç±éãå
šç€Ÿçã«é«ãŸãã»ã©ãã€ã³ãã©ãã¬ããã³ã¹æŽååŸ
ã¡ã®ãè¡åããçãŸããçµæãšããŠããžãã¹ã®ã¹ããŒããèœãšããŠããŸããŸãã åæã«ãLLMå©çšãæ¡å€§ããã«ã€ããããã³ããã€ã³ãžã§ã¯ã·ã§ã³ãã¯ãããšããã»ãã¥ãªãã£å¯Ÿçãã³ã¹ãæé©åãå©çšã¢ãã«ã®éæåãšãã£ãã¬ããã³ã¹ããããéèŠã«ãªã£ãŠãããšèããŠããŸãã ãã®èŠæš¡ã«ãªããšãåå¥å¯Ÿå¿ããã£ãšç¶ããããšã¯çŸå®çã§ã¯ãããŸããã 2025幎æ«ã®èª²é¡ æŽçãããšãçŸç¶ã®èª²é¡ã¯æ¬¡ã®3ã€ã§ãã AgilityïŒä¿ææ§ã®æ¬ åŠïŒ æ€èšŒç°å¢æ§ç¯ã®ãªãŒãã¿ã€ã ãé·ããé«éãªæ€èšŒãé»å®³ããç¶æ³ã«ãªã£ãŠããŸãã LLMéçºã§ã¯ãè©äŸ¡ããŒã¿ã®æºåããããã³ãã倿Žâè©äŸ¡âæ¹åã®å埩ããã¢ãã«ã®åãæ¿ãããã³ã¹ãèŠç©ïŒããŒã¯ã³/ã¬ã€ãã³ã·/å䟡ïŒããªã©ãç°å¢ä»¥å€ã«ãå埩ã®ããã«ããã¯ãå€ããæœçã®ç«ã¡äžããæ¹åã®é床ãèœãšããŠããŸããŸãã ScalabilityïŒæ¡åŒµæ§ã®éçïŒ LLMæœçã®éèŠå¢ã«å¯ŸãMLOpsããŒã ã®äŸçµŠäœå¶ã远ãã€ãããçµç¹å
šäœã§ã®LLMæœçãã¹ã±ãŒã«ããŸããã ããã«ããã¯ããæè¡ïŒã€ã³ãã©ïŒãã§ã¯ãªãã人ïŒMLOpsããŒã ïŒãã«ãªã£ãŠããããšã¯ãæ§é çãªå¶çŽã§ããããã®ãŸãŸã§ã¯ã¹ã±ãŒã«äžã®éçã«çŽé¢ããŸãã GovernanceïŒçµ±å¶ã®åæ£/éšåæé©ïŒ æœçããšã«å奿é©ãªå€æã»å®è£
ãç©ã¿äžãããç°å¢ãéçšããµã€ãåããŸãããã®çµæãã³ã¹ãé
賊ãå©çšå®æ
ã®ææ¡ãã»ãã¥ãªãã£å¯Ÿçãç£æ»å¯Ÿå¿ãªã©ãããŒã ããšã«ãã©ãã©ã«ãªããå
šç€ŸãšããŠã®ç®¡çãé£ãããªã£ãŠããŸãã 2026幎ã«ç®æãããã¿ã€ããŒã®LLMOps Collaboration ModeããX-as-a-Serviceãž åè¿°ãããããªèª²é¡ãä¹ãè¶ããLLM掻çšãå
šç€Ÿçã«ã¹ã±ãŒã«ãããããã«ã2026幎ã¯MLOpsããŒã ãåå¥ã®ãããžã§ã¯ãã«å
¥ã蟌ãã®ã§ã¯ãªãããã»ã«ããµãŒãã¹ã§äœ¿ãããã©ãããã©ãŒã ããæäŸããããšãç®æããŠããŸããTeam Topologiesã§èšã X-as-a-Service ãžã®ç§»è¡ã§ãã ãããã¯ãããŒã ãèªåŸçã«LLMæ©èœãéçºã»éçšã§ããåºç€ââããã Unified LLM Platform ãšåŒã¶ããšã«ããŸãã ãThe Art of AI MaturityããšPlatform Engineering Maturity Modelãžã®æ¥ç¶ ãšã¯ããããæ¬åœã«Unified LLM PlatformãšããŠã®å
±éåºç€ã¯å¿
èŠãªã®ãïŒããšããåãã«ã¯çããŠãããããšããã§ããæŠç¥çãªãã¬ãŒã ã¯ãŒã¯ãåç
§ããªããããã®å¿
èŠæ§ãæŽçããŠã¿ãŸãã ãã®ãã¬ãŒã ã¯ãŒã¯ãšããŠã The Art of AI Maturity ãš Platform Engineering Maturity Model ãåç
§ããŠãããŸãã The Art of AI MaturityããèŠã Unified LLM Platformã®å¿
èŠæ§ The Art of AI Maturityã¯ãAccentureãæå±ããAIæç床ãè©äŸ¡ãããã¬ãŒã ã¯ãŒã¯ã§ã17ã®Key Capabilitiesãå®çŸ©ããŠããŸããã¿ã€ããŒã§ã¯ããã®ãã¬ãŒã ã¯ãŒã¯ãå
šç€Ÿçã«åç
§ããŠããŸãã Unified LLM Platformã®æ§ç¯ã¯ã以äžã®8ã€ã®Key Capabilitiesã«å¯Ÿããå®è¡æœçãšãªããŸãã Key Capability Unified LLM Platformãšã®é¢ä¿ #3. Proactive vs Reactive å
è¡æè³ã«ãããã©ãããã©ãŒã æŽåã«ãããåžå ŽããŒãºçºçåŸã®è¿œéã§ã¯ãªããå
åãã§AIãªããã¥ããã£ãåµåº #4. Readily Available AI/ML Tools ã»ã«ããµãŒãã¹åãããLLMéçºç°å¢ã«ãããéçºè
ãç°å¢æºåã§åŸ
ããããªãç¶æ
ãå®çŸ #5. Readily Available Developer Networks çµ±äžã€ã³ã¿ãŒãã§ãŒã¹ããªãŒãã³ãªã¢ãŒããã¯ãã£ã«ãããOSSã³ãã¥ããã£ãšã®é£æºãä¿é² #6. Build vs Buy ç«¶äºåªäœãçãã³ã¢é åïŒLLM featuresïŒã¯å
補ãåºç€éšåã§ã®Utilityã¯SaaS/PaaS/OSSãæŽ»çšããããŒããã©ãªãªæŠç¥ãå®çŸ #7. Platform & Technology æšè«åºç€ïŒãã«ããããã€ããŒå¯Ÿå¿ãçµ±äžAPIïŒãã¬ãŒãã¬ãŒã«ïŒDLP/ããªã·ãŒ/ããŒã«å®è¡å¶åŸ¡ïŒãå¯èŠ³æž¬æ§ïŒãã¬ãŒã·ã³ã°/ã¡ããªã¯ã¹ïŒãè©äŸ¡ãã³ã¹ã管çããã©ãããã©ãŒã ãšããŠæšæºåããå®å
šã§åçŸæ§ã®ããéçšãå®çŸ #13. Innovation Culture Embedded æ¢çŽ¢ã®èªç±åºŠãé«ãããã©ãããã©ãŒã ã«ãããæ¥åžžæ¥åã«å®éšã»åŠç¿ãµã€ã¯ã«ãçµã¿èŸŒãæåãä¿é² #16. Responsible AI æè¡ççµ±å¶ïŒPIIãã¹ãã³ã°ãç£æ»ãã°ãªã©ïŒã«ãããå«çã»æ³èŠå¶ã«é©åããRAIããã»ã¹ãå®çŸ #17. Responsible AI â Change RAIäœå¶ã®ç¶ç¶ç匷åãããã©ãããã©ãŒã ã¬ãã«ã§èªååã»æšæºå Platform Engineering Maturity ModelããèŠã Unified LLM Platformã®å¿
èŠæ§ 次ã«ãPlatform Engineering Maturity Modelãåç
§ããŠã¿ãŸãã Platform Engineering Maturity Modelãšã¯ããã©ãããã©ãŒã ãšã³ãžãã¢ãªã³ã°ã5ã€ã®èгç¹ïŒAdoptionãInterfacesãInvestmentãMeasurementãOperationsïŒã§è©äŸ¡ãããã¬ãŒã ã¯ãŒã¯ã§ãã ãããŸã§ãããžã§ã¯ãåäœã§ã®ã¹ããŒããåªå
ããŠããããããã©ãããã©ãŒã ãšããŠã®æç床ã¯ãã¬ãã«1ïŒæ«å®çïŒãã§ãããéšåçã«ãã¬ãã«2ïŒæŠç¥çïŒããšããè©äŸ¡ã«ãªããŸãã 0â1ã®ç«ã¡äžãæã«ãããŠã¯ããã®ãéœåºŠå¯Ÿå¿ããæãæ©ååãçºæ®ããŸããããããã1â10ã10â100ãžãšã¹ã±ãŒã«ãããããããã®ãã§ãŒãºã«ãããŠã¯ããã€ãŠã®æé©è§£ïŒã¬ãã«1ïŒãæå€§ã®ã¢ã³ããã¿ãŒã³ã«ãªãã€ã€ãããŸãããã¬ãã«1ã ãããã¡ããªã®ã§ã¯ãªãããã¬ãã«1ã®ããæ¹ã§æŠãããã§ãŒãºã¯çµãã£ãããšèªèããŠããŸãã 2025å¹Žã®æ¯ãè¿ãã§è¿°ã¹ã課é¡ãäœå¶ãèžãŸãããšãçŸåšã®ã¿ã€ããŒã®LLMOpsã¯ãå芳ç¹ã§ä»¥äžã®ãããªç¶æ
ã«ãããšèããããŸãïŒ èŠ³ç¹ çŸç¶ InvestmentïŒæè³ïŒ ãããžã§ã¯ãããšã®åå¥å¯Ÿå¿ãåºæ¬ã§ãMLOpsããŒã ã®éšåçãªã¿ã¹ã¯ãšããŠéè¡ããŠããç¶æ³ã§ãã AdoptionïŒæ¡çšïŒ LLMãå¿
èŠãªããŒã ãæ£åšãã瀟å
ãã¬ããžãããšã«æœçãæ€èšããMLOpsããŒã ãéœåºŠåå¥å¯Ÿå¿ãè¡ã£ãŠãããããæšæºçãªãã©ã¯ãã£ã¹ãããªã·ãŒãäžååãªç¶æ
ã§ãã InterfacesïŒã€ã³ã¿ãŒãã§ãŒã¹ïŒ ãããŸã§ã¯MLOpsãšã³ãžãã¢ã䌎走ãããããžã§ã¯ãããšã«æé©ãªæ§æãæäŸããŠããŸãããéšåçã«å
±éåã§ããŠããç®æããããŸãããã»ã«ããµãŒãã¹ã§å©çšã§ããçµ±äžã€ã³ã¿ãŒãã§ãŒã¹ã¯æŽã£ãŠããªãç¶æ³ã§ãã MeasurementïŒæž¬å®ïŒ LLMåºç€ãšããŠææšã¯å®çŸ©ã§ããŠããããåéãã§ããŠããªãç¶æ³ã§ãã OperationsïŒéçšïŒ ãããŸã§ã¯ãããžã§ã¯ãããšã®ãªã¯ãšã¹ãã«å¿ããæè»ãªå¯Ÿå¿ã§çŽ æ©ã䟡å€ãå±ããŠããŸããããã¢ãã«ã®å©çšç¶æ³ããæŽæ°å¯Ÿå¿ã¯åå¥ç®¡çã«ãªã£ãŠãããLLMã©ã€ããµã€ã¯ã«ãäžå€®éæš©çã«ç®¡çã§ããŠããªãç¶æ
ã§ãã 2026幎ã«ç®æãã®ã¯ãå芳ç¹ã§ã¬ãã«3ïŒã¹ã±ãŒã©ãã«ïŒãžã®ç§»è¡ã§ããããã¯ãã£ã¬ã³ãžã³ã°ãªç®æšã§ãããUnified LLM Platformã®æ§ç¯ã«ããå®çŸãç®æããŸãïŒ èŠ³ç¹ å®çŸå
容 Investment MLOpsããŒã ãPlatform TeamãšããŠæç¢ºãªåœ¹å²ãæã¡ãLLM Platformã®ããŒããããã«åºã¥ãèšç»çãªæè³ãå®è¡ããŠãããŸãã Adoption ãGolden Paths over Cagesã ã®æ¹éã«ãããã匷å¶ãã§ã¯ãªãã䟿å©ã ãã䜿ãããããã©ãããã©ãŒã ãå®çŸãããã¥ã¡ã³ãæŽåãšãªã³ããŒãã£ã³ã°ïŒå©çšéå§ãŸã§ã®æé ã»ã¬ã€ãïŒãå«ããSelf-serviceåãæšé²ãããããã¯ãããŒã ãèªåŸçã«LLMæ©èœãéçºã»éçšã§ããç¶æ
ãç®æããŸãã Interfaces çµ±äžããããšã³ããã€ã³ããšOpenAIäºæã®åäžAPI仿§ãæäŸãèªèšŒã»èªå¯ã¯ã€ã³ãã©å±€ã§ééçã«å®è¡ãããéçºè
ã¯æèäžèŠãObservability by Defaultã«ããã远å å®è£
ãªãã§å
šãªã¯ãšã¹ãã®ãã¬ãŒã¹ã»ã¬ã€ãã³ã·ã»ã³ã¹ããå¯èŠåããã»ã«ããµãŒãã¹ã§å©çšã§ããããã«ããŸãã Measurement LLMåºç€ã®Success MetricsïŒæšæºææšïŒãå®çŸ©ããå¿
èŠãªèšè£
ïŒãã¬ã¡ããª/ãã°/å©çšããŒã¿ïŒãçµã¿èŸŒã¿ãŸãã宿ã¬ãã¥ãŒã«ãããå©çšç¶æ³ãšæ¹å广ãå¯èŠåããæææ±ºå®ãšæ¹åãµã€ã¯ã«ãåããç¶æ
ã«ããŸãã Operations ã©ã®ãµãŒãã¹ãã©ã®ã¢ãã«ãå©çšããŠããã®ããäžå€®éæš©ã§ç®¡çããã¢ãã«ã®éæšå¥šå¯Ÿå¿ãæ°èŠã¢ãã«ã®ããŒã«ã¢ãŠãçµ±å¶ãåããç¶æ
ã«ããŸããå ããŠãMigrationæé ã責任åçïŒè²¬ä»»å
±æã¢ãã«ïŒãããŒã«ããã¯æŠç¥ãæšæºããã»ã¹ãšããŠæŽåããŸãã å®çŸã«åãããšã³ãžãã¢ãªã³ã° ããããã¯ãã©ã®ããã«Unified LLM Platformãå®çŸããã®ãããšã³ãžãã¢ãªã³ã°èгç¹ã§æŽçããŠãããŸãã ãæ¢çŽ¢ã®èªç±åºŠãã»ãéçšæã®ä¿¡é Œæ§ãã»ãæè¡ççµ±å¶ã ãã©ãããã©ãŒã ãèšèšããã«ããããç¹ã«éèŠãããèŠæ±ã3ã€ã«æŽçããŸããã 1. æ¢çŽ¢ã®èªç±åºŠïŒFreedom of ExplorationïŒ ãããŒã¿ãµã€ãšã³ãã£ã¹ãããããã¯ããšã³ãžãã¢ããé¢åãªç°å¢æ§ç¯ãªãã«ãã¢ã€ãã¢ãå³åº§ã«è©Šããç°å¢ã ãå®çŸãããã§ãã LLMéçºã¯ã詊è¡é¯èª€ãããã¹ãŠã§ãããšã³ãžãã¢ã ãã§ãªããPMãããžãã¹ãµã€ãã®ã¡ã³ããŒãããã³ãããçŽæ¥è§Šããããããšããéçºé床ã«çŽçµããŸãã ãã®èŠæ±ãæºããããã以äžã®èŠçŽ ãéèŠã§ãã ã¢ãã«ã®åãæ¿ãïŒModel AgnosticïŒ ãGeminiã§è©Šãããã©ãAnthropicãBedrockã ãšã©ããªãïŒããã³ãŒã倿Žãªãã§ãèšå®ã®åãæ¿ãã ãã§çŽ æ©ã詊ããããšã çµ±äžã€ã³ã¿ãŒãã§ãŒã¹ ãããã€ããŒããšã«ç°ãªãAPI仿§ïŒOpenAI / Azure / Bedrock / Vertex AIãªã©ïŒãæèãããçµ±äžãããSDK/APIã§åŒã³åºããããšã ããã³ããã®ããŒãžã§ã³ç®¡çãšãã¬ã€ã°ã©ãŠã³ã Gitã®ããã«ãv1.2ã®ããã³ããããšãv1.3ã®ããã³ããããGUIäžã§æ¯èŒå®è¡ã§ããç°å¢ããšã³ãžãã¢ã«äŸé Œãããšããç»é¢äžã§ãã©ã¡ãŒã¿ã調æŽããŠæåã確èªã§ããããšã è©äŸ¡é§åéçºïŒEval-driven DevelopmentïŒã®ããã®ç°å¢ ãªãã©ã€ã³è©äŸ¡ã«ãããå®éšç®¡çãLLM-as-a-judgeãªã©ããDay1ããè¡ããããšã Open-weight Modelsã®æŽ»çš å¿
èŠãªãŠãŒã¹ã±ãŒã¹ã§ã¯ãGKEäžã®vLLMãªã©ã§Open-weight Modelsãæ±ããéžæè¢ãæ®ãããšã 2. éçšæã®ä¿¡é Œæ§ïŒOperational ReliabilityïŒ ã確ççãªLLMãã確å®çãªãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ãšããŠæ¯ãèãããããã®å®å®åæ©æ§ã ãå¿
èŠã§ãã PoCã§ã¯èš±ãããŠããæ¬çªç°å¢ã§ã¯ãAPIãèœã¡ãŠããŸããããé
ãããŸããã¯èš±ãããŸããã ãã®èŠæ±ãæºããããã以äžã®èŠçŽ ãéèŠãšèããŠããŸãã ãªãã©ã€ãšãã©ãŒã«ããã¯ïŒFallbacksïŒ ãããã€ããŒé害æã«å¥çµè·¯ãžåãæ¿ãããã髿§èœã¢ãã«ãã¿ã€ã ã¢ãŠããããé«éãªã¢ãã«ã§å詊è¡ãããããåé·åæ§æã ãã ãã ãã©ãŒã«ããã¯ã¯ãè©äŸ¡ã§èš±å®¹ã§ããããšç¢ºèªã§ããçµã¿åããã«éå® ãïŒæåå·®åã倧ãããšåè³ªäºæ
ã«ã€ãªããããïŒã ã¹ããŒããã£ãã·ã³ã°ïŒCachingïŒ åäžãªã¯ãšã¹ãã«ã¯ãã£ãã·ã¥ããå¿çããã¬ã€ãã³ã·ççž®ãšã³ã¹ãåæžãäž¡ç«ãå°æ¥çã«Semantic Cacheãæ€èšã ã¬ãŒãå¶éãšå
¬å¹³æ§ äžéšã®ãããŒãŠãŒã¶ãŒãããŒã¯ã³ã䜿ããããŠä»ã®ãµãŒãã¹ã«åœ±é¿ãäžããªãããå¶åŸ¡ã§ããããšã ãªãã¶ãŒãããªã㣠éçºè
ãã¢ãã¿ãªã³ã°ç°å¢ã®æ§ç¯ãæèãããã¢ãã«ã®æ§èœããªãœãŒã¹äœ¿çšç¶æ³ã確èªã§ããããšã 3. æè¡ççµ±å¶ïŒTechnical GovernanceïŒ ãçµç¹ãšããŠãªã¹ã¯ãã³ã³ãããŒã«ããéè¯AIãé倩äºã®ã³ã¹ããé²ãããã®ã¬ãŒãã¬ãŒã«ã ãæŽåãããã§ãã ãã®èŠæ±ãæºããããã以äžã®èŠçŽ ãéèŠãšèããŠããŸãã PII/æ©å¯æ
å ±ã®ãã¹ãã³ã° ïŒRedactionïŒ ã¯ã¬ãžããã«ãŒãçªå·ãã¡ãŒã«ã¢ãã¬ã¹ãªã©ãããã³ããã«å«ãŸããŠããããLLMã«éä¿¡ããåã«èªåã§ãã¹ãã³ã°ããæ©èœã ããã³ããã€ã³ãžã§ã¯ã·ã§ã³å¯ŸçïŒPrompt Injection MitigationïŒ å
¥å/åºåã®ãã£ã«ã¿ãªã³ã°ïŒçãããæç€ºã®æ€ç¥ã»é®æãã·ã¹ãã ããã³ãããæ©å¯æ
å ±ã®æŒæŽ©é²æ¢ãªã©ïŒãšãã³ã³ãã³ãããªã·ãŒïŒèš±å¯/çŠæ¢ã®åºæºïŒããã©ãããã©ãŒã åŽã§æšæºåããã Tool UseïŒå€éšAPIåŒã³åºããDBåç
§ããã±ããçºè¡ãªã©ïŒãè¡ãå Žåã¯ãããŒã«ã®Allowliståã»åŒæ°æ€èšŒã»æš©éå¢çã®èšèšãªã©ã«ãããå®è¡å¶åŸ¡ããè¡ããå¿
èŠã«å¿ããŠãµã³ãããã¯ã¹ïŒéé¢ç°å¢ïŒã§å®å
šã«å®è¡ããã èªèšŒæ¹åŒã®çµ±äžå å
šãŠã®LLMãªã¯ãšã¹ããLLM Gatewayãéãããšã§ãèªèšŒæ¹åŒãçµ±äžåãããããžã§ã¯ãåºæã§èªèšŒéšåãè¡ãå¿
èŠæ§ããªããã ã³ã¹ãã®äºç®ç®¡ç ïŒCost BudgetingïŒ ããããžã§ã¯ãAã¯æé¡â¯â¯åãŸã§ããšãã£ããã£ãããèšå®ããè¶
éãããã«ãªã£ããã¢ã©ãŒããåºãä»çµã¿ã ç£æ»ãã° ïŒAudit LogsïŒ ã誰ããããã€ããã©ããªããã³ãããããã©ã®ã¢ãã«ã«ãæããã远跡å¯èœã«ããããšã ããã¯åŒ·ãçµ±å¶ã«ãªãäžæ¹ã ãã°ã®åãæ±ãïŒPIIã®æ±ããä¿ææéãé²èŠ§æš©éãæå·åããã¹ãã³ã°åŸã®ã¿ä¿åãªã©ïŒ ãåæã«èšèšå¯Ÿè±¡ã ãã©ãããã©ãŒã ã®æ§æã€ã¡ãŒãž ãããã®èŠä»¶ãåæã«æºããããã«ã AI GatewayïŒLLM GatewayïŒ ãšããã¢ãŒããã¯ãã£ãã¿ãŒã³ãäžå¿ã«æ®ããããšãæ€èšããŠããŸãã ã€ã¡ãŒãžå³ ã¢ããªã±ãŒã·ã§ã³ãšLLMãããã€ããŒã®éã«ãã²ãŒããŠã§ã€ããæãããšã§ãéçºè
ã¯èªç±ã«APIãåŒã³åºããŸããäžæ¹ã§ãè£åŽã§ã¯èªåçã«ãã°ãåãããã»ãã¥ãªãã£ãã§ãã¯ãèµ°ãïŒçµ±å¶ïŒããã£ãã·ã¥ããªãã©ã€ãå¹ãïŒä¿¡é Œæ§ïŒãšããæ§æã§ãã èšèšåå ãã©ãããã©ãŒã ãæ§ç¯ã»éçšããŠããäžã§ã以äžã®ååã倧äºã«ããããšèããŠããŸããããã㯠Platform Engineering ã ã»ãã¥ãªã㣠ã SRE / Observability ã LLMOps ã®ååéããåŠãã ãã®ã§ãã åå æŠèŠ Platform as a Product ãã©ãããã©ãŒã ãã瀟å
åããããã¯ãããšããŠæããå©çšè
ïŒãããã¯ãããŒã ïŒã®äœéšãæåªå
ã«èšèšããããã€ã³ãã©ãæäŸãã人ãã§ã¯ãªããéçºè
ãšãã顧客ã«ãããã¯ããå±ãã人ããšããŠã®ãã€ã³ãã»ãããæã€ TVPïŒThinnest Viable PlatformïŒ åæã¹ã³ãŒãã¯ãã¬ããã³ã¹ãšå¯èŠ³æž¬æ§ãã解決ããçŽç²ãªLLM APIãããã·ã«çµããRAGãTool Useã¯åŸããããŸãã¯ãå®å
šã§ã誰ã䜿ã£ããããããããã£ããããããAPIããå
šç€Ÿã«æ°äž»åãã Golden Path ã®æäŸ ãæšå¥šãããäœ¿ãæ¹ããæç¢ºã«ãããã®éãæ©ãã°èªç¶ãšãã¹ããã©ã¯ãã£ã¹ã«æ²¿ããç¶æ
ãäœããèªç±åºŠã¯æ®ãã€ã€ããè¿·ããªãããã®éæšãçšæãã Secure by Default LLMã¯ããã³ããã€ã³ãžã§ã¯ã·ã§ã³ãPIIæµåºãªã©åŸæ¥ãšã¯ç°ãªããªã¹ã¯ããããããã¬ãŒãã¬ãŒã«ãããã©ã«ãã§æå¹ã«ããç¶æ
ãæšæºãšããããã»ãã¥ãªãã£ãæèããªããŠãå®å
šããªç¶æ
ãäœã Observable by Default LLMã¯ç¢ºççã«åäœãããããå
¥åºåã®è¿œè·¡ãªãã«ã¯æ¹åã®ãã€ã³ããèŠããªããç¹å¥ãªèšå®ãªãã§èªåçã«ãã¬ãŒã·ã³ã°ãšã¡ããªã¯ã¹åéãè¡ãããç¶æ
ãç®æã Eval DrivenïŒè©äŸ¡é§åïŒ LLMéçºã§ã¯ãªã°ã¬ãã·ã§ã³ãé »ç¹ã«çºçããããããæèŠãã§ã¯ãªããè©äŸ¡ãã§æ¹åã確èªãããè©äŸ¡ããŒã¿ã»ããã®æŽåãCI/CDãžã®è©äŸ¡çµã¿èŸŒã¿ãLLM-as-a-Judgeã«ããèªåã¹ã³ã¢ãªã³ã°ãéçºãããŒã«çµã¿èŸŒã ã¢ãŒããã¯ãã£èšèš çŸåšãåææ€èšŒã§æ§ç¯ããŠããã¢ãŒããã¯ãã£ã¯äžå³ã®ããã«ãªã£ãŠããŸãã æè¡éžå® AI Gateway ãŸãã¯AI GatewayïŒLLM ProxyïŒã®æè¡éžå®ããçæããŸãããããã§æºããããèŠä»¶ã¯ããã£ããèšããšæ¬¡ã®ãšããã§ãã ãã«ããããã€ããŒå¯Ÿå¿ : Vertex AI / AWS Bedrock / GKEäžã®vLLMïŒã»ã«ããã¹ãïŒãåãå
¥å£ã§æ±ããããš èªèšŒ : LLMãããã€ããŒåŽãžã®ããŒã¬ã¹èªèšŒïŒOIDCãªã©ïŒãšãã¯ã©ã€ã¢ã³ãåãã®Virtual API Key ãã©ãã£ãã¯å¶åŸ¡ãšä¿¡é Œæ§ : ãªã¯ãšã¹ãæ°ã»ããŒã¯ã³æ°ããŒã¹ã®ã¬ãŒãå¶éããã©ãŒã«ããã¯ãã¹ããªãŒãã³ã° çµ±äžã€ã³ã¿ãŒãã§ãŒã¹ : OpenAIäºæAPIãªã©ã®ã¹ããŒãæ£èŠåãEmbeddingsã®ãµããŒã ãªãã¶ãŒãããªãã£ãšã³ã¹ã : OpenTelemetry飿ºãã³ã¹ã远跡ïŒããŒã /ããŒåäœã®é
賊ïŒãïŒå°æ¥çãªïŒã»ãã³ãã£ãã¯ãã£ãã·ã¥ ã¬ãŒãã¬ãŒã« : PII/DLPã®ãã¹ãã³ã°ïŒRedactionïŒãå«ãå
¥å/åºåã®ãã£ã«ã¿ãªã³ã°ã«å ããããã³ããã€ã³ãžã§ã¯ã·ã§ã³å¯ŸçïŒããªã·ãŒãæ€ç¥/鮿ãå¿
èŠã«å¿ããTool Useã®å®è¡å¶åŸ¡ïŒ 10å匷ã®ããŒã«ïŒ LiteLLM Proxy / Envoy AI Gateway / APISIX / Kong / Portkey.ai ãªã©ïŒã調æ»ããçµæãçŸæç¹ã§ã¯ LiteLLM Proxy ãèŠä»¶ãæãçŽ çŽã«æºããããããšããçµè«ã«ãªããŸããã äžæ¹ã§ã Envoy AI Gateway ãKubernetesãã€ãã£ãã§é
åçã§ããå°æ¥çã«æ¬æ Œçãªæ¬çªéçšïŒGitOpsåæã®éçšããã峿 Œãªãã©ãã£ãã¯å¶åŸ¡ãäœã¬ã€ãã³ã·ïŒã«å¯ãããªãæååè£ã§ãããããçŸæ®µéã§ã¯ãåéãåªå
ã㊠LiteLLM +ïŒèªèšŒãæ
ãïŒEnvoy Sidecar ã®æ§æããå§ããã®ãçŸå®çã ãšæããŠããŸãã LLM Observability Tool çŸåšå©çšããŠããDatadog LLM Observabilityã¯ããã©ãããã©ãŒã ã§ãåŒãç¶ãäžæ žã®å¯èŠ³æž¬æ§åºç€ãšããŠæŽ»çšããæ³å®ã§ããAI Gateway çµç±ã®åŒã³åºããèµ·ç¹ã«ãã¬ã€ãã³ã·ããšã©ãŒãããŒã¯ã³äœ¿çšéãªã©ãäžè²«ããŠå¯èŠåããéçšæ¹åãè©äŸ¡ïŒEval DrivenïŒã«ç¹ããŸãã Envoy Sidecar vs Service Mesh Cloud Runã®ãã«ãã³ã³ããæ©èœã§ãEnvoy â Backend ã«ããå¿
èŠããããã©ããã«ã€ããŠã¯ãä»£æ¿æ¡ãšããŠService MeshïŒIstioã»Cloud Service MeshïŒãèããããŸãã ããããçŸç¶Service Meshæ§æã§ã¯ãªãããã®åãçµã¿ã®ããã«0ããService Meshãæ§ç¯ããããšã¯ãTVPã®èãæ¹ã«åããŸãããã®ãããEnvoy Sidecarãæ¡çšããããšã«ããŸããã AWS â GCPã®ããŒã¬ã¹èªèšŒ ã¯ãã¹ã¯ã©ãŠã飿ºã§æ©ãŸããã®ãã AWS â GCP ã®èªèšŒ ã§ããåŸæ¥ã® Workload Identity Federation ã ãšãGCPåŽã®STSãåŒã³åºããŠã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããå¿
èŠããããå®è£
ã»éçšã®è² æ
ã倧ãããªããã¡ã§ãã ããã§æè¿ç»å Žããã AWS IAM Outbound Identity Federation ã䜿ã£ãŠã AWS STSãçºè¡ããJWTããCloud Runåæ®µã®Envoyã§çŽæ¥æ€èšŒãã æ¹åŒãæ¡çšããããšã«ããŸããã ãããã« ãããŸã§èªãã§ããã ãããããšãããããŸãã ãã®æ§æ³ã«ã¯å€ãã®äžç¢ºå®æ§ããããèªç±ãšçµ±å¶ã®ãã¬ãŒããªããšãåãåãç¶ããããšã«ãªããšæããŸãããå€¢åŠæ³ããšéæã£ããšããããã¹ãŠãèšç»ã©ããã«é²ãä¿èšŒã¯ãããŸããã ããã§ãããå®å
šã«ãåçŸæ§ãæã£ãŠLLMãæŽ»çšã§ããç¶æ
ãã€ããããšãã軞ã ãã¯ãã¬ãã«ã2026幎ã¯ã¿ã€ããŒã®LLMåºç€ãåã«é²ããŠãããããšæããŸãã æ¥å¹Žã®ã¢ããã³ãã«ã¬ã³ããŒã§ãããã®å€¢åŠæ³ãçŸå®ã«ãªããŸããããšå ±åã§ããããšãç®æããŠã ã¿ã€ããŒã®MLOpsã»LLMOpsã£ãŠé¢çœããªããããšæã£ãŠããããæ¹ã¯ãã²ãã話ãããŸãããïŒ ãããã¯ãæ¡çšãµã€ãTOP ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã
ããã«ã¡ã¯ãã¿ã€ããŒã®ããŒã¿ãµã€ãšã³ã¹ã°ã«ãŒãã§ãããŒãžã£ãŒãããŠããèå°ã§ãã æ¬èšäºã§ã¯ãã¿ã€ããŒã®ããŒã¿ãµã€ãšã³ã¹çµç¹ãçŽé¢ãããèªç¥è² è·ãããåªå
é äœãã®èª²é¡ã«å¯ŸããããŒã ããããžãŒã®èãæ¹ãåãå
¥ããŠãã©ã®ããã«äœå¶ãèŠçŽãããã玹ä»ããŸãã å
·äœçã«ã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ãããã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ããžãšåé
眮ããèæ¯ãšããã®åŸã®ããŒã é飿ºãåæ»ã«ããããã®ããããã³ã«ãã®èšèšã»éçšã«ã€ããŠã話ãããŸãã ã¯ããã« ã¿ã€ããŒã®éçºçµç¹ã§ã¯ããŒã ããããžãŒã«åºã¥ããçµç¹éå¶ãè¡ã£ãŠãããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ããã©ãããã©ãŒã ããŒã ãã€ãã€ããªã³ã°ããŒã ãã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ãšãã£ãããŒã ã¿ã€ãã«åãããŠãæ¥ã
ã®éçºæ¥åãè¡ã£ãŠããŸãã ããŒã ããããžãŒ 䟡å€ãããœãããŠã§ã¢ããã°ããå±ããé©å¿åçµç¹èšèš tech.timee.co.jp ããŒã¿ãµã€ãšã³ã¹ãçšããæ©èœéçºã®åæãã§ãŒãºã§ã¯ããã®ç«ã¡äžããè»éã«ä¹ããããã«ãããŒã¿ãµã€ãšã³ãã£ã¹ããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã«æå±ãããããã¯ãéçºãšäžŠèµ°ããäœå¶ããšã£ãŠããŸãããããŒã¿ãµã€ãšã³ãã£ã¹ãããã¡ã€ã³ç¥èãæ·±ãçè§£ããããžãã¹èª²é¡ã«å¯ŸããŠå³å¿æ§ã®é«ãåæãã¢ãã«æ§ç¯ãè¡ãå¿
èŠããã£ãããã§ãã ããããäºæ¥ãæ¥æé·ãããããã¯ããå€§èŠæš¡åã»è€éåãããšãšãã«ããµãã·ã¹ãã ãšããŠéçšããããã®ãäžå®çšåºŠã§ããŠããã«ã€ããŠããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã«ããŒã¿ãµã€ãšã³ãã£ã¹ããåå±
ãããäœå¶ã®éçãèŠãå§ããŠããŸããã ããã§ã é«åºŠãªå°éæ§ãæ±ããããç¹å®ã®é å ïŒå¯©æ»ã·ã¹ãã ãæšèŠã·ã¹ãã ãªã©ïŒã«ãããŠãããŒã¿ãµã€ãšã³ãã£ã¹ããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ããåãåºããã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ãšããŠåç·šæããçµç¹ãªãã¶ã€ã³ãè¡ããŸããã 以äžã§ã¯ããã®èæ¯ã«ãã£ãå
·äœçãªèª²é¡ãšè§£æ±ºçããããŠéçšã§å®çãã€ã€ããå
·äœçãªé£æºãããã³ã«ã«ã€ããŠç޹ä»ããŸãã 課é¡ïŒã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã«ãããããŒã¿ãµã€ãšã³ãã£ã¹ãã®èªç¥è² è·ãšå°éæ§ã®ã³ã³ããªã¯ã 以åãŸã§ç¹å®ã®ãããã¯ãé åã§ã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã®äžå¡ãšããŠæŽ»åããŠããŸããããã®äœå¶ã«ã¯ããã¡ã€ã³ç¥èã®ç²åŸãããããªããªãŒã®ã¹ããŒãããšããã¡ãªããããã£ãäžæ¹ã§ãéçšãç¶ããäžã§ä»¥äžã®ãããªèª²é¡ãé¡åšåããŠããŸããã 1. èªç¥è² è·ã®é«ãŸã ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã®åãçµã¿ã¯ããŠãŒã¶ãŒãžã®äŸ¡å€æäŸã«éäžããé«éã«ã€ãã¬ãŒã·ã§ã³ãåãããšãæ±ããããŸããäžæ¹ãé«åºŠãªML/LLMã·ã¹ãã ã®éçºã»éçšã«ã¯ãè«æèª¿æ»ãå®éšèšèšãé·æçãªç²ŸåºŠæ¹åãšãã£ããéåžžã®éçºãµã€ã¯ã«ãšã¯ç°ãªãæé軞ãšå°éç¥èãå¿
èŠã§ãã ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã«ãããæ¥ã
ã®ãŠãŒã¶ãŒãžã®äŸ¡å€æäŸãšé«åºŠãªMLã¢ãã«ã®ç ç©¶éçºããåæã«åäžããŒã å
ã§æ
ãããšã¯ãè³ã®ã¹ã€ããã³ã°ã³ã¹ããéåžžã«é«ããèªç¥è² è·ã®éçãè¶
ãã€ã€ãããŸãããçµæãšããŠããæ©èœã¯äœããããã¢ãã«ã®ç²ŸåºŠæ¹åãã¢ãŒããã¯ãã£ã®å·æ°ã«æãåããªãããšããç¶æ³ãçãŸãå§ããŠããŸããã 2. åªå
é äœã®ç«¶å ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã¯ããã®æã
ã®ãããã¯ããŽãŒã«ã«åãã£ãŠããã¯ãã°ã®åªå
é äœã決å®ããŸããäžæ¹ã§ãML/LLMã·ã¹ãã ã«ã¯ãäžåºŠäœã£ãŠçµãããã§ã¯ãªããããŒã¿åŸåã®å€åãžã®è¿œéãç¶ç¶çãªç²ŸåºŠã¢ãã¿ãªã³ã°ãšãã£ãæåžžçãªæ¹åãäžå¯æ¬ ã§ããããããããããã¿ã¹ã¯ã¯çŽè¿ã®ãŽãŒã«ã«ã¯çŽæ¥çµã³ã€ããªãããšãå€ããçµæãšããŠæ§é çã«åªå
é äœãäžãã«ãããšãã課é¡ããããŸããã äŸãã°ãMLã¢ãã«ã®å®æçãªååŠç¿ãã€ãã©ã€ã³ã®æŽåããå°æ¥ã®æœçã«åããæè¡æ€èšŒïŒPoCïŒãè«æèª¿æ»ãªã©ã¯ãçæçã«ã¯ãŠãŒã¶ãŒäŸ¡å€ã«çŽçµãã«ãããããã¹ããªã³ãã®äžã§åŸåãã«ãããã¡ã§ãããããã«ã¯ãæ£åŒãªã¿ã¹ã¯ãšããŠããã¯ãã°ã«èŒããããšã諊ããã¡ã³ããŒãå人çã«æéãæ»åºããŠæŽåãè¡ããšãã£ããé ãã皌åããçºçããŠããŸãããšããããŸãããããã«ãããããŒã¿ãµã€ãšã³ãã£ã¹ãã®æŽ»åãèŠãã«ãããªã£ããããã£ãªã¢æé·ã®æ©äŒãæãªãããããæè¡çè² åµãèç©ãããšãã£ãæžå¿µããããŸããã 解決çïŒããŒã ããããžãŒã«åºã¥ãã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ã®çµæ ãããã®èª²é¡ã解決ãããããããŒã ããããžãŒã®æŠå¿µã«ãããã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ãšããŠã察象é åããšã«å°éããŒã ãæ°èšããŸããã ã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ã®åœ¹å²ã¯ããé«åºŠãªå°éç¥èãå¿
èŠãšããè€éãªãµãã·ã¹ãã ã®ç®¡çã«è²¬ä»»ãæã¡ããã®è€éããä»ã®ããŒã ããé èœããããšãã§ãã ããã«ãããããŒã¿ãµã€ãšã³ãã£ã¹ãã¯ã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ã«æå±ããè€éãªãµãã·ã¹ãã ã®éçºã»éçšã«éäžã§ããããã«ãªããŸããåæã«ãã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã¯ãäžèº«ã®è€éãªããžãã¯ããæèããããšãªããæäŸãããAPIãå©çšããã ãã§é«åºŠãªæ©èœããŠãŒã¶ãŒã«å±ããããšãã§ããããã«ãªããŸãã Before flowchart TB subgraph SAT1 ["ð¹ Stream-aligned Team"] direction TB DS1("ð Data Scientist"):::ds Others1("ð¥ Other Members<br>(PdM, Designer, Eng, Scrum Master, etc.)"):::others end %% Styles classDef ds fill:#fff9c4,stroke:#fbc02d,color:black,stroke-width:2px,rx:5,ry:5 classDef others fill:#ffffff,stroke:#bdbdbd,color:black,stroke-width:1px,rx:5,ry:5 style SAT1 fill:#f8f9fa,stroke:#dee2e6,stroke-width:2px,rx:10,ry:10 After flowchart TB subgraph SAT2 ["ð¹ Stream-aligned Team"] direction TB Members2("ð¥ Team Members<br>(PdM, Designer, Eng, Scrum Master, etc.)"):::others end subgraph CSub ["âš Complicated Subsystem Team âš"] direction TB DS2("ð Data Scientist"):::ds end CSub == "API (X-as-a-Service)" ===> SAT2 %% Styles classDef ds fill:#fff9c4,stroke:#fbc02d,color:black,stroke-width:4px,rx:10,ry:10 classDef others fill:#ffffff,stroke:#bdbdbd,color:black,stroke-width:1px,rx:5,ry:5 style SAT2 fill:#f8f9fa,stroke:#dee2e6,stroke-width:2px,rx:10,ry:10 style CSub fill:#fff3e0,stroke:#ef6c00,stroke-width:3px,stroke-dasharray: 5 5,rx:10,ry:10 linkStyle 0 stroke:#ef6c00,stroke-width:3px,color:#ef6c00 ã€ã³ã¿ã©ã¯ã·ã§ã³ã¢ãŒããšãããã³ã«ã®ææå çµç¹ãåããããšã§æãæžå¿µãããã®ããããµã€ãåããšã飿ºã³ã¹ãã®å¢å€§ãã§ãããããé²ããããåºæ¬çã«ã¯ X-as-a-Serviceã¢ãŒã ãæ¡çšãã€ã€ãç¶æ³ã«å¿ã㊠ã³ã©ãã¬ãŒã·ã§ã³ã¢ãŒã ã䜿ãåããéçšãšããŠããŸãã åºæ¬æ¹éïŒX-as-a-Service æ¥åžžçãªéçºã»éçšã«ãããŠã¯ãã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ãæäŸãããµãŒãã¹ïŒAPIãããã¥ã¡ã³ãçïŒãã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ãã»ã«ããµãŒãã¹ã§å©çšãã圢ããšããŸãã ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ãšã®é£æºå¢çã«ããããã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ã®äž»ãªè²¬åã¯ä»¥äžã®éãã§ãã å®å®ããAPIã®æäŸãšãSLA/SLOã®ç¶æã å°éçãªããžãã¯ã®é èœãšãå©çšããããã€ã³ã¿ãŒãã§ãŒã¹ã®èšèšã ããã¥ã¡ã³ãã®æŽåïŒã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ãèªåŸçã«å©çšã§ããããã«ããïŒã ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã¯ããã¡ãã¡ã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ã«ãããã©ããªã£ãŠãŸããïŒããšç¢ºèªããããšãªããAPIããã¥ã¡ã³ããåç
§ããŠéçºãé²ããããšãã§ããéçºã¹ããŒããç¶æã§ããŸãã ãã¡ãããAPI仿§æžã ããæãåãã®ãéå¹çãªå Žé¢ïŒæ°èŠæ©èœéçºã倧ããªå€æŽæãªã©ïŒã§ã¯ãåæçãªäŒè°ãäžæçãªã¹ã¯ã©ã ã€ãã³ããžã®åå ãªã©ãéããŠãæè»ã«ã³ã©ãã¬ãŒã·ã§ã³ãè¡ã£ãŠããŸããåºæ¬ã¯ççµåïŒX-as-a-ServiceïŒãä¿ã¡ã€ã€ãå¿
èŠãªæã«ã¯å¯ã«é£æºã§ããæè»æ§ãæãããŠããŸãã ãããã³ã«ã®ææå ãX-as-a-Serviceãããã³ã©ãã¬ãŒã·ã§ã³ããšãã£ãã¢ãŒããå®çŸ©ããŠããå®éã®çŸå Žã§ã¯ããã®ã¿ã¹ã¯ã¯ã©ã£ã¡ã®è²¬åïŒããä»ã¯ã©ã£ã¡ã®ã¢ãŒãã§åãã¹ãïŒããšãã£ãè¿·ããçããã¡ã§ãã ããã§ããããã®å®è¡ãè£å®ãã圹å²ãšããŠãç¹ã«å¯æ¥ã«é¢ãã£ãŠããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ãšã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ã®éã§ãããŒã é飿ºãããã³ã«ããšããããã¥ã¡ã³ããäœæããåæåœ¢æãè¡ããŸããã ãã®ããã¥ã¡ã³ãã«ã¯ãäž»ã«ä»¥äžã®ãããªå
容ãèšèŒããŠããŸãã åããŒã ã®ããã·ã§ã³ãšè²¬åã®å®çŸ© : ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ãšã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ãããããäœã«è²¬ä»»ãæã€ããæèšã èªåŸçã«å®è¡ã§ããæŽ»åãªã¹ã : 飿ºã確èªãªãã§é²ããŠè¯ãã¿ã¹ã¯ãå
·äœçã«ãªã¹ãåïŒäŸïŒå
¬éAPI仿§å
ã§ã®ãªãã¡ã¯ã¿ãªã³ã°ãªã©ïŒã 飿ºãå¿
èŠãªã±ãŒã¹ãšãã㌠: ã³ãã¥ãã±ãŒã·ã§ã³ãå¿
èŠãªå
·äœçãªããªã¬ãŒãšããã®éã®æšå¥šé£çµ¡ææ®µã ãšã¹ã«ã¬ãŒã·ã§ã³ãã¹ : 解決ããªãå Žåã®å€æãããŒã ããããå
·äœçãªãæåŸ
å€èª¿æŽããããã¥ã¡ã³ãåããŠããããšã§ãæ¥ã
ã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããåæžããè¿·ããæžããããšãã§ããŠããŸãã ãããã« çµç¹æ§é ã¯ããã®æç¹ã§ã®ããžãã¹ãã§ãŒãºãšæè¡çãªè€éãã«å¿ããŠé²åãããå¿
èŠããããŸãããã€ãŠã¯ããŒã¿ãµã€ãšã³ã¹çãªèŠçŽ ãå«ãã æ©èœéçºãè¡ããããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã«ããŒã¿ãµã€ãšã³ãã£ã¹ããåšç±ããäœå¶ããšã£ãŠããŸãããããã§ãŒãºã®å€åã«äŒŽããã³ã³ããªã±ã€ãã£ããã»ãµãã·ã¹ãã ããŒã ãšããŠåãåºã圢ãããé©ããç¶æ
ãžãšå€ãããŸããã ä»åã®ãªãã¶ã€ã³ã«ãããããŒã¿ãµã€ãšã³ãã£ã¹ãã¯ããå°éæ§ãçºæ®ãããããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã¯ãããŠãŒã¶ãŒäŸ¡å€ã«åãåããããäœå¶ãæŽãã€ã€ãããŸããç¹ã«ãããŒã¿ãµã€ãšã³ãã£ã¹ãããã¯ãæè¡çãªæ·±æãããããããªã£ãããã³ã³ããã¹ãã¹ã€ãããæžã£ãããšãã声ãäžãã£ãŠãããçµç¹ãšããŠã®å¥å
šæ§ãåäžããŠããŸãã ãã®äºäŸããæ¡å€§ãããšã³ãžãã¢ãªã³ã°çµç¹ã«ãããããŒã èšèšã®åèã«ãªãã°å¹žãã§ãã Weâre Hiring! ã¿ã€ããŒã§ã¯ããŒã¿ãµã€ãšã³ãã£ã¹ããã¯ãããäžç·ã«åãã¡ã³ããŒãåéããŠããŸãïŒ ã«ãžã¥ã¢ã«é¢è« ãè¡ãªã£ãŠãããŸãã®ã§ãèå³ã®ããæ¹ã¯ãã²ãæ°è»œã«ãç³ã蟌ã¿ãã ããïŒ https://product-recruit.timee.co.jp/
ã¯ããã« åæïŒã¢ãŠãã«ã ã«åãåãããããã¯ããšã³ãžãã¢ããšçµç¹æ§é â ãããŒã ããããžãŒãã«åºã¥ãã¹ããªãŒã ã¢ã©ã€ã³ãããŒã â¡ ããããã¯ããšã³ãžãã¢ããšããåšãæ¹ â¢ 2sidesã®é¡§å®¢ã«åãåãè€åãã¡ã€ã³ã®ãããã¯ã ãªãç§ãã¡ã¯ãè¶
人EMããçµç¹ã®åæãšããã®ããããã®ã 圹å²ã®ã¢ããããŒãïŒãå®è¡ãããã蚺æããž æ§é â ïŒèšºæ (Diagnosis) ã æ žå¿ãèŠæ¥µãã ã æ§é â¡ïŒåºæ¬æ¹éãšè¡å (Guiding Policy & Actions) ã ãåãæ¹ãã®ãã¶ã€ã³ ã ãåã®ã¹ãã€ã¯ããçµç¹ã®ããŒããã©ãªãªã«ãã ä»çµã¿ã§æ¯ããïŒAI掻çšãšè©äŸ¡å¶åºŠ â AIã»LLMã«ããã蚺æåãã®ããŒã¹ã â¡ ãã£ãªã¢ã©ããŒãšã³ã³ããã³ã·ãŒã®åèšèš ãŸãšãïŒEngineering Managementããå人ã®ã¹ãã«ããããçµç¹ã®æ©èœããž æªæ¥ã®ãšã³ãžãã¢ãªã³ã°ãããžã¡ã³ãã®ããæ¹ãäžç·ã«æããŠããã ããŸãããïŒ ã¯ããã« ãã®èšäºã¯ Timee Product Advent Calendar 2025 ã®24æ¥ç®ã®èšäºã§ãã æ ªåŒäŒç€Ÿã¿ã€ããŒã§VPoEãã€ãšããŠãããŸãã赀柀 a.k.a changoïŒ @go0517go ïŒã§ãïŒ ãããããïŒããå£çãªã®ã§ã瀟å
ã§ã¯ãVP of Eeyanããªã㊠ãããã åŒã°ããããããŠããŸãã ããŠãã¢ããã³ãã«ã¬ã³ããŒã䜳å¢ã®24æ¥ç®ã ä»åã¯ãç§ã以åç»å£ããå
容ãããŒã¹ã«ãã€ã€ãæ¥å¹Žã®ãEMConf JP 2026ãã«ProposalãšããŠæåºããŠããããŒãã®ãã¡ã®1ã€ã§ãããããŒã ã§ç«ã¡åãããšã³ãžãã¢ãªã³ã°ãããžã¡ã³ããã«ã€ããŠã話ãããŸãã Engineering Managementã«é¢ããããŒããå
容ã¯èªåã«ãšã£ãŠãæ·±ããç§ãã¡ãåžžã«è©Šè¡é¯èª€ããªããæ¢çŽ¢ãç¶ããŠããé åã§ãã ä»åã®ã¢ããã³ãã«ã¬ã³ããŒã§ã¯ããã®ãè§Šãããšãªããšãã»ã³ã¹ããæ ¹åºã«ããææ³ã«ãã©ãŒã«ã¹ããŠæžããããšæããŸãã ãªãããã¡ãã®Proposalã¯æ®å¿µãªããæ¡æãããŸããã§ããæ¶âŠãã§ãããã¿ã€ããŒã¯EMConf JP 2026ã®ãã©ããã¹ãã³ãµãŒãšããŠåè³ããŠãããŸãïŒ åŒç€Ÿã®CTOã§ããå±±å£ a.k.a ZIGOROuïŒ @zigorou ïŒãã¹ãã³ãµãŒã»ãã·ã§ã³ã§ç»å£ããŸãã®ã§ãã¿ã€ããŒã®æè¡æŠç¥ããšã³ãžãã¢ãªã³ã°çµç¹è«ã«èå³ãããæ¹ã¯ããã²äŒå Žã§ZIGOROuã®ã»ãã·ã§ã³ãèããŠãã ããïŒ ããã§ã¯ãæ¥æ¡å€§ããäºæ¥ãšãããã¯ãéçºã®äžã§ç§ãã¡ãæãããã蚺æå»ããšããŠã®ãšã³ãžãã¢ãªã³ã°ãããžã¡ã³ãã«ã€ããŠã話ãããŸãã åæïŒã¢ãŠãã«ã ã«åãåãããããã¯ããšã³ãžãã¢ããšçµç¹æ§é EMã®åœ¹å²ã«ã€ããŠã話ãããåæ®µéãšããŠãããããã¿ã€ããŒã®ãšã³ãžãã¢ãªã³ã°çµç¹ãã©ã®ãããªçµç¹æ§é ã§ãã©ã®ãããªãšã³ãžãã¢åããã£ãŠéçºããŠããããã話ããããŠãã ããã â ãããŒã ããããžãŒãã«åºã¥ãã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã¿ã€ããŒã®éçºçµç¹ã¯ããããŒã ããããžãŒãã®èãæ¹ã«åºã¥ããç¹å®ã®äŸ¡å€ãæäŸããç¶ç¶çãªæµãïŒããªã¥ãŒã¹ããªãŒã ïŒã察象ãšãããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ãã§æ§æãããŠããŸãã ããã¯ã ãšã³ãžãã¢ã ãã§ãªãPdMããã¶ã€ããŒãå«ã6±2åçšåºŠã®ãè·èœæšªæåçµç¹ã ã§ãããDiscoveryããDeliveryãã€ãŸã䟡å€ã®æ¢çŽ¢ãšæ€èšŒããå®éã®éçºããããŠéçšãŸã§ãäžæ°éè²«ã§æ
ããé«éã«ä»®èª¬æ€èšŒã®ãµã€ã¯ã«ãåãããšãç®çãšããŠããŸãã ã¿ã€ããŒã«ãããã¹ããªãŒã ã¢ã©ã€ã³ãããŒã â¡ ããããã¯ããšã³ãžãã¢ããšããåšãæ¹ ãããŠãããã§åããšã³ãžãã¢ã«æ±ããŠããã®ã¯ãåã«æ©èœãäœãã ãã®åœ¹å²ã§ã¯ãããŸãããç§ãã¡ã¯ããããã¯ããšã³ãžãã¢ããšããåšãæ¹ãæ²ããŠããŸãã ããã¯ãã ãããã¯ãã®æäŸäŸ¡å€ãç¶ç¶çã«é«ããããšã§ã客æ§ã®èª²é¡ã解決ãããšã³ãžã㢠ããšå®çŸ©ããŠãããå
šå¡ãã¢ãŠãã«ã ïŒé¡§å®¢ãžã®äŸ¡å€æäŸïŒã«åãåãããšãåæãšããŠããŸãã æäŸäŸ¡å€åäž: æ©èœãäœãããšã§ã¯ãªãã顧客課é¡ã解決ããããšã«è²¬ä»»ãæã€ã è¶å¢æ§: èªåã®å°éé åã«éããããã¡ã€ã³ã圹å²ãè¶ããŠç¥èã远æ±ããã ãªãŒããŒã·ãã: ãHowïŒã©ãäœããïŒãã ãã§ãªãããWhyïŒãªãäœããïŒããWhatïŒäœãäœããïŒãã®æ®µéããé¢äžããã ⢠2sidesã®é¡§å®¢ã«åãåãè€åãã¡ã€ã³ã®ãããã¯ã ããã«éèŠãªã®ããç§ãã¡ãåãåã£ãŠãããããã¯ãã®ç¹ç°æ§ã§ãã ã¿ã€ããŒã¯ãã¯ãŒã«ãŒïŒåãæïŒããšãã¯ã©ã€ã¢ã³ãïŒäºæ¥è
ïŒããšããç°ãªã2ã€ã®é¡§å®¢ïŒ2sidesïŒã«äŸ¡å€ãæäŸãããã©ãããã©ãŒã ã§ããããã®è£åŽã¯è€æ°ã®ããžãã¹ãã¡ã€ã³ã坿¥ã«é£æºããè€åã·ã¹ãã ãšãªã£ãŠããŸãã ãã¹ãããã€ãã®ãããã³ã°ã¢ããªããšããŠãUI/UXãšãšãã«æ³èµ·ããã ãããšãå€ããšæããŸãããå®ã¯ãã®ããã¯ã°ã©ãŠã³ãã«ã¯æ¥µããŠåºç¯ãªæ©èœçŸ€ãååšããŠããŸãã äŸãã°ãããã€ã代衚çãªæ©èœèŠçŽ ãèŠãŠããQRã³ãŒãã«ããåºéå€ãéè¡API飿ºã䌎ã絊äžèšç®ã»æ¯èŸŒåŠçããããŠæ³ä»€å¯Ÿå¿ãå«ãåŽå管çãªã©ãããããã¹ãŠããªããããªéçšäœéšãšè¯ããããã³ã°ãå®çŸããããã«äžå¯æ¬ ãªèŠçŽ ãšããŠçµ±åãããŠããŸãã ã€ãŸããã¿ã€ããŒã®EMã管æããã®ã¯ããè·èœæšªæã§èªåŸçã«åããWhy/Whatããèãããããè€éãªè€åãã¡ã€ã³ã®ã¢ãŠãã«ã ã«ã³ãããããããŒã ããªã®ã§ãã 2sidesã®é¡§å®¢ã«åãåãè€åãã¡ã€ã³ã®ãããã¯ã ãªãç§ãã¡ã¯ãè¶
人EMããçµç¹ã®åæãšããã®ããããã®ã ããŠããããããæ¬é¡ã§ãã äžèšã®ãããªè€éãã€é«æ°ŽæºãªããŒã ãçãããšã³ãžãã¢ãªã³ã°ãããŒãžã£ãŒïŒEMïŒã«ã¯ãã©ã®ãããªèœåãæ±ããããã§ããããïŒ äžè¬çã«èªããããEMã®4ã€ã®ãããžã¡ã³ãé åããèŠãŠã¿ãŸãããã Technology: æè¡çè² åµã®è§£æ¶ãã¢ãŒããã¯ãã£èšèšãçç£æ§åäž People: æ¡çšãè²æãè©äŸ¡ãç®æšèšå®ãã¡ã³ã¿ãªã³ã° Process: éçºããã»ã¹ã®æé©åãã¢ãžã£ã€ã«ã®å®è·µ Product: 顧客課é¡ã®çºèŠããã¡ã€ã³ç¥èãæ³èŠä»¶ã®çè§£ ç¥ããç¥ããã®ãã¡ã«ããããå
šãŠãäžäººã§é«ãæ°Žæºã§ãªãŒãã§ãããè¶
人ïŒã¹ãŒããŒãã³ïŒEMãããçæ³åãšããŠæ±ããŠããŸã£ãŠã¯ããªãã§ããããïŒ ãã¡ãããåãããžã¡ã³ãé åã«ãããŠãã¬ã€ã€ãŒæ§ãé«ãç¶ããããšããå人ã®ãã£ãªã¢ãšããŠè¿œãæ±ããããšã¯éèŠã§ãããç§èªèº«ããããããããšé¡ã£ãŠããŸãã ããããåæã« çµç¹ãšããŠãã®è¶
人çååšãåæãšãããããšãã²ãã¿ããæ¡å€§ããŠããŸããŸãã å
š4é åã§åžžã«100ç¹ã®ãã¬ã€ã³ã°ãã§ãã人æãæ±ããããšã¯ãçŸå®ã«ã¯æ¥µããŠå°é£ã§ãããå人ã®è² è·ãéå°ã«ããŸãããã®çµæãæ¡çšåºæºã髿¢ãŸãããé©åãªäººæãéãŸããªããªããããããŠãäºæ¥ã®æ¥æé·ã«ãšã³ãžãã¢ãªã³ã°çµç¹ãšãã®ãããžã¡ã³ãã远ãã€ããªããšãããçµç¹çãªãã²ãã¿ããçã¿åºãããã®ã§ãã ãªããç¥ããç¥ããã®ãã¡ã«ããããŸã§ã®çæ³ãæ±ããŠããŸãã®ã§ããããïŒ ããããEMãšããè·çš®ã¯åœ¹å²å®çŸ©ãææ§ã«ãªããã¡ãªäžã«ãã¿ã€ããŒã®å Žåã¯å€æ§ãªããã¯ã°ã©ãŠã³ããæã€EMãäžéå
¥ç€Ÿã§å€ãåç»ããã ãç¶æ³ã§ããïŒç§èªèº«ããã®äžäººã§ãïŒãã ãããããããã®æ··æ²ãå人ã®åã§è§£æ±ºããŠã»ããããšããæåŸ
ãå
è¡ããæ¡çšèŠä»¶ãæåŸ
å€ã®äžã«ãç¡æèã®ãã¡ã«ãã®ãã¹ãŒããŒãã³åããæåœ±ããŠããŸãã±ãŒã¹ããããšèããŠããŸãã ç§ãã¡èªèº«ãéå»ãæ¯ãè¿ãããã®ãããªå€æããã£ããšæ¯ãè¿ã£ãŠããŸãã ããšãã£ãŠãçŸå®è§£ãšããŠç¹å®ã®é åãäŸãã°ãPeople Managementãã ãã«åçŽã«çµã蟌ãããšãã§ããŸããã 顧客課é¡ãæ·±ãçè§£ããProductã®èŠç¹ããããŠæé©ãªå®è£
ã倿ããTechnologyã®èŠç¹ãããããæ¬ ãããŸãŸã§ã¯ãããšã³ãžãã¢ãªã³ã°çµç¹ãã®ãããŒãžã£ãŒãšããŠæ¬è³ªçãªèª²é¡è§£æ±ºãã§ããªãããã§ãã åæã«ãäžäººã®äººéã«ãã¹ãŠã®é åã®ãªãŒããæ±ããã°ããããžã¡ã³ãã®äººæäžè¶³ã¯ããé¡èã«ãªããŸãã ããããã ãããããããå
šéšããããšããã®ã¯ãæŠç¥ã§ã¯ãããŸãããããã¯åãªãã顿ïŒWish ListïŒãã§ãã ãè¯ãæŠç¥ãæªãæŠç¥ãã®èè
ããªãã£ãŒãã»Pã»ãã¡ã«ããææããããã«ãæŠç¥ã®æ¬è³ªã¯ãäœããããªããããéžæããããšã«ãããŸãã ã¿ã€ããŒã®ãšã³ãžãã¢ãªã³ã°çµç¹ã§ã¯ããè¶
人EMããšããå人ã®é 匵ãã«é床ã«äŸåããæ§é ããè±åŽããçµç¹ãšããŠæç¶å¯èœãªä»çµã¿ãäœãå¿
èŠããããšå€æããŸããã 圹å²ã®ã¢ããããŒãïŒãå®è¡ãããã蚺æããž ãå
šãŠãããããšãã顿ïŒWish ListïŒããé¢ãããšããç§ãã¡ã®ç®ã®åã«æ®ã£ãåãã¯æç¢ºã§ãã ãã§ã¯ãéããããªãœãŒã¹ã§æå€§ã®ã¢ãŠãã«ã ãåºãããã«ãä»ãäœããããããèª°ãæ±ºããã®ãïŒã è€éã§æ··æ²ãšããç¶æ³ã®äžã§ãç¡æ°ã«ãã課é¡ããæ¬è³ªçãªãæ¥æããèŠæ¥µããããŒã ã®åãããã«éäžãããã èªåã§æãåãããŠå
šãŠã解決ããã®ã§ã¯ãªãïŒãã¡ãããããéèŠãªææ®µã§ãïŒããäœãè§£ãã¹ããããæ£ããå®çŸ©ããããšãããããã®èŠæš¡ã®çµç¹ã«ãããEMã®æå€§ã®æäŸäŸ¡å€ã§ã¯ãªããã ããèãããšããç§ãã¡ã®æéãšãªã£ãã®ããæŠç¥è«ã®åèãè¯ãæŠç¥ãæªãæŠç¥ãã«ãããæŠç¥ã®ã«ãŒãã«ããšããæŠå¿µã§ããã ããã¯ã¿ã€ããŒã®ãããã¯ãéçºçµç¹ã«ãããŠãã°ãã°çšãããããããããæŠç¥ãæ¹éãæ€èšããéã®ãéªšæ Œããšãªã£ãŠãããã¬ãŒã ã¯ãŒã¯ã§ãããç§èªèº«ãã¿ã€ããŒã«ãžã§ã€ã³ããåŸãCTOã®ZIGOROuããæ³šå
¥ããã代衚çãªãšãã»ã³ã¹ã§ãç¬ã ãåèïŒæŠç¥ã®ã«ãŒãã«ãšã¯ã 蚺æ ïŒDiagnosisïŒ: ç¶æ³ãåçŽåããåãçµãã¹ã課é¡ã®ãæ žå¿ããèŠæ¥µããã åºæ¬æ¹é ïŒGuiding PolicyïŒ: 蚺æããã課é¡ã«å¯ŸåŠããããã®ãå
šäœçãªã¢ãããŒãã äžè²«ããè¡å ïŒCoherent ActionsïŒ: æ¹éã«åºã¥ãããªãœãŒã¹ãéäžãããå
·äœçãªã¢ã¯ã·ã§ã³ã ç§ãã¡ã¯ä»ããããããŒã¹ã«ãEMã®åœ¹å²ãããã¬ã€ã€ãŒãšããŠå
šãŠãå®è¡ããããšãããããããŒã ãå®è¡ã§ããããã«ã蚺æããèšèšããããšããžãšã¢ããããŒãããããšããŠããŸãã æ§é â ïŒèšºæ (Diagnosis) ã æ žå¿ãèŠæ¥µãã ã EMã®ç¬¬äžã®è²¬åã¯ãTechnologyãPeopleãProcessãProductã®å
šé åã«ãããŠããäœãåé¡ã®ãæ žå¿ïŒKernelïŒããªã®ãããé«ãè§£å床ã§èŠæ¥µããããšã ãšèããŠããŸãã åã«ã課é¡ãªã¹ãããäœãã®ã§ã¯ãããŸããããéçºã¹ããŒããé
ãããšããçŸè±¡ããã£ããšãããã®çå ã¯æè¡çè² åµãªã®ããæææ±ºå®ãããŒãªã®ãããããšãã¡ã³ããŒã®å¿ççå®å
šæ§ãªã®ãã ç¡æ°ã«ãã課é¡ã®äžãããããããè§£ãã°ç¶æ³ã奜転ãããæ¥æããèŠæãããšããã®èšºæããšã³ãžãã¢ãªã³ã°ã®çŸå Žã§é©åã«è¡ããããšãEMã®éèŠãªåœ¹å²ã ãšèããŠãããŸãã æ§é â¡ïŒåºæ¬æ¹éãšè¡å (Guiding Policy & Actions) ã ãåãæ¹ãã®ãã¶ã€ã³ ã 蚺æã«ãã£ãŠãäœãè¶³ããªããïŒGapïŒããæç¢ºã«ãªãã°ã次ã¯ãããã©ãåãããã ããã§éèŠãªã®ã¯ããåºæ¬æ¹éïŒGuiding PolicyïŒããå®ããããã«åºã¥ãããäžè²«ããè¡åïŒCoherent ActionsïŒãã«èœãšã蟌ãããšã§ãã ãã®ãåãæ¹ãã®éžæè¢ã¯ã決ããŠãEMãé 匵ããããšã ãã§ã¯ãããŸãããããŒã ã®ç¶æ³ã«åãããŠãæé©ãªæã¡æããã¶ã€ã³ããå¿
èŠããããŸãã ãã¬ã€ã€ãŒãšããŠEMãè£ãïŒããªã¬ã3人åã«ãªã...ãïŒ ã¡ã³ããŒã®ã±ã€ãããªãã£ç²åŸãæ¯æŽããïŒè²æã»åŠç¿æ©äŒã®æäŸïŒ çµç¹æ§é ããªããŒãã³ã°ã§è§£æ±ºããïŒããŒã æ§æã®å€æŽïŒ å€éšããã±ã€ãããªãã£ãç²åŸããïŒæ¡çšã»å€éšã®çµç¹ãäŒæ¥ãšã®é£æºïŒ éèŠãªã®ã¯ãèªåãã¹ãŒããŒãã³ã«ãªãããšã§ã¯ãªãã蚺æçµæã«åºã¥ããæé©ãªãæ¹éããéžã³åããè¿·ããªããè¡åãã«ç§»ãããšã§ãã éã«èšãã°ããèªåã¯ãããªãïŒããŒã ãä»çµã¿ã«ä»»ããïŒããšæ±ºããåæ°ãæã€ããšã§ããããŸãã å人ã®äžèœãã«é床ã«äŸåããã®ã§ã¯ãªããããŒã ãšããŠã®ç·åãæå€§åããéãéžã¶ããããä»åãçµãã§ããïŒãããŠè©Šè¡é¯èª€ãæ©ã¿ãªããé²ãã§ããïŒïŒç§ãã¡ã®ãšã³ãžãã¢ãªã³ã°ãããžã¡ã³ãã§ãã ãåã®ã¹ãã€ã¯ããçµç¹ã®ããŒããã©ãªãªã«ãã ã蚺æå»ãã¢ãã«ã«ãããŠã¯ãEMå人ã®ã匱ã¿ãã¯å人ãšããŠã¯ãä»åŸè£åŒ·ããŠããç¹ã§ãããšåæã«ãçµç¹ãšããŠã¯ãè£ãåãã¹ãäœçœãã«ãªããŸãã ç§ãã¡ã¯ãåEMã®ããã¯ã°ã©ãŠã³ãïŒãšã³ãžãã¢ãPdMãã¢ãžã£ã€ã«ã³ãŒãã»ã¹ã¯ã©ã ãã¹ã¿ãŒãªã©ïŒã«ãããã¹ãã€ã¯ïŒçªåºãã匷ã¿ïŒããæè¿ãããããå人ã®ã¹ãã«ã§ã¯ãªããçµç¹ã®ã¢ã»ããããšããŠèããããšããŠããŸãã Tech-oriented EM: æè¡çãªèšºæãæææ±ºå®ã®ãæ§é ç¥ããèšèªåããä»ã®EMã«å
±æããã Product-oriented EM: è€éãªãã¡ã€ã³ãæ³èŠä»¶ã®èªã¿è§£ãæ¹ã圢åŒç¥åããçµç¹å
šäœã®Productçè§£ãåºäžãããã Process-oriented EM ïŒEngineering Operations ManagerïŒ: éçºãããŒãããªããªãŒã®ããã«ããã¯ãå¯èŠåããããŒã éã®åŠç¿éåºŠãšææåçŸæ§ãé«ãããAI掻çšããªããŒãã³ã°èšèšãªã©ãç¶ç¶çæ¹åã®ãµã€ã¯ã«ãä»çµã¿åã ãã¡ãããçŸå®çãªéçšã«ãããŠã¯ããããŒã ãåãçµã課é¡ããšãEMã®åŒ·ã¿ããå¿
ãããããºã«ã®ããã«å®ç§ã«ããããããšã¯éããŸããã ç¹ã«çŸåšã®ã¿ã€ããŒã§ã¯ãEMãç®æšèšå®ãè©äŸ¡ãæ
ãçµç¹äžã®äžé·ãå
ŒããŠããŸããå¿ççå®å
šæ§ãé·æçãªè²æã®èгç¹ãããããããžã§ã¯ãã®éœåã ãã§äžé·ãé«é »åºŠã«å€ããããšã¯æãŸãããããŸããã ããã§éèŠã«ãªãã®ãããEMsïŒEMããŒã ïŒéã§ã®çžäºè£å®ãã§ãã æ
åœããŒã ã®èª²é¡ã«å¯ŸããŠããã®EMã®ã±ã€ãããªãã£ãäžè¶³ããŠããå Žåãä»ã®åŸæãªEMãã¯ãã¹ã§å
¥ã£ãŠæ¯æŽãããå人ã®äžè¶³ããå人ã®åªåãã ãã§åããã®ã§ã¯ãªãããçµç¹ïŒEMsïŒã®ç·åãã§ãã©ããŒããäœå¶ãæ§ç¯ããŠããŸãã ããã«çŸåšã¯ããã¯ãªãŒããªã©ã®åœ¹å²ããããããŠå®çŸ©ãåé åã®ãããžã¡ã³ããããå§è²ã»åæ£ããŠããäœå¶ã«ã€ããŠããCTOãç§ïŒVPoEïŒããããŠçŸå Žã®EMãã¡ãšè°è«ããé²è¡ããŠããŸãã ããã¯ãŸã ãŸã è°è«ãæ¹éãå®ããŠããæäžã§ããŸãã«ããããæšé²ããŠãããããçµç¹ã®äŒžã³ä»£ãã§ããããŸãã äžäººã§ãã«ã¹ã¿ãã¯ãç®æãã®ã§ã¯ãªããEMããŒã å
šäœããããŠçµç¹å
šäœã§ããŒããã©ãªãªãçµã¿ãçžäºã«èšºæãæ¯æŽãåãã ããããããè€éåã»å·šå€§åããçµç¹ã«å¯Ÿããå¯äžã®å¯Ÿæçã ãšä¿¡ããŠããŸãã ä»çµã¿ã§æ¯ããïŒAI掻çšãšè©äŸ¡å¶åºŠ ãã®æ°ããEMåãèãæ¹ã§çµããããªãããã«ãããã€ãã®ãä»çµã¿ãã§ã®å®è£
ã«çŸåšåãçµãã§ããŸãã â AIã»LLMã«ããã蚺æåãã®ããŒã¹ã å
šé åã®ãã£ããã¢ããã人éã®è³ã ãã§è¡ãã«ã¯éçããããŸããããã§ç§ãã¡ã¯AIãã蚺æã¢ã·ã¹ã¿ã³ãããšããŠãã«æŽ»çšããŠããŸãã ã³ãŒãããŒã¹ã®ææ¡: DevinãCursorãçšããæè¡çãªä»æ§ãäŸåé¢ä¿ãé«éã«ææ¡ããã çµç¹ç¶æ
ã®ã¢ãã¿ãªã³ã°: Slackã®publicãªæ¥åãã£ã³ãã«ã§ã®éèŠãªãããã¯ãäŒè©±ã®ãµããªãããŒã å
šäœã®GitHubã®ã¢ã¯ãã£ããã£åŸåãªã©ã客芳çãªæ°å€ææšãåèã«ãšã³ã²ãŒãžã¡ã³ãã®å€åã®äºå
ïŒèšºæææïŒãæç€ºããã â¡ ãã£ãªã¢ã©ããŒãšã³ã³ããã³ã·ãŒã®åèšèš ãã¹ãŒããŒãã³ããæ±ããªã以äžãè©äŸ¡åºæºãå€ããå¿
èŠããããŸãã ãããä»ãŸãã«ç§ãã¡ãææŠããŠããæåç·ãªã®ã§ãããEMã®ãã£ãªã¢ã©ããŒã«ãããŠããå人ã®å®è¡èœåïŒã©ãã ãã³ãŒããæžããããã©ãã ã仿§ã«è©³ãããïŒãã®è©äŸ¡è»žãããã«æ¡åŒµããŠã以äžã®èœåãéèŠããã³ã³ããã³ã·ãŒèšèšãžãšã·ãããé²ããŠããŸãã 蚺æã®æ£ç¢ºã: 課é¡ã®æ žå¿ïŒKernelïŒãã©ãã ãæ·±ãæããããŠãããã ããŒã ãžã®ç§»è²ã»èšèšèœå: ææãç¹å®ã®å人ã«äŸåããããåçŸæ§ã®ããä»çµã¿ãšããŠèšèšã»å®è£
ã§ããŠãããã çžäºè£å®: èªèº«ã®åŒ·ã¿ãçµç¹ç¥ãšããŠéå
ããä»EMãæ¯æŽã§ããŠãããã ãå人ã®ã¹ãã«ãã§ã¯ãªããçµç¹ã®æ©èœããšããŠEMãå®çŸ©ãçŽãããã®è©äŸ¡å¶åºŠã®èšèšããããè¶
人EMãžã®ã¢ã³ãããŒãŒãå®éãããæåŸã®ããŒã¹ã ãšèããŠããŸãã ãŸãšãïŒEngineering Managementããå人ã®ã¹ãã«ããããçµç¹ã®æ©èœããž æ¥æ¡å€§ããçµç¹ãšè€éãªãã¡ã€ã³ã«åãåãäžã§ãç§ãã¡ããã©ãçãããšã³ãžãã¢ãªã³ã°ãããžã¡ã³ãã®çŸåšå°ã¯ã以äžã®4ç¹ã«éçŽãããŸãã 圹å²ã®åå®çŸ© EMã«æ±ããããšã¯ããèªããå
šé åãå®è¡ããããšïŒè¶
人çã«ãªãããšïŒãã§ã¯ãããŸããããããŒã å
šäœã§å
šé åãå®è¡ã§ããããã«ãç¶æ³ãã蚺æãããèšèšãããããšãã§ãã 匷ãã®æºæ³ã¯ãæ§é åã å人ã®éЬåã«é Œãã®ã§ã¯ãªããã蚺æ â åºæ¬æ¹é â è¡åãã®ãµã€ã¯ã«ãåãã課é¡è§£æ±ºãæ§é åã§ããããšãããEMã®åŒ·ãã§ãããšèããŠããŸãã ãåã®ã¹ãã€ã¯ããçµç¹ã®æŠåšã« å
šæ¹äœå®ç§ã§ããå¿
èŠã¯ãããŸãããEMå人ã®ãã¹ãã€ã¯ïŒçªåºããå°éæ§ïŒããæè¿ããè¶³ããªãéšåã¯EMããŒã å
šäœã§çžäºè£å®ããèšèšãé²ããŠããŸãã ãå人ã®ã¹ãã«ããããçµç¹ã®æ©èœããž Engineering Managementããå±äººåããå人ã®ã¹ãã«ã§ã¯ãªããåçŸæ§ã®ãããçµç¹ã®æ©èœããžãšæè¯ãããããšãããããç§ãã¡ã®çŸåšé²è¡åœ¢ã®ææŠã§ãã ãã®æ°ããEMåã®å®è£
ã¯ãŸã éåã°ã§ããã ãããããç§ãã¡ãšäžç·ã«ãã®ææŠã楜ããã§ãã ãã仲éãæ±ããŠããŸãïŒ æªæ¥ã®ãšã³ãžãã¢ãªã³ã°ãããžã¡ã³ãã®ããæ¹ãäžç·ã«æããŠããã ããŸãããïŒ ç§ãã¡ã¯ä»ããããŸã§ã®ãšã³ãžãã¢ãªã³ã°ãããžã¡ã³ããæ§é ãä»çµã¿ã§åçŸæ§æã£ãŠç¶ç¶ããŠãããšãããã£ã¬ã³ãžã®æäžã§ãã ãEMã®ä»äºã¯è² è·ãé«ããŠèŸãããäžäººã®åäººã«æ±ããããèŠçŽ ãå€ãããããšãã課é¡ã«å¯ŸããŠããããŒã ã§æŠããã蚺æãšèšèšã§äŸ¡å€ãåºãããšããã¹ã¿ã€ã«ã確ç«ãããã ã¿ã€ããŒã§ã¯ãšã³ãžãã¢ããžã·ã§ã³ãå
šæ¹äœã§å
šåæ¡å€§æ¡çšäžã§ãïŒãããŠä»åã話ããããŠããã ããEngineering Managerããžã·ã§ã³ãç¹ã«æ³šåããŠããããžã·ã§ã³ã§ãã æ¡çšããžã·ã§ã³ïŒEngineering Manager å°ã話èããŠã¿ããããªããããã®æ°è»œãã§ç§ãã¡ã¯ãšãŠãå¬ããã§ãããã²æ°è»œã«ã話ããããŠãã ããïŒææ¥25æ¥ã®èšäºããæ¥œãã¿ã«ïŒ ãããã¯ãæ¡çšãµã€ãTOP ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã
ã¯ããã« ãã®èšäºã¯ Timee Product Advent Calendar 2025 ã®23æ¥ç®ã®èšäºã§ãã èæ¯ å¶æ¥ãããŒã±ãã£ã³ã°ã®çŸå Žã§ã¯ãé£ç¶å€æ°ãç¹å®ã®ãããå€ã§åºåã£ãŠ2å€ã®KPIãšããŠæ±ãã±ãŒã¹ããããŸããäŸãã°ããæã®è³Œå
¥éé¡ã1äžåãè¶
ãã顧客ãããã€ã€ã«é¡§å®¢ããšå®çŸ©ããããšãã£ãã±ãŒã¹ã§ããããã§ããã®KPIã«å¯Ÿããæœçã®å¹ææž¬å®ãè¡ãéã¯ãããã€ã€ã«é¡§å®¢ãžã®è»¢æçããã¢ãŠãã«ã ã«èšå®ããABãã¹ãã§çŸ€éã®å·®ãæ€å®ããã®ãæãã·ã³ãã«ãªã¢ãããŒããšããŠæããããŸãã å³1: GeminiãããæããŸã(2025/12/17, Gemini 3 Pro) é£ç¶çãªçŸè±¡ã2å€ããŒã¿ãšããŠèгå¯ããå Žåã¯ãé£ç¶çãªæœåšå€æ°ããã³èª€å·®é
ã®ã¢ããªã³ã°ãšãéŸå€ãåºæºãšãã2å€åã«ãã£ãŠå®åŒåã§ããŸããäŸãã°ã誀差é
ã«ããžã¹ãã£ãã¯ååžãä»®å®ããå Žåã«ã¯ããžããã¢ãã«ïŒããžã¹ãã£ãã¯çޝç©ååžé¢æ°ïŒã«åŸããŸã[1][2]ãæ¬ã±ãŒã¹ããããšåæ§ã«èããæœç广ã®ååžã®æšå®ãå¯èœã§ãããã ããããžãã¹äžã®å®çŸ©ãšããŠã¯ãããããããã®2å€ååŠçã¯ãåæã«æ¬æ¥æã£ãŠããæ
å ±ãæšãŠãããšã«ãªããå¹ææž¬å®ã«ãããæ€åºåãäœäžããïŒæ£èŠååžã«åŸã倿°ãäžå€®å€ã§ã«ããããå Žåãåãæ€åºåãåŸãããã«ã¯ãµã³ãã«ãµã€ãºã1.5åå¿
èŠ[3]ïŒãšå ±åãããŠããŸãã ãã®ãããªã±ãŒã¹ã§ã¯ããšã®é£ç¶éã䜵ããŠã¢ãã¿ãªã³ã°ããããšãæšå¥šãããŸãããæ¬çš¿ã§ã¯é£ç¶éã®ãŸãŸã¢ããªã³ã°ããææ³ã®æå¹æ§æ€èšŒã«çŠç¹ãåœãŠãŸãã å
·äœçã«ã¯ã2å€åãããã¢ãŠãã«ã ã2å€ãšããŠæ±ãå Žåãšãé£ç¶éååžãæšå®ããŠããäºåŸçã«KPIãèšç®ããå Žåãšã§ãå¹ææž¬å®ã®æ£ç¢ºããã©ãå€ããããæ¯èŒããŸãã å®éš 1.ååžã®ä»®å®ãæ£ããäžå詊è¡ã§ã®æ¯èŒ ä»®æ³ã®ECãµãŒãã¹ãèããã売äžã1äžå以äžãããã€ã€ã«é¡§å®¢ãšã¿ãªãã顧客ã®ãã€ã€ã«çãæ¹åããæœçãABãã¹ãããç¶æ³ãæ³å®ããŠãµã³ãã«ããŒã¿ãäœæããŸããã å
·äœçã«ã¯ããé賌å
¥è
ïŒ0åïŒããšã賌å
¥è
ïŒå¯Ÿæ°æ£èŠååžã«åŸã売äžïŒããæ··åšãã売äžååžãä»®å®ãã以äžã®ãã©ã¡ãŒã¿p, ÎŒ, Ïã®ããšãåã°ã«ãŒãã§500顧客åãã€äœæããŸããã ãã©ã¡ãŒã¿ Control Treatment 賌å
¥ç p 0.50 0.53 察æ°å¹³å Ό 8.0 8.20 å¯Ÿæ°æšæºåå·® Ï 1.0 1.0 ãã®ãšããåãµã³ãã«ããŒã¿ãåŸãçã®çµ±èšãšæœç广ã¯ä»¥äžã®ããã«ãªããŸãã ææš Control Treatment 广 æåŸ
å£²äž Â¥2,457 Â¥3,182 +Â¥724 ãã€ã€ã«ç 5.65% 8.28% +2.62pt 次ã«ããµã³ãã«ããŒã¿ã«å¯ŸããŠä»¥äžã®2ã€ã®ææ³ã§ãã€ã€ã«é¡§å®¢çã«å¯Ÿããå¹æãæšå®ããçã®æœç广ãåºæºãšããŠæ¯èŒããŸããã ã¢ãŠãã«ã 2å€å: 売äžã1äžå以äžãåŠãã®ãã©ã°ãç«ãŠããã®æ¯çã®å·®ãçŽæ¥æ¯èŒããã ã¢ãŠãã«ã é£ç¶+ã©ãã«äºåŸèšç®: çã®å°€åºŠé¢æ°ãçšããŠå£²äžéé¡ã®ååžãæšå®ããäºåŸååžãããã€ã€ã«é¡§å®¢ã®å®çŸ©ã§ããã売äžã1äžå以äžããè¶
ãã確çãèšç®ããŠå·®ãæ¯èŒããã 2.ååžã®ä»®å®ãæ£ããè€æ°å詊è¡ã§ã®æ¯èŒ ããŒã¿ãåŸãååžã®ãã©ã¡ãŒã¿ã以äžã®ç¯å²ã§ã©ã³ãã ã«å€åãããŠäœæããªããããã®ä»ã¯1ã®èšå®ãèžè¥²ããå®éšã100åç¹°ãè¿ããŸããããã®ããã§ã2ã€ã®ææ³éã§æž¬å®ãããå¹æã®æ£ç¢ºããæ¯èŒããŸããã é
ç® å€ è³Œå
¥ç p 0.6ã0.8 賌å
¥ç p ãžã®å¹æ +0.02ã+0.10 察æ°å¹³å Ό 7.9ã8.2 察æ°å¹³å Ό ãžã®å¹æ +0.05ã+0.20 å¯Ÿæ°æšæºåå·® Ï 0.7ã1.1 3.ååžã®ä»®å®ã誀ã£ãŠããè€æ°å詊è¡ã§ã®æ¯èŒ 2.ãšåæ§ã®æé ã§ãµã³ãã«ããŒã¿ã20åäœæããåããŒã¿ã«å¯ŸããŠ3éãã®å°€åºŠé¢æ°ïŒå¯Ÿæ°æ£èŠååžã»ã¬ã³ãååžã»ãã¬ãŒãååžïŒãçšããå¹ææž¬å®ããããã宿œããŸããããã®ããã§ãåå°€åºŠé¢æ°éã§æž¬å®ããå¹æã®æ£ç¢ºããæ¯èŒããŸããã çµæ 1.ååžã®ä»®å®ãæ£ããäžå詊è¡ã§ã®æ¯èŒ 2ã€ã®ææ³éã§ã®çµæã®å·®ãå³2ã«ç€ºããŸãã å³2: 2å€åããªãã»ããååžã®å±±ãçå€ã«è¿ããä¿¡çšåºéã®å¹
ãçãã 2ã€ã®ææ³ã¯ã©ã¡ããçã®å¹æãã»ãŒæããŠããŸããããã¢ãŠãã«ã é£ç¶+ã©ãã«äºåŸèšç®ãææ³ïŒã°ã©ãæ©è²ïŒã¯çã®å¹æã§ãã+2.62ptä»è¿ã«éãååžã§ããŒã¯ããããçå€ã«è¿ãå¹æãæ¯èŒçé«ãç¢ºä¿¡åºŠã§æããŸããã 2.ååžã®ä»®å®ãæ£ããè€æ°å詊è¡ã§ã®æ¯èŒ 2ã€ã®ææ³ãç¹°ãè¿ãããšããæž¬å®ãã广ã®çå€ã«å¯Ÿããå·®ã®æ¯èŒãå³3ã«ãååžã®å¹
ã®åºãã®å·®ãå³4ã«ç€ºããŸãã å³3: 2å€åããªãã»ããå¹³åçã«ååžã®å±±ãçå€ã«è¿ãã å³4: 2å€åããªãã»ããå¹³åçã«ä¿¡çšåºéã®å¹
ãçãã ãã¢ãŠãã«ã é£ç¶+ã©ãã«äºåŸèšç®ãææ³ã®ã»ããå¹³åçã«çå€ã«è¿ãå¹æãæšå®ããŸããã 3.ååžã®ä»®å®ã誀ã£ãŠããè€æ°å詊è¡ã§ã®æ¯èŒ ãã¢ãŠãã«ã é£ç¶+ã©ãã«äºåŸèšç®ãææ³ã«ã€ããŠãå°€åºŠé¢æ°ãå€ãããšã枬å®ãã广ã®çå€ã«å¯Ÿããå·®ã®å€åãå³5ã«ç€ºããŸãã å³5: å°€åºŠé¢æ°ã®åœãŠã¯ãŸããæªãã»ã©çã®å¹æã«å¯Ÿãããã€ã¢ã¹ãå¢å ããã å°€åºŠé¢æ°ãšããŠçã®ååžãšç°ãªãååžãä»®å®ããå ŽåãåœãŠã¯ãŸããæªãã»ã©æž¬å®ãã广ãçå€ããé¢ããåŸåãããããããããã¢ãŠãã«ã 2å€åãææ³ãšæ¯èŒããŠæ£ç¢ºããæªåããŸããã çµè« é£ç¶éã2å€åããKPIã«å¯ŸããŠã¯ãBeta-Binomialã¢ãã«ãçšãã2å€KPIã«å¯Ÿããå¹ææž¬å®ããè€éãªååžä»®å®ãå¿
èŠãšããªãããã¹ããªããŒã¹ã©ã€ã³ãšããŠæ¡çšã§ããŸãã ããé«ãæ€åºåã远æ±ãããå Žåãé£ç¶éã®ãŸãŸååžãã¢ããªã³ã°ããŠå¹ææž¬å®ããäºåŸååžããKPIãåèšç®ããã¢ãããŒããæå¹ãªéžæè¢ãšãªãããŸãã ãã ã誀ã£ãååžãä»®å®ãããšé广ãšãªããããWAICã«ããã¢ãã«éžå®ãéŸå€åšèŸºã®é©å床ã®ç®èŠç¢ºèªãªã©ãå³å¯ãªã¢ãã«éžå®ãå¿
èŠã§ãã åèæç® [1] Greene, W. H. (2003). Econometric Analysis (5th ed.), pp. 665-669. [2] C. M. ãã·ã§ãã (2007). ãã¿ãŒã³èªèãšæ©æ¢°åŠç¿ äž (å
ç° æµ© ä» èš³). [3] Cohen, J. (1983). The cost of dichotomization. Applied Psychological Measurement, 7 (3). ãããã« ã¿ã€ããŒã§ã¯ããŒã¿åæãéããŠãããã¯ãã®æé·ãæ¯ããã¡ã³ããŒãåéããŠããŸãããèå³ã®ããæ¹ã¯ãã²ã話ãããŸãããïŒ ãããã¯ãæ¡çšãµã€ãTOP ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã
ããã«ã¡ã¯ãã¿ã€ããŒQAãšã³ãžãã¢ã®ç¢å°»ã§ãã ãã®èšäºã¯ Timee Advent Calendar 2025 ã·ãªãŒãº1ã®23æ¥ç®ã®èšäºã§ãã ãã¢ããã³ãã«ã¬ã³ããŒããšããã°ããªã¹ãæã®åŸ
éç¯ã§ãããå®ã¯ç§ãå
ç¥äž»ïŒç¥è·ïŒ ãšããã¡ãã£ãšå€ãã£ãçµæŽãæã£ãŠããŸãã ãç°æåŸãã¢ããã³ãã«ã¬ã³ããŒãæžããŠããã®ãïŒããšå¿é
ãããæ¹ããããããããŸãããããããæ¥æ¬ã®ç¥éã«ã¯ãå
«çŸäžïŒãããããïŒã®ç¥ããšããããããããã®ã«ç¥æ§ãèŠåºãæã®æ·±ãæŠå¿µããããŸããã¯ãªã¹ãã¹ãæ£æãç¥ãæ¥æ¬äººã®ç²Ÿç¥æ§ã«ãããŠããã®ããã¯ããã°ããŸããæè¡ã®ç¥ã
ã«æè¬ãæ§ãããç¥ããã®äžç°ãšæããã°ãäœãåé¡ã¯ãããŸããïŒã»ããšã«ïŒïŒã ããŠã仿¥ã¯ãããªç°è²ã®çµæŽãæã€ç§ãã ç¥ç€Ÿç¥åŒãšãœãããŠã§ã¢å質ä¿èšŒïŒQAïŒã®é©ãã¹ãå
±éç¹ã ã«ã€ããŠãå°ãããã¢ãã¯ã«èªããããšæããŸãã ç¥ç€Ÿã¯ã巚倧ãªã¬ã¬ã·ãŒã·ã¹ãã ã ç¥è·ãããšã³ãžãã¢ã«è»¢èº«ããŠæåã«æããããšãããã¯ããã£ãŠããããšãæ¬è³ªçã«åãã ããšããè¡æã§ããã ç¥ç€Ÿã«ã¯ãç¥åŒïŒããããïŒããšãã峿 Œãªãããã³ã«ãååšãããåŒæ¬¡ç¬¬ããšããããã°ã©ã ãããããç¥è©ïŒã®ããšïŒããšãã仿§æžãååšããŸããããããç·»å¯ã«çžäºäœçšãããã°ïŒäžäœæ³ïŒãªãå·ãè¡ãããããšã§ãåããŠãç¥ãããšããã·ã¹ãã ãæ£åžžçšŒåïŒãããã€ïŒãããŸãã ç§ãQAãšã³ãžãã¢ãšããŠæ¥ã
ã·ã¹ãã ã«ç¥ã£ãŠãããå¹³ç©ãã¯ãç¥äž»æä»£ã«ç¥ã£ãŠãããå®å¯§ããšãæ§é çã«å
šãåããã®ãªã®ã§ãã 1. ãç¥ïŒã¯ãïŒãžããšããããã°ãïŒã±ã¬ã¬ãé€å»ãããªãã¡ã¯ã¿ãªã³ã° ç¥éã«ã¯ ãã±ã¬ã¬ïŒç©¢ã/æ°æ¯ãïŒã ãšããæŠå¿µããããŸããããã¯çœªãç©¢ããæ°åãæ¯æžããç¶æ
ãæããŸãããããå
ã®æž
æµãªç¶æ
ïŒããã¹ãå§¿ïŒã«æ»ãã®ããç¥ïŒã¯ãïŒãžãã§ãã ã·ã¹ãã éçºã«ãããããã°ãããæè¡çè² åµãããããã¯ãäžå®å®ãªãã¹ãããŒã¿ãããããã¯ãŸãã«ã·ã¹ãã ã«ããããã±ã¬ã¬ãã§ãã ä¿®ç¥ïŒãã
ã°ã€ïŒïŒ ç¥åã®æåã«è¡ããç¥ãã¯ãæ¬çªç°å¢ïŒç¥å ŽïŒãžç§»è¡ããåã® åæååŠç ã ã¹ã¢ãŒã¯ãã¹ã ã§ãã 倧ç¥ïŒããã¯ããïŒïŒ 宿çã«èç©ãã眪穢ããç¥ãè¡äºã¯ã宿ç㪠ãªãã¡ã¯ã¿ãªã³ã° ãã®ãã®ã§ãã ãç¥ãžãã«ãã£ãŠå Žãã¯ãªãŒã³ã«ããªããã°ãã©ããªã«çŽ æŽãããç¥è©ïŒæ©èœïŒãç¥æ§ïŒã¹ããŒã¯ãã«ããŒïŒã«ã¯å±ããŸãããQAããã°ãèŠã€ãåºãä¿®æ£ãä¿ãè¡çºã¯ãã·ã¹ãã ããæž
æµãã«ä¿ã€ããã®ç¥èãªããã»ã¹ãªã®ã§ãã 2. ç¥åŒãã³ãŒãã§çè§£ãã ç¥ç€Ÿã®ååŒã¯ãã©ãã¯ããã¯ã¹ã«èŠããŸãããå®ã¯éåžžã«å
ç¢ãªã¢ãŒããã¯ãã£ã§èšèšãããŠããŸãã ããã§ã¯ãç¥è·ãå¥ä»ãããå®¶å
å®å
šç¥é¡ç¥ããããããŠãšã³ãžãã¢ã®çæ§ã«éŠŽæã¿æ·±ãã³ãŒãã«çœ®ãæããŠç޹ä»ããããšæããŸãã 身äœçãããã³ã«ïŒãé²å·Šéå³ããšããã³ãŒãã£ã³ã°èŠçŽ ã³ãŒãã«å
¥ãåã«ãããã¢ãã¯ãªä»æ§ã®è©±ããããŠãã ããã ç¥è·ãç¥å Žãæ©ããšãã ãé²å·Šéå³ïŒãããããããïŒã ãšãã峿 Œãªã«ãŒã«ããããŸãããé²ããšãã¯å·Šè¶³ãããéããšãã¯å³è¶³ããããšããæ±ºãŸãã§ãã ãã©ã£ã¡ã§ãããã ãããšæããããããããŸãããããã㯠ããªãã¬ãŒã·ã§ã³ãã¹ã«ããé害ããé²ãããã®ç©ççãªå¶çŽ ã§ãã äžäœïŒç¥åïŒã«è¿ãè¶³ã軞ã«ããããšã§ãäœã®åããå®å®ããç¥äž»å士ãã¶ã€ãã£ããïŒã³ã³ããªã¯ãïŒã転ãã ãïŒã¯ã©ãã·ã¥ïŒãç¥æ§ã«èäžãåãããïŒèŠæ±å®çŸ©ããã®éžè±ïŒãããªã¹ã¯ãæå°åããŠããŸããç¥åŒãšã¯ã 人éã®èº«äœåäœã«å®è£
ãããã³ãŒãã£ã³ã°èŠçŽ ãªã®ã§ãã Rubyã«ããåŒæ¬¡ç¬¬ã®å®è£
ã§ã¯ãç¥ãã®é²è¡è¡šã§ãããåŒæ¬¡ç¬¬ããRubyã®ã³ãŒãã«èœãšã蟌ã¿ãŸãã åæã®ããã»ã¹ãšã³ãŒãã®ããžãã¯ãå®å
šã«1察1ã§å¯Ÿå¿ããŠããç¹ã«ã泚ç®ãã ããã ãåæãå®¶å
å®å
šç¥é¡ç¥ åŒæ¬¡ç¬¬ åé²ïŒããããïŒïŒç¥å Žãžå
¥ã ä¿®ç¥ïŒãã
ã°ã€ïŒïŒå¿èº«ãç¥ãæž
ãã ç®é¥ïŒããããïŒïŒãäŸãç©ãæ§ãã ç¥è©å¥äžïŒã®ããšãããããïŒïŒé¡ãäºãç³ãäžãã çäž²æç€ŒïŒããŸããã¯ãããïŒïŒæç€Œãã æ€é¥ïŒãŠã£ããïŒïŒãäŸãç©ãäžãã éäžïŒãããïŒïŒç¥å Žããéã ãã³ãŒããKanaiAnzenService.rb class KanaiAnzenService include ShintoProtocols # ç¥äºã¯äžå¯åãªäžé£ã®åŠçã§ããããããã©ã³ã¶ã¯ã·ã§ã³ãšããŠæ±ã def execute ( devotee :) ActiveRecord :: Base .transaction do begin # 1. åé²ïŒããããïŒ # â»Linter: é²å·Šéå³ãããã³ã«ã«æºæ ããããš enter_shrine(devotee, step_strategy : :shin_sa_tai_u ) # 2. ä¿®ç¥ïŒãã
ã°ã€ïŒïŒåæåã»ã¯ãªãŒã³ã¢ãã # â»ãããæéèŠãç©¢ãïŒBug/Dirty DataïŒãæ®ã£ãŠãããšåŸã®åŠçã¯å
šãŠç¡å¹ unless perform_purification( target : devotee, level : :strict ) raise UncleannessError , " ç¥ãæž
ããäžååã§ããååŒãç¶è¡ã§ããŸããã " end # 3. ç®é¥ïŒããããïŒïŒãªãœãŒã¹ããŒã # äŸåé¢ä¿é ïŒç±³âé
âå¡©âæ°ŽïŒã«ããŒãããªããšãšã©ãŒã«ãªã offer_shinsen( type : :sake_and_food , order : :strict ) # 4. ç¥è©å¥äžïŒã®ããšãããããïŒïŒã³ã¢ããžãã¯å®è¡ # èšéãã©ã¡ãŒã¿ãç¥çãžéä¿¡ invoke_norito( type : :kanai_anzen , target : devotee) # 5. çäž²æç€ŒïŒããŸããã¯ãããïŒïŒãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ # ãŠãŒã¶ãŒïŒåæè
ïŒèªèº«ã«ããã³ãããæäœ guide_tamagushi_worship(devotee) # 6. æ€é¥ïŒãŠã£ããïŒïŒãªãœãŒã¹è§£æŸ withdraw_shinsen rescue UncleannessError => e # ç°åžžç³»ïŒååŒã®äžæãåæµåïŒFix & Re-testïŒãå¿
èŠ handle_kegare(e) raise e ensure # 7. éäžïŒãããïŒïŒããã»ã¹çµäº # æå倱æã«é¢ããããæåŸã¯é宀ãã exit_shrine end end end end transaction ãããã¯ã§å²ãã§ããã®ããã€ã³ãã§ãããç¥ãã«å€±æãããŸãŸç¥è©ã ãèªãã§ããããã¯ååŒãšããŠæç«ããŸããïŒã³ããããããŸããïŒãå®éã®ç¥ãã§ãããŒã«ããã¯ïŒããçŽãïŒãããŸããACIDç¹æ§ãæ±ããããã®ã§ãã 3. ç¥è©ã®ä»æ§å®çŸ©ïŒGherkin 次ã«ãç¥åã®æ žãšãªããç¥è©ïŒã®ããšïŒãã§ãã ç¥è©ã¯ãã誰ãããã©ãããç¶æ
ã§ããäœãããã°ããã©ããªãããã宣èšãããã®ã§ããããã¯ãæ¯ãèãé§åéçºïŒBDDïŒã«ããã Gherkinèšæ³ ãã®ãã®ã§ãã ãå®¶å
å®å
šãã®ç¥è©ã®åæãšããããGherkinã«ç¿»èš³ãããã®ã䞊ã¹ãŠã¿ãŸãã ãåæã»Gherkin察å¿ã Feature: å®¶å
å®å
š (Family Safety) In order to å¹³ç©ç¡äºãªç掻ãéããã As a æ°å/åŽæ¬è
I want to ç¥ã®å è·ãåŸãŠçœããé²ã Scenario: ç¥ãæž
ããããç¶æ
ã§ç¥é¡ãè¡ã # ãåæãæããŸããçãïŒãããŸããããããïŒXXç¥ç€Ÿã®å€§åïŒãããŸãïŒã« # ãæå³ãèšèã«ããã®ãçãå€ããXXç¥ç€Ÿã®ç¥æ§ã®åŸ¡åã«ãŠ Given ã¿ãŒã²ããç°å¢ã¯ "XXç¥ç€Ÿæ¬çªç°å¢" ã§ãã # ãåæãå®®åž æ°å æã¿æã¿ãçœãïŒãããã¿ãããã¿ããŸããïŒ # ãæå³ãå®®åžã®[æ°å]ãã謹ãã§ç³ãäžããŸã And å®è¡ãŠãŒã¶ãŒ(Actor)㯠"èªå®ç¥è·" ã§ãã # ãåæãæ€ã®æ°åïŒãããïŒâ¯â¯ã®å®¶æïŒãããïŒäžå # ãæå³ããã®æ°åã§ãã[äœæ][æ°å]ã®å®¶æå
šå¡ã And 察象ãªããžã§ã¯ã㯠"æ°å[äœæ][æ°å]ã®Familyã¯ã©ã¹å
šã€ã³ã¹ã¿ã³ã¹" ã§ãã # ãåæãéã¡ç¯ãäºç¡ã çœãè§Šããäºç¡ã # ãæå³ãéã¡ãç¯ãããšãªããçœé£ã«éãããšããªã When "HumanError" ããã³ "ExternalDisaster" ã€ãã³ããçºçããªãæ¡ä»¶ãé©çšã # ãåæãå€ã®å®ã æ¥ã®å®ãã«å®ãæµã¿çµŠã # ãæå³ãæŒãå€ãå®ãæµãã§ããã ã And "24/365" ã®ç£èŠäœå¶(Protection)ãæå¹åã # ãåæãå¹³ãããå®ããã å«ã®ä»£ã«è³ããŸã§ # ãæå³ãå¹³ç©ç¡äºã«ãåå«ã®ä»£ã«è³ããŸã§ Then ã·ã¹ãã 皌åç¶æ³ã¯ "å¹³ãããå®ããã(Stable)" ã§ããããš And ããŒã¿æ°žç¶æ§ã¯ "å«ã®ä»£(LongTerm)" ãŸã§ä¿èšŒãããããš # ãåæãå®¶éïŒãããã©ïŒé«ãåºã ç«ã¡æ ããã絊ãžãš æã¿æã¿ãçœã # ãæå³ãå®¶ããŸããŸãç¹æ ããŸãããã«ãšã謹ãã§ç³ãäžããŸã And "å®¶é(BusinessValue)" ã¯å³è©äžããã«ã¹ã±ãŒã«ããããš ãèšéïŒããšã ãŸïŒããšã¯ãèšèã«ããããšãçŸå®ã«ãªããšããä¿¡ä»° ã§ããããšã³ãžãã¢ãªã³ã°ã«ãããŠã ãã³ãŒãïŒèšèªïŒã«ããããšãå®éã®æåã«ãªãã ãšããç¹ã¯å
šãåãã§ãã æ£ç¢ºãªèšèïŒã³ãŒãïŒã§èšè¿°ããªããã°ãã·ã¹ãã ã¯æå³éãã«åããŸããã 4. åŒå¹Žé·å®®ãšããåã®ãå€§èŠæš¡ãªãã¬ãŒã¹ã ãšã³ãžãã¢ã®äžçã§ã¯ãå€§èŠæš¡ãªã·ã¹ãã ãªãã¬ãŒã¹ã®ããšãåè«äº€ããã«ãåŒå¹Žé·å®®ïŒããããããããïŒããšåŒã¶ããšããããŸãã äŒå¢ç¥å®®ã§20幎ã«äžåºŠè¡ããããç€Ÿæ®¿ãæ°ããå»ºãŠæ¿ããäžå€§ãããžã§ã¯ãã®ããšã§ããã å®ã¯ãããç¥éçãªèгç¹ã§ãæå³ã»ç®çãå®å
šã«äžèŽããŠããŸãã åŒå¹Žé·å®®ã®çã®ç®çã¯ã建ç©ãæ°ããããããšã ãã§ã¯ãããŸããã ã宮倧工ã®ç¥èãšæè¡ã®ç¶æ¿ã ãããæ¬è³ªã§ãã 20幎ãšãããµã€ã¯ã«ã¯ãããã©ã³ããè¥æãžæè¡ãç¶æ¿ããã®ã«æé©ãªæéïŒäžä»£äº€ä»£ã®æéïŒãšããŠèšèšãããŠããŸãã ã·ã¹ãã ãåãã§ããã©ããªã«å
ç¢ãªã³ãŒããããããä¿å®ããæè¡è
ãããªããªãã°ïŒå±äººåããã°ïŒãããæœã¡æãŠãŸãã ã³ãŒããæžãçŽããæè¡ã¹ã¿ãã¯ãæ°ããããããšã¯ãã·ã¹ãã ãšãããç¥ããè¥è¿ãããæè¡ãšãããäŒçµ±ããæ¬¡äžä»£ãžç¶æ¿ããããã®ãèãªãå¶ã¿ãªã®ã§ãã çµã³ã«ä»£ããŠïŒãå¹³ãããå®ããããã®ç¥ãã蟌ã㊠ç¥éã®ç¥è©ã«ããç»å Žãã ãå¹³ïŒããïŒãããå®ïŒããïŒãããã ãšããèšèããããŸãã ããã¯ã波颚ãç«ãããå¹³ç©ã§ããããšããé¡ãèšèã§ãã ç§ãQAãšã³ãžãã¢ãšããŠãªãªãŒã¹çŽåã«é¡ãããšãããã¯æ°æ©èœã®è¯ã
ããæåãããå
ã«ããã·ã¹ãã ãã¯ã©ãã·ã¥ããããŠãŒã¶ãŒã«ãšã£ãŠåœããåã®æ¥åžžïŒå¹³ç©ïŒãå®ãããŸãããã«ããšããç¥ãã§ãã ããããç¥äž»ã®ç¥ãã¯ãç¥é Œã¿ãã§ã¯ãããŸããã æé€ãããå ŽãæŽããèº«ãæž
ãïŒãã¹ãããïŒãäœæ³ã極ããïŒãã°ãä¿®æ£ããïŒäžã§ãæåŸã®æåŸã«æ§ããã®ãç¥ãã§ãã ã人äºãå°œãããŠå€©åœãåŸ
ã€ãããã®ããã»ã¹ãããå質ä¿èšŒã®æ¬è³ªã§ãããããã¯ãç¥ããã®æºåãšäœãå€ããããªãã®ã§ãã ä»å¹Žãæ®ãããããšãªããŸããã ã¢ããã³ãã«ã¬ã³ããŒãšãããç¥ãããéããŠãçæ§ãšç¥èŠïŒïŒïŒãå
±æã§ããããšãå¬ããæããŸãã æ¥ãæ°çïŒããããŸïŒã®å¹Žããçæ§ãããŠçæ§ã®éçºããã·ã¹ãã ã«ãšã£ãŠããã°ãªãæž
æµãªãã®ã§ããã 匥æ ïŒããããïŒ ã«æ ãã å¹³ãããå®ããã ãããããšããå¿ãããç¥å¿µç³ãäžããŸãã ã¿ã€ããŒã§ã¯äžç·ã«åã仲éãåéããŠããŸãããèå³ãããã°ãã²ã話ãããŸãããïŒ ãããã¯ãæ¡çšãµã€ãTOP ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã
ãã®èšäºã¯ Timee Product Advent Calendar 2025 ã®22æ¥ç®ã®èšäºã§ãã ã¯ããã« ããã«ã¡ã¯ïŒkazzhiraãšç³ããŸããã¿ã€ããŒã§ãããã¯ããšã³ãžãã¢ãšããŠåããŠããŸãã ãã®èšäºã§ã¯ãAIãšãŒãžã§ã³ãéçºãããŒã ã«å®çãããããšå¥®éããã¹ããŒãªãŒãšãããã§åŸãåŠã³ãèªãããšæããŸãã ãã£ãŠãã®èšäºã¯AIã®æè¡è§£èª¬ã§ã¯ãããŸããã ãAIæšé²ããšããçãã®ãªã課é¡ã«çŽé¢ããŠç©ºåããããšã³ãžãã¢ããã©ã®ããã«ããŠä»äºãåã«é²ããã³ããæŽãã ã®ããèšé²ãããã®ã§ãã äœããæšé²ããç«å Žã®æ¹ã«ãšã£ãŠåŠã³ãå±ã¿ã«ãªãã°ãšæããå·çããŠããŸãã èæ¯ ããŒã ã¡ã³ããŒã¯å
šå¡ããããã¯ããšã³ãžãã¢ã§ãAIæä»£ãããåããéçºçµéšããããŸãã äž»ã«ããã³ããšã³ããããã¯ãšã³ããAndroidã®ã±ã€ãããªãã£ããããŸãã CursorãClaude CodeãDevinãGitHub CopilotãGeminiãåã
人ã®å€æã§å©çšå¯èœã§ãã ãããã¯ãçµç¹ã§ã¯AI掻çšãé²ãã§ããã ç§ããAI掻çšãé²ããŠçç£æ§ãäžãããããšãã匷ãã¢ãããŒã·ã§ã³ããããŸããã äžåžããããã£ã³ã¹ãããã ããã®ã§ãå³ããã£ãŠãããŸãïŒããšæšé²ãããŠããããšã«ã æšé²ã§è©Šè¡é¯èª€ãã3ã¶æéã®è©± ãããŸã§ç§ã¯éçºæ¥åã®éè¡ãå人ã§çç£æ§ãäžããåãçµã¿ãçæçãªçµç¹éå¶ãçµéšããŠããŸããã ä»ååŒãåããAIæšé²ã¯ãããŒã å
šäœãã¹ã³ãŒããšããäžé·æã®çµç¹çãªåãçµã¿ã§ãã ãã®ã¹ã³ãŒãã§ã®åãçµã¿ã§æåäœéšãå°ãªããç§ã«ãšã£ãŠæ°ããªææŠã§ããã åœåã®ç¶æ³ãæŽçãããšãçµç¹ãšããŠã¯Tipsã¯è»¢ãã£ãŠãããã®ã®ãAI掻çšã®ç¶æ³ã¯åã
人ã«éããŠããŸããã AIã®æè¡é²åã¯è¿å¹Žç®ãŸãããããAIãäžæ žã«ã¯ãŒã¯ãããŒãçµãã ããµãŒãã¹ãäœã£ãŠãããã«é³è
åããŠããŸããªã©ãäžç¢ºå®æ§ãé«ãé åã§ãã ãã®ç¶æ³ãèªèãã€ã€ãæ¶ã
ãšãããŸãŸã2é±éãéããŸãããããã身åããåããŠããªãç¶æ
ã ã£ãã®ã§ãããã®ãšãã®è¡åã®ã«ãŒãããŸãšãããšã æšé²ã£ãŠå
·äœçã«ã©ãããã®ïŒèªåã®äžã§è¯ããããšæã£ãŠããããšãåã«åºããã£ãŠããšïŒ ãã¬ã¹ãããŠãå
±éé
ããŸãšãã⊠çµå±ããã§äœã«ãªãã®ïŒAI掻çšãä»ããé²ãã§ããã£ãŠã©ãããç¶æ
ïŒ ä»æ¯ãè¿ããšãçŠãããå®å
šã«ç©ºåãããŠããŸããã AIéçºæšæºã®äœæãšããœãŒã é ãæ©ãŸããŠãããã¡ã«æéãçµéããèªåèªèº«ã®ã¢ãããŒã·ã§ã³ãäžãã£ãŠããããšã«æ°ã¥ããŸããããã®ããšãäžåžã«çžè«ãããšãããç確ãªãã£ãŒãããã¯ãããããŸããã ãæ
å ±åéãšåæãè¶³ããŠããªããïŒæèš³ïŒ ãããšããŸããã ããŒã ã«ã¯æ
å ±ããããŸãããåœç¶ãæ
å ±åéãå¿
èŠã§ãã ç§ã¯ããã¯ããã°ãæäºãã¿ãçºãããããæå
ã§è©Šãããã詊ããã«çµãã£ãŠããŸã£ããããŠããç¶æ
ã§ããã ããªãããã®ãããã©ãããã®ãããããŒã ã«è
¹èœã¡ãããã ãã®ææãã èªåèªèº«ã®ç¢ºåºããèšèãæã£ãŠããªãã£ãã®ã§ãã ãã®æ¥ããç§ã¯æ
å ±ãããéããGeminiãšçžè«ããªããå
å®¹ãæ·±æãããç¥èŠãæ·±ããŸããã 80%ãããã®AIéçºæšæºv0.1ãå³åº§ã«äœæããã¡ã³ããŒãããã£ãŒãããã¯ãåããŠãã©ãã·ã¥ã¢ããããŸããã æ¬¡ã«ç€ºãã®ã¯ããã¥ã¡ã³ãã§å®çŸ©ããéçºãããŒå³ã®äžéšã§ãã ååŸã®Phaseã¯æ¬è³ªãšé¢ä¿ãªãããå³ããé€å€ããŠããŸãã æ žå¿ãšããŠã¯ãCursorãClaude Codeãªã©ã§å®è£
ãããŠããPlanã¢ãŒãã§å®è£
èšç»ãšã¬ãã¥ãŒãæãããšã§ãAIã®åºåãé«å質ã«ããææ»ããæžããéçºã¹ã¿ã€ã«ãèšèªåãããã®ã§ãã ã³ã³ããã¹ãçšæã®éšåã解説ããŸãã ã¬ãŒãã¬ãŒã«èšèš ãªããžããªæ¯ã«èŠçŽã決ãŸã£ãŠããããšãå€ãã®ã§ããã®åç
§ãæãããŸã ããã³ããã£ã³ã° 圹å²ãå¶éäºé
ãå«ããåœä»€æãæžããŸãããã³ã³ããã¹ãã¯ã¬ãŒãã¬ãŒã«ãDesign DocãMCPãµãŒãã§è£å®ã§ããããšãå€ããããããã³ããã®åéã¯ããã»ã©å€ããªããŸãã Design Docäœæ DBèšèšæžãAPIèšèšæžãªã©å¿
èŠã«å¿ããŠèšèšæžãäœæããŸã MCPãµãŒãæ¥ç¶ Figma MCPãGitHub MCPãå©çšããŠå€éšã®ã³ã³ããã¹ããååŸããŸã AIãšãŒãžã§ã³ããæšè«ã¢ãã«ã¯ç®ãŸããããå€åãããããããã«äŸåããäžé·æçã«éçšã§ããå
容ãç®æããŠäœæããŸããã AIéçºæšæºv1.0ã¯ããã£ãŒãããã¯ãšæ¹åãæŽ»çºã«è¡ãããç¥èŠãå
±æããããç®ç·ãæã£ãããšã§ãåã
人ã®çç£æ§ã«ã¯å€å°ã®å€åããããŸããã ãããããŒã ã§æäŸãã䟡å€ã®é¢ã§ã¯å€§ããªææã¯äžãããŸããã§ããã ãªããªãã°ãè³æã®èª¬æã¯æœè±¡çã§ããã€çŸåšå°ã瀺ããã«éãããããŒã ãå
·äœçã«åãããããªãã£ãããã§ãã ããŒã ã®èª²é¡ãçç£æ§ã®ããã«ããã¯ãçæ³ãšããéçºäœéšãªã©ãããªãããã®ãïŒWhyïŒããäœãããã®ãïŒWhatïŒããã©ãå®è¡ããã®ãïŒHowïŒãããå
šããã£ãŠæããŠããŸããã ãã®ææç©ã¯éçºææ³ã®å
±éé
ãæãåºããã¬ãŒãã¬ãŒã«ã«ãªã£ãã ãã§ããã ã¬ãŒãã¬ãŒã«ãããã®ã¯è¯ãã®ã§ãããããŒã ã®ç¶æ
ãšããŠã¯çžäºçè§£ãç¥èŠãå°ã
å¢ããŠéçºã楜ã«ãªã£ãã«éãããäŒç€ŸããæåŸ
以äžã ã£ãããšè©äŸ¡ãäžããã»ã©ã®ææã§ã¯ãããŸããã ã¹ã¯ã©ã ã«çæ³ãåŸãæšé²ã®åæ ããã§ãµãšãä»ãŸã§é·æã«æž¡ãå®è·µããŠããã¹ã¯ã©ã éçºãæãåºããŸããã ã¹ã¯ã©ã éçºã§ã¯ãããã¯ããŽãŒã«ãšã¹ããªã³ããŽãŒã«ãèšå®ããŠäžç¢ºå®æ§ãé«ãç°å¢ã§ãç¶ç¶ããŠäŸ¡å€æäŸãå®è¡ããŸãã å
ã»ã©åçããéããäžé·æã®çµç¹çãªåãçµã¿ã«ããŽãŒã«ãšãã€ã«ã¹ããŒã³ãèšå®ããèšç»çã«é²ããããšã倧äºãªã®ã ãšæ°ã¥ãããšãã§ããŸããã æ¥ã
ãã£ãŠããã¯ããªã®ã«ããªãã§ããªãã£ããã ãããå¿ããŠããŸã£ããã ããâŠãšèœã¡èŸŒã¿ãŸããããä»ã§ã¯äŒžã³ããã ãšèãçŽããŠããŸãã æ°ã¥ããšãããããªãã®ãèŠããŠããŠãäœããã¹ãããããããŸãã æè¿ãäžåžããç確ãªãã£ãŒãããã¯ãããããŸããã ãä»ã®ãŸãŸã§ãåã«é²ããšã¯æããŸããããŽãŒã«ãšèšç»ãå
·äœåããæ¹ãããã§ããã ãŸãã«ïŒã§ãã ãŸããçæ³ã®éçºäœéšãããŒã ã§è©±ãåã£ãŠã¿ãããšã«æ±ºããŸããã è°è«ãé²ãããã¡ã«ããŒã ã§ã¯æ¬¡ã®çµè«ãåºãŸããã äœæ¥ããåãåºããŠããŸãã°ãå®è£
ã¯ããã«ããã¯ã«ãªã£ãŠããªã ãªãã¡ã€ã³ã¡ã³ãã§è°è«ãçºæ£ããæéãé·ããåæã«æéããããå Žåããã AIã«ã¯ããžãã¹æŠç¥ã顧客課é¡ããŠãŒã¶ãŒã¹ããŒãªãŒãæž¡ã£ãŠããªãã ãã¡ã€ã³ã®ç¥èãè©°ã蟌ãã Geminiã®Gemããããã¯Notion AIãçšæããããšã§ãæåŸ
ã«è¿ãåºåãåŸãããšãã§ãããã AIã®åºåã埮åŠãªæã¯ãæŽçãããã³ã³ããã¹ããè¶³ããŠããªãããšãå€ãã 仿§ã®èšè¿°ãAIãäžå¿ã«é²ããã¬ãã¥ãŒãéçºè
ãè¡ãã°ã質ãšã¹ããŒããæ
ä¿ã§ãããã ã ããããæºããSDDïŒä»æ§æžé§åéçºïŒã«ãææ©çã«åãçµãã§ã¿ã ããã«ããã以åãããäžæ©åã«é²ãããšãã§ããæ¬¡ã®å
·äœçãªèšç»ãç«ãŠãããšãã§ããŸãã æç¢ºãªææã«çŽã¥ãããšãããŸã§ã¯éæããŠããŸãããã以åãããè°è«ã掻çºã«ãªããéçºäœéšãããè¯ãããŠããåããã§ããããã«ãªããŸããã æšé²ãçå®ã«é²ããæ¹æ³ ä»åã®è©Šè¡é¯èª€ããåŸãåŠã³ãç®æ¡æžãã«ãããšã ãªãããªã«ããã©ã®ããã«ããçªãè©°ããŠèª²é¡ã®è§£å床ãäžããããš åãåã«ä»ãããç¯å²ã§ã®èšç»ãç«ãŠãããšïŒ AIã¯ææ®µã§ããããŸãã¯è§£æ±ºããã課é¡ãšãŽãŒã«ãå®çŸ©ããªããšç©ºåããã ïŒ AIæè¡ã宿çã«åãããã§ããŒã ã«é©çšããŠã¿ã掻åãè¡ãæ¯ãè¿ãã«ãŒããäœãããš äœãããèªåèªèº«ãã¯ã¯ã¯ã¯ããããš ããã¯æšé²ã«éãããããããä»äºã§éããããšã§ãããæ¹ããŠå匷ã«ãªããŸããã æœè±¡çãªä»äºãå
·äœåããŠé²ããã³ããæŽãããããªæ°ãããŸãã äžã«ã¯æè¿èªãŸããŠããã ãã â **æœè±¡åºŠã®é«ãä»äºã®é²ãæ¹ â** ã®ããã«å匷ã«ãªãèšäºãããããããã®ã§ããã²ã芧ã«ãªã£ãŠãã ããã ãŸãšã ããã«è³ããŸã§ãããŒã ã¡ã³ããŒãšäžåžãã¹ããŒãªãŒäžã§ã¯è§Šããªãã£ãæ¹ã
ãå«ãããå©åããã ãããããšãããããŸããããã§æè¬ã®æã衚ããããšæããŸãã åŒãç¶ãã¯ã€ã¯ã€æ¥œãã¿ã€ã€äžç·ã«é²ããŠãããŸãããã ç§ã¯ãŸã ã€ã³ãã¯ãã®å€§ãã䟡å€ãçã¿åºããŠã¯ããŸãããã æšé²ã®ããã«ããããšãæç¢ºã«ãªã£ãã®ã§åŒãç¶ãåãçµãã§ãããŸãã æåŸã«ããã®èšäºãèªãã§ãããæ¹ã®æšé²åã«ãªãããšãé¡ã£ãŠããŸãã ãããŸã§èªãã§ããã ããããããšãããããŸããïŒ ã¿ã€ããŒã«ã¯ãããããææŠãšåŠã³ããããŠçºä¿¡ãæè¿ããæåããããŸãã ãšãã«ææŠãæé·ããŠããããæ¹ãèå³ãããã°ãã²1床ã話ãããŸãããïŒ ãããã¯ãæ¡çšãµã€ãTOP ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã
ããã«ã¡ã¯ãã¿ã€ããŒã®ãããã¯ãã¢ããªãã£ã¯ã¹ããŒã ã§ãããã¯ãã®ããŒã¿åæãããŠããæŸäžã§ãã ãã®èšäºã¯ Timee Advent Calendar 2025 ã·ãªãŒãº 2 ã®22æ¥ç®ã®èšäºã§ãã ã¯ããã« ç§ã®è¶£å³ã¯ã©ã³ãã³ã°ã§ãä»äºã¯ããŒã¿ã¢ããªã¹ãã§ãã ã©ã³ãã³ã°ãŠã©ãããã€ããŠã©ã³ãã³ã°ãããŠãããšå€ãã®ããŒã¿ãæºãŸã£ãŠãããŸãã GarminDB ãšããã Garmin ConnectããããŒã¿ãããŠã³ããŒãããŠããŒã¹ããã©ã€ãã©ãªãèŠã€ããã®ã§ãããŒã¿ããŒã¹ã«å
¥ããŠæ¹ããŠããŒã¿åæãããŠã¿ãŸããã ãããšä»äºã§å€§äºã«ããŠããããšãããã®ãŸãŸã©ã³ãã³ã°ã«ãåœãŠã¯ãŸãããšã«æ°ã¥ããŸããã èŠãã¹ãææšãéžã¶ããš å¹³åã§ã¯ãªãååžãèŠãããš ããŒã¿ã®åããåŽã«ããæ
å ±ãåŠçããããš ã©ããããŒã¿åæã®éåã§ãããã£ã±ãããã ããªããšæããªããåæãé²ããŠãããŸããã ãã®èšäºã§ã¯ãã©ã³ãã³ã°ããŒã¿ã®åæãéããŠæ¹ããŠå®æãããããŒã¿åæã§å€§äºã«ãã¹ãããšã«ã€ããŠæžããŸãã ãã€ãã®ã©ã³ãã³ã°ã³ãŒã¹ãè»ãå°ãªãå·æ²¿ããèµ°ãã®ã奜ãã§ãã ã©ã³ãã³ã°ããŒã¿ãåæããŠã¿ã æè¿ã®ã©ã³ãã³ã°ãŠã©ããã¯ããŒã¿ã®å®åº«ã§ãã ç§ã¯Garminã®ã©ã³ãã³ã°ãŠã©ããã䜿ã£ãŠããŸãããèµ°ããã³ã«ä»¥äžã®ãããªããŒã¿ãæºãŸããŸãã è·é¢ãããŒã¹ãã¿ã€ã å¿ææ°ïŒå¹³åãæå€§ããŸãŒã³å¥ã®æéïŒ ã±ã€ãã³ã¹ïŒãããïŒ æ°æž© æšé«å·® ãã¬ãŒãã³ã°å¹æãè² è· etc... BigQueryã«èªååæããä»çµã¿ãäœã£ã Garminã®ããŒã¿ãBigQueryã«å
¥ããããã«ã以äžã®ã©ã€ãã©ãªã掻çšããŸããã github.com AIã®åãåããªãããã€ãã©ã€ã³ãæ§ç¯ã§ããŸãããããŒã¿ãéããããŒãã«ã¯ãAIæä»£ã«ã©ãã©ãäžãã£ãŠããŸãã github.com ããŒã¿ã§èŠããããšâ ïŒèŠãã¹ãææšãéžã¶ å¿ææ°ãŸãŒã³ã§ãã¬ãŒãã³ã°ããæ¹æ³ ã©ã³ãã³ã°ã«ã¯ãå¿ææ°ãã§ãã¬ãŒãã³ã°ããæ¹æ³ããããŸãã å¿ææ°ãŸãŒã³ãšã¯Â å¿ææ°ãæå€§å¿ææ°ã«å¯Ÿããå²åã§5段éã«åãããã®ã ãŸãŒã³1ïŒ50-60%ïŒïŒãŠã©ãŒãã³ã°ã¢ãããå埩走 ãŸãŒã³2ïŒ60-70%ïŒïŒèèªççŒãæä¹
ååäžãäŒè©±ã§ããããŒã¹ ãŸãŒã³3ïŒ70-80%ïŒïŒæé
žçŽ èœååäž ãŸãŒã³4ïŒ80-90%ïŒïŒä¹³é
žéŸå€ä»è¿ãã¬ãŒã¹ããŒã¹ã«è¿ã ãŸãŒã³5ïŒ90-100%ïŒïŒæå€§åªåãçæéã®ã¿ç¶æå¯èœ ããŸãŒã³2ã§é·ãèµ°ãããã¬ãŒãã³ã°ã¯ãäœãžã®è² æ
ãæããªããæä¹
åãé«ããæ¹æ³ãšããŠäººæ°ããããŸããGarminã®ãŠã©ãããå¿ææ°ãŸãŒã³ããªã¢ã«ã¿ã€ã ã§è¡šç€ºããŠãããŸãã ã§ããç§ã¯ããŒã¹ãèŠãããšã«ããŸããã å¿ææ°ãã¬ãŒãã³ã°ã«ãã£ããããªãã£ãçç±ã¯ã·ã³ãã«ã§ãã ã¬ãŒã¹ã§æ±ããŠããã®ã¯ãå¿ææ°ãã§ã¯ãªããã¿ã€ã ãã ããã å¿ææ°ã¯äœèª¿ãæ°æž©ãç¡ç ãã¹ãã¬ã¹ã«ãã£ãŠå€§ããå€åããŸããåããŸãŒã³2ã§ãã調åãè¯ãæ¥ã¯5:30/kmãæªãæ¥ã¯6:30/kmã«ãªãããšããããŸããããã§ã¯ã仿¥ã©ããããèµ°ãããããããããŸããã äžæ¹ãããŒã¹ïŒã¿ã€ã ïŒã¯åãã€ããŸããã5:00/kmã§10kmèµ°ããããããã¯çŽãããªãã5:00/kmã§10kmèµ°ããäœããã§ããŠãããšãã蚌æ ã§ãã ããã¯ä»äºã§ãåã èŠãã¹ãã¯ãæœçãæãŠãææšãã§ããããçµæã«çŽçµããææšãã§ãã DAUïŒãã€ãªãŒã¢ã¯ãã£ããŠãŒã¶ãŒïŒã远ã£ãŠããŠããããã ãã§ã¯äœãããã°ãããããããŸãããäžæ¹ã§ããæ°èŠãŠãŒã¶ãŒã®7æ¥åŸç¶ç¶çããªãããªã³ããŒãã£ã³ã°æ¹åãšããæœçã«ã€ãªãããŸãã å¿ææ°ã¯ãäœã®ç¶æ
ãã衚ãããŒã¿ãããŒã¹ã¯ãçµæãã衚ãããŒã¿ãã¢ããã¥ã¢ã©ã³ããŒã®ç§ã«ãšã£ãŠã远ãã¹ãã¯åŸè
ã§ããã ããŒã¿ã§èŠããããšâ¡ïŒå¹³åã®çœ ãšæ¯èŒã®éèŠæ§ ç·Žç¿ã®å¹³åããŒã¹ãæ¯èŒããŠã¿ã ããããããŒã¹ã§äœãèŠãã°ããã®ãïŒã ãŸããã¬ãŒã¹å3ã¶æã®ç·Žç¿ã®å¹³åããŒã¹ãæ¯èŒããŠã¿ãŸããã ã¬ãŒã¹ ç·Žç¿ã®å¹³åããŒã¹ ã¬ãŒã¹çµæ çæ¬åãã©ãœã³2024 5:19/km 3:17:50ïŒ4:38/kmïŒ ããããŸãã©ãœã³2025 5:08/km 3:16:51ïŒ4:36/kmïŒãã¹ã ã€ãã°ãã©ãœã³2025 6:27/km 3:29:28ïŒ4:56/kmïŒ éãç·Žç¿ããã»ããéãã¿ã€ã ã§èµ°ãããã§ãããããã¯ã¢ããªã¹ããªãå¹³åã®çœ ãé ããŠããããšã«æ°ãã€ããšæããŸãã å¹³åã®äžèº«ãèŠã ç·Žç¿ã®ããŒã¹ããéãïŒ5å/kmæªæºïŒããäžçšåºŠïŒ5-6å/kmïŒããé
ãïŒ6å/km以äžïŒãã«åé¡ããŠããã®å²åãèŠãŠã¿ãŸããã ã¬ãŒã¹ ã¬ãŒã¹ããŒã¹ éãç·Žç¿(%) é
ãç·Žç¿(%) ç·è·é¢ ããããŸãã©ãœã³2025 4:36/km 38.6% 2.8% 598km çæ¬åãã©ãœã³2024 4:38/km 30.8% 0% 844km ã€ãã°ãã©ãœã³2025 4:56/km 26.2% 29.6% 906km çºèŠ ãã¹ããåºãæïŒããããŸãã©ãœã³ãçæ¬åãã©ãœã³ïŒã¯ãéãç·Žç¿ã®å²åã30%以äžãé
ãç·Žç¿ã¯0-3% ã€ãã°ãã©ãœã³ã¯ç·Žç¿é906kmïŒæå€§ïŒã ããé
ãç·Žç¿ã29.6%ãããããã¹ãã¯åºãªãã£ã å¹³åã ãèŠãŠããäžèº«ããããããªã çæ¬åãã©ãœã³2024ã®ç·Žç¿å¹³åããŒã¹ã¯5:19/kmãäžèŠããã£ããç®ã«ç·Žç¿ããŠããããã«èŠããŸãã ã§ãäžèº«ãèŠããšã éãç·Žç¿30.8%ãé
ãç·Žç¿0% ãç·©æ¥ãã€ãã質ã®é«ãç·Žç¿ãããŠããŸããã ã€ãã°ãã©ãœã³2025ã®å¹³åããŒã¹ã¯6:27/kmããã¡ããããã£ããç·Žç¿ãã«èŠããŸãã ã§ãäžèº«ã¯ã éãç·Žç¿26.2%ãé
ãç·Žç¿29.6% ãé
ãç·Žç¿ãå€ãããŠãå¹³åãäžãã£ãŠããã ãã§ããã å¹³åã ãèŠãŠããé
ãç·Žç¿ãå€ãã®ãããç·©æ¥ãã€ããŠããã®ããããããªããååžãèŠãªããã°æå³ããªãã ãããä»äºã§çµéšæžã¿ CVRã®å¹³åãäžãã£ãŠããæ°èŠãŠãŒã¶ãŒã ãäžãã£ãŠæ¢åãäžãã£ãŠãããïŒ å£²äžã®å¹³åå䟡ãäžãã£ãŠããé«å䟡ååã ã売ããŠäœå䟡ååã売ããªããªã£ãŠãããïŒ å¹³åã ãã远ããšãéèŠãªå€åãèŠèœãšããŸãã ããŒã¿ã ãã§ã¯èŠããªããã® èº«äœæ§ã®éèŠã ã©ã³ãã³ã°ããŒã¿ãåæããŠäžçªå確èªããã®ã¯ã èº«äœæ§ã®éèŠã ã§ããã å¿ææ°180ã®èŠããã¯ãããŒã¿ã§èŠãã180bpmããšã¯å
šãéãäœéšã§ãã ããŒã¿ãèŠã人ãšãå®éã«çµéšããŠãã人ã§ã¯ãåãæ°åãèŠãŠãè§£éãå
šãéãã ããã¯ä»äºã®ããŒã¿åæã§ãåãã§ãã èªç€ŸãµãŒãã¹ãèªåã§äœ¿ã  - ãŠãŒã¶ãŒäœéšãèã§æãã çãã°ã500ä»¶ãããèŠãŠã¿ã  - ããŒã¿ã®ãæè§Šãããç¥ã ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã«ååžãã  - æ°åã®åããåŽã«ããäººãæ³åãã åè«ã»ã«ã¹ã¿ããŒãµããŒãã«åè¡ãã  - ãªãå¥çŽã決ãŸã/決ãŸããªãããäœæãã ããŒã¿ã«çŸãããåã®æ®µéãã®æè§Šããç¥ãããšããè¯ãåæã®åææ¡ä»¶ã ãšæã£ãŠããŸãã ããã¯é ã§ã¯ããã£ãŠããããšã§ããã§ããèªåã®ã©ã³ãã³ã°ããŒã¿ãåæããŠãæ¹ããŠåŒ·ã宿ããŸããã ãããã«ãAIã«ã¯é£ããããš èº«äœæ§ã¯ä»ã®ãšããAIãæã€ã®ã¯é£ããé åã§ãã AIã¯ããŒã¿ãé«éã«åŠçãããã¿ãŒã³ãèŠã€ããäºæž¬ã¢ãã«ãæ§ç¯ã§ããŸããSQLãæžããããå¯èŠåãã§ãããæ£çŽãããŒã¿ãèŠãäœæ¥ã®å€ãã¯AIã«ä»£æ¿ããã€ã€ãããŸãã ããããAIã¯èªç€ŸãµãŒãã¹ã䜿ã£ãããšããããŸããããŠãŒã¶ãŒã®äžæºãçŽæ¥èããããšããããŸããã ããŒã¿ã®ãæè§Šãããç¥ã£ãŠãããã©ãããããããAIãšäººéã®ããŒã¿ã¢ããªã¹ããåããæ±ºå®çãªéãã«ãªããšæããŸãã ããŒã¿ã®æè§Šãã倧äºã«ããªããããããã¯ãã«åãåãããæ¹ã ãèå³ãããã°ãã²ã話ãããŸãããïŒ ãããã¯ãæ¡çšãµã€ãTOP ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã
ãã®èšäºã¯ Timee Product Advent Calendar 2025 21æ¥ç®ã®èšäºã§ãã ããŒã¿ãšã³ãžãã¢ãªã³ã°éšDSã°ã«ãŒãæå±ã®è€äºãšç³ããŸããçŸåšã¿ã€ããŒã§æšèŠãšã³ãžã³ã®æ¹åã«åãçµãã§ããŸã! ãã®èšäºã§ã¯ãã¿ã€ããŒã®æšèŠãšã³ãžã³ã«ãããåè£çæã§å°å
¥ããŠãã ANNïŒApproximate Nearest NeighborïŒãšããã® ANNçšãã¯ãã«ãäœã Two-Tower ã¢ãã«ã顿ã«ããŸãããããŠããã®ãã¡ã€ã³ã§éèŠãªããŒãã®ã²ãšã€ã§ãã Negative Sampling ãç¹ã« In-Batch Negative Sampling ã䜿ã£ãã¢ãã«éçºã«ããã課é¡ãšå¯Ÿçã«ã€ããŠè°è«ããŠãããŸãã ANNã¯RAG(Retrieval-Augmented Generation)ã®ããã¯ãšã³ãã«ãããŠã䜿çšãããããšãå€ãã®ã§ããã²èªãã§ããã ãããšå¬ããã§ã! Two Towerã¢ãã«å©çšã®èæ¯ ãããã㯠Two-Tower ã¢ãã«ã®è©±ã«å
¥ã£ãŠãããŸãã æšèŠãšã³ãžã³ã§æšèŠãè¡ãéãæšèŠå¯Ÿè±¡ãšãªã item v ããã¹ãŠã® user u ã«å¯Ÿã㊠brute force ã§å³å¯ã«èšç®ãããšãçµåãççºã«ããèšç®éã ãšãªã£ãŠããŸããŸãããã®ãããä»¶æ°ãå¢ããã«ã€ããŠãçŸå®çãªã³ã¹ãã§ã¯èšç®ããããšãé£ãããªã£ãŠãããŸãã äŸãšããŠãæ¥æ¬ã®å€§åŠç300äžäººã«å¯Ÿãã100äžåã®æ¬ãããã¹ããªæ¬ãæšèŠããç¶æ³ãèããŸãããããã®å Žåãã300äžäººÃ100äžåãã§3å
éããã®çµã¿åãããçããŠããŸããŸããæšèŠãšã³ãžã³ã§ã®éããèšç®ããLLM ãžã® API ã³ãŒã«ãå¿
èŠãªã±ãŒã¹ã§ã¯ããã®ããã«å
šä»¶ããã®ãŸãŸèšç®ãããšãéçŸå®çãªã³ã¹ãããããå¯èœæ§ãé«ãã§ãã ããã§æããäŸã®ããã«ãitemæ°ãšuseræ°ã®çµã¿åãããå€ããªãã±ãŒã¹ã§ã¯ãäœããã®æ¹æ³ã§ããŸãåè£ãæœåºããèšç®éãåæžããå¿
èŠããããŸãã ãã®èšç®éã®åé¡ã«å¯ŸåŠãããããã¿ã€ããŒã§ã¯ANNããã³ANNã«äœ¿ãæšèŠçšã®ãã¯ãã«ïŒåã蟌ã¿ïŒãçæããããã« Two-Tower ã¢ãã«ãå©çšããŠããŸãã Two-Tower ã¢ãã«ãš InfoNCE Loss ã®ãããã Two-Tower ã¢ãã«ã§ã¯ãæå€±é¢æ°ãšã㊠InfoNCE Loss ããã䜿ãããŸãã 以äžã® InfoNCE Loss ã®åŒã¯ãIn-Batch Negative SamplingïŒãåããããããå
ã®ä»ã¢ã€ãã ããã¬ãã£ããšããŠæ±ããèšå®ïŒãä»®å®ãã圢ã«ãªã£ãŠããŸãã ããã§ã : ãããå
i çªç®ã®ãŠãŒã¶ã®ãã¯ãã« : ãã®ãŠãŒã¶ã«å¯Ÿããæ£äŸïŒããžãã£ãïŒã¢ã€ãã ã®ãã¯ãã« : ãããå
ã«å«ãŸããä»»æã®ã¢ã€ãã ã®ãã¯ãã« : ã³ãµã€ã³é¡äŒŒåºŠãªã©ã®é¡äŒŒåºŠé¢æ° : 枩床ãã©ã¡ãŒã¿ : ããããµã€ãº ååã¯ããŠãŒã¶ ãšããã®ãŠãŒã¶ã«å¯Ÿããæ£äŸã¢ã€ãã ãšã®é¡äŒŒåºŠããã 忝ã¯ãåããããå
ã«ååšãããã¹ãŠã®ã¢ã€ãã ãšã®é¡äŒŒåºŠã®ç·åãã衚ããŠããŸãã ãã®åŒããåããããã«ã ã©ã®ãµã³ãã«ããã¬ãã£ããšããŠæ±ãã 㯠InfoNCE ã®æ§èœã«çŽçµããéèŠãªèšèšèŠçŽ ã§ããããããŸã§ã«å€ãã®ç ç©¶ãè¡ãããŠããŸãã æ¬èšäºã§ã¯ããã®ãã¡ Two-Tower ã¢ãã« Ã In-Batch Negative Sampling ãšããèšå®ã«ãã©ãŒã«ã¹ããŠè©±ãé²ããŸãã In-Batch Negative Sampling ãšã¯ In-Batch Negative Sampling ãšã¯ããããŠãŒã¶ ã«å¯ŸããŠã åããããããå
ã®ä»ãŠãŒã¶ã®æ£äŸã¢ã€ãã ãããã¬ãã£ããµã³ãã«ãšããŠå
Œçšããææ³ã§ãã ãã®æ¹æ³ã§ã¯ããããããå
ã§æ¢ã«èšç®ããã¢ã€ãã åã蟌ã¿ãè² äŸãšããŠæµçšã§ããããã è² äŸã®ããã«è¿œå ã§ã¢ã€ãã ããµã³ãã«ããŠåã蟌ã¿èšç®ïŒforwardïŒããã³ã¹ããæãã€ã€ ã倿°ã®ãã¬ãã£ããšæ¯èŒã§ããŸããInfoNCEã§ã¯äžåºŠã«è€æ°ã®ãµã³ãã«ãæ¯èŒãããããNegative Sampleã®èšç®ã³ã¹ããç¡èŠã§ããªããªãåŸåã«ãããŸãã 以äžã¯å
·äœçãªææ³ã§ãã å
ã»ã©ã® InfoNCE ã®åŒã®æèã§ãããšããŠãŒã¶ ui ã«å¯Ÿã㊠æ£äŸïŒããžãã£ãïŒ: ãã¬ãã£ã: ïŒåäžãããå
ã®ãã®ä»ã®ã¢ã€ãã ïŒ ãšãã察å¿ä»ãã«ãªããŸãã(å³1åç
§) å³1.In-Batch Negative Samplingã€ã¡ãŒãžå³ã å³å¯ã«ã¯ããããå
ã®ä»ãµã³ãã«ããåäžã¢ã€ãã ããŸãã¯ãåäžãŠãŒã¶ã®ãã¢ãã§ããå ŽåãFalse Negative ãšãªãã®ãé¿ããããã«ãæå€±èšç®ããé€å€ïŒãã¹ãã³ã°ïŒããåŠçãè¡ãã®ãæãŸãã ãããããæ¬é¡ã§ãã ãã® In-Batch Negative Sampling + InfoNCE ã®æ§æã¯ Two-Tower ã¢ãã«ã®æèã«ãããŠéåžžã«äžè¬çãªæ§æã§ãããå®éã®ã¢ãã«éçºã«ãããŠã¯ããã€ãèæ
®ãã¹ã課é¡ããããŸãã 仿¥ã¯ããã®èª²é¡ã®äžéšãšå¯ŸçäŸãè°è«ããŠãããŸãããã 課é¡1: ããããµã€ãºãžã®åŒ·ãäŸå InfoNCE Loss ã«ã¯ããçžäºæ
å ±é I(X;Y) ã®äžéãäžããããšããããç¥ãããè©äŸ¡åŒããããŸãã[1] ããã§ N ã¯ã1 ã€ã®æ£äŸãšäžç·ã«æ¯èŒããããµã³ãã«ã®ç·æ°ãã§ãã (* å³å¯ã«ã¯ç¬ç«è² äŸãä»®å®ããŠå°ãããäžçã§ãããin-batch negatives ã§ã¯ãã®ä»®å®ãå¿
ãããæãç«ããªãç¹ã«çæããããã) In-Batch Negative Sampling ã®èšå®ã§ã¯ã1 ãŠãŒã¶ãããã®æ¯èŒå¯Ÿè±¡ã¯ã»ãŒãããããµã€ãº B åãã«ãªããããããããµã€ãºãå°ãããšãå°éãããçžäºæ
å ±éã®äžéãå°ãããªã£ãŠããŸããŸãã ãã®çµæãã¢ãã«ã®æ§èœãããããµã€ãºã«åŒ·ãäŸåãããšããåé¡ãçããŸãã 察çäŸ: 1. MoCo åã®ã¡ã¢ãªãã³ã¯ / ãã¥ãŒ ãã®åé¡ãžã®å¯Ÿçäžã€ããMoCo ã«ä»£è¡šãããã¡ã¢ãªãã³ã¯ïŒãã¥ãŒïŒæ¹åŒã§ã[2][3][4]*ã éå»ãããã®ã¢ã€ãã åã蟌ã¿ããã¥ãŒãšããŠä¿æããŠããã çŸåšãããã®ãŠãŒã¶åã蟌ã¿ãšæ¯èŒãããšãã«ããã®ãã¥ãŒå
ã®å€æ°ã®åã蟌ã¿ããã¬ãã£ããšããŠå©çšãã ããšã§ãå®å¹çãªãã¬ãã£ãæ° Nããããããµã€ãºãã§ã¯ãªãããã¥ãŒé·ããŸã§æ¡åŒµã§ããŸãã ããã«ããã倧ããªããããããçµãŸãªããŠãã倿°ã®ãã¬ãã£ãã確ä¿ãã€ã€åŠç¿ã§ããããã«ãªããŸãã äžæ¹ã§ãå®è£
äžã®ããŒãã«ã¯æ¯èŒçé«ããå°å
¥ã«ããã£ãŠã¯æ
éã«æ€èšããå¿
èŠããããŸãã å³å¯ã«ã¯ãææ°ã® MoCo v3 [4] ã§ã¯ã¢ãã«æ§é ã®åçŽåïŒViTãžã®é©å¿ïŒã®ãããã¥ãŒïŒMemory BankïŒã¯å»æ¢ãããSimCLRãšåæ§ã®å€§èŠæš¡ãããåŠç¿ã«æ»ã£ãŠããŸãããåã·ãªãŒãºã®éèŠãªçºå±åœ¢ãšããŠäœµèšããŠããŸãã * 課é¡2: åºçŸé »åºŠã«ç±æ¥ãããã€ã¢ã¹ In-Batch Negative Sampling ã¯ããããã«åºãŠããã¢ã€ãã ãããã®ãŸãŸè² äŸãšããŠäœ¿ãããããããã«ç»å ŽããããïŒåºçŸé »åºŠã®é«ãã¢ã€ãã ã»ã©ãã¬ãã£ããšããŠéžã°ãããããšãããã€ã¢ã¹ããããŸãã ãã®çµæã人æ°ã¢ã€ãã ã¯äžåœã«é¡äŒŒåºŠãæŒãäžãããããããªããŸããäžæ¹ã§ãäœé »åºŠã¢ã€ãã ã¯ãããããã¬ãã£ããšããŠç»å Žãã«ãããããåŠç¿ã§åãããã€ãºïŒæŽæ°ïŒã匱ããªããšããåé¡ãçããŸãã ã¿ã€ããŒã®æèã§ã¯ãåãªãã¢ã€ãã ã®äººæ°åºŠã ãã§ãªãããšãªã¢ïŒå°çïŒãè·çš®ã«ãã£ãŠãåºçŸé »åºŠã倧ããç°ãªããããåæ§ã®æ§é ã®ãã€ã¢ã¹ãããè€éãªåœ¢ã§å
¥ã蟌ã¿ãŸãã 察çäŸ: 1. LogQ Correction In-Batch Negative Sampling ã§ã¯ãpopularity bias ã«ããã¹ã³ã¢ããµã³ããªã³ã°ç¢ºç ïŒåŠç¿æã«è² äŸãšããŠãµã³ãã«ãããã¢ã€ãã vã®åšèŸºç¢ºçïŒã«åŒããããã以äžã®åœ¢ã«åæããŠããŸããŸãã ããã§ r ( u , v ) ã¯çã®é¢é£åºŠã衚ããŸãã ããã§ãããžããã ãšããŠããããããã€ã¢ã¹é
ãå·®ãåŒãããšã§ã人æ°åºŠã«äŸåããªãæ¬è³ªçãªé¢é£åºŠãåŠç¿ãããŸã[5]ã 2. ã©ã³ãã ãµã³ããªã³ã°ã«ãããã¬ãã£ãè£å® In-Batch Negative Sampling ã ãã«äŸåãããå¥éã©ã³ãã ãµã³ããªã³ã°ãããã¬ãã£ããè¶³ãïŒæ··ããããšã§ã人æ°ã¢ã€ãã ã ãã«ãã¬ãã£ããåããªãããã«ããããšããã¢ãããŒãããããŸãã ãã®å¯Ÿçã¯æ¯èŒçå®è£
ããŒãã«ãäœãã§ãã 課é¡3: False Negative In-Batch Negative Sampling ã§ã¯ãæ¬æ¥ã¯ããžãã£ãã§ããã¹ãã¢ã€ãã ããã¬ãã£ãåŽã«çŽã蟌ãïŒFalse NegativeïŒ ããšããããªãã®ç¢ºçã§èµ·ãããŸãã æå¹ããããµã€ãºããã¬ãã£ãæ°ãå¢ãããŠããã»ã©ãã®çºçé »åºŠãäžãããããçŸå®çã«ã¯ãé¿ããããªãããç¡èŠãã§ããªãããã£ãããªåé¡ã§ãã InfoNCE ã§ã¯ãåŠç¿ãé²ããšå€æ°ã® easy negative ã¯ã»ãšãã© lossïŒïŒåŸé
ïŒã«å¯äžããªããŸãããã®ãããæ§èœãäžããã«ã¯ hard negative ããã£ããéããããšãéèŠã«ãªããŸãã ããããè¯ã hard negative ã»ã©ããžãã£ããšã®å¢çä»è¿ã«äœçœ®ãããããhard negative ãæ»ããã»ã© False Negative ãæ··å
¥ããããããªããšãããã¬ãŒããªãããããŸãã False Negative ãå€ããšã æ¬æ¥è¿ã¥ããããŠãŒã¶âã¢ã€ãã ã®ãã¢ããloss ããé¢ãããšåŒ·ãæŒããŠããŸã çµæãšããŠã䌌ãã¢ã€ãã å士ãäžèªç¶ã«é ãããããªã³ãŒã«ãäžè¬åæ§èœãåã£ãŠããŸã ãšãã£ã圢ã§ã衚çŸåŠç¿å
šäœã«æªåœ±é¿ãåºãŸãã çè
ãšããŠã¯ãFalse Negative ã®çºçèªäœã¯ããçšåºŠã¯ä»æ¹ãªãåæã ãšèããŠããã ãFalse Negative ãå®å
šã«æ¶ãã«è¡ããããããããã«ãã£ãŠåŸé
ãæŽããããªãããã«ã³ã³ãããŒã«ããä»çµã¿ãéèŠãããã¹ã¿ã³ã¹ã§ãã å³2. False Negative(=æ¬æ¥ã¯Positiveãšãã¹ãSample)ãšHard Negative/Easy Negativeã®äœçœ®é¢ä¿ã®ã€ã¡ãŒãžãäžè¬çã«False NegativeãšHard Negativeã¯é£æ¥ããŠãããè¯è³ªãªå¢çã®ãªã®ãªã®Hard NegativeåŸãããšãããšãåæã«False NegativeãååŸããŠããŸããªã¹ã¯ãäžæããã 察çäŸ: 1. Debiased InfoNCE (çµ±èšçãªè£æ£) ããã¬ãã£ããµã³ãã«ã®äžã«ã¯äžå®ç¢ºç Ï ã§ããžãã£ããæ··ãã£ãŠããããšããä»®å®ã眮ããLoss ã®åæ¯ããããžãã£ãæåã®æåŸ
å€ãå·®ãåŒãããšã§ãã€ã¢ã¹ãé€å»ããææ³ã§ã [6]ã ããã«ãããFN ãç¡çããé ãããããšãã誀ã£ãåŸé
ã®çºçãçµ±èšçã«æå¶ããŸãã 2. False Negative Masking (é«ã¹ã³ã¢ã®ç¡èŠ) åŠç¿ãé²ããšãã¢ãã«ã¯ FNïŒã©ãã«ã¯è² ã ãå®ã¯æ£äŸïŒã«å¯ŸããŠé«ãé¡äŒŒåºŠã¹ã³ã¢ãåºãããã«ãªããŸãã ãããå©çšãããããå
ã®ãã¬ãã£ããµã³ãã«ã®ãã¡ãã¹ã³ã¢ãéŸå€ãè¶
ããïŒïŒã¢ãã«ãããžãã£ãã ãšç¢ºä¿¡ããŠããïŒãã®ã Loss èšç®ããé€å€ïŒMaskingïŒããŸã [7]ã ãæªãããã®ã¯åŠç¿ã«äœ¿ããªãããšããå²ãåãã«ãããå€ãå€çãªåŸé
ã«ããã¢ãã«åŽ©å£ãé²ããŸãã äžæ¹ã§ãéŸå€ãæ£æçã«ãªããããããã®éŸå€ãã©ã®ããã«å®çŸ©ãããã«é£ããããããŸãã ãããã« ãããŸã§ã幟ã€ãã®èª²é¡ãšãã®èª²é¡ã«å¯Ÿãã察çäŸãæããŠããŸããããã¢ãã«ãåŠç¿ããç¶æ³ãããŒã¿ã«ãã£ãŠãçžå¿ãã察çã¯ç°ãªããŸããææ³ããã¡ããšçè§£ããäžã§éçšããããšã§ãããè¯ãåè£çæçšã®ãã¯ãã«ãäœã£ãŠããããã§ãã Weâre Hiring! ã¿ã€ããŒã§ã¯ããŒã¿ãµã€ãšã³ãã£ã¹ããã¯ãããäžç·ã«åãã¡ã³ããŒãåéããŠããŸãïŒ ã«ãžã¥ã¢ã«é¢è« ãè¡ãªã£ãŠãããŸãã®ã§ãèå³ã®ããæ¹ã¯ãã²ãæ°è»œã«ãç³ã蟌ã¿ãã ããïŒ product-recruit.timee.co.jp çŸåšã¿ã€ããŒã§ã¯æšèŠãšã³ãžã³ãäžç·ã«æ¹åããŠããã¡ã³ããŒãåã£ãŠãããŸãã åèæç® [1] [1807.03748] Representation Learning with Contrastive Predictive Coding [2] [1911.05722] Momentum Contrast for Unsupervised Visual Representation Learning [3] [2003.04297] Improved Baselines with Momentum Contrastive Learning [4] [2104.02057] An Empirical Study of Training Self-Supervised Vision Transformers [5] Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations [6] [2007.00224] Debiased Contrastive Learning [7] [2010.08191] RocketQA: An Optimized Training Approach to Dense Passage Retrieval for Open-Domain Question Answering
ogp ããã«ã¡ã¯ãããŒã¿ãšã³ãžãã¢ãªã³ã°éš DREïŒData Reliability EngineeringïŒã°ã«ãŒãã® ã€ããïŒtsu-sanïŒ ã§ãã ãã®èšäºã¯ã Timee Advent Calendar 2025 ãã·ãªãŒãº3ã®21æ¥ç®ã®èšäºã§ãã ä»åã¯DREã°ã«ãŒãã§å°å
¥ããGoogle Cloudã® PAMïŒPrivileged Access ManagerïŒ ã«ã€ããŠã玹ä»ããŸãã AIãšãŒãžã§ã³ãã«Google Cloudã®ãæš©éããé ããæã æè¿DREã°ã«ãŒãå
ã§ã¯ãéçºå¹çãäžããããã« ããŒã«ã«å®è¡å ã® AIã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãïŒClaude Code / Cursorãªã©ïŒ ãç©æ¥µçã«æŽ»çšããŠããããšããåãããããŸãã ããŒã«ã«å®è¡åã®AIã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯ãå®è¡ãŠãŒã¶ãŒã®ããŒã«ã«èªèšŒæ
å ±ã䜿ã£ãŠèªåŸçã«ã³ãã³ããå®è¡ããŸããã€ãŸãã ãŠãŒã¶ãŒãæã£ãŠããæš©éã®ç¯å²ã§ãAIã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããGoogle Cloudã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããŠããŸã ç¶æ
ã«ãªããŸãã 人éãæ¯åãã§ãã¯ããã°è¯ããšãã話ããããŸãããAIãçæããè€éãªã³ãã³ããå®ç§ã«ããŒã¿ã€ã ã§ãã§ãã¯ãç¶ããã®ã¯ã粟ç¥çã«ãããªãã®è² æ
ã§ãã ãæ®æ®µã¯é²èЧã®ã¿ãå¿
èŠãªãšãã ãå¿
èŠãªæš©éãããž ã¿ã€ããŒã®ã€ã³ãã©å€æŽã¯ Terraform + CI/CD ãåºæ¬ã§ãããããéåžžæã¯é²èЧ以å€ã®æš©éã¯äžèŠãªã¯ãã§ããããããçŸå®ã«ã¯ä»¥äžã®ãããªãç·šéæš©éãå¿
èŠãªç¬éããååšããŸãã éå®³å¯Ÿå¿æã®ç·æ¥ãªãã¬ãŒã·ã§ã³ TerraformåãããŠããªããªãœãŒã¹ã®èª¿æ»ãäžæçãªå€æŽ ãAIãå®å
šã«äœ¿ããããããã©ãããããšããæã¯åãããïŒïŒæš©éãå¿
èŠïŒãããã®ããŒãºã解決ããããã«å°å
¥ããã®ããGoogle Cloudã® PAMïŒPrivileged Access ManagerïŒ ã§ãã Google Cloudã®PAMïŒPrivileged Access ManagerïŒãšã¯ PAMã¯ãäžèšã§èšããš ãæš©éã®æéä»ã貞ãåºãæ©èœ ããå®çŸããä»çµã¿ã§ãã ç¹å®ã®æš©éãã ãå¿
èŠãªæã ãããæ¿èªãåŸãŠããæå®ããæéã ãã ãŠãŒã¶ãŒã«ä»äžããããšãã§ããŸãã PAMãå°å
¥ããŠè¯ãã£ãããš ç·šéæš©éã®å®å
šå»æ¢: æ®æ®µã¯é²èŠ§æš©éã®ã¿ã«ããŠããããAIãšãŒãžã§ã³ããäžãäžæŽèµ°ããŠããããããæš©éããªãã®ã§è¢«å®³ãåºãªãã ç£æ»ãã°ã®åŒ·å: ã誰ããããã€ããäœã®ç®çã§ãæš©éãææ Œãããããæç¢ºã«ãã°ã«æ®ãã ã¹ã ãŒãºãªæ¿èªãããŒ: ããŒã å
ã§ã®æ¿èªããã»ã¹ãGoogle Cloudã®æšæºæ©èœãšããŠçµã¿èŸŒããã å°å
¥åŸã®ãããŒãšäœ¿çšæ PAMã®ãããŒå³ å°å
¥åŸã¯ãæš©éãå¿
èŠã«ãªã£ããGoogle Cloudã³ã³ãœãŒã«ã®ãç¹æš©ã¢ã¯ã»ã¹ç®¡çãç»é¢ããç³è«ãåºããŸãã ç³è«: çç±ãæžããŠãªã¯ãšã¹ããéä¿¡ã æ¿èª: ããŒã ã¡ã³ããŒã«éç¥ãå±ããã³ã³ãœãŒã«äžã§æ¿èªãã¿ã³ãæŒãã äœæ¥: æ¿èªãããç¬éããæš©éãæå¹åãããã èªåçµäº: èšå®æéãéããã°ãèªåã§æš©éãå¥å¥ªãããã ãã®ãããŒã®ãããã§ãæ®æ®µã®äœæ¥ã§AIãšãŒãžã§ã³ãããã£ããç Žå£çãªæç€ºãåºãããšããŠããç©ççã«æš©éããªãã®ã§ãšã©ãŒã§æ¢ãŸã£ãŠãããŸãããã®ãã¬ãŒãã¬ãŒã«ãããå®å¿æãã¯ãéçºã¹ããŒããèœãšããªãããã«ãéåžžã«éèŠã ãšæããŠããŸãã PAMã§è§£æ±ºããããš PAMã®å°å
¥ã«ãããDREã°ã«ãŒãã§ã¯ä»¥äžã®ç¶æ
ãäœãããšãã§ããŸããã AIãšãŒãžã§ã³ããå®å¿ããŠæŽ»çšã§ãã: éåžžæã¯é²èŠ§æš©éã®ã¿ã誀çã®ãªã¹ã¯ããªããŠå®å¿ éçšã®æ©ååã¯ç ç²ã«ããªã: ç·æ¥æã¯PAMã§å³åº§ã«æš©éãææ Œã§ããŠå®å¿ ãã£ãããä»çµã¿ã§é²ã: 人éãAIããã¹ãããåæã§ãã·ã¹ãã åŽã§å®å
šæ§ãæ
ä¿ã§ããŠå®å¿ ãŸãšã AIã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯éåžžã«åŒ·åãªæŠåšã§ãããç·šéæš©éãæã£ãç¶æ
ã§ã¯å®å¿ããŠå©çšã§ããŸããã DREã°ã«ãŒãã§ã¯PAMã®å©çšã«ãããç·æ¥å¯Ÿå¿ã®è¿
éãããšãæå°æš©éããäž¡ç«ããããšãã§ããAIãšäººéãå®å¿ããŠéçºãå¯èœãªç°å¢ã«è¿ã¥ãããšãã§ããŸããã ãAIããã«æŽ»çšãããããã©ãç·šéæš©éãæã£ãŠããã®ãäžå®ããšããæ¹ã¯ããã²Google Cloudã®PAMãæŽ»çšããŠãå®å
šãªAIéçºç°å¢ãæ§ç¯ããŠã¿ãŠã¯ãããã§ããããã ææ¥ã®ã¢ããã³ãã«ã¬ã³ããŒããæ¥œãã¿ã«ïŒ ããæ¬èšäºãDREã®åãçµã¿ã«ãèå³ãããã°ãã²ã話ãããŸãããïŒ ã«ãžã¥ã¢ã«é¢è«ç³èŸŒã¯ãã¡ã ãããã¯ãæ¡çšãµã€ãTOP ä»é²ïŒTerraformã§ã®èšå®äŸ Terraformã§ã®èšè¿°äŸã玹ä»ããŸãã ãã®äŸã§ã¯DREã°ã«ãŒãã®ã¡ã³ããŒããå¿
èŠã«å¿ããŠãæ¿èªããçµãŠWriteræš©éããªã¯ãšã¹ãã§ããããã«æ§æããŠããŸãã # 1. PAMãµãŒãã¹ãšãŒãžã§ã³ããžã®IAMããŒã«ä»äž resource "google_organization_iam_member" "pam_service_agent" { org_id = var.organization_id role = "roles/privilegedaccessmanager.serviceAgent" member = "serviceAccount:service-org-$ { var.organization_id } @gcp-sa-pam.iam.gserviceaccount.com" } # 2. ç¹æš©ã¢ã¯ã»ã¹ã®èšå®ïŒEntitlementïŒ resource "google_privileged_access_manager_entitlement" "dre_admin" { entitlement_id = "dre-admin-entitlement" location = "global" max_request_duration = "3600s" # æå€§1æé parent = "organizations/$ { var.organization_id } " # æš©éããªã¯ãšã¹ãã§ãã察象ïŒDREã°ã«ãŒãã®ã¢ãã¬ã¹ïŒ eligible_users { principals = [ "group:team-dre@example.com" , ] } # äžæçã«ä»äžããæš©é privileged_access { gcp_iam_access { role_bindings { role = "roles/writer" } resource = "//cloudresourcemanager.googleapis.com/organizations/$ { var.organization_id } " resource_type = "cloudresourcemanager.googleapis.com/Organization" } } # æ¿èªã¯ãŒã¯ãããŒã®èšå® approval_workflow { manual_approvals { require_approver_justification = true steps { approvals_needed = 1 approver_email_recipients = [ "user:data-dre-manager@example.com" , # æ¿èªè
] } } } # ãªã¯ãšã¹ãæã®çç±å
¥åãå¿
é ã«ãã requester_justification_config { unstructured {} } depends_on = [ google_organization_iam_member.pam_service_agent ] } å®éã«èšå®ããéã¯ããŠãŒã¶ãäœæ¥ã«å¿
èŠãªæå°ã®æš©éãä»äžããã®ãæãŸããã®ã§ãããšãã° roles/bigquery.admin ã®ãããªãµãŒãã¹ããšã«æš©éãä»äžããç¹æš©ã¢ã¯ã»ã¹èšå®ãäœæããŸãããã