ããã«ã¡ã¯ãéèITæ¬éšã çµå¶ç®¡ç ãœãªã¥ãŒã·ã§ã³éšã®è€æš«ã§ãã çŸåšãéèæ©é¢ãžã® ERP ããã±ãŒãžã®æ°èŠå°å
¥æ¡ä»¶ã«æºãã£ãŠããŸãã ç§ã¯2023幎10æã« é»é ç·ç ïŒæ§ISIDïŒãžäžéå
¥ç€Ÿããã¡ããã©1幎åãçµéããŸããã ä»åã¯è»¢è·ã®çµç·¯ãå
¥ç€ŸããŠæããããšãã話ããããšæããŸãã è»¢è·æŽ»åã«ã€ã㊠åè·ã¯ãŠãŒã¶ãŒç³» SIer äŒæ¥ã§ã ERP ã®ä¿å®ãæ
åœããŠããŸããã ITç³»ã®æ¥çãä»äºã奜ãã§ã転è·åŸã ERP ãçšãã ã·ã¹ãã éçº ã«æºããããããšããæ³ãããã£ããã åæ¥ã§ ERP ãæ±ã£ãŠããåéã«çµããè»¢è·æŽ»åãéå§ããŸããã åããŠé¢æ¥ãåããäŒæ¥ã é»é ç·ç ã ã£ãã®ã§ããã颿¥ã察話圢åŒã§é²ãã ã®ãé©ãã§ããã ïŒãã£ãšãå
ãå Žãæ³åããŠããŸããïŒ äººäºã®æ¹ãã¯ãããçŸå Žã®æ¹ãã圹è·ã®æ¹ãŸã§ãšãŠããã©ã³ã¯ã«æ¥ããŠãã ãã ãŠãŒã¢ã¢ã亀ããªããé²ããŠãã ãã£ãã®ã奜å°è±¡ã§ããã å
¥ç€Ÿã®æ±ºãæ 瀟å¡ã®çããã®äººæã1çªã®æ±ºãæãšãªããŸããã ãŸã颿¥ã§çµæŽã ãã§ãªãã人ãšãªããŸã§èŠãäžã§éžèããŠããã ããããšã å
宿¿è«Ÿåã«ã«ãžã¥ã¢ã«é¢è«ãããŠããã ããæåŸãŸã§ãã©ããŒãæåãã£ãããšãè¯ãã£ãç¹ã§ããã éžèã®éçšã§ã é»é ç·ç ã®çãããšäžç·ã«åããããšããæ³ãã匷ããªãã é»é ç·ç ãžã®å
¥ç€Ÿã決ããŸããã å
¥ç€Ÿåã«äžå®ã ã£ãããš â æ¥çã®éã åŠçæä»£ã¯æ
å ±ç³»ã®å°æ»ã§ãåè·ã¯é»åæ¥çã§ãã£ããããéèæ¥çã¯åããŠã§ããã ãã®ããæ¥çç¥èã®ãã£ããã¢ããããå§ããå¿
èŠããããŸããã â¡è£œåã®éã åè·ã¯SAPãæ±ã£ãŠããã仿±ã£ãŠãã Oracle ERP Cloudã¯åããŠã§ããã åã ERP ã§ã補åãéããšææ³ãä»çµã¿ãå
šãç°ãªããããããããŸã0ããã®å匷ãå¿
èŠã§ãã ã¡ãããšè²¢ç®ã§ããããã«ãªãã®ãäžå®ãæããŠããŸããã â¢è·çš®ã®éã åè·ã§ã¯èŠªäŒç€Ÿã®ä¿å®æ¥åãæ
åœããŠãããããæ°èŠå°å
¥æ¡ä»¶ã«ã¯æºãã£ãããšããããŸããã§ããã ã·ã¹ãã éçº ã®ãããŒã¯æºäžã®ç¥èãããªããå®åã¯çµéšããªããããåè¿°ã®â â¡ã«å ã ããã«äžå®ãšãªãèŠçŽ ã®1ã€ã§ããã å
¥ç€ŸåŸã®ã®ã£ãã éžèäžã®ãã©ããŒãããªãæåãã£ããããã®ã£ããã¯ã»ãšãã©ãããŸããã§ããã åè¿°ã®å
¥ç€Ÿåã®äžå®äºé
ããéšã®çããã®ãµããŒãã®ãããã§ãåŸã
ã«è§£æ¶ãããŸããã 1ã€æãããšããã°ãâåããããâã§ãã ããã¯ããæå³ã§ã®ã®ã£ãããªã®ã§ãããæ³å以äžã«åããããç°å¢ã§ãããšæããŠããŸãã 詳现ã¯åŸè¿°ã®ãçŸåšã®åãæ¹ãã§ã話ããŸãã å
¥ç€ŸååŸã«ãããç°å¢ã®å€å 転è·ãæ©ã«åããŠäžäº¬ãããããè·å Žã ãã§ãªããå±
äœç°å¢ã倧ããå€ãããŸããã äœããšãªã¢ã決ããéãå
¥ç€Ÿåã«ãé¢ããããéšã®çãããã¢ã ãã€ã¹ ããŠãã ãã£ããããã§ é倿éãäœã¿ããããèæ
®ãããçŽåŸã®ããéšå±ã«äœãããšãã§ããç¡äºæ±äº¬ç掻ãã¹ã¿ãŒãããããšãã§ããŸããã ãŸãå€åã¹ã¿ã€ã«ã«ãå€åããããŸãããåè·ã¯å
šå¡ãåãæ ç¹ã«åºç€Ÿãæ¯æ¥é¡ãåãããŠåããŠããŸãããã çŸåšã¯ãåèªã èšæ©å¿å€ ã«åºç€Ÿå€åãšåšå®
å€åãéžæã§ããŸãã ãŸãã客æ§å
ãžã®ç§»åã®ååŸãªã©ã¯ããµãã©ã€ãã·ã§ã¢ãªãã£ã¹ã§ã®å€åãèªããããŠããŸãã åããããåé¢ãé¡ãåãããæ©äŒãå°ãªããããæåã¯éšãä»äºã«éŠŽæããã®ããšãŠãäžå®ã§ããã ãã å
¥ç€ŸåŸããéšå¡å
šå¡ãšã®1on1ããå
šå¡ãšå¯Ÿé¢ã§ããããã©ã³ãäŒãè€æ°åäŒç»ããŠããã ãç ã³ãã¥ãã±ãŒã·ã§ã³ãåããããããããã®ãæ§ã
ãªå·¥å€«ãããŠããã ããŸããã ãã®ããç°å¢ã«ã¯å²ãšæ©ã段éã§æ
£ããããšãã§ãããšæããŠããŸãã äŒç€Ÿãäºæ¥éšã§ããäžéå
¥ç€Ÿè
ã»å¥³æ§ç€Ÿå¡ã»è¥æç€Ÿå¡ã®åº§è«äŒããã£ãããš ã³ãã¥ããã£ã倿°ãããããäžéå
¥ç€Ÿã§ã人èãåºããããç°å¢ããšæããŸãã çŸåšã®åãæ¹ æ®æ®µã¯ãåºæ¬çã«æ¡ä»¶æ¥åãè¡ã£ãŠããããããŸã§èŠä»¶å®çŸ©ïœãã¹ãå·¥çšãŸã§æºãã£ãŠããŸããã å
·äœçã«ã¯ãã客æ§ãšã®ä»æ§ã®åæåœ¢æãèšèšæ¥åã»éçºããŒã ã®åããŸãšãçã宿œããŠããŸãã ç¹ã«ããŠãŒã¶ãŒãšçŽæ¥ããåãã§ããããžã·ã§ã³ã«æ§ããŠããã®ã§ã é»é ç·ç ã«å
¥ç€ŸããŠ åžæã®æ¥åã«åŸäºããããšãã§ãããããããå
宿ãæã£ãŠä»äºãã§ããŠããŸãã æ¡ä»¶ä»¥å€ã§ã¯ããã®ãããªèšäºã®å·çäœæ¥ã ã£ãããæ°äººã® OJT ã»äžéå
¥ç€Ÿè
ã®ãã©ããŒçãè¡ã£ãŠããŸãã å€åå Žæã¯ãåè¿°ã®éãéžæè¢ãå¹
åºããèªå®
ã» ãµãã©ã€ããªãã£ã¹ ã»ã客æ§å
çã ä»äºå
容ãäœèª¿ã«åãããŠæè»ã«éžæå¯èœã§ãã¡ãªããªãã€ããŠåãããšãã§ããŠããŸãã é·æäŒæã®ã¿ã€ãã³ã°ã§ã¯ãã¯ãŒã±ãŒã·ã§ã³å€åå¶åºŠã掻çšããå°æ¹ã«ããå®å®¶ãããªã¢ãŒãã¯ãŒã¯ãããããšããããŸãã å¿ããæã§ãå
¬ç§ãšãã«å
å®ãããããšãã§ããããããšãŠãåããããç°å¢ã§ãããšæããŠããŸãã ãã¹ã¯ã¯ãŒã¯ã§ ç²åŽ ãæºãŸã£ãæã«ã¯ã瀟å
ã®ãããµãŒãžã«ãŒã ãå©çšããåãã®è§£æ¶ãæ¯æããããŠããŸãã ïŒç€Ÿå¡äŸ¡æ Œã§æ Œå®ãªã®ã§ãããããªã¹ã¹ã¡ã§ãïŒ ãŸããã©ã€ããŒãã®è©±ã«ãªããŸããããã£ãºããŒã奜ããªã®ã§ ã°ããºãè²·ã£ããããŒã¯ãžè¡ã£ããããããšã楜ãã¿ã«ãæ¥ã
å±ãã§ããŸãã æåŸã« ãããŸã§èªãã§ããã ãããããšãããããŸããïŒ é»é ç·ç ã§ã¯ãæ°åã»ãã£ãªã¢æ¡çšåããå
±ã«åããŠããã仲éãåéããŠããŸãã ç§ã®æå±ããéšã¯ãäžé瀟å¡ãšæ°å瀟å¡ãåã
ã§ã女æ§ãåæ°è¿ãããŸãã ãŸãçµéšå€ã幎次ã«é¢ããããããããããšãå®çŸã§ããç°å¢ãæŽã£ãŠããŸãã ãã é»é ç·ç ã«ãèå³ãããã°ãå¿åããæ€èšããã ããã°ãšæããŸãïŒ ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @togashi.ayana ãã¬ãã¥ãŒïŒ @miyazawa.hibiki ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãã¯ãã¹ ã€ãããŒã·ã§ã³ æ¬éšãšã³ãžãã¢ãªã³ã°ã㯠ãã ãžãŒ ã»ã³ã¿ãŒã®å°æŸ€è±æ³°ã§ãã æ¬èšäºã§ã¯ GitHub CodespacesãæŽ»çšããäžã§åŠãã ãè€æ°ã®Dev Containerã®èšå®ããã ãªããžã㪠ã«ãããŠãèµ·åããDev Containerãæå®ããæ¹æ³ã玹ä»ããŸãã ã¯ããã« è€æ°ã®Dev Containerã®èšå®æ¹æ³ ããŒã«ã«ãã·ã³ã§ã®Dev Containerã®èµ·å GitHub Codespacesã§ã®Dev Containerã®èµ·å Default Codespaces configration ãšã¯ïŒ åé¡ è§£æ±ºç1 解決ç2 ãããã« ã¯ããã« åæç¥èãšãªãDev Containerã GitHub Codespacesã®æŠèŠã¯æ¬èšäºã§ã¯çç¥ããŸãã é©å®ãéå»ã«åŒç€Ÿç€Ÿå¡ãçºè¡šã®èšäºãåç»ãåç
§ããŠãã ããã ããã¯ããã°ïŒGitHub Codespace ã䜿ã£ãéçºç°å¢ã®ã¡ãªããããŸãšããŠã¿ã TECH PLAY ã®èšäºïŒéçºå¹çåäžã»ãã¬ãã·ãã«ãªåãæ¹ã»ã»ãã¥ãªãã£ã®ç¢ºä¿ââã¹ãã¬ã¹ããªãŒãªéçºäœéšããGitHub Codespacesãã§å®çŸãããã€ã³ã解説 TECH PLAY ã®ã¢ãŒã«ã€ãåç»ïŒéçºå¹çåäžãããã¬ãã·ãã«ãªåãæ¹ããã»ãã¥ãªãã£ã®ç¢ºä¿ããGitHub Codespacesã§å®çŸïŒ-ã¹ãã¬ã¹ããªãŒãªéçºäœéšã®ã«ã®- è€æ°ã®Dev Containerã®èšå®æ¹æ³ è€æ°ã®Dev Containerãèšå®ããã«ã¯ã ãªããžã㪠㮠.devcontainer é
äžã¯ã©ã®ãã㪠ãã£ã¬ã¯ã ãªæ§æã«ãªãã§ããããã äŸãã°ã VSCode ã®ããã¥ã¡ã³ã Connect to multiple containers ã§ã¯ãäžèšã®æ§æãæ¡ã£ãŠããŸãã ð project-root ð .git ð .devcontainer ð python-container ð devcontainer.json ð node-container ð devcontainer.json ð python-src ð hello.py ð node-src ð hello.js ð docker-compose.yml .devcontainer é
äžã«èšå®ããšã® ãã£ã¬ã¯ã 㪠python-container ãš node-container ãäœæã devcontainer.json ã眮ããŠããŸãã äžèšã®æ§æã«ãªãã£ãŠãè€æ°ã®Dev Containerã®èšå®ãããŸããã . âââ .devcontainer âââ DevContainerA â âââ devcontainer.json âââ DevContainerB âââ devcontainer.json .devcontainer/DevContainerA/devcontainer.json ã®äžèº« { " name ": " DevContainerA ", " image ": " mcr.microsoft.com/devcontainers/base:ubuntu " } .devcontainer/DevContainerB/devcontainer.json ã®äžèº« { " name ": " DevContainerB ", " image ": " mcr.microsoft.com/devcontainers/base:ubuntu " } ããã§ã¯ããŒã«ã«ãã·ã³ãš GitHub Codespacesäžã®2ã€ã®ãã¿ãŒã³ã§Dev Containerã®èµ·åæ¹æ³ã確èªããŸãããã ããŒã«ã«ãã·ã³ã§ã®Dev Containerã®èµ·å ããŒã«ã«ãã·ã³ã§ã®Dev Containerã®èµ·åæé ã確èªããŸãã VSCode ã® ã³ã³ãããŒã§å床éã ãéžæãããšãèšå®ããDev Containerã®äžèЧã衚瀺ãããèµ·å察象ã®Dev Containerãéžã¹ãŸãã GitHub Codespacesã§ã®Dev Containerã®èµ·å GitHub Codespacesã§ã®Dev Containerã®èµ·åæé ã確èªããŸãã VSCode ã® Create New Codespace... ãéžæåŸãèµ·å察象ã®ãã©ã³ããéžæãããšãDev Containerã®äžèЧã衚瀺ãããŸãã ããŒã«ã«ãã·ã³ã®å Žåãšç°ãªãã GitHub Codespacesã®å Žåã¯ãäžçªäžã« Default Codespaces configration ã衚瀺ãããŠããŸããDefault Codespaces configrationãšã¯ãäžäœäœè
ãªã®ã§ããããã Default Codespaces configration ãšã¯ïŒ Default Codespaces configration ãæ¥æ¬èªã§ã¯ æ¢å®ã®éçºã³ã³ãããŒæ§æ ãšåŒã³ãŸãã æ¢å®ã®éçºã³ã³ãããŒæ§æãšã¯ã GitHub ãçšæããDev Containerã§ããäžèšã®ç¹åŸŽããããŸãã GitHub ã«ãã£ãŠæ¢å®ã® Linux ã€ã¡ãŒãžããã³ã³ãããŒãäœæãããŸãã ãã® Linux ã€ã¡ãŒãžã«ã¯ã Python ãNodeã PHP ã Java ãGoã C++ ã Ruby ã.NET Core/ C# ãªã©ã®äžè¬çãªèšèªã®ã©ã³ã¿ã€ã ããŒãžã§ã³ã倿°å«ãŸããŠããŸãã ãããã®èšèªã®ææ°ãŸã㯠LTS ãªãªãŒã¹ã䜿çšãããŸãã JupyterLab ã Conda ãªã©ãããŒã¿ ãµã€ãšã³ã¹ãš æ©æ¢°åŠç¿ ããµããŒãããããŒã«ããããŸãã æ¢å®ã®éçºã³ã³ãã㌠ã€ã¡ãŒãžã«ã¯ãGitã GitHub CLI ãyarnãopensshã vim ãªã©ã®ä»ã®éçºè
ããŒã«ããŠãŒãã£ãªãã£ãå«ãŸããŠããŸãã 詳现㯠æ¢å®ã®éçºã³ã³ãããŒæ§æã®äœ¿çš ãåç
§ããŠãã ããã ãŸããDefault Codespaces configrationã衚瀺ãããã®ã¯ã .devcontainer çŽäžã« devcontainer.json ããªãå Žåã® GitHub ã®ä»æ§ã§ãã .devcontainer/devcontainer. json ãŸã㯠.devcontainer. json ãååšããå Žåã¯ãcodespace ãäœæãããšãã«äœ¿çšå¯èœãªæ§æãã¡ã€ã«ã®äžèЧã§ãããæ¢å®ã®éžæã«ãªããŸãã ã©ã¡ãã®ãã¡ã€ã«ãååšããªãå Žåã¯ãæ¢å®ã®éçºã³ã³ãããŒæ§æãæ¢å®ã§éžæãããŸãã 詳现㯠codespace ã®äœææã«ãããæ¢å®ã®æ§æã®éžæ ãåç
§ããŠãã ããã åé¡ VSCode ãã GitHub Codespacesãèµ·åããå Žåã¯Dev Containerã®äžèЧã衚瀺ããèµ·å察象ã®Dev Containerãéžã¹ããããäžèŠåé¡ã¯ãªãããã§ãããããããã©ãŠã¶ã® github .comãã GitHub Codespacesãèµ·åããå Žåã«æ³šæãå¿
èŠã§ãã ãªããžã㪠ãéã Code ãã¯ãªãã¯ã Codespacesã¿ã ãéããŸãã + ãã¿ã³ ãŸã㯠Create codespace on main ãã¯ãªãã¯ãããšãèªåã§æ¢å®ã®éçºã³ã³ãããŒæ§æã§èµ·åããŸãã èµ·å察象ã®Dev Containerãéžã¶ããšã¯ã§ããŸããã èµ·å察象ã®Dev Containerãéžã¶ã«ã¯ã  ãã¿ã³ ãã New with options... ãã¯ãªãã¯ããŸããé·ç§»å
ã®ç»é¢ã§ä»ã®ãªãã·ã§ã³ãå«ãéžæããããšãã§ããŸãã æ¯åã New with options... ããèµ·åããã®ã¯é¢åã§ããæ²¹æã㊠+ ãã¿ã³ ãŸã㯠Create codespace on main ããèµ·åãã npm run dev ãªã©ã®ã³ãã³ãå®è¡ã®å€±æåŸã«ãã¹ã«æ°ã¥ãæ®å¿µãªæ°æã¡ã«ããªããŸããåäœæã«ã¯æéãè²»çšããããã®ã§æ¹åããŸãããã 解決ç1 ãã£ã¬ã¯ã ãªã®æ§æã倿ŽããŸãã DevContainerA é
äžã® devcontainer.json ã .devcontainer çŽäžã«ç§»åããããšã§ããã©ã«ãã®Dev ContaienerãDevContainerAã®èšå®ãšããããšãã§ããŸãã 倿Žåã®æ§æ . âââ .devcontainer âââ DevContainerA â âââ devcontainer.json âââ DevContainerB âââ devcontainer.json 倿ŽåŸã®æ§æ . âââ .devcontainer â âââ DevContainerB â â âââ devcontainer.json â âââ devcontainer.json 倿ŽåŸã¯Default Codespaces configrationãæ¶ããããã©ã«ãã§DevContainerAãéžæãããŸãã VSCode ããèµ·åããå ŽåãDefault Codespaces configrationãæ¶ããŠããŸãã ãªãã ãã£ã¬ã¯ã ãªæ§æã倿ŽããŠãããŒã«ã«ãã·ã³ã§ã®Dev Containerã®èµ·åæ¹æ³ã«åœ±é¿ã¯ãããŸããã 解決ç2 ãã£ã¬ã¯ã ãªæ§æãå€ããªãå Žåã¯ãREADMEã« GitHub Codespaces äœæããŒãžãžã®ãªã³ã¯ã眮ãããšã§åé¡ãåé¿ã§ããŸããèšå®ããURL㯠Share a deep link ãã確èªã§ããŸãã Markdown ã¿ããéããšãREADMEã«åã蟌ãå€ãã³ããŒã§ããŸãã [](https://codespaces.new/Hideyasu-Ozawa/multi-dev-container) äžèšã³ããŒããå€ãREADMEã«è²Œãä»ãããšããããžã衚瀺ãããŸãã ããããã¯ãªãã¯ãããšãªãã·ã§ã³ãéžæããç»é¢ã«é£ã³ãŸãã åãªãã·ã§ã³ã®å€ãã¯ãšãªãã©ã¡ãŒã¿ã倿Žããããšã§ç°¡åã«ã«ã¹ã¿ãã€ãºã§ããŸãããããã«èšå®ããURLãäžèšã«å€æŽããŸãã https://github.com/codespaces/new/Hideyasu-Ozawa/multi-dev-container?skip_quickstart=true&machine=standardLinux32gb&repo=934587189&ref=branchName&devcontainer_path=.devcontainer%2FDevContainerB%2Fdevcontainer.json&geo=UsEast) ããããã¯ãªãã¯ãããšããã©ã³ãã«branchNameãDev Containerã«DevContainerBãRegionã«US EastãMachine typeã«4-coreãèšå®ããç¶æ
ã§éããŸãã READMEã«é
眮ããããããã GitHub Codespacesãäœæããããšã§ãDev Containerã«æ¢å®ã®éçºã³ã³ãããŒæ§æã䜿ããã¹ãåé¿ã§ããããã«ãªããŸããã ãããã« æ¬èšäºã§ã¯ãè€æ°ã®Dev Containerã®èšå®ããã ãªããžã㪠ã«ãããŠã GitHub Codespacesã§èµ·åããDev Containerãæå®ããæ¹æ³ã玹ä»ããŸããã ããŒã«ã«ãã·ã³ãš GitHub Codespacesã§Dev Containerãèµ·åããéã®ä»æ§ãç°ãªãããšã«ã¯æ³šæãèŠããŸããã解決ç1ã® ãã£ã¬ã¯ã ãªæ§æã倿Žãã€ã€ã解決ç2ã®READMEã«ãªã³ã¯ã眮ãããšã§ã GitHub Codespacesã®èµ·åæã®äœéšãããè¯ãããããšãã§ããŸããã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @ozawa.hideyasu ãã¬ãã¥ãŒïŒ Ishizawa Kento (@kent) ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éš æŠç¥ãœãªã¥ãŒã·ã§ã³ 1 éšã®è±ã§ãã æ®æ®µã¯Webã¢ããªã ã¹ãã ã¢ããªã®æ¡ä»¶ãªã©ãæ
åœããŠããŸããããšãè¶£å³ã§AIãå匷ããŠããŸãã OpenAIããæ°ããCodexãçºè¡šãããã®ã§ãã£ããéãã§ã¿ãŸãã https://help.openai.com/en/articles/11096431-openai-codex-cli-getting-started 1.ç°å¢æ§ç¯ 2.ã€ã³ã¹ããŒã« 3.ãã¢ã¢ããªãäœã 4.ãã¢ã¢ããªã§éãã§ã¿ã 5.ãã¢ã¢ããªã§éãã§ã¿ã(å) 6.ãã¶ã€ã³ãæŽãã 7.ãã¹ãã³ãŒããæžãããŠã¿ã 8.ãã¹ãã³ãŒãã远å ããŠã¿ã ãããã« 1.ç°å¢æ§ç¯ 詳现ã¯å²æããŸãããæå
ã§ä»¥äžãè¡ã£ãŠãã ããã çè
ã®ç°å¢ã¯ Windows ã§ãã VSCode ã®ã€ã³ã¹ããŒã« Node.jsã®ã€ã³ã¹ããŒã«(npmã«ãã¹ãéã) API ããŒãçºè¡ãã(OpenAIã®DeveloperããŒãžã§äœæã§ãã) 2.ã€ã³ã¹ããŒã« VSCode ã§æ°èŠã®ã¿ãŒããã«ãéãã以äžãå®è¡ããŸãã npmå®è¡ã®éã«ãæš©éç³»ã§æ¢ãããããåèªã§è¿œå ããŠãã ããã npm install -g @openai/codex 次ã«ä»¥äžãå®è¡ããŸãã codex ããã§åãããŸããæ©ãã 3.ãã¢ã¢ããªãäœã ããŠããã£ããã¢ããªãäœã£ãŠã¿ãŸãããã ããã§ããã ãæçŽãåãããAIãå±ãŸããŠããããããªãµãŒãã¹ããªããŠã©ãã§ããããã 㢠ã€ã㢠ã®åŒãåºãã§æŸçœ®ããŠããã®ã§ãããããã§æ¶è²»ããŠã¿ãããšæããŸãã Codexã«ä»¥äžã®ããã³ãããéä¿¡ããŠã¿ãŸãã Node.js + Express ã䜿ã£ãŠãæçŽãæçš¿ãããšè€æ°ã®ä»®æ³ãã£ã©ã¯ã¿ãŒïŒéœãã£ã»çç³»ã»ã¹ãã«ã¿ã»çãç³»ïŒã ChatGPT API ã䜿ã£ãŠæ¥æ¬èªã§å±ãŸãã®ã³ã¡ã³ããè¿ããŠãããWebã¢ããªãäœã£ãŠãã ãããUIã¯EJSã§æ§ç¯ãããã¹ãŠæ¥æ¬èªè¡šç€ºã«ããŠãã ããã ChatGPTã®APIããŒã¯envãã¡ã€ã«ã«ã»ããããä»çµã¿ãšããŸãããã ã¢ãã«ã¯gpt-4o-miniãªããŠã©ãã§ãããïŒ æèãå§ãŸããŸãããããããã§ããã mkdirã®ã³ãã³ããå©ããããšèŠæ±ããŠããŸãããèš±å¯ããŠã¿ãŸãã å®è¡ã§ããªããŠå°ã£ãŠãŸãããããããã§ããã ãããæåã§èºããŠããã®ã§æ
å ±ãè¶³ããŠã¿ãŸãã package. json ãäœæããŠããããšèãããŸããããYãã§è¯å®ããŠãããŸãã ãã¡ã€ã«ãäœãããŸããã æ¬¡ã¯node_modulesã® ãã£ã¬ã¯ã ãªãšenvãã¡ã€ã«ã®äœæãææ¡ããŠããŸããããYãã§è¯å®ããŠãããŸãã READMEã®äœæãææ¡ããŠããŸããããYãã§è¯å®ããŠãããŸãã ãã£ãšäžèº«ã®ã³ãŒãã£ã³ã°ã«å
¥ããŸãããindex.jsã®ææ¡ãæ¥ãŸããããYãã§è¯å®ããŠãããŸãã ãã®ããŒã¹ã§ã¹ã¯ã·ã§ãèŒããŠãããšé·ããªããããªã®ã§ãCodeXãèãã«è©°ãŸããŸã§ã¹ãããããŸããã 4.ãã¢ã¢ããªã§éãã§ã¿ã Yã10åãããæŒãããã¢ããªãã§ããããã§ãã 以äžã¯æåŸã®åºåã§ããã®ã¢ããªã®å®è¡æ¹æ³ãæããŠãããŠããŸããæé ã«åŸã£ãŠã¿ãŸãã ãšã©ãŒãåããŸãããããäžåºŠCodexãéããŠããã®äºå®ãäŒããŸãã(å
šæã³ããã§OK) ãããã° æ¹æ³ãèãå§ããŸããããã°ããææ¡ãåããŸãããã ãYãã5åãããå©ããšããã°ä¿®æ£ãçµãã£ãã¿ããã§ãã 5.ãã¢ã¢ããªã§éãã§ã¿ã(å) å床å®è¡ãããšããŸãèµ·åããŸããã ãã£ãã localhost ã«ã¢ã¯ã»ã¹ããŠã¿ãŸãã æ°ã«ãªã£ãŠããã®ã§ããã CSS ã¯æžããŠããªã(ããããåœä»€ããŠããªã)ã®ã§åçŽãªHTMLã衚瀺ãããŠããŸãã äžæããããŸããã æ¥ã«4人ããå±ãŸããããšã³ã£ããããŸããã ã¡ãªã¿ã«ãChatGPT API ãžã®ããã³ããã¯ä»¥äžã®ããã«èšèšãããŠããŸããã const personas = [ { key: 'yo', name: 'éœãã£', system: 'ããªãã¯éœãã£ã®ãã£ã©ã¯ã¿ãŒã§ããæããå
æ°ãªèšèã§ãŠãŒã¶ãŒãå±ãŸããŠãã ããã' }, { key: 'rikei', name: 'çç³»', system: 'ããªãã¯çç³»ã®ãã£ã©ã¯ã¿ãŒã§ããè«ççã§èœã¡çããèšèã§ãŠãŒã¶ãŒãå±ãŸããŠãã ããã' }, { key: 'sparta', name: 'ã¹ãã«ã¿', system: 'ããªãã¯ã¹ãã«ã¿ã®ãã£ã©ã¯ã¿ãŒã§ããå³ãããç確ãªèšèã§ãŠãŒã¶ãŒãå±ãŸããŠãã ããã' }, { key: 'iyashi', name: 'çãç³»', system: 'ããªãã¯çãç³»ã®ãã£ã©ã¯ã¿ãŒã§ããåªããæž©ããèšèã§ãŠãŒã¶ãŒãå±ãŸããŠãã ããã' }, ]; 6.ãã¶ã€ã³ãæŽãã ã·ã³ãã«ãªHTMLã ãšã¡ãã£ãšããµãããã®ã§ãããŸã£ãœããã¶ã€ã³ã«æžãæããŠã¿ãŸãããã ãã¶ã€ã³ä¿®æ£ã ããªã®ã«ãYãã10åãããå©ããããŸããã 以äžã«çç±ãæžããŠããŸãããCodeXã«æèãäŒããã®ãå°ãé¢åã§ããã ãã®èŸºã¯ GitHub Copilotã®æ¹ãæäœæ§ã¯é«ããšæããŸãã 7.ãã¹ãã³ãŒããæžãããŠã¿ã èªåçæã® ãœãŒã¹ã³ãŒã ã¯ãã¹ãã³ãŒããšã»ããã§äœæããã¹ãã ãšå人çã«ã¯èããŠããŸãã ä»åããã¹ãã³ãŒããæžãããŠã¿ãŸãã å
ã»ã©ã® CSS ã®äœæã®æãããã§ããããCodeXãçŸç¶ãææ¡ãããã®ã«ãããæéãããããŸãã 以äžã®ããã³ããã¯ããªãæå¹ã ã£ãã®ã§ã詊ãããã ãã¹ãã³ãŒããææ¡ãããŸããã ãã¹ãã«å®è¡æ¹æ³ãèšèŒããŠãããŠããã®ã§å®è¡ããŠã¿ãŸãã ã³ã±ãŸããã Codexã«äŒããŠãåå ãæ¢ããŸãã ä¿®æ£ãå®äºãããããåãã¹ãããŠã¿ãŸãã GETãšPOSTã®2æ¬ã®ãã¹ãã«ééããŸããã 8.ãã¹ãã³ãŒãã远å ããŠã¿ã ãã¹ãã³ãŒããå°ãªãããã®ã§ãCodexã«æçŽãããŒããŸãã æçŽãããŒããããšã®ããŒãžã®ç¢ºèªããã¹ãã³ãŒãã«è¿œå ãããŸããã submitã®POSTãå«ããŠãã¹ãã«ééããŸããããã§ãããã§ããã ãããã« ããŠãä»åã¯Codexã®æ€èšŒãè¡ããŸããããã³ã³ããã¹ãã®æž¡ãæ¹ä»¥å€ã¯ç¹ã«äžäŸ¿ãªç¹ã¯ãããŸããã§ããã åçç¹ãšããŠã¯ãã¹ã¿ãŒãå°ç¹ã§ãã¶ã€ã³ã«ã€ããŠãèšåããã¹ãã ã£ããªã»ã»ã»ããšã ä»åã®æ€èšŒã§ããã£ãã³ã¹ãã¯$2ïœ$3ãããã§ããã ç¡é§ãªãã£ããããŒã«ãå€ãã£ãã®ã§ãåæã®ããã³ãããæé©åããã°ãã£ãšå®ãæžããšæããŸãã ããããã AWS ãAIé¢é£ã®æ€èšŒèšäºãããããæžããŠãããŸãã â ã®ã¹ã¿ãŒãæŒããŠããã ãããšå¬ããã§ããå±ã¿ã«ãªããŸãã æåŸãŸã§èªãã§ããã ããããããšãããããŸããã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã§ã¯äžç·ã«åããŠãã ãã仲éãåéäžã§ãã以äžã®ãªã³ã¯ãããé¡ãããŸãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ äžéæ¡çš-ãšã³ã¿ãŒãã©ã€ãºç¬¬äžæ¬éš æ°åæ¡çš-ãšã³ã¿ãŒãã©ã€ãºç¬¬äžæ¬éš å·çïŒ è± è¯æ²» (@hanabusa.ryoji) ãã¬ãã¥ãŒïŒ @nakamura.toshihiro ïŒ Shodo ã§å·çãããŸãã ïŒ
åããŸããŠã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã2幎ç®ã®äœè€æ ã§ãã æè¿è©±é¡ã® MCP ãµãŒããŒãæ§ç¯ããŠãå€éšæ
å ±ãšã®é£æºããããšããææŠãããŸãã æ¢åºã®å
容ãã€äžæ£ç¢ºãªéšåããããããããŸããããç§ã®å人çãªæ€èšŒèšé²ãšããŠæ®ããŠãããããšããç®çã§ãã®èšäºãäœæããŸãã æ³å®èªè
ã¯ãžã¥ãã¢ã¬ãã«ã®ãšã³ãžãã¢ã MCP ãµãŒããŒãšã¯äœãïŒã©ã®ããã«æ§ç¯ãããïŒãå®äŸãšå
±ã«ç¥ããããšããéã«èªãã®ãã¡ããã©è¯ããšæã£ãŠããŸãã ç®æ¬¡ MCPãšã¯ïŒ ã¢ãŒããã¯ãã£æŠèŠ ãã¹ãå®è¡ 远å ã®æ€èšŒ ãŸãšã åèæç® MCP ãšã¯ïŒ æäŸå
ã®Anthropicã«ããã説æ[ 1 ]ã¯ä»¥äžã®éãã§ãã The Model Context Protocol is an open standard that enables developers to build secure, two-way connections between their data sources and AI-powered tools. ç§ã®çè§£ã§ã¯AI Agentãå€éšæ
å ±ãååŸããéã®æ¥ç¶éšã®è©±ã ãšæã£ãŠããŸãã ã€ãŸãã¯ã MCP ãµãŒããŒãçšããããšã§AI Agentãšå€éšããŒã¿ãªãœãŒã¹éã§ã®å®å
šãªã³ãã¯ã¿ã®èŠæ ŒæŽåããããšããããšã§ãã çµ±äžèŠæ ŒãæäŸãããŠããã®ã§AI Agentã«æè»œã«æ©èœãèŒãããã粟床ãåäžããããã§ããããã«ãªãã MCP ãäžå¿ã«ãšã³ã·ã¹ãã ãçãäžãããèŠããŠãããšããçŸç¶ã®åæãããŠããŸãã 2025幎3æ27æ¥ã«ã¯ChatGPTã®Agent SDK ã«ã MCP ããµããŒããããšãã£ããããªæšã®çºè¡šããããŸããã ãã®ããã«ç°ãªãAI Agentã§æ§ã
ãªããŒã¿ãœãŒã¹ãå©çšã§ããããã«ãªããšãèªç±åºŠãæ¡åŒµæ§ãé«ãŸãAI Agentã®çºå±ã«ã€ãªãããšæããŸããããã®æœ®æµã«ä¹ããããšãæããããŸãã 以äžã MCP ã®æŠèгã§ãæ¬èšäºãäœæããã¢ãããŒã·ã§ã³ã§ãã ã¢ãŒããã¯ã㣠æŠèŠ æ¬èšäºã§ã¯ãã¯ããã«å
¬åŒãæäŸããŠããQuickStart[ 2 ]ãšå
šãåãæ§æã§ãµãŒããŒãäœæããŠã¿ãŸããã ç°¡åãªæ§æå³ã¯ä»¥äžã®ãšããã§ãã ClaudeDesktopã®ã€ã³ã¹ããŒã«ãšãµã€ã³ã€ã³ããããããããŠãããŸãã ãã®ã¢ããªãã MCP ãµãŒããŒã«ã¢ã¯ã»ã¹ãã倩æ°ã®æ
å ±ãååŸãããããªæ§æã§ãã å
·äœçã«ã¯ä»¥äžã®ããŒã«ã MCP ãµãŒããŒã«é
眮ããŸãã get-alerts æå®ãããå°åã§çŸåšåºãŠããèŠå ±ãååŸãã get-forecast æå®ãããå°ç¹ã®å€©æ°äºå ±ãååŸãã ç§ã®ç°å¢ã¯ Windows ãªã®ã§ãåèè³æã®ãã®æé ã«åŸãå®è¡ããã³ãã³ããèŒããŠããŸãã 以äžã®ã³ãã³ãã PowerShell ã§å®è¡ããŸãã uvãã€ã³ã¹ããŒã«ãã Python ãããžã§ã¯ããçšæããŸãã powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" 次ã«äœæ¥ ãã£ã¬ã¯ã ãªãäœæããç§»åã ä»®æ³ç°å¢ãäœæããŠäŸåé¢ä¿ãã€ã³ã¹ããŒã«ã æåŸã« Python ã®ãã¡ã€ã«ãäœæããã³ãã³ããå®è¡ããŸãã # Create a new directory for our project uv init weather cd weather # Create virtual environment and activate it uv venv .venv\Scripts\activate # Install dependencies uv add mcp[cli] httpx # Create our server file new-item weather.py 以éã®äœæ¥ã¯ãããã§äœæããweather.pyãç·šéããŸãã ãã¡ã€ã«ã®å
é ã«ä»¥äžã®ã³ãŒãã远å ã from typing import Any import httpx from mcp.server.fastmcp import FastMCP # Initialize FastMCP server mcp = FastMCP( "weather" ) # Constants NWS_API_BASE = "https://api.weather.gov" USER_AGENT = "weather-app/1.0" The FastMCP class uses Python type hints and docstrings to automatically generate tool definitions, making it easy to create and maintain MCP tools. ããã®æ³šéã«Pyhtonã®åãã³ããšããã¥ã¡ã³ãã§ããã®ããŒã«ãå®çŸ©ããŸããšãããŸãã ãã®éšåã®çè§£ã¯å®è£
åŸã«ã§ããŸãããæåŸã«è§£èª¬ããŸãã æ¬¡ã«å€éšæ
å ±ãååŸããéšåãå®è£
ããŠããŸãã #ããããªã¯ãšã¹ãåŠç async def make_nws_request (url: str ) -> dict [ str , Any] | None : """Make a request to the NWS API with proper error handling.""" headers = { "User-Agent" : USER_AGENT, "Accept" : "application/geo+json" } async with httpx.AsyncClient() as client: try : response = await client.get(url, headers=headers, timeout= 30.0 ) response.raise_for_status() return response.json() except Exception : return None #ããããã©ãŒããã¿ def format_alert (feature: dict ) -> str : """Format an alert feature into a readable string.""" props = feature[ "properties" ] return f """ Event: {props.get('event', 'Unknown')} Area: {props.get('areaDesc', 'Unknown')} Severity: {props.get('severity', 'Unknown')} Description: {props.get('description', 'No description available')} Instructions: {props.get('instruction', 'No specific instructions provided')} """ ããã¯ä»¥äžã®ããŒã«å
ã®åŠçã§å€éšã«æ
å ±ãååŸãã«ããéãšååŸããããŒã¿æŽåœ¢ã«äœ¿çšããŠããŸãã get_alertsã¯US state codeãæåŸ
ããŠããŸãã ãããURLã®ãã¹ã«å ããããšã§ããã®å°åã®æ
å ±ã API ã§ååŸã§ãããšãã寞æ³ã§ãã get_forecastã緯床ã»çµåºŠã§åæ§ã®åŠçããªã¯ ãšã¹ ãããŠããŸããã @ mcp.tool () async def get_alerts (state: str ) -> str : """Get weather alerts for a US state. Args: state: Two-letter US state code (e.g. CA, NY) """ url = f "{NWS_API_BASE}/alerts/active/area/{state}" data = await make_nws_request(url) if not data or "features" not in data: return "Unable to fetch alerts or no alerts found." if not data[ "features" ]: return "No active alerts for this state." alerts = [format_alert(feature) for feature in data[ "features" ]] return " \n --- \n " .join(alerts) @ mcp.tool () async def get_forecast (latitude: float , longitude: float ) -> str : """Get weather forecast for a location. Args: latitude: Latitude of the location longitude: Longitude of the location """ # First get the forecast grid endpoint points_url = f "{NWS_API_BASE}/points/{latitude},{longitude}" points_data = await make_nws_request(points_url) if not points_data: return "Unable to fetch forecast data for this location." # Get the forecast URL from the points response forecast_url = points_data[ "properties" ][ "forecast" ] forecast_data = await make_nws_request(forecast_url) if not forecast_data: return "Unable to fetch detailed forecast." # Format the periods into a readable forecast periods = forecast_data[ "properties" ][ "periods" ] forecasts = [] for period in periods[: 5 ]: # Only show next 5 periods forecast = f """ {period['name']}: Temperature: {period['temperature']}°{period['temperatureUnit']} Wind: {period['windSpeed']} {period['windDirection']} Forecast: {period['detailedForecast']} """ forecasts.append(forecast) return " \n --- \n " .join(forecasts) æåŸã«ãµãŒããŒã®åæåãšå®è¡ãèšè¿°ããŸãã ãã®éšåã®æå³ã¯çŽæ¥ ã¹ã¯ãªãã ãå®è¡ãããéã«ãæšæºå
¥åºåãéä¿¡ææ®µã«äœ¿ããšããæå³ã§ãã if __name__ == "__main__" : # Initialize and run the server mcp.run(transport= 'stdio' ) ããã§ MCP ãµãŒããŒã®æºåã¯çµãããŸããã æ¬¡ã«Claudeããã®ãµãŒããŒã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã code $env:AppData\Claude\claude_desktop_config.json 以äžã®ã³ãŒãã PowerShell ã§å®è¡ããŸããããã¯åçŽã«Claude Desktopã®èšå®ãã¡ã€ã«ãæžãããã« VScode ãéãã ãã®ãã®ã§ãã éããã以äžã®èšå®ãèšè¿°ã { "mcpServers" : { "weather" : { "command" : "uv" , "args" : [ "--directory" , //ããã¯å®éã®weather.pyãŸã§ã®çµ¶å¯Ÿãã¹ãèšè¿°ãã "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather" , "run" , "weather.py" ] } } } ãã£ããŸã§ç·šéããŠããweather.pyãå®è¡ããããã«ClaudeåŽã«æç€ºããŠããŸãã ããã§æšæºå
¥åºåãåŸ
ã€ãµãŒããŒãç«ã¡ãåçã®ããã®æ
å ±ãã©ã®ããŒã«ã§ååŸããããéžã¶æºåãClaudeã§ãã§ããŸããã ããã§ã¯ãã¹ãã§ãïŒ ãã¹ãå®è¡ 以äžã®ç»åã®èµ€äžžã§å²ã£ãéšåã®ãã³ããŒã¢ã€ã³ã³ã MCP ãµãŒããŒã«é
眮ãããããŒã«ã®æ°ã瀺ããŠããŸãã æé ã«æ²¿ã£ãŠããã°2åã®ã¯ãã§ããç§ã¯è¿œå ããã®ã§3ã®è¡šç€ºã§ãã ç§ã¯å®è£
çŽåŸã¯ããã§å€æŽãåæ ãããŠããŸããã§ããã 以äžã®ã¹ã¯ã·ã§ã®ããã«ãäžåºŠå·Šäžã®ã¡ãã¥ãŒãããã¡ã€ã«âçµäºïŒãŸãã¯è¡šç€ºâåèªã¿èŸŒã¿ïŒã§æ»ã£ãŠãããšåæ ãããŠããŸããã ãŸãã¡ãã¥ãŒããéçºè
ã®æ©èœãæå¹ã«ãããš MCP ãµãŒããŒã®ãã°ãèŠãããšãã§ããããã«ãªããŸãã ä»ã®åå ã§åäœããªãã£ãå Žåã¯ããã®ãã°ãåèã«ä¿®æ£ãå ãããšè¯ããšæããŸãã åæ ããããããã³ããŒã¢ã€ã³ã³ãã¯ãªãã¯ãããšäœ¿çšã§ããããŒã«ã衚瀺ãããŸãã ã§ã¯ãããããã§ããåèè³æã«åŸã£ãŠä»¥äžã®ããã³ããã§ãã¹ããå®è¡ããŸãã Whatâs the weather in Sacramento? What are the active weather alerts in Texas? ãŸãã¯äžã€ç®ãæ¥æ¬èªã§ãæç€ºãå¯èœããå«ããŠæ€èšŒããŸããã Whatâs the weather in Sacramento? ããŒã«ã䜿çšããŠãããã®èš±å¯ãèããããã¢ãããåºãŸãã ããïŒç¡äº ãµã¯ã©ã¡ã³ã ã®å€©æ°ãååŸã§ããŸããã æ¬¡ã«äºã€ç®ãã¡ãããšè±èªã§ãæ€èšŒããŸãã What are the active weather alerts in Texas? åæ§ã«ããŒã«å®è¡ã®ãããã¢ãããåºãŠãåçãçæãããŸããã äœæ°ãªã䜿çšããŠããŸãããããŒã«ã®åŒæ°ã«ç·¯åºŠã»çµåºŠ/US state codeãæ±ããŠããã®ã«åççæã§ããã®åãã§ããïŒLLMãæ
å ±è£å®ãããŠããã®ã§ãããã 远å ã®æ€èšŒ ããã«ããŒã«ãäœã£ãŠã¿ãå®éšãããŸããã ã³ãŒãã¯ä»¥äžã®ãšããã§ãã @ mcp.tool () def add (a: int ,b: int ) -> int : """äŸã®åŠçãšããã°ããã§ã. åŒæ°ïŒ æ°åïŒæç« äžã®äºã€ã®æ°å """ return a + b ä»ãŸã§ã®æžãæ¹ãåèã«ãåŠçã远å ããŸããïŒ ãäŸã®åŠçãã®ããã«èæ¯æ
å ±ãå¿
èŠãªãã®ã¯LLMã¯éåžžåçã§ããŸããã ãã®ããŒã«ã®è¿œå ã§è¶³ãç®ãå®è¡åºæ¥ããã远å ã®æ€èšŒã¯æåã§ãã åºæ¥ãŸããïŒè¶³ãç®ã¯LLMã§ãåçã§ããŸããããäŸã®åŠçãã®çè§£ã¯ã§ããªãã§ããããïŒ ã¡ãããšããŒã«å®è¡èš±å¯ã®ãããã¢ãããåºçŸããŸããã ããã®æ³šéã«Pyhtonã®åãã³ããšããã¥ã¡ã³ãã§ããã®ããŒã«ãå®çŸ©ããŸããšãããŸãã ãã®éšåã®çè§£ã¯å®è£
åŸã«ã§ããŸãããæåŸã«è§£èª¬ããŸãã æåŸã«è¿œå å®è£
éšåãäŸã«äžèšã®å
容ã解説ããŸãã 颿°å®£èšã®åŸã«ä»¥äžã®ããã¹ãã远å ããŠããŸããã """äŸã®åŠçãšããã°ããã§ã. åŒæ°ïŒ æ°åïŒæç« äžã®äºã€ã®æ°å """ ããã§ããããäŸã®åŠçãã¯èšè¿°ããŠããŸããã ã€ãŸãã颿°ã®èª¬æãããã¹ãã§ããã°ãããŒã«ãéžæå¯èœãªç¶æ
ã«ã§ãããšããããšã§ããã åãã³ãã®éšåã def add(a:int,b:int) -> int: ã®ããã«èšè¿°ããããšã§ãå³äžã®ããã³ããã®åŸåãæå³äžæãªæ°å€ã®äžŠã³ äŸã®åŠçãé Œã 10 20 ãè§£éã§ããŠãããã§ãã æ€èšŒã¯ä»¥äžã§ãã ãŸãšã MCP ããªãçãäžãã£ãŠããã®ããå®è£
ããŠã¿ãŠçè§£ããŸããã ä»ã®ãã¡ã«è©³ãããªã£ãŠããããã§ããïŒ åèæç® [1] https://www.anthropic.com/news/model-context-protocol [2] https://modelcontextprotocol.io/quickstart/server#installing-prerequisites-macos ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @sato.yu ãã¬ãã¥ãŒïŒ @miyazawa.hibiki ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãã¯ãã¹ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®æŽç°ã§ãã re:Invent 2024 ã§ Amazon EKS Auto Mode ã®äžè¬æäŸãçºè¡šãããŸããããã®èšäºã§ã¯ Auto Mode ãå©çšããéã«æ°ãã€ããã¹ãããšãã玹ä»ããŸãã â¹ïž ãã®èšäºã®å
容㯠2025 幎 2 æ 22 æ¥æç¹ã®ãã®ã§ããææ°ã®æ
å ±ã¯ Amazon EKS ã®å
¬åŒããã¥ã¡ã³ã ããåç
§ãã ããã Amazon EKS Auto Mode ãšã¯ Amazon EBS CSI driver OSS çãšã®äž»ãªéã OSS çãšäœµçšã§ãã OSS çãããªãœãŒã¹ãç§»è¡ã§ããªã Auto Mode ã®ããŒã以å€ã§ã¯å©çšã§ããªã Amazon VPC CNI plugin OSS çãšã®äž»ãªéã AWS Load Balancer Controller OSS çãšã®äž»ãªéã èšå®é
ç®ãç°ãªã OSS çãšäœµçšã§ãã OSS çãããªãœãŒã¹ãç§»è¡ã§ããªã .spec.loadBalancerClass ã®ããã©ã«ãå€ã eks.amazonaws.com/nlb ã«ãªã è£è¶³ïŒService, Ingress ãã©ã® controller ã«ãã£ãŠåŠçãããã Service Ingress Karpenter OSS çãšã®äž»ãªéã èšå®é
ç®ãç°ãªã ããŒãã® AMI 㯠AWS ã«ãã£ãŠç®¡çããã ããŒãã¯èµ·åããæé· 21 æ¥çµéãããšçµäºãã Pod ããããŒãã®ã€ã³ã¹ã¿ã³ã¹ã¡ã¿ããŒã¿ãã€ã³ã¹ã¿ã³ã¹ãããã¡ã€ã«ãå©çšã§ããªã ãã®ä» ä»ã®ã³ã³ãã¥ãŒããªãœãŒã¹ãšäœµçšã§ãã çµèŸŒã¿ã® NodeClass, NodePool ã¯ç·šéã§ããªã ã³ã¹ã çµããã« åèè³æ Amazon EKS Auto Mode ãšã¯ Amazon EKS Auto Mode ã§ã¯ä»¥äžã®ã¢ããªã³ã«çžåœããæ©èœããããŒãžããµãŒãã¹ãšããŠæäŸãããŸãã Amazon EBS CSI driver Amazon VPC CNI plugin AWS Load Balancer Controller CoreDNS Karpenter kube-proxy EKS Pod Identity Agent ããã«ãã ã¯ã©ã¹ã¿ 管çè
ã¯ãããã®ã¢ããªã³ã®ä¿å®ã»éçšããéæŸãããŸãã â¹ïž ãã®èšäºã§ã¯åã¢ããªã³ã®è§£èª¬ã¯ããŸãããåã¢ããªã³ã®è©³çްã¯ããããã®å
¬åŒããã¥ã¡ã³ãããåç
§ãã ããã Amazon EBS CSI driver OSS çãšã®äž»ãªéã Auto Mode 㯠Amazon EBS CSI driver ãšä»¥äžã®éãããããŸãã 1 The block storage capability of EKS Auto Mode is different from the EBS CSI Driver. Static Provisioning If you want to use externally-created EBS volumes with EKS Auto Mode, you need to manually add an AWS tag with the key eks:eks-cluster-name and the value of the cluster name. Node Startup Taint You cannot use the node startup taint feature to prevent pod scheduling before storage capability readiness Custom Tags on Dynamically Provisioned Volumes You cannot use the extra-tag CLI flag to configure custom tags on dynamically provisioned EBS volumes You can use StorageClass tagging to add custom tags. EKS Auto Mode will add tags to the associated AWS resources. You will need to update the Cluster IAM Role for custom tags. For more information, see Custom AWS tags for EKS Auto resources. EBS Detailed Performance Metrics You cannot access Prometheus metrics for EBS detailed performance OSS çãšäœµçšã§ãã Auto Mode ãš Amazon EBS CSI driver ã¯äœµçšã§ããŸãã OSS çãããªãœãŒã¹ãç§»è¡ã§ããªã æ¢åã® PersistentVolume ã®ç®¡çã Amazon EBS CSI driver ãã Auto Mode ãžç§»è¡ã§ããŸããã Auto Mode ã®ããŒã以å€ã§ã¯å©çšã§ããªã Auto Mode ã管çãã PersistentVolume ãå©çšããããã«ã¯ããŒãã§ Auto Mode ã® CSI driver ã® node plugin ãåããŠããå¿
èŠããããŸãããã®ãã該åœãã PersistentVolume ãå©çšãã Pod 㯠Auto Mode ã®ããŒãã§å®è¡ããå¿
èŠããããŸãã åæ§ã« Amazon EBS CSI driver ã管çãã PersistentVolume ãå©çšããããã«ã¯ããŒãã§ Amazon EBS CSI driver ã® node plugin ãåããŠããå¿
èŠããããŸãã Amazon EBS CSI driver ã® node plugin ã® DaemonSet 㯠Auto Mode ã®ããŒãã§ã¯å®è¡ãããŸããããã®ãã該åœã® PersistentVolume ãå©çšãã Pod 㯠Auto Mode 以å€ã®ããŒãã§å®è¡ããå¿
èŠããããŸãã Amazon VPC CNI plugin OSS çãšã®äž»ãªéã Auto Mode 㯠Amazon VPC CNI plugin ãšä»¥äžã®éãããããŸãã 2 EKS Auto Mode does not support: Security Groups per Pod (SGPP). Custom Networking. The IP Addresses of Pods and Nodes must be from the same CIDR Block. Warm IP, warm prefix, and warm ENI configurations. Minimum IP targets configuration. Enabling or disabling prefix delegation. Other configurations supported by the open-source AWS CNI. Network Policy configurations such as conntrack timer customization (default is 300s). Exporting network event logs to CloudWatch. AWS Load Balancer Controller OSS çãšã®äž»ãªéã èšå®é
ç®ãç°ãªã 以äžã®ãªãœãŒã¹ã¯ AWS Load Balancer Controller ãšèšå®é
ç®ïŒãã£ãŒã«ãã annotationïŒãç°ãªããŸãã Service Ingress IngressClassParam TargetGroupBinding 詳现ã¯ä»¥äžã®ããã¥ã¡ã³ãããåç
§ãã ããã Create an IngressClass to configure an Application Load Balancer - Amazon EKS Use Service Annotations to configure Network Load Balancers - Amazon EKS OSS çãšäœµçšã§ãã Auto Mode ãš AWS Load Balancer Controller ã¯äœµçšã§ããŸãã OSS çãããªãœãŒã¹ãç§»è¡ã§ããªã æ¢åã® Service, Ingress ã®ç®¡çã AWS Load Balancer Controller ãã Auto Mode ãžç§»è¡ã§ããŸããã .spec.loadBalancerClass ã®ããã©ã«ãå€ã eks.amazonaws.com/nlb ã«ãªã Service ã® .spec.loadBalancerClass ãæªæå®ã®å Žåã Auto Mode 㯠mutating webhook ã«ãã£ãŠãã®å€ã eks.amazonaws.com/nlb ã«èšå®ããŸããããã«ã¯ä»¥äžã®åœ±é¿ããããŸãã AWS Load Balancer Controller ã«ã é¡äŒŒã® mutating webhook ããããŸããäž¡è
ãæå¹ã«ããŠããå Žåãæ£åžžã«æ©èœããã®ã¯çæ¹ã®ã¿ã§ãã .spec.loadBalancerClass ãæªæå®ã®ãŸãŸã«ã§ããªããããæ°èŠã« CLB ãäœæã§ããŸããã è£è¶³ïŒService, Ingress ãã©ã® controller ã«ãã£ãŠåŠçãããã Service .spec.loadBalancerClass ã®å€ã eks.amazonaws.com/nlb ã®å Žåã Auto Mode ã«ãã£ãŠ NLB ãäœãããŸãã 以äžã®ããããã®å Žåã AWS Load Balancer Controller ã«ãã£ãŠ NLB ãäœãããŸãã .spec.loadBalancerClass ã®å€ã service.k8s.aws/nlb ã®å Žåã service.beta.kubernetes.io/aws-load-balancer-type annotation ã®å€ã nlb-ip ãŸã㯠external ã®å Žåã .spec.loadBalancerClass ãæªæå®ã®å Žåãã¬ã¬ã·ãŒ ã¯ã©ãŠã ãããã€ããŒã«ãã£ãŠ CLB ãäœãããŸãã 3 â»åæãšã㊠.spec.type ã®å€ã LoadBalancer ã§ãããšããŸãã Ingress .spec.ingressClassName ã«æå®ãã IngressClass ã® .spec.controller ã®å€ã eks.amazonaws.com/alb ã®å ŽåãAuto Mode ã«ãã£ãŠ ALB ãäœãããŸãã .spec.ingressClassName ã«æå®ãã IngressClass ã® .spec.controller ã®å€ã ingress.k8s.aws/alb ã®å Žåã AWS Load Balancer Controller ã«ãã£ãŠ ALB ãäœãããŸãã Karpenter OSS çãšã®äž»ãªéã èšå®é
ç®ãç°ãªã 以äžã®ãªãœãŒã¹ã¯ AWS Load Balancer Controller ãšèšå®å¯èœãªé
ç®ãç°ãªããŸãã NodeClass NodePool 詳现ã¯ä»¥äžã®ããã¥ã¡ã³ãããåç
§ãã ããã Create a Node Class for Amazon EKS - Amazon EKS Create a Node Pool for EKS Auto Mode - Amazon EKS å
·äœçãªèšå®é
ç®ã¯ kubectl explain ã³ãã³ãã§ã確èªã§ããŸãã ããŒãã® AMI 㯠AWS ã«ãã£ãŠç®¡çããã Auto Mode ã§ã¯ NodeClass ã® .spec.amiSelectorTerms ïŒããŒãã® AMI ã«é¢ãããã£ãŒã«ãïŒãèšå®ã§ããŸãããAuto Mode ã®ããŒãã® AMI 㯠AWS ã«ãã£ãŠç®¡çãããŸãã Auto Mode ã®ããŒãã® AMI ã«ã¯ä»¥äžã®ç¹åŸŽããããŸãã Bottlerocket OS ãæ¡çšã SSH ã Session Manager ã«ããããŒããžã®ãã°ã€ã³ã¯äžå¯ã ãã ã kubectl debug node ã³ãã³ãã®å®è¡ã¯å¯èœã AWS ãæ°ãã AMI ããªãªãŒã¹ãããš Karpenter ããããæ€åºããŠã PodDisruptionBudget ã NodeDirsuptionBudget ãèæ
®ãã€ã€ãèªåçã«åããŒããæ°ãããã®ã«çœ®æããŸãã ãã©ãã«ã·ã¥ãŒãã£ã³ã° ã®é㯠node monitoring agent ã䜿ã£ãŠããŒãã®ãã°ãåéã§ããŸãã詳ããæ¹æ³ã¯ Retrieve node logs for a managed node using kubectl and S3 ããåç
§ãã ããã ããŒãã¯èµ·åããæé· 21 æ¥çµéãããšçµäºãã Auto Mode ã§ã¯ NodePool ã® spec.template.spec.expireAfter spec.template.spec.terminationGracePeriod ã®åèšã¯ 504h 以äžã§ãªããã°ãªããŸãããã€ãŸãåããŒãã¯èµ·åããæé· 21 æ¥çµéãããšèªåçã«çµäºããŸãã Pod ããããŒãã® ã€ã³ã¹ã¿ã³ã¹ ã¡ã¿ããŒã¿ ã ã€ã³ã¹ã¿ã³ã¹ ãããã¡ã€ã«ãå©çšã§ããªã Auto Mode ã§ã¯ NodeClass ã® spec.metadataOptions ïŒããŒãã® MetadataOptions ã«é¢ãããã£ãŒã«ãïŒãèšå®ã§ããŸããã Auto Mode ã®ããŒãã® MetadataOptions ã¯ä»¥äžã®ããã«ãªããŸãã " MetadataOptions ": { " State ": " applied ", " HttpTokens ": " required ", " HttpPutResponseHopLimit ": 1 , " HttpEndpoint ": " enabled ", " HttpProtocolIpv6 ": " disabled ", " InstanceMetadataTags ": " disabled " } HttpPutResponseHopLimit ã 1 ãªã®ã§ Pod ããããŒãã® ã€ã³ã¹ã¿ã³ã¹ ã¡ã¿ããŒã¿ ã ã€ã³ã¹ã¿ã³ã¹ ãããã¡ã€ã«ãå©çšã§ããŸãããPod ã« IAM role ãå²ãåœãŠãå¿
èŠãããå Žåã¯ä»£ããã«ä»¥äžã®ãããããå©çšããå¿
èŠããããŸãã EKS Pod Identity IAM roles for service accounts ãã®ä» ä»ã«ã Auto Mode 㯠Karpenter ãšä»¥äžã®éãããããŸãã 4 EKS limits the maximum number of pods on a node to 110. This limit is applied after the existing max pods calculation. For more information, see Choose an optimal Amazon EC2 node instance type. EKS Auto Mode automatically formats and configures NVMe local storage on supported instance types. For nodes with multiple NVMe drives, EKS sets up a RAID 0 array. This automation eliminates the need for manual formatting and RAID configuration of local NVMe storage in EKS clusters. Amazon EKS Auto Mode does not support AWS Fault Injection Service. For more information, see Managing Fault Injection Service experiments in the AWS Resilience Hub User Guide. You do not need to install the Neuron Device Plugin on EKS Auto Mode nodes. If you have other types of nodes in your cluster, you need to configure the Neuron Device plugin to not run on auto mode nodes. For more information, see Control if a workload is deployed on EKS Auto Mode nodes. ä»ã®ã³ã³ãã¥ãŒããªãœãŒã¹ãšäœµçšã§ãã Auto Mode ã¯ä»ã®ã³ã³ãã¥ãŒããªãœãŒã¹ïŒ Managed Node Group ã Fargate ãªã©ïŒãšäœµçšã§ããŸãã çµèŸŒã¿ã® NodeClass, NodePool ã¯ç·šéã§ããªã Auto Mode ã«ã¯ä»¥äžã®çµèŸŒã¿ã® NodeClass, NodePool ããããŸãã NodeClass default NodePool system general-purpose ãããã®èšå®ã¯å€æŽã§ããŸãããç°ãªãèšå®ã® NodeClass, NodePool ãå©çšãããå Žåã¯ç¬èªã® NodeClass, NodePool ãäœæããå¿
èŠããããŸãã ã³ã¹ã Auto Mode ã®ããŒãã«å¯ŸããŠè¿œå æéãçºçããŸããéé¡ã¯ EC2 ã€ã³ã¹ã¿ã³ã¹ ã®æéã®çŽ 12% çšåºŠã®ããã§ãã詳现ã¯ä»¥äžã®ããã¥ã¡ã³ãããåç
§ãã ããã Amazon EKS Pricing | Managed Kubernetes Service | Amazon Web Services çµããã« ãã®èšäºã§ã¯ Amazon EKS Auto Mode ãå©çšããéã«æ°ãã€ããã¹ãããšãã玹ä»ããŸããã Auto Mode ãæå¹ã«ããããšã§ ã¯ã©ã¹ã¿ 管çè
ã¯ããã€ãã®ã¢ããªã³ã®ä¿å®ã»éçšããéæŸãããŸããç©æ¥µçã«å©çšãæ€èšãããã§ããã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸããã åèè³æ Automate cluster infrastructure with EKS Auto Mode - Amazon EKS EKS Auto Mode - Speaker Deck ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @shibata.takao ãã¬ãã¥ãŒïŒ @nagamatsu.yuji ïŒ Shodo ã§å·çãããŸãã ïŒ Create a storage class - Amazon EKS ↩ Learn about VPC Networking and Load Balancing in EKS Auto Mode - Amazon EKS ↩ å®éã«ã¯ Auto Mode ã® mutating webhook ã®åœ±é¿ã§ .spec.loadBalancerClass ãæªæå®ã®ãŸãŸã«ããããšã¯ã§ããŸããã ↩ Create a Node Class for Amazon EKS - Amazon EKS , Create a Node Pool for EKS Auto Mode - Amazon EKS ↩
ããã«ã¡ã¯ïŒãã°ã«ãŒãçµå¶ãœãªã¥ãŒã·ã§ã³äºæ¥éšã® ç±³ä¹
ä¿ã§ãã ç§ããããŒãžã£ãŒãæ
åœããã°ã«ãŒãã«ãŠãã¯ãŒã¯ã·ã§ãã圢åŒã§çµç¹ç®æšã¥ãããããè©±ãæžããŸãã èæ¯ ãããã³ãŒãŒã®7S ã¯ãŒã¯ã®é²ãæ¹ ã¹ããã1. Shared Valueãæžãåºã ã¹ããã2. 6ã€ã®Sãæžãåºã ã¹ããã3. Shared Valueãããåããã ã¹ããã4. Shared Valueãäœæãã ã¹ããã5. çµç¹ç®æšãèãã ã¹ããã6. ã¡ã³ããŒãšå
±æãã ãã£ãŠã¿ãææ³ ãŸãšã åèæç® èæ¯ å€ãã®æ¥æ¬äŒæ¥ã§å°å
¥ãããŠããç®æšç®¡çææ³ã® MBO ã¯ãããããžã¡ã³ãã®ç¶ããšåŒã°ããP.F. ãã©ãã«ãŒ æ°ãæå±ããèãæ¹ã§ããManagement by Objectives and Self-controlãã®ç¥ã§ããçµç¹ãšããŠææãäžããããã«ã¯ãå
±éã®ç®æšïŒObjectivesïŒãçµç¹å
šäœã§å
±æããããšãšãã¡ã³ããŒã®ãèªåŸçãªè²¢ç®ããéèŠã§ã[1]ã Self-control ã®éšåãéµã§ïŒ MBO ãšããç¥èªã«å«ãŸããªããæ
ã«ãã°ãã°æãèœã¡ãŠããŸãã®ã§ããïŒãããããªããã° MBO ã¯åœ¢éªžåããäžããæŒãä»ããããç®æšãããªããšããååçãªãã®ã«ãªããªã¹ã¯ããããŸãã åã
人ã®ç®æšã¯ãæå±ããçµç¹ã®ç®æšã«ãªã³ã¯ããŠããå¿
èŠããããŸããäžäœã«ãããçµç¹ç®æšããã¡ã³ããŒã«ãšã£ãŠ çŽåŸãå
±æã§ãã ãã®ã§ãã£ãŠåããŠåäººç®æšã¯æå³ã®ãããã®ãšãªãããããéæããããšãã匷ãã¢ãããŒã·ã§ã³ãçãŸããŸãã ãã®ãããªã è
¹èœã¡ããçµç¹ç®æš ããã€ããããã«ããããŒãžã£ãŒã®ç§ãšãªãŒããŒäºåãèšäžåã§ã¯ãŒã¯ã·ã§ãããéå¬ããŸããã ãããã³ãŒãŒ ã®7S ãããã³ãŒãŒ ã®7S ïŒMcKinsey 7SïŒã¯ãçµç¹ã®ç«¶äºå匷åãç®çãšããçµç¹ã®å¹çæ§ãåæããçšéã§äœ¿ãããã¢ãã«ã§ããããšã¯ã»ã¬ã³ãã»ã«ã³ãããŒãã®èè
ã§ãããã ã»ããŒã¿ãŒãºæ°ããã ãããã³ãŒãŒ ã§ ã³ã³ãµã«ã¿ã³ã ãããŠãã1979幎ã«éçºããŸãã[2]ã ä»åã¯äŒæ¥ã¬ãã«ã§ã®åæã§ã¯ãªããç®æšã¥ãããç®çãšããŠããŒã ã®çŸç¶ææ¡ã«çšãããããæ¬¡ã®è¡šã®ããã«è§£éãããŸããã èŠçŽ èª¬æ Strategy æŠç¥ çµç¹ã®åŒ·ã¿ãšåŒ±ã¿ãäœããããäœããããªããã Structure çµç¹æ§é ããŒã æ§é ãšåœ¹å²åæ
ãã³ãã¥ãã±ãŒã·ã§ã³ã System ã·ã¹ãã ããã»ã¹ãã«ãŒã«ãããŒã«ãªã©ã®ä»çµã¿ã Shared Value å
±éã®äŸ¡å€èг ããŒã ã®æ¹åæ§ãå®ããæŽ»åã®åååãšãªããã®ãããã·ã§ã³ãããªã¥ãŒã Skill ã¹ãã« ããŒã ãšããŠã®ã¹ãã«ïŒçµç¹èœåïŒãåã
人ã®ã¹ãã«ïŒæè¡åããœããã¹ãã«ïŒã Staff 人æ 人æè²æãšæé·ãæ¡çšèšç»ã Style çµç¹é¢šå æåã®éžæã 7Sã®ãã¡ããStrategyããStructureããSystemãããããŒããªSãããShared Value ããSkillããStaffããStyleããããœãããªSããšåŒã³ãŸããäžè¬çã«ã¯ããŒããªSãéèŠèŠãããã¡ã§ããããœãããªSã«å¯ŸããŠãåçã«æ³šæã泚ããã©ã³ã¹ãåãããšãéèŠã ãšããŒã¿ãŒãºæ°ã¯èª¬ããŸãã ã¯ãŒã¯ã®é²ãæ¹ ã§ã¯å®éã«ã©ã®ãããªæµãã§ã¯ãŒã¯ãé²ããããã玹ä»ããŸãããã ã¹ããã1. Shared Value ãæžãåºã ãŸããShared Value ãèããäžã§ã®ãã¿åºããšããŠã çµç¹ããã©ããªããšãæåŸ
ãããŠããã ãããïŒ èªåãã¡ã¯ã©ããããããïŒ ãæãæãã«ä»ç®ã«æžãåºããŠãããå
±æãè¡ããŸããã çããŒã¿ãå
¬éããããšã¯ã§ããªãã®ã§ãããããšãã°ãããžãã¹ã®ããšãèãããããšã³ãžãã¢éå£ã«ãªãããããšãããããªæèŠãåºãŸããã ã¹ããã2. 6ã€ã®Sãæžãåºã ããŒããªSïŒStrategyãStructureãSystemïŒããœãããªSïŒSkillãStaffãStyleïŒã®é ã§ãåèŠçŽ ã«ã€ããŠã®ã¯ãŒã¯ã以äžã®æé ã§è¡ããŸããã As Isã®ã¬ãŒã³ã«ãçŸç¶ã®èª²é¡ïŒé»è²ã®ä»ç®ïŒãšãããŸããã£ãŠããç¶ç¶ã匷åãããããšïŒæ°Žè²ã®ä»ç®ïŒãæžãåºã ãã£ã¹ã«ãã·ã§ã³ãããªãããããã¹ãå§¿ãæ¹åæ§ãç®æšãæ€èšããŠTo Beã®ã¬ãŒã³ã«æžãåºãïŒæ°Žè²ã®ä»ç®ïŒ ããšãã°ãStrategyïŒçµç¹ã®åŒ·ã¿ãšåŒ±ã¿ãäœããããäœããããªããïŒã«ã€ããŠã¯ããé«å質ã§ãã°ãå°ãªããäžæ¹ã§ãå
šäœæãææ¡ããŠãã人ã¯äžéšã®ããã©ã³ã®ã¿ã§å±äººåããŠããããšããçŸç¶èª²é¡èªèã«åºã¥ããã人ã«äŸåããé«å質ãå®çŸããä»çµã¿ã¥ããããç®æãããšãã£ãå
·åã§ãã ã¹ããã3. Shared Value ãããåããã ã¹ããã1ã§æžãåºãããçµç¹ããã®æåŸ
ããèªåãã¡ã®æ³ãããããã³ã¹ããã2ã§6ã€ã®Sããããã«å¯ŸããŠæžãåºããTo Beã®å
容ãçºããªããæèŠäº€æãããŸãããæãäžããè¡ã£ãããæ°ããªæ°ã¥ããããã°ä»ç®ãè¶³ãããããŸãã æ¬¡ã®ã¹ãããã§ ã¹ããŒãã¡ã³ã ãäœæããåæºåãšããŠãShared Value ã«å«ãããããŒã¯ãŒãåè£ãæžãåºããŠãããŸããã ã¹ããã4. Shared Value ãäœæãã ã¹ããŒã3ã§æžãåºããããŒã¯ãŒãã䜿ãã ã¹ããŒãã¡ã³ã ãšããŠShared Value ãäœæããäœæ¥ãè¡ããŸããã ã¡ã³ããŒã®å¿ã«åºãããå
±æãåŸãŠãã¢ãããŒã·ã§ã³åäžã«ã€ãªãããããªæç« ãç®æããŠããããèããŸããã æçµçã«æã
ã®ã°ã«ãŒãã®Shared Value ã¹ããŒãã¡ã³ã ã¯ä»¥äžãšãªããŸããã åè¶ããæè¡å㚠人éå ã§éçºçµç¹ãçœåŒãããããã¯ãããžãã¹ãæç¶çã«æé·ãããããšã§æ¥çžŸæ¡å€§ã«è²¢ç®ãã ã¹ããã5. çµç¹ç®æšãèãã ã¹ããã4ãŸã§ã®äœæ¥ã¯ããè
¹èœã¡ããçµç¹ç®æšããã€ããããã®åæºåã§ãããæ¬¡ã«ãå幎ãäžå¹Žãšãã£ãã¿ã€ã ããã¯ã¹ã«ãããå
·äœçãªéæç®æšãå®ããŸãã OKR ïŒObjectives and Ker ResultsïŒãšããç®æšèšå® ãã¬ãŒã ã¯ãŒã¯ ïŒåèæç®[1]ã«ãããšOKR㯠MBO ã®å®è·µææ³ã®äžã€ãšãããïŒã®å©çšãæ€èšããŸããããä»åã¯ä»¥äžã®çç±ã§èŠéããŸããã æã
ã®ã°ã«ãŒãã®ã¡ã³ããŒã¯çŸåšæ
åœããæ¥åãå€å²ã«ããã£ãŠãããå
±éã®ObjectivesïŒKey Resultsãå®ããã®ãé£ãã Key Resultsã å®é çã«è¡šçŸãããã®ãé£ãããã®ãå€ã äž»èŠãªæŽ»åïŒäŸãéçºåºç€ã®ãšã³ãã³ã¹ã»ä¿å®ãïŒãšã掻åã«ããããããã¯ïŒäŸã次æããŒãžã§ã³ã®ãªãªãŒã¹ãïŒã§æ¬ããããããã«ã€ããŠè²¬ä»»ãæ
ããªãŒããŒã以äžãèšå
¥ããŸãããããŠãä»ã®ãªãŒããŒã質åãã³ã¡ã³ããããŠå
容ããã©ãã·ã¥ã¢ããããŸããã WHYïŒèæ¯ãæçŸ©ïŒ ãã®æŽ»åïŒãããã¯ãè¡ãæçŸ©ã¯äœã åšå²ãäžäœã®çµç¹ã«ãšã£ãŠãã©ã®ãããªå¹æãããã æã
ã®ã°ã«ãŒãã«ãšã£ãŠãã©ã®ãããªå¹æãããã WHATïŒãŽãŒã«ãéæãã¹ãããšïŒ ã©ã®ãããªç¶æ
ã«ãªã£ãŠããã°ãç®æšãéæã§ãããšèšããã å®é çã«è¡šçŸå¯èœã§ããã°ããã®éæç®æšå€ ãã€ã³ãã¯ã WHYïŒèæ¯ãæçŸ©ïŒã®å
容ãShared Value ã¹ããŒãã¡ã³ã ã§è¡šçŸããã䟡å€èгã«ç¹ãã£ãŠããããš ã§ããããã«ãã£ãŠç®æšã«å¯ŸããçŽåŸæãã¢ãããŒã·ã§ã³ãé«ãŸããŸãã ã¹ããã6. ã¡ã³ããŒãšå
±æãã ã¡ã³ããŒå
šå¡ãéããŠãäœæããçµç¹ç®æšïŒShared Value ã¹ããŒãã¡ã³ã ãšã掻åã»ãããã¯æ¯ã®éæç®æšïŒãå
±æããŸãããããããŠãåãªãŒããŒã¯é
äžã®ã¡ã³ããŒã«æåŸ
ããç®æšå
容ïŒã©ã®ãããªåœ¹å²ã§ãã©ã®ãããªåããããŠã»ãããïŒãæç« åããŠå
±æãè¡ããŸããã ãã£ãŠã¿ãææ³ æ¯èŒçé·ãäžç·ã«ãã£ãŠããã¡ã³ããŒå士ã ã£ãã®ã§ãæã£ãŠãã䟡å€èгã¯å
±éããéšåãå€ããšæããŠããŸãããã ã¯ãŒã¯ãéã㊠èšèªå ããããšã§çžäºçè§£ãããæ·±ããããšãã§ãã ãšæããŸããéã«ããæã£ãããâ¯â¯ã®æ§åã匷ããã ãªããšãããããªæ°ã¥ãããããŸããã çµç¹ç®æšã¯çŽåŸæããããã®ã«ä»äžãã£ããšæããŸããå®éããã®åŸã¡ã³ããŒãèšå®ããåèªã®åäººç®æšã¯ãã£ãããšçµç¹ç®æšã«ãªã³ã¯ããŠãããããŒã ãšããŠåãæ¹åãåããŠãããšå®æããŸããã ä»åã¯ãªãŒããŒã®ã¿ã§ã¯ãŒã¯ã·ã§ãããè¡ããŸããããå€§èŠæš¡ãªã°ã«ãŒãã§ã¯ãªãã®ã§ãã¡ã³ããŒå
šå¡ã§ãã£ãŠã¿ãŠãããããªãšæããŸããã ç®æšã¯èšå®ããŠçµããã§ã¯ãããŸããã éæã«åããŠããµãããããªã©ã«ãã£ãŠé«é »åºŠã«ç®æšãšåãåã å¿
èŠããããŸã[3]ããã®ããããããŒã ã§åãçµãã§ãããããšèããŠããŸãã ãŸãšã æ¬èšäºã§ã¯ãã ãããã³ãŒãŒ ã®7Sãã¢ãã«ãçšãããã¯ãŒã¯ã·ã§ãã圢åŒã«ããçµç¹ç®æšã¥ãããã玹ä»ããŸãããããŒã«ãã®ãã®ãããã å
±ã«ç®æšãäœã£ãŠããããã»ã¹ã«ãã£ãŠããŒã ã®åããã¹ãæ¹åãæããŠãã ãšããè¡çºã«æå³ããããšæããŸããç®æšèšå®ã«æ©ã¿ãæã€ãããŒãžã£ãŒãããŒã ãªãŒããŒã«ãšã£ãŠå°ãã§ãåèã«ãªãã°å¹žãã§ãã èšäºæ«ã« åèæç®ãšããŠãªã¹ãã¢ããããæžç±ã¯ã©ãã倧å€è¯ãæ¬ã§ãã®ã§ãæ¯éåèã«ãªãã£ãŠãã ããã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã åèæç® [1] åªè°· éŠç è ãå³è§£ ç®æšç®¡çå
¥é ãããžã¡ã³ãã®åçååã䜿ãããªããã人ã®ããã®ãçè«ãšå®è·µã100ã®ããã ãã£ã¹ã«ãŽã¡ãŒã»ãã¥ãšã³ãã£ã¯ã³ ïŒ2023ïŒ [2] ãã ã»ããŒã¿ãŒãº è ä¹
ä¿çŸä»£å èš³ ãæ°ãšã¯ã»ã¬ã³ãã»ã«ã³ãã㌠AIã«åãŠãçµç¹ã®æ¡ä»¶ã æ©å·æžæ¿ ïŒ2020ïŒ [3] å°ç°äž è²ç è ã ã¢ãžã£ã€ã« ããŒã ã«ããç®æšã¥ããã¬ã€ããã㯠OKRãæ©èœããææã«ç¹ããããã®ã¢ãããŒãã ç¿æ³³ç€Ÿ ïŒ2024ïŒ å·çïŒ @tyonekubo ãã¬ãã¥ãŒïŒ @nakamura.toshihiro ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ãããŸããŠã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äºæ¬éšã1幎ç®ã®è€åéŸä¹ä»ã§ãã æ¬èšäºã§ã¯ãITã»ãŒæªçµéšã®ç¶æ
ãã å¿çšæ
å ±æè¡è
è©Šéš ã«ãããŠå
¥ç€Ÿå幎ã§äžäœçŽ0.1ïŒ
ã«é£ã蟌ãã äœéšè«ãš 10ã®æŠç¥ ã玹ä»ããŸãã ç§ãå®éã«è¡ã£ãåŠç¿æ¹æ³ãåçç¹ãå«ããŠãå¿çšæ
å ±ã®æŠãæ¹ãèšããŸãã®ã§ãã²åèã«ããŠããã ããã°ãšæããŸãã ãªããæ¬èšäºã§ã¯ å¿çšæ
å ±æè¡è
è©Šéš ãåãäžããŠããŸããã ãã®ä»ã®è³æ Œè©Šéšã®å¯Ÿçã«æŽ»çšã§ãããšããããã ããšæããŸãã®ã§ãå¿çšæ
å ±ä»¥å€ãåéšããæ¹ããäžèªããã ããã°å¹žãã§ãã ç®æ¬¡ åœæã®ç§ã®ã¹ããã¯ãšç¶æ³ å¿çšæ
å ±æè¡è
詊éšã®æŠèŠ ååŒ·æ¹æ³ ã¹ã±ãŒãžã¥ãŒã«ãšå匷æé 䜿çšããææ ã€ã³ããã ã¢ãŠããããïŒåå詊éšïŒ ã¢ãŠããããïŒååŸè©ŠéšïŒ 詊éšçŽå 2æ¥å 忥 è©Šéšæ¬çª 詊éšå ååè©Šéš æŒäŒæ© ååŸè©Šéš ææ çµæ ãŸãšã 10ã®æŠç¥ãŸãšã æåŸã« åœæã®ç§ã®ã¹ããã¯ãšç¶æ³ ITã»ãŒæªçµéšïŒé»æ°ç³»ã®ç系倧åïŒ ç€ŸäŒäºº1å¹Žç® ITç³»è³æ Œ ä¿æ ãªã çç³»ç§ç®ã¯å²ãšåŸæ æèšã¯ããªãèŠæ ç§ãå¿çšæ
å ±ãåããããšæã£ãã®ã¯ããã è³æ Œãåããããšããããã§ã¯ãªããèªç€Ÿã®ç ä¿®ãšã¯å¥ã«èªèº«ã§ãITç³»ã®ç¥èãã€ããŠãããããšæã£ãããã§ãã ããã§ãITã«é¢ããäœç³»çãã€äœ¿ããç¥èãåŸãããããªå¿çšæ
å ±ãåéšããããšã«ããŸãããïŒåºæ¬æ
å ±ãå¿çšæ
å ±ãååŸå¿
é è³æ Œã ã£ãã®ãããã...ïŒ è³æ Œã¯åãããšãç®æšã«ããã®ãããã§ãããç¥èãäœç³»çã«ãŸãšããããŠãããå¹çããç¥èãç¿åŸããã®ã«æé©ã ãšèããŠããŸãã ãŸããèªèº«ã®ç¥èãå¢ãããçè§£ãæ·±ããããšãç®çã«åãçµããšæ°æã¡ãå
¥ãããããªããšæããŸãã å¿çšæ
å ±æè¡è
è©Šéš ã®æŠèŠ å¿çšæ
å ±æè¡è
è©Šéš ã¯åå詊éšãšååŸè©Šéšãããã ã©ã¡ãã60ç¹ä»¥äž ã§åæ Œã§ãã ãªããåå詊éšã§60ç¹ä»¥äžåããªããšãååŸè©Šéšã¯æ¡ç¹ãããªãããã§ãã ååè©Šéš è©Šéšæé 9:30 ~ 12:00ïŒ150åïŒ åºé¡åœ¢åŒ å€è¢éžæåŒïŒåè¢æäžïŒ åºé¡æ° 80å ååŸè©Šéš è©Šéšæé 13:00 ~ 15:30ïŒ150åïŒ åºé¡åœ¢åŒ èšè¿°åŒ åºé¡æ° 11åïŒè§£çã¯5åïŒ1åå¿
çã4åéžæïŒ è©Šéšç§ç® 1. ã»ãã¥ãªãã£ïŒå¿
çïŒ 2. çµå¶æŠç¥ç³» 3. ã¢ã«ãŽãªãºã 4. ã·ã¹ãã ã¢ãŒããã¯ã㣠5. ãããã¯ãŒã¯ 6. ããŒã¿ããŒã¹ 7. çµã¿èŸŒã¿ã·ã¹ãã 8. ã·ã¹ãã éçº 9. ãããžã§ã¯ããããžã¡ã³ã 10. ã·ã¹ãã ãããžã¡ã³ã 11. ã·ã¹ãã ç£æ» ååŒ·æ¹æ³ ããã§ã¯ããããååŒ·æ¹æ³ã«ã€ããŠç޹ä»ããŸãã ã¹ã±ãžã¥ãŒã«ãšå匷æé å
¥ç€ŸãšåæïŒ4æïŒã«å匷ãéå§ããŸããããããã«ããŒã¹ãèœã¡ãŸããã çµå±7ææ«ãŸã§ã¯ãã©ãã©ãšå匷ãç¶ããŠããããããã®æéã¯å¹³åãããšãããã1æ¥ããã1æéãããå匷ããŠããŸããã 8æã«ãªã£ãŠãããã«ããºããšæããå¹³æ¥3æéãäŒæ¥5æéãããã®å匷ã«åãæ¿ããŸããã äŒæ¥å°ãªããªãïŒãšæã£ãæ¹ããããšæããŸãããè¶£å³ãªã©ã«æéã䜿ã£ããããŠé©åºŠãªãªãã¬ãã·ã¥ãããããšã§å匷æéå
ã«ãã£ãããšéäžããããšãã§ããŸããã æŠç¥â ïŒé©åºŠãªãªãã¬ãã·ã¥ã§å匷æéã®å¹çãäžãã â ç¹ã«äŒæ¥ã¯1:1ãããã®å²åã§ãªãã¬ãã·ã¥ãã ãšããããã§ãçµå±åŠç¿æéãšããŠã¯ çŽ400æé ã»ã©åããŸããã ãããã仿ãã°4ïœ7æã®å匷ã§ã¯ã»ãšãã©èº«ã«ä»ããŠããªãæ°ãããã®ã§ãå®éã«ã¯ çŽ300æé ãããã ãšæããŸãã ãã£ãšåŸããå匷éå§ããŠéäžããŠåãçµããŠãããè¯ãã£ããšèããŠããŸãã æŠç¥â¡ïŒå匷éå§ã¯éäžåãä¿ãŠãæéãèŠæ®ããŠãã â å¿çšæ
å ±ã¯3, 4ãæåããªã¹ã¹ã¡ 䜿çšããææ 䜿çšããææã¯3ã€ã§ã以äžã§ç޹ä»ãã3ã€ã®ãã§ãŒãºããšã«äœ¿ãåããŠãããŸããã æžç± 什å06å¹Žãæ¥æããç§æã å¿çšæ
å ±æè¡è
åæ Œææ¬ 2024ãå¿çšæ
å ±æè¡è
ãååŸåé¡ã®éç¹å¯Ÿç Webãµã€ã å¿çšæ
å ±æè¡è
éå»åéå Ž ã€ã³ãããïŒ~ 9æäžæ¬ïŒ ã€ã³ãããã§äœ¿ã£ãã®ã¯ åæ Œææ¬ ã§ãæèšãèŠæãªç§ã¯ä»¥äžã®ããã«ã€ã³ãããããŸããã ã¡ãªã¿ã«ãç§ã¯ã㯠ãã ãžç³»ã®ç¥èãæ¬²ããã£ãã ããªã®ã§ããã®ææã®ãããžã¡ã³ããšã¹ãã©ããžã¯é£ã°ããŸããã â åŸã®ã¢ãŠããããã§äœãšããªããŸãã ã»1åšç®ïŒçè§£ã§ããªããšããããªããªãããã«ããŒãã«æžããªããèªã â äžžæèšã§ã¯ãªããåçãèãæ¹ãªã©ãä»ã®èŠçŽ ãšçµã³ä»ããªããçè§£ããããšã§æèšéãã§ããã ãæžãããŸããã ã»2åšç®ïŒèªèº«ãæžããããŒããèªã¿è¿ããŠåŸ©ç¿ â çè§£ã§ããŠããªããšããã¯å床æžããªãããã§ãã¯ãã â 1åšã ãã§ã¯å®ç§ã«çè§£ã§ããªãã®ã§ãåããã¥ãããšæãããšããã¯ã€ã³ã¿ãŒãããã䜵çšããªããããã«çè§£ãæ·±ããŸããã ã»3åšç®ïŒããã«ããŒãã§åŸ©ç¿ â æèšãããããªããšãããèŠãã â ãšã«ããäžžæèšãããšããè¡çºãå«ããªã®ã§ã2åšããŠã§ããã ãäžžæèšã®éãæžãããæåŸã®æåŸã§æèšãããããªããšãããèŠããŸããã ãã®ããã«ãäœç³»çã«ç¹ããŠçè§£ããããšã念é ã«åŠç¿ãé²ããããšã§ãäžžæèšã®éãæžããããšãã§ããäžãå
容ãååã«çè§£ããããšãã§ããŸããã åœåã®ç®çã§ãã£ããäœç³»çãã€äœ¿ããITã®ç¥èãåŸãããšãã§ãããšæããŸãã æèšãåŸæãªæ¹ããå¿çšæ
å ±ã®ç¯å²ã¯è«å€§ã§äžžæèšããã«ã¯ããªãã®æ ¹æ°ããããšæããŸãã®ã§ããã²ãç¹ããŠçè§£ãããããšã念é ã«å匷ããŠããã ããã°ãšæããŸãã æŠç¥â¢ïŒäžžæèšããããŠäœç³»çã«ãç¹ããŠçè§£ãããããšã«å°å¿µãã â ç¹ããŠçè§£ããããšã§ã䜿ããç¥èãžãšæè¯ã§ããããã€æçµçã«æçã«ããªã ã¢ãŠããããïŒååè©Šéš / 9æäžæ¬ïŒ ã€ã³ãããã§9æäžæ¬ããããŸã§äœ¿ããããã§ãã£ãšã¢ãŠããããã«å
¥ããŸããã ãŸãã¯åå詊éšå¯Ÿçã§ãã 9ææ«ã䜿ãã éå»åéå Ž ã§åå詊éšã®éå»åã3幎åïŒ6ååïŒãè§£ããŸããã ããã§æèããããšã¯ä»¥äžã®3ç¹ã§ãã 1. è©Šéšæ¹åŒã確èªããæ
£ããããš 2. ç¥èã®æãæŒããè£å®ããã€ã³ãããã§åŸãç¥èã確èªããããš 3. ãããžã¡ã³ããšã¹ãã©ããžïŒã€ã³ããããããªãã£ãç§ç®ïŒã«ã€ããŠç¥ãããš ãŸãæèããããšã¯ã詊éšã§åé¡ãã©ã®ãããªåœ¢åŒã§åºãŠãã©ã®ãããªæéé
åã§è§£ãã°ããã®ãã確èªããããšã§ãã ããã¯6ååãããã°ååã«ã€ããããšæããŸãã æ¬¡ã«ãç¥èã®æãæŒããè£å®ããããšã§ããïŒ ãããéèŠïŒ ïŒ ã€ã³ãããã§å
¥ãããã®ã¯100%å®çããããã§ã¯ãªãã®ã§ãããã§ããã«æãåºãããšã«ãã£ãŠç¥èãè£å®ã»ç¢ºèªããŠãããŸãã ãŸãã詊éšã§ã¯å€å° åæ Œææ¬ ã«æžããŠããªãããšãåºé¡ãããã®ã§ãããã«ã€ããŠã¯ã€ã³ããããã§ãŒãºã®ããã«æ°ãã«ç¥èãå
¥ããŠãããŸãã ãªãããããžã¡ã³ããšã¹ãã©ããžã«ã€ããŠã¯ããã§åé¡ãè§£ãããšã§ååã«è§£ããããã«ãªããŸããã ïŒ æ¬²ããç¥èã«ã¯å人差ãããã®ã§ãããããããŠããããã§ã¯ãããŸããã æŠç¥â£ïŒã¢ãŠããããã¯ãããŸã§è©Šéšã®åœ¢åŒã®ç¢ºèªãšç¥èã®è£å®ã»ç¢ºèª â ã€ã³ãããã§åŸãç¥èã確èªãããšå
±ã«æãæŒãããªãã éå»åã¯ããããè§£ããæ¹ãè¯ããšã¯æããŸãããITæ¥çã®ç¥èã¯æ¥ã
ã¢ããããŒããããŠããã®ã§ãããŸã§å€ãéå»åã«æãåºãå¿
èŠã¯ãªããšæããŸãã å床ã«ãªããŸãããå®éã«ãã£ãŠã¿ãŠ6ååãè§£ãã°ååã ãšæããŸããã æŠç¥â€ïŒéå»åãè§£ãã®ã¯é©åºŠã«çµããããŠè¯ã â 6ååã§åå ã¢ãŠããããïŒååŸè©Šéš / 10æäžæ¬ïŒ 10æã«å
¥ããååŸè©Šéšã®å¯Ÿçãå§ããŸããã ååŸè©Šéšã¯1ååãé·ããèªåã§åé¡ãå³éžããã®ãé¢åã ã£ãããã ååŸåé¡ã®éç¹å¯Ÿç ã䜿ã£ãŠãã©ã®ãããªåé¡ãåºãã®ãæŽãããšã«ããŸããã åºæ¬çã«ã¯ãè§£ãåé¡ãããçšåºŠå
ã«çµã£ãŠãããã®åéã ãéå»åãè§£ããŠæ
£ããŠããããšããªã¹ã¹ã¡ã§ãã ååŸè©Šéšã¯4åãéžæåé¡ã§ã6åã¯è§£ããªãåé¡ã«ãªãã®ã§ãæéãååã«ããæ¹ä»¥å€ã¯éžæããåé¡ãçµã£ãŠå匷ããã®ã广çã ãšæããŸãã ç§ã¯ä»¥äžã®ããã«ååŸåé¡ãçµããŸããã 確å®ã«è§£ãåé¡ã¯2, 3åæ±ºããŠãããå顿ãèŠãŠæ±ºããåé¡ã1, 2åã«çµã£ãŠãããšåŠç¿ãæ¬çªãäœè£ãã§ããŸãã ãããŸã§ç§ã®ç¹æ§ïŒé·æãèªãããšãèŠæïŒãšãããŸã§ã®åŠç¿æ¹æ³ã«å¯Ÿããéžå®æ¹æ³ãªã®ã§ãèªèº«ã®ç¹æ§ãšåŠç¿ç¶æ³ã«å¿ããŠéžå®ããŠã¿ãŠãã ããã ãïŒç¢ºå®ã«è§£ãåé¡ â³ïŒæ¬çªã®å顿èªãã§ããæ±ºããåé¡ âïŒçµ¶å¯Ÿã«è§£ããªãåé¡ â³ â âïŒåé¡éãè§£ããŠã¿ãçµæã絶察解ããªãããã«å€æŽããåé¡ ç§ç® éžæ 説æã»éžå®çç± 1. ã»ãã¥ãªã㣠å¿
é ååã®ç¥èãããåæã§ãåé¡ãèªãã°è§£ãã 2. æŠç¥ç³» â æç« ãé·ããç¥èãæµ
ã 3. ã¢ã«ãŽãªãºã ã 倿°ã®èª¬æããã£ããèªã¿ãå
·äœäŸãå³ãçšããŠæç¢ºåããã°è§£ãã 4. ã·ã¹ãã ã¢ãŒããã¯ã㣠Ⳡâ â èšç®åé¡ãå€ãããã¹ãããããåŸåããã£ã 5. ãããã¯ãŒã¯ â³ èšè¿°ãé£ããããšãããããããçšåºŠã®åŸç¹æºã«ãªã 6. ããŒã¿ããŒã¹ â³ ããã€ãERå³ãªã©ãåºãŠããŠã¿ã€ããæªãåããã 7. çµã¿èŸŒã¿ã·ã¹ãã ã ç¥ã£ãŠããã¢ããåºãããšãå€ããäºäŸãçè§£ãããã 8. ã·ã¹ãã éçº ã äºäŸãçè§£ããããšã«å°å¿µããã°ãããšã¯èªç€Ÿã®ç ä¿®å
容ã§è§£ãã 9. ãããžã§ã¯ããããžã¡ã³ã â æç« ãé·ããç¥èãæµ
ã 10. ãµãŒãã¹ãããžã¡ã³ã â æç« ãé·ããç¥èãæµ
ã 11. ã·ã¹ãã ç£æ» â³ â â æç« ãé·ã ãã®ããã«ãäºäŸã®æç« ãé·ããã€ã³ããããããªãã£ããããžã¡ã³ããã¹ãã©ããžç³»ä»¥å€ã®åé¡ïŒ6åïŒãè§£ããŠæ€èšŒããèªåã«ãã£ããã®ãã¹ã¿ã¡ã³ãšããŸããã ã§ããã ãçµãããšã§ãå匷ã®å¹çã倧å¹
ã«äžããã®ã«å ããæ¬çªã§åé¡ãèªãã§è¿·ã£ãŠæéãé£ãããšããªãã®ã§ãåŠç¿ã®æ®µéããçµã£ãŠå匷ããã®ã¯ããªããªã¹ã¹ã¡ã§ãã æŠç¥â¥ïŒååŸåé¡ã¯æãåã£ãŠçµã â 確å®ã«è§£ãåé¡ã2, 3åã«çµããéç¹çã«åŠç¿ãã 詊éšçŽå 2æ¥å 詊éš2æ¥åã¯ãã¢ãŠããããã«äœ¿ã£ãŠããããŒããèŠãªãã埩ç¿ãããŸããã ã©ã®ãããªåé¡ã§ãã¹ããããå確èªããããšã§ãããäžåºŠèšæ¶ãæŽçããå®çãããŸããã 忥 忥ã¯ã€ã³ãããã«äœ¿ã£ãŠããããŒãã§åŸ©ç¿ãããŸããã åŠãã ããšã確èªããç¥èã®çµã³ã€ããå床æŽçããããšã§ãæ¬çªã«åããŠæºåãæŽããããšãã§ãããšæããŸãã ãã以å€ã®æéã¯è¶£å³ã«å
ãŠãé ãäŒããŸããã æŠç¥âŠïŒè©ŠéšçŽåã¯åŸ©ç¿ããã ã â çŽåã«è©°ã蟌ãããšããŠãçŠãã§ã€ã³ãããã§ããªãããããã£ãããšã埩ç¿ããããšã¯èªç±ã«éãã 詊éšåœæ¥ 詊éšå äŒå Žã¯è¡ã£ãããšããªãé§
ã®è¿ãã®å°éåŠæ ¡ã§ããã ææ©ãã£ãããšããããéåæéã® 1 æéåãããã«äŒå Žã®æå¯ãé§
ãŸã§è¡ããéåæéã®ãªã®ãªãŸã§è¿ãã®å
¬åã§æã飯ãé£ã¹ãªããããŒãã§æçµç¢ºèªãããŠããŸãããïŒæå®€ã¯ç©ºæ°ãéãäžèªç±ã ã£ãã®ã§ãã®éžæã¯æ£è§£ã ã£ãâŠïŒ ã¡ãªã¿ã«ãæã£ãŠè¡ã£ãææã¯èªåãã€ã³ããããšã¢ãŠããããã§äœ¿ã£ãããŒã4åã§ãã æŠç¥â§ïŒè©Šéšæ¥ã®æã¯åšãã®ç©ºæ°ã«åãŸããªãããã« â èªåã§ãã®ç°å¢ãäœãåºãããšãå€§äº ååè©Šéš åå詊éšã§ã¯åãããªãåé¡ã¯ãšã«ããåŸåãã«ããŠããŸãäžéãè§£ãçµããããšãç®æšã«ããŸããã çµå±å€§å¹
ã«æéãäœã£ããããåãããªãã£ãåé¡ãå«ã㊠3 åãããèŠçŽããããããšãã§ããŸããã æŒäŒæ©ã®æéã« éå»åéå Ž ã®ãµã€ãã§è§£çéå ±ãåºãã®ã§ãããã«åããŠåé¡ã«èªåã®è§£çãæžã蟌ãã§ããããšã倧åã§ãã æ©ãè§£ãçµãã£ããéåºã§ããã®ã§ãæŒäŒæ©ãæå¹ã«äœ¿ããã人ã¯éåºããã®ããªã¹ã¹ã¡ã§ãã æŒäŒæ© æŒäŒæ©æã¯ãæãšåæ§ã®å
¬åã§æŒã飯ãé£ã¹ãªãããè§£çéå ±ãèŠãŠçãåãããããŸããã åæ Œã©ã€ã³ã«ä¹ã£ãŠããã®ã§ãå¿çœ®ããªãååŸè©Šéšã«èšãããšãã§ãããšæããŸãã æŒäŒæ©ã¯å€å°ã®åŸ©ç¿ãããŸããããå
¬åã§å°ãäœãåããããšã§ããªãã®ãªãã¬ãã·ã¥ã«ãªããŸããã æŠç¥âšïŒæŒäŒæ©ã¯é ãäŒãã â äœãåããããããŠæ°å転æããã ååŸè©Šéš ååŸè©Šéšã¯ç«ãŠãæŠç¥éãã確å®ã«è§£ãåé¡ã§ããã以äžã®åé¡ãå
ã«è§£ããŸããã 1. ã»ãã¥ãªã㣠3. ã¢ã«ãŽãªãºã 7. çµã¿èŸŒã¿ã·ã¹ãã 8. ã·ã¹ãã éçº ãããããã®å¹Žã¯çµã¿èŸŒã¿ã·ã¹ãã ããšãŠãé£ããæããããã ãã¯äžæŠåé¡çšçŽã«è§£çãæžã蟌ãã§ãããã¯ãŒã¯ãšããŒã¿ããŒã¹ãè§£ãããšã«ããŸããã å顿ãèªã¿å§ãããšãæ³å®ããããããã¯ãŒã¯ãç°¡åã ã£ãããããã®åŸã®è§£çã«ããªãã®äœè£ãã§ãããããã¯ãŒã¯ãšããŒã¿ããŒã¹ãçµã¿èŸŒã¿ã·ã¹ãã ãå
šãŠè§£ããŠæ¯èŒããããšãã§ããŸããã çµæçã«ã¯ãæ³å®ãããç°¡åã ã£ããããã¯ãŒã¯ãå°ãã§ãç¹ãåããèŠèŸŒã¿ã®ãã£ãçµã¿èŸŒã¿ã·ã¹ãã ãè§£çãšããŠæåºããŸããã ææ éå»åãããŸãå€ãè§£ããŠããªãããšããããèŠãããšã®ãªãåé¡ãå€ãã£ãã§ãããç¹ããŠçè§£ããããšã«ãã©ãŒã«ã¹ããŠå匷ããçµæãåœæ¥ãèããªããè§£çãå°åºã§ãããšæããŸãã ãŸããååŸè©Šéšã§å€å°ã®æ³å®å€ã®ãã©ãã«ããããŸããããèœã¡çããŠå¥ã®è§£çãé²ããããšã§æçµçã«ã¯æéã«äœè£ãã§ããããããã®æ¹æ³ãåã£ãŠããã£ããšæã£ãŠããŸãã æŠç¥â©ïŒè©Šéšæã«åãããªãåé¡ã¯åŸåã â åããåé¡ããè§£ãé²ããããšã§æéãšå¿ã®äœè£ã確ä¿ãã çµæ çµæã¯âŠ ç¡äºåæ Œã§ããŸããïŒ ååã85ç¹ãååŸã90ç¹ã§ãã åŸç¹ååžãã¿ããšãååã¯äžäœçŽ3%ãååŸã¯äžäœçŽ0.1%ã§ããã IT ã»ãŒæªçµéšãããããŸã§åŸç¹ãäžããããšãã§ããã®ããçè§£ã«å°å¿µããããã ãšæã£ãŠããŸãã ç¹ã«ååŸã¯éå»åãåºãããšã¯ãªãã®ã§ãã©ãã ãçè§£ããŠãããããã®ãèšããšæããŸãã ãã®ãããååãããååŸã®æ¹ãåŸç¹ãé«ãçµæãšãªã£ãã®ã ãããšæã£ãŠããŸãã ãŸãšã 10ã®æŠç¥ãŸãšã ãããŸã§ã§ç޹ä»ãã10ã®æŠç¥ããŸãšããŠãããŸãã 人ã«ãã£ãŠåãåããªããããããšæããŸãããåèã«ããŠããã ããã°å¹žãã§ãã â ã¹ã±ãžã¥ãŒãªã³ã° æŠç¥â ïŒé©åºŠãªãªãã¬ãã·ã¥ã§å匷æéã®å¹çãäžãã â ç¹ã«äŒæ¥ã¯1:1ãããã®å²åã§ãªãã¬ãã·ã¥ãã æŠç¥â¡ïŒå匷éå§ã¯éäžåãä¿ãŠãæéãèŠæ®ããŠãã â å¿çšæ
å ±ã¯3, 4ãæåããªã¹ã¹ã¡ â åŠç¿ æŠç¥â¢ïŒäžžæèšããããŠäœç³»çã«ãç¹ããŠçè§£ãããããšã«å°å¿µãã â ç¹ããŠçè§£ããããšã§ã䜿ããç¥èãžãšæè¯ã§ããããã€æçµçã«æçã«ããªã æŠç¥â£ïŒã¢ãŠããããã¯ãããŸã§è©Šéšã®åœ¢åŒã®ç¢ºèªãšç¥èã®è£å®ã»ç¢ºèª â ã€ã³ãããã§åŸãç¥èã確èªãããšå
±ã«æãæŒãããªãã æŠç¥â€ïŒéå»åãè§£ãã®ã¯é©åºŠã«çµããããŠè¯ã â 6ååã§åå æŠç¥â¥ïŒååŸåé¡ã¯æãåã£ãŠçµã â 確å®ã«è§£ãåé¡ã2, 3åã«çµããéç¹çã«åŠç¿ãã â 詊éšçŽå æŠç¥âŠïŒè©ŠéšçŽåã¯åŸ©ç¿ããã ã â çŽåã«è©°ã蟌ãããšããŠãçŠãã§ã€ã³ãããã§ããªãããããã£ãããšã埩ç¿ããããšã¯èªç±ã«éãã â 詊éšåœæ¥ æŠç¥â§ïŒè©Šéšæ¥ã®æã¯åšãã®ç©ºæ°ã«åãŸããªãããã« â èªåã§ãã®ç°å¢ãäœãåºãããšãå€§äº æŠç¥âšïŒæŒäŒæ©ã¯é ãäŒãã â äœãåããããããŠæ°å転æããã æŠç¥â©ïŒè©Šéšæã«åãããªãåé¡ã¯åŸåã â åããåé¡ããè§£ãé²ããããšã§æéãšå¿ã®äœè£ã確ä¿ãã æåŸã« ãããŸã§èªãã§ããã ãããããšãããããŸãã å¿çšæ
å ±ã¯ããªãåºé¡ç¯å²ãåºããç¶²çŸ
ããã®ã¯æ ¹æ°ãå¿
èŠã§ããããç¹ããŠçè§£ãããããšã§å¹ççã«åŠç¿ãé²ããŠãããŸãããã ãããŸã§ç§ã®åŠç¿æ¹æ³ãšæŠç¥ã§ãããä»åŸå¿çšæ
å ±ãå匷ããæ¹ã®äžå©ãšãªãã°å¹žãã§ãïŒ ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @fujishiro.ryunosuke ãã¬ãã¥ãŒïŒ @handa.kenta ïŒ Shodo ã§å·çãããŸãã ïŒ table { width: 100% !important; border-collapse: collapse; } td { border: 1px solid #000; padding: 8px; word-wrap: break-word; } td:first-child { background-color: #d3d3d3; font-weight: bold; } blockquote { border-left: 5px solid #388e3c !important; background: #e8f5e9; padding: 10px; }
ããã«ã¡ã¯ã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã®æ°äººãäœè€æ ã§ã ã¯ãã㫠質åããŸããæ°äººã®ç§ ã¿ã¹ã¯ã¯æèã®éçšããæåã«èµ·ããæ°äººã®ç§ RAGãšã¯ Bedrock knoeledgebasesã§RAGãäœæããŠã¿ã åèè³æ ã¯ãã㫠質åããŸããæ°äººã®ç§ ç§ã¯çŸåšãå
茩瀟å¡ã®æãç
©ãããªããæ¥ã
ã®æ¥åãè¡ã£ãŠããŸãã å
茩ã¯è³ªåãæè¿ããŠããŸãããå°æ¥èªåãåãç«å Žã«ãªã£ãéã«åãæ¯ãèããã§ããæ°ãããªãã®ã§ä»ãã察çãããããšæãã€ããŸããã ä»äºã§åãããªãããšã¯åœç¶ã®ããã§ãã2ã€ã«åããããšãã§ãããšæã£ãŠããŸãã 調ã¹ãã°åããããš èããªããšåãããªãããš åœããåã§ããæ°äººã¯èããªããšåãããªãããšã§è³ªåãããŸããïŒç§ã¯èª¿ã¹ãã°ããããèããæ¹ãæ©ãããªããšã¯èããŸããã©...ïŒ æ¥åäžã§ã¯ãã®ãããªèããªããšåãããªããããªå±äººçãªç¥èãæ±ãããšããããŸãã çŸå Žã§ã¯ãã»ãšãã©ãææžåããããŒã¿ãååšãã¢ã¯ã»ã¹å¯èœãªãšããã«ãããŸãããèŠæš¡ã倧ããè€éåããçµæããã®ææžã®ããããç¥ã£ãŠãã人ãéãããŠãããšãããããªç¶æ
ã«ãé¥ããã¡ã§ãã ã¿ã¹ã¯ã¯æèã®éçšããæåã«èµ·ããæ°äººã®ç§ ç§ã¯ããŸãã¯ãŒãã³ã°ã¡ã¢ãªããªããæ¬¡ã
ãšèããããšãå¢ãããšããæ¬¡ã®æ¥ã«æã¡è¶ããéã«äœãããã°ããã®ãåãããªããªããããã®ã§ã以äžã®ããã«mdãã¡ã€ã«ã§ãŸãšãããã®ãã¿ã¹ã¯ããšã«ååšããŠããŸãïŒå®æ¡ä»¶ã®ãã®ãªã®ã§æåã¯èªããªããããŒãããŠãŸãïŒã ããã§å²ãšããŸãã«ææžã«æžãèµ·ããèªåã®ç¹åŸŽãšRAGã£ãŠçžæ§ãããªãšæããŸããã å眮ããé·ããªããŸãããããã®èšäºã§ã¯æ¥åäžã§æ±ãåå¥å
·äœçãªæ
å ±ãåçã§ããããã«ãèªåããŸãšããmdãã¡ã€ã«ã§RAGãäœæã§ããã®ããæè¡çã«æ€èšŒããŸãã RAGãšã¯ å€§èŠæš¡ èšèªã¢ãã« èªäœã«å€æŽãå ããããšãªãåç
§ããæ
å ±ãæå®ããããšã§ãã«ã·ããŒã·ã§ã³ã®åé¿ãç¹æã®ç¥èã«å¯Ÿããåçã®ç²ŸåºŠãé«ããããšãã§ããŸãã ä»åã¯ä»¥äžã®ãããªæ§æã AWS äžã§æºåããããšãèããŸãã LangChainã§RAGãå®è£
ããããšãã§ããŸããæ®æ®µäœ¿çšããŠãã AWS ã§ãã«ãããžãã§äœæããããšãã§ããBedrock Knowledge bases[1]ãç°¡åãªã®ã§ä»åã¯ããã䜿çšããŸãã Bedrock Knowledge basesã§RAGãäœæããŠã¿ã åã蟌ãããŒã¿ã¯æ€èšŒãªã®ã§ä»¥äžã®ãããªãããŒããŒã¿ã«ããŸããã ãããRAGã䜿çšããã«çæAIã«æ¡ä»¶Bã®æ
åœè
ã¯èª°ã§ãããšèããŠãçããããšã¯äžå¯èœã§ãããã ã§ã¯ãå
ã»ã©ã®mdãã¡ã€ã«ãããŒã¿ãœãŒã¹ãšããŠäœ¿çšããããã«S3ã«é
眮ããŸãã æ¬¡ã«Bedrock Knowledge basesã§ãããåã蟌ã¿ãããœãŒã¹ã«æå®ããŸãã ãããžã¡ã³ãã³ã³ãœãŒã«ã§Bedrockãšæ€çŽ¢ãå·Šã®ã¡ãã¥ãŒããKnowledgebaseãéžæããŸãã KnowledgebaseãäœæãæŒäžãããšé·ç§»å
ã®ç»é¢ã§ããŒã¿ãœãŒã¹ãæå®ã§ããŸãã æ¬¡ãžãæŒäžããé·ç§»å
ã§å®éã«mdãã¡ã€ã«ã眮ãã ãã±ãã ã® URI ãæå®ããŸãã åŸã¯ç¹å¥ãªèšå®ãããªãå Žåã¯ã¢ã¯ã»ã¹èš±å¯ãããåã蟌ã¿çšã®ã¢ãã«ãæå®ããŠããã¯ãã«ããŒã¿ããŒã¹ãã¯ã€ãã¯äœæã§å®äºã§ãã ã¹ãã¢å
㯠OpenSearch ã䜿çšããŸããã äœæããããŒã¿ãœãŒã¹ãåæããŸãã ã§ã¯ç¡äºã«æ€çŽ¢ããã¹ãæ
å ±ãã³ã³ããã¹ãã«æž¡ãæºåãã§ããŸããã 以äžã®æç€ºã«ã©ã®ãããªåçãè¿ã£ãŠããããã¹ãããŸãã ããã«....!? çæAIã®æèã§ã¯åºããªãäžè¬çã§ã¯ãªãååã®ããŒã¿ãåºåãããããšã«æåããŸããã ããã§æ€èšŒãçµãããŸãã 瀟å
æ
å ±ã䜿çšããŠããã®ããšãã®ç·åŒããå«ããŠè¶
ããªããšãããªãå£ã¯è€æ°ããããã§ãããæè¡çã«ã§ããã®ã¯å¬ããã§ãã ãããŸã§èªãã§ããã ãããããšãããããŸããã åèè³æ [1]How Amazon Bedrock knowledge bases work https://docs.aws.amazon.com/bedrock/latest/userguide/kb-how-it-works.html ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @sato.yu ãã¬ãã¥ãŒïŒ @nagamatsu.yuji ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãã¯ãã¹ ã€ãããŒã·ã§ã³ æ¬éšãšã³ãžãã¢ãªã³ã°ã㯠ãã ãžãŒ ã»ã³ã¿ãŒã®å°æŸ€è±æ³°ã§ãã æ¬èšäºã§ã¯ GitHub Discussionsã§ ADR ã管çããæ¹æ³ã玹ä»ããŸãã ã¯ããã« ADRãšã¯ çè
ããŒã ã®GitHubãšã®é¢ããæ¹ ADRå°å
¥ã®ç®ç ADRã«åãããæ§è³ª èšèŒå
容 éçš ADRã®æ§æ å
šäœæ§æ åå¥ã®èª¬æ ã¿ã€ãã« ã¹ããŒã¿ã¹ ã³ã³ããã¹ã æ±ºå® åœ±é¿ ã³ã³ãã©ã€ã¢ã³ã¹ åèæ
å ± åè ADRã®ã¹ããŒã¿ã¹ç®¡ç ã¹ããŒã¿ã¹ã®é·ç§»å³ åå¥ã®ã¹ããŒã¿ã¹ DraftïŒãã©ããïŒ ProposedïŒææ¡äžïŒ Review RejectedïŒåŽäžïŒ AcceptedïŒæ¿èªæžã¿ïŒ DeprecatedïŒéæšå¥šïŒ SupersededïŒçœ®ãæãïŒ ä»ã®ããã¥ã¡ã³ããšã®éã ADRã®ç®¡çã«GitHub Discussionsãæ¡çšããçç± æ¯èŒèŠ³ç¹ æ¯èŒæ€èš çµæ Discussions ãªããžããªã®docsãã©ã«ã Issues Wiki GitHub Discussionsã§ã®éçšã§åŸãTips ç¡å¹ãªADRãOpenã®ãŸãŸãšãã DiscussionãšIssueã«é¢é£ãæããã ã¢ãŒããã¯ãã£ã®æ±ºå®ãGitHub Copilotã«èªãŸãã ãããã« ADRã®äŸ ã¹ããŒã¿ã¹ ã³ã³ããã¹ã æ±ºå® çµè« æ¡çšã®éžæè¢ãšãã®çç± GitHub Packages(npm packages) æ¡çšèŠéãã®éžæè¢ãšãã®èª²é¡ GitHub Packages(Docker Images) Monorepo Micro Service åœ±é¿ ã³ã³ãã©ã€ã¢ã³ã¹ åèæ
å ± åè ã¯ããã« ADR ãšã¯ ADR ãšã¯ Architecture Decision Record ã®ç¥ç§°ã§ãå®çŸ©ã¯ AWSã®ADRã«é¢ããããã¥ã¡ã³ã ãæåããŸãã An architectural decision record ( ADR ) is a document that describes a choice the team makes about a significant aspect of the software architecture theyâre planning to build. Each ADR describes the architectural decision, its context, and its consequences. ADRs have states and therefore follow a lifecycle. ADR ãšã¯ãããŒã ãæ§ç¯ãããœãããŠã§ã¢ ã¢ãŒããã¯ã㣠ã®éèŠãªéžæãèšè¿°ããææžã§ãã å ADR ã«ã¯ã ã¢ãŒããã¯ãã£ ã®æ±ºå®ããã®èæ¯ãããã³ãã®çµæãèšè¿°ããŸãã ADR ã«ã¯ç¶æ
ãšã©ã€ããµã€ã¯ã«ããããŸãã Architecture Decision Recordãã«ã¿ã«ãã§ ã¢ãŒããã¯ã㣠ãã£ã·ãžã§ã³ã¬ã³ãŒã ãšè¡šèšããå Žé¢ããããŸãããæçã«æ¬ããã°ã§ã¯ ADR ã§çµ±äžããŸãã å®çŸ©ã ãã§ã¯æ³åãé£ãããšæããŸãã®ã§ããåèãŸã§ã« æ¬èšäºã®æäžéšã«ãããžã§ã¯ãã§ç®¡çããADR ãèšèŒããŸããã çè
ããŒã ã® GitHub ãšã®é¢ããæ¹ æ¬é¡ã«å
¥ãåã«ãçè
ããŒã ã«ããã GitHub ã®æŽ»çšæ¹æ³ã玹ä»ããŸãã ç§ãã¡ã¯æ®æ®µ5人ååŸã®éçºããŒã ã§ãããã¯ãéçºãè¡ãããšãå€ãããããã¯ããªãŒããŒãGit/ GitHub ãç©æ¥µçã«æŽ»çšããŸããæ§æç®¡ç以å€ã«ãäžèšã®ããã«ãããã¯ãéçºã§æ±ãããŒã«ã GitHub ã«éçŽãã飿ºããããšã§ã¡ãªãããæå€§éã«åŒãåºãããšãç®æããŠããŸãã GitHub Actions: CI/CD GitHub Codespaces: éçºç°å¢ GitHub Discussions: æè¡ã«é¢ããè°è«ã ADR ãè°äºé²ã®ç®¡ç GitHub Issues: 課é¡ç®¡ç GitHub Packages: ãœãããŠã§ã¢ããã±ãŒãžã® ãã¹ãã£ã³ã° GitHub Pages: Storybookã API 仿§æžã® ãã¹ãã£ã³ã° GitHub Projects: ãããžã§ã¯ã管ç ããã¥ã¡ã³ã管çã«ãããŠã¯ã GitHub ãä¿¡é Œã§ããå¯äžã®æ
å ±æºãšããŠäœçœ®ã¥ããä»ã®ããŒã«ãšã®åæ£ãé¿ããããšã§ãæ
å ±ã®äžå
åãšä¿¡é Œæ§ã®åäžãçã£ãŠããŸãã ãŸãã ã¢ãŒããã¯ãã£ ã®æ±ºå®ã«åœ±é¿ã®ãããã¹ãŠã®ã¡ã³ããŒã GitHub ã«ã¢ã¯ã»ã¹ã§ããããšãåæãšããéææ§ã確ä¿ããªãããããã¯ãéçºãããŠããŸãã ADR å°å
¥ã®ç®ç ããã§ã¯ãæ¬é¡ã«å
¥ã£ãŠãããŸãããã ADR å°å
¥ã®ç®çã¯ æªæ¥ã®ãããžã§ã¯ãã¡ã³ããŒãåœæã® ã¢ãŒããã¯ã㣠決å®ã® ãã¬ãŒããªã ãŸã§çè§£ã§ããããš ã§ãã ç¹å®ã®èª²é¡ã«ããæ¡çšãèŠéã£ã ã¢ãŒããã¯ã㣠ã«ã€ããŠããçµç·¯ãšå€æçç±ãèšé²ããããšã§ãå°æ¥ã®ãª ã¢ãŒããã¯ã㣠æã«åæ§ã®åé¡ãèŠèœãšããé害ããªã¹ã¯ãåŒãèµ·ããããšã®æªç¶é²æ¢ãç®çãšããŠããŸãããªãŒã©ã«ãã¹ããªãŒã§èª²é¡ãåŒãç¶ãã®ã¯å°é£ã䌎ãã§ãããã ADR ã«åãããæ§è³ª 次ã«ãäžèšç®çãéæããããã® ADR ã«åãããæ§è³ªã èšèŒå
容 ãš éçš ã®èгç¹ã§æŽçããŸãã èšèŒå
容 æ¡çš ã¢ãŒããã¯ãã£ ãšæ¡çšçç± æ¡çšãèŠéã£ã ã¢ãŒããã¯ã㣠ãšèª²é¡ é¢é£ããå©çšäžã®æè¡ãæ¥åãçµç¹çãªå¶çŽ ããã¥ã¡ã³ãã®æå¹ãšç¡å¹ãå€å¥ã§ããã¹ããŒã¿ã¹ éçš ç°¡æœãªãã³ãã¬ãŒãããã äœæããã³ã¡ã³ããã³ã¹ã®ã³ã¹ããäœã ç¶ç¶çãªéçšãããŒããã ãã¹ãŠã®ãããžã§ã¯ãé¢ä¿è
ãã¢ã¯ã»ã¹ã§ãã 誰ããã€äœã倿Žãããã远跡ã§ãã ä»ã®ããã¥ã¡ã³ããã³ãŒããšæŽåæ§ãåããŠãã é©åã«ã¬ãã¥ãŒãããæ¿èªãããŠãã ADR ã®æ§æ äžèšã®ç®çãæ§è³ªãèžãŸãã ADR ã®æ§æãäžèšãšããŸããã å
šäœæ§æ ã¿ã€ãã« ã¹ããŒã¿ã¹ ã³ã³ããã¹ã æ±ºå® åœ±é¿ ã³ã³ãã©ã€ã¢ã³ã¹ åèæ
å ± åè åå¥ã®èª¬æ ã¿ã€ãã« ã¢ãŒããã¯ã㣠決å®ã®ç°¡åãªèª¬æ ãã©ãŒããã㯠[ADR_çªå·] ã¿ã€ãã« äŸã [ADR_002] åºç€ã³ãŒãã®å
¬éæ¹æ³ ã¹ããŒã¿ã¹ ã¹ããŒã¿ã¹ã¯6çš®é¡ãã DraftïŒãã©ããïŒ ProposedïŒææ¡äžïŒ AcceptedïŒæ¿èªæžã¿ïŒ RejectedïŒåŽäžïŒ DeprecatedïŒéæšå¥šïŒ SupersededïŒçœ®ãæãïŒ ã¹ããŒã¿ã¹ã®è©³çްã¯åŸè¿°ã® ADR ã®ã¹ããŒã¿ã¹ç®¡ç ãåç
§ ã³ã³ããã¹ã 決å®ãäžããç¶æ³ å©çšäžã®æ¢åæè¡ãšã®å
Œãåããçµç¹ãäœå¶ãããžãã¹é¢ã®æéçãªå¶çŽãèžãŸãã æ±ºå® 決å®ãšæ ¹æ ä»ã®æ¡çšãèŠéã£ãåè£ãšèª²é¡ åœ±é¿ æ±ºå®ã«ããåœ±é¿ ã³ã³ãã©ã€ã¢ã³ã¹ 決å®ãéµå®ãããŠããããšã確èªããæ¹æ³ åèæ
å ± åç
§ãã¹ãäžæ¬¡æ
å ± çè§£ãä¿ãããã°ïŒä»»æïŒ åè ãã®ä»ã®åèïŒä»»æïŒ ADR ã®ã¹ããŒã¿ã¹ç®¡ç ADR ã®ã¹ããŒã¿ã¹é·ç§»ãšãã¬ãã¥ãŒã®ããã»ã¹ãå®çŸ©ããŸãã Acceptedã®ã¹ããŒã¿ã¹ãå¯äžã ADR ãæå¹ã§ããããšã瀺ããŸãã ã¹ããŒã¿ã¹ã®é·ç§»å³ åå¥ã®ã¹ããŒã¿ã¹ DraftïŒãã©ããïŒ ææ¡è
ãäœæäžã®ç¶æ
ä»ã®ã¡ã³ããŒãžã¯åšç¥å ProposedïŒææ¡äžïŒ åšç¥æžã¿ã§ããã¬ãã¥ãŒå¯èœãªç¶æ
Review â» å€æã§ããã¹ããŒã¿ã¹ã§ã¯ãããŸããã ã¬ãã¥ãŒå®äºã®å Žåãæ¿èªãŸãã¯åŽäžãžé²ã ææäºé
ããã®å Žåãä¿®æ£è
ãžå·®ãæ»ã RejectedïŒåŽäžïŒ ã¬ãã¥ãŒãçµãŠæ¡çšããåŽäžãšããç¶æ
ADR äœæè
ã¯åŽäžã®çç±ã ADR ã«è¿œèšãã æ±ºå®ãç¡å¹ã§ããããšã瀺ã AcceptedïŒæ¿èªæžã¿ïŒ ã¬ãã¥ãŒãçµãŠæ¿èªããç¶æ
決å®ãæå¹ã§ããããšã瀺ã DeprecatedïŒéæšå¥šïŒ æ¿èªæžã¿ã® ADR ãæè¡ãŸãã¯æ¥åããã®ä»ã®çç±ã«ããæšå¥šããªãç¶æ
決å®ãç¡å¹ã§ããããšã瀺ã SupersededïŒçœ®ãæãïŒ æ¢åã®æ¿èªæžã¿ã® ADR ã®å
容ããæŽæ°ãŸãã¯ä»£æ¿ããæ°ãã ADR ãæ¿èªããç¶æ
決å®ãç¡å¹ã§ããããšãç€ºã æ¿èªæžã¿ã® ADR ã鿿޿°ãããæ°èŠ ADR ãäœæããããšã«æ³šæ ä»ã®ããã¥ã¡ã³ããšã®éã ADR ãšé¡äŒŒããããã¥ã¡ã³ãã® äŒçµ±ç㪠ã¢ãŒããã¯ã㣠èšè¿° ã DesignDoc ãšã®éããæŽçããŸãã äŒçµ±ç㪠ã¢ãŒããã¯ã㣠èšè¿°ïŒTraditional Software Architecture DescriptionïŒ ãšã¯ãã Design It! ãã«ãŠèšåã®ãããæš©åšçã§ããææç©ã«å«ãŸããèšèšããã¥ã¡ã³ãã§ããèšå€§ã§å
æ¬çãªç¹åŸŽããããŸãã DesignDoc ãšã¯ãç¹å®ã®æ©èœã®èšèšæ¹éãæè¡éžå®ããŸãšããéçºããŒã å
ã§ã®åæåœ¢æãæææ±ºå®ã«æ±ãèšèšããã¥ã¡ã³ãã§ãã ADR ãšéè€ããéšåããããŸããæ©èœãåŠçæ¹åŒã«çŠç¹ãåœãŠãŠããŸããDesignDocãäœæããå Žåã¯ã ã¢ãŒããã¯ã㣠決å®ã«é¢ããéšåã ADR ã«èšèŒãåç
§ãšããã®ãããã§ãããã äŒçµ±ç㪠ã¢ãŒããã¯ã㣠èšè¿° DesignDoc ADR ç®ç ã·ã¹ãã å
šäœã® ã¢ãŒããã¯ã㣠ãèšé² ç¹å®æ©èœãèšèšå€æŽã®èšé² ç¹å® ã¢ãŒããã¯ã㣠äžã®æ±ºå®ãèšé² ã¹ã³ãŒã ã·ã¹ãã å
šäœ ç¹å®ã®æ©èœã ã³ã³ããŒãã³ã ç¹å®ã®æ±ºå®ããã®åœ±é¿ç¯å²ã«éå® èšé²å
容 ã·ã¹ãã å
šäœã®æ§é ãäŸåé¢ä¿ãéæ©èœèŠä»¶ãªã©å
æ¬çã«èšé² æ©èœã®èšèšè©³çްãæè¡ç ãã¬ãŒããªã 決å®ã®èæ¯ãéžæè¢ãçµè«ã圱é¿ãèšé² äœæã¿ã€ãã³ã° ãããžã§ã¯ãã®åææ®µéããçŽåãŸã§ã®æé æ©èœéçºåãéçºäž æ©èœå€æŽãçããã¿ã€ãã³ã° éèŠãª ã¢ãŒããã¯ã㣠決å®ãè¡ãããã¿ã€ãã³ã° å©çšæé é·æçïŒã·ã¹ãã ã皌åããéãïŒ é·æçïŒæ©èœãããéãïŒ é·æçïŒæ±ºå®ãæå¹ãªéïŒ æŽæ°é »åºŠ äœ é« äœïŒæ¿èªåŸã®å
å®¹ã¯æŽæ°ããæ°ãã«äœæïŒ æŽæ°é£æåºŠ é« äœ äœ åœ¢åŒ æš©åšçã§å
¬åŒ ç°¡æœ ç°¡æœ å
容ã®ç²åºŠ 詳现ãã€å
æ¬ç å®çšçãã€è»œé å®çšçãã€è»œé äž»ãªèªè
éçºããŒã ãéçšããŒã ãçŽåå
éçºããŒã éçºããŒã ADR ã®ç®¡çã« GitHub Discussionsãæ¡çšããçç± çè
ããŒã ã®GitHubãšã®é¢ããæ¹ ã®ãšãããããŒã«ã¯ GitHub ã«éçŽããæ¹éã®ãããããã¥ã¡ã³ã管çã GitHub ã§éçšããåæããããŸãã GitHub ã®äžã§ãããã¥ã¡ã³ãã管çããæ¹æ³ã¯è€æ°ãããäžèš4ã€ã®åè£ãæ€èšããŸããã Discussions ãªããžã㪠ã®docsãã©ã«ã Issues Wiki æ¯èŒèŠ³ç¹ ADR ã® GitHub ã§ã®ç®¡çæ¹æ³ã®4åè£ãäžèš5ã€ã®èгç¹ã§æ¯èŒããŸãã æ§æç®¡ç 誰ããã€äœã倿Žããã远跡ã§ããã ãã³ãã¬ãŒãã®å©çš æ±ºãŸã£ããã©ãŒãããã§æ°èŠäœæã§ããããŸãã¯è€è£œã§ããã æ€çŽ¢æ§ ã¿ã€ãã«ãå
容ãç¹å®ã¯ãŒãã§æ€çŽ¢ã§ããã ãã£ã«ã¿ãŒã®å®¹ææ§ ä»çšéã®ããã¥ã¡ã³ããšåé¢ã§ããã ADR ã®äžèЧåãã§ããã ADR ã«ã¬ãã¥ãŒãæ®ããã ã¬ãã¥ãŒã³ã¡ã³ããã©ãã«æ®ãã æ¯èŒæ€èš çµæ äžè¡šã®æ¯èŒçµæããã ADR 管çã«ã¯Discussionsãæ¡çšããŸããã Discussions ãªããžã㪠ã®docsãã©ã«ã Issues Wiki æ§æç®¡ç â â â â ãã³ãã¬ãŒãã®å©çš â â â ⯠æ€çŽ¢æ§ â â â ⯠ãã£ã«ã¿ãŒã®å®¹ææ§ â ⯠⯠⯠ADR ã«ã¬ãã¥ãŒãæ®ããã â ⯠⯠à â: 容æã«å¯èœ â: å¯èœ Ã: äžå¯èœãŸãã¯çŸå®çã§ãªã Discussions æ§æç®¡çïŒâïŒ å³äžã®editedã®ãã«ããŠã³ãã远跡å¯èœ ã¹ããŒã¿ã¹ç®¡çã®æ¹æ³ããéåžžã®ã³ãŒããšæ¯èŒããŠã倿޿°ã¯å°ãªãããååãšå€æ ãã³ãã¬ãŒãã®å©çšïŒâïŒ Discussion Templateã§ãã³ãã¬ãŒãåå¯èœ .github/DISCUSSION_TEMPLATE/{categoryName}.yaml ã®ããã«ã«ããŽãªåã® YAML ãäœæãIssue Templateãšç°ãªã YAML ã®ãã¡ã€ã«åã«èŠåããã詳现ã¯å
¬åŒããŒãžãåç
§ ãã£ã¹ã«ãã·ã§ã³ ã«ããŽãª ãã©ãŒã ã®äœæ æ€çŽ¢æ§ïŒâïŒ ããã¹ãæ€çŽ¢ãå¯èœ ãã£ã«ã¿ãŒã®å®¹ææ§ïŒâïŒ ãµã€ãããŒã® ADR ã®ã«ããŽãªãŒéžæã«ãããã£ã«ã¿ãŒïŒ1ã¯ãªãã¯ïŒ ã©ãã«ã§ã®ãã£ã«ã¿ãŒãå¯èœ ADR ã©ãã«ãš ADR ã®ã¹ããŒã¿ã¹ã®ã©ãã«ãé¢é£æè¡ã®ã©ãã«ä»äžã«ããèŠèªæ§åäž ADR ã«ã¬ãã¥ãŒãæ®ãããïŒâïŒ Discussionå
ã§ã®ã³ã¡ã³ããšããŠã¬ãã¥ãŒ ããŒãããšã«ã¹ã¬ããåããŠãã¹ã¬ããå
ã§ãªãã©ã€å¯èœ ADR æ¬äœãšã¬ãã¥ãŒã®ã³ã¡ã³ããåäžããŒãžã«ãããæèéçšã蟿ãããšãã§ãã ãªããžã㪠ã®docsãã©ã«ã æ§æç®¡çïŒâïŒ æãã ãã³ãã¬ãŒãã®å©çšïŒâïŒ ãã³ãã¬ãŒããã¡ã€ã«ãçšæããè€è£œå©çš æ€çŽ¢æ§ïŒâïŒ ããã¹ãæ€çŽ¢ãå¯èœ ãã£ã«ã¿ãŒã®å®¹ææ§ïŒâ¯ïŒ /docs/ adr é
äžã«éçŽããããšã§ä»ã®ããã¥ã¡ã³ããšåé¢ /docs/ adr é
äžã«ãã©ããã«é
眮ãããã ADR ã®çš®é¡ã«å¿ã㊠ãã£ã¬ã¯ã ãªãåããã¯æ€èšã®äœå°ããã®ããè©äŸ¡ã¯â¯ ADR ã«ã¬ãã¥ãŒãæ®ãããïŒâ¯ïŒ PRã«ãŠã¬ãã¥ãŒã ADR ãã該åœã®PRãæ¢ãæéããã®ããè©äŸ¡ã¯â¯ GitHub äžãããã¡ã€ã«ãBlameãã¥ãŒã§è¡šç€ºããŠPRã蟿ã Issues æ§æç®¡çïŒâïŒ å³äžã®Editsã®ãã«ããŠã³ãã远跡å¯èœ ãã³ãã¬ãŒãã®å©çšïŒâïŒ Issue Templateã§ãã³ãã¬ãŒãåå¯èœ .github/ISSUE_TEMPLATE/{templateName}.yml ã§ãã³ãã¬ãŒãå æ€çŽ¢æ§ïŒâïŒ ããã¹ãæ€çŽ¢ãå¯èœ ãã£ã«ã¿ãŒã®å®¹ææ§ïŒâ¯ïŒ Labelsã®ãã«ããŠã³ãã ADR ã©ãã«ã§ãã£ã«ã¿ãŒïŒ2ã¯ãªãã¯ïŒ Discussionã¯1ã¯ãªãã¯ã®ããè©äŸ¡ã¯â¯ ADR ã«ã¬ãã¥ãŒãæ®ãããïŒâ¯ïŒ ã¹ã¬ããåã¯ã§ããªãããã©ããã«ã³ã¡ã³ãå¯èœãªããè©äŸ¡ã¯â¯ Wiki æ§æç®¡çïŒâïŒ revisionsãã远跡å¯èœ ãã³ãã¬ãŒãã®å©çšïŒâ¯ïŒ ãã³ãã¬ãŒãã®ããŒãžãäœæããè€è£œå©çš ãã¡ã€ã«ã®è€è£œãšæ¯èŒãããšæéãããããè©äŸ¡ã¯â¯ æ€çŽ¢æ§ïŒâ¯ïŒ Wiki åäœã«æ€çŽ¢æ©èœã¯ãªããã ãªããžã㪠å
šäœã§æ€çŽ¢å¯èœãªããè©äŸ¡ã¯â¯ ãã£ã«ã¿ãŒã®å®¹ææ§ïŒâ¯ïŒ ãµã€ãããŒã§éå±€æ§é ã衚çŸã§ãããæéãããããè©äŸ¡ã¯â¯ ADR ã«ã¬ãã¥ãŒãæ®ãããïŒÃïŒ ADR ã«è¿œèšããããšã§ã¬ãã¥ãŒãšã³ã¡ã³ããå¯èœã ãçŸå®çã§ãªãããè©äŸ¡ã¯Ã GitHub Discussionsã§ã®éçšã§åŸãTips GitHub DiscussionsãçšããŠã ADR 管çãã·ã³ãã«ã«éçšããããšãã§ããŸããéçšããäžã§åŸãTipsã玹ä»ããŸãã ç¡å¹ãª ADR ãOpenã®ãŸãŸãšãã ADR ã®ã¹ããŒã¿ã¹ãDeprecatedãRejectedãSupersededã«å€åããç¡å¹ãª ADR ãšãªã£ãŠãDiscussionã¯Openã®ãŸãŸã§éçšããŸãããã㯠GitHub Discussionsã®ããã©ã«ãã®ãã£ã«ã¿ãŒæ¡ä»¶ãOpenãªDiscussionã®ã¿è¡šç€ºã®ããã§ããç¡å¹ãª ADR å«ãäžèЧã§èŠãããããç¡å¹ãª ADR ãCloseããŸããã DiscussionãšIssueã«é¢é£ãæããã Discssionã«èšè¿°ãã ADR ãIssueã®èª²é¡ã«é¢é£ãæã€å Žåã¯èŸ¿ããããã«çžäºã«ãªã³ã¯ã貌ããŸãã DiscussionsããŒãžã®æ€çŽ¢çªããã¯Issueã¯æ€çŽ¢ç¯å²å€ã§ããIssueãã³ãŒããå«ããŠæ€çŽ¢ãããå Žåã¯ã ãªããžã㪠å
šäœã§æ€çŽ¢ããŸãããã ã¢ãŒããã¯ãã£ ã®æ±ºå®ã GitHub Copilotã«èªãŸãã 2025幎3ææç¹ã§ã¯ã GitHub Copilot㯠GitHub Discussionsã®ããã¥ã¡ã³ããèªã¿åãããšã¯ã§ããªãããã§ãã ã¢ãŒããã¯ãã£ ã®æ±ºå®ã GitHub Copilotã«èªãŸãããå Žåã¯ãå¿
èŠãªç®æã ãªããžã㪠ã®docsãREADMEãcopilot-instructions.mdã«èšèŒããŸãããã ãããã« ADR ã®ç®çããæ§æãã¹ããŒã¿ã¹ãå®ãã GitHub Discussionsãçšã㊠ADR ã管çããæ¹æ³ã玹ä»ããŸãããä»åŸã®éçšã§æ°ããªæ°ã¥ããããã°ãæ¹ããŠèšäºãæçš¿ããããšæããŸãã ãããžã§ã¯ãã«ãã£ãŠ ADR ã®æé©ãªç®¡çæ¹æ³ã¯ç°ãªããŸããã1ã€ã®äŸãšããŠåèã«ãªãã°å¹žãã§ãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã ADR ã®äŸ ã¿ã€ãã«: [ ADR _002] åºç€ã³ãŒãã®å
¬éæ¹æ³ ã¹ããŒã¿ã¹ Proposed ã³ã³ããã¹ã æ¡ä»¶ã«ã¹ã¿ãã€ãºãããéã«åºç€ã®ã³ãŒããå©çšãã容æã«æ¡ä»¶ã«ã¹ã¿ãã€ãºã宿œã§ããããã«ãããã åºç€ã®ã³ãŒããã©ã®ããã«ããã±ãŒãžã³ã°ããå
¬éããããæ€èšããã æ±ºå® çµè« 以äžã®åè£ãæ€èšãã GitHub Packages(npm packages)ãšããŠå
¬éããããšãšããã GitHub Packages npm packages Docker Images Monorepo Micro Service è©äŸ¡ã®èгç¹ã¯ä»¥äžã ç¬ç«æ§ åºç€ã³ãŒããšæ¡ä»¶ã³ãŒããç¬ç«ããŠããã å©çšå®¹ææ§ æ¡ä»¶åŽãã容æã«ããã±ãŒãžãå©çšã§ããã ããã±ãŒãžã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯äŸ¿å©ã ã«ã¹ã¿ãã€ãºæ§ æ¡ä»¶åŽã§æ¯ãèãã倿Žã§ããã æ¡ä»¶åŽã§æ¯ãèããäžæžãã§ããã æ¡åŒµæ§ åºç€ã³ãŒãã¯ã¡ã³ããã³ã¹ããããã åºç€ã³ãŒãã¯æ©èœè¿œå ããããã æ¹æ³ ç¬ç«æ§ å©çšå®¹ææ§ ã«ã¹ã¿ãã€ãºæ§ æ¡åŒµæ§ GitHub Packages(npm packages) ⯠Ⳡ⯠⯠GitHub Packages(Docker Images) ⯠Ⳡà ⳠMonorepo à ⯠⯠à Micro Service ⯠à ⯠⯠æ¡çšã®éžæè¢ãšãã®çç± GitHub Packages(npm packages) ç¬ç«æ§ïŒâ¯ïŒ - åºç€ã³ãŒããšæ¡ä»¶ã³ãŒãã§ ãªããžã㪠ãåå²å¯èœ ããã±ãŒãžã¯ããŒãžã§ãã³ã°ã§ãããããåºç€ã³ãŒãã®ããŒãžã§ã³éã§ãç¬ç«ããŠãã å©çšå®¹ææ§ïŒâ³ïŒ ãŠãŒã¶ã¯npm installã§å©çšå¯èœ å®è£
ã«ããããã©ã€ãã©ãªåœ¢åŒã®ããããçšåºŠã®å©äŸ¿æ§ ã³ã³ããŒãã³ã ã®çµã¿åããçžåœã®å®è£
ã¯åŒã³åºãåŽã®è²¬åãšãªããå€å°å®è£
ã³ã¹ãããã ã«ã¹ã¿ãã€ãºæ§ïŒâ¯ïŒ åŒæ°ãpropsã«ãã£ãŠæ¯ããŸãã倿Žå¯èœ å©çšãã«ãã ã³ã³ããŒãã³ã ã¯ç¬èª ã³ã³ããŒãã³ã ã§å·®ãæ¿ããããšãå¯èœ ã¡ã³ããã³ã¹ã»æ¡åŒµæ§ïŒâ¯ïŒ æ°ãã ã³ã³ããŒãã³ã ã远å ãããã ã³ã³ããŒãã³ã ã®propsãå¢ããããããæ©èœè¿œå ãå¯èœ æ¡çšèŠéãã®éžæè¢ãšãã®èª²é¡ GitHub Packages(Docker Images) ç¬ç«æ§ïŒâ¯ïŒ ãªããžã㪠ãåå²ã§ãã ããŒãžã§ãã³ã°ã§ãã å©çšå®¹ææ§ïŒâ³ïŒ Docker Image圢åŒã§å©çšå¯èœ åŒã³åºãåŽã¯Dockerå®è¡æã®ãã©ã¡ãŒã¿ã倿Žããã®ã¿ ãã©ã¡ãŒã¿ã倧éã«ãªãå¯èœæ§ãã ã«ã¹ã¿ãã€ãºæ§ïŒÃïŒ ãã©ã¡ãŒã¿ã倿Žããããšã§æ¯ãèãã倿Žå¯èœ æ¯ãèãã®äžæžãã¯ã§ããªã ãã©ã¡ãŒã¿ä»¥äžã®æ¯ãèã倿Žã¯äžå¯èœ æ¡åŒµæ§ïŒâ³ïŒ å®è¡æãã©ã¡ãŒã¿ãå¢ããããšã§æ¡åŒµå¯èœ ã«ã¹ã¿ãã€ãºã®æ°ã ãå®è¡æãã©ã¡ãŒã¿ãå¢ããŠããŸã åŒæ°ã倧éã«ããDocker Imagesã¯åºç€åŽã«ãšã£ãŠãæ¡ä»¶åŽã«ãšã£ãŠã䟿å©ã§ã¯ãªããšäºæ³ Monorepo ç¬ç«æ§ïŒÃïŒ ãã£ã¬ã¯ã ãªçžåœã®ãããç¬ç«æ§ãããããšèšããããšåŸ®åŠ æ¡ä»¶æ
åœè
ãåºç€ã³ãŒããçŽæ¥åç
§ããããä¿®æ£ã§ããããã ããŒãžã§ãã³ã°ã§ããªã å©çšå®¹ææ§ïŒâ¯ïŒ npm workspaceãªã©ã䜿ã£ãã©ã€ãã©ãªã®åœ¢åŒã«ãªã ã©ã€ãã©ãªåœ¢åŒã®ãã GitHub Packages(npm packages)ãšåçšåºŠã ã³ãŒãã®ã³ãããå¯èœ ã«ã¹ã¿ãã€ãºæ§ïŒâ¯ïŒ ãã©ã¡ãŒã¿ã倿Žããããšã§æ¯ãèãã倿Žå¯èœ ãã©ã¡ãŒã¿ä»¥äžã®æ¯ãèã倿Žã¯äžå¯èœ ã¡ã³ããã³ã¹ã»æ¡åŒµæ§ïŒÃïŒ - ããŒãžã§ãã³ã°ãã§ããªããããåºç€ã³ãŒãã®ä¿®æ£ãšãªãªãŒã¹ãç°¡åã«å®æœã§ããªã Micro Service ç¬ç«æ§ïŒâ¯ïŒ ãªããžã㪠ã®åå²ãã§ãã ããŒãžã§ãã³ã°ãã§ãã å©çšå®¹ææ§ïŒÃïŒ API ãéããåŒã³åºãã«ãªã ããã¯ãšã³ãæ©èœã®å
±æã«ã¯äŸ¿å©ã ããããã³ããšã³ãã³ãŒãã®å
±æã¯é£ãã ã«ã¹ã¿ãã€ãºæ§ïŒâ¯ïŒ API ã®ãã©ã¡ãŒã¿ã倿Žããããšã§æ¯ãèãã倿Žå¯èœ API ãå©çšãããç¬èªå®è£
ãçšããããšã§æ¯ãèããäžæžãå¯èœ ã¡ã³ããã³ã¹ã»æ¡åŒµæ§ïŒâ¯ïŒ API ãæ¡åŒµããŠããæ¹åŒã«ãªã åœ±é¿ GitHub ãªããžããª ãæ°ããäœãããã® ãªããžã㪠ã§ããã±ãŒãžã³ã°çšã®ãã«ã ã¹ã¯ãªãã ãæžãã GitHub Packagesã«pushããCIãããŒãæžã å
¬éã®éã®ããŒãžã§ãã³ã°ã®æ¹æ³ãå¥éæ€èšãã ã³ã³ãã©ã€ã¢ã³ã¹ åºç€ã³ãŒãã® ãªããžã㪠ãåå²ãããã® ãªããžã㪠ããããã±ãŒãžãå
¬éããããšã§ã GitHub Pacakges(npm packages)çµç±ã§ã®å©çšãæ¡ä»¶åŽã«åŒ·å¶ããããšãå¯èœã åºç€ã³ãŒãã® ãªããžã㪠ã«ã€ããŠã¯ã¢ã¯ã»ã¹å¶éãå³å¯ã«å®æœããã å€éšã¡ã³ããŒã«ã¯write, readçšåºŠã®æš©éãä»äžããmainãã©ã³ãã¯ãã©ã³ããããã¯ã·ã§ã³ã§å¶éããèªåãã¡ã®ç¥ããªããšããã§åºç€ã³ãŒãã倿Žãããªãããã«ããã åºç€ã³ãŒããæ¡ä»¶éçºè
ãé²èЧããæ¡ä»¶ã³ãŒãã«ã³ããããããšã¯èš±å®¹ããã åèæ
å ± https://tech.dentsusoken.com/entry/2025/02/25/_%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%9C%80%E9%81%A9%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AD%E3%83%BC åè å¥éæ¡ä»¶ã«ã¹ã¿ãã€ãºæã®åæã»ããã¢ããããµããŒãããããã«ãTemplate ãªããžã㪠ãäœããã å·çïŒ @ozawa.hideyasu ãã¬ãã¥ãŒïŒ @takami.yusuke ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ãã©ãŒããŒïŒ ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã®å®®æŸ€é¿ã§ãïŒ æ¬èšäºã§ã¯ãç§ãéå¶ããŒã ãªãŒããŒãšããŠéå¶ãäž»å°ããåŒç€Ÿã®ç€Ÿå
ã€ãã³ãã§ãããAHEAD AWARD 2024ãã«ã€ããŠã玹ä»ããŸãïŒ ïŒã€ãã³ãã®è©³çްã«ã¯ç€Ÿå€ç§ã®æ
å ±ãå«ãŸããŸãããåœç¶ãã®ãããªå
容ã¯èšèŒã§ããªããããå
šäœçã«ãã£ãããã®è¡šçŸãšãªã£ãŠããŸãâŠã容赊ãã ããâŠïŒïŒ ïŒãããªã€ãã³ãããããã ãªããããªçµç¹é¢šåãªãã ãªããšãããããªããšãæãåã£ãŠããã ããã幞ãã§ãâŠïŒïŒ ïŒãã®æå³ã§ã¯ãåŒç€Ÿã«ã€ããŠæ
å ±åéããŠãã就掻çããã£ãªã¢å
¥ç€Ÿæ€èšäžã®æ¹åãã®èšäºããªãšæããŸãâŠïŒïŒ AHEAD AWARDãšã¯ïŒ ã©ããªããšãããã®ïŒ éå¶ããŒã ãªãŒããŒããã£ãŠã¿ãŠã®ææ³ãªã© ãããã« AHEAD AWARDãšã¯ïŒ AHEAD AWARDãšã¯ããåŒç€Ÿã® è¡åæé ã§ãããAHEADããäœçŸããåŒç€ŸãåŒç€Ÿã®ã客æ§ãžã®è²¢ç®åºŠã®é«ã掻åããç€Ÿå¡æç¥šã«ãã£ãŠéžå®ããã瀟å¡ã«ãã瀟å¡ã®ããã®ã¢ã¯ãŒãããšãããŠããŸãã åã¿ç ããŠããã°ã2024幎ã«å®æœãããããããæŽ»åã®äžããèªèŠåœ¢åŒã§ããããŒããåãããã¬ãŒã³ããŒã·ã§ã³ãå
šç€Ÿæç¥šãçµãŠåè³æŽ»åãæ±ºå®ã»è¡šåœ°ããã€ãã³ãã§ãã ãã®ããã2025幎éå¬ã§ã¯ãããã®ã®ãã€ãã³ãåã¯AHEAD AWARD 2024 ãšãªããŸãã ãªããä»ç€Ÿæ§ã«ãããŠã¯ããã¥ãŒãã£ãŒæ ªåŒäŒç€Ÿã®ãBest Project of the Yearããªã©ãè¿ããã€ãã³ãããªãšæããŸãã ã©ããªããšãããã®ïŒ AHEAD AWARD 2024ã®å€§ãŸããªæµãã¯ä»¥äžã§ããã ïŒå
容ã¯å¹Žã
ã¢ããããŒããããŠãããŸãã®ã§ããã¡ãã¯ãããŸã§ä»åã®å
容ã§ãïŒïŒ ãšã³ããªãŒ AHEAD AWARD 2024ã«ãšã³ããªãŒããæŽ»åããæŽ»å代衚è
ã®æ¹ããã®èªèŠåœ¢åŒã§åéããŸãã 察象ãšãªã掻åã¯äžè¿°ã®ãšãã2024幎ã«å®æœãããããããæŽ»åã§ããã察å€çãªæåæ¡ä»¶ã ãã§ãªããèªç€Ÿå
ã®æœçãåãçµã¿ãªã©ãå«ãŸããŸãã å¿åã«ããã£ãŠã¯ã掻å代衚è
ã®æ¹ã«PRã·ãŒããšåŒã°ããè³æãæåºããŠããã ããŸãã PRã·ãŒãã«ã¯ã掻åã®æŠèŠãã¢ããŒã«ãã€ã³ããªã©ãèšèŒããŠããã ããŸãã ããããŒã掻åéžå® éå¶ããŒã ãªã©ãäžå¿ãšãªã£ãŠããšã³ããªãŒãããæŽ»åã®äžããããããŒã掻åãéžå®ããŸãã ããããŒã掻åã«éžå®ãããæŽ»åã¯ããã以éã®æç¥šããã¬ãŒã³ããŒã·ã§ã³ã«é§ãé²ããããŸãã äºåæç¥š ããããŒã掻åã®PRã·ãŒããPRåç»ãå
¬éããå
šç€Ÿæç¥šã宿œããŸãã 瀟å¡ã®ã¿ãªããŸã«ã¯ããAHEADããäœçŸããŠãããšæããæŽ»åã«æç¥šããŠããããŸãã ãã¬ãŒã³ããŒã·ã§ã³ ããããŒã掻åã®ä»£è¡šè
ãé¢ä¿è
ããã¬ãŒã³ããŒã·ã§ã³ã宿œããŸãã ãã¬ãŒã³ããŒã·ã§ã³ã¯ãªã³ã©ã€ã³ã§ãé
ä¿¡ããããããçŸå°ïŒãªã³ã©ã€ã³ãåããèŠèŽã§ããŸãã åœæ¥æç¥š ãã¬ãŒã³ããŒã·ã§ã³ãèžãŸããäžã§ãæ¹ããŠå
šç€Ÿæç¥šã宿œããŸãã PRã·ãŒããPRåç»ã ãã§ã¯åãããªãã£ãé·æãé
åãåæ ãããæç¥šãšãªããŸãã 衚地 äºåæç¥šãšåœæ¥æç¥šã®ç¥šæ°ãåç®ããŠãåè³æŽ»åãæ±ºå®ããŸãã AHEAD AWARD 2024ã§ã¯ãGold PrizeãSilver PrizeãBronze Prizeã®3ã€ã®è³ããããŸããã ããããã®è³ãåè³ããæŽ»åã«å¯ŸããŠã¯ããããã£ãŒãå¯è³ãèŽåãããŸãã åŸå€ç¥ æåŸã¯åŸå€ç¥ãšç§°ããç«é£åœ¢åŒã®ããã㌠ãã£ãŒ ãéå¬ããŸãã ãã¡ãã¯ããããŒã掻åé¢ä¿è
ã«éããã©ãªãã§ãåå å¯èœã§ãã åŒç€Ÿã®ç€Ÿå
å奜äŒã§ãã é»é ç·ç Jazzéšã®ã¿ãªããŸã«ããçæŒå¥ãè¡ãããŸããã éå¶ããŒã ãªãŒããŒããã£ãŠã¿ãŠã®ææ³ãªã© ãŸã第äžã«ãéå¶ããŒã ã¡ã³ããŒãããããŒã掻åé¢ä¿è
ã®ã¿ãªããŸãšã®æ¬éšã»äºæ¥éšã®æ ãè¶ããç¹ãããã§ããããšã倧ããªè²¡ç£ã«ãªã£ããšæããŠããŸãã ããããéåžžã®æ¥åã§ã¯ã©ãããŠãåãéšçœ²ã®ã¡ã³ããŒãåãæ¡ä»¶ã«æºãã£ãŠããã¡ã³ããŒãšããé¢ããããªãç¶æ
ã«ãªããã¡ãªã®ã§ãããä»åã®æŽ»åãéããŠç€Ÿå
ã®å£æ ¹ãè¶ããç¹ãããæ§ç¯ã§ããŸããã ãŸããåŒç€Ÿã®æŽ»åãç¥ãè¯ãæ©äŒã«ããªã£ããšæããŠããŸãã æ®æ®µããä»éšçœ²ãã©ããªããšããã£ãŠããã®ããææ¡ã§ããŠããããã§ã¯ãªãã£ããããPRã·ãŒãããã¬ãŒã³ããŒã·ã§ã³ãªã©ãéããŠä»éšçœ²ã®æŽ»åå
容ãç¥ãããšãã§ããåŒç€Ÿå
šäœã®æ¥åã«å¯Ÿããçè§£ãæ·±ãŸããŸããã ãªããçŸåšã¯AHEAD AWARD 2025ã®éå¶ã¡ã³ããŒã«åããåŒãç¶ãè³æãäœæäžã§ãã ãšããã®ããAHEAD AWARDã®éå¶ããŒã ã¯ããªãŒããŒããµããªãŒããŒã¯å幎ã®éå¶ã¡ã³ããŒããéžåºããããã®ã®ãåºæ¬çã«ã¡ã³ããŒãæ¯å¹Žå
¥ãæ¿ãããŸãã ãã®ããããã éå¬ããŠçµãããšããããã§ã¯ãªãããã®åŸã®æ¯ãè¿ããåŒãç¶ããéèŠãšãªããŸãã ãã®ããããæåŸãŸã§ãã£ã¡ãããªããŠããæåã§ãã ãããã« æ¬èšäºã§ã¯ãåŒç€Ÿã®ç€Ÿå
ã€ãã³ãã§ããAHEAD AWARD 2024ã«ã€ããŠã玹ä»ããŸããïŒ æ¬æ¥ã®åãããã®ãããªã€ãã³ãéå¶ã«ãæãæãããããããªåãæ¹ã«èå³ãããããšããæ¹ã¯ããã©èŠã ãã§ãçµæ§ã§ãã®ã§ãåŒç€Ÿã® æ°åæ¡çšãµã€ã ã ãã£ãªã¢æ¡çšãµã€ã ãã芧ããã ããã°ãšæããŸãã æåŸãŸã§ãèªã¿ããã ããæ¬åœã«ããããšãããããŸããïŒ ç§ãã¡ã¯å
±ã«åããŠããã ãã仲éãåéããŠããŸãïŒ ã¿ãªããŸã®ãå¿åããåŸ
ã¡ããŠããŸãïŒ æ ªåŒäŒç€Ÿé»éç·ç æ°åæ¡çšãµã€ã æ ªåŒäŒç€Ÿé»éç·ç ãã£ãªã¢æ¡çšãµã€ã å·çïŒ @miyazawa.hibiki ãã¬ãã¥ãŒïŒ @iwasaka.emari ïŒ Shodo ã§å·çãããŸãã ïŒ
泚æïŒ 2025幎2æçŸåšãWhiskããã³ImageFXã®åçšå©çšã«ã€ããŠã Google ã¯å
¬åŒãªèŠçŽãçºè¡šããŠããŸããã æ¬èšäºã¯å人çãªæ€èšŒãè¡ããã®ã§ãããçŸæç¹ã§ã¯å®éã®ããžãã¹ã§ã®å©çšã¯æ³å®ããŠãããŸããã çæãããç»åã«ã€ããŠã¯ç§çå©çšã®ç¯å²å
ã«éå®ããŸãããŸããæ¬èšäºã«ã¯ç»åçæAIã«ãã£ãŠäœæãããã€ã©ã¹ããå€ãå«ãŸããŸãã äºæ¬¡å©çš ã¯ãæ§ããã ããããŸããæ¬èšäºã§ç޹ä»ããææ³ã«ããçºçãããããªããã©ãã«ã«ã€ããŠãåŒç€Ÿã¯äžåã®è²¬ä»»ãè² ããŸãããããããããäºæ¿ãã ããã ããã«ã¡ã¯ã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éš æŠç¥ãœãªã¥ãŒã·ã§ã³ 1 éšã®è±ã§ãã æ®æ®µã¯Webã¢ããªã ã¹ãã ã¢ããªã®æ¡ä»¶ãªã©ãæ
åœããŠããŸããããšãè¶£å³ã§AIãå匷ããŠããŸãã æè¿ç»å ŽããWhiskãé¢çœãããªã®ã§è§Šã£ãŠã¿ãŸãã Whisk ã¯2025幎2æ12æ¥ãã詊é転ãå§ãŸã£ãã°ããã®æ°ãããµãŒãã¹ã§ãã 1ïŒWhiskã«ã€ã㊠2ïŒå眮ã 3ïŒä»åã®æ€èšŒå
容ã«ã€ã㊠4ïŒæ€èšŒ è£è¶³ïŒã¢ãã«ãäœããšãã®ããã³ãããµã³ãã« ãããã« 1ïŒWhiskã«ã€ã㊠ãŸããWhisk㯠Google ãæäŸãããããªãµãŒãã¹ã§ãã 詳现ã«ã€ããŠã¯ã³ãã©ã® ãªã³ã¯ ããåç
§ãã ããã åé ã§ãäŒãããéãã èäœæš© ãå©çšç¯å²ã«é¢ããæç¢ºãªèšè¿°ããªãã®ãçŸç¶ã§ãã ãã®ãããæ¬èšäºãåèãšããããžãã¹ã·ãŒã³ã§ã®å©çšã«ã€ããŸããŠã¯ãå©çšãããæ¬äººæ§ã®è²¬ä»»ã§ãé¡ãããããŸãã åŒç€Ÿã¯äžåã®è²¬ä»»ãè² ããŸããã®ã§ãããããããäºæ¿ãã ããã Whiskã§ã¯ãã¹ã¿ã€ã«ãšèæ¯ãæå®ãããã®ç¯å²å
ã§ã¢ãã«ãæãããšãã§ããŸãã ãããŸã§ã®ç»åçæAIã§ã¯ããã³ãããçšã㊠èªç¶èšèª ã§ã¹ã¿ã€ã«ãèæ¯ã现ããæç€ºããŠããŸããã èªç¶èšèª ã§ããããå®ç§ã«è¡šçŸããããšãé£ãããåãããã³ããã§ãçæãããã³ã«çµµæãå€ãã£ãŠããŸããšããã®ãããããã§ããã ä»åã®Whiskã§ã¯ãã®ãçµµæããç»åãã¡ã€ã«ããæå®ã§ããããã«ãªã£ããšæããŠããã ããã°ãšæããŸãã ãã®æ©èœã䜿ãã°ãåããçµµæãã®ç»åãéç£ã§ããã®ã§ã¯ãªããïŒ ãããªéæãèœçããã®ã§ãäŒç€Ÿã®ããã¯ããã°ã§æ¶åããŸãã 2ïŒå眮ã ä»åã¯ç»åçæAIãåãæ±ããããå眮ããé·ãã§ãããä»ãåããã ããã ããŠãäžã®äžã«ç»åçæAIãç»å Žã㊠ããã ã°ããçµã¡ãŸããã ãããŸã§ èäœæš© ã«ã€ããŠããããã®è°è«ãèµ·ãã£ãŠã¯æ¶æ»
ãããŸãæ°ããªç«çš®ãæäžãããŠã¯è«äºãèµ·ããã ãããªæ¥ã
ãããäœå¹Žãç¶ããŠããŸãã å人çãªèãã§ãããæ¥æ¬åœå
ã«éå®ãã話ãªãã°ãåœãå®ãã ã¬ã€ãã©ã€ã³ ã絶察çãªã«ãŒã«ã§ããããã¯åèªã§èª¿ã¹ãŠãã ããããã®æ¬¡ã«åç
§ãã¹ãã¯åçæAIããŒã«ãå®ããèŠçŽã ãšæããŸãã ããžãã¹ãã³ãšããŠãæäœéãããã®ã«ãŒã«ã¯éµå®ããŠå©çšããªããã°ãªããŸããã ãšã¯ãããã«ãŒã«ã®äžã§ã«ããŒããããŠããªãå«ççãªåé¡ãæ±ããŠããã®ãäºå®ã§ããããããææ
è«ãã®äžèšã§çã¥ããããŠããä»ã®äžã®äžã«ãåé¡ããããšã¯æããŸããå人çãªã¯ãªãšã€ã¿ãŒã®ç®ç·ã§ãããæããŸãã æ°ããæè¡ã«ã¯åŠå®çãªæèŠãä»ãç©ã§ããæ§ã
ãªå£°ãèŽããªããæè¡ã¯å°ããã€é²æ©ããŸãã ãããããã10幎åŸã«ã¯æ°ããã«ãŒã«ãçå®ããããã®èšäºã§æžããŠããããšããã¹ãŠéæ³ãªããŠããšã«ããªããããããŸããããã®æã¯ãã®æã§ãããã®æã«ãªã£ããããã®æã®ææ°ã®ã«ãŒã«ã®äžã§æé©ãªå€æãäžããŸãããã ããã¯ãã©ã€ã«èããªããšã䟡å€ã®åµé ãæ¢ãŸã£ãŠããŸããŸãã 3ïŒä»åã®æ€èšŒå
容ã«ã€ã㊠çããã¯ãã¬ãŒã³è³æã«å·®ã蟌ãç»åçŽ æã£ãŠã©ãã§èª¿éããŠããã§ããããã åçšããªãŒã®çŽ æãµã€ããããã°ãè²·ãåãã®çŽ æãµã€ããªã©è²ã
ãããŸãããã ä»åã¯WhiskãæŽ»çšããŠã欲ããçŽ æãèªåã§äœãå®éšãããŠã¿ãŸãã ããäžåºŠèšããŸããå®éšã§ãã åè¿°ã®éããWhiskã§ã¯ãçµµæãã®æå®ãã§ããŸãã æåãªçŽ æãµã€ãã ãšãããããšãããšããçŽ æŽããããµãŒãã¹ããããŸãããã€ã©ã¹ãã®çµµæãç¹åŸŽçã§ãããã ãã®çµµæãç¶æ¿ãããAIããããšãããšãããµãŒãã¹ããããŸãã ã§ã¯ããã®ãAIããããšãããçæããç»åã® èäœæš© ã«ã€ããŠã¯ã©ããã ããã¯ãµãŒãã¹ã®èŠçŽã«ãã®ããã«æèšãããŠããŸãã â»åŒçšïŒ AIããããšã ãããåœç¶ããšæããŸãã ãªããªãã°ããã³ãããæžãã®ã¯ãµãŒãã¹ã®å©çšè
ã§ãããããã³ããã«åºã¥ããŠæ°ããç»åãçæãããŸãã ããã³ãããšããèªç±å
¥åã«å¯ŸããŠããµãŒãã¹åŽã責任ãæã€ããšã¯ããŸãã«ãè·ãéãããŸãã äŸãæãããšãããªããAIããããšããéããŠããããã¥ãŠãšã§ãå
¥åããŠã¿ãŠãã ããã å±ãªããã»ããšã«å±ãªãã åšãã®å¯æããã€ãã¯ãŸã ããã§ãããã¢ã¶ã€ã¯ããããéšåãªããŠã»ãŒãããã¥ãŠã§ãã 人éãæããçµµããAIãæããçµµããã¢ãŠãããããæ¢åã®èäœç©ã«é¡äŒŒããŠããããšãã芳ç¹ãéèŠã§ãã ç§ãææžãã§ ãã«ãã¥ãŠ ã®ã€ã©ã¹ããæããŠ1æ100åã§å£²ã£ããæããã« èäœæš©äŸµå®³ ã§ãããAIã§ ãã«ãã¥ãŠ ã®ã€ã©ã¹ããæããŠ1æ100åã§å£²ã£ãŠã èäœæš©äŸµå®³ ã§ããææ³ãéãã ãã§ç¯ããŠããåé¡ã¯åãã ããããã®ãããªåé¡ã«å¯ŸããŠãµãŒãã¹åŽã責任ãè² ããªãã°ã 絶察ã«å®å
šãªç»åããçæãããªãå®åæ ãäœåºŠãæ€èšŒãããŠãŒã¶ãŒã¯ãã®å®åæããéžæããã ãã¿ãããªUI/UXã«çžããªããšãããŸããã ãããªä»æ§ã§ã¯ãt2iã®ãµãŒãã¹ãšããŠã¯ç Žç¶»ããŠããŸããŸãã誰ã䜿ããå¯ããŠããã ãã§ãããã ã ããããäœ¿ãæ¹ã«ã¯å¶éãããããçæãããææç©ã«å¯Ÿãã責任ã®èãæ¹ã«ã€ããŠèŠçŽã§æç¢ºã«ããŠããã®ã ãšå¯ããŸãã ã¡ãªã¿ã«ãSunoã®ãããªé³æ¥œçæã®ãµãŒãã¹ã§ãåããããªã«ãŒã«ãæ¡çšãããŠããŸããèªå·±è²¬ä»»ã ãšããããšã§ãã â»åŒçšïŒ Suno ããŠãã§ã¯Whiskã¯ã©ãã§ããããã Whiskã«ã¯ãã®ããã«èšèŒããããŸãã èŠçŽã®ãªã³ã¯å
ã§ã¯ çæããŠã¯ãããªããã®ã®ãªã¹ã ãå
¬éãããŠããŸãããããŠãçæã«ãããã³ã³ ãããŒã« ã®äž»äœã¯ãŠãŒã¶ãŒã ãšèšã£ãŠããŸããã€ãŸããçæããããã®ãèäœç©ã«äŒŒãããããã°ããããããæ§çã ã£ããããããŠãŒã¶ãŒã責任ããã£ãŠããã³ããã§æç€ºå
容ã調æŽããªããšãããŸããã äŸãã°ãWhiskã®ã¹ã¿ã€ã«ã« 鳥山æ å
çã®ã€ã©ã¹ããèæ¯ã«ãã£ãºããŒæ ç»ãã¢ãã«ã«ãããã¥ãŠã®ç»åãæå®ããŠç»åãçæãããšããŸãããããããåçšå©çšããŠããŸã£ãæ¥ã«ã¯å€§çäžç¢ºå®ã§ãã ç¢ºå®æŒåºã§ç»é¢ãè¹è²ã«èŒããŠãã¹ããŒã«ãŒããïœïœ²ïŸïœ·ïœïœ²ïŸé³ã鳎ãã§ããããã€ãã§ã«ã¯ãã«ãªããŸãã â»ã»ããšã«èŠããããŸãã 4ïŒæ€èšŒ ä»åã¯ã§ããã ãå®å
šã«äœ¿ãããã®ã§ãææžãã®ã€ã©ã¹ããããŒã¹ã«ããŸãã ç§ã5åã§æããŸããããã®ã€ã©ã¹ãã® èäœæš© ã¯ç§ã«ãããŸãã ããžãã¹åãã®ã€ã©ã¹ãã£ãŠã ããããããªé¡ããŠãŸãããã ãããã¹ã¿ã€ã«ã«å·®ã蟌ãã§ãèæ¯ã¯ç¡å°ãæå®ããŸãã ããã³ãããããããªããããã€ãç»åãçæããŠã¿ãŸãããã 1.ãµãã«ãŒãããŠããå°å¹Ž â»ã¢ãã«ã¯ããã³ããã«ããçæ(A simple, monochrome, single-line flat illustration of a young boy playing soccer. He has short, slightly messy hair and is wearing a sports jersey and shorts. He is kicking a soccer ball with one foot, with motion lines around the ball to emphasize movement. His expression is focused and energetic. The illustration is minimalistic, using clean, continuous black lines on a white background, without shading or extra details.) 2.äœããã²ããããããžãã¹ãã³ â»ã¢ãã«ã¯ããã³ããã«ããçæ(A simple, monochrome, single-line flat illustration of a young boy playing soccer. He has short, slightly messy hair and is wearing a sports jersey and shorts. He is kicking a soccer ball with one foot, with motion lines around the ball to emphasize movement. His expression is focused and energetic. The illustration is minimalistic, using clean, continuous black lines on a white background, without shading or extra details.) 3.ã©ã³ããé£ã¹ãŠããå¥³æ§ â»ç§ã®çµµãšäŒŒãŠããªããã®ã¯ã¢ã¶ã€ã¯ããããŠããŸã â»ã¢ãã«ã¯ããã³ããã«ããçæ(A simple, monochrome, single-line flat illustration of a woman eating lunch. She has shoulder-length hair and is wearing a casual outfit or business attire. She holds a lunch box, sandwich, or bowl in one hand and a utensil in the other. Her expression is relaxed and content. The illustration is minimalistic, using clean, continuous black lines on a white background, without shading or extra details.) 4.é転ãããŠããç·æ§ â»ç§ã®çµµãšäŒŒãŠããªããã®ã¯ã¢ã¶ã€ã¯ããããŠããŸã â»ã¢ãã«ã¯ããã³ããã«ããçæ(A simple, monochrome, single-line flat illustration of a man driving a car. He has short hair and is wearing a casual shirt or suit. He grips the steering wheel with both hands, looking forward with a neutral or focused expression. The illustration is minimalistic, using clean, continuous black lines on a white background, without shading or extra details.) 5.ãã¬ãŒã³ãããŠããç·æ§ â»ã¢ãã«ã¯ããã³ããã«ããçæ(A simple, monochrome, single-line flat illustration of a man giving a presentation. He has short hair and is wearing a suit with a tie. He is standing confidently, gesturing with one hand while holding a pointer or remote control in the other. A simple presentation board or screen with minimal bar charts or graphs is in the background. The illustration is minimalistic, using clean, continuous black lines on a white background, without shading or extra details.) è£è¶³ïŒã¢ãã«ãäœããšãã®ããã³ãããµã³ãã« ç®ç ããã³ãã 广 çœé»ã®ç·ç»ã«ãã black and white line art, high contrast, pen and ink style, no grayscale ã°ã¬ãŒã®é調ã培åºçã«æé€ãããã³ç»é¢šã®ã¡ãªããªããç·ç»ãåŸããããªãã äžæ¬ã®ç·ã§æãããã«ãã single continuous line drawing, one-line art, minimal detail äžæ¬ã®æµãããããªç·ã§æããã·ã³ãã«ãªã€ã©ã¹ããçæãããããªãã ãã©ãããªãã¶ã€ã³ flat vector-style illustration, minimal shading, no gradients 奥è¡ããç«äœæãæãã ãã¯ã¿ãŒ ã¢ãŒãã®ãããªãã©ãããªä»äžãããåŸããããªãã æã蟌ã¿ãæžãã ultra-minimalist design, reduce extraneous details, simple lines äœèšãªè£
食ãåãèœãšããã·ã³ãã«ã§èŠèªæ§ã®é«ãã€ã©ã¹ããåŸããããªãã ãããã« ãã£ããæåŸ
ããŠããã®ã§ãããå
šäœçã«ããªããšãªãçµµæã䌌ãŠãããããªããããã®å°è±¡ã§ãã ããã¯ç§ã®ææžãã€ã©ã¹ãã®ã¯ãªãªãã£ãäœãã£ãããšãåå ã ãšæããŸãã ç»åã«èªä¿¡ã®ããäººã¯æå
ã®ç°å¢ã§ãã²è©ŠããŠã¿ãŠãã ããã ãŸã å®é𿮵éãšã¯ãããç¡æã§ãã®ã¯ãªãªãã£ã®ãµãŒãã¹ãæäŸãã Google ã«ã¯é ãäžãããŸãããã ãããæªçšããŠçŽ æãµã€ãã§è²©å£²ãããããªïŒãšãæããªãæ¹ãããã§ãã ä»åŸãç»åçæAIã«é¢ããäžã®äžã®èããããæ³åŸãã©ã®ããã«å€ãã£ãŠãããé芳ããŸãããã ããããã AWS ãAIé¢é£ã®æ€èšŒèšäºãããããæžããŠãããŸãã â ã®ã¹ã¿ãŒãæŒããŠããã ãããšå¬ããã§ããå±ã¿ã«ãªããŸãã æåŸãŸã§èªãã§ããã ããããããšãããããŸããã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã§ã¯äžç·ã«åããŠãã ãã仲éãåéäžã§ãã以äžã®ãªã³ã¯ãããé¡ãããŸãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ äžéæ¡çš-ãšã³ã¿ãŒãã©ã€ãºç¬¬äžæ¬éš æ°åæ¡çš-ãšã³ã¿ãŒãã©ã€ãºç¬¬äžæ¬éš å·çïŒ è± è¯æ²» (@hanabusa.ryoji) ãã¬ãã¥ãŒïŒ @nakamura.toshihiro ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã®æ°äººãäœè€æ ã§ãã ã¯ããã« çè
ã«ã€ã㊠AIFã®æŠèŠ AIFã§åãããAWSãµãŒãã¹ Amazon SageMaker [2] Amazon SageMaker Clarify [3] Amazon SageMaker Canvas [4] Amazon Bedrock [5] Amazon Bedrock ã¬ãŒãã¬ãŒã« [6] ãã®ä»ã®ãµãŒãã¹ AIFã§åãããæŠå¿µ 責任ããAI [7] æ©æ¢°åŠç¿ã®ææ³ LLMã«é¢ã㊠åŠç¿ææ CloudLicense Hands on for Beginers Amazon Bedrock Overview ãŸãšã åèã«ãããµã€ã ã¯ãã㫠衚é¡ã®éã AWS Certificated AI PractitionerïŒä»¥äž:AIFïŒã«åæ ŒããŸããã AIFã¯æè¿ã§ãã詊éšã§åé¡éã調ã¹ãŠåºãŠããæ
å ±ãå°ãªãããæŠèŠãåããããµãŒãã¹çŸ€ãããããã®åŠç¿æ¹æ³ãèšããŸãã çè
ã«ã€ã㊠åŠéšã¯æç³»ã§æ
å ±ãäžåãã£ãŠããªã 倧åŠé¢ã§ã¯AIã«é¢ããŠç ç©¶ AWS è§Šãå§ããŠå幎 AIFã®æŠèŠ AIFãšã¯ AWS èªå®ã®å
¬åŒããŒãž[1]ã«ãããšä»¥äžã®ãããªç¥èãåãè³æ Œã§ãã AWS Certified AI Practitioner ã¯ã 人工ç¥èœ (AI)ã æ©æ¢°åŠç¿ (ML)ãçæ AI ã®æŠå¿µãš ãŠãŒã¹ã±ãŒã¹ ã«é¢ããéèŠã®é«ãç¥èãå®èšŒããŸãã AIãæŽ»çšããéã«ã©ã®ãããªææ³ãçšããã¹ãããšããããšãäž»ã«åãããŸããAIã®æŽ»çšã¯LLMãç»å ŽããŠãããããã«æŽ»çºã«è¡ãããŠããèæ¯ãããããã®è³æ Œèªäœãæè¿ã§ããæ¯èŒçæ°ãããã®ã«ãªããŸãã AIFã§åããã AWS ãµãŒã㹠詊éšã§åããã䞻㪠AWS ãµãŒãã¹ã玹ä»ããŸãã Amazon SageMaker [2] åºãæ¡çšãããŠãã AWS ã® æ©æ¢°åŠç¿ ãšåææ©èœããŸãšãã Amazon SageMaker ã¯ãåæãš AI ã®ããã®çµ±åãšã¯ã¹ ããªãš ã³ã¹ãããã¹ãŠã®ããŒã¿ã«å¯Ÿããçµ±åã¢ã¯ã»ã¹ãšãšãã«æäŸããŸã Amazon SageMaker Clarify [3] ã¢ãã«ã®è©äŸ¡ãšã¢ãã«äºæž¬ã®èª¬æ Amazon SageMaker Canvas [4] ããžã¥ã¢ã« ã€ã³ã¿ãŒãã§ã€ã¹ ã䜿çšããŠéåžžã«æ£ç¢ºãª ML ã¢ãã«ãæ§ç¯ããŸã Amazon Bedrock [5] åºç€ã¢ãã«ã䜿çšããŠçæ AI ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã³ã¹ã±ãŒãªã³ã°ããæãç°¡åãªæ¹æ³ LLMã®æèã§åãããéã«ã¯ãã®ãµãŒãã¹ãã»ãŒå¿
ãåãããŸãã é »ç¹ã«åãããå
容ãšããŠã¯LLMã®åºå調æŽã¯ããã³ããã§è¡ãç¹ã§ãã£ãããæž©åºŠ(Temparature)ãåçã®ã©ã³ãã æ§ãçã¿åºãããããç¹ãªã©ããããããŸãã ãŸãã課éã¯åºæ¬çã« ããŒã¯ ã³ãšããèšèªãAIã§æ±ãéã®åºæ¬åäœã§æ±ºãŸãããå
¥åãåºåã§ããæåæ°ã®å¶éãã§ãããã¡ããåãããŸããã ãããPã¯ç¢ºççã«ãšãããéžæè¢ãçµããŸãã ãããKã¯éžæè¢ãäžããæå®ããæ°ã ãçµããŸãã ãããã¯çæãããæç« ã®å€æ§æ§ã«åœ±é¿ããŸãã Amazon Bedrock ã¬ãŒãã¬ãŒã« [6] Amazon Bedrock ã¬ãŒãã¬ãŒã«ã«ã¯ãçæ AI ã¢ããªã±ãŒã·ã§ã³ãå€§èŠæš¡ã«å®å
šã«æ§ç¯ããã®ã«åœ¹ç«ã€èšå®å¯èœãªä¿è·ææ®µãçšæãããŠããŸã ããã«é¢ããŠäŸãæãããšåã©ãåãã®LLMãæ§ç¯ããéã«äžé©åãªå
容ã衚瀺ããªãããã«ããã«ã¯ïŒãšãããã㪠ãŠãŒã¹ã±ãŒã¹ ã§ãã®ãµãŒãã¹ã掻çšããæ¹æ³ãåãããŸããã ãã®ä»ã®ãµãŒãã¹ æ©æ¢°åŠç¿ (ML)ãšçæAI(LLM)ã®æèã§èšåãèšå®ãããŠããæã«ã¯ä»¥äžã®ãµãŒãã¹ã«å ã㊠OCR ã® Amazon Textractãææ
åæã® Amazon Comprehendãªã©ãåãããŠããŸãããããã¯AIã®æè以å€ã§ãé »ç¹ã«è³ã«ãããµãŒãã¹ã§ã¯ããã®ã§Cloud PractitionerãååŸãã人ãªãã°çè§£ã§ããç¯å²ã®å
容ã ãšã¯æããŸãã ãã®ä»ã«ã¯AIãã®ãã®ã§ã¯ãªãã§ãããçæAIãšã³ããã€ã³ãã«ã¢ã¯ã»ã¹ãããã°ã®ååŸã«Cloud Trail,ããŒã¿ã®ä¿åã«S3,ããŒã¿ã®èªã¿åºããã§ããªãå Žåã®ããªã·ãŒã®èšå®ãªã©ãAIé¢é£ã®ãœãªã¥ãŒã·ã§ã³æäŸã®éã«èãããã課é¡ã®äžçš®ã§åºé¡ãããŸããã AIFã§åãããæŠå¿µ 次ã«ãµãŒãã¹ãšã¯ç°ãªã芳ç¹ã§åºé¡ãããå
容ã§ãã 責任ããAI [7] å
¬å¹³ã 説æå¯èœæ§ ãã©ã€ãã·ãŒãšã»ãã¥ãªã㣠å¶åŸ¡æ§ æ£ç¢ºæ§ãšå
ç¢æ§ ã¬ããã³ã¹ éææ§ ç¹ã«å
¬å¹³ããšéææ§ã«é¢ããŠåãããããšãå€ãã£ãã§ãã æ©æ¢°åŠç¿ ã®ææ³ ç·åœ¢ååž° ããžã¹ãã£ãã¯ååž° ãµããŒããã¯ã¿ãŒãã·ã³ æ±ºå®æš ãã¥ãŒã©ã«ãããã¯ãŒã¯ æµå¯Ÿççæãããã¯ãŒã¯(GAN) k-means ãã㯠AWS ã®ãµãŒãã¹ã«ã¯é¢ä¿ãªã æ©æ¢°åŠç¿ ã䜿çšããäŸã«ãããŠã©ã®ææ³ã䜿çšããã¹ãããšããããšãéžæãã圢åŒã®åé¡ãåºé¡ãããŸããã ã©ã®ãããªåæã«äœ¿çšãããã©ã®ãããªçµæãåºãããã»ããã§ããã£ãŠããã°è¯ããšããã¬ãã«ã§æ°åŠçãªèгç¹ã¯åãããªãã®ã§é床ãªå¿é
ã¯äžèŠã§ããåææ³ã«ã€ããŠè»œã調ã¹ãŠã¿ãŠãã ããã LLMã«é¢ã㊠ããŒã¯ ã³ åããã¿ ããã³ãããšã³ãžãã¢ãªã³ã° RAG è¿å¹Žãæµè¡ãã®LLMã«é¢ããèæ¯ç¥èãšå¿çšã®ææ³ãåãããŸãã ããŒã¯ ã³ãåã蟌ã¿LLMã®åºç€ã«é¢ããŠã¯Transformerãç»å Žããè«æãïŒAttention Is All You NeedïŒãšBERTã®è«æãïŒBERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingïŒãªã©ãèªããšåãããŸãã æåãªè«æãªã®ã§è§£èª¬èšäºã¯å±±ã»ã©ãããŸããæ¯éãã¡ããåèã«ããŠã¿ãŠãã ããã ããã³ãããšã³ãžãã¢ãªã³ã°ã«é¢ããŠã¯ãæåŸ
ãã質åãšåçã®ã»ãããæž¡ããšåçã®ç²ŸåºŠãåäžããææ³few-shotãªã©ãåºé¡ãããŸãããLLMãçšããŠã©ããã£ããæåŸ
ããåçãçæããããã詊ããŠã¿ããšéã³ãªããå匷ã«ãªãã®ã§è¯ããšæããŸãã åŠç¿ææ CloudLicense https://cloud-license.com/ ä»ã®è³æ Œã«æ¯ã¹ãŠåŠç¿ã§ããå顿°ã¯å°ãªãã®ã§AIFã®ããã ãã«ææãã©ã³ã«å å
¥ããã®ã¯ãããã£ãããªãæããããŸãããä»ã®è³æ Œããã§ã«ãã¡ãã§å匷ããŠãã人ã«ã¯ããããã§ããç§ã¯ãããäžåšãééã£ãåé¡ã®ã¿ãäºåšããŸããã Hands on for Beginers https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-AIML-2022-reg-event.html?trk=aws_introduction_page ååŠè
åãã®ãã³ãºãªã³ã§ããAI/MLã«é¢ãããªãœãŒã¹ãå®éã«äœæãæäœããããšã§çè§£ãæ·±ãŸããŸãã Amazon Bedrock Overview https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2024_Amazon-Bedrock-Overview_v1.pdf åãããããBedrockã®æŠèŠãã€ããããšãã§ããŸããããã§ ãããã³ã° ããç¥èãããšã«å
¬åŒããã¥ã¡ã³ããèªã¿ã«è¡ããšãããã«çè§£ãæ·±ãŸããŸãã ãŸãšã AWS ãªãœãŒã¹ã ãã§ãªãAIã«é¢ããåºæ¬çãªæŠå¿µãçè§£ã§ããè¯ã詊éšã§ããã ä»åŸãå¿
é ã«ãªã£ãŠããAIãš ã¯ã©ãŠã ã«ãã®è©Šéšããå
¥éããŠã¿ãŸãããïŒ åéšãæ§ããŠãã人ã¯åèã«ãªãã°å¹žãã§ãã åèã«ãããµã€ã [1] https://aws.amazon.com/jp/certification/certified-ai-practitioner/ [2] https://aws.amazon.com/jp/sagemaker/ [3] https://aws.amazon.com/jp/sagemaker-ai/clarify/ [5] https://aws.amazon.com/jp/bedrock/ [6] https://aws.amazon.com/jp/bedrock/guardrails/ [7] https://aws.amazon.com/jp/ai/responsible-ai/ ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @sato.yu ãã¬ãã¥ãŒïŒ @nagamatsu.yuji ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãã°ã«ãŒãçµå¶ãœãªã¥ãŒã·ã§ã³äºæ¥éšã§ãšã³ãžãã¢ãããŠãã倧浊ã§ãã ä»åã¯ã補åéçºãšåã£ãŠãåããªãã¢ããªã³ã®å®çŸæ¹æ³ãšããã®éžæããããã圱é¿ã«ã€ããŠã話ããŸãã 補åã«ãããã¢ããªã³ ã¢ããªã³ã¯æ¬åœã«å¿
èŠãïŒ ã¢ããªã³ã®å®çŸæ¹æ³ æ¹æ³1. 補åã®ã³ãŒãããŒã¹ãçŽæ¥ç·šéããïŒã¢ãã£ãã£ã±ãŒã·ã§ã³ïŒ ç¹åŸŽ ã¢ãã£ãã£ã±ãŒã·ã§ã³ã®äŸ è£è¶³ èå¯ æ¹æ³2. ã¢ããªã³ãããæ©èœã®ã³ãŒããã³ããŒããŠå¥æ©èœãšããŠäœæããïŒã³ããŒã«ã¹ã¿ãã€ãºïŒ ç¹åŸŽ ã³ããŒã«ã¹ã¿ãã€ãºã®äŸ èå¯ æ¹æ³3. ã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµå¯èœã«ããå®è£
ã远å ããïŒãã©ã°ã€ã³ïŒ ç¹åŸŽ ãã©ã°ã€ã³ã®äŸ å
ã³ãŒããžã®æ¡åŒµãã€ã³ãäœæ æ¡åŒµãã€ã³ããšããŠè¿œå ãããApproverProviderFactoryã®å®è£
èå¯ ã¢ããªã³æ¹åŒéžå®ãŸãšã 補åã«ãããã¢ããªã³ ã¢ããªã³ãšã¯ã補åã®æšæºæ©èœãè£å®ã»æ¡åŒµãã远å èŠçŽ ã§ãã ç¹å®ã®é¡§å®¢ã«ãšã£ãŠéèŠã ãæšæºæ©èœã§ã¯å®çŸåºæ¥ãªãèŠä»¶ãå®çŸããå Žåã«éžæè¢ãšãªããŸãã ã¢ããªã³ã¯æ¬åœã«å¿
èŠãïŒ ãããªãçµè«ãèŠãããã«èããããããããŸãããããŸã匷調ãããã®ã¯ã ã補åã«ã¢ããªã³ããããšãæ¬åœã«æåã®è§£æ±ºçããååã«æ€èšããããšã®éèŠæ§ã ã§ãã ã¢ããªã³ããããã圱é¿ãšããŠä»¥äžã®ãããªãã®ããããŸãã è€éæ§ã®å¢å ïŒ ã¢ããªã³ã远å ããããšã§è£œåã®ã³ãŒãããŒã¹ã¯è€éã«ãªããã¡ã³ããã³ã¹ãå°é£ã«ãªããŸãã ãµããŒãã®è² è·å¢ïŒ 顧客ããšã®ã«ã¹ã¿ãã€ãºã¯ããµããŒãããŒã ã«ãšã£ãŠã倧ããªè² æ
ãšãªããŸãã ããã¥ã¡ã³ãã®äžè¶³ïŒ ã¢ããªã³ã¯è£œåæšæºã®æ©èœã«æ¯ã¹ãŠããã¥ã¡ã³ããäžååã«ãªããã¡ã§ãã ãã°ã®ç¹å®ãå°é£ïŒ åé¡ãçºçããéã«ã補ååºæã®åé¡ãªã®ãã¢ããªã³ã®åé¡ãªã®ãå€å¥ãå¿
èŠã§ãããåãåããé£ãããªããŸãã ã§ããéããè£œåæšæºã®æ©èœã§é¡§å®¢ã®èª²é¡ã解決ã§ããªãããæš¡çŽ¢ããŸãããã ããé¡§å®¢åºæã®èŠæããé©åã«æœè±¡åãæšæºæ©èœãšããŠåã蟌ããã°ã補åã®äŸ¡å€åäžãæåŸ
ã§ãã顧客ã«ãåã°ããŸãã ããããçŸå®ã«ã¯è£œåæšæºã ãã§ã¯é¡§å®¢ã®éèŠãªèª²é¡ã解決ã§ããªãå ŽåããããŸãã 補åéçºã«ãããŠæšæºæ©èœã§å®çŸããå¯èœæ§ã¯èãã€ãããããã©ãæ§ã
ãªçç±ã§ç¡çã ãšåãã£ãå Žåã«ãã©ã®ããã«ã¢ããªã³ãå®çŸãã¹ãããèããŠã¿ãŸãããã ã¢ããªã³ã®å®çŸæ¹æ³ ã¢ããªã³ã®å®çŸæ¹æ³ã¯è²ã
èããããŸãã 補åã®ã³ãŒãããŒã¹ãçŽæ¥ç·šéããïŒã¢ãã£ãã£ã±ãŒã·ã§ã³ïŒ ã¢ããªã³ãããæ©èœã®ã³ãŒããã³ããŒããŠå¥æ©èœãšããŠäœæããïŒã³ããŒã«ã¹ã¿ãã€ãºïŒ ã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµå¯èœã«ããå®è£
ã远å ããïŒ ãã©ã°ã€ã³ ïŒ etcïŒãã€ã¯ããµãŒãã¹åãã€ãã³ãé§åã«ããæ¡åŒµã API 飿ºã...ïŒ ç§ã¯ã¢ããªã³ã®å®çŸæ¹æ³ã¯ãœãããŠã§ã¢ ã¢ãŒããã¯ã㣠ã®äžéšã ãšèããŠããŸãã æžç±ããœãããŠã§ã¢ ã¢ãŒããã¯ã㣠ã®åºç€ãã«ã¯ã以äžã®ååãæžãããŠããŸãã ãœãããŠã§ã¢ ã¢ãŒããã¯ã㣠㯠ãã¬ãŒããªã ãå
šãŠ ãã©ããã£ãŠããããããªããã®æ¹ããã£ãšéèŠ ïŒåŒçšïŒ ãœãããŠã§ã¢ã¢ãŒããã¯ãã£ã®åºç€ ïŒ ã¢ããªã³ã®å®çŸæ¹æ³ããã©ã®æ¹æ³ãè¯ããã¯ã³ã³ããã¹ãã«äŸåããŸãã 補åã®ã¢ããªã³å®è£
æ
åœã«ãªã£ãå Žåã«ã¯ãèªèº«ã®çœ®ãããŠããã³ã³ããã¹ããèæ
®ããŠå€æããããšãå¿
èŠã§ãã 以äžã§ããããã®æ¹æ³ã®ç¹åŸŽãèŠãŠãããŸãã æ¹æ³1. 補åã®ã³ãŒãããŒã¹ãçŽæ¥ç·šéããïŒã¢ãã£ãã£ã±ãŒã·ã§ã³ïŒ 1ã€ç®ã¯ã補åã®ã³ãŒãããŒã¹ã«çŽæ¥å¿
èŠãªå€æŽãè¡ãã¢ãã£ãã£ã±ãŒã·ã§ã³ã§ãã ç¹åŸŽ Pros: éçºãè¿
éã«è¡ãããšãã§ãããããã倿Žãå¯èœ (âçæçãªéçºå¹ç, ããã©ãŒãã³ã¹) Cons: ã³ãŒãããŒã¹ãè€éåãã顧客æ°ãããŒãžã§ã³ãå¢ããããšã«ç®¡çãå°é£ (Ãä¿å®æ§, æ¡åŒµæ§) ã¢ãã£ãã£ã±ãŒã·ã§ã³ã®äŸ äŸãã°ãçµè²»ç²Ÿç®ç³è«ã®äŸãèããŠã¿ãŸããïŒæ¶ç©ºã®ã³ãŒãã§ãïŒã 以äžã®ãã㪠Java ã³ãŒãã§ç³è«åŠçãå®çŸãããŠãããšããŸãã public KeihiService { public void apply(KeihiRequest request) { // ç³è«å
容ã®ç¢ºèª checkRequest(request); // åèšéé¡ã®èšç® calculateTotal(request); // ç³è«æ¿èªè
ã®èšå® setApprover(request); // ç³è«å®æœ submitRequest(request); } } ããã§ãä»åã¢ããªã³èŠæãšããŠA瀟ããæ¥ããç³è«è
èªèº«ããããŒãžã£ã®æã¯æ¿èªè
ã圹å¡ã«ããããšããæ©èœãã¢ãã£ãã£ã±ãŒã·ã§ã³ã§å®çŸããŸãã public KeihiService { public void apply(KeihiRequest request) { // ç³è«å
容ã®ç¢ºèª checkRequest(request); // åèšéé¡ã®èšç® calculateTotal(request); // æ¿èªè
ã®èšå® // A瀟ã¢ããªã³: ç³è«è
èªèº«ããããŒãžã£ã®æã¯æ¿èªè
ã圹å¡ã«ãã String applicantRole = request.getApplicant().getRole(); if ( "Manager" .equals(applicantRole)) { setExectiveApprover(request); } else { setApprover(request); } // ç³è«å®æœ submitRequest(request); } } å°ãã³ãŒããããããªèããããŠããŸããããå®è£
èªäœã¯ãµã¯ããšçµãããŸãã æ¬¡ã«ãB瀟ããç¶ããŠããããžã§ã¯ããæå®ããå Žåã¯ãæ¿èªè
ããããžã§ã¯ã管çè
ã«ããããšããèŠæãæ¥ããšããŸãã A瀟ã«ç¶ãB瀟ã®èŠä»¶ãã¢ãã£ãã£ã±ãŒã·ã§ã³ã§å¯Ÿå¿ããŠã¿ãŸãã public KeihiService { public void apply(ExpenseRequest request, Project project) { // ç³è«å
容ã®ç¢ºèª checkRequest(request); // åèšéé¡ã®èšç® calculateTotal(request); // æ¿èªè
ã®èšå® // A瀟ã¢ããªã³: ç³è«è
èªèº«ããããŒãžã£ã®æã¯æ¿èªè
ã圹å¡ã«ãã String applicantRole = request.getApplicant().getRole(); if ( "Manager" .equals(applicantRole)) { setExectiveApprover(request); // B瀟ã¢ããªã³: ãããžã§ã¯ããæå®ããå Žåã¯ãæ¿èªè
ããããžã§ã¯ã管çè
ã«ãã } else if (project != null ) { setProjectOwnerApprover(request, project); } else { setApprover(request); } // ç³è«å®æœ submitRequest(request); } } B瀟ã¢ããªã³ã®å®è£
è
ãå®è£
ããããšããéãã³ãŒãã«ã¯æ¢ã«ãA瀟ã¢ããªã³ããå®è£
ãããŠããŸãã å®è£
è
ã¯ãããå£ããªãããã«å®è£
ããªããã°ãªããŸããã è£è¶³ ä»åã話ãããå
容ãšå°ããããŠããŸããŸãããäžèšã³ãŒãã«ã¯æ°ã«ãªãç¹ããããŸãã B瀟ã®ç°å¢ã«ãããŠA瀟ã®ã¢ããªã³ã®æ©èœãåããŠããŸããããããªãã â ãããB瀟ã«ãšã£ãŠæå³ããªãæ¯ãèããšããŠçŸããå Žåã顧客ããã®ååããšããŠé¡åšåããŸãã applyã®åŒæ°ã«B瀟ã®ã¢ããªã³ã§ããå©çšããªãprojectã远å ãããŠããã â B瀟ã®ã¢ããªã³å®è£
ã®ã¿ã«ãã©ãŒã«ã¹ããŠå®è£
ãããšãã®ãããªå€æŽãããŠããŸãããšããããŸãããã®å€æŽã劥åœãã¯ååãªè°è«ãå¿
èŠã§ãã å®è£
è
ãã¬ãã¥ãŒã¢ããäžèšã®ãããªèгç¹ãæã€å¿
èŠããããŸãã Feature ToggleïŒæ©èœã®åãæ¿ãæ©æ§ïŒããæ¡ä»¶åå²ã®æŽçã®ããã«Strategyãã¿ãŒã³ã®é©çšãæ€èšãããšæå³ããªãå¯äœçšãæžãããå¯èœæ§ããããŸãã èå¯ ã¢ãã£ãã£ã±ãŒã·ã§ã³ã§ã®å®çŸã¯çæçã«ã¯å¹æçã§ãããé·æçã«ã¯æè¡çè² åµãå¢ãããªã¹ã¯ããããŸãã æ°æ©èœã®è¿œå ãããŒãžã§ã³ã¢ããæã«å€§ããªé害ãšãªãå¯èœæ§ãé«ãã§ãã æ¹æ³2. ã¢ããªã³ãããæ©èœã®ã³ãŒããã³ããŒããŠå¥æ©èœãšããŠäœæããïŒã³ããŒã«ã¹ã¿ãã€ãºïŒ 2ã€ç®ã¯ãã¢ããªã³ãããæ©èœã®ã³ãŒãã顧客ããšã«å
šãŠã³ããŒãã奿©èœãšããŠäœãã³ããŒã«ã¹ã¿ãã€ãºã§ãã ç¹åŸŽ Pros: è£œåæšæºã®ã³ãŒãã¯ç¶æããããä»ã®é¡§å®¢åãã«åœ±é¿ãåºã«ãããªã (ãç¬ç«æ§, ããã©ãŒãã³ã¹) Cons: åé·æ§ãå¢ããå·®å管çããªããã°ãªããªãã³ãŒããå€ããªã(Ãä¿å®æ§, æ¡åŒµæ§) ã³ããŒã«ã¹ã¿ãã€ãºã®äŸ ã¢ãã£ãã£ã±ãŒã·ã§ã³ã®äŸãšåãèŠä»¶ãA瀟ãB瀟ããããããæ¥ãå Žåã«ã³ããŒã«ã¹ã¿ãã€ãºã§å®çŸããå ŽåãèããŸãã A瀟ã¢ããªã³ãç³è«è
èªèº«ããããŒãžã£ã®æã¯æ¿èªè
ã圹å¡ã«ããã public KeihiServiceForCompanyA { public void apply(KeihiRequest request) { // ç³è«å
容ã®ç¢ºèª checkRequest(request); // åèšéé¡ã®èšç® calculateTotal(request); // æ¿èªè
ã®èšå® // A瀟ã¢ããªã³: ç³è«è
èªèº«ããããŒãžã£ã®æã¯æ¿èªè
ã圹å¡ã«ãã String applicantRole = request.getApplicant().getRole(); if ( "Manager" .equals(applicantRole)) { setExectiveApprover(request); } else { setApprover(request); } // ç³è«å®æœ submitRequest(request); } } B瀟:ããããžã§ã¯ããæå®ããå Žåã¯ãæ¿èªè
ããããžã§ã¯ã管çè
ã«ããã public KeihiServiceForCompanyB { public void apply(ExpenseRequest request, Project project) { // ç³è«å
容ã®ç¢ºèª checkRequest(request); // åèšéé¡ã®èšç® calculateTotal(request); // æ¿èªè
ã®èšå® // B瀟ã¢ããªã³: ãããžã§ã¯ããæå®ããå Žåã¯ãæ¿èªè
ããããžã§ã¯ã管çè
ã«ãã if (project != null ) { setProjectOwnerApprover(request, project); } else { setApprover(request); } // ç³è«å®æœ submitRequest(request); } } ã¢ãã£ãã£ã±ãŒã·ã§ã³ãšã®éãã¯ãKeihiServiceã¯ã©ã¹ãã³ããŒããããããA瀟åãçµè²»ç²Ÿç®ç³è«(KeihiServiceForCompanyA), B瀟åãçµè²»ç²Ÿç®ç³è«(KeihiServiceForCompanyB)ãšããã¯ã©ã¹ãäœæããŠããããå®è£
ããŠããæã«ãªããŸãã ããã«ãããã¢ãã£ãã£ã±ãŒã·ã§ã³ã®æã«äžå®ã«ãªã£ãããB瀟ã§åäœããéã®A瀟ã¢ããªã³ã®åœ±é¿ãã軜æžããããšãåºæ¥ãŸãã èå¯ è€æ°ç€Ÿã®ã¢ããªã³å®è£
ãåäžã³ãŒãã«å
¥ãä¹±ããè€éãã¯é²ããŸããã管çããã³ãŒãããŒã¹ã®éã¯å¢ããŸããããã¯ã¢ãã£ãã£ã±ãŒã·ã§ã³ãšã¯éã£ãã³ãŒãããŒã¹ç®¡çã®ç
©éãïŒäŸãã°ãGitã®ãã©ã³ãéçšãCI/CDãã€ãã©ã€ã³ã§ã®å¯ŸåŠãªã©ïŒãçºçããŸãã æ¹æ³3. ã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµå¯èœã«ããå®è£
ã远å ããïŒ ãã©ã°ã€ã³ ïŒ 3ã€ç®ã¯ãæ¡åŒµãã€ã³ãã補ååŽã«äœãããã®å®è£
ã远å ããããšã§å®çŸãã ãã©ã°ã€ã³ ã§ãã ç¹åŸŽ Pros: å¿
èŠãªéšåã ããæ¡åŒµã§ããã¢ããªã³æ©èœãæç¶çã«ç¶æãããã (âä¿å®æ§, æ¡åŒµæ§, åå©çšæ§) Cons: æ¡åŒµãã€ã³ãã®èšèšãé£ãããéçºåæã®ã³ã¹ããé«ããªããŸãã(Ãéçºå¹ç, è€éæ§, ããã©ãŒãã³ã¹) ãã©ã°ã€ã³ ã®äŸ ããã§ã¯ããããããæ¿èªè
ã®èšå®ããžãã¯ã«ã¯é¡§å®¢æ¯ã«éã£ãèŠä»¶ãåºãå¯èœæ§ãé«ãããšããããšãèŠããŠããåæã§ã話ããŸãã(ãã®ãããªèгç¹ã¯ããžãã¹ãµã€ããæã£ãŠããããšãå€ãã§ãã) å
ã³ãŒããžã®æ¡åŒµãã€ã³ãäœæ 以äžã®ããã«ãå
ã®ã³ãŒãã«ãããç³è«æ¿èªè
ã®èšå®åŠçããApproverProviderFactoryãšããã¯ã©ã¹ãå©çšããããšã§ãå®éã®åŠçãApproverProviderã«å§è²ããŸãã (æ³šïŒ ä»åã®ã³ãŒãã§ã¯ã Java ã§åºã䜿ãããŠãã Spring Framework ã®äŸåæ§æ³šå
¥ãå©çšããŠããŸãã) @Service public KeihiService { @Autowired private ApproverProviderFactory approverProviderFactory; public void apply(KeihiRequest request) { // ç³è«å
容ã®ç¢ºèª checkRequest(request); // åèšéé¡ã®èšç® calculateTotal(request); // ç³è«æ¿èªè
ã®èšå®(æ¡åŒµå¯èœãªå®è£
) approverProviderFactory.get().setApprover(request); // ç³è«å®æœ submitRequest(request); } } æ¡åŒµãã€ã³ããšããŠè¿œå ãããApproverProviderFactoryã®å®è£
å
ã³ãŒãã«åã蟌ãã ApproverProviderFactoryã®å®è£
ã§ãã å°ãè€éã§ãããget()ã§ã¯ä»¥äžã®ã«ãŒã«ã®éããApproverProviderã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£
ã¯ã©ã¹ã®æ°ãèŠãŠãé©åãªApproverProviderã®å®è£
ã¯ã©ã¹ãè¿åŽããŠããŸãã ApproverProviderã®å®è£
ã¯ã©ã¹ã1ã€ã®å Žåã«ã¯ãããã©ã«ãã®å®è£
(DefaultApproverProvider)ãè¿åŽããŸãã ApproverProviderã®å®è£
ã¯ã©ã¹ã2ã€ã®å Žåã«ã¯ãããã©ã«ã ã§ãªã å®è£
ãè¿åŽããŸãã @Component public class ApproverProviderFactory { @Autowired private ApplicationContext applicationContext; public ApproverProvider get() { // ApproverProvider ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããŠããå
šãŠã® Bean ãååŸ Map<String, ApproverProvider> beans = applicationContext.getBeansOfType(ApproverProvider. class ); int count = beans.size(); if (count == 1 ) { // å®è£
ã1ã€ãããªããã°ãã¢ããªã³ã¯ç¡ãã®ã§DefaultApproverProviderã䜿ã return applicationContext.getBean(DefaultApproverProvider. class ); } if (count == 2 ) { // å®è£
ã2ã€ããã°ãã¢ããªã³å®è£
ããããšã¿ãªããDefaultApproverProviderã§ãªãå®è£
ã䜿ã for (ApproverProvider provider : beans.values()) { if (!(provider instanceof DefaultApproverProvider)) { return provider; } } } throw new IllegalStateException( "Unexpected number of ApproverProvider implementations: " + count); } } è£œåæšæºã®æ©èœãšããŠã¯ãApproverProviderå®è£
ãšããŠDefaultApproverProviderã¯ã©ã¹ãå®è£
ããŠãããŸããããæ¯ãèããå€ãããå Žåã¯ãæåŸ
ããã¢ããªã³ã®åäœãå¥ã®ApproverProviderã®å®è£
ã¯ã©ã¹ãšããŠå®çŸ©ããŸããApproverProvierã®ã¢ããªã³å®è£
ãååšããå Žåã«ã¯ãå®è£
ã¯ã©ã¹ã2ã€ã«ãªããããã¢ããªã³ããå®è£
ã¯ã©ã¹ã䜿ãããŸãã ããããããšã§ãå
ã®ã³ãŒãã«å€æŽãå ããããšãªãæ¯ãèãã®å€æŽãå®çŸã§ããŸãã ä»ãŸã§ã®äŸã§èšãã°ãA瀟åããB瀟åãããããã®æ¯ãèããããApproverProviderã®å®è£
ã¯ã©ã¹ãäœæããŸãããããã®å®è£
ã¯ã©ã¹ã補åãšã¯å¥ã®jar(以äžãã¢ããªã³jar)ãšããŠåãåºãã補åã³ãŒãã®èµ·åæã«é¡§å®¢ã«å¯Ÿå¿ããã¢ããªã³jarãèªã¿èŸŒãããšã§ã補åã³ãŒãã«æãå
¥ããããšãªããæå°éã®å·®åã®ã¿ã管çããããšã§ã¢ããªã³ãå®çŸããããšãã§ããŸãã(=SOLIDååã®1ã€ã§ãããªãŒãã³ã»ã¯ããŒãºãååã«åŸããæ°ããªæ©èœè¿œå ãæ¢åã³ãŒãã®å€æŽãªãã«å®çŸã§ããç¹ã倧ããªã¡ãªããã§ãã) èå¯ ãã©ã°ã€ã³ ã¯ãèšèšãšå®è£
ã«ã¯é«åºŠãªæè¡ãå¿
èŠã§ããããã®åå°æ¥çãªæ¡åŒµæ§ãšä¿å®æ§ãåäžããŸããäžæ¹ãäžæã ãã©ã°ã€ã³ ååºæ¥ããšããŠãããã®ç®æã«å€æŽãããŸãå
¥ããªãå Žåã¯ãäœèšãªè€éããåã蟌ãã§ããŸããŸãã ã¢ããªã³æ¹åŒéžå®ãŸãšã åŸãããç¹æ§ (ã) 倱ãããç¹æ§ (Ã) ã¢ãã£ãã£ã±ãŒã·ã§ã³ çæçãªéçºå¹ç, ããã©ãŒãã³ã¹ ä¿å®æ§, æ¡åŒµæ§ ã³ããŒã«ã¹ã¿ãã€ãº ç¬ç«æ§, ããã©ãŒãã³ã¹ ä¿å®æ§, æ¡åŒµæ§ ãã©ã°ã€ã³ ä¿å®æ§, æ¡åŒµæ§, åå©çšæ§ éçºå¹ç, è€éæ§, ããã©ãŒãã³ã¹ ãããŸã§ã3ã€ã®ã¢ããªã³å®çŸææ³ã玹ä»ããŸããã ç¹°ãè¿ãã«ãªããŸãããã©ã®æ¹æ³ãè¯ããã¯ã³ã³ããã¹ãã«äŸåããŸãã ä»åã¯ã¢ãã£ãã£ã±ãŒã·ã§ã³ã ãšèŸããªãã ãã©ã°ã€ã³ ãæå¹ãšãªããããªã³ãŒããäŸãšããŠæžããŸãããã§ããäŸãã°ãå®çŸãããã¢ããªã³æ©èœã¯åŸã»ã©è£œåã®æšæºæ©èœã«åã蟌ãå¯èœæ§ãé«ãããšããããšãåãã£ãŠããå Žåã¯ãè¿
éã«å®çŸã§ããã¢ãã£ãã£ã±ãŒã·ã§ã³ãéžæããããšã劥åœãšãªãã±ãŒã¹ã¯ååã«èããããŸãã ãŸãã顧客ããšã®å®å
šãªã«ã¹ã¿ãã€ãºãæ±ããããä»ã®é¡§å®¢ãžã®åœ±é¿ãé¿ãããã±ãŒã¹ãã§ããã°ãã³ããŒã«ã¹ã¿ãã€ãºãæãè¯ãéžæè¢ãšãªããããããŸããã ããã«æããŠããªãæ¹åŒã劥åœã§ããããšããããæ§ã
ãªã¡ã³ããŒãšè°è«ããªãã劥åœãªãã®ãéžã¶ããšãéèŠã§ãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã®è£œåéçºã¯ããžãã¹ãµã€ããŸã§å«ããã³ã³ããã¹ããå å³ãã倿ã®é£ç¶ã§ãã ãããããã ãã¬ãŒããªã ãæèããŠè°è«ã倿ããªãããä»åŸã補åéçºãæšé²ããŠãããããšèããŠããŸãã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @oura.osamu ãã¬ãã¥ãŒïŒ @nakamura.toshihiro ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ããã« ã¯ãã¹ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒæ°å2幎ç®ã®å®®åŽã§ãã å
æ¥ã AWS ã®re:Inventã«åå ãããŠããã ããŸããã å人çã«ãã³ãºãªã³ãGameDayã«åå ããæãåããããšã§ ã¹ãã«ã¢ãã ããããšæãåå ããŸããã®ã§ãåå ããŠé¢çœãã£ãã¯ãŒã¯ã·ã§ããã«ã€ããŠã玹ä»ããŸãã re:Inventãšã¯ äžèšèšäºã«èšèŒããŠãããŸãããèå³ãããæ¹ã¯ã芧ãã ããã AWS re:Invent 2024ãšAWS GameDayã«ã€ã㊠ã¯ãŒã¯ã·ã§ãããšã¯ ã¯ãŒã¯ã·ã§ããã¯ãçŽ2æéçšåºŠã®ãã³ãºãªã³åã»ãã·ã§ã³ã§ããåèªã®PCã䜿ã£ãŠæ°æ©èœããµãŒãã¹ã«å®éã«è§ŠããªããåŠã¹ãå Žãšãªã£ãŠããŸããçæéã§å®è·µçã«ã¹ãã«ãç¿åŸã§ãããããæ®æ®µè§Šããªãæè¡ã«åããŠææŠããçµ¶å¥œã®æ©äŒã§ããããŸãã AWS re:Inventã§ã¯ãæ°ãããµãŒãã¹ã掻çšããã¯ãŒã¯ã·ã§ãããå€ãéå¬ãããŠããŸããã äžæ¹ã§ãJP Contents Hubãšãããã®ã«ãå€ãã®ãã³ãºãªã³ã»ã¯ãŒã¯ã·ã§ããããŸãšããããŠãããéåžžã«äŸ¿å©ã§ãã æ¢åã®ãµãŒãã¹ã«ã€ããŠãæºäžã®ç¥èã ãã§ãªãå®éã«è§ŠããŠåãããŠã¿ããæ¹ã«ã¯ç¹ã«ããããã®ã³ã³ãã³ãã«ãªã£ãŠããŸãã®ã§ããèå³ãããæ¹ã¯æãåãããŠã¿ãŠãã ããã JP Contents Hub è±èªã¯ãŒã¯ã·ã§ããæ
å ± ä»å玹ä»ããã¯ãŒã¯ã·ã§ãã é¡åïŒSUP303 | Amazon Q ã䜿çšããŠéçšããã³ ã»ãã¥ãªãã£ã€ã³ã·ãã³ã ã®åçºãé²ã å
容ïŒç¿»èš³ïŒ AWS ãµããŒãã±ãŒã¹ã AWS Trusted Advisor ã®æšå¥šäºé
ã AWS Health éç¥ãªã©ã® AWS éçšããŒã¿ã䜿çšããŠã Amazon Q Business ã®æ©èœãèŠããã®ã åé ã§è¿°ã¹ãåããŒã¿ã Amazon Q Business ã«åã蟌ãããšã§ãè€éãªããŒã¿ã¢ãã«ãçè§£ããªããŠãã èªç¶èšèª ã§ã®äŒè©±ãæ ¹æ¬åå ã®è§£æãè¡ãããšãå¯èœã«ãªãã AI ã¢ã·ã¹ã¿ã³ãïŒ Amazon Q BusinessïŒã¯ãåºç€ãšãªãããŒã¿ãœãŒã¹ãžã®çŽæ¥ãªã³ã¯ã«è£æã¡ãããã³ã³ããã¹ãã«å¿ããåçãæäŸããå¿
èŠã«å¿ããŠããã«èª¿æ»ã§ããããã«ããã ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãç°å¢ããã®ããŒã¿ã®åéã Amazon Q Business ã¢ããªã±ãŒã·ã§ã³ã®äœæãããŒã¿ã®ã€ã³ããã¯ã¹äœæãIT ãµãŒãã¹ç®¡ç (ITSM) ã·ã¹ãã ïŒServiceNowãJiraãZendesk ãªã©ïŒ ãšã®çµ±åã«ã€ããŠã説æããã£ãã ããã«ãããç¬èªã®ãã¬ã€ããã¯/ãã¬ããžããŒã¹ã䜿çšããŠã³ã³ããã¹ãã«å¿ããæšå¥šäºé
ãåãåãããããã®æšå¥šäºé
ãå®è¡ããŠãããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã«åªãã AWS ç°å¢ãå®çŸã§ãããšããå
容ã åæç¥è AWS ã«ã¯ããµããŒãã±ãŒã¹ã Trusted Advisorã AWS Health ãªã©ãæ§ã
ãªããŒã¿ãååšããŸãã ããããæŽ»çšããããšããŠããããŒã¿ãã¢ã«ãŠã³ãããšã«æ£åšããŠããããé©åãªåæææ®µããªãã£ãããããšããªããªãæãããã«å¯èŠåã»æŽ»çšã§ããŸããã ããã§ç»å Žããã®ããQSI (Support Insights with Amazon Q) ã§ãã Amazon Q Business ã®çæ AI æ©èœã掻çšããããšã§ãéžæããã¢ã«ãŠã³ãå
šäœã®ãµããŒãã±ãŒã¹ãTrusted AdvisoãHealthããŒã¿ããæŽå¯ãæšå¥šäºé
ãåŸãŠãå¯èŠåãæ
å ±ã®æŽ»çšã«ã€ãªããããšãã§ãããœãªã¥ãŒã·ã§ã³ã§ãã QSI (Support Insights with Amazon Q) â»å®æ
ã¯Cloud Formationã§ AWS ãªãœãŒã¹ãäœæã§ãããã³ãã¬ãŒããå«ãŸããŠãããã®ã§ãã詳现㯠ã¢ãŒããã¯ã㣠å³ã®éšåã§è§£èª¬ããŸããïŒ QSI (Support Insights with Amazon Q) ã®è©³çް åèïŒ https://github.com/aws-samples/support-insights-with-amazon-q?tab=readme-ov-file å®éã® ã¢ãŒããã¯ã㣠å³ã¯äžèšã§ãã ãã³ãºãªã³ã§ã¯ãã®ä»çµã¿ã¥ãããè¡ããŸããã Amazon Q Business ãæŽ»çšã㊠AWS ãµããŒãããŒã¿ãåæããä»çµã¿ å³ãããããQSIã®æ§æèŠçŽ åã¢ã«ãŠã³ãã®åœ¹å² âDataCollection AccountåŽïŒäžéšïŒ ã¹ã³ãŒãå
ãã¹ãŠã®ã¢ã«ãŠã³ããããS3ãžããããã®æ
å ±ãæ ŒçŽããäžå€®éæš©ã¢ã«ãŠã³ãã âLinked Account DataCollectionã¢ã«ãŠã³ã以å€ã®ã¢ã«ãŠã³ãã§ã AWS ãµããŒãããŒã¿ïŒ AWS ãµããŒãã±ãŒã¹ãTrusted AdvisorãHealthïŒãæã£ãŠããã¢ã«ãŠã³ãã åèæ
å ± AWS Support AWS Trusted Advisor AWS Health æ©èœæ§æ â Amazon Q Business ã³ã³ããŒãã³ã ãŠãŒã¶ãŒããã£ãã圢åŒã§ããŒã¿ã«ã¢ã¯ã»ã¹ãã èªç¶èšèª ã§å¯Ÿè©±çã«æŽå¯ãåŸãããç°å¢ã Amazon Q Business ã¢ããªã±ãŒã·ã§ã³ãš Web ãšã¯ã¹ ããªãš ã³ã¹ ã¢ãžã¥ãŒã«ãå«ãŸããŠããã åèãªã³ã¯ â Amazon Q Web ã€ã³ã¿ãŒãã§ãŒã¹ ãã£ãããããã皌åãããŠã§ãç»é¢ããŠãŒã¶ãŒã¯ãã©ãŠã¶äžã§ âè±èª or æ¥æ¬èªâ ïŒçŸæç¹ã§ã¯æ¥æ¬èªå¯Ÿå¿ç¡ãïŒãªã©ã® èªç¶èšèª ã§è³ªåãããªã¢ã«ã¿ã€ã ã«åçãæšå¥šäºé
ãåŸãããšãã§ããã â Q Business Application Q Web ã€ã³ã¿ãŒãã§ãŒã¹ã®èåŸã«ããã³ã¢ã®ã¢ããªã±ãŒã·ã§ã³ãããŒã¿ãœãŒã¹ãçæ AI ãšã³ãžã³ãšã®é£æºãæ
ã£ãŠããã â AWS Support Collectorã¢ãžã¥ãŒã« çµç¹å
ã®å AWS ã¢ã«ãŠã³ãïŒLinked AccountïŒããããµããŒãã±ãŒã¹ïŒTrusted AdvisorïŒ AWS Health ãšãã£ãããŒã¿ã宿çã«åéããäžå€®ã¢ã«ãŠã³ãïŒData Collection AccountïŒã® S3 ãã±ãã ãžã¢ããããŒãããä»çµã¿ã®ã¢ãžã¥ãŒã«ã§ãã åèãªã³ã¯ â AWS Lambda & EventBridge ãªã³ã¯ãããã¢ã«ãŠã³ããã宿çã«åæ
å ±ãååŸããããã®ãã®ã Lambda 颿°ãš EventBridge (Scheduler) ãçµã¿åãããŠã¹ã±ãžã¥ãŒãªã³ã°ããŠå®è¡ããŠããã â S3 ãã±ãã ããããã®ããŒã¿ãœãŒã¹ïŒãµããŒãã±ãŒã¹ãTrusted AdvisorãHealthïŒããåéãã JSON 圢åŒã®ãµããŒãããŒã¿ã¯ãäžå€®ã® Data Collection Account ã«ãã S3 ãã±ãã ãžã¢ããããŒãããããã Q ã¢ããªã±ãŒã·ã§ã³ãèªã¿åããã€ã³ããã¯ã¹åããŠãã£ãããããã®å¿çã«æŽ»çšããŠããã ãã³ãºãªã³ã§ã¯QSI ãæ§æãã倧ãã ãããã®éšåããããã€ããŸããã ãã³ãºãªã³ãå§ããåã®åææ¡ä»¶ ãã³ãºãªã³ãéå§ããåã«ã以äžã®åææ¡ä»¶ãããäžèšã®å
容ã宿œããŸããã IAM Identity Center ã®æå¹åã®ç¢ºèª SAML 2.0 ã«å¯Ÿå¿ãã IdPïŒIdentity ProviderïŒãšã㊠IAM Identity Center ãèšå®ãããŠããå¿
èŠããããŸãããŸããå°ãªããšã1人以äžã®ãŠãŒã¶ãŒïŒæå¹ãªã¡ãŒã«ã¢ãã¬ã¹ïŒãããããžã§ãã³ã°ãããŠããå¿
èŠããããŸãã 詳现ã«ã€ããŠã¯äžèšãåç
§ããŠãã ããã https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html Amazon Q Business ã®å¯Ÿå¿ãªãŒãžã§ã³ã®ç¢ºèª Amazon Q Business ã䜿çšããå Žåã¯ã察å¿ãããªãŒãžã§ã³ã§æäœãè¡ãå¿
èŠããããŸãã 察å¿ãªãŒãžã§ã³ã®äžèЧã¯äžèšãåç
§ããŠãã ããã æ³šæïŒæ¥æ¬ïŒæ±äº¬ãªãŒãžã§ã³ïŒã¯çŸæç¹ã§ã¯å¯Ÿå¿ãªãŒãžã§ã³ã«å«ãŸããŠããŸããã Amazon Qãè§Šã£ãŠã¿ããæ¹ã¯ãæ¥æ¬ãªãŒãžã§ã³ä»¥å€ã®å¯Ÿå¿ãªãŒãžã§ã³ãéžæããŠæäœãé²ããŠãã ããã 察å¿ãªãŒãžã§ã³ã®äžèŠ§ïŒ https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/quotas-regions.html IAM Identity Center ã§å€èŠçŽ èªèšŒïŒMFAïŒã®æå¹å IAM Identity Center ã®å€èŠçŽ èªèšŒïŒMFAïŒã¯ããã©ã«ãã§ç¡å¹åãããŠããŸãããã®ããèšå®ãè¡ãæå¹åããŸãã ã¢ã€ãã³ãã£ã㣠ã¹ãã¢ãžã®ãŠãŒã¶ãŒäœæ IAM Identity Center ã€ã³ã¹ã¿ã³ã¹ å
ã§å°ãªããšã1人ã®ãŠãŒã¶ãŒãå¿
èŠã§ãããã®ããã ã¢ã€ãã³ãã£ã㣠ã¹ãã¢ã«ãŠãŒã¶ãŒãäœæããŸãã Q Business ã¢ããªã±ãŒã·ã§ã³ãžã®ãŠãŒã¶ãŒå²ãåœãŠ åæé ã§äœæãããŠãŒã¶ãŒã Q Business ã¢ããªã±ãŒã·ã§ã³ã«å²ãåœãŠãå¿
èŠããããŸãããããè¡ããªãå Žåã Amazon Q Web ãšã¯ã¹ ããªãš ã³ã¹ã«ã¢ã¯ã»ã¹ããããšããéã«ãã¢ã¯ã»ã¹ãæåŠãããŸããããšããã¡ãã»ãŒãžã衚瀺ãããŸãã S3 ãã±ãã ã®æºå 管çã¢ã«ãŠã³ãïŒãŸã㯠Data Collection AccountïŒã«ã AWS ãµããŒãããŒã¿ãæ ŒçŽããããã® S3 ãã±ãã ãäœæããŠãããŸãã â»å®éã®AmazonQãžãã°ã€ã³åŸã®ç»é¢ ã»IAM ã¢ã€ãã³ãã£ã㣠ã»ã³ã¿ãŒã§äœæãããŠãŒã¶ãQã¢ããªã«å²ãåœãŠãããšã§ããã®ãŠãŒã¶ãŒæ
å ±ã§Qã¢ããªã«ã¢ã¯ã»ã¹ããããšãã§ããŸããã ãããã€æé CloudFormation ãã³ãã¬ãŒããå
¥æ GitHub ãã以äžã®ãã¡ã€ã«ãããŠã³ããŒãããŸã: https://github.com/aws-samples/support-insights-with-amazon-q/blob/main/src/q_application/amazon-q-cfn.yaml CloudFormation ã¹ã¿ãã¯ã®äœæ https://console.aws.amazon.com/cloudformation/home ãéãããªãŒãžã§ã³ã Amazon Q Business 察å¿ãªãŒãžã§ã³ ã«èšå®ããŸãã ãã¹ã¿ãã¯ã®äœæã â ãæ°ãããªãœãŒã¹ã䜿çšã ãéžæããããŠã³ããŒããã amazon -q-cfn. yaml ãã¢ããããŒãã ã¹ã¿ãã¯ã®ååãäŸãšã㊠amazon -q-cfn ãšãã以äžã®ãã©ã¡ãŒã¿ãå
¥å â IAMIdentityCenterARN: IAM Identity Center ã€ã³ã¹ã¿ã³ã¹ ã® ARN (IAM Identity Center ã³ã³ãœãŒã« â [èšå®ã«ç§»å] â ARN ã³ããŒ) â¡QBusinessApplicationName: Q ã¢ããªã±ãŒã·ã§ã³å (ä»»æ) â¢S3DataSourceBucket: ãµããŒãããŒã¿ã眮ã S3 ãã±ãã å (äŸ: qsi-app-data-ACCOUNT_ID) æçµç»é¢ã§ IAM ããŒã«äœæã«åæããã¹ã¿ãã¯ãäœæã ã¹ã¿ãã¯ã®ã¹ããŒã¿ã¹ã CREATE_COMPLETE ã«ãªããŸã§åŸ
æ©ïŒçŽ10åïŒã ããã§äœæããããªãœãŒã¹ æ§æå³ã®éšåã§åè¿°ããåãªãœãŒã¹ãäœæãããŸããã Amazon Q Business ã³ã³ããŒãã³ã AWS Support Collectorã¢ãžã¥ãŒã« S3ããŒã¿ãœãŒã¹ã³ãã¯ã¿ Web ãšã¯ã¹ ããªãš ã³ã¹ (ãã£ããã€ã³ã¿ãŒãã§ãŒã¹) ã€ã³ããã¯ã¹ãŠãããïŒåæã¯20,000ä»¶ãŸã§ã®ããã¥ã¡ã³ããç»é²å¯èœïŒ ããŒã¿ãœãŒã¹ã®åæ æ¬ãã³ãã¬ãŒãã§äœæããããŒã¿ãœãŒã¹ïŒãµããŒãã±ãŒã¹ãTrusted AdvisorãHealthïŒã¯ãæ¯æ¥ UTC æ·±å€ã« S3 ãã±ãã å
ã®ããŒã¿ãåæããããã«ã¹ã±ãžã¥ãŒãªã³ã°ãããŠããŸãã ãã±ãã å
ã«ãµããŒãããŒã¿ïŒãããã¯åæããŒã¿ã® zip è§£åçµæïŒãé
眮ãããšãäžèšã®æé ã§å³æåæãå¯èœã§ãã Amazon Q ã³ã³ãœãŒã« ãéããå
ã»ã©äœæãã Q ã¢ããªã±ãŒã·ã§ã³å ãéžæã ãããŒã¿ãœãŒã¹ãã®ã¡ãã¥ãŒãããS3ããŒã¿ãœãŒã¹ãæåã§åæ (Sync) ã§ããŸãã åæãå®äºãããšããµããŒãããŒã¿ãã€ã³ããã¯ã¹åãããQ Business äžã§æ€çŽ¢å¯Ÿè±¡ãšãªãã ãŠãŒã¶ãŒã®ã¢ã¯ã»ã¹èšå® Identity Center äžã§ Q Business ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããŠãŒã¶ãŒïŒãŸãã¯ã°ã«ãŒãïŒã远å ããŠããã CloudFormation ã®å±éæã«æå®ãã IAM Identity Center ARN ãšé£æºãããŠãããããQ Business åŽãã Identity Center ã®ãŠãŒã¶ãŒ/ã°ã«ãŒããç°¡åã«æ€çŽ¢ã»å²ãåœãŠå¯èœã Amazon Q Businessãžã®ã¢ã¯ã»ã¹ ãããŸã§å®äºãããšã Amazon Q Business ã®Web ãšã¯ã¹ ããªãš ã³ã¹ïŒãã£ããç»é¢ïŒã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã æé AWS ãããžã¡ã³ãã³ã³ãœãŒã« â Amazon Q Business â Q ã¢ããªã±ãŒã·ã§ã³ â Web ãšã¯ã¹ ããªãš ã³ã¹URL ãéãã Identity Center ã®èªèšŒç»é¢ã§ã¡ãŒã«ã¢ãã¬ã¹ã»ãã¹ã¯ãŒããªã©ãå
¥åã ãã°ã€ã³åŸããã£ããç»é¢ã衚瀺ãããã®ã§è³ªåãå¯èœã«ãªããŸãã 質åã«å¯Ÿã㊠Q Business ãåçãããµããŒãã±ãŒã¹ã®è©³çްã Trusted Advisorã®æšå¥šäºé
ãªã©ãå®éã®ãµããŒãããŒã¿ãããšã«ããæŽå¯ãè¿ãããŸãã å®éã«è³ªåããŠã¿ã 詊ãã«çŽè¿ã®ã€ãã³ãã«ã€ããŠèããŠã¿ãŸããã çŽè¿ã®Healthã€ãã³ãã«äœãããããèã質åããããšãäžèšç»åã«ããããã«å®éã®ã€ãã³ããœãŒã¹ã«åºã¥ããŠåçãåºåããŠãããŸããã åŸãããåçã®ç¿»èš³ ããŒã¿ãœãŒã¹ã«åºã¥ããæè¿å ±åããããã«ã¹ã€ãã³ãã2ã€ãããŸãïŒ AWS MediaPackageã«éçšäžã®åé¡ãçºçããã©ã€ãããã³ãªã³ããã³ãã³ã³ãã³ãã®ãããªåçãæç¶çã«äžæãããé
å»¶ãå¢å ãããããã¡ãªã³ã°æéãé·ããªã£ãŠããŸãããã®åé¡ã¯éšåçã«è§£æ±ºããŠããã24æé以å
ã«å®å
šã«å埩ããèŠèŸŒã¿ã§ãã ãŸãã2024幎9æ26æ¥ãã29æ¥ã«ãããŠWorkDocs API ã«åé¡ãçºçãã API æäœã«åœ±é¿ãåºãŸããããWorkDocsãµãŒãã¹å
šäœã®å¯çšæ§ãæ¢åã®ããã¥ã¡ã³ãã®ã»ãã¥ãªãã£ã«ã¯åœ±é¿ããŸããã§ããããã®æéäžãããŠãŒã¶ãŒã¯ãŠã§ãã» ã€ã³ã¿ãŒãã§ã€ã¹ ããã¹ã¯ãããã»ã¢ããªã±ãŒã·ã§ã³ãéããŠã³ã³ãã³ãã«ã¢ã¯ã»ã¹ããããšãã§ããŸããã ããã«ããµããŒãã»ã±ãŒã¹ã«ãããšãus-west-2ãªãŒãžã§ã³ã«ãããRDSã®ããã¯ã¢ããã«ç¶ç¶çãªåé¡ããããèªåããã¯ã¢ãããæå®ãããããã¯ã¢ããã»ãŠã£ã³ããŠå
ã§å®äºãããæåã¹ãããã·ã§ããããããã¯ã¢ããã»ãžã§ãã»ãã¥ãŒãã¹ããŒã¿ã¹ã§ç«ã¡åŸçããŠãããšã®ããšã§ãããµããŒãããŒã ã¯ããããã®ããã¯ã¢ããã®å€±æãç©æ¥µçã«èª¿æ»ãã圱é¿ãåãã顧客㫠ãã©ãã«ã·ã¥ãŒãã£ã³ã° ã®æé ãæäŸããŠããŸãã åªå
é äœãé«ãã察å¿ãå¿
èŠãª5ã€ã®é
ç®ã«ã€ããŠãèããŠã¿ãŸããã 翻蚳ïŒããŒã¿ãœãŒã¹ã«åºã¥ããåãçµãã¹ãåªå
äºé
ã®ããã5ã¯ä»¥äžã®ãšããã§ããïŒ ã»ãã¥ãªãã£ãšã¢ã¯ã»ã¹å¶åŸ¡ïŒ ã»ãã¥ãªãã£ã»ã°ã«ãŒãã»ã«ãŒã«ãšãããã¯ãŒã¯ã»ã¢ã¯ã»ã¹ã»ã³ã³ ãããŒã« ã»ãªã¹ãïŒNACLïŒãèŠçŽãã匷åããå¿
èŠãªã€ã³ããŠã³ãã» ãã©ãã£ã㯠ã®ã¿ãèš±å¯ããããã«ããã ã·ã¹ãã ã®ã¢ããããŒããšç£èŠïŒ ã€ã³ã¹ã¿ã³ã¹ ãææ°ã®ãªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ã»ã¢ããããŒããšã»ãã¥ãªãã£ã»ããããå®è¡ããŠããããšã確èªããå
æ¬çãªã»ãã¥ãªãã£ã»ãã®ã³ã°ãšç£èŠãæå¹ã«ããŠã æœåšç ãªè
åšã ããã¢ã¯ãã£ã ã«æ€åºããŠå¯Ÿå¿ããã ããã¯ã¢ãããšã¹ãã¬ãŒãžã®ç®¡çïŒ ã¹ãã¬ãŒãžã®å²ãåœãŠã確èªããèªåããã¯ã¢ãããæ£åžžã«å®äºããã®ã«ååãªç©ºãé åã確ä¿ããããšã§ãRDSã®ããã¯ã¢ããã®å€±æã«å¯ŸåŠããŸãã ãã«ã¹ãã§ãã¯ã®å®è£
ïŒ ã¢ããªã±ãŒã·ã§ã³ã®å¥å
šæ§ãæ£ç¢ºã«åæ ããé©åãªå¥å
šæ§ãã§ãã¯ãæ§æããã€ã³ ãã©ãª 㯠ãšã¹ ãã®å®äºãšäžå¥å
šãª ã€ã³ã¹ã¿ã³ã¹ ã®åé€ã®ãã©ã³ã¹ããšãããã«é©åãªç»é²è§£é€é
å»¶ãèšå®ããã é«å¯çšæ§ãšèé害æ§ïŒ ã€ã³ã¹ã¿ã³ã¹ ã®ãã«ã ã¢ãã€ã©ããªã㣠ãŸãŒã³ ãã£ã¹ããªãã¥ãŒã·ã§ã³ ãå®è£
ããäžå¥åº·ãª ã€ã³ã¹ã¿ã³ã¹ ãèªåçã«çœ®ãæããããã«ãªãŒãã¹ã±ãŒãªã³ã°ãå©çšããå¯çšæ§ãšããã©ãŒãã³ã¹ãåäžãããããã« AWS Global Acceleratorã®å®è£
ãæ€èšããã å人çã«ä»ã«ãäžèšã®ãããªè³ªåãã§ãããšæããŸããã ãéå»3ãæã§äžçªå€ãã£ããµããŒãã±ãŒã¹ã®å
容ã¯ïŒã ãTrusted Advisor ã®ã³ã¹ãæé©åã«é¢ããæšå¥šäºé
ãäžèŠ§ã§æããŠã ãé »ç¹ã«çºçããŠãã AWS Healthã€ãã³ãã®åå ã¯ïŒã ãŸãšã QSI (Support Insights with Amazon Q) ã¯ã AWS ãµããŒãããŒã¿ïŒãµããŒãã±ãŒã¹ãTrusted AdvisorãHealthïŒãç¹å®ã®ã¢ã«ãŠã³ããžéçŽããçæ AI ãš äŒè©±åã€ã³ã¿ãŒãã§ãŒã¹ã«ãã£ãŠé«åºŠãªåæãšæšå¥šäºé
ãåŸããããœãªã¥ãŒã·ã§ã³ã§ãã å®éã®ãã³ãºãªã³ã§ã¯ããã®ä»çµã¿ã®äžæ žãšãªã Amazon Q Business ã¢ããªã±ãŒã·ã§ã³ ãš AWS Support Collectorã¢ãžã¥ãŒã«ããããã€ãããŠãŒã¶ãŒããã£ããã§ç°¡åã«ãµããŒãæ
å ±ãžã¢ã¯ã»ã¹ã§ããç°å¢ãæ§ç¯ããŸããã éå»ã®ãµããŒãã±ãŒã¹ããçºçããã¡ãªã€ã³ã·ãã³ãåŸåãçŽ æ©ãææ¡ããããšã Trusted Advisor ã®ãªãœãŒã¹æé©åæ
å ±ãããšã«ã³ã¹ãåæžãä¿¡é Œæ§åäžãªã© AWS ã®æšå¥šã«åŸã£ãåãçµã¿ãæ€èšããã AWS Health ã®ã¹ããŒã¿ã¹ãèžãŸãããµãŒãã¹ã€ãã³ãã« ããã¢ã¯ãã£ã ã«å¯Ÿå¿ããŠããã äžèšã®ãããã 1 ã€ã®å¯Ÿè©±åã€ã³ã¿ãŒãã§ãŒã¹ ã§å®çŸã§ããã¡ãªããã¯éåžžã«å€§ãããšæããŸãã ã¯ã©ãŠã éçšã®å¹çåã®ããã«ããã²ä»åŸQSI ãå°å
¥ããŠã¿ãŠã¯ãããã§ããããã â»æ¥æ¬ã®ãªãŒãžã§ã³ã§ã¯ãããã察å¿ãããŠãããšæããŸãã ãŸããä»åã¯ãŒã¯ã·ã§ããã§äœ¿çšãã Amazon Qã®ã¢ããããŒãã«ã¯ä»ã«ãæ§ã
ãããä»åŸã®æ¥æ¬èªå¯Ÿå¿ã«ãæåŸ
ã§ããçæAIãœãªã¥ãŒã·ã§ã³ã§ãããããçæ§ããã²è§Šã£ãŠã¿ãŠãã ããã Amazon Qé¢é£æ
å ± Amazon Q Amazon Q Developer ãšã¯? Amazon Qãæ·±ãããã³ãºãªã³ïŒãã®ã¯ãŒã¯ã·ã§ããã§ããããããããŠããŸããïŒ https://catalog.workshops.aws/amazon-q-business/en-US ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ æ ªåŒäŒç€Ÿ é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @miyazaki.hirotoshi ãã¬ãã¥ãŒïŒ @miyazawa.hibiki ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãã¯ãã¹ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®æŽç°ã§ãã ããæ°å¹Žãçæ AI ãµãŒãã¹ãéåžžã«æ³šç®ãéããŠããŸããã é»é ç·ç ã§ã Know Narrator ã·ãªãŒãºã minnect AI ã¢ã·ã¹ã ãªã©ã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŠããŸãã ããŠãç§ã¯ããã³ãããæžããšãããŸã Visual Studio Code ã§æžããŠãããããããã©ãŠã¶ã®çæ AI ãµãŒãã¹ã«ã³ããŒ&ããŒã¹ãããŠããŸããæ
£ã芪ããã ãšãã£ã¿ã®æ¹ãæç« ïŒããã³ããïŒãæžããããããã§ããããããããšãããæããŸããã ããšãã£ã¿ãããã©ãŠã¶ãžããã³ãããã³ããŒ&ããŒã¹ãããã®ãé¢åã ãªð€ãã Visual Studio Code ããçŽæ¥çæ AI ãµãŒãã¹ãåŒã³åºããªãããªð€ã ãšã ããã§ Visual Studio Code ããçæ AI ãµãŒãã¹ãçŽæ¥åŒã³ã ãæ¹æ³ãèããŠã¿ãŸãããæ¬èšäºã§ã¯ãã®æ¹æ³ã玹ä»ããŸãããªãçæ AI ãµãŒãã¹ã«ã¯ Amazon Bedrock ã䜿çšããŸãã â»ãã®èšäºã§ã¯ Visual Studio Code ãã AWS CLI ã䜿ã£ãŠ Amazon Bedrock ã® Converse API ãåŒã³ã ãæ¹æ³ãã玹ä»ããŸãã ç¹å®ã® æ¡åŒµæ©èœ ïŒ Cline ãªã©ïŒã䜿ã£ã Visual Studio Code ãšçæ AI ãµãŒãã¹ã®é«åºŠãªé£æºã«ã€ããŠã¯æ±ããŸããã ãæ¿ç¥ãããã ããã å¿
èŠãªãã® åææ¡ä»¶ èšå®æ¹æ³ å®è¡æ¹æ³ 解説 ãããã« å¿
èŠãªãã® Visual Studio Code AWS CLI åææ¡ä»¶ 以äžã¯äºåã«å®äºããŠãããã®ãšããŸãã AWSCLI ã®ã»ããã¢ãã Amazon Bedrock ã®åºç€ã¢ãã«ãžã®ã¢ã¯ã»ã¹èš±å¯ã®èšå® èšå®æ¹æ³ã¯ããããã®ãŠãŒã¶ãŒã¬ã€ãããåç
§ãã ããã Configuring settings for the AWS CLI - AWS Command Line Interface Add or remove access to Amazon Bedrock foundation models - Amazon Bedrock èšå®æ¹æ³ Visual Studio Code ãã Amazon Bedrock ãåŒã³ã ãããã®èšå®ãããŸãã Visual Studio Code ãèµ·åããŸãã ã³ãã³ããã¬ãããéããŸãã Tasks: Open User Tasks ãšå
¥åããŸãããããš tasks.json ãéããŸãã tasks.json ã«ä»¥äžã®å
容ãå
¥åããŠä¿åããŸãã { " version ": " 2.0.0 ", " tasks ": [ { " label ": " bedrock ", " type ": " shell ", " command ": " aws ", " args ": [ " bedrock-runtime ", " converse ", " --model-id ", " anthropic.claude-3-5-sonnet-20240620-v1:0 ", " --messages ", " \" $(jq -csR '[{ \" role \" : \" user \" , \" content \" :[{ \" text \" :.}]}]' < '${file}') \" ", " --query ", " output.message.content[*].text ", " --output ", " text " ] , " presentation ": { " clear ": true , " close ": false , " echo ": false , " focus ": true , " showReuseMessage ": false } , " problemMatcher ": [] } ] } å®è¡æ¹æ³ ã§ã¯å®éã« Visual Studio Code ãã Amazon Bedrock ãåŒã³åºããŠã¿ãŸãã Visual Studio Code ãèµ·åããŸãã 空ã®ããã¹ããã¡ã€ã«ãäœæããçæ AI ãžéä¿¡ããããã³ãããèšè¿°ããŸããäŸãšããŠä»¥äžã®å
容ã prompt.txt ãšããååã§ä¿åããŸãã çŽ æ°ãå°ããæ¹ãã5åæããŠãã ããã å
ã»ã©ã® prompt.txt ãéãããŸãŸã³ãã³ããã¬ãããéããŸãã Tasks: Run Task ãšå
¥åããŸãã bedrock ãéžæããŸãããããš prompt.txt ã®å
容ã Amazon Bedrock ãžéä¿¡ãããŸãããã°ããåŸ
ã€ãš Amazon Bedrock ããã¬ã¹ãã³ã¹ãè¿ã£ãŠããŠè¡šç€ºãããŸãã ã¯ããçŽ æ°ãå°ããæ¹ãã 5 åãæãããŸãã 1. 2 2. 3 3. 5 4. 7 5. 11 ããããæå°ã® 5 ã€ã®çŽ æ°ã§ãã è£è¶³èª¬æïŒ - çŽ æ°ãšã¯ã1 ãšãã®æ°èªèº«ä»¥å€ã«çŽæ°ãæããªãèªç¶æ°ã®ããšã§ãã - 1 ã¯æ
£ç¿çã«çŽ æ°ãšã¯èŠãªãããŸããã - 2 ã¯å¯äžã®å¶æ°ã®çŽ æ°ã§ãã - ãããã®æ°ä»¥éã®çŽ æ°ã¯ 13, 17, 19, 23...ãšç¶ããŸãã 解説 äœãè¡ã£ãŠããã®ã解説ããŸãã Visual Studio Code ã«ã¯å€éšããŒã«ãåŒã³ã ãæ©èœããããŸããããã䜿ã£ãŠ AWS CLI ãå®è¡ããŠããŸãã Tasks in Visual Studio Code å®è¡ãããã³ãã³ãã¯ä»¥äžã®ãšããã§ãã aws bedrock-runtime converse \ --model-id anthropic.claude-3-5-sonnet-20240620-v1:0 \ --messages "$(jq -csR '[{\"role\":\"user\",\"content\":[{\"text\":.}]}]' < '${file}')" \ --query output.message.content[*].text \ --output text aws bedrock-runtime converse 㯠Amazon Bedrock ã® Converse API ãåŒã³ã ãããã®ã³ãã³ãã§ãã --model-id ã«ã¯äœ¿çšããåºç€ã¢ãã«ã® ID ãæå®ããŸãã ä»å㯠Claude 3.5 Sonnet ã䜿çšããŠããŸããå©çšå¯èœãªåºç€ã¢ãã«ã¯ Supported foundation models in Amazon Bedrock - Amazon Bedrock ããåç
§ãã ããã --messages ã«ã¯ Converse API ã«éä¿¡ããã¡ãã»ãŒãžãæå®ããŸãã ${file} 㯠Visual Studio Code ã«ãã£ãŠçŸåšéããŠãããã¡ã€ã«ã®ãã¹ã«çœ®æãããŸãã詳ãã㯠Visual Studio Code Variables Reference ããåç
§ãã ããã jq ã䜿ã£ãŠçŸåšéããŠãããã¡ã€ã«ã®äžèº«ã Converse API ã«éä¿¡ããã¡ãã»ãŒãžãžå€æããŸããäŸãã°å
ã»ã©ã®å®è¡äŸã®å Žåã以äžã®ãããªã¡ãã»ãŒãžã«å€æãããŸãã [ { " role ": " user ", " content ": [{ " text ": " çŽ æ°ãå°ããæ¹ãã5åæããŠãã ããã " }] } ] --query output.message.content[*].text --output text ã§ aws bedrock-runtime converse ã³ãã³ãã®å®è¡çµæã®ãã¡åºç€ã¢ãã«ã«ãã£ãŠçæãããããã¹ãã¡ãã»ãŒãžã®ã¿ãæãåºããŠè¡šç€ºããŠããŸãã ãããã« ãã®èšäºã§ã¯ Visual Studio Code ãã AWS CLI ã䜿ã£ãŠ Amazon Bedrock ã® Converse API ãåŒã³ã ãæ¹æ³ãã玹ä»ããŸãããããã«ãããšãã£ã¿ãããã©ãŠã¶ã®çæ AI ãµãŒãã¹ãžããã³ãããã³ããŒ&ããŒã¹ãããæéãçãããšãã§ããŸãã æ®å¿µãªãããã®æ¹æ³ã§ã¯çæ AI ãšã®åçºã®åãçãããè¡ããŸãããããçæ AI ãšã®å¯Ÿè©±ïŒè€æ°åã®åãçãïŒãå¿
èŠãªå Žåã¯åŸæ¥éããã©ãŠã¶ããçæ AI ãµãŒãã¹ãå©çšããã®ãããã§ãããã ãŸãä»ã¯çæ AI ãµãŒãã¹ã婿޻çšãããšãã£ã¿ïŒäŸïŒ Cursor ïŒã Visual Studio Code æ¡åŒµæ©èœ ïŒäŸïŒ GitHub Copilot ã Cline ïŒãååšããŸãããšãã£ã¿ãšçæ AI ãµãŒãã¹ãããé«åºŠã«é£æºããããå Žåã¯ãããã®å©çšãæ€èšãããšããã§ãããã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸããã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @shibata.takao ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãã°ã«ãŒãçµå¶ãœãªã¥ãŒã·ã§ã³äºæ¥éšã® ç±³ä¹
ä¿ã§ãã ã¯ããã« ãªãã¡ã¯ã¿ãªã³ã°ãšã¯ ãªãã¡ã¯ã¿ãªã³ã°ã®å®çŸ© æ¯ãèãã®ãµã€ãº æ¯ãèããšèªåãã¹ããšã®å¯Ÿå¿ ãªãã¡ã¯ã¿ãªã³ã°ãã¯ãã㯠ãªãã¡ã¯ã¿ãªã³ã°ãµã€ãº æè¡çè² åµã¯ã©ãããŠçãŸããã®ã ã³ãŒãã®å®åç¯å² 倿Žãžã®å¯Ÿå¿ æè¡çè² åµãè¿æžãã æ©ãè¿æžãå æ°èŠéçºæ 倿޿ éçºããŒã ã®è£éã§è¿æžãã èª¬åŸæ¹æ³ å€§èŠæš¡ãªãªãã¡ã¯ã¿ãªã³ã° ãŸãšã åèæç® ã¯ããã« ã ãªãã¡ã¯ã¿ãªã³ã° ãããæéããªããã ãªãã¡ã¯ã¿ãªã³ã° ã®å¿
èŠæ§ãé¢ä¿è
ã«èª¬åŸããªããŠã¯ãªããªãããšããæ©ã¿ãããèããŸãã ãªãã¡ã¯ã¿ãªã³ã° ãšããçšèªãåºãæ®åããçµæãæå³ã®åžèåãçºçããå
æ¥ã®æå³ãšç°ãªã䜿ããæ¹ãç®ã«ããããšããããŸãããŸãã䌌éã£ãçšèªãšããŠãªã¢ãŒããã¯ãã£ã³ã°ãšãããã®ããããæ··åãããã¡ã§ãã ãªãã¡ã¯ã¿ãªã³ã° ã®èª²é¡ãšåãåããããããè§£æ¶ããããã®æ£ããã¢ãããŒããåããããã«ãªãã«ã¯ã ãªãã¡ã¯ã¿ãªã³ã° ã«å¯Ÿããçè§£ãæ·±ããããšãéèŠã§ããæ¬çš¿ã§ã¯ãæåã« ãªãã¡ã¯ã¿ãªã³ã° ã®å®çŸ©ã確èªããŸãããã㊠ãªãã¡ã¯ã¿ãªã³ã° ãå¿
èŠãšããæè¡çè² åµãã©ã®ããã«çãŸããã®ãããããèšç»çã«è¿æžããã«ã¯ã©ããã¹ããã«ã€ããŠè¿°ã¹ãŸãã ãªãã¡ã¯ã¿ãªã³ã° ãšã¯ ãªãã¡ã¯ã¿ãªã³ã° ã®å®çŸ© Martin Fowler æ°ã®æåãªèæž[1]ã§ã¯ã ãªãã¡ã¯ã¿ãªã³ã° ã¯ä»¥äžã®ããã«å®çŸ©ãããŠããŸãã ãªãã¡ã¯ã¿ãªã³ã° ïŒåè©ïŒãå€éšããèŠããšãã®æ¯ãèããä¿ã¡ã€ã€ãçè§£ãä¿®æ£ãç°¡åã«ãªãããã«ããœãããŠã§ã¢ã®å
éšæ§é ãå€åãããããšã ãªãã¡ã¯ã¿ãªã³ã° ããïŒåè©ïŒãäžé£ã® ãªãã¡ã¯ã¿ãªã³ã° ãé©çšããŠãå€éšããèŠãæ¯ãèãã®å€æŽãªãã«ããœãããŠã§ã¢ãåæ§ç¯ããããšã ãªãã¡ã¯ã¿ãªã³ã° ãšããçšèªã®ãããŸããªäœ¿çšã«ã€ããŠã¯æ°ã以äžã®ããã«è¿°ã¹ãŠããŸãã é·å¹Žã«ããã£ãŠãæ¥çã§ã¯ã ãªãã¡ã¯ã¿ãªã³ã° ããšããçšèªããã³ãŒãããããã«ããããããäœæ¥ãæããã®ãšããŠãããŸãã«äœ¿ã£ãŠããŸãããããããäžèšã®å®çŸ©ã§ã¯ãã³ãŒãããããã«ããããã®ç¹å®ã®ææ³ã§ããããšã瀺ããŠããŸãã ãªãã¡ã¯ã¿ãªã³ã° ã¯æ¯ãèããä¿ã¡ã€ã€å°ããªã¹ããããé©çšããŠããããšã§ãããã¹ããããç©ã¿éããŠããããšã§å€§ããªå€åããããããŠãããã®ãªã®ã§ãã Kent Beck æ°ãæè¿ã®èæž[2]ã§ä»¥äžã®ããã«è¿°ã¹ãŠããŸãã ã ãªãã¡ã¯ã¿ãªã³ã° ããšããèšèã¯ãæ©èœéçºã®é·ãäžæãæãèšèãšããŠäœ¿ããå§ãããšãã«èŽåœå·ãè² ã£ãããæ¯ãèãã倿Žããããšãªãããšããæ¡é
ããããªããã®ã«ãããã ãªãã¡ã¯ã¿ãªã³ã° ãã¯ç°¡åã«ã·ã¹ãã ãç Žå£ã§ããããã«ãªã£ãã æ°ã®èšãããã«ã ãªãã¡ã¯ã¿ãªã³ã° ãšããèšèã®äžçšæãªäœ¿çšã ãªãã¡ã¯ã¿ãªã³ã° ã«å¯Ÿããå
±éèªèãæªããå¥å
šãª ãªãã¡ã¯ã¿ãªã³ã° 掻åãé»å®³ããŠããŸããªã¹ã¯ãšãªãåŸãŸããæ¬¡é
以éã§ã¯è§£å床ãäžã㊠ãªãã¡ã¯ã¿ãªã³ã° ãæãçŽããããšæããŸãã æ¯ãèãã®ãµã€ãº å€éšããèŠãæã®æ¯ãèããå€ããªã ããšã¯ ãªãã¡ã¯ã¿ãªã³ã° ã«ãããå¿
é èŠä»¶ã§ããæ³šæãã¹ãã¯ãäžå£ã«æ¯ãèããšèšã£ãŠããã®ãµã€ãºã¯ãŸã¡ãŸã¡ã§ãããšããããšã§ãããœãããŠã§ã¢ã¯å€§å°ããŸããŸãªæ§æèŠçŽ ããæãç«ã¡ãŸããèšèšã®æœè±¡åºŠã§æãããšãäžå³ã®ããã«4ã€ã®æœè±¡ã¬ãã«ã«åããŠèããããšãã§ããŸã[3]ã ã¢ãŒããã¯ã㣠ãããã㯠ã¢ãŒããã¯ã㣠ãåå°ãšããŠå®çŸããããœãããŠã§ã¢ã¯ãæ±ããããæ©èœèŠæ±ãåè³ªç¹æ§ãå
æ¬çã«æäŸããŸãã ã¢ãžã¥ãŒã« ã¯ã ãŠãŒã¹ã±ãŒã¹ ããã®äžéšãå®çŸããæ¯ãèããæäŸããŸãããŠãŒã¶ãŒç®ç·ã§äœããã®æå³ããªãæ¯ãèãã ãšèšããã§ãããã ã³ã³ããŒãã³ã ã¯ãã¢ãžã¥ãŒã«ã«ãããéšåçãªæ¯ãèããæäŸããŸããçšèšç®åŠçã®ããã« ãã¡ã€ã³ ç¥èã«å¯Ÿå¿ããæ¯ãèããããã°ãããŒã¿ã®æ°žç¶åã®ããã«æè¡çãªæ¯ãèãããããŸãã ã¯ã©ã¹ ïŒ é¢æ°åèšèª ã§ããã°é¢æ°ïŒãæäŸããã®ã¯æå°åäœã®æ¯ãèãã§ãã æ¯ãèããšèªåãã¹ããšã®å¯Ÿå¿ å€éšããèŠãæ¯ãèããå€ããªããšããæ¡ä»¶ãæºããäžã§éèŠãªåœ¹å²ãæããã®ãèªååããããã¹ãã§ããã³ãŒããçŽããŠãå€ããããã¹ããééïŒPassïŒããããšã§ãæ¯ãèããå£ããŠããªãããšã確èªããå®å¿ã㊠ãªãã¡ã¯ã¿ãªã³ã° ãè¡ãããšãå¯èœãšãªããŸãã ããŠãæ¯ãèãã«ãµã€ãºãããããã«ãèªåãã¹ãã«ããµã€ãºããããŸããã©ã®ãµã€ãºã®ãã¹ããã©ã®çšåºŠè¡ãã¹ããã®æ¹éç«ãŠã ãã¹ãæŠç¥ ãšåŒã³ãŸããããã¹ããã©ãããã¯ãã®ä»£è¡šçãªãã¿ãŒã³ã§ãããããµã€ãºãå°ãããå®è¡ã³ã¹ãã®äœããã¹ãã®æ¯çãé«ããããšããèãæ¹ã§ãã æ¯ãèããå®çŸãããœãããŠã§ã¢æ§æèŠçŽ ãšããã¹ããã©ãããã®å¯Ÿå¿ä»ããæ¬¡ã®å³ã«è¡šããŸãã ãã¹ããã©ãããã¯ãã¹ãã¿ã€ãïŒ ãŠããããã¹ã ïŒã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãïŒE2EïŒãçšããŠè¡šçŸããããšããããŸãããããã§ã¯ãã¹ããµã€ãº[4]ãçšããŠè¡šçŸããŸãããã¢ãžã¥ãŒã«ã«å¯Ÿãããã¹ãã¯ãããŒã¿ããŒã¹çã®ããã»ã¹å€éä¿¡ãå®éã«è¡ããããã¹ãããã«ã§ä»£æ¿ãããã«ãã£ãŠSmallã«ãMediumã«ããªãåŸãŸãã ãã¹ããã©ããããããŒã¹ãšãããã¹ãæŠç¥ãåæãšãããšãå³ã®äžäœã«è¡ãã»ã©ãã¹ãã«ãã£ãŠåºå®ã§ããæ¯ãèãã®éã¯å°ãªããªããŸããLargeãµã€ãºã®ãã¹ãïŒäž»ã«E2Eãã¹ãïŒã ãã§ã¯ããœãããŠã§ã¢å
šäœãšããŠã®å
æ¬çãªæ¯ãèãã«å¯ŸããŠæ©èœéè¡ïŒ ãªã°ã¬ãã·ã§ã³ ïŒãæŒããªãæ€ç¥ããããšã¯ã§ããŸãããäžäœã®ãã¹ãã«ãã£ãŠããè©³çŽ°ãªæ¯ãèããæ
ä¿ãããããšãåæãšããŸãã ã¢ãŒããã¯ã㣠/ãœãããŠã§ã¢ã®æœè±¡ã¬ãã«ã§ã¯ãå®çŸ©ã©ããã« ãªãã¡ã¯ã¿ãªã³ã° ãè¡ãããšã¯å®è³ªå°é£ãªã®ã§ããªã¢ãŒããã¯ãã£ã³ã°ãšããçšèªãçšããã®ã劥åœã§ããããããšãã°ãã¢ãžã¥ãŒã«å¢çã®åŒãæ¹ãçžäºäœçšã®èŠçŽããäžéšã¢ãžã¥ãŒã«ã®ãã€ã¯ããµãŒãã¹åãªã©ããªã¢ãŒããã¯ãã£ã³ã°ã«è©²åœããŸãã ãªãã¡ã¯ã¿ãªã³ã° ãã¯ãã㯠æ¬çš¿ã«ãããŠã ãªãã¡ã¯ã¿ãªã³ã° ãšã¯èšèšã®æœè±¡ã¬ãã«ã®ãã¡ã¯ã©ã¹ã ã³ã³ããŒãã³ã ãã¢ãžã¥ãŒã«ã®ã¬ãã«ã«ãããŠé©çšå¯èœãªãã®ã§ãããšèããŸããæ¬¡ã«ã ãªãã¡ã¯ã¿ãªã³ã° ãã¯ããã¯ã«ã€ããŠèããŠã¿ãŸãããã æžç±[1]ã«ã¯å€ãã® ãªãã¡ã¯ã¿ãªã³ã° ãã¯ããã¯ãã«ã¿ãã°åãããŠããŸãããã®å€ãã¯ãã 颿°ã®æœåº ããã ã«ãŒãã®åé¢ ãã®ãããªåäžã¯ã©ã¹å
ãŸãã¯ã¡ãœããå
ã«éãããã®ã§ããã ããªã¢ãŒãã£ãºã ã«ããæ¡ä»¶èšè¿°ã®çœ®ãæã ããã ãµãã¯ã©ã¹ã«ããã¿ã€ãã³ãŒãã®çœ®ãæã ãã®ãããªè€æ°ã®ã¯ã©ã¹ã«ãŸããããã®ãäžéšãããŸããåè
ã®ãã¯ããã¯ã®äžã«ã¯ã IDE ã®æ©èœã䜿ã£ãŠã¯ã³ã¯ãªãã¯ã§å®æœã§ãããã®ãå€ããããŸãã æžç±[5] ã§ã¯ã ãã¶ã€ã³ãã¿ãŒã³ ãé©çšããŠã³ãŒããæ¹åããããã¿ãŒã³æåã® ãªãã¡ã¯ã¿ãªã³ã° ãã¯ããã¯ã玹ä»ãããŠããŸãããã®ã»ãšãã©ã ã³ã³ããŒãã³ã ã¬ãã«ã®ãã®ã§ãã ã¢ãžã¥ãŒã«ã¬ãã«ã® ãªãã¡ã¯ã¿ãªã³ã° ã«ã€ããŠã¯ãç§ãç¥ãç¯å²ã§ã¯äœç³»ç«ãŠããããã¯ããã¯éã¯èŠåœãããŸããããã®æœè±¡ã¬ãã«ã§ã¯è€æ° ã³ã³ããŒãã³ã ã®å調ã«ãã£ãŠ ãŠãŒã¹ã±ãŒã¹ çžåœã®æ¯ãèããå®çŸããŸããããã¿ãŒã³åã§ãããã¯ããã¯ãå°ãªããããããããŸãããäžæ žããžãã¯ãšåŠçãããŒããžãã¯ã®åé¢[3]ããSOLIDãªã©ã®ååã®é©çšã«ãã£ãŠèšèšãæŽç·Žãããããšã¯å¯èœã§ãããå°ããªãã¯ããã¯ã® æ©æ¢°ç é©çšãè¶
ããããé«åºŠãªç¥çäœæ¥ãæ±ããããŸãã ãªãã ãªãã¡ã¯ã¿ãªã³ã° ããããŠããããããã¹ãã³ãŒããååšããããã¹ãå®¹ææ§ãäœããã¬ã¬ã·ãŒã³ãŒãã«ã©ãç«ã¡åããã°ãããã«ã€ããŠã¯ãæžç±[6]ãåèãšãªãã§ãããã ãªãã¡ã¯ã¿ãªã³ã° ãµã€ãº 以éã®è°è«ã®ããã ãªãã¡ã¯ã¿ãªã³ã° ã®ãµã€ãºãäžèšè¡šã®ãšãã3ã€ã«åé¡ããŸãã ãªãã¡ã¯ã¿ãªã³ã° ãµã€ãº èšèšã®æœè±¡ã¬ãã« ãã¹ããµã€ãº ãªãã¡ã¯ã¿ãªã³ã° ãã¯ãã㯠æèŠæé Small ã¯ã©ã¹ S å°ããªã¹ããã çã Medium ã³ã³ããŒãã³ã S ãã¿ãŒã³æå æ¯èŒççã Large ã¢ãžã¥ãŒã« S ãŸã㯠M - é·ã æè¡çè² åµã¯ã©ãããŠçãŸããã®ã ä»®ã«çç·Žãã ããã°ã©ã㌠ãããããªã³ãŒããæžãäžãããšããŠããæéçµéãšãšãã«å
éšå質ãå£åããããšã¯äžå¯é¿ã§ãããªãã§ããããã ã³ãŒãã®å®åç¯å² æåã«å®æããã³ãŒãã¯ããã®æç¹ã§å€æããŠããæ¯ãèãã«é©åããèšèšãšãªã£ãŠããŸãããã®æ¯ãèãã®äžã«ããé¡ã®å¯å€æ§ãååšãããªãããã®è»žã«ãããŠæè»æ§ãæã£ãŠããã¯ãã§ããããšãã°ãããµãã¯ã©ã¹ã«ããã¿ã€ãã³ãŒãã®çœ®ãæããã® ãªãã¡ã¯ã¿ãªã³ã° ãé©çšããŠããã°ããµãã¯ã©ã¹ã Enum åæåã«ãã£ãŠæ°ããªæ¯ãèãã远å å¯èœãšãªã£ãŠããã§ããããSOLIDååã®ã²ãšã€ã§ããOCPïŒãªãŒãã³ã»ã¯ããŒãºãã®ååïŒã«ããæ¡åŒµæ§ã§ãã ãã®ããã«ãã³ãŒãã«ã¯å€æŽã«å¯Ÿã㊠ã³ã¹ã ããæè»ã«å¯Ÿå¿å¯èœãªç¯å²ãããã° å®åç¯å² ããããŸãã 倿Žãžã®å¯Ÿå¿ å®åç¯å²å
ã®å€æŽã§ããã°ã倿Žãå®çŸããã«ããã£ãŠ ãªãã¡ã¯ã¿ãªã³ã° ã¯äžèŠããæå°éã§æžãŸããããšãã§ããŸããåé¡ã¯ãå®åç¯å²å€ã®å€æŽãçºçãããšãã§ãã ãã®å Žåãæ¢åã®èšèšã¯ãã®å€æŽã«å¯Ÿããæè»æ§ãæã¡åãããŠããªãã®ã§ãåãããéžæè¢ã¯ä»¥äžã®2ã€ã§ãã ãªãã¡ã¯ã¿ãªã³ã° ã«ããæè»æ§ãæãããäžã§å€æŽãè¡ã ãã®å Žãã®ãã®ãããã¯ãŒã¯çãªå¯Ÿå¿ãè¡ã ããã°ã©ã㌠å«çã«åŸãã°åè
ã®äžæãªã®ã§ãããå®éã«ã¯ ãã¬ãŒããªã ãçºçãå€æãæ±ããããŸããå®åç¯å²å€ãšããããšã¯ãæ¢åã®èšèšã§ã¯æ³å®ã§ããŠããªãã£ãé¡ã®å€æŽã ãšããããšãªã®ã§ã ãªãã¡ã¯ã¿ãªã³ã° ã«ã¯äžå®ã®ã³ã¹ããçããŸããããã«å€æŽãã®ãã®ã®ã³ã¹ããå ããããŒã¿ã«ã®ã³ã¹ããã 倿Žã«ãã£ãŠåŸããã䟿çã®åäžãšæ¯èŒããŠæ£åœåã§ããã ãšãã話ã«ãªãã®ã§ãã ãã¡ããåã
ã®å€æŽæ¡ä»¶æ¯ã§ã¯ãªããããã¯ãããµãŒãã¹å
šäœãšããŠäžé·æã§è²»çšå¯Ÿå¹æãããããšããå€æåºæºã倧äºã§ãããããããã®å€æŽãçŽ æ©ããªãªãŒã¹ããããšãããžãã¹çã«éèŠã§ããå Žåã«ã以äžã®ãããªå€æã¯æãããŠééã£ãŠãããšèšããã§ããããïŒ ãæ¬æ¥ ãªãã¡ã¯ã¿ãªã³ã° ããã¹ãã§ããã圱é¿ç¯å²ãèããŠä»åã¯ãããã¯ãŒã¯çãªå¯Ÿå¿ãããŸããã ãæ¬æ¥ ãªãã¡ã¯ã¿ãªã³ã° ãããæ¹ããããšæããŸããã圱é¿ç¯å²ãèæ
®ããŠä»åã¯ãã«ãªã¯ãæ¿èªããŸãã æè¡çè² åµãè¿æžãã ãœãããŠã§ã¢éçºã«ãããããããèšèšå€æã¯ãæçµçã«ããžãã¹äžã®äœããã®äŸ¡å€ã«ã€ãªããã¹ãã§ããããèãããªãã°ãäžæçã«æè¡çè² åµã蚱容ããããšã倿ãšããŠã¯æ£åœåãããŸããéèŠãªã®ã¯ã æè¡çè² åµã®çºçãèªèããããšãšãããã管çããŠããããš ã§ãã æ©ãè¿æžãå ãããã¯ãŒã¯çãªå¯Ÿå¿ãè¡ããšãèšèšã«ã»ããã³ãçããŸãããã®ã»ããã³ã¯å®¹æã«ç©ããç©ããã ãã§ãªãããã£ãããªããšã«çžäºå¹²æžããå ŽåããããŸãã10åã®ãããã¯ãŒã¯çãªå¯Ÿå¿ãè¡ã£ãããæè¡çè² åµã®éã¯10 ã§ã¯ãªã50ã100ã«ããªãåŸããšããããšã§ããæè¡çè² åµã¯ è€å© ã§ãããšèããæé
ãã«ãªãåã«èšç»çãªè¿æžãå¿
èŠã§ãã æ°èŠéçºæ æ°ããæ©èœãæ°èŠã«éçºããéã¯ãå¯èœãªéãã³ãŒãããããã«ããæè¡çè² åµãçãŸãªãããšãåæãšãªããŸããæ°èŠéçºæç¹ã§ä¹±éãªã³ãŒããããã®åŸãããã« ãªãã¡ã¯ã¿ãªã³ã° ãããå¯èœæ§ã¯æ®å¿µãªããéåžžã«å°ããã§ãã æã广çãªæ¹æ³ã¯ ãã¹ãé§åéçº ïŒTDDïŒã®ã ã©ã¯ ãã£ã¹ãæ¡çšããRed - Green - Refactor ã®ãµã€ã¯ã«ã®äžã§é«é »åºŠã« ãªãã¡ã¯ã¿ãªã³ã° ã宿œããããšã§ãããšã¯èšããTDDã®ç¿åŸã«äžå®ã®ä¿®ç·Žãå¿
èŠãªã®ãäºå®ã§ããæäœéããã«ãªã¯ãåºãåã«ã¯æéãåã£ãŠ ãªãã¡ã¯ã¿ãªã³ã° ããŸãããã 倿޿ 倿Žã«å¯Ÿå¿ããéã¯ã ãªãã¡ã¯ã¿ãªã³ã° ã®èŠåŠãæ€èšãã ãªãã¡ã¯ã¿ãªã³ã° ãå¿
èŠãªå Žåã¯ãã®ã³ã¹ããèŠç©ãããŸããã³ã¹ããæ³å®ãäžåãå Žåã¯ãéçºãªãŒããŒããããã¯ããªãŒããŒãšçžè«ããŸããããä»ãã ãªãã¡ã¯ã¿ãªã³ã° ãè¡ãã®ãããããšãå
éãã«ãããã®æææ±ºå®ãå¿
èŠã§ãã å
éãã«ãããããªãã¡æè¡çè² åµã®çºçãåãå
¥ãã倿ããããªãã°ããã®è¿æžãã©ã³ãšã㊠ããã¯ãã° ã¢ã€ãã ã« ãªãã¡ã¯ã¿ãªã³ã° ã®ãã±ãããç»é²ããŸãã ãªãã¡ã¯ã¿ãªã³ã° ãã±ããã®è§£æ¶æ¹éã¯ããã€ãèããããŸããããŒã ãšããŠæŠç¥ãå®ããŠãç¶ç¶çãªè² åµè¿æžãå®çŸããŸãããã èŠæš¡ã®å€§ãã倿Žãšäœµã㊠ãªãã¡ã¯ã¿ãªã³ã° ã宿œãã ã€ãã¬ãŒã·ã§ã³ ã®äžå®ã®ãã€ã³ãã ãªãã¡ã¯ã¿ãªã³ã° ã«å²ãåœãŠã ãªãã¡ã¯ã¿ãªã³ã° ãäžå¿ã«è¡ã ã€ãã¬ãŒã·ã§ã³ ãèšãã éçºããŒã ã®è£éã§è¿æžãã ãªãã¡ã¯ã¿ãªã³ã° ã«é¢ããŠããããã¯ããªãŒããŒãããžãã¹ãµã€ããžã®èª¬åŸãå¿
èŠããšãã課é¡ãè³ã«ããŸãã ç§ã¯ããµã€ãºãSmallãMediumã® ãªãã¡ã¯ã¿ãªã³ã° ã¯éçºããŒã ãèªåãã¡ã®è£éã§å®æœã§ããã®ãæãŸãããšèããŠããŸãããã®ããã«ã¯ãæè¡çè² åµã®çºçããªãã¹ãå°ããæãã€ã€ã宿çã«è§£æ¶ããŠããããã»ã¹ãæåãæ¬ ãããŸããã æ¬¡ã®å³ã¯ã JVM ãªã©ã®åŠçç³»ã«ãã㊠GC ïŒ ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ ïŒã«ãã£ãŠã¡ã¢ãªãèªåè§£æŸãããã€ã¡ãŒãžã§ããã¢ããªã±ãŒã·ã§ã³ã«å²ãåœãŠãã¡ã¢ãªãäžè¶³ãããšãåç
§ãåããŠãŽããšãªã£ããªããžã§ã¯ããååãããå²ãåœãŠå¯èœãªã¡ã¢ãªãå¢ããŸããããããã¡ã¢ãªãè¶³ããªããªããšãåºç¯å²ã察象ãšãããã« GC ãå®è¡ãããŸãããã« GC ã¯å®è¡æéãé·ããªãã¢ããªã±ãŒã·ã§ã³ãžäžãã圱é¿ã倧ããããããªãã¹ãåé¿ããããã®ã§ãã ãªãã¡ã¯ã¿ãªã³ã° ã«ããæè¡çè² åµã®è¿æžã¯ã GC ã«ããå²åœå¯èœã¡ã¢ãªã®ååã«äŒŒãŠããŸããé·ãæéãèŠãããã®ééçºãæ¢ããŠããŸããããªå€§ã㪠ãªãã¡ã¯ã¿ãªã³ã° ïŒLargeãµã€ãºïŒããªã¢ãŒããã¯ãã£ã³ã°ã¯ããªãã¹ãé¿ããããã®ã§ãããã®ããã«ã¯ãå°ãã ãªãã¡ã¯ã¿ãªã³ã° ïŒSmallãµã€ãºãMediumãµã€ãºïŒãç¶ç¶çã«å®æœããæè¡çè² åµãèšããŸããªãããšã倧åã§ãã èª¬åŸæ¹æ³ ãšã¯èšããçŸæç¹ã§ã¯ãã®ãããªæåãéžæãããŠãããã ãªãã¡ã¯ã¿ãªã³ã° ã®å¿
èŠæ§ãèªããŠãããããã« ã¹ããŒã¯ãã«ã㌠ã®èª¬åŸãå¿
èŠãªå Žåã¯ã©ããããããã§ããããïŒ ãŸãã¯ãã¡ã¯ãã瀺ãå¿
èŠãããã§ããããããšãã°å€æŽãªãŒãã¿ã€ã ããªãªãŒã¹åŸã®æ¬ é¥çºççãªã©ã®ã¡ããªã¯ã¹ã§ããæéçµéã«äŒŽãæšç§»ã瀺ããç·æ¥ãã€éèŠãªèª²é¡ã§ããããšãèªèããŠããããšããã§ããããã³ã¹ããšãªã¿ãŒã³ãæç¢ºã«ããããšã广çã§ã[7]ã å€§èŠæš¡ãª ãªãã¡ã¯ã¿ãªã³ã° Largeãµã€ãºã® ãªãã¡ã¯ã¿ãªã³ã° ãããªã¢ãŒããã¯ãã£ã³ã°ãå¿
èŠãªãšãã¯ããããã£ãŠããŸããããã«ã¯çžåœã®ã³ã¹ããšæéãèŠããããã ã¹ããŒã¯ãã«ã㌠ãå·»ã蟌ãã äžã§ãããžã§ã¯ããã¿ã¹ã¯ãã©ãŒã¹ãšããŠåãçµãã¹ãã§ãããã©ã³ãã³ã°ã瀟å
調æŽãã³ãã¥ãã±ãŒã·ã§ã³èšèšãªã©ãå
æ¬çã«ãŸãšããããæžç±[8]ã¯å€§ãã«åèãšãªãã§ãããã ãŸãšã æ¬çš¿ã§ã¯ã ãªãã¡ã¯ã¿ãªã³ã° ã®å®çŸ©ãå確èªããäžã§ã ãªãã¡ã¯ã¿ãªã³ã° ã®ãµã€ãºã3ã€ã«åé¡ããŸãããã ãªãã¡ã¯ã¿ãªã³ã° ãå¿
èŠããšæŒ ç¶ãšèšãã®ã§ã¯ãªããã©ã®ç²åºŠã® ãªãã¡ã¯ã¿ãªã³ã° ãæããŠããã®ãè§£å床ãäžããŠã³ãã¥ãã±ãŒã·ã§ã³ãåãããšããéçºæ¥åã®èšç»ãé²è¡ã«ãããŠéèŠã§ã¯ãªãããšæããŸãã åŸåã§ã¯ãæè¡çè² åµãçã¿åºãããä»çµã¿ããè² åµã«å¯Ÿããåãçµã¿æ¹ã«ã€ããŠè¿°ã¹ãŸããããœãããŠã§ã¢éçºã®çŸå®ã«ãããŠã¯äž å®é ã®æè¡çè² åµã¯çºçãåé¿ã§ããªããšããåæã§ãæŠç¥çã«ç«ã¡åãããªããã°ãªããŸããã åèæç® [1] Martin Fowler èãå
çå
¬ä¿¡ã»å鿶倫ã»å¹³æŸ€ ç« ã»æ¢
柀çå² èš³ã ãªãã¡ã¯ã¿ãªã³ã° ïŒç¬¬2çïŒ æ¢åã®ã³ãŒããå®å
šã«æ¹åããã ãªãŒã 瀟 ïŒ2019ïŒ [2] Kent Beck èãå矜 éŸå€ªéã»æ°žç¬ çŸæµŠ ã»çŽ°æŸ€ããã¿ èš³ãTidy First? å人ã§å®è·µããçµéšäž»çŸ©çãœãããŠã§ã¢èšèšã ãªã©ã€ãªãŒã»ãžã£ãã³ ïŒ2024ïŒ [3] ç±³ä¹
ä¿ å èãã¢ãŒããã¯ãã®æç§æž 䟡å€ãçããœãããŠã§ã¢ã® ã¢ãŒããã¯ã㣠æ§ç¯ã ç¿æ³³ç€Ÿ ïŒ2024ïŒ [4] Simon Stewart æ°ã«ããèšäºã Test Sizes ã Google Testing BlogïŒ2010ïŒ [5] Joshua Kerievsky èãRefactoring to PattensãAddison-WesleyïŒ2005ïŒ [6] ãã€ã±ã«ã»Cã»ãã§ã¶ãŒãº èãã¬ã¬ã·ãŒã³ãŒãæ¹åã¬ã€ã ä¿å®éçºã®ããã® ãªãã¡ã¯ã¿ãªã³ã° ã ç¿æ³³ç€Ÿ ïŒ2009ïŒ [7] æŸå²¡ 幞äžé æ°ã«ããèšäºã ããªãã¡ã¯ã¿ãªã³ã°ã®æéãã確ä¿ããæè¡ ãæ ªåŒäŒç€Ÿãã°ã©ã¹ ããã¯ããã°ïŒ2025ïŒ [8] Maude Lemaire èãRefactoring at Scale: Regaining Control of Your CodebaseãO'Reilly MediaïŒ2020ïŒ ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç ãã£ãªã¢æ¡çšãµã€ã é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @tyonekubo ãã¬ãã¥ãŒïŒ @nakamura.toshihiro ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éš æŠç¥ãœãªã¥ãŒã·ã§ã³ 1 éšã®è±ã§ãã æ®æ®µã¯Webã¢ããªã ã¹ãã ã¢ããªã®æ¡ä»¶ãªã©ãæ
åœããŠããŸããããšãè¶£å³ã§AIãå匷ããŠããŸãã 2025幎1æã®çµç¹æ¹ç·šã§éšã®ååãã«ãã³ãããªããŸãããæŠç¥ã£ãŠèšèã奜ãã§ãã ITãœãªã¥ãŒã·ã§ã³éš(æ§)ãããæŠç¥ãœãªã¥ãŒã·ã§ã³éš(æ°)ã®ã»ããé è¯ãããã§ãããã æ°ã®ããããååºããªãã ãã«ãã³ãããªã£ãæ°ãããŸãã å眮ãã¯ãããŸã§ã«ããŠã仿¥ã¯FlutterFlowã®AIæ©èœã®æ€èšŒãããŸãã ç§ã¯æ®æ®µãã軜ããã¢ã§ããã°FlutterFlowãæçšããŠããŸããçéã§éçºã§ããŠäŸ¿å©ã§ãã ãããªããã ã§ãã䟿å©ãªFlutterFlowã«ãªããšAIæ©èœã远å ãããã®ã§ããã®å®åã詊ããŠã¿ãããšæããŸãã â» 2024幎10æã®ã¢ããããŒã 远å ãããæ©èœã¯ä»¥äžã®4ã€ã New Page CreationïŒ èªç¶èšèª ã ãœãŒã¹ã³ãŒã ããããŒãžãçæã§ããæ©èœ New Component CreationïŒ èªç¶èšèª ã ãœãŒã¹ã³ãŒã ãã ã³ã³ããŒãã³ã ãçæã§ããæ©èœ Sketch To ComponentïŒææžããã¹ã¯ã·ã§ãã ã³ã³ããŒãã³ã ãèªåçæã§ããæ©èœ Page AutocompleteïŒéšåçã«æ§ç¯ãããããŒãžãAIãèªåçã«è£éããŠãããæ©èœ ãã£ãã詊ããŠã¿ãŸãããã 1ïŒNew Page Creation(èªç¶èšèªver) 2ïŒNew Page Creation(ããŒã³ãŒãver) 3ïŒNew Component Creation 4ïŒSketch To Component 5ïŒPage Autocomplete ãããã« 1ïŒNew Page Creation( èªç¶èšèª ver) ãŸãã¯ã¹ã¿ã³ããŒããªäœ¿ãæ¹ãšããŠã èªç¶èšèª ã«ããç»é¢çæã詊ããŠã¿ãŸãã é©åœãªããã³ãããChatGPT(4o)ã«äœæããŠããããããã貌ãä»ããŸãã ã§ã¯ããããã®æç« ãã³ããããŠFlutterFlowã®New Page Creationã«è²Œãä»ããŠã¿ãŸãã PreviewPageãæŒäžãããšæ¬¡ã®ç»é¢ã衚瀺ãããŸããã èŠçŽ ãšããŠã¯è¶³ããŠããŸãããã¬ã€ã¢ãŠããã€ãã€ãã ãšæããŸãã ãã®çµæãChatGPTã«æãã€ããŠãããã³ãããä¿®æ£ããŠã¿ãŸãããã ä¿®æ£ãããããã³ããã§å床çæãè¡ã£ããããããªç»é¢ãåºåãããŸããã ãŸããã»ãŒå®ç§ãšãã£ãŠè¯ãããããªãã§ããããã è²åãããã©ã³ãã調æŽããã°ååã«äœ¿ããå質ã ãšæããŸãã äœæãããå ã³ã³ããŒãã³ã ã¯ããã€ãéãã¬ããããŒããæäœããããšãå¯èœã§ãã çœçŽããäœæãããããã£ãœã©å¹ççã§ãããçŽ æŽãããã 2ïŒNew Page Creation(ããŒã³ãŒãver) New Page Creationã¯Flutterã® ãœãŒã¹ã³ãŒã ããäœæããããšãã§ããŸãã ãããFlutterã® ãœãŒã¹ã³ãŒã ããããªãããã§ããããïŒãšããããã³ãã¯ç¡èŠããŸãã ãšããããFlutterFlowã®ééå³ã¯ GUI ã«ããUI/UXèšèš&ããŒã³ãŒãéçºã§ããè«ç¹ãéããŸãã ä»äžããFlutterFlowã«ä»»ããã ãšããæãã匷ãã§ãããªãã¹ãã³ãŒãã£ã³ã°ã¯ããããªãã®ã§ãã ãšã¯ããã ãœãŒã¹ã³ãŒã ãæå
ã«ãªããšè©±ã«ãªããŸãããv0ã䜿ããŸãããã v0ã«ã€ããŠã¯æ¬èšäºã§ã¯è§£èª¬ããŸãããã èªç¶èšèª ã§ã³ãŒãã£ã³ã°ããã³UIã®ãã¬ãã¥ãŒãŸã§ã§ãã¡ããåªããã®ã§ãã v0ã«è²Œãä»ããŸãããã ãã¬ãã¥ãŒã¯è¯ãããã§ããããã ãFlutterã§æžããŠã»ãããšããåœä»€ãå¿ããŠããŸãããFlutter Flowã®AIToolsã¯Flutterã§æž¡ããæ¹ã粟床ãé«ãã§ããä¿®æ£ããŠããããŸãã . dart ã§ã® ãªãã¡ã¯ã¿ãªã³ã° ãå§ãŸããŸãããå°ãåŸ
ã¡ãŸãããã ãããã£ããã€ãããã¯ãªå€æŽã«ãçŽ çŽã«å¯Ÿå¿ããŠãããã®ãAIã®è¯ããšããã§ãã ããããããä»äºã§çžæã人éãªãã倿ŽäŸé Œãšä¿¡é Œé¢ä¿ã倩秀ã«ãããªããã°ãªããŸããã è€æ°ãã¡ã€ã«ã«åãããŠããã®ã§ããã©ã«ãæ§æãäŒãã€ã€ã ãœãŒã¹ã³ãŒã ãã³ããããŠã¿ãŸãã çæãå®äºããŸããã å
ã»ã©ã®v0ã®ãã¬ãã¥ãŒãšãœãã¯ãª ã§ããã ããã¹ãéä¿¡ã®ãããã¯ãäžã«åŒµãä»ããŠããªãã®ãæããã§ãã ä»®ã§ãããcontainerãstackã§wrapããŠç»é¢äžéšã«åŒã£åŒµã£ãŠããŸããã ãããã£ãŠæè»œã«èª¿æŽãå¹ãã®ãè¯ãã§ããããFlutterFlowã䜿ãæå³ããããŸãã 3ïŒNew Component Creation å
ã»ã©ã®ãã£ããç»é¢ã«ç»åæçš¿çšã® ã³ã³ããŒãã³ã ãäœæããããšãç®æããŸãããã é²ãæ¹ã¯å
ã»ã©ãšåãããã«ãããã³ãããChatGPTã«èããŠããã ããFlutterFlowã«è²Œãä»ããŸãã é·ããªãã®ã§ChatGPTãšã®ããåãã¯çç¥ããŸãã ã§ãèªåçæããã ã³ã³ããŒãã³ã ãã³ã¬ã§ããè¯ãã§ããã ãã¬ãã¥ãŒé åããã£ãŠäœ¿ãããããã§ãã 4ïŒSketch To Component ãã®æ©èœã䜿ãã«ã¯ ææžãã®ã€ã¡ãŒãžãå¿
èŠ ã«ãªããŸãã é»é ç·ç ã®ç»äŒ¯ãšããŠäžçæããšããŸãããã ããããããããããïŒïŒïŒ ....!!ã·ã¥ãïŒïŒ ïŸïœ¶ïŸïœ¶ïŸ...ããŒ...ïŸïŸïŸïŸïœ¯ïŒ æããŸããããªããªãã®åºæ¥æ ãã§ãã ãã®ç»åãã ã³ã³ããŒãã³ã ãäœæããŠã¿ãŸãããã å®ç§ãããŠèã çšéãšããŠã¯ãäŒè°å®€ã®ãã¯ã€ãããŒãã«æ®Žãæžãããã€ã¡ãŒãžãå
·çŸåãããªã©ã§ããããã 5ïŒPage Autocomplete ããŠãæåŸã§ããäœãããã®ç»é¢ã« èªç¶èšèª ã§ä¿®æ£ãå ããããæ©èœã§ãã å
ã»ã©ã®ãã£ããç»é¢ãäœããããšããŠå®çŸ©ããäœããã¿ãããŠã¿ãŸãã ãã£ããéä¿¡ã§æ·»ä»ãã¡ã€ã«ã远å ã§ããããã«ããŠã¿ãŸãããã Page AutocompleteãæŒäžãããšã çŸåšã®ç»é¢æ§æã èªç¶èšèª (è±èª)ã«èµ·ããããã® ã衚瀺ãããŸãã ãã®å
容ãChatGPTã«äŒããŠãä¿®æ£åœä»€ãèããŠããããŸãã ChatGPTãèããä¿®æ£åœä»€ã匵ãä»ããŠãPage Autocompleteãéå§ããŸããã ãã¡ã€ã«æ·»ä»ã®ã¢ã€ã³ã³ã远å ãããŸããã ããã¯ä¿®æ£ã®ææ¡ã§ããããã®å
容ãã©ããããåãå
¥ããã®ã ãéžæã§ããŸãã(LessââMore) ä»åã¯Moreã«æ¯ãåã£ãŠåãå
¥ããŠã¿ãŸãã åæ åŸã®ç»é¢ããã¡ãã§ãã ãã¡ã€ã«æ·»ä»ãåºæ¥ãããªUIã«ä¿®æ£ãããŠããããšãåãããŸãã ãã®ããã«ãä¿®æ£ç®æã现ããæç€ºããªãããå°ããã€ç»é¢ãäœãããã§ããããšãã§ããŸãã ãããã« ããŠãä»åã¯FlutterFlowã®AIæ©èœã«ã€ããŠèšäºãæžããŸããã *1 å人çãªææ³ãèšããšã€ãã€ããªæ§èœã§ãããå
šäœçã«paddingã«æ°ãé£ããŠããªãã®ãæ®å¿µã ããã¯ç§ã®åœä»€ã®å
å®¹ãæªãã£ãã®ããAIåŽã®æ§èœãæªãã£ãã®ãã æéããããšãã«ãã£ãšæ€èšŒããŠã¿ãããšæããŸãã ããããã AWS ãAIé¢é£ã®æ€èšŒèšäºãããããæžããŠãããŸãã â ã®ã¹ã¿ãŒãæŒããŠããã ãããšå¬ããã§ããå±ã¿ã«ãªããŸãã æåŸãŸã§èªãã§ããã ããããããšãããããŸããã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã§ã¯äžç·ã«åããŠãã ãã仲éãåéäžã§ãã以äžã®ãªã³ã¯ãããé¡ãããŸãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ äžéæ¡çš-ãšã³ã¿ãŒãã©ã€ãºç¬¬äžæ¬éš æ°åæ¡çš-ãšã³ã¿ãŒãã©ã€ãºç¬¬äžæ¬éš å·çïŒ è± è¯æ²» (@hanabusa.ryoji) ãã¬ãã¥ãŒïŒ @yamashita.tsuyoshi ïŒ Shodo ã§å·çãããŸãã ïŒ *1 : â»æ¬èšäºã«äœ¿çšãããŠããç»åã¯ãAIç»åçæããŒã«ãDALL·Eãã䜿çšããŠäœæãããŠããŸã
ããã«ã¡ã¯ãã¯ãã¹ ã€ãããŒã·ã§ã³ æ¬éš AI ãã©ã³ã¹ãã©ãŒã¡ãŒã·ã§ã³ã»ã³ã¿ãŒ æå±ã®ææ¬ã§ãã ç§ã¯æ®æ®µã Know Narratorã·ãªãŒãº ã®éçºããçæAIé¢é£ã®æè¡æ€èšŒãªã©ã«åãçµãã§ããŸãã ä»åã¯ãã¿ã€ãã«ã®éãç§ã®äœæ¥ç°å¢ã«ã€ããŠç޹ä»ããŸãã ç§ã¯æ¥åã®ã»ãšãã©ãåšå®
ã§è¡ã£ãŠãããäœæ¥ç°å¢ãã»ãŒãã®ãŸãŸç掻空éã«ããªã£ãŠããŸãããã®ãããå¿«é©ã«ä»äºãã§ããïŒæ®ãããïŒãããªç°å¢ã«ããŠããã®ã§ãäœæ¥ç°å¢ã«ã€ããŠæ©ãã§ããæ¹ã®åèã«ãªãã°ãšæããŸãïŒ ä»äºãçæŽ»ãããããç°å¢ãç®æã㊠ã¢ã€ã©ã³ãåã®ãã¹ã¯é
眮ã§å£ãèäžã« ãã¹ã¯ã«ãªãã¹ãã¢ãã眮ããªã æéãã¹ã¯ã§ãšãã©ãç«ã€ããã« ã¢ãã¿ãŒã¯Type-Cæ¥ç¶ã§ãã27ã€ã³ãã2æïŒã¡ã€ã³ã®4Kã¢ãã¿ãŒãšã²ãŒã 察å¿ã®WQHD 180hzã¢ãã¿ãŒïŒ ã¬ãžã§ããé¡ã®ç°¡åãªçŽ¹ä» äœæ¥ç°å¢ã«ãã ãã£ãçµæ ãŸãšã ä»äºãçæŽ»ãããããç°å¢ãç®æããŠ äœæ¥ç°å¢ããã¹ã¯åšããã»ãŒç掻空éã§ãããšæžããŸããããå®éã«ã¯ä»¥äžã®ãããªç®çã§å©çšããŠããŸãã ä»äº é£äº æ ç»ãªã©ã®åç»éè³ ã²ãŒã å®¶ã«ããéã¯åºæ¬ãã¹ã¯ã«ãããšèšã£ãŠãéèšã§ã¯ãªãã§ãã... ã¢ã€ã©ã³ãåã®ãã¹ã¯é
眮ã§å£ãèäžã« æ©éã§ãããäœæ¥ç°å¢ã®å®éã®åçããïŒãããããšè¶£å³èŠçŽ ãåã£ãŠããã®ã¯ç¡èŠããŠãã ããïŒ æå€§ã®ç¹åŸŽã¯ã¢ã€ã©ã³ãåã®ãã¹ã¯é
眮ãããŠå£ãèäžåŽã«ããŠããããšã ãšæããŸãã以åã¯å£ã«ãã¹ã¯ãã€ããŠããŸããããã¢ãã¿ãŒã®åŸããããå£ã«ãªã£ãŠããããããå°ãå§è¿«æãæããŠããŸããããã®å§è¿«æãåé¿ããããã«ãã¢ã€ã©ã³ãåã®ãã¹ã¯é
çœ®ãæ¡çšããã®ã§ãã çµæçã«ãã®é
眮ã¯å€§æåã§ãå§è¿«æãæããªããªããŸããã1æ¥ã®å€§åãéããã®ã«å§è¿«æãæãããã©ããã¯å€§ããªéãã ãšæããŸãã ãããŠã å§è¿«æããªããªã£ãããšã«ãããäœæ¥å¹çãäžãã£ããããªæ°ãããŸãã â»æ€èšŒã¯ããŠããŸãããæ°åã®åé¡ã§ããæ°åã倧äºãªã®ã§ãã ãŸããå£ãèã«ããããšã«ãã£ãŠãã«ã¡ã©ãä»ããŠãªã³ã©ã€ã³äŒè°ãè¡ãéã«åŸããæ°ã«ããå¿
èŠããªããªããŸãããä»®æ³èæ¯ã¯äœ¿ã£ãŠããã®ã§ãããç©ççã«ãæ°ã«ããªããŠãããªã£ãã®ã¯æãã¬ã¡ãªããã§ãã ãã¡ãªããããããŠãããšããéšå±ã®ã¹ããŒã¹ã䜿ãããšãããã±ãŒãã«ãç®ç«ã¡ãããããšãã®å€§ãã2ã€ã ãšæããŸãã 1ç¹ç®ã«é¢ããŠã¯ãç§ã®å Žåãå®¶ã«ãããšãã¯åºæ¬çã«ãã¹ã¯ã«ãããå¯ãŠããããªã®ã§åé¡ãããŸããã§ãããããŸãŒã«çãã¬ãããããšãããã®ã§ããããã®ã¹ããŒã¹åã¯ç©ºããŠããã®ã§åé¡ãããŸããã 2ç¹ç®ã«é¢ããŠã¯ãã±ãŒ ãã«ã㬠ã€ããé
ç·ã«ããŒãã±ãŒãã«ãæããã¢ã€ãã ãå©çšããŠç®ç«ããªãããã«ããŠããŸããäžã®å
šäœåçã§ãã»ãšãã©ã±ãŒãã«ãèŠããŠããªããšæããŸããã±ãŒãã«ããã¡ããã¡ãããŠããã®ã¯å¥œãã§ãªãã®ã§ãå¯èœãªéããŸãšããŸããããã®ãããã®æŽçã°ããºã¯æ¯èŒçå®ã倿®µã§èª¿éå¯èœãªã®ã§ããããã§ãã ã±ãŒãã«åšãã®æ§å ãã¹ã¯ã«ãªãã¹ãã¢ãã眮ããªã 以åã¯ãã¹ã¯ã®äžã«ããããããšã¢ãã眮ããŠããŸããããä»ã¯æ¥µåã¢ãã眮ããªãããã«ããŠããŸããä»äœ¿ããã®ã ãã眮ããšããããšãå¿ãããŠããŸãã ã¢ãã¿ãŒå°ãå©çšããŠã¢ãã¿ãŒäžã®ç©ºéãã§ããã ãå©çšãããããã¹ã¯äžçšã®æ£ãå©çšããŠæ¬ã眮ãããããŠããŸããããããããå§è¿«æã«ã€ãªããèŠå ã ã£ãããªãšæããŸãã å©çšé »åºŠã®äœããã®ã¯åšå²ã®ã©ãã¯ã«çœ®ãããã«ããŠã䜿ããšãã ãåãã ãããã«ããŸãããããããããšã§ããã¹ã¯ãåºã
䜿ãããšãã§ããŸããã䜿ããªããã®ã¯ç©ºããŠããã¹ããŒã¹ã«äžæçã«åããããšãç°¡åã§ãã æ®æ®µã®ç®ç·ããã®åçãèŒãããããšæã£ãã®ã§ãããéšå±ããã£ããåã£ãŠããŸãã®ã§çäžããæ®åœ±ã 眮ããŠãããã®ã¯ã ãã³ç«ãŠ ãããã¬ã€ïŒäžæçã«å°ç©ã眮ããšããïŒ ãã§ã€ã¯ã®èïŒãã©ã¹ããã¯è£œïŒ ãã£ãã¥ãŒã¶ãŒ ã¢ãã¿ãŒ ããŒããŒã ããŠã¹ ããŒãPCïŒã¹ã¿ã³ãã§ç«ãŠãŠããïŒ ã§ãã å人çãªãæ°ã«å
¥ãã¯èã§ãããç·ãããã ãã§å°ãæ°åãæãããªãæ°ãããŸãã ã¡ãªã¿ã«ãã¹ã¯ã¯å¥¥è¡ã70cmãæšªå¹
140cmã®ãã®ãå©çšããŠããŸããæå¥¥è¡ãã60cmã®ãã®ãå©çšããŠããã®ã§ããã埮åŠã«çãæããŠ70cmã«ããŸããããã®ãµã€ãºã§çŸç¶äžæºã¯ãªãã§ãã æéãã¹ã¯ã§ãšãã©ãç«ã€ããã« ãã¹ã¯ã¯Flexispotã®ãE7 proããšããé»åæéãã¹ã¯ãå©çšããŠããŸãããã¿ã³1ã€ã§ããã¹ã¯ã®é«ããå€ãããã䟿å©ãªã¢ã€ãã ã§ããé»åæéãã¹ã¯ã¯åšå®
ã¯ãŒã«ãŒã1床ã¯å€¢èŠãã¢ã€ãã ã ãšæã£ãŠããŠã瀟äŒäºº5幎ç®ã®ã¿ã€ãã³ã°ã§æãåã£ãŠè³Œå
¥ããŸããã 宿çã«ç«ã£ãŠä»äºãããããäŒè°ã®æã«ç«ã£ãç¶æ
ã§ãªã³ã©ã€ã³äŒè°ã«åå ãããããŠããŸããç«ã€ããšã§æ°å転æã«ãªããŸããã座ãã£ã±ãªãã¯è¯ããªãã§ããããã ãŸãã座ã£ãŠããç¶æ
ã§ããåº§ãæ¹ãæ€
åã®é«ã次第ã§ãã¹ã¯ã®é«ããå€ããããšã¯ãããŸããä»äºã®æã¯ãã¡ãããã²ãŒã ã®æãæ ç»ããã£ããèŠãããšããæ§ã
ãªã·ãã¥ãšãŒã·ã§ã³ã«åãããŠé«ããå€ããããã®ã¯é
åã§ãã ã¡ãªã¿ã«æ€
å㯠ãšã«ãŽãã¥ãŒãã³ ã®ã ãšã«ãŽãã¥ãŒãã³ ããããå©çšããŠããŸããæè¿ã ãšã«ãŽãã¥ãŒãã³ ãã2ããåºãŠããã®ã§ãããããè²·ã人ã¯2ããå§ãããŸãã ã¢ãã¿ãŒã¯Type-Cæ¥ç¶ã§ãã27ã€ã³ãã2æïŒã¡ã€ã³ã®4Kã¢ãã¿ãŒãšã²ãŒã 察å¿ã®WQHD 180hzã¢ãã¿ãŒïŒ äœæ¥ç°å¢ã§æ°ã«ãªããã€ã³ãã®1ã€ãã¢ãã¿ãŒã®æ§æã ãšæããŸããç§ããããããªæ§æã詊ããŠããŸãããããšããšã¯1ã€ã®å€§ããªã¢ãã¿ãŒã§è¯ã掟ã ã£ãã®ã§ãããçŸåšã¯åããµã€ãºã®ã¢ãã¿ãŒã2æäœ¿ã£ãŠããŸããçç±ã¯ãã³ãã¥ãã±ãŒã·ã§ã³ããŒã«ïŒTeamsãªã©ïŒãéãã£ã±ãªãã«ããŠããããã®ãšããªã³ã©ã€ã³äŒè°æã«å
±æããŠããç»é¢ãšããã§ãªãç»é¢ãåãããæ¬²ãåºãŠããããã§ãã åºæ¬çã«ã¯ãã¡ã€ã³ã¢ãã¿ãŒã®27ã€ã³ã4Kã®ã¢ãã¿ãŒäžã§äœæ¥ãã€ã€ããµãã¢ãã¿ãŒã®ãã1æã§Teamsãªã©ãéãããã«ããŸãããè€æ°æå©çšãããšãã©ãããŠãéŠãæ¯ãã®ã§ç²ããŠããŸããŸãããã®å¯ŸçãšããŠãã¡ã€ã³ãšãµãã®åœ¹å²ãæç¢ºã«ããŠãåºæ¬ã¯ã¡ã€ã³ããèŠãªããšãã圢ã«ããŸãããïŒåçã§ãã¡ã€ã³ã¢ãã¿ãŒãããŒããŒãã®åã«ããã®ãåãããšæããŸãïŒ ã¡ãªã¿ã«ãã¡ã€ã³ã®ã¢ãã¿ãŒã¯4Kã®æ¡å€§ç125%ã§å©çšäžã§ããããŒã ã¡ã³ããŒã«ã¯4Kã¢ãã¿ãŒãæ¡å€§ç100%ã§å©çšããŠãã人ãããããã§ããããããã«å°ãããªããããã®ã§èªåã«ã¯ç¡çã§ããããŸããã¢ãã¿ãŒã¯2ã€ãšãType-Cæ¥ç¶ã§æ ååºåã絊é»å¯èœãªã¢ãã«ãªã®ã§ãããŒãPCåšãã®ã±ãŒãã«ãå°ãªãæžãã§ããŸãã 2æã®ã¢ãã¿ãŒã«å¯ŸãType-Cã§æ¥ç¶ããŠããæ§å èŠåºãã«ãã²ãŒã 察å¿ã®WQHD 180hzã¢ãã¿ãŒããšæžããŠããŸããããµãã¢ãã¿ãŒã¯ã²ãŒã çšãšããŠãå©çšããŠããŸããPS5ãSwitchã§ããå©çšããŠããªãã®ã§ã180hzã«å¯Ÿå¿ããŠããã°ååãªæ§èœããªãšã ã¬ãžã§ããé¡ã®ç°¡åãªçŽ¹ä» ãšã³ãžãã¢ãšããŠåããŠããŸãã®ã§ãäžå¿ããŒããŒããããŠã¹ãªã©ãç°¡åã«ç޹ä»ããŠãããŸãã ããŒããŒãã¯Keychronã®ã Q1 Max QMK/VIA JISïŒããã軞ïŒãã䜿ã£ãŠãããŸããæã¡éã³çšã«KeychronãK3 Pro QMK/VIAïŒããã軞ïŒããæã£ãŠããŸãããå®¶ã§ã¯ãQ1 Maxã䜿ã£ãŠããŸãããšã³ãžãã¢ã§ãããUSé
åã¯äœ¿ããŸãããUSé
å䜿ã£ãŠãã人ã¯ããããšã³ãžãã¢ã®ã€ã¡ãŒãžããããŸãããJISé
åã§ãããããã ããšãããšãããèŠããããšæããŸãã ããŠã¹ã¯ Logicool ã®ãMX MASTER3sãã䜿ã£ãŠããŸããããŠã¹ãšããã° ãã©ãã¯ããŒã« ã¿ã€ããè¯ããšèãã®ã§ãããçŸç¶ãã¡ãã§æºè¶³ããŠããã®ã§å€ããäºå®ã¯ãªãã§ããããŠã¹ãæã¡éã³çšããããåãã Logicool ã®ãMX Anywhere 2Sãã䜿ã£ãŠããŸãããã¡ã7幎ããã䜿ã£ãŠãèœãšããŸãã£ãŠãŸããå
šãåé¡ãªã䜿ããŠããŸãã äžãèªå®
çšã»ãããäžãæã¡éã³çšã»ãã äœæ¥ç°å¢ã«ãã ãã£ãçµæ ãã®ããã«äœæ¥ç°å¢ã«ãã ãã£ãçµæãã¹ãã¬ã¹ã®å°ãªãå¿«é©ãªäœæ¥ç°å¢ã«ãªã£ãŠãããšæããŸãããããã詊è¡é¯èª€ãéããŠããäžã§ããªãæºè¶³ã®ããç°å¢ã§ãã ãã ãããã€ããã¡ãªãããããã®ã§æ³šæãå¿
èŠã§ãã çµããããšã®ãªãã PDCAãµã€ã¯ã« ã«ããã å¥ã®ç°å¢ã«ãªããšæ°åãäžãã 1ç¹ç®ãã©ãã ãçŽåŸã®ããäœæ¥ç°å¢ã«ãªã£ãŠããæéããã€ãšæ°ã«ãªãããšãåºãŠããŠæ¹åããããªããã§ãããããããªãšããã§ PDCAãµã€ã¯ã« ã¯åããããªããã®ã§ãã 2ç¹ç®ãæ®æ®µã®ç°å¢ãèªåã«æé©åãããããšãå¥ã®ç°å¢ã«ãªã£ãæã«ãããããªãããããããªãããšæããŠããŸããŸãããåŒæ³çãéžã°ãããšèšããŸãããå
šãæã£ãŠéã®ç¶æ³ã§ãããåŒæ³ã§ããªãã®ã«çéžã³ãŸãããç¶æ
ã§ãã ãšã¯ããããã¡ãªãããæããæéã¯ãã¡ãªãããæããæéã«æ¯ã¹ã¯ããã«å°ãªãã®ã§åé¡ãªãããšæããŸãã ãŸãšã ä»åã¯ãç§ã®äœæ¥ç°å¢ã玹ä»ããŸããïŒ ãããããäœæ¥ç°å¢ã®æ¹åã¯ç¶ãããšæããŸãããäœæ¥ç°å¢ãã©ãæŽããŠãããæ©ãã§ããæ¹ã®åèã«ãªãã°å¹žãã§ã ã芧ããã ãããããšãããããŸããïŒ ç§ãã¡ã¯å
±ã«åããŠããã ãã仲éãåéããŠããŸãïŒ ã¿ãªããŸã®ãå¿åããåŸ
ã¡ããŠããŸãïŒ æ ªåŒäŒç€Ÿ é»éç·ç æ°åæ¡çšãµã€ã AIç³»ãããžã§ã¯ããããŒãžã£ãŒ/ãªãŒã㌠AIãµãŒãã¹éçºãšã³ãžã㢠å·çïŒ @naoki.muramoto ãã¬ãã¥ãŒïŒ @miyazawa.hibiki ïŒ Shodo ã§å·çãããŸãã ïŒ
åããŸããŠã ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã®äœè€æ ã§ãã æ¬èšäºã§ã¯ AWS Certified Solutions Architect - Professional(以äž:SAPro)ãã»ãšãã©æ¥åçµéšã®ãªãæ°äººã®ç§ããå匷ã®ã¿ã§ååŸãã çµéšè« ã玹ä»ããŸãã æ³å®èªè
㯠AWS Certified Solutions Architect - Associate(以äž:SAA)ãååŸæžã¿ã®æ¹ã§ããæªçµéšã®å Žåã¯SAAããã®ååŸããå§ãããŸãã ç®æ¬¡ èè
èæ¯ SAProãšã¯ ååŸçç± åŠç¿æ¹æ³ è©ŠéšæŠèŠ åŠç¿ææ CloudLicense Udemy AWS Certified Solutions Architect Professional Practice Exam æ¹æ³ ãã¹ãåœæ¥ ãŸãšã èè
èæ¯ 倧åŠãé¢ã§ã¯ã»ãšãã©æ
å ±ããã£ãŠããªã åºæ¬æ
å ±ååŸïŒå
¥ç€ŸåŸïŒ æ°äºº1å¹Žç® ã€ã³ãã©æ¥åã«ãŸã€ãã OJT 課é¡ã1ãæé宿œ 2é±éã§ AWS Certified Cloud PractitionerïŒä»¥äž:CLFïŒãååŸ 1ãæã§SAAãååŸ ã€ã³ãã©ã®ç¥èã¯ãªãã£ãã®ã§ã詊éšå¯Ÿçãè¡ãäžã§åŠç¿ãããŸãããCLFã®è©Šéšå匷ãå§ããåœå㯠IPã¢ãã¬ã¹ ã®ãããã¯ãŒã¯éšãš ãã¹ãéš ã®æŠå¿µãç¥ããªããããã®ã¬ãã«ã§ãã SAProãšã¯ AWS Certified Solutions Architect - Professional ã¯ã AWS ã§ã® ã¯ã©ãŠã ã¢ãŒããã¯ã㣠ã®èšèšãšãããã€ã«ãããŠ2幎以äžã®å®è·µçãªçµéšãæã€å人ã察象ãšãããã®ã§ãã 察象ãšãªãã¬ãã«ã¯ä»¥äžã®ããã«ãªã£ãŠãããæ¥åçµéšããªã人ãåŠç¿ãè¡ããšåãããªãããšã®éã詊éšç¯å²ã®åºããåé¡ã®ããªã¥ãŒã ã«æ«æããŠããŸããšæããŸãããããã£ãŠãæªçµéšè
ã®æ¹ã¯50~100æéã»ã©ã³ãããããããšãèŠæããŠãåŠç¿ããæéã確ä¿ããå¿
èŠããããŸãããã 2幎以äžã®å®åçµéšã¯åéšã®ããã®å¿
é æ¡ä»¶ã§ã¯ãªãã®ã§ãæªçµéšã§ååŸåºæ¥ãã2幎åã® ç¥è ãç²åŸã§ãããã£ã³ã¹ã§ããããŸãã è€éãªåé¡ã«å¯Ÿããè€éãªãœãªã¥ãŒã·ã§ã³ã®æäŸãã»ãã¥ãªãã£ãã³ã¹ããããã©ãŒãã³ã¹ã®æé©åãããã³æåããã»ã¹ã®èªååã«ãããé«åºŠãªç¥èãšã¹ãã«ã蚌æããããã«åœ¹ç«ã¡ãŸãã ãã®è³æ ŒãååŸããããšã«ãã£ãŠåŸãããç¥èã¯ä»¥äžã®ããã«ãªã£ãŠããŸããåé¡ã詳现ã¯åŸè¿°ããŸãããæ³å®ããã課é¡ã«å¯ŸããŠè€æ°ã®ãµãŒãã¹ãçµã¿åãããã·ããªãªã«ãããŠãæãå¹ççãªãã®ãéžæãã圢åŒã§ãããããçšæãããéžæè¢ããéžã¶ãšããããšä»¥å€ã¯å®è·µçã§ãããšæããŠããŸãã ååŸçç± SAProã¯SAAã«æ¯ã¹ãŠããã«å
·äœçã§å®è·µç㪠ãŠãŒã¹ã±ãŒã¹ ã課é¡ã«å¯ŸåŠãããããªåºé¡åœ¢åŒããšã£ãŠããã®ã§ã詊éšå¯ŸçãéããŠèª²é¡è§£æ±ºã®ããã®ææ³ãæ·±ãçè§£ã§ããã®ã§ã¯ãªãããšèããã®ããã£ããã§ãã ãŸããæ°äººã§æäžäœè³æ Œãä¿æããŠããããšã§ AWS ã«é¢ããŠã¯ä»ã®äººãšå·®å¥åã§ããŠèªåãããããã€ã³ãã©ã®ä»äºã«ç«åè£ã§ãããšèããŸãããããããããããããæã®æ¯ãã«ãªã£ãŠããŸããã åŠç¿æ¹æ³ è©ŠéšæŠèŠ è©Šéšã®æŠèŠã¯ä»¥äžã®ãšããã§ãã SAAã«æ¯ã¹ãŠè©Šéšç¯å²ããããã«çããªãé »åºã®åéãç¹å®ããããã§ããããã®ååãããå
å®¹ã¯æ·±ããªã£ãŠãããèŠæ±ãããæ£ççãé«ããªãã®ã§è©Šéšã®é£æåºŠã¯é£ãããªã£ãŠãããšæããŸããã å
容 è€éãªçµç¹ãžã®å¯Ÿå¿ ãœãªã¥ãŒã·ã§ã³èšèšãšç¶ç¶çæ¹å ç§»è¡ãšã¢ããã€ãŒãŒã·ã§ã³ã®å é åºé¡åœ¢åŒ éžæè¢ããåäžãŸãã¯è€æ°éžæãããåœ¢åŒ æé 180å å顿° 75å åæ Œç¹ 75% åŠç¿ææ 以äžã®åŠç¿ææããå§ãããŸãã CloudLicense ã¡ãªãã æ¥æ¬èªã«éåæããªã解説ã詳ãã æ¬çªã§åºãå
容ãå€ãã£ã ãã¡ãªãã å顿ãã³ããŒã§ããªãã®ã§ééããåé¡ããŸãšããã«ã¯ææã¡ãå¿
èŠ https://cloud-license.com/ F12ããŒãçšããŠå顿ã®ããã¹ããããã¯ãã³ããŒã§ããã®ã§èš±å®¹ã¯ã§ããŸãããããæéã§ããã Udemy AWS Certified Solutions Architect Professional Practice Exam ã¡ãªãã æ¬çªã§ã»ãŒåãå
容ãåããã ã³ããŒ&ããŒã¹ããå¯èœ ãã¡ãªãã è±èªã®å顿ã google翻蚳 ã«ããããšæå³äžæãªæããã https://www.udemy.com/course/aws-certified-solutions-architect-professional-aws-practice-exams ãã¡ãã¯å€ãªç¿»èš³ãåæãèŠãŠè£æ£ããäœæ¥ãåºæ¥ãã°åé¡ã®é°å²æ°ãè¿ãã®ã§è¯ãææã ãšæããŸãã æ¹æ³ 以äžã®è©Šéšåé¡ã®ãµã³ãã«ãããšã«åŠç¿æ¹æ³ã解説ããŸãã https://d1.awsstatic.com/ja_JP/training-and-certification/docs-sa-pro/AWS-Certified-Solutions-Architect-Professional_Sample-Questions.pdf ãã®ãããªåœ¢åŒã§åãããã®ã§ãèæ¯ããçŸç¶ããèŠæ±ãã«åé¢ããŸãã ãã®3èŠçŽ ã«ç¶ºéºã«åé¢ã§ããªãããšããããŸããããã£ãããšåãåããããšã§å顿ã®èŠéããè¯ããªããŸãã倧äœã®å Žåã¯ææ«ã«ããèŠæ±ã®éšåã«ç®ãéããŠãããèæ¯ãšçŸç¶ãçè§£ããããšã§èŠæ±ã«å¯Ÿãã課é¡ãã©ã®ç¹ã«ããããææ¡ãããããªããšããããšã§ãã ãã®ãµã³ãã«åé¡ãäŸã«èããŸãã èŠæ±ã¯éå°ãªæ¯åºãé²ããåã¢ã«ãŠã³ãã®ã³ã³ ãããŒã« ãç¶æãããœãªã¥ãŒã·ã§ã³ãææ¡ããããšã§ãã èæ¯ã¯æ»æè
ã«ãã ã€ã³ã¹ã¿ã³ã¹ ã®èµ·åã§è«æ±ãé«é¡ã«ãªã£ãããšã§ãã æåŸã«ãçŸç¶ã¯ã»ãã¥ãªãã£äŸµå®³ã«ã¯å¯Ÿå¿ãããéå°ãªæ¯åºãé²ããœãªã¥ãŒã·ã§ã³ã¯ãªããšããããšãããããŸãã ãã®æã®èŠæ±ãæºããã«ã¯ã»ãã¥ãªãã£äžã®åé¡ã¯èæ
®ããªããŠãããšããããšãåããããã®é·ãå顿ã§ãèªãã¹ãã¯åŸåéšåã«éå®ã§ããã®ã§å€§åèŠéããè¯ããªããŸãããïŒ ãã®ããšã§ãéžæè¢ãèŠãŠãããŸãã ãã®æ¡ä»¶ãæºããéžæè¢ã¯Cã§ãããç§ã¯ãã以å€ã®éžæè¢ãéãçç±ã解説ã§ããªããšè§£ããããšã«ããŸããã§ããã 解説ãå
¬åŒããã¥ã¡ã³ããåèã«ããªãããåé¡ãã©ã®åéã«å±ãããã®ããšã©ã®ãµãŒãã¹ã«é¢é£ãããã®ããåé¡ããŠä»¥äžã®ããã«mdãã¡ã€ã«ã§ã¡ã¢ããŸãšããŠãããŸããã VScode ã®ç°å¢äžã§èŠåºãã® åœåèŠå ãæ±ºããŠéçè§£æã® æ¡åŒµæ©èœ ã䜿çšãããšãåãèŠåºããããéã«ã¯èŠåãåºãã®ã§æ
å ±ãäžã€ã®å Žæã«ãŸãšããããšãã§ããŸãã åŠç¿ã®ã³ããšããŠã¯ããã¥ã¡ã³ããåããªãããšã§ããåãããªãããšãåãã®ã¯è² è·ãå°ããã®ã§èšæ¶ã«æ®ãã¥ããæ°ãããŸãããªã®ã§ãåé¡ãè§£ãããã®ããã¥ã¡ã³ããèªã¿èŸŒãã åŸã«ããŒãããŸãšããéã«ã¯åèè³æãèŠãªãããã«ããŸããã€ãŸãã€ã³ããããšã¢ãŠããããã¯åé¢ãããšããããšã§ãã 以äžã®æ¹æ³ã§å
è¿°ã®åé¡éãè§£ããŸãããã®æ¹æ³ã§ãããšæéãããããŸãã質ãé«ãããããã200åååŸã§åæ Œã§ãããšæããŸããç§ãå®éã«è§£ããã®ã210åã§ããã ãã¹ãåœæ¥ ãã¹ãã»ã³ã¿ã§åéšããŸããã è©Šéšæéã¯é·ãã®ã§äºåã«ãã€ã¬ã«è¡ãããšãããããããŸãã åé¡ãååè§£ãããäŒæ©ããŠãã ããã ãã£ããåéšããã®ã§ãããã倪åæã¡ã§ããªãåé¡ãéžæè¢ããçµã£ãŠåçã§ããããã«ããŸãããã ãã®éžæè¢ã®ãã¿ãŒã³ã®å Žåã¯AãšBãCãšDãšEã«éžæè¢ãåããããšãã§ãéžæè¢ã2ã€éžã¶éã«ã¯ãããã1ã€ãã€éžã¶ åŸåããããŸã ã ãŸããµã³ãã«åé¡ã«ã¯ãªãã£ãã®ã§ããã以äžã®ãããªéžæè¢ã®å Žå A ) CloudFrontã䜿çšããŠïœ B ) CloudFrontã䜿çšããŠïœ C ) CloudFrontã䜿çšããŠïœ D ) S3ã§éçãŠã§ããµã€ã ãã¹ãã£ã³ã° ãããŠïœ ããã¯AïœCã«æ£è§£ãããããšãå€ãã§ãã çµå±ããã®åŸåãåãããããåé¡è§£ããŠãããšæ®éã«è©Šéšåæ Œã§ããã®ã§ãããã©ãããŠãæéããªããŠéžæè¢ããéç®ããããšãã«åèã«ããŠãã ããã ãããŠããããŸã§åŸåãªã®ã§å矜詰ãŸã£ãéã®åèçšåºŠã§ãé¡ãããŸãã ãŸãšã AWS 詊éšã®ãªãã§äžçªé£ããã£ãã§ãã詊éšå¯Ÿçã®éçšã§éåžžã®ãã³ãºãªã³ã§ã¯æ€èšŒãé£ããå
容ãäŸãã°Control Towerãªã©ã®çµç¹ç®¡çã«é¢ããéšåãã·ããªãªã«åºã¥ãã課é¡ã解決ããããšã§çè§£åºæ¥ãã®ã§åæ Œèªäœãããã§ããããããŸã§ã®ããã»ã¹ã«æå³ããã£ããªãšæãã詊éšã§ããã æªçµéšã ãšå³ããéã®ãã§ã€ããã§ãããåæ Œã¯ã§ããã®ã§åãå¢éã®äººã¯é 匵ã£ãŠãã ããïŒ ãããŸã§èªãã§ããã ãããããšãããããŸãã äžäººã§ãå€ã AWS ã®èªå®è©Šéšã«èå³ãæã¡åæ ŒããŠããã ãããå¬ããã§ãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç æ°åæ¡çšãµã€ã å·çïŒ @sato.yu ãã¬ãã¥ãŒïŒ @nakamura.toshihiro ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ãã©ãŒããŒïŒ ãšã³ã¿ãŒãã©ã€ãº ç¬¬äžæ¬éšã®å®®æŸ€é¿ã§ãïŒ ïŒçµç¹æ¹ç·šã®åœ±é¿ã§éšçœ²åãå€ãããŸããïŒïŒ æ¬èšäºã§ã¯ãçŸåœ¹ã®ITäŒæ¥ç€Ÿå¡ïŒæ°å5幎ç®ïŒãšããç«å Žããã倧åŠå
¥åŠå
±éãã¹ãïŒæ§ïŒ 倧åŠå
¥è©Šã»ã³ã¿ãŒè©Šéš ïŒã«ä»å¹ŽåºŠããæ°ããªåºé¡ç§ç®ãšããŠèšå®ããããæ
å ±â
ãã®è©Šéšåé¡ãè§£ããŠã¿ãææ³ããäŒãããŸãïŒ åé¡ã»æ£è§£ ææ³ è§£çè
ãšã㊠倧å1 倧å2 倧å3 倧å4 ITäŒæ¥ç€Ÿå¡ãšã㊠ãããã« åé¡ã»æ£è§£ æ¬èšäºã®å¯Ÿè±¡ã¯ã什å7å¹ŽåºŠã®æ¬è©Šéšåé¡ãšãªããŸãã åé¡ããã³æ£è§£ã¯ã以äžã«å
¬éãããŠããŸãã åé¡PDF ïŒé·ç§»å
ïŒ æ¯æ¥æ°è ããžã¿ã«Webãµã€ãïŒâ» æ£è§£PDF ïŒé·ç§»å
ïŒ ç¬ç«è¡æ¿æ³äºº 倧åŠå
¥è©Šã»ã³ã¿ãŒ Webãµã€ãïŒ â»å
¬éããæ¬¡ç¬¬ã ç¬ç«è¡æ¿æ³äºº 倧åŠå
¥è©Šã»ã³ã¿ãŒ Webãµã€ãã®ãã®ã«æŽæ°äºå®ã§ãã ææ³ ïŒä»¥äžãåœç¶ã§ããå
šãŠåäººã®ææ³ã§ãïŒïŒ è§£çè
ãšã㊠äœããããŸãã¿ãªããŸã«ããã ãã¯äŒããããšããææ³ãšããŠã ãæ
å ±â
ãã§åéšçã«æ±ããããŠãããã®ã¯ããæ
å ±åŠã®ç¥èãã§ã¯ãªãããæ
å ±ãèªã¿åãïŒæŽ»çšããèœåããªã®ããª ãšæããŸããã ãã¡ãããåŸè¿°ã®å€§å1 å1 aã®ããã«ãæ
å ±åŠã®ç¥èãåãåé¡ãå«ãŸããŠã¯ããã®ã§ãããåé¡ã®å€§å㯠ãèšèŒãããæç« ãå³è¡šã®å
å®¹ãæ£ç¢ºã«çè§£ããããããåããããšïŒèããããããšãè§£çããåé¡ã ã§ããã ãããããå顿ã®äžã«çãããããã¿ã€ãã®åé¡ã§ãã ãã®æå³ã§ã¯ãæ
å ±åŠãšããããã¯æ¥æ¬èªãšè«ççæèåã®åé¡ãšãããã®ãããããŸããã ç§èªèº«ãããããŠå®éã«åé¡ãè§£ããŸã§ã¯ãããã°ã©ãã³ã°ããããã¯ãŒã¯ã®ãããªæ
å ±åŠçãªåé¡ãå€ãã®ããªïŒããšããã€ã¡ãŒãžããã£ãŠããããããã®ã€ã¡ãŒãžã¯èŠäºã«èŠãããŸããã ã SNS ãã¯ãããšããã€ã³ã¿ãŒãããäžã®æ
å ±ã«æ¯ãåãããããšãªããæ
å ±ãæ£ããçè§£ã»æŽ»çšããŠã»ããããšãã 倧åŠå
¥è©Šã»ã³ã¿ãŒ ã®æãã蟌ããããŠããã®ãããããŸãããïŒïŒïŒ ãšããããšãèžãŸããŸããŠã以äžã倧åã®äžéšãæç²ããŠã®éå€ãªææ³ã§ãã 倧å1 èšå¿µãã¹ã1åç®ã倧å1 å1 aããããªããããžã¿ã«çœ²åããªããŠåèªãé£ã³åºããŠããŸããïŒ åé¡ãèŠãéããå°ãªããšããããžã¿ã«çœ²åãå©çšããããšã§ãæ
å ±ã®çºä¿¡è
ãæ¬äººã§ããããšãæ
å ±ãæ¹ãããããŠããªããã確èªã§ããããšããããšããä»ã©ãã®é«æ ¡çã¯æ¢ã«çè§£ããŠããããã§ãã ããããã³ã£ããã§ãããïŒ ç§ã髿 ¡çã®é ã¯ããžã¿ã«çœ²åãªããŠç¥ããããŸããã§ããããããšããè³ã«ãããšããŠãã ãã³ãã³ããŒDS ã¿ããã«ã¿ãããã³ã§è·ç©åãåãã®ãµã€ã³ãã§ããã®ããªãããããã«ããèããªãã£ããšæããŸããç¬ å€§å2 倧å2 BããçŸéã§6,000åãã€ééããéã®ãã€ãããšããããŒãèšå®ãåçŽã«é¢çœããªãšæããŸããã 確ãã«ååæã§æã人ãäžäžåæã§æã人ãããããªããšãã¡ãã£ãšããããããã§ããã 倧å3 人æ¥èšç®ã«ãã å·¥æ° èšç»ã®ãããªããŒãèšå®ã§ããã ãã®ãããå°ãã SIer ã£ãœãããæããŸããã ãŸãããã®å€§åã®ã¿å¯äžããã°ã©ã ã®è©±ãç»å ŽããŸããã ãšã¯ãããç¹å®ã® ããã°ã©ãã³ã°èšèª ã®ç¥èããªããšè§£ããªããããªåé¡ã§ã¯ãªããããããç°¡å㪠ã¢ã«ãŽãªãºã ã®åé¡ã§ããã ãã®ãããåæãšããŠå¿
èŠãªç¥èã¯ã倿°ããé
åãã代å
¥ããšããæŠå¿µã®ã¿ã§ããã 倧å4 ã尺床氎æºããªããŠç§ã¯å€§åŠã«å
¥ã£ãŠåããŠåŠãã ã®ã«âŠãã£ã±ãä»ã©ãã®é«æ ¡çã¯åãâŠã ITäŒæ¥ç€Ÿå¡ãšã㊠æ°å¹ŽåŸã®æ°ç€ŸäŒäººã¯ãçšåºŠã®å·®ãããããå
šå¡ããã®ã¬ãã«ã®ç¥èãæèåãæããç¶æ
ã§ç€ŸäŒã«åºãŠããããã§ãã å¬ãããããªãã¯ã¯ã¯ã¯ãããããªãæããããããªãäžæè°ãªæèŠã§ãã ãã¡ãããå
šç€ŸäŒäººãå
±éãã¹ããåéšããŠããããã§ã¯ãããŸããããç§ç®ãšããŠã®æ
å ±â
ãå¿
ä¿®åããŠããããšãèžãŸãããšã æ
å ±ãªãã©ã·ãŒ ã¯ç¢ºå®ã«åºäžããããŠãããšèããããŸãã ãã®ãããæ°å
¥ç€Ÿå¡ã«ããããªããšãç¥ããªããã§ããïŒïŒïŒããšæãããªããããç§èªèº«ãåŠã³ãç¶ç¶ããŠããããšã倧åã ãªãšæããŸããã ãŸããç§ãèå³ããã£ãŠãã人æéçºçãªèгç¹ããèãããšãæ°äººç ä¿®ã®å
容ã«ã圱é¿ãããã®ã§ã¯ãªãããšæããŸããã ããã¯ããçŸåšã®ITæªçµéšè
ããšãæ°å¹ŽåŸã®ITæªçµéšè
ããšã§ã¯ãåæç¥èã®ã¬ãã«ã倧ããç°ãªã£ãŠããå¯èœæ§ãé«ãããã§ãã çŸåšå®æœãããŠãããçŸåšã®ITæªçµéšè
ãåãã®ç ä¿®ã®äžã«ã¯ããæ°å¹ŽåŸã®ITæªçµéšè
ããããããšãããããªã®å
šå¡é«æ ¡ã§ãã£ãŠããâŠããšæãããå
容ãå«ãŸããŠããå¯èœæ§ãåŠå®ã§ããŸããã ãã®ãããè¿ãå°æ¥ãåŒç€Ÿã«éãããå€ãã®äŒæ¥ïŒç ä¿®å®æœåŽãç ä¿®åè¬åŽããšãã«ïŒãITç³»ã®ç ä¿®ããã°ã©ã ãèŠçŽãå¿
èŠã«è¿«ãããã®ã§ã¯ãªãããšæããŸããã ãããã« æ¬èšäºã§ã¯ã什å7幎床倧åŠå
¥åŠå
±éãã¹ãã®ãæ
å ±â
ãã®æ¬è©Šéšåé¡ãè§£ããŠã¿ãææ³ããäŒãããŸããã å°ãªããšãä»å¹ŽåºŠã®æ¬è©Šéšåé¡ã§ã¯æ
å ±åŠã®ç¥èã¯ããã»ã©èŠæ±ãããªããããITæ¥çã®ã¿ãªããŸã¯ãã¡ããã§ããããã以å€ã®æ¥çã®ã¿ãªããŸãåŠçã®ã¿ãªããŸãããæéã®ãããšãã«è§£ããŠã¿ãŠã¯ãããã§ããããã æåŸãŸã§ãèªã¿ããã ããæ¬åœã«ããããšãããããŸããïŒ ç§ãã¡ã¯å
±ã«åããŠããã ãã仲éãåéããŠããŸãïŒ ã¿ãªããŸã®ãå¿åããåŸ
ã¡ããŠããŸãïŒ æ ªåŒäŒç€Ÿé»éç·ç æ°åæ¡çšãµã€ã æ ªåŒäŒç€Ÿé»éç·ç ãã£ãªã¢æ¡çšãµã€ã å·çïŒ @miyazawa.hibiki ãã¬ãã¥ãŒïŒ @kinjo.ryuki ïŒ Shodo ã§å·çãããŸãã ïŒ