ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®è¿ã§ãã 1幎ã»ã©åã«æžããããã° ã§ã¯ãçµç¹æšªæçã« Security Hub ã®å©çšããµããŒãããããã®æºåã«ã€ããŠæžããŸããããããã1幎ãçµã¡ãä»ã¯ç€Ÿå
ã®æ°çŸã¢ã«ãŠã³ãã® Security Hub å©çšããµããŒãããŠããŸãããã®èšäºã§ã¯ã Security Hub ã®ç€Ÿå
å±éã®éçšã§å©çšããŠããããŒã«çŸ€ãã玹ä»ããŸãã ãªããSecurity Hub ã®å©çšãµããŒãã¯ç€Ÿå
ã® SOC ãšããçµç¹ã§è¡ã£ãŠããŸãã SOC ã®çµç¹çãªç«ã¡äœçœ®ã圹å²ã¯ ãã¡ãã®ããã° ã§ã玹ä»ããŠããŸãã æ¹ããŠãŸãšãããšãSOC ã¯ç€Ÿå
ã®åäºæ¥éšã®ãããžã§ã¯ãã«å¯Ÿãã以äžã®2ã€ã®ãµãŒãã¹ãæäŸããŠããŸãã ã¯ã©ãŠã ãµãŒãã¹ã®ã»ãã¥ãªãã£èšå®äžåã®ãã§ãã¯ïŒSecurity Hubã®ã»ãã¥ãªãã£åºæºïŒ ã¯ã©ãŠã ã¢ã«ãŠã³ãã«å¯Ÿããè
åšã®æ€åºïŒSecurity Hub + GuardDutyïŒ æŠèŠ â ã¢ã«ãŠã³ã飿ºç³è«ãã©ãŒã ïŒJira Service ManagementïŒ â¡ã¢ã«ãŠã³ã管çå°åž³ïŒExcelïŒ â¢ã¢ã«ãŠã³ã飿ºæåŸ
ããŒã«ïŒLambda颿°ïŒ â£ã¢ã«ãŠã³ã飿ºã»ããã¢ããã¹ã¯ãªããïŒPowerShellã¹ã¯ãªããïŒ â€ã¢ã«ãŠã³ã飿ºãã§ãã¯ããŒã«ïŒLambda颿°ïŒ â¥æ€åºçµæé
ä¿¡ããŒã« ïŒECSãããã¢ããªïŒ âŠè
åšæ€ç¥éç¥ããŒã«ïŒLambda颿°ïŒ â§ã¢ã«ãŠã³ã飿ºè§£é€ããŒã«ïŒPowerShellã¹ã¯ãªããïŒ âšã»ãã¥ãªãã£ã³ã³ãããŒã«ã®å¯Ÿå¿æ¹éã ã»ãã¥ãªãã£èšå®ã¬ã€ãïŒExcel, PowerPointïŒ ãŸãšã æŠèŠ SOC ã®ãµãŒãã¹ã®éçšã§äœ¿çšããŠããããŒã«ãªã©ã1ã€ã®å³ã«ãŸãšããŸããã åãããžã§ã¯ãã䜿çšããŠãã AWS ã¢ã«ãŠã³ãã® Security Hub ãããSOC ã® AWS ã¢ã«ãŠã³ããžã¯ãã¹ã¢ã«ãŠã³ã飿ºããããšã§ã SOC åŽã§äžæ¬ããŠã»ãã¥ãªãã£èšå®ãã¢ã©ãŒããååŸããæ
å ±é
ä¿¡ãç£èŠãè¡ãçµç¹äœå¶ã§ããåããŒã«ã®è©³çްãå³ã®çªå·é ã§èŠãŠãããŸãã â ã¢ã«ãŠã³ã飿ºç³è«ãã©ãŒã ïŒJira Service ManagementïŒ SOC ã®ãµãŒãã¹ãå©çšãããã©ããã¯ãåãããžã§ã¯ãã®å€æã«å§ããŠããŸãã SOC ãå©çšããå Žåã¯ç€Ÿå
åãã® Jira Service Management ãå©çšããç³è«ãåãä»ããŠããŸããç³è«ã®çš®é¡ã«ã¯ AWS ã¢ã«ãŠã³ãã®è¿œå ã倿Žãè§£é€ãå«ãŸããŸãã â¡ã¢ã«ãŠã³ã管çå°åž³ïŒ Excel ïŒ AWS ã¢ã«ãŠã³ãIDãšãããžã§ã¯ãã®é£çµ¡å
ãªã©ã® ãããã³ã° ãèšèŒããã¢ã«ãŠã³ã管çå°åž³ãçšæãããããžã§ã¯ãããç³è«ãåãä»ãããæŽæ°ããŸãã çŸåšã®ç³è«æ°ã§ããã°ç¹ã«éçšè² è·ãšãªã£ãŠããããèªååãããšãªããšç³è«è
ã®æš©é管çãéã«é£ããããªã®ã§ãä»ã®ãšããæåäœæ¥ã§ãã â¢ã¢ã«ãŠã³ã飿ºæåŸ
ããŒã«ïŒLambda颿°ïŒ â¡ã®ã¢ã«ãŠã³ã管çå°åž³ãæŽæ°ããããSOC ã® AWS ã¢ã«ãŠã³ãã«ãã S3 ãã±ãã ã«ãã¡ã€ã«ãã¢ããããŒãããŸãã S3 ãã±ããã®ã€ãã³ãéç¥æ©èœ ãå©çšãããã¡ã€ã«ãã¢ããããŒãããããšèªåã§Lambda颿°ãèµ·åãããã¡ã€ã«ã®å
容ãèªã¿åã£ãŠãæªæåŸ
ã®ãããžã§ã¯ãã¢ã«ãŠã³ããž Security Hub ã®é£æºæåŸ
ãéä¿¡ããŸãã â£ã¢ã«ãŠã³ã飿ºã»ããã¢ãã ã¹ã¯ãªãã ïŒ PowerShell ã¹ã¯ãªãã ïŒ Security Hub ã®æåŸ
ãåããã¡ã³ããŒã¢ã«ãŠã³ãã§ã¯ããã€ãã®ã»ããã¢ããäœæ¥ãå¿
èŠã§ãã Security Hub ã®æå¹åãšãã»ãã¥ãªãã£åºæºã®æå¹åïŒãŸã æå¹åããŠããªãå ŽåïŒ Security Hub æåŸ
ã®æ¿è«Ÿ AWS Config ã®æå¹åïŒãŸã æå¹åããŠããªãå ŽåïŒ GuardDuty ã®æå¹åïŒãŸã æå¹åããŠããªãå ŽåïŒ ãããã瀟å
ã®ãããžã§ã¯ãæ
åœè
ã«ç°¡åã«å®æœããŠããããããã«ãCloudShell ã§æµãã ãã§äžé£ã®ã»ããã¢ãããå®äºãã PowerShell ã¹ã¯ãªãã ãçšæããŠããŸãã â€ã¢ã«ãŠã³ã飿ºãã§ãã¯ããŒã«ïŒLambda颿°ïŒ ãããžã§ã¯ãæ
åœè
ãâ£ã® ã¹ã¯ãªãã ãå®è¡ããã¿ã€ãã³ã°ã¯ä»»æã§ããããã§â¡ã®ã¢ã«ãŠã³ã管çå°åž³ã SOC ã¢ã«ãŠã³ãã® Security Hub ãªã©ããããŒã¿ãååŸããã»ããã¢ãããå®äºããŠããªãã¢ã«ãŠã³ãããããã©ãã Lambda 颿°ã§å®æçã«ãã§ãã¯ãçµæã SOC æ
åœã®ãã£ããã«éç¥ããŠããŸãã â¥æ€åºçµæé
ä¿¡ããŒã« ïŒECSãããã¢ããªïŒ ãããžã§ã¯ãã¢ã«ãŠã³ãã«å¯ŸããŠå®æçã« Security Hub ã®æ€åºçµæã Excel ã¬ããŒããšããŠé
ä¿¡ãããããã¢ããªã ECS Fargate ã§å®è¡ããŸãã 詳现㯠以åã®ããã° ã§ã説æããŠããŸãã âŠè
åšæ€ç¥éç¥ããŒã«ïŒLambda颿°ïŒ ã¯ã©ãŠã ã¢ã«ãŠã³ãã«å¯Ÿããç·æ¥åºŠã®é«ãè
åšïŒä»ãŸãã«äŸµå
¥ãããŠããå¯èœæ§ãããããªã©ïŒãçºçããå Žåãâ¥ã®æ€åºçµæã®ã¬ããŒãé
ä¿¡ã®ã¿ã€ãã³ã°ã«é¢ãããããªãã¹ãæ©ã段éã§ãããžã§ã¯ãæ
åœè
ã«éç¥ãããã¹ãã§ããSecurity Hub ã®é£æºãè¡ããšãã¡ã³ããŒã¢ã«ãŠã³ãã® GuardDuty ã¢ã©ãŒãã SOC ã¢ã«ãŠã³ãã«ãã¢ãªã¢ã«ã¿ã€ã ã§é£æºãããããã EventBridge ãš Lambda 颿°ã«ããã€ãã³ãããªãã³ã§ç·æ¥åºŠã®é«ã GuardDuty ã¢ã©ãŒãã SOC æ
åœã®ãã£ããã«éç¥ããŸãã SOC æ
åœã¯ã¢ã©ãŒãã®å
容ã確èªãããããžã§ã¯ãæ
åœè
ã«é£çµ¡ãåããŸãã â§ã¢ã«ãŠã³ã飿ºè§£é€ããŒã«ïŒ PowerShell ã¹ã¯ãªãã ïŒ ãããžã§ã¯ãã¢ã«ãŠã³ãã SOC ãµãŒãã¹ããè§£é€ããå Žåã¯ã SOC ã¢ã«ãŠã³ãã® CloudShell ã§å®è¡ããããšã§é£æºãè§£é€ã§ãã PowerShell ã¹ã¯ãªãã ãå©çšããŸãããããžã§ã¯ãã¢ã«ãŠã³ãåŽã®èšå®ïŒSecurity Hub ã®ç¡å¹åïŒãªã©ã¯ãããžã§ã¯ãåŽã®äœæ¥ã«å§ããŠããŸãã âšã»ãã¥ãªãã£ã³ã³ ãããŒã« ã®å¯Ÿå¿æ¹éã ã»ãã¥ãªãã£èšå®ã¬ã€ãïŒ Excel , PowerPoint ïŒ Security Hub ã®ã¢ã©ãŒãã«å¯Ÿããçè§£ã¯ããããžã§ã¯ãã«ãã£ãŠãŸã¡ãŸã¡ã§ãããããžã§ã¯ãåŽã®ã¢ã©ãŒããžã®å¯Ÿå¿ããµããŒãããããã SOC æ
åœã§ Security Hub ã®ã³ã³ ãããŒã« ã調æ»ããå¯Ÿå¿æ¹éãããŠããŠã®è³æããããžã§ã¯ãåãã«å
¬éããŠããŸãã ãŸãšã ISID 瀟å
ã§ Security Hub ã®å©çšããµããŒãããããã®ããŒã«çŸ€ïŒè³æã ã¹ã¯ãªãã å«ãïŒããã£ãšã玹ä»ããŸããã ãã ãä»ã®åœ¢ããã¹ãã ãšæã£ãŠããããã§ã¯ãªããéçšã«å¿
èŠãªããŒã«ããã®ä»çµã¿ã¯ãä»åŸã® SOC ã®æé·ã«å¿ããŠå€ãã£ãŠããã ãããªãšæã£ãŠããŸãã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžãã¢(ã»ãã¥ãªãã£èšèš) å·çïŒ @kou.kinyo ãã¬ãã¥ãŒïŒ 寺山 èŒ (@terayama.akira) ïŒ Shodo ã§å·çãããŸãã ïŒ
ISID XïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã®äžæµŠã§ãã çè
ã®é¢ãã£ãŠããæ¡ä»¶ã§ã¯ãã³ã³ããå©çšã AWS Fargateå©çšãé²ããŠãããŸãã 仿¥ã¯ã AWS Fargateã®ã³ã¹ããäžããããã®åãçµã¿äŸã«ã€ããŠã玹ä»ããŸãã ç®æ¬¡ ç®æ¬¡ AWS Fargate Spotãšã¯ïŒ terraformã®ã³ãŒãã§AWS Fargate Spotå¯Ÿå¿ çšŒåçã®äŸ ãŸãšã AWS Fargate Spotãšã¯ïŒ Fargate Spotã¯ãEC2ã¹ããã ã€ã³ã¹ã¿ã³ã¹ ãšåãããã«ã AWS å
ã§æªäœ¿çšã® ã¯ã©ãŠã ãªãœãŒã¹ã掻çšããããšã§ãªã³ããã³ãæéãšæ¯ã¹ãп倧70%ã®å²åŒäŸ¡æ Œã§äžæçã«å©çšã§ãã ã€ã³ã¹ã¿ã³ã¹ ã§ãã Fargate Spotã空ããã£ãã·ãã£ã確ä¿ã§ãããããããŠãŒã¶ãŒã¯æå®ããã¿ã¹ã¯ãèµ·åã§ããŸãã AWS ã«ãã£ãã·ãã£ãå¿
èŠã«ãªã£ããšããFargate Spotã§çšŒåããã¿ã¹ã¯ã¯2ååã®éç¥ãšãšãã«äžæãããŸãã ãã®ãããæ¬çªã§äœ¿ãããšãããšæ§ã
ãªæ€èšãå¿
èŠã§ãããäžæããŠãåé¡ã«ãªããªããããªå°èŠæš¡ã®éçºç°å¢ãæè¡æ€èšŒç°å¢ãªããã¡ãªãããæå°åããŠäœ¿ãããšãã§ããŸãã AWS Fargate ã®æé Amazon ECS åã Fargate Spot ã®æé AWS Fargate ã®æé ãã terraformã®ã³ãŒãã§ AWS Fargate Spotå¯Ÿå¿ terraformã§ecs serviceãå®çŸ©ããŠããå Žåãresource " aws _ecs_service"ã«äžèšã®èµ€æ ã®ã³ãŒãã远å ããã ãã§ãFargate Spot察å¿ãå®äºããŸããæ¬æ¡ä»¶ã§ã¯ãè€æ°ã³ã³ããã䜿çšããŠããã1ã³ã³ãããç«ã¡äžãã仿§ã§ãã äžæãåé¡ã«ãªããªããã§ã€ãºïŒã€ã³ãã©æ
åœè
ãæ§ç¯äžã極äžéšã®éçºè
ã®ã¿ã䜿çšããæ®µéïŒã§ã¯Fargate Spotã§èµ·åããæ¬çšŒåã®ãã§ã€ãºã§ã¯Fargateã«åãæ¿ãããšãã£ãããšãããŠããŸãã ãªããFargate Spotã®ä»æ§ãšããŠã¯ãweightã«ãŠéåžžã®FargateãšFargate Spotã®æ¯çãã³ã³ ãããŒã« ã§ããŸããäŸãã°ã7å²ãfargateã«ã3å²ãspotã«ãããšspotãèœã¡ããããªç¶æ³äžã§ã圱é¿ãéå®ã§ããŸãã ãŸã1ã³ã³ããããååšããªããããªå Žåã§ããweightã1:0 â0:1ã®ããã«åãæ¿ããããšã«ãããéåžžã«å°ããªä¿®æ£ã§Fargate SpotãšFargate ãåãæ¿ããããŸãã ïŒéæ ã®éšå㯠ãã£ãã·ãã£ãŒ ãããã€ããŒã®èšå®ãšã³ã³ããªã¯ããããããåé€ãå¿
èŠã§ãïŒ çšŒåç ã®äŸ ãã®ããã«ã³ã¹ãã®åæžã«å¹æçã§ããã€ã察å¿ãç°¡åãªFargate Spotã§ãããããŸãé »ç¹ã«ç«ã¡äžãããªããšã€ãããã®ããããŸãã ãšããããšã§ãFargate Spotãå®éã«ãã©ã®ãããã®é »åºŠã§çšŒåãç¶ããã®ããåèµ·åã¯ã©ããããçºçããããšããå®äŸãã玹ä»ããããŸãã äžèšã¯æ¥æ¬ãªãŒãžã§ã³ã§å°ããã³ã³ããã20ã³ã³ããã1é±éèµ·åãããšãã®ã³ã¹ãã§ãã ã³ã¹ã ãšã¯ã¹ãããŒã© ãŒã§ã¿ããšãã»ãŒå
šãŠã®æéã§å®å®ããŠèµ·åããŠãããç¹å®ã®ææ¥ãæé垯ã«å€§èŠæš¡ã«äžæãã€ã¥ãããšããããšã¯ãããŸããã§ããïŒ ã¢ãã€ã©ããªã㣠ãŒãŸãŒã³ IDã¯apne1-az4ã䜿çšããŸããïŒã äžæ¹ãããçšåºŠã®é »åºŠã§ã¿ã¹ã¯ã®çµäºã¯çºçããŠããããã°ã確èªãããšããã20ã³ã³ããã§48hã§42ååèµ·åããŠããŸããã1ã³ã³ããåœããã1æ¥äžåçšåºŠã®é »åºŠã«ãªããŸãããªããåèµ·åã¯ç¹å®ã®æéåž¯ã«æããã«åã£ãŠãããšããããšã¯ãããŸããã§ããã ãšããããšã§ãããçšåºŠã®åèµ·åãšã¯åŒãæãã«ãªããŸããã倧å¹
ãªã³ã¹ãåæžãå¯èœãšãªããŸãã ãŸãšã ãšããããšã§ãæ¬æ ŒçãªSpotã®å©çšãšãªããšæ¡çšãé£ãããšããããããšã¯æããŸããããŸããæ§ç¯æãæè¡æ€èšŒæããã©ã€ããŒãç°å¢çããFargate Spotã䜿ã£ãŠã¿ããšããã®ã¯ãããã§ããããïŒ äœ¿ã£ãŠã¿ããšãæå€ãšäžæã¯æ°ã«ãªãããããããã§ã³ã¹ããæå¶ã§ãããããããŸããã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éãæ¢ããŠããŸãã ã¯ã©ãŠã ã¢ãŒããã¯ãã®æ¥åã«èå³ãããæ¹ã®ãå¿åããåŸ
ã¡ããŠããŸãã ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @miura.toshihiko ãã¬ãã¥ãŒïŒ @yamashita.tsuyoshi ïŒ Shodo ã§å·çãããŸãã ïŒ
ISID XïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã®äžæµŠã§ãã çè
ã®é¢ãã£ãŠããæ¡ä»¶ã§ã¯ãã³ã³ããå©çšã AWS Fargateå©çšãé²ããŠãããŸãã 仿¥ã¯ã AWS Fargateã®ã³ã¹ããäžããããã®åãçµã¿äŸã«ã€ããŠã玹ä»ããŸãã ç®æ¬¡ ç®æ¬¡ AWS Fargate Spotãšã¯ïŒ terraformã®ã³ãŒãã§AWS Fargate Spotå¯Ÿå¿ çšŒåçã®äŸ ãŸãšã AWS Fargate Spotãšã¯ïŒ Fargate Spotã¯ãEC2ã¹ããã ã€ã³ã¹ã¿ã³ã¹ ãšåãããã«ã AWS å
ã§æªäœ¿çšã® ã¯ã©ãŠã ãªãœãŒã¹ã掻çšããããšã§ãªã³ããã³ãæéãšæ¯ã¹ãп倧70%ã®å²åŒäŸ¡æ Œã§äžæçã«å©çšã§ãã ã€ã³ã¹ã¿ã³ã¹ ã§ãã Fargate Spotã空ããã£ãã·ãã£ã確ä¿ã§ãããããããŠãŒã¶ãŒã¯æå®ããã¿ã¹ã¯ãèµ·åã§ããŸãã AWS ã«ãã£ãã·ãã£ãå¿
èŠã«ãªã£ããšããFargate Spotã§çšŒåããã¿ã¹ã¯ã¯2ååã®éç¥ãšãšãã«äžæãããŸãã ãã®ãããæ¬çªã§äœ¿ãããšãããšæ§ã
ãªæ€èšãå¿
èŠã§ãããäžæããŠãåé¡ã«ãªããªããããªå°èŠæš¡ã®éçºç°å¢ãæè¡æ€èšŒç°å¢ãªããã¡ãªãããæå°åããŠäœ¿ãããšãã§ããŸãã AWS Fargate ã®æé Amazon ECS åã Fargate Spot ã®æé AWS Fargate ã®æé ãã terraformã®ã³ãŒãã§ AWS Fargate Spotå¯Ÿå¿ terraformã§ecs serviceãå®çŸ©ããŠããå Žåãresource " aws _ecs_service"ã«äžèšã®èµ€æ ã®ã³ãŒãã远å ããã ãã§ãFargate Spot察å¿ãå®äºããŸããæ¬æ¡ä»¶ã§ã¯ãè€æ°ã³ã³ããã䜿çšããŠããã1ã³ã³ãããç«ã¡äžãã仿§ã§ãã äžæãåé¡ã«ãªããªããã§ã€ãºïŒã€ã³ãã©æ
åœè
ãæ§ç¯äžã極äžéšã®éçºè
ã®ã¿ã䜿çšããæ®µéïŒã§ã¯Fargate Spotã§èµ·åããæ¬çšŒåã®ãã§ã€ãºã§ã¯Fargateã«åãæ¿ãããšãã£ãããšãããŠããŸãã ãªããFargate Spotã®ä»æ§ãšããŠã¯ãweightã«ãŠéåžžã®FargateãšFargate Spotã®æ¯çãã³ã³ ãããŒã« ã§ããŸããäŸãã°ã7å²ãfargateã«ã3å²ãspotã«ãããšspotãèœã¡ããããªç¶æ³äžã§ã圱é¿ãéå®ã§ããŸãã ãŸã1ã³ã³ããããååšããªããããªå Žåã§ããweightã1:0 â0:1ã®ããã«åãæ¿ããããšã«ãããéåžžã«å°ããªä¿®æ£ã§Fargate SpotãšFargate ãåãæ¿ããããŸãã ïŒéæ ã®éšå㯠ãã£ãã·ãã£ãŒ ãããã€ããŒã®èšå®ãšã³ã³ããªã¯ããããããåé€ãå¿
èŠã§ãïŒ çšŒåç ã®äŸ ãã®ããã«ã³ã¹ãã®åæžã«å¹æçã§ããã€ã察å¿ãç°¡åãªFargate Spotã§ãããããŸãé »ç¹ã«ç«ã¡äžãããªããšã€ãããã®ããããŸãã ãšããããšã§ãFargate Spotãå®éã«ãã©ã®ãããã®é »åºŠã§çšŒåãç¶ããã®ããåèµ·åã¯ã©ããããçºçããããšããå®äŸãã玹ä»ããããŸãã äžèšã¯æ¥æ¬ãªãŒãžã§ã³ã§å°ããã³ã³ããã20ã³ã³ããã1é±éèµ·åãããšãã®ã³ã¹ãã§ãã ã³ã¹ã ãšã¯ã¹ãããŒã© ãŒã§ã¿ããšãã»ãŒå
šãŠã®æéã§å®å®ããŠèµ·åããŠãããç¹å®ã®ææ¥ãæé垯ã«å€§èŠæš¡ã«äžæãã€ã¥ãããšããããšã¯ãããŸããã§ããïŒ ã¢ãã€ã©ããªã㣠ãŒãŸãŒã³ IDã¯apne1-az4ã䜿çšããŸããïŒã äžæ¹ãããçšåºŠã®é »åºŠã§ã¿ã¹ã¯ã®çµäºã¯çºçããŠããããã°ã確èªãããšããã20ã³ã³ããã§48hã§42ååèµ·åããŠããŸããã1ã³ã³ããåœããã1æ¥äžåçšåºŠã®é »åºŠã«ãªããŸãããªããåèµ·åã¯ç¹å®ã®æéåž¯ã«æããã«åã£ãŠãããšããããšã¯ãããŸããã§ããã ãšããããšã§ãããçšåºŠã®åèµ·åãšã¯åŒãæãã«ãªããŸããã倧å¹
ãªã³ã¹ãåæžãå¯èœãšãªããŸãã ãŸãšã ãšããããšã§ãæ¬æ ŒçãªSpotã®å©çšãšãªããšæ¡çšãé£ãããšããããããšã¯æããŸããããŸããæ§ç¯æãæè¡æ€èšŒæããã©ã€ããŒãç°å¢çããFargate Spotã䜿ã£ãŠã¿ããšããã®ã¯ãããã§ããããïŒ äœ¿ã£ãŠã¿ããšãæå€ãšäžæã¯æ°ã«ãªãããããããã§ã³ã¹ããæå¶ã§ãããããããŸããã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éãæ¢ããŠããŸãã ã¯ã©ãŠã ã¢ãŒããã¯ãã®æ¥åã«èå³ãããæ¹ã®ãå¿åããåŸ
ã¡ããŠããŸãã ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @miura.toshihiko ãã¬ãã¥ãŒïŒ @yamashita.tsuyoshi ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã®å±±äžã§ãã å
¥ç€Ÿããã®ã2021幎ã®10æãªã®ã§ãããã1幎ãšå幎ããããçµéããŸããã 仿¥ã¯å
¥ç€ŸãŸã§ã®çµç·¯ããä»äºã®é°å²æ°ãªã©ã«ã€ããŠãè©±åºæ¥ãã°ãšæããŸãã äŒç€Ÿã®é°å²æ° èªåãåããŠããå°è±¡ã§ã¯ãISIDã¯äŒç€Ÿã®é°å²æ°ãšããŠæææ±ºå®ãçŽ æ©ãæèŠãéãããããšããå°è±¡ããããŸãã çµæãäŒè°ã®æéããšãŠãçã倧å€é©ããŠããŸãã ã³ããçŠã§ã®å
¥ç€Ÿã ã£ãã®ã§ãåºæ¬çã«ãªã¢ãŒãã§ããæ¥åã«åå ããŠããªãã®ã§ãããçããæèŠãã¡ãããšèšã£ãŠãããŸãããŸãèªåãææ¡ããæèŠã«ã€ããŠãçå£ã«è°è«ããŠè²°ããŸãã ãã£ãŠããæ¥åå
容 æ
åœããŠããæ¥åã§ããã瀟å
ã®éçºã«é¢ããæ¹åæŽ»åå
šè¬ãšããæãã§ãã äŸãã°ãCI/CDã®æ®å掻åã§ãã£ããã GitHub ã®Codespacesãªã©ã«ã€ããŠã®æ€èšŒæŽ»åãšãã£ãããšããã£ãŠããŸãã ææã®äžéšã¯ããã¯ããã°ãšããŠå
¬éãããããŠããŸããã ãŸããæ°ããæè¡ãåºãŠãããããããã£ããã¢ããããããã«è©ŠããŠã¿ããšãã£ãããšããã£ãŠããŸãã å
¥ç€Ÿã®çµç·¯ åè·ã§ã¯ãå®¶é»ã¡ãŒã«ãŒã®ç ç©¶éšéã§ãœãããŠã§ã¢éçºã®çç£æ§ã«é¢ããç ç©¶ã瀟å
æœçã®å®æœãªã©ã®æ¥åã«æºãã£ãŠããŸãããäŸãã°ããœãããŠã§ã¢ ãªããžã㪠ã®ãã€ãã³ã°ãCI/CDç°å¢ã®æŽåãªã©ã§ãã åè·ã®æ¥åãããããããããã®ã§ãããããããäŒç€ŸèŠæš¡ã倧ããäŒç€Ÿãšããããšãããæ®µã
ãšãããžã¡ã³ãã«é¢ããæ¥åãå¢ããã¹ãã«ãªã©ããããžã¡ã³ãç³»ã®èœåã䌞ã°ããŠããããšãæåŸ
ãããããã«ãªã£ãŠããŸããã ããå°ãæè¡ã«è§ŠããŠããæéãå¢ãããäŒç€Ÿãæ¢ããŠãããšããISIDãç¥äººã«ç޹ä»ãããŠãèªåãè¯ããããšæã£ãŠè»¢è·ã決ããŸããã å
¥ç€Ÿåã«äžå®ã ã£ãããšãå®é å
¥ç€Ÿåã«äžå®ã«æããŠãããã®ã¯ä»¥äžã®ãããªç©ã§ããã æè¡åã®äžè¶³ æ¥åç¥èãæ¥çã®åžžèã®äžè¶³ ãã©ã€ããŒãã®æéã®ç¢ºä¿ ããããã«ã€ããŠäžå®ãšå®éã©ãã ã£ããã«ã€ããŠèŠãŠãããŸãã æè¡åã®äžè¶³ åè·ã§ã¯ç ç©¶è·ã§ãISIDã«å
¥ç€Ÿãããšæè¡è·ã«ãªããŸããããã¯äŒŒãŠããé¢ã¯ãããŸããéããã®ã§ãããšèªåã¯æã£ãŠããŸããäŸãã°ã補åéçºãæåããæåŸãŸã§å
šéšããåããšãã£ãçµéšã¯ç ç©¶è·ã ãšãªããªãçµéšã§ããŸããã ãªã®ã§ãå®éã®éçºã§åœ¹ã«ç«ã€ãããªç¥èãèªåãæã£ãŠãããäžå®ã§ããã ç¹ã«å
¥ç€Ÿåããæè¡ããªãŒãããŠããç«å ŽãšããŠãã¡ã³ãã«æè¡ãæããç«å Žã§ããããšãæåŸ
ãããŠããŸãããäžæããããã®ãäžå®ãæã£ãŠããŸãããçµè«ããèšããšãããã¯ææã ã£ãããã§ãã æè¡çãªåŽé¢ã«ã€ããŠã¯ãæããå Žé¢ã§ã¯é«åºŠãªæè¡ã®ç¥èãå¿
èŠãšããããã¯åºæ¬çãªç¥èãããã°ååã§ãããäŸãã°èšç®æ©ã«é¢ããåºæ¬çãªç¥èã Linux ã®æäœã«é¢ããäžéãã®ç¥èãªã©ã§ãããªã®ã§ä»ã®ãšããèªåã®æè¡ã®èœåãäžè¶³ããŠããŠå°ã£ããšããå Žé¢ã«ã¯ééããŠããŸããã ãŸããISIDã§ã¯ç¥ããªãæè¡ãããå Žåã«ã¯ãã®ç¥èãç²åŸããããã®æéãå匷ããå Žãæºåãããäœå¶ã«ãªã£ãŠããŸããç¥èäžè¶³ã§æ¥åã«æ¯éãåºããšããããšã¯çºçããªãããã§ãã æ¥åç¥èãæ¥çã®åžžèã®äžè¶³ åè·ã§SIã®ãããªä»äºãšå
šãç¡é¢ä¿ãšããããšã¯ãªãã£ãã®ã§ãããããåœäºè
ãšãªããšæ¥çã® ãã¡ã€ã³ ç¥èãååã§ããããšãããšããªãçåã§ãããå
¥ç€ŸããŠ1幎çµã¡ãŸãããéå»ã®çµéšãçããŠããå Žé¢ããããŸããããã¯ãåãããªã話ããããŸãããã®å Žåã瀟å
ã§è³ªåããã°æããŠããããã®ã§å€§å€å©ãã£ãŠããŸããçããŸããããšãããããŸãã éã«åè·ã®çµéšã«åŒã£åŒµãããŠããŸãå Žé¢ãå€ãããŸã ãŸã å匷ããããšã¯å€ããªãšæããŠããŸãã ãã©ã€ããŒãã®æéã®ç¢ºä¿ åè·ã§ã¯æ¥åæéãããé·ããªãåŸåã«ãããŸããããã©ã€ããŒãã®æéã«åœ±é¿ãåºãã»ã©ã§ã¯ãªãã£ãã®ã§ãããISIDã«å
¥ç€ŸããŠããã¯ãã©ã€ããŒãã®æéã倧å¹
ã«åããããã«ãªããŸãããåè·ãšæ¯èŒããŠäŒè°ã®æéãæžããå¹ççãªåãæ¹ãå¯èœã«ãªã£ããããšèªåã§ã¯åæããŠããŸãã ãŸããåè·ã§ã¯8æéãšèšå®ãããŠããæšæºã®åŽåæéãISIDã§ã¯7æéãšãªã£ãŠãããçŽç²ã«1æéã»ã©ãã©ã€ããŒãã®æéã確ä¿ãããããªããŸããã åè·ãšåãæ¹ã§å€ãã£ãäº æ¥åäžã®ç®æšã¯åè·ã§äžçªå€åããç¹ã¯æææ±ºå®ãæ©ããªããäœæ¥æéã®ç¢ºä¿ãæ¯èŒç容æã«ãªã£ãã®ã§ æè¡çãªèª¿æ»ãæ€èšŒãšãã£ãæéã確ä¿ã§ããããã«ãªã£ãã®ãäžçªã®å€åã ãšèããŠããŸãã åè·ã§ã¯äŒç€Ÿã®èŠæš¡ã倧ããã£ããããå©å®³é¢ä¿è
ãå€ããªãåŸåã«ãããŸããã çµæãšããŠè³æäœæãäŒè°ãå€ããªãå®éã®æè¡ã«äœ¿ããæéã¯éãããŠããŸããã ISIDã«å
¥ç€ŸããŠããã¯ãå©å®³é¢ä¿è
ãå°ãªãæææ±ºå®ãæ©ãããšãã調æŽã®çºã®äŒè°ãããã«åããè³æã®äœæ ãšãã£ãæéãæžããæè¡çãªèª¿æ»ãæ€èšŒã®æéãå¢ããŠããŸãã äžæ¹ã§ãæææ±ºå®ãå©å®³é¢ä¿è
ãå°ãªããèªåã®å€æãäŒç€Ÿã«åœ±é¿ãäžããæ¯çã倧ãããªããŸããããã®ãã責任ãæããå Žé¢ãå¢ãããªãšããå°è±¡ããããŸããæ°ãåŒãç· ããŠä»äºã«èšãŸãªããšãããªãå Žé¢ã¯å¢ãããããããŸããã ããã¯ãèªåãšããŠã¯ããããããšããããŸã§ã®ææ°ãæžã£ãã®ã§è¯ãã£ãããªãšèããŠããŸããæææ±ºå®ã®æ©ãã«ã€ããŠã¯1幎åçµã£ãä»ã§ãé©ããããäºãå€ãã®ã§ããŸã ãŸã æ
£ããå¿
èŠã ãªãšèããŠããŸãã æåŸã« ä»åã¯ãISIDã«å
¥ç€ŸããŠ1幎åçµã£ãèªåã®å
¥ç€Ÿåã®äžå®ãåãæ¹ã®å€åã«ã€ããŠç°¡åã«ã§ããæ¯ãè¿ã£ãŠã¿ãŸããã ãããISIDã«ãèå³ãããæ¹ã¯æ¯éå¿åããŠã¿ãŠãã ããã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éãæ¢ããŠããŸããä»åã®ãšã³ããªã§ç޹ä»ãããããªä»äºã«èå³ã®ããæ¹ããå¿åãåŸ
ã¡ããŠããŸãã ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ã å·çïŒ @yamashita.tsuyoshi ãã¬ãã¥ãŒïŒ @handa.kenta ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã®å±±äžã§ãã å
¥ç€Ÿããã®ã2021幎ã®10æãªã®ã§ãããã1幎ãšå幎ããããçµéããŸããã 仿¥ã¯å
¥ç€ŸãŸã§ã®çµç·¯ããä»äºã®é°å²æ°ãªã©ã«ã€ããŠãè©±åºæ¥ãã°ãšæããŸãã äŒç€Ÿã®é°å²æ° èªåãåããŠããå°è±¡ã§ã¯ãISIDã¯äŒç€Ÿã®é°å²æ°ãšããŠæææ±ºå®ãçŽ æ©ãæèŠãéãããããšããå°è±¡ããããŸãã çµæãäŒè°ã®æéããšãŠãçã倧å€é©ããŠããŸãã ã³ããçŠã§ã®å
¥ç€Ÿã ã£ãã®ã§ãåºæ¬çã«ãªã¢ãŒãã§ããæ¥åã«åå ããŠããªãã®ã§ãããçããæèŠãã¡ãããšèšã£ãŠãããŸãããŸãèªåãææ¡ããæèŠã«ã€ããŠãçå£ã«è°è«ããŠè²°ããŸãã ãã£ãŠããæ¥åå
容 æ
åœããŠããæ¥åã§ããã瀟å
ã®éçºã«é¢ããæ¹åæŽ»åå
šè¬ãšããæãã§ãã äŸãã°ãCI/CDã®æ®å掻åã§ãã£ããã GitHub ã®Codespacesãªã©ã«ã€ããŠã®æ€èšŒæŽ»åãšãã£ãããšããã£ãŠããŸãã ææã®äžéšã¯ããã¯ããã°ãšããŠå
¬éãããããŠããŸããã ãŸããæ°ããæè¡ãåºãŠãããããããã£ããã¢ããããããã«è©ŠããŠã¿ããšãã£ãããšããã£ãŠããŸãã å
¥ç€Ÿã®çµç·¯ åè·ã§ã¯ãå®¶é»ã¡ãŒã«ãŒã®ç ç©¶éšéã§ãœãããŠã§ã¢éçºã®çç£æ§ã«é¢ããç ç©¶ã瀟å
æœçã®å®æœãªã©ã®æ¥åã«æºãã£ãŠããŸãããäŸãã°ããœãããŠã§ã¢ ãªããžã㪠ã®ãã€ãã³ã°ãCI/CDç°å¢ã®æŽåãªã©ã§ãã åè·ã®æ¥åãããããããããã®ã§ãããããããäŒç€ŸèŠæš¡ã倧ããäŒç€Ÿãšããããšãããæ®µã
ãšãããžã¡ã³ãã«é¢ããæ¥åãå¢ããã¹ãã«ãªã©ããããžã¡ã³ãç³»ã®èœåã䌞ã°ããŠããããšãæåŸ
ãããããã«ãªã£ãŠããŸããã ããå°ãæè¡ã«è§ŠããŠããæéãå¢ãããäŒç€Ÿãæ¢ããŠãããšããISIDãç¥äººã«ç޹ä»ãããŠãèªåãè¯ããããšæã£ãŠè»¢è·ã決ããŸããã å
¥ç€Ÿåã«äžå®ã ã£ãããšãå®é å
¥ç€Ÿåã«äžå®ã«æããŠãããã®ã¯ä»¥äžã®ãããªç©ã§ããã æè¡åã®äžè¶³ æ¥åç¥èãæ¥çã®åžžèã®äžè¶³ ãã©ã€ããŒãã®æéã®ç¢ºä¿ ããããã«ã€ããŠäžå®ãšå®éã©ãã ã£ããã«ã€ããŠèŠãŠãããŸãã æè¡åã®äžè¶³ åè·ã§ã¯ç ç©¶è·ã§ãISIDã«å
¥ç€Ÿãããšæè¡è·ã«ãªããŸããããã¯äŒŒãŠããé¢ã¯ãããŸããéããã®ã§ãããšèªåã¯æã£ãŠããŸããäŸãã°ã補åéçºãæåããæåŸãŸã§å
šéšããåããšãã£ãçµéšã¯ç ç©¶è·ã ãšãªããªãçµéšã§ããŸããã ãªã®ã§ãå®éã®éçºã§åœ¹ã«ç«ã€ãããªç¥èãèªåãæã£ãŠãããäžå®ã§ããã ç¹ã«å
¥ç€Ÿåããæè¡ããªãŒãããŠããç«å ŽãšããŠãã¡ã³ãã«æè¡ãæããç«å Žã§ããããšãæåŸ
ãããŠããŸãããäžæããããã®ãäžå®ãæã£ãŠããŸãããçµè«ããèšããšãããã¯ææã ã£ãããã§ãã æè¡çãªåŽé¢ã«ã€ããŠã¯ãæããå Žé¢ã§ã¯é«åºŠãªæè¡ã®ç¥èãå¿
èŠãšããããã¯åºæ¬çãªç¥èãããã°ååã§ãããäŸãã°èšç®æ©ã«é¢ããåºæ¬çãªç¥èã Linux ã®æäœã«é¢ããäžéãã®ç¥èãªã©ã§ãããªã®ã§ä»ã®ãšããèªåã®æè¡ã®èœåãäžè¶³ããŠããŠå°ã£ããšããå Žé¢ã«ã¯ééããŠããŸããã ãŸããISIDã§ã¯ç¥ããªãæè¡ãããå Žåã«ã¯ãã®ç¥èãç²åŸããããã®æéãå匷ããå Žãæºåãããäœå¶ã«ãªã£ãŠããŸããç¥èäžè¶³ã§æ¥åã«æ¯éãåºããšããããšã¯çºçããªãããã§ãã æ¥åç¥èãæ¥çã®åžžèã®äžè¶³ åè·ã§SIã®ãããªä»äºãšå
šãç¡é¢ä¿ãšããããšã¯ãªãã£ãã®ã§ãããããåœäºè
ãšãªããšæ¥çã® ãã¡ã€ã³ ç¥èãååã§ããããšãããšããªãçåã§ãããå
¥ç€ŸããŠ1幎çµã¡ãŸãããéå»ã®çµéšãçããŠããå Žé¢ããããŸããããã¯ãåãããªã話ããããŸãããã®å Žåã瀟å
ã§è³ªåããã°æããŠããããã®ã§å€§å€å©ãã£ãŠããŸããçããŸããããšãããããŸãã éã«åè·ã®çµéšã«åŒã£åŒµãããŠããŸãå Žé¢ãå€ãããŸã ãŸã å匷ããããšã¯å€ããªãšæããŠããŸãã ãã©ã€ããŒãã®æéã®ç¢ºä¿ åè·ã§ã¯æ¥åæéãããé·ããªãåŸåã«ãããŸããããã©ã€ããŒãã®æéã«åœ±é¿ãåºãã»ã©ã§ã¯ãªãã£ãã®ã§ãããISIDã«å
¥ç€ŸããŠããã¯ãã©ã€ããŒãã®æéã倧å¹
ã«åããããã«ãªããŸãããåè·ãšæ¯èŒããŠäŒè°ã®æéãæžããå¹ççãªåãæ¹ãå¯èœã«ãªã£ããããšèªåã§ã¯åæããŠããŸãã ãŸããåè·ã§ã¯8æéãšèšå®ãããŠããæšæºã®åŽåæéãISIDã§ã¯7æéãšãªã£ãŠãããçŽç²ã«1æéã»ã©ãã©ã€ããŒãã®æéã確ä¿ãããããªããŸããã åè·ãšåãæ¹ã§å€ãã£ãäº æ¥åäžã®ç®æšã¯åè·ã§äžçªå€åããç¹ã¯æææ±ºå®ãæ©ããªããäœæ¥æéã®ç¢ºä¿ãæ¯èŒç容æã«ãªã£ãã®ã§ æè¡çãªèª¿æ»ãæ€èšŒãšãã£ãæéã確ä¿ã§ããããã«ãªã£ãã®ãäžçªã®å€åã ãšèããŠããŸãã åè·ã§ã¯äŒç€Ÿã®èŠæš¡ã倧ããã£ããããå©å®³é¢ä¿è
ãå€ããªãåŸåã«ãããŸããã çµæãšããŠè³æäœæãäŒè°ãå€ããªãå®éã®æè¡ã«äœ¿ããæéã¯éãããŠããŸããã ISIDã«å
¥ç€ŸããŠããã¯ãå©å®³é¢ä¿è
ãå°ãªãæææ±ºå®ãæ©ãããšãã調æŽã®çºã®äŒè°ãããã«åããè³æã®äœæ ãšãã£ãæéãæžããæè¡çãªèª¿æ»ãæ€èšŒã®æéãå¢ããŠããŸãã äžæ¹ã§ãæææ±ºå®ãå©å®³é¢ä¿è
ãå°ãªããèªåã®å€æãäŒç€Ÿã«åœ±é¿ãäžããæ¯çã倧ãããªããŸããããã®ãã責任ãæããå Žé¢ãå¢ãããªãšããå°è±¡ããããŸããæ°ãåŒãç· ããŠä»äºã«èšãŸãªããšãããªãå Žé¢ã¯å¢ãããããããŸããã ããã¯ãèªåãšããŠã¯ããããããšããããŸã§ã®ææ°ãæžã£ãã®ã§è¯ãã£ãããªãšèããŠããŸããæææ±ºå®ã®æ©ãã«ã€ããŠã¯1幎åçµã£ãä»ã§ãé©ããããäºãå€ãã®ã§ããŸã ãŸã æ
£ããå¿
èŠã ãªãšèããŠããŸãã æåŸã« ä»åã¯ãISIDã«å
¥ç€ŸããŠ1幎åçµã£ãèªåã®å
¥ç€Ÿåã®äžå®ãåãæ¹ã®å€åã«ã€ããŠç°¡åã«ã§ããæ¯ãè¿ã£ãŠã¿ãŸããã ãããISIDã«ãèå³ãããæ¹ã¯æ¯éå¿åããŠã¿ãŠãã ããã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éãæ¢ããŠããŸããä»åã®ãšã³ããªã§ç޹ä»ãããããªä»äºã«èå³ã®ããæ¹ããå¿åãåŸ
ã¡ããŠããŸãã ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ã å·çïŒ @yamashita.tsuyoshi ãã¬ãã¥ãŒïŒ @handa.kenta ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ããã« ISID XïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã®äžæµŠã§ãã æš©éã®åé¡ã§ã·ã¹ãã éšéã§ã®äœæ¥ãå¿
èŠã ã£ãã®ã§ãããããããã·ã¹ãã éšéã§ã®äœæ¥ãå®äºããåŒç€Ÿã§ã AWS Chatbotã Microsoft Teamsã§ã䜿ããããã«ãªããŸããã ãšããããšã§ä»ããæããããŸãããã·ã¹ãã éšéã®äœæ¥åã®ç¶æ
ãäœæ¥åŸã®äžè¬ãŠãŒã¶ãŒã«ããèšå®äŸãå©ç𿹿³ã«ã€ããŠèšè¿°ããããšæããŸãã ç®æ¬¡ ã¯ããã« ç®æ¬¡ AWS Chatbot ã®æŠèŠ ã·ã¹ãã éšéã®äœæ¥åã®ç¶æ
äœæ¥åŸã®äžè¬ãŠãŒã¶ãŒã«ããèšå®äŸ å©çšäŸ ãšã€ãªã¢ã¹ã®å©çš ãŸãšã AWS Chatbot ã®æŠèŠ ç°¡æãªäœæ¥ã§Teamsçãã AWS ã®æäœãå¯èœã«ããæ©èœã§ããåæ§ã®ããšã¯ã AWS Lambdaãwebhookãå©çšããã°å®è£
å¯èœã§ãããã AWS Chatbotã«ãã£ãŠéåžžã«ç°¡æã«ã§ããããã«ãªããŸããã çè
ã®å Žåãéçºç°å¢ããã¢ç°å¢ã®ç«ã¡äžããç°¡æã«ãããããšããããŒãºããããŸããã ãšã³ãžãã¢ã察象ã®å Žåã¯ãèªèº«ã§ AWS ã³ã³ãœãŒã«ããç«ã¡äžããããã«ããã ã¹ã¯ãªãã ã§èµ·åãããšãã£ãæãåããŸããããããéãšã³ãžãã¢ãå€ãå ŽåãäŸé ŒãåããŠéçšãšã³ãžãã¢ãèµ·åããã忢ãããšããéçšãããŠããäŸããããŸããã ãããã®åé¡ã AWS Chatbotã䜿çšããŠå¯Ÿå¿ããäŸã瀺ããŸãã ã·ã¹ãã éšéã®äœæ¥åã®ç¶æ
äžèšã®èŠé ã§ããTeamsã¯ã©ã€ã¢ã³ã ïŒ ã¢ããªãïŒ AWS ã§æ€çŽ¢ ïŒ ããŒã ã«è¿œå ãã§ã¢ããªã®ç»é²ã詊ã¿ãŸãã ããããªãããããã³ãã®èšå®ç¶æ³ã®åé¡ã§ã¢ããªã䜿ããªãç¶æ
ã§ããã äžèšã®æšãã·ã¹ãã éšéã«ç³è«ããã¢ããªã®æ¿èªããã³ AWS ããã®ã¢ã¯ã»ã¹æš©ä»äžã察å¿ããŠããã ããŸããã æ¬äœæ¥ã¯ãå€ãã®ããã³ãã§ã¯äžè¬ãŠãŒã¶ãŒã«æš©éè§£æŸãããŠããªããšæããŸãã®ã§ãã·ã¹ãã éšéã«å®æœããŠããã ãå¿
èŠããããŸãã äœæ¥åŸã®äžè¬ãŠãŒã¶ãŒã«ããèšå®äŸ äžèšã®å¯Ÿå¿ãæžãã§ããå Žåãäžèšç»é¢ããå
ã«é²ããŸãã 飿ºãããã£ãã«ãéžæããŸãã ããããprivateãã£ãã«ã¯è¡šç€ºãããªãã5å以äžã®ãã£ãã«ã¯è¡šç€ºãããªãïŒteamå+ãã£ãã«åã§çµã蟌ããŸãïŒãªã©ã®ããçã®ããåããããããã§ãã 飿ºãçµãããšãäžèšã®ããã«ã¡ãã»ãŒãžãæçš¿ãããŸãã ç¶ããŠã AWS ã¢ã«ãŠã³ãåŽã§ AWS Chatbot ã®èšå®ãè¡ã£ãŠãããŸãã ãŸãããã£ãã«æ
å ±ã AWS Chatbot ã§èšå®ããå¿
èŠããããŸããã§ãã®ã§ã Microsoft Teams ã®ãã£ãã«äžèЧãã察象ãã£ãã«ãå³ã¯ãªãã¯ãããã£ãã«ãžã®ãªã³ã¯ãååŸãã¡ãã¥ãŒãã URL ãååŸããŸãã ç¶ããŠã AWS ã³ã³ãœãŒã«ã«ãã°ã€ã³ãã AWS Chatbot ã³ã³ãœãŒã«ãéããŸãã ãã£ããã¯ã©ã€ã¢ã³ãèšå®ç»é¢ã§ Microsoft Teams ãéžæã§ããããã«ãªã£ãŠããã®ã§ãéžæããŸãã å
ã»ã©ååŸãã察象ãã£ãã«ã® URL ãèšå®ããŸãã çµç¹ãšããŠèªèšŒæžã¿ã®ãããç¹ã«èªèšŒç»é¢ãåºãããšãªãå®äºããŸãã ç¶ããŠããã£ãã«ç»é²ãããŸãã ãã£ãã«åã®è¡šèšãURL ãšã³ã³ãŒã ã§è¡šç€ºãããŠããŠèŠãç®ãæªãã§ãããåé¡ãªãåäœããŸãã æ¬¡ã«ãã®ãã£ãããããã§äœãã§ãããæš©éãæå®ããŸãã äžèšã®ããã«ãããã€ãããŒã«ã®ãã³ãã¬ãŒããããã®ã§ããããããã§ã¯éãããæš©éãããããŸããã ãã®ãããäžèšã®èšå®ããæ°èŠã«ããŒã«ãäœæããŸãã ãä¿¡é Œããããšã³ãã£ãã£ãã« AWS Chatbotãéžã³ ä»åã¯ec2ã®èµ·åã忢ãããããããäžæŠéã«Ec2FullAccessãæå®ããŸããå®éã«å©çšããããšãã¯ããã®ãã£ãã«ã®å©çšè
ã®ããŒã«ã«å¿ããŠæš©éãèšå®ããã®ãããã§ãããã ãã®ããã«ããŠäœæããIAMããŒã«ã«ã¯ãchatbotã«å¯Ÿããä¿¡é Œé¢ä¿ãèšå®ãããŠããŸãã æ¬ããŒã«ãå
ã®ç»é¢ã§èšå®ãããã£ãã«ã¬ãŒãã¬ãŒã«ããªã·ãŒã«ãåçã®æš©éã§ããEc2FullAccessãæå®ããŸãã ããã§ãchatbotã®èšå®ãå®äºããŸããã å©çšäŸ ããã§ã¯ãchatbotãå©çšããŠã¿ãŸãããã chatbotã®æ§æã¯ãã»ãŒã aws cli ãšåãã§ãã ãšããããšã§ã ã€ã³ã¹ã¿ã³ã¹ ã®èµ·åã詊ã¿ãŸãã ååå©çšã®ããããªãŒãžã§ã³ãèšå®ãããšèšãããŠããŸããŸããã ãšããããšã§chatbotäžã§ãªãŒãžã§ã³ãèšå®ããŸãã å床ã³ãã³ããå®è¡ãããšãæ¬åœã«ãã®ã³ãã³ããæµããŠããããšèãããããå®è¡ããŸãã ã³ãã³ããå®è¡ãããŸããã AWS ã³ã³ããŒã«ã§ç¢ºèªãããšããã ã€ã³ã¹ã¿ã³ã¹ ãèµ·åããŠããããšã確èªã§ããŸããã åæ§ã®æé ã§ ã€ã³ã¹ã¿ã³ã¹ ã®åæ¢ãå¯èœã§ãã ãšã€ãªã¢ã¹ ã®å©çš ãã AWS CLI ã«çžåœãããã®ãTeamäžã§å©ããšããã®ã¯æ·å±
ãé«ãããã ãšã€ãªã¢ã¹ ãèšå®ããŸãã äžèšã®ãããªèŠé ã§ ãšã€ãªã¢ã¹ ã®äœæãå¯èœã§ãã éå§ã忢çšã® ãšã€ãªã¢ã¹ ãäœæããã®ã§ããã£ãã詊ããŸãã ãšã€ãªã¢ã¹ ã䜿çšããŠç°å¢1ãç«ã¡äžãããšåœãããšãããå®éã«å®è¡ããã³ãã³ããå±éãããŠè¡šç€ºãããŸããã 䟿å©ã§ããã ã§ãå®è¡ãããšãäžèšã®ããã«ã³ãã³ããå®è¡ãããŸãã ãªããæ¥æ¬èªã§ã® ãšã€ãªã¢ã¹ ã¯èšå®ã§ããŸããã§ããã ãŸãšã ãã®ããã«ããŠãç°¡æã«Teamsãã AWS ã® ã€ã³ã¹ã¿ã³ã¹ ã®éå§ã忢ãã§ããããã«ãªããŸãããéãšã³ãžãã¢ã«ãšã£ãŠéåžžã«è¯ãæ©èœãªã®ã§ã¯ãªãããšæã£ãŠããŸãã å·çïŒ @miura.toshihiko ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ããã« ISID XïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã®äžæµŠã§ãã æš©éã®åé¡ã§ã·ã¹ãã éšéã§ã®äœæ¥ãå¿
èŠã ã£ãã®ã§ãããããããã·ã¹ãã éšéã§ã®äœæ¥ãå®äºããåŒç€Ÿã§ã AWS Chatbotã Microsoft Teamsã§ã䜿ããããã«ãªããŸããã ãšããããšã§ä»ããæããããŸãããã·ã¹ãã éšéã®äœæ¥åã®ç¶æ
ãäœæ¥åŸã®äžè¬ãŠãŒã¶ãŒã«ããèšå®äŸãå©ç𿹿³ã«ã€ããŠèšè¿°ããããšæããŸãã ç®æ¬¡ ã¯ããã« ç®æ¬¡ AWS Chatbot ã®æŠèŠ ã·ã¹ãã éšéã®äœæ¥åã®ç¶æ
äœæ¥åŸã®äžè¬ãŠãŒã¶ãŒã«ããèšå®äŸ å©çšäŸ ãšã€ãªã¢ã¹ã®å©çš ãŸãšã AWS Chatbot ã®æŠèŠ ç°¡æãªäœæ¥ã§Teamsçãã AWS ã®æäœãå¯èœã«ããæ©èœã§ããåæ§ã®ããšã¯ã AWS Lambdaãwebhookãå©çšããã°å®è£
å¯èœã§ãããã AWS Chatbotã«ãã£ãŠéåžžã«ç°¡æã«ã§ããããã«ãªããŸããã çè
ã®å Žåãéçºç°å¢ããã¢ç°å¢ã®ç«ã¡äžããç°¡æã«ãããããšããããŒãºããããŸããã ãšã³ãžãã¢ã察象ã®å Žåã¯ãèªèº«ã§ AWS ã³ã³ãœãŒã«ããç«ã¡äžããããã«ããã ã¹ã¯ãªãã ã§èµ·åãããšãã£ãæãåããŸããããããéãšã³ãžãã¢ãå€ãå ŽåãäŸé ŒãåããŠéçšãšã³ãžãã¢ãèµ·åããã忢ãããšããéçšãããŠããäŸããããŸããã ãããã®åé¡ã AWS Chatbotã䜿çšããŠå¯Ÿå¿ããäŸã瀺ããŸãã ã·ã¹ãã éšéã®äœæ¥åã®ç¶æ
äžèšã®èŠé ã§ããTeamsã¯ã©ã€ã¢ã³ã ïŒ ã¢ããªãïŒ AWS ã§æ€çŽ¢ ïŒ ããŒã ã«è¿œå ãã§ã¢ããªã®ç»é²ã詊ã¿ãŸãã ããããªãããããã³ãã®èšå®ç¶æ³ã®åé¡ã§ã¢ããªã䜿ããªãç¶æ
ã§ããã äžèšã®æšãã·ã¹ãã éšéã«ç³è«ããã¢ããªã®æ¿èªããã³ AWS ããã®ã¢ã¯ã»ã¹æš©ä»äžã察å¿ããŠããã ããŸããã æ¬äœæ¥ã¯ãå€ãã®ããã³ãã§ã¯äžè¬ãŠãŒã¶ãŒã«æš©éè§£æŸãããŠããªããšæããŸãã®ã§ãã·ã¹ãã éšéã«å®æœããŠããã ãå¿
èŠããããŸãã äœæ¥åŸã®äžè¬ãŠãŒã¶ãŒã«ããèšå®äŸ äžèšã®å¯Ÿå¿ãæžãã§ããå Žåãäžèšç»é¢ããå
ã«é²ããŸãã 飿ºãããã£ãã«ãéžæããŸãã ããããprivateãã£ãã«ã¯è¡šç€ºãããªãã5å以äžã®ãã£ãã«ã¯è¡šç€ºãããªãïŒteamå+ãã£ãã«åã§çµã蟌ããŸãïŒãªã©ã®ããçã®ããåããããããã§ãã 飿ºãçµãããšãäžèšã®ããã«ã¡ãã»ãŒãžãæçš¿ãããŸãã ç¶ããŠã AWS ã¢ã«ãŠã³ãåŽã§ AWS Chatbot ã®èšå®ãè¡ã£ãŠãããŸãã ãŸãããã£ãã«æ
å ±ã AWS Chatbot ã§èšå®ããå¿
èŠããããŸããã§ãã®ã§ã Microsoft Teams ã®ãã£ãã«äžèЧãã察象ãã£ãã«ãå³ã¯ãªãã¯ãããã£ãã«ãžã®ãªã³ã¯ãååŸãã¡ãã¥ãŒãã URL ãååŸããŸãã ç¶ããŠã AWS ã³ã³ãœãŒã«ã«ãã°ã€ã³ãã AWS Chatbot ã³ã³ãœãŒã«ãéããŸãã ãã£ããã¯ã©ã€ã¢ã³ãèšå®ç»é¢ã§ Microsoft Teams ãéžæã§ããããã«ãªã£ãŠããã®ã§ãéžæããŸãã å
ã»ã©ååŸãã察象ãã£ãã«ã® URL ãèšå®ããŸãã çµç¹ãšããŠèªèšŒæžã¿ã®ãããç¹ã«èªèšŒç»é¢ãåºãããšãªãå®äºããŸãã ç¶ããŠããã£ãã«ç»é²ãããŸãã ãã£ãã«åã®è¡šèšãURL ãšã³ã³ãŒã ã§è¡šç€ºãããŠããŠèŠãç®ãæªãã§ãããåé¡ãªãåäœããŸãã æ¬¡ã«ãã®ãã£ãããããã§äœãã§ãããæš©éãæå®ããŸãã äžèšã®ããã«ãããã€ãããŒã«ã®ãã³ãã¬ãŒããããã®ã§ããããããã§ã¯éãããæš©éãããããŸããã ãã®ãããäžèšã®èšå®ããæ°èŠã«ããŒã«ãäœæããŸãã ãä¿¡é Œããããšã³ãã£ãã£ãã« AWS Chatbotãéžã³ ä»åã¯ec2ã®èµ·åã忢ãããããããäžæŠéã«Ec2FullAccessãæå®ããŸããå®éã«å©çšããããšãã¯ããã®ãã£ãã«ã®å©çšè
ã®ããŒã«ã«å¿ããŠæš©éãèšå®ããã®ãããã§ãããã ãã®ããã«ããŠäœæããIAMããŒã«ã«ã¯ãchatbotã«å¯Ÿããä¿¡é Œé¢ä¿ãèšå®ãããŠããŸãã æ¬ããŒã«ãå
ã®ç»é¢ã§èšå®ãããã£ãã«ã¬ãŒãã¬ãŒã«ããªã·ãŒã«ãåçã®æš©éã§ããEc2FullAccessãæå®ããŸãã ããã§ãchatbotã®èšå®ãå®äºããŸããã å©çšäŸ ããã§ã¯ãchatbotãå©çšããŠã¿ãŸãããã chatbotã®æ§æã¯ãã»ãŒã aws cli ãšåãã§ãã ãšããããšã§ã ã€ã³ã¹ã¿ã³ã¹ ã®èµ·åã詊ã¿ãŸãã ååå©çšã®ããããªãŒãžã§ã³ãèšå®ãããšèšãããŠããŸããŸããã ãšããããšã§chatbotäžã§ãªãŒãžã§ã³ãèšå®ããŸãã å床ã³ãã³ããå®è¡ãããšãæ¬åœã«ãã®ã³ãã³ããæµããŠããããšèãããããå®è¡ããŸãã ã³ãã³ããå®è¡ãããŸããã AWS ã³ã³ããŒã«ã§ç¢ºèªãããšããã ã€ã³ã¹ã¿ã³ã¹ ãèµ·åããŠããããšã確èªã§ããŸããã åæ§ã®æé ã§ ã€ã³ã¹ã¿ã³ã¹ ã®åæ¢ãå¯èœã§ãã ãšã€ãªã¢ã¹ ã®å©çš ãã AWS CLI ã«çžåœãããã®ãTeamäžã§å©ããšããã®ã¯æ·å±
ãé«ãããã ãšã€ãªã¢ã¹ ãèšå®ããŸãã äžèšã®ãããªèŠé ã§ ãšã€ãªã¢ã¹ ã®äœæãå¯èœã§ãã éå§ã忢çšã® ãšã€ãªã¢ã¹ ãäœæããã®ã§ããã£ãã詊ããŸãã ãšã€ãªã¢ã¹ ã䜿çšããŠç°å¢1ãç«ã¡äžãããšåœãããšãããå®éã«å®è¡ããã³ãã³ããå±éãããŠè¡šç€ºãããŸããã 䟿å©ã§ããã ã§ãå®è¡ãããšãäžèšã®ããã«ã³ãã³ããå®è¡ãããŸãã ãªããæ¥æ¬èªã§ã® ãšã€ãªã¢ã¹ ã¯èšå®ã§ããŸããã§ããã ãŸãšã ãã®ããã«ããŠãç°¡æã«Teamsãã AWS ã® ã€ã³ã¹ã¿ã³ã¹ ã®éå§ã忢ãã§ããããã«ãªããŸãããéãšã³ãžãã¢ã«ãšã£ãŠéåžžã«è¯ãæ©èœãªã®ã§ã¯ãªãããšæã£ãŠããŸãã å·çïŒ @miura.toshihiko ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ä»åã¯UE5ã§ ã³ãªãžã§ã³ ïŒè¡çªïŒå€å®æ©èœã䜿ã£ãŠãèªåã§ééãããã¢ãã NPC ãšã®ç°¡åãªäŒè©±ã·ã¹ãã ãäœæããŠã¿ãŸãã ã¯ããã« UE5ã§ã¯ãã£ãŒã«ãäžã®ããŸããŸãªãªããžã§ã¯ããããã¬ã€ã€ãŒãæäœããã㣠ã©ã¯ ã¿ãŒã« ã³ãªãžã§ã³ å€å®æ©èœãæãããããšãã§ããŸãã ããã«ãããç©äœã«ã㣠ã©ã¯ ã¿ãŒãåœãã£ãæããåãã£ãŠèšå®ããŠãããé åã«ä»ã®ãªããžã§ã¯ãã䟵å
¥ããæãªã©ã«ã ä»»æã®æ©èœãäœæã§ããŸãã ä»åã¯ãã® ã³ãªãžã§ã³ å€å®æ©èœãå©çšããŠäžèš2ã€ã®æ©èœãå®è£
ããŸãã ã㣠ã©ã¯ ã¿ãŒãè¿ã¥ããšéããé ããããšéããèªåãã¢ã®æ©èœ 察象ã㣠ã©ã¯ ã¿ãŒïŒ NPC ïŒã«ãã¬ã€ã€ãŒãè¿ã¥ããä»»æã®ããŒããŒããæŒããšäŒè©±ãè¡ãããæ©èœ æ€èšŒç°å¢/ããŒã« Unreal Engine5.2.0 AWS EC2 Windows _Server-2022-English-Full-Base-2023.01.19 å®è£
æé ãèªåãã¢ç·šãã¿ã€ã ã©ã€ã³ãå©çšãããã¢ã®ã¢ãã¡ãŒã·ã§ã³ã®äœæ ãèªåãã¢ç·šã ã³ãªãžã§ã³ ãå©çšããèªåééã·ã¹ãã ã®äœæ ã NPC äŒè©±ç·šãäŒè©±UIçšã® ãŠã£ãžã§ãã ã®äœæ ã NPC äŒè©±ç·šã ã³ãªãžã§ã³ ãå©çšããäŒè©±UIçšã® ãŠã£ãžã§ãã ã®è¡šç€º ã NPC äŒè©±ç·šã NPC æ¯ã®ã¡ãã»ãŒãžå
容åãæ¿ã 1. ãèªåãã¢ç·šãã¿ã€ã ã©ã€ã³ãå©çšãããã¢ã®ã¢ãã¡ãŒã·ã§ã³ã®äœæ ä»åã¯ThirdPersonãã³ãã¬ãŒããå©çšãããããžã§ã¯ãã§é²ããŠãããŸãã ãŸãåãã«ãã¢ã«äœ¿çšããã¢ã¯ã¿ãŒã®BluePrintãäœæããŸãã ã³ã³ãã³ãããã¯ãŒãããBlueprintClassãéžã³ãActorãéžæããŸããä»åã¯ãBP_Doorããšããååã«ããŸãã ãBP_Doorãã®ç·šéç»é¢ã«å
¥ããŸãã ã³ã³ããŒãã³ã 远å ãã¿ã³ããããStatic Meshãã远å ãããDoorããš åœå ããŸãã å³åŽã®è©³çްããã«ãããStatic Meshã®ã»ã¬ã¯ãããã¯ã¹ã§ã¹ã¿ãŒã¿ãŒã³ã³ãã³ãã®ãSM_Doorããéžã³ãŸãã æ¬¡ã«ãã¢ã®åœããå€å®çšã« ã³ã³ããŒãã³ã 远å ãã¿ã³ããããBox Collisionãã远å ãããã¢ã®å€§ããã«åãããŠå€æŽããŸãã ãŸãã㣠ã©ã¯ ã¿ãŒããã¢ãããæããŠããŸããªããããä»äœã£ããBox Collisionãã®ãããå€å®ãèšå®ãã ã³ãªãžã§ã³ ããªã»ããã®å€ããBlockAllDynamicãã«å€æŽããŸãã ç¶ããŠãäœæãããã¢ã«ã¢ãã¡ãŒã·ã§ã³ãã€ããŠãããŸãã æ¬ã¹ãããã§ã¯ããã¢ã«ã¢ãã¡ãŒã·ã§ã³ãã€ããããšãç®çãªã®ã§ãããããããããããã ã²ãŒã éå§æã«ããã¢ãéãä»çµã¿ãäœæããŸãã ãBP_Doorãã®ã€ãã³ãã°ã©ããéããŸãã ãã€ãã³ã BeginPlayãã®åŸã«ããã¢ã«åããã€ããããã«ã¿ã€ã ã©ã€ã³ã䜿çšããŸãã 以åã®ãã¡ãã®èšäºïŒUE5 x ZBrushã§ã¿ã€ã ã©ã€ã³ã掻çšããã¢ãã¡ãŒã·ã§ã³ãäœæããïŒ ã§ãã¿ã€ã ã©ã€ã³ã«ã€ããŠè©³ãã説æããŠããã®ã§ãä»åã¯å²æããŸãã ãDoorOpenRateããšããååã§ã¿ã€ã ã©ã€ã³ãäœæããããã«ãRateããšãããã©ãã¯ãäœæããäžèšå€ã远å ããŸããã ç§æ°0:å€0 ç§æ°0.5:å€1 ã€ãã³ãã°ã©ãã«æ»ããšãè¿åŽå€ãšããŠãRateããæã€ã¿ã€ã ã©ã€ã³ãã§ããŠããã®ã§ããã€ãã³ã BeginPlayãã®ãã³ãšã€ãªããŸãã æ¬¡ã«ãMake RotatorãããŒããäœæãZ軞ã®å€ãã90ãã«èšå®ããŸããããã¯ãã¢ã90床éãããã®å€ã«ãªããŸãã ãä¹ç®ãããŒãã远å ããäžã®åçã®ããã«äœæããã¿ã€ã ã©ã€ã³ãšã€ãªããŸãã æåŸã«ãSet Relative Rotation(Door)ããéžæãããNew Rotationãã«ã¿ã€ã ã©ã€ã³ããä¹ç®ããå€ãã€ãªããŸãã ã³ã³ãã€ã« ããMapäžã«ãBP_Doorããé
眮ãè¡ããã²ãŒã ãéå§ããããšã§ãã¢ãéãã¢ãã¡ãŒã·ã§ã³ã確èªã§ããŸãã 2. ãèªåãã¢ç·šã ã³ãªãžã§ã³ ãå©çšããèªåééã·ã¹ãã ã®äœæ ããã§ã¯ã ã³ãªãžã§ã³ ãå©çšããŠãã㣠ã©ã¯ ã¿ãŒãè¿ã¥ããšèªåã§éããé¢ãããšèªåã§éãããã¢ã«ããŸãã ã¡ãªã¿ã«å
ã»ã©ãã¢ã«ãBox Collisionãã䜿ããŸããããããã¯ã㣠ã©ã¯ ã¿ãŒããã¢ãéãæããããªãããããã® ã³ãªãžã§ã³ ã®ããã ããããäœãèªåãã¢ã®ç¯å²ã瀺ã ã³ãªãžã§ã³ ãšã¯å¥ã®ãã®ã«ãªããŸãã ãBP_Doorããéããã Sphere Collisionãã远å ããŸãã æ¬¡ã«ãã Sphere Collisionãããã¢ã®äžå¿ãžç§»åãæ¡å€§ãè¡ããã㣠ã©ã¯ ã¿ãŒãå
¥ããšèªåã§ãã¢ãéãé åãèšå®ããŸãã 詳现ããã«ã®ã€ãã³ãæ¬ãããOn Component Begin OverlapããšãOn Component End Overlapãã®å³ã®ãã©ã¹ãã¿ã³ãæŒããŸãã ã€ãã³ãã°ã©ãã«äžã®ãããªããŒããã§ããŠããããšã確èªããŸãã äœæããããOn Component Begin Overlapãããã€ãã³ã BeginPlayããšå
¥ãæ¿ããããšã§ãã㣠ã©ã¯ ã¿ãŒã ã³ãªãžã§ã³ ã§èšå®ããé åã«å
¥ãããšã§ãã¢ãéãæåã«ãªããŸãã ãŸãããOn Component End Overlapããã¿ã€ã ã©ã€ã³ã®ãReverseããã³ã«æ¥ç¶ããããšã§ãã¿ã€ã ã©ã€ã³ã§èšå®ããå€ãšéã®æåãè¡ãããã®ã§ãã㣠ã©ã¯ ã¿ãŒãé åããã§ãéã«ãã¢ãéãŸããŸãã 以äžãã㣠ã©ã¯ ã¿ãŒãè¿ã¥ããšéããé ããããšéããèªåã®ãã¢ã®æ©èœã®ç޹ä»ã«ãªããŸãã 3. ã NPC äŒè©±ç·šãäŒè©±UIçšã® ãŠã£ãžã§ãã ã®äœæ ç¶ããŠã察象ã㣠ã©ã¯ ã¿ãŒïŒ NPC ïŒã«ãã¬ã€ã€ãŒãè¿ã¥ããä»»æã®ããŒããŒããæŒããšäŒè©±ãè¡ãããæ©èœã®äœææé ã玹ä»ããŸãã ãŸãã¯äŒè©±UIã«äœ¿çšãã ãŠã£ãžã§ãã ãäœæããããã«ãã Widget BlueprintãããWBP_ Talk ããšããååã§äœæããŸãã ãŠã£ãžã§ãã ã®äœææ¹æ³ã¯ 以åã®ãã¡ãã®èšäºïŒUE5 PixelStreamingã§ãããŠã¹ã«ãŒãœã«ãå¥ã®ç»åã«å€æŽããŠã¯ãªãã¯ã€ãã³ããäœæããïŒ ã§ç޹ä»ããŠãããŸãã ãŸãã¯ãã¬ããå
ã®äžè¬ãããBorderãããWBP_ Talk ãå
ã« ãã©ãã°&ãããã ããã Canvas Panelãã§ã©ããããŸãã 詳现ããã«ããã¢ã³ã«ãŒãéžã³ãäžã«äŒžã³ãŠãããã®ãéžã³ãŸãã ãBrushãå
ã®ãTintãã®éšåã«ã«ã©ãŒããã«ãŒãããã®ã§ãAïŒã¢ã«ãã¡ïŒãã®å€ãã0.5ããŸã§äžããŠãå
ã»ã©äœæãããBorderããåéæã«ããŸãããµã€ãºãäžã®åçã®ããã«å€§ããããŠç°¡æçãªäŒè©±ããã¹ãã眮ãéšåã®UIãšããŸãã æ¬¡ã«ãã¬ããå
ãããTextããéžã³ãä»äœæãããBorderãå
ã« ãã©ãã°&ãããã ããŸãã 詳现ã¿ãã®ãPaddingãããäžäžå·Šå³äžå€®ãããã«ããŸãããŸãããFontãããæåãµã€ãºãã36ãã«å€æŽããŸãã ããã§äŒè©±UIçšã® ãŠã£ãžã§ãã ãåºæ¥ãŸããã å®éã«ç»é¢ã«è¡šç€ºãããŠã¿ãŸãã ã¹ã¿ãŒã¿ãŒã³ã³ãã³ãã§åæããå
¥ã£ãŠããã㣠ã©ã¯ ã¿ãŒã䜿çšããŸãã ãã¡ã€ã«ã¯ãã³ã³ãã³ãïŒThirdPersonïŒBlueprintsïŒBP_ThirdPersonCharacter ã«ãããŸãã ãŸãã¯ãã®Blueprintãã ãŠã£ãžã§ãã ã«ã¢ã¯ã»ã¹ã§ããããã«èšå®ããŸãã ã ãŠã£ãžã§ãã ãäœæãããŒãã远å ããClass屿§ã«WBP_ Talk ãèšå®ããŸãããŸããOwning Playerãã«ã¯ãGet Player Controllerããã€ãªããŸãã æ¬¡ã« ãŠã£ãžã§ãã ãäœæããŒãããã€ãã³ã BeginPlayãã®ãã³ãšã€ãªããŸãã ãWBP_ Talk ãŠã£ãžã§ãã ãäœæãã®ããŒãã®ãReturn Value ãã倿°ãšããŠã»ãããããUI_ Talk ããš åœå ããŸãã æ¬¡ã« ãQã ãæŒããæã« ãŠã£ãžã§ãã ãç»é¢ã«è¡šç€ºãããããã«ããŸãã ãAdd to Viewport(UI_ Talk )ããéžã³ã ãQã ã®ããŒããšã€ãªããŸãã ããã§å®éã«ç»é¢ã«äŒè©±çšã®UIã衚瀺ããããšãåºæ¥ãŸããã ãããŸã§ã§ãäŒè©±çšã®UIã«å¿
èŠãª ãŠã£ãžã§ãã ã®æºåãæŽããŸããã ç¶ã㊠ã³ãªãžã§ã³ ãå©çšããŠããã¬ã€ã€ãŒãæäœããŠããã㣠ã©ã¯ ã¿ãŒã®åã«ãä»ã®ã㣠ã©ã¯ ã¿ãŒãããæã®ã¿ ãQã ãæŒãããšã§ãäŒè©±çšã®UIãåºãæ©èœãäœæããŸãã 4. ã NPC äŒè©±ç·šã ã³ãªãžã§ã³ ãå©çšããäŒè©±UIçšã® ãŠã£ãžã§ãã ã®è¡šç€º ãŸãã¯ãBP_ThirdPersonCharacterãã®ã㣠ã©ã¯ ã¿ãŒã«ãå
ã»ã©ãã¢ãäœæããæãšåãããã«ã Sphere CollisionããäœæããŸãã ã㣠ã©ã¯ ã¿ãŒã®åæ¹ã«äžã®åçã®ããã«ã Sphere Collisionããé
眮ããŸãã ã€ãã³ãã°ã©ãã«æ»ãããGet Overlapping Actors( Sphere )ããäœæããŸããããã¯å
ã»ã©äœæããã Sphere Collisionãã« æ¥è§Š ããŠããã¢ã¯ã¿ãŒã®äžèЧãé
åã§è¿ããŠãããããŒãã«ãªããŸãã å
ã»ã©äœæãã ãQã ãæŒããåŸã®ããã©ã³ãïŒIFæïŒãã§falseã ã£ãæã«ãFor Each Loop With BreakãããŒãã§ã Sphere Collisionãã« æ¥è§Š ããŠããã¢ã¯ã¿ãŒã®é
åãå±éããŸãã æ¬ã¹ãããã§ã¯ãŸã ã¢ã¯ã¿ãŒããšã«äŒè©±ã®æç« ã®å
容ãåããã ã³ãªãžã§ã³ å
ã«ã¢ã¯ã¿ãŒãããå Žåã®ã¿äŒè©±çšã®UIãåºãã ãã®åŠçãªã®ã§äžã®åçã®ããã«ãAdd to Viewportãã«ã€ãªããé
åããªããªããŸã§ã«ãŒããããŸãã ããã§ã ã³ãªãžã§ã³ å
ã«ã¢ã¯ã¿ãŒã1ã€ã§ãããã°ã ãQã ãæŒãããšã§äŒè©±çšã®UIã衚瀺ã§ããŸãã ãŸãããã®ãŸãŸã ãšäŒè©±çšUIãåºããŸãŸã«ãªã£ãŠããŸãã®ã§ãæ¶å»ããåŠçãäœæããŸãã ãIsTalkããšããBooleanã®å€æ°ãäœæããäŒè©±äžã§ã¯ãªãæã®ã¿ç»é¢ã«äŒè©±çšUIãåºãããã«èšå®ããŸãã ãŸãäŒè©±äžã®å Žåã¯ãç»é¢ããäŒè©±çšUIãæ¶ãããã«ãRemove From ParentãããŒãã远å ããç»é¢ããäŒè©±çšUIãæ¶å»ãããIsTalkãã®ãã©ã°ãfalseã«å€æŽããŸãã å®éã«è©ŠããŠã¿ãããã«ããããã«ããã€ãã¢ã¯ã¿ãŒãèšçœ®ãããŸãã ã©ããªã¢ã¯ã¿ãŒã§ãè¯ãã§ãããä»å㯠NPC 颚ã®äººåã¢ã¯ã¿ãŒãäœæããŠèšçœ®ããŸãã Blueprintäœæç»é¢ããCharacterãéžæããŠãBP_ NPC ããäœæããŸãã ã³ã³ããŒãã³ã äžèЧããããããMeshããéžæãã詳现ããã«ããã¡ãã·ã¥ãéžã³ãŸããä»åã¯ãSK_MannequinããéžæããŸãã ãããªã¢ã«ãä»»æã®ãã®ãéžã³ããããã«é
眮ããŸãã ãããŸã§ã®å®è£
ã§ããã¬ã€ã€ãŒãæäœããã㣠ã©ã¯ ã¿ãŒã®åã«ã¢ã¯ã¿ãŒãããæã®ã¿ã ãQã ãæŒãããšã§ãäŒè©±çšã®UIãåºãŠããåŠçã宿ããŸããã ç¶ããŠããããã«é
眮ãã NPC ããšã«äŒè©±ã®å
容ã倿Žãããæ©èœãäœæã説æããŸãã 5. ã NPC äŒè©±ç·šã NPC æ¯ã®ã¡ãã»ãŒãžå
容åãæ¿ã ãŸãã¯ã¢ã¯ã¿ãŒéãè¶
ããŠå
±éã®äŒè©±çšã®é¢æ°ã䜿çšã§ããããã«ãã«ãŒããªã³ãã€ã³ã¿ãŒãã§ãŒã¹ãäœæããŸãã ã³ã³ãã³ãããã¯ãŒãããã«ãŒããªã³ãã€ã³ã¿ãŒãã§ãŒã¹ãäœæãããBPI_ Talk ããš åœå ããŸãã ç·šéç»é¢ã§ãCanTalkããšããBooleanãè¿ã颿°ãšããGetTalkMessageããšããTextãè¿ã颿°ãäœæããŸãã ãBP_ NPC ãã§2ã€ã®é¢æ°ã䜿çšããããã«ããBP_ NPC ããéãç»é¢äžéšã®ã¯ã©ã¹èšå®ãæŒããå³åŽã®å®è£
ã€ã³ã¿ãŒãã§ãŒã¹ã®ã»ã¬ã¯ãããã¯ã¹ãããBPI_ Talk ããéžæããŸãã å·ŠåŽã«ã€ã³ã¿ãŒãã§ãŒã¹æ¬ã远å ãããå
ã»ã©äœæãã2ã€ã®é¢æ°ãããããšã確èªããŸãã å·ŠåŽã®ã€ã³ã¿ãŒãã§ãŒã¹æ¬ãããCanTalkããããã«ã¯ãªãã¯ã§éããBooleanã®è¿ãå€ãtrueã«èšå®ããŸãã åæ§ã«ãGetTalkMessageããéãããªã¿ãŒã³ããŒãã®Textã®è¿ãå€ã倿°ãšããŠã»ãããããTalkMessageããš åœå ããŸãã ããã«ã倿°æ¬ã®å³åŽã®ç®ã®ã¢ã€ã³ã³ãã¯ãªãã¯ããŠãUEã®å
šäœã®ç·šéç»é¢ããçŽæ¥å€æ°ã®å€ã倿Žã§ããããã«èšå®ããŠãããŸãã æåŸã®ã¹ããããšããŠãBP_ThirdPersonCharacterããéããåã«ããã¢ã¯ã¿ãŒïŒBP_ NPC ïŒããCanTalkãã§trueãè¿ããŠãããããã§ãã¯ããtrueã ã£ãå Žåã«ãTalkMessageãã§ã»ããããæååãäŒè©±çšUIã«åã蟌ãã§è¡šç€ºãããåŠçãäœæããŸãã å
ã»ã©é
åã§ååŸãã ã³ãªãžã§ã³ å
ã®ã¢ã¯ã¿ãŒãForEachã§åããŠããéšåã§ããCanTalkããtrueãã©ãã確èªããããã«ããŒãã远å ããŸãã trueã ã£ãå Žåã«ãããã«ãã®ã¢ã¯ã¿ãŒãèšå®ããŠããäŒè©±ã®å
容ããGetTalkMessageãããååŸããŸãã ïŒBP_ NPC ã¯å
šãŠãCanTalkããtrueã§è¿ãèšå®ãããŠããŸããïŒ ãGetTalkMessageãã®ã¿ãŒã²ããã¯ã¢ã¯ã¿ãŒã®é
åãå
¥ã£ãŠãããArray Elementãã§ãã æ¬¡ã«ååŸããŠããäŒè©±ã®å
容ããWBP_ Talk ãã®äžã«åã蟌ã¿ãŸãã ãWBP_ Talk ããéããéå±€ãããTextããéžæããŸããæ¬¡ã«å³äžã®ãis Variableãã«ãã§ãã¯ãå
¥ããã Widget _TalkMessageããš åœå ããŸãã ãWBP_ Talk ããã°ã©ã衚瀺ã«å€æŽããŠã颿°ãäœæããŸããä»åã¯ã Widget _SetTextMessageããš åœå ããŸãã ã€ã³ãããã«Textãèšå®ããŸãã ãSetText(Text)ãããŒããã€ãªããã¿ãŒã²ããã«ã Widget _TalkMessageããèšå®ããã¿ãŒã²ããã«ãUI_ Talk ããã€ãªããŸãã ãBP_ThirdPersonCharacterãã«æ»ããã Widget _SetTextMessageãããŒããäœæãããGetTalkMessageããšã€ãªããŸãã æåŸã«ãAdd to Viewportããšç¹ãããšã§BlueprintåŽã§ã®åŠçã¯å®äºã§ãã å
šäœã®åŠçã¯äžèšã®ãããªæµãã«ãªã£ãŠããŸãã UEã®ç·šéç»é¢ããã¢ã¯ã¿ãŒãéžæãã詳现ã¿ãã®ã Talk Massageãæ¬ã«ä»»æã®æèšã远å ããããšã§ãã¢ã¯ã¿ãŒããšã«äŒè©±ããå
容ãèšå®ã§ããŸãã å®éã«äŒè©±ãè¡ã£ãŠã¿ãŸãã 以äžã ã³ãªãžã§ã³ æ©èœã䜿ã£ãŠãèªåã§ééãããã¢ãã NPC ãšã®ç°¡åãªäŒè©±ã·ã¹ãã ã®äœææ¹æ³ã®ç޹ä»ã§ãã ææ ã³ãªãžã§ã³ ãå©çšããããšã§ããªããžã§ã¯ããåãããããéãªã£ãã¢ã¯ã¿ãŒã®æ
å ±ãååŸããããšãããŸããŸãªäœ¿ãæ¹ãã§ããããšãããããŸããã ãŸããåºæ¬çãªäŒè©±ã®äœãæ¹ãããã£ãã®ã§ãããè€éãªäŒè©±æ¹æ³ãã ãŠã£ãžã§ãã ã®äœææ¹æ³ãªã©ãåŠç¿ããŠãããŸãã ç¹ã« ãŠã£ãžã§ãã ã§ã§ããããšã¯ãŸã ãŸã ãããããªã®ã§ãããå°ãæ·±ãŒã£ãŠèª¿æ»ããŠãããããšæããŸãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ISIDæ¡çšããŒãžïŒWeb3/ã¡ã¿ããŒã¹/AIïŒ åè https://note.com/ak_schweitzer/n/n2a7b116c8ee8 https://qiita.com/4_mio_11/items/fed86efca7407a7975fb https://www.youtube.com/watch?v=b8AwUvTaCs0& å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ä»åã¯UE5ã§ ã³ãªãžã§ã³ ïŒè¡çªïŒå€å®æ©èœã䜿ã£ãŠãèªåã§ééãããã¢ãã NPC ãšã®ç°¡åãªäŒè©±ã·ã¹ãã ãäœæããŠã¿ãŸãã ã¯ããã« UE5ã§ã¯ãã£ãŒã«ãäžã®ããŸããŸãªãªããžã§ã¯ããããã¬ã€ã€ãŒãæäœããã㣠ã©ã¯ ã¿ãŒã« ã³ãªãžã§ã³ å€å®æ©èœãæãããããšãã§ããŸãã ããã«ãããç©äœã«ã㣠ã©ã¯ ã¿ãŒãåœãã£ãæããåãã£ãŠèšå®ããŠãããé åã«ä»ã®ãªããžã§ã¯ãã䟵å
¥ããæãªã©ã«ã ä»»æã®æ©èœãäœæã§ããŸãã ä»åã¯ãã® ã³ãªãžã§ã³ å€å®æ©èœãå©çšããŠäžèš2ã€ã®æ©èœãå®è£
ããŸãã ã㣠ã©ã¯ ã¿ãŒãè¿ã¥ããšéããé ããããšéããèªåãã¢ã®æ©èœ 察象ã㣠ã©ã¯ ã¿ãŒïŒ NPC ïŒã«ãã¬ã€ã€ãŒãè¿ã¥ããä»»æã®ããŒããŒããæŒããšäŒè©±ãè¡ãããæ©èœ æ€èšŒç°å¢/ããŒã« Unreal Engine5.2.0 AWS EC2 Windows _Server-2022-English-Full-Base-2023.01.19 å®è£
æé ãèªåãã¢ç·šãã¿ã€ã ã©ã€ã³ãå©çšãããã¢ã®ã¢ãã¡ãŒã·ã§ã³ã®äœæ ãèªåãã¢ç·šã ã³ãªãžã§ã³ ãå©çšããèªåééã·ã¹ãã ã®äœæ ã NPC äŒè©±ç·šãäŒè©±UIçšã® ãŠã£ãžã§ãã ã®äœæ ã NPC äŒè©±ç·šã ã³ãªãžã§ã³ ãå©çšããäŒè©±UIçšã® ãŠã£ãžã§ãã ã®è¡šç€º ã NPC äŒè©±ç·šã NPC æ¯ã®ã¡ãã»ãŒãžå
容åãæ¿ã 1. ãèªåãã¢ç·šãã¿ã€ã ã©ã€ã³ãå©çšãããã¢ã®ã¢ãã¡ãŒã·ã§ã³ã®äœæ ä»åã¯ThirdPersonãã³ãã¬ãŒããå©çšãããããžã§ã¯ãã§é²ããŠãããŸãã ãŸãåãã«ãã¢ã«äœ¿çšããã¢ã¯ã¿ãŒã®BluePrintãäœæããŸãã ã³ã³ãã³ãããã¯ãŒãããBlueprintClassãéžã³ãActorãéžæããŸããä»åã¯ãBP_Doorããšããååã«ããŸãã ãBP_Doorãã®ç·šéç»é¢ã«å
¥ããŸãã ã³ã³ããŒãã³ã 远å ãã¿ã³ããããStatic Meshãã远å ãããDoorããš åœå ããŸãã å³åŽã®è©³çްããã«ãããStatic Meshã®ã»ã¬ã¯ãããã¯ã¹ã§ã¹ã¿ãŒã¿ãŒã³ã³ãã³ãã®ãSM_Doorããéžã³ãŸãã æ¬¡ã«ãã¢ã®åœããå€å®çšã« ã³ã³ããŒãã³ã 远å ãã¿ã³ããããBox Collisionãã远å ãããã¢ã®å€§ããã«åãããŠå€æŽããŸãã ãŸãã㣠ã©ã¯ ã¿ãŒããã¢ãããæããŠããŸããªããããä»äœã£ããBox Collisionãã®ãããå€å®ãèšå®ãã ã³ãªãžã§ã³ ããªã»ããã®å€ããBlockAllDynamicãã«å€æŽããŸãã ç¶ããŠãäœæãããã¢ã«ã¢ãã¡ãŒã·ã§ã³ãã€ããŠãããŸãã æ¬ã¹ãããã§ã¯ããã¢ã«ã¢ãã¡ãŒã·ã§ã³ãã€ããããšãç®çãªã®ã§ãããããããããããã ã²ãŒã éå§æã«ããã¢ãéãä»çµã¿ãäœæããŸãã ãBP_Doorãã®ã€ãã³ãã°ã©ããéããŸãã ãã€ãã³ã BeginPlayãã®åŸã«ããã¢ã«åããã€ããããã«ã¿ã€ã ã©ã€ã³ã䜿çšããŸãã 以åã®ãã¡ãã®èšäºïŒUE5 x ZBrushã§ã¿ã€ã ã©ã€ã³ã掻çšããã¢ãã¡ãŒã·ã§ã³ãäœæããïŒ ã§ãã¿ã€ã ã©ã€ã³ã«ã€ããŠè©³ãã説æããŠããã®ã§ãä»åã¯å²æããŸãã ãDoorOpenRateããšããååã§ã¿ã€ã ã©ã€ã³ãäœæããããã«ãRateããšãããã©ãã¯ãäœæããäžèšå€ã远å ããŸããã ç§æ°0:å€0 ç§æ°0.5:å€1 ã€ãã³ãã°ã©ãã«æ»ããšãè¿åŽå€ãšããŠãRateããæã€ã¿ã€ã ã©ã€ã³ãã§ããŠããã®ã§ããã€ãã³ã BeginPlayãã®ãã³ãšã€ãªããŸãã æ¬¡ã«ãMake RotatorãããŒããäœæãZ軞ã®å€ãã90ãã«èšå®ããŸããããã¯ãã¢ã90床éãããã®å€ã«ãªããŸãã ãä¹ç®ãããŒãã远å ããäžã®åçã®ããã«äœæããã¿ã€ã ã©ã€ã³ãšã€ãªããŸãã æåŸã«ãSet Relative Rotation(Door)ããéžæãããNew Rotationãã«ã¿ã€ã ã©ã€ã³ããä¹ç®ããå€ãã€ãªããŸãã ã³ã³ãã€ã« ããMapäžã«ãBP_Doorããé
眮ãè¡ããã²ãŒã ãéå§ããããšã§ãã¢ãéãã¢ãã¡ãŒã·ã§ã³ã確èªã§ããŸãã 2. ãèªåãã¢ç·šã ã³ãªãžã§ã³ ãå©çšããèªåééã·ã¹ãã ã®äœæ ããã§ã¯ã ã³ãªãžã§ã³ ãå©çšããŠãã㣠ã©ã¯ ã¿ãŒãè¿ã¥ããšèªåã§éããé¢ãããšèªåã§éãããã¢ã«ããŸãã ã¡ãªã¿ã«å
ã»ã©ãã¢ã«ãBox Collisionãã䜿ããŸããããããã¯ã㣠ã©ã¯ ã¿ãŒããã¢ãéãæããããªãããããã® ã³ãªãžã§ã³ ã®ããã ããããäœãèªåãã¢ã®ç¯å²ã瀺ã ã³ãªãžã§ã³ ãšã¯å¥ã®ãã®ã«ãªããŸãã ãBP_Doorããéããã Sphere Collisionãã远å ããŸãã æ¬¡ã«ãã Sphere Collisionãããã¢ã®äžå¿ãžç§»åãæ¡å€§ãè¡ããã㣠ã©ã¯ ã¿ãŒãå
¥ããšèªåã§ãã¢ãéãé åãèšå®ããŸãã 詳现ããã«ã®ã€ãã³ãæ¬ãããOn Component Begin OverlapããšãOn Component End Overlapãã®å³ã®ãã©ã¹ãã¿ã³ãæŒããŸãã ã€ãã³ãã°ã©ãã«äžã®ãããªããŒããã§ããŠããããšã確èªããŸãã äœæããããOn Component Begin Overlapãããã€ãã³ã BeginPlayããšå
¥ãæ¿ããããšã§ãã㣠ã©ã¯ ã¿ãŒã ã³ãªãžã§ã³ ã§èšå®ããé åã«å
¥ãããšã§ãã¢ãéãæåã«ãªããŸãã ãŸãããOn Component End Overlapããã¿ã€ã ã©ã€ã³ã®ãReverseããã³ã«æ¥ç¶ããããšã§ãã¿ã€ã ã©ã€ã³ã§èšå®ããå€ãšéã®æåãè¡ãããã®ã§ãã㣠ã©ã¯ ã¿ãŒãé åããã§ãéã«ãã¢ãéãŸããŸãã 以äžãã㣠ã©ã¯ ã¿ãŒãè¿ã¥ããšéããé ããããšéããèªåã®ãã¢ã®æ©èœã®ç޹ä»ã«ãªããŸãã 3. ã NPC äŒè©±ç·šãäŒè©±UIçšã® ãŠã£ãžã§ãã ã®äœæ ç¶ããŠã察象ã㣠ã©ã¯ ã¿ãŒïŒ NPC ïŒã«ãã¬ã€ã€ãŒãè¿ã¥ããä»»æã®ããŒããŒããæŒããšäŒè©±ãè¡ãããæ©èœã®äœææé ã玹ä»ããŸãã ãŸãã¯äŒè©±UIã«äœ¿çšãã ãŠã£ãžã§ãã ãäœæããããã«ãã Widget BlueprintãããWBP_ Talk ããšããååã§äœæããŸãã ãŠã£ãžã§ãã ã®äœææ¹æ³ã¯ 以åã®ãã¡ãã®èšäºïŒUE5 PixelStreamingã§ãããŠã¹ã«ãŒãœã«ãå¥ã®ç»åã«å€æŽããŠã¯ãªãã¯ã€ãã³ããäœæããïŒ ã§ç޹ä»ããŠãããŸãã ãŸãã¯ãã¬ããå
ã®äžè¬ãããBorderãããWBP_ Talk ãå
ã« ãã©ãã°&ãããã ããã Canvas Panelãã§ã©ããããŸãã 詳现ããã«ããã¢ã³ã«ãŒãéžã³ãäžã«äŒžã³ãŠãããã®ãéžã³ãŸãã ãBrushãå
ã®ãTintãã®éšåã«ã«ã©ãŒããã«ãŒãããã®ã§ãAïŒã¢ã«ãã¡ïŒãã®å€ãã0.5ããŸã§äžããŠãå
ã»ã©äœæãããBorderããåéæã«ããŸãããµã€ãºãäžã®åçã®ããã«å€§ããããŠç°¡æçãªäŒè©±ããã¹ãã眮ãéšåã®UIãšããŸãã æ¬¡ã«ãã¬ããå
ãããTextããéžã³ãä»äœæãããBorderãå
ã« ãã©ãã°&ãããã ããŸãã 詳现ã¿ãã®ãPaddingãããäžäžå·Šå³äžå€®ãããã«ããŸãããŸãããFontãããæåãµã€ãºãã36ãã«å€æŽããŸãã ããã§äŒè©±UIçšã® ãŠã£ãžã§ãã ãåºæ¥ãŸããã å®éã«ç»é¢ã«è¡šç€ºãããŠã¿ãŸãã ã¹ã¿ãŒã¿ãŒã³ã³ãã³ãã§åæããå
¥ã£ãŠããã㣠ã©ã¯ ã¿ãŒã䜿çšããŸãã ãã¡ã€ã«ã¯ãã³ã³ãã³ãïŒThirdPersonïŒBlueprintsïŒBP_ThirdPersonCharacter ã«ãããŸãã ãŸãã¯ãã®Blueprintãã ãŠã£ãžã§ãã ã«ã¢ã¯ã»ã¹ã§ããããã«èšå®ããŸãã ã ãŠã£ãžã§ãã ãäœæãããŒãã远å ããClass屿§ã«WBP_ Talk ãèšå®ããŸãããŸããOwning Playerãã«ã¯ãGet Player Controllerããã€ãªããŸãã æ¬¡ã« ãŠã£ãžã§ãã ãäœæããŒãããã€ãã³ã BeginPlayãã®ãã³ãšã€ãªããŸãã ãWBP_ Talk ãŠã£ãžã§ãã ãäœæãã®ããŒãã®ãReturn Value ãã倿°ãšããŠã»ãããããUI_ Talk ããš åœå ããŸãã æ¬¡ã« ãQã ãæŒããæã« ãŠã£ãžã§ãã ãç»é¢ã«è¡šç€ºãããããã«ããŸãã ãAdd to Viewport(UI_ Talk )ããéžã³ã ãQã ã®ããŒããšã€ãªããŸãã ããã§å®éã«ç»é¢ã«äŒè©±çšã®UIã衚瀺ããããšãåºæ¥ãŸããã ãããŸã§ã§ãäŒè©±çšã®UIã«å¿
èŠãª ãŠã£ãžã§ãã ã®æºåãæŽããŸããã ç¶ã㊠ã³ãªãžã§ã³ ãå©çšããŠããã¬ã€ã€ãŒãæäœããŠããã㣠ã©ã¯ ã¿ãŒã®åã«ãä»ã®ã㣠ã©ã¯ ã¿ãŒãããæã®ã¿ ãQã ãæŒãããšã§ãäŒè©±çšã®UIãåºãæ©èœãäœæããŸãã 4. ã NPC äŒè©±ç·šã ã³ãªãžã§ã³ ãå©çšããäŒè©±UIçšã® ãŠã£ãžã§ãã ã®è¡šç€º ãŸãã¯ãBP_ThirdPersonCharacterãã®ã㣠ã©ã¯ ã¿ãŒã«ãå
ã»ã©ãã¢ãäœæããæãšåãããã«ã Sphere CollisionããäœæããŸãã ã㣠ã©ã¯ ã¿ãŒã®åæ¹ã«äžã®åçã®ããã«ã Sphere Collisionããé
眮ããŸãã ã€ãã³ãã°ã©ãã«æ»ãããGet Overlapping Actors( Sphere )ããäœæããŸããããã¯å
ã»ã©äœæããã Sphere Collisionãã« æ¥è§Š ããŠããã¢ã¯ã¿ãŒã®äžèЧãé
åã§è¿ããŠãããããŒãã«ãªããŸãã å
ã»ã©äœæãã ãQã ãæŒããåŸã®ããã©ã³ãïŒIFæïŒãã§falseã ã£ãæã«ãFor Each Loop With BreakãããŒãã§ã Sphere Collisionãã« æ¥è§Š ããŠããã¢ã¯ã¿ãŒã®é
åãå±éããŸãã æ¬ã¹ãããã§ã¯ãŸã ã¢ã¯ã¿ãŒããšã«äŒè©±ã®æç« ã®å
容ãåããã ã³ãªãžã§ã³ å
ã«ã¢ã¯ã¿ãŒãããå Žåã®ã¿äŒè©±çšã®UIãåºãã ãã®åŠçãªã®ã§äžã®åçã®ããã«ãAdd to Viewportãã«ã€ãªããé
åããªããªããŸã§ã«ãŒããããŸãã ããã§ã ã³ãªãžã§ã³ å
ã«ã¢ã¯ã¿ãŒã1ã€ã§ãããã°ã ãQã ãæŒãããšã§äŒè©±çšã®UIã衚瀺ã§ããŸãã ãŸãããã®ãŸãŸã ãšäŒè©±çšUIãåºããŸãŸã«ãªã£ãŠããŸãã®ã§ãæ¶å»ããåŠçãäœæããŸãã ãIsTalkããšããBooleanã®å€æ°ãäœæããäŒè©±äžã§ã¯ãªãæã®ã¿ç»é¢ã«äŒè©±çšUIãåºãããã«èšå®ããŸãã ãŸãäŒè©±äžã®å Žåã¯ãç»é¢ããäŒè©±çšUIãæ¶ãããã«ãRemove From ParentãããŒãã远å ããç»é¢ããäŒè©±çšUIãæ¶å»ãããIsTalkãã®ãã©ã°ãfalseã«å€æŽããŸãã å®éã«è©ŠããŠã¿ãããã«ããããã«ããã€ãã¢ã¯ã¿ãŒãèšçœ®ãããŸãã ã©ããªã¢ã¯ã¿ãŒã§ãè¯ãã§ãããä»å㯠NPC 颚ã®äººåã¢ã¯ã¿ãŒãäœæããŠèšçœ®ããŸãã Blueprintäœæç»é¢ããCharacterãéžæããŠãBP_ NPC ããäœæããŸãã ã³ã³ããŒãã³ã äžèЧããããããMeshããéžæãã詳现ããã«ããã¡ãã·ã¥ãéžã³ãŸããä»åã¯ãSK_MannequinããéžæããŸãã ãããªã¢ã«ãä»»æã®ãã®ãéžã³ããããã«é
眮ããŸãã ãããŸã§ã®å®è£
ã§ããã¬ã€ã€ãŒãæäœããã㣠ã©ã¯ ã¿ãŒã®åã«ã¢ã¯ã¿ãŒãããæã®ã¿ã ãQã ãæŒãããšã§ãäŒè©±çšã®UIãåºãŠããåŠçã宿ããŸããã ç¶ããŠããããã«é
眮ãã NPC ããšã«äŒè©±ã®å
容ã倿Žãããæ©èœãäœæã説æããŸãã 5. ã NPC äŒè©±ç·šã NPC æ¯ã®ã¡ãã»ãŒãžå
容åãæ¿ã ãŸãã¯ã¢ã¯ã¿ãŒéãè¶
ããŠå
±éã®äŒè©±çšã®é¢æ°ã䜿çšã§ããããã«ãã«ãŒããªã³ãã€ã³ã¿ãŒãã§ãŒã¹ãäœæããŸãã ã³ã³ãã³ãããã¯ãŒãããã«ãŒããªã³ãã€ã³ã¿ãŒãã§ãŒã¹ãäœæãããBPI_ Talk ããš åœå ããŸãã ç·šéç»é¢ã§ãCanTalkããšããBooleanãè¿ã颿°ãšããGetTalkMessageããšããTextãè¿ã颿°ãäœæããŸãã ãBP_ NPC ãã§2ã€ã®é¢æ°ã䜿çšããããã«ããBP_ NPC ããéãç»é¢äžéšã®ã¯ã©ã¹èšå®ãæŒããå³åŽã®å®è£
ã€ã³ã¿ãŒãã§ãŒã¹ã®ã»ã¬ã¯ãããã¯ã¹ãããBPI_ Talk ããéžæããŸãã å·ŠåŽã«ã€ã³ã¿ãŒãã§ãŒã¹æ¬ã远å ãããå
ã»ã©äœæãã2ã€ã®é¢æ°ãããããšã確èªããŸãã å·ŠåŽã®ã€ã³ã¿ãŒãã§ãŒã¹æ¬ãããCanTalkããããã«ã¯ãªãã¯ã§éããBooleanã®è¿ãå€ãtrueã«èšå®ããŸãã åæ§ã«ãGetTalkMessageããéãããªã¿ãŒã³ããŒãã®Textã®è¿ãå€ã倿°ãšããŠã»ãããããTalkMessageããš åœå ããŸãã ããã«ã倿°æ¬ã®å³åŽã®ç®ã®ã¢ã€ã³ã³ãã¯ãªãã¯ããŠãUEã®å
šäœã®ç·šéç»é¢ããçŽæ¥å€æ°ã®å€ã倿Žã§ããããã«èšå®ããŠãããŸãã æåŸã®ã¹ããããšããŠãBP_ThirdPersonCharacterããéããåã«ããã¢ã¯ã¿ãŒïŒBP_ NPC ïŒããCanTalkãã§trueãè¿ããŠãããããã§ãã¯ããtrueã ã£ãå Žåã«ãTalkMessageãã§ã»ããããæååãäŒè©±çšUIã«åã蟌ãã§è¡šç€ºãããåŠçãäœæããŸãã å
ã»ã©é
åã§ååŸãã ã³ãªãžã§ã³ å
ã®ã¢ã¯ã¿ãŒãForEachã§åããŠããéšåã§ããCanTalkããtrueãã©ãã確èªããããã«ããŒãã远å ããŸãã trueã ã£ãå Žåã«ãããã«ãã®ã¢ã¯ã¿ãŒãèšå®ããŠããäŒè©±ã®å
容ããGetTalkMessageãããååŸããŸãã ïŒBP_ NPC ã¯å
šãŠãCanTalkããtrueã§è¿ãèšå®ãããŠããŸããïŒ ãGetTalkMessageãã®ã¿ãŒã²ããã¯ã¢ã¯ã¿ãŒã®é
åãå
¥ã£ãŠãããArray Elementãã§ãã æ¬¡ã«ååŸããŠããäŒè©±ã®å
容ããWBP_ Talk ãã®äžã«åã蟌ã¿ãŸãã ãWBP_ Talk ããéããéå±€ãããTextããéžæããŸããæ¬¡ã«å³äžã®ãis Variableãã«ãã§ãã¯ãå
¥ããã Widget _TalkMessageããš åœå ããŸãã ãWBP_ Talk ããã°ã©ã衚瀺ã«å€æŽããŠã颿°ãäœæããŸããä»åã¯ã Widget _SetTextMessageããš åœå ããŸãã ã€ã³ãããã«Textãèšå®ããŸãã ãSetText(Text)ãããŒããã€ãªããã¿ãŒã²ããã«ã Widget _TalkMessageããèšå®ããã¿ãŒã²ããã«ãUI_ Talk ããã€ãªããŸãã ãBP_ThirdPersonCharacterãã«æ»ããã Widget _SetTextMessageãããŒããäœæãããGetTalkMessageããšã€ãªããŸãã æåŸã«ãAdd to Viewportããšç¹ãããšã§BlueprintåŽã§ã®åŠçã¯å®äºã§ãã å
šäœã®åŠçã¯äžèšã®ãããªæµãã«ãªã£ãŠããŸãã UEã®ç·šéç»é¢ããã¢ã¯ã¿ãŒãéžæãã詳现ã¿ãã®ã Talk Massageãæ¬ã«ä»»æã®æèšã远å ããããšã§ãã¢ã¯ã¿ãŒããšã«äŒè©±ããå
容ãèšå®ã§ããŸãã å®éã«äŒè©±ãè¡ã£ãŠã¿ãŸãã 以äžã ã³ãªãžã§ã³ æ©èœã䜿ã£ãŠãèªåã§ééãããã¢ãã NPC ãšã®ç°¡åãªäŒè©±ã·ã¹ãã ã®äœææ¹æ³ã®ç޹ä»ã§ãã ææ ã³ãªãžã§ã³ ãå©çšããããšã§ããªããžã§ã¯ããåãããããéãªã£ãã¢ã¯ã¿ãŒã®æ
å ±ãååŸããããšãããŸããŸãªäœ¿ãæ¹ãã§ããããšãããããŸããã ãŸããåºæ¬çãªäŒè©±ã®äœãæ¹ãããã£ãã®ã§ãããè€éãªäŒè©±æ¹æ³ãã ãŠã£ãžã§ãã ã®äœææ¹æ³ãªã©ãåŠç¿ããŠãããŸãã ç¹ã« ãŠã£ãžã§ãã ã§ã§ããããšã¯ãŸã ãŸã ãããããªã®ã§ãããå°ãæ·±ãŒã£ãŠèª¿æ»ããŠãããããšæããŸãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ é»éç·ç äžéæ¡çšããŒãž é»éç·ç æ°åæ¡çšããŒãž åè https://note.com/ak_schweitzer/n/n2a7b116c8ee8 https://qiita.com/4_mio_11/items/fed86efca7407a7975fb https://www.youtube.com/watch?v=b8AwUvTaCs0& å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
é»éåœéæ
å ±ãµãŒãã¹ ããªãŒãã³ ã€ãããŒã·ã§ã³ ã©ãã® æ¯å康é ã§ãã ä»åã¯ã Expo ã«å
¥éããŸãã Expo ãšã¯ãéçºè
ã React Native åäœã§éçºããå Žåã«æèããªããšãããªãã£ããã€ãã£ãéšåãé èœããŠãã¢ããªã±ãŒã·ã§ã³æ¬äœã®éçºããã Web ã¢ããªã±ãŒã·ã§ã³ã®éçºäœéšã«è¿ã¥ãããã®ã§ãã expo cliã®ã€ã³ã¹ããŒã« Expo Goã®ã€ã³ã¹ããŒã« ãããžã§ã¯ãã®äœæ QRã³ãŒãã®èªã¿åã ã¢ããªã®ä¿®æ£ ãŸãšã 仲éåé expo cli ã®ã€ã³ã¹ããŒã« expo cli ã¯ãäžèšã®ããã«ããŠãnpxã§ã€ã³ã¹ããŒã«ããããã§ãã npx expo -h å®è¡ãããšäžèšã®ããã«èšãããã®ã§ãyã§ã€ã³ã¹ããŒã«ããŸãã Need to install the following packages: expo@48.0.17 Ok to proceed? (y) Expo Goã®ã€ã³ã¹ããŒã« Expo Go ã¯ãããŒã«ã«ã§äœãæ§ç¯ããå¿
èŠããªããAndroid ããã³ iOS äžã§ React Native ã¢ããªããã¹ãããããã®ç¡æã®ãªãŒãã³ãœãŒã¹ ã¯ã©ã€ã¢ã³ãã§ãã Android ãŸã㯠iOS ããã€ã¹ã§ Expo Go ã¯ã©ã€ã¢ã³ãã¢ããªã䜿çšããã®ããæãéãèµ·åããŠå®è¡ã§ããæ¹æ³ã§ããããã«ãããExpo CLI ãéããŠæäŸãããã¢ããªãéããŠãéçºæã«ãããžã§ã¯ããããéãå®è¡ã§ããŸãã ãšå
¬åŒãèšã£ãŠããã®ã§ãExpo Goã䜿ããŸãããã iOSã®App Store ã Androidã®Pay Store ããã€ã³ã¹ããŒã«ããŠãã ããã ãããžã§ã¯ãã®äœæ npx create-expo-app my-app ã§ãããžã§ã¯ããäœæããŸãããã my-app ã«ç§»åããŠããããžã§ã¯ããéå§ããŸãã cd my-app npx expo start QRã³ãŒã ã®èªã¿åã QRã³ãŒã ã衚瀺ãããŸãã Scan the QR code above with Expo Go (Android) or the Camera app (iOS) ãšèšãããã®ã§ãåã¯ã iPhone ã®ã«ã¡ã©ã§ QRã³ãŒã ãèªã¿èŸŒã¿ãŸãããExpo Goãç«ã¡äžãã£ãŠãäžèšã®ããã«ã¢ããªã衚瀺ãããŸãã Open up App.js to start working on your app! ã¢ããªã®ä¿®æ£ my-app ãã£ã¬ã¯ã ãªã§ã VS Code ãç«ã¡äžããŸãã code . App.js ã®Textã¿ã°ã§å²ãŸããŠããéšåãé©åœã«ä¿®æ£ããŠãã ãããã¢ããªã®è¡šç€ºãããå€ãããŸã(HOT Reloading)ã ãŸãšã Expoã¯ãWebã¢ããªãéçºããŠãããããªæèŠã§ãNativeã¢ããªãéçºã§ãããšããã®ã¯ãæ¬åœã ãªãšæããŸãããExpoã¯ããå°ã詳ããèŠãŠãããããšæããŸãã 仲éåé ç§ãã¡ã¯åãã°ã«ãŒãã§å
±ã«åããŠããã ãã仲éãåéããŠããŸãã çŸåšã以äžã®ãããªè·çš®ãåéããŠããŸãã ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ã AIãšã³ãžã㢠å·çïŒ @higa ïŒ Shodo ã§å·çãããŸãã ïŒ
é»éåœéæ
å ±ãµãŒãã¹ ããªãŒãã³ ã€ãããŒã·ã§ã³ ã©ãã® æ¯å康é ã§ãã ä»åã¯ã Expo ã«å
¥éããŸãã Expo ãšã¯ãéçºè
ã React Native åäœã§éçºããå Žåã«æèããªããšãããªãã£ããã€ãã£ãéšåãé èœããŠãã¢ããªã±ãŒã·ã§ã³æ¬äœã®éçºããã Web ã¢ããªã±ãŒã·ã§ã³ã®éçºäœéšã«è¿ã¥ãããã®ã§ãã expo cliã®ã€ã³ã¹ããŒã« Expo Goã®ã€ã³ã¹ããŒã« ãããžã§ã¯ãã®äœæ QRã³ãŒãã®èªã¿åã ã¢ããªã®ä¿®æ£ ãŸãšã 仲éåé expo cli ã®ã€ã³ã¹ããŒã« expo cli ã¯ãäžèšã®ããã«ããŠãnpxã§ã€ã³ã¹ããŒã«ããããã§ãã npx expo -h å®è¡ãããšäžèšã®ããã«èšãããã®ã§ãyã§ã€ã³ã¹ããŒã«ããŸãã Need to install the following packages: expo@48.0.17 Ok to proceed? (y) Expo Goã®ã€ã³ã¹ããŒã« Expo Go ã¯ãããŒã«ã«ã§äœãæ§ç¯ããå¿
èŠããªããAndroid ããã³ iOS äžã§ React Native ã¢ããªããã¹ãããããã®ç¡æã®ãªãŒãã³ãœãŒã¹ ã¯ã©ã€ã¢ã³ãã§ãã Android ãŸã㯠iOS ããã€ã¹ã§ Expo Go ã¯ã©ã€ã¢ã³ãã¢ããªã䜿çšããã®ããæãéãèµ·åããŠå®è¡ã§ããæ¹æ³ã§ããããã«ãããExpo CLI ãéããŠæäŸãããã¢ããªãéããŠãéçºæã«ãããžã§ã¯ããããéãå®è¡ã§ããŸãã ãšå
¬åŒãèšã£ãŠããã®ã§ãExpo Goã䜿ããŸãããã iOSã®App Store ã Androidã®Pay Store ããã€ã³ã¹ããŒã«ããŠãã ããã ãããžã§ã¯ãã®äœæ npx create-expo-app my-app ã§ãããžã§ã¯ããäœæããŸãããã my-app ã«ç§»åããŠããããžã§ã¯ããéå§ããŸãã cd my-app npx expo start QRã³ãŒã ã®èªã¿åã QRã³ãŒã ã衚瀺ãããŸãã Scan the QR code above with Expo Go (Android) or the Camera app (iOS) ãšèšãããã®ã§ãåã¯ã iPhone ã®ã«ã¡ã©ã§ QRã³ãŒã ãèªã¿èŸŒã¿ãŸãããExpo Goãç«ã¡äžãã£ãŠãäžèšã®ããã«ã¢ããªã衚瀺ãããŸãã Open up App.js to start working on your app! ã¢ããªã®ä¿®æ£ my-app ãã£ã¬ã¯ã ãªã§ã VS Code ãç«ã¡äžããŸãã code . App.js ã®Textã¿ã°ã§å²ãŸããŠããéšåãé©åœã«ä¿®æ£ããŠãã ãããã¢ããªã®è¡šç€ºãããå€ãããŸã(HOT Reloading)ã ãŸãšã Expoã¯ãWebã¢ããªãéçºããŠãããããªæèŠã§ãNativeã¢ããªãéçºã§ãããšããã®ã¯ãæ¬åœã ãªãšæããŸãããExpoã¯ããå°ã詳ããèŠãŠãããããšæããŸãã 仲éåé ç§ãã¡ã¯åãã°ã«ãŒãã§å
±ã«åããŠããã ãã仲éãåéããŠããŸãã çŸåšã以äžã®ãããªè·çš®ãåéããŠããŸãã ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ã AIãšã³ãžã㢠å·çïŒ @higa ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®ç°æã§ãã æ®æ®µã¯ Microsoft ãæäŸãã ã¯ã©ãŠã ãµãŒãã¹ã§ãã Azure ãæŽ»çšããæ¡ä»¶æ¯æŽããç ç©¶éçºãæ
åœããŠããŸãã æ¬èšäºã§ã¯ãæ¥åå
容ã 1 é±éã®éããæ¹ãªã©ãç§ã®äž»ãªåãæ¹ã«ã€ããŠãã£ãããšã玹ä»ããŸãã IT äŒæ¥ãžã®å°±è·ãæ€èšãããŠããåŠçã®æ¹ããISID ã«ãèå³ããæã¡ã®æ¹ã®åèã«ãªãã°å¹žãã§ãã èªå·±çŽ¹ä» æ¥åå
容 æ¡ä»¶æ¯æŽ ç ç©¶éçº ãã®ä» 1 é±éã®éããæ¹ æåŸã« èªå·±çŽ¹ä» ã¿ã€ãã«ã«ããããŸããã2020 å¹Žã«æ°åå
¥ç€Ÿãã 4 幎ç®ç€Ÿå¡ã§ãã å
¥ç€ŸåŸã«å幎éã®ç ä¿®ãçµãŠã ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã«é
å±ãšãªããŸããã åŠçæä»£ã« ã¯ã©ãŠã ãã¯ãããšãã IT 系㮠çµéšãã»ãŒãªããã絶察㫠ã¯ã©ãŠã ã«é¢ããä»äºããããããšãã£ãåžæããªãã£ãããæå€ã§ã¯ãããŸããããäœãã®çžã ãããšä»äºãç¶ã仿¥ã«è³ããŸãã æ¥åå
容 åé ã§ã玹ä»ããéãã Microsoft Azure ãæŽ»çšããæ¡ä»¶æ¯æŽãšç ç©¶éçºãäž»ãªæ¥åã§ãã Azure ãšãã£ãŠãå€çš®å€æ§ãªãµãŒãã¹ããããŸãããç§ã®æ¥åã§ã¯äž»ã«ããŒã¿åæã®é åãæ±ã£ãŠããŸãã å
·äœçã«äœãããŠããã®ãã«ã€ããŠã¯ãåå¥ã§ã玹ä»ããããŸãã æ¡ä»¶æ¯æŽ è¿å¹Žã¯ IoT ã ããã°ããŒã¿ ãªã©ã®ã¯ãŒããæ®åããäŒæ¥ã«ãããŠãããŒã¿åæã®ããŒãºãé«ãŸã£ãŠããŸãã ISID ã«éãããããŒã¿åæãäžå¿ã«æ®ãããããžã§ã¯ãã¯æ°å€ããããŸãããç§ãåç»ããæ¯æŽæ¥åã§æ±ããããã®ã¯ãã客æ§ã®æ±ããæ§ã
ãªæœåšã»é¡åšèª²é¡ãèŠæã«å¯ŸããŠãAzure ãæŽ»çšããããŒã¿åæã«ããäŸ¡å€æäŸãè¡ããããšã§ãã å®éã«ããã ããã客æ§ããã®èŠæã«ã¯ãããªãã®ããããŸãã 瀟å
ã«æ£åšããŠããæ¥åããŒã¿ãäžå
管çã§ããããŒã¿åæåºç€ãæ§ç¯ããŠã»ãã ãªãã£ã¹ãã« å
ã®ç°å¢æ
å ±ïŒæž©åºŠ/湿床/ç
§åºŠ/空æ°ç¶æ
ãªã©ïŒãåéã»åæãäžç®ã§ææ¡ããã ãªãã£ã¹ãã« ã®ããžã¿ã«ãã€ã³ãäœæããå®èšŒå®éšïŒPoCïŒã宿œããã ã客æ§ã®èŠæã«å¿ããŠäœæ¥å
容ã¯ç°ãªããŸããã倧ãŸãã«ã¯ ãã¢ãª ã³ã°ãéããŠèŠä»¶ãããåããããAzure ããã³åšèŸºã·ã¹ãã ã®èšèšã»æ§ç¯ãè¡ããåæçµæãå¯èŠåããã¬ããŒãç»é¢ã®äœæãããããšãã£ãæ¥åãçµéšããŠããŸããã çŸå Žã§ã¯ããŒã¿åæã«éå®ããªã Azure ã®å¹
åºããµãŒãã¹ã ä»ã® Microsoft 補åãå Žåã«ãã£ãŠã¯ä»ç€Ÿãœãªã¥ãŒã·ã§ã³ã«å¯Ÿããç¥èã»ã¹ãã«ãèŠæ±ãããã®ã§ã ã¯ã©ãŠã ãšã³ãžãã¢ãšããè·çš®ãšããŠããçµéšãç©ããŠãããšæããŠããŸãã ç ç©¶éçº Azure ã®ããŒã¿é åã«ãããã¢ããããŒãå
容ã®èª¿æ»æ€èšŒãäžå¿ã§ãã Azure ãã¯ãããšãã ã¯ã©ãŠã ãµãŒãã¹ã¯äžè¬çãªããã±ãŒãžè£œåãšæ¯èŒããŠã¢ããããŒãã®ã¹ãã³ãçãã1 é±éåŸã«ã¯æ©èœã»ä»æ§ã倿Žããããšããã±ãŒã¹ããããŸãã ãã®ãããªå€åã«è¿œãã€ããŠããããã«ãããŒã å
ã§ Azure ã®æ°ãããµãŒãã¹ãæ©èœãå
±æãããå°æ¥çã«æ¡ä»¶æ¯æŽã瀟å
ãœãªã¥ãŒã·ã§ã³ã«é©çšã§ããèŠèŸŒã¿ãããããšå€æãããã®ã«å¯ŸããŠèª¿æ»æ€èšŒã宿œããŠããŸãã å
·äœçãªèª¿æ»æ€èšŒã®å
容ã«ã€ããŠã¯ã以åã«æçš¿ããèšäºãã芧ãã ããã Azure Managed Grafana ã«ã€ããŠèª¿ã¹ãŠã¿ã èª¿æ»æ€èšŒã®çµæã¯äžèšã®èгç¹ã§ãŸãšããè³æåããŠç€Ÿå
ã«å±éããŠããŸãã ãŸããã€ã³ã¿ãŒãããäžã«åæ§ã®èª¿æ»çµæãå ±åãããŠããªãå Žåã¯ãåè¿°ããããã«ãã¡ãã®ããã¯ããã°ã Qiita/ Twitter ã§ç€Ÿå€çºä¿¡ããå ŽåããããŸãã ã©ã®ãããªã¢ããããŒããªã®ãïŒ ã§ããããšãã§ããªãããšã¯äœãïŒ èª¿æ»æ€èšŒæç¹ã§èããããå
·äœçãªäœ¿çšäŸã¯äœãïŒ é¡äŒŒã»ç«¶åãµãŒãã¹ãšã®å·®å¥åç¹ã¯ïŒ ã©ã®ãããã®ã³ã¹ããå¿
èŠãïŒ äžèšã®ä»ã«ããAzure ãæŽ»çšãã瀟å
ãœãªã¥ãŒã·ã§ã³éçºãAzure ããŒã¿åæãããžã§ã¯ãã§èŠä»¶å®çŸ©ããéçšã«å¿
èŠãªããŒã«ãããã¥ã¡ã³ããç¶²çŸ
ãããã³ãã¬ãŒãã®äœæãããŒã¿é åã«ããããã¬ã³ãã®èª¿æ»ãªã©ã宿œããŠããŸããã ç ç©¶éçºã®å
容ã«é¢ããããããŠããŠãèç©ãæ¡ä»¶æ¯æŽã«æŽ»ãããŠãããšãããµã€ã¯ã«ã倧äºã«ããŠããŸãã ãã®ä» ãããŸã§èšèŒãããã®ä»¥å€ã«ããçµéšããŠããæ¥åãããã€ããããŸãã æ°å瀟å¡åãã® ã·ã¹ãã éçº ç ç©¶ã®ãµããŒã OJT ãµããŒãæ¥å æ°èŠäºæ¥éçºã»ææ¡ ISID ã¯ãè¥ã幎次ã§ããããããããšããä»äºãã¢ããŒã«ããã°ãã£ã¬ã³ãžã§ããåå£ããããšæããŠããŸãã 1 é±éã®éããæ¹ ãããžã§ã¯ãã®ç¶æ³ã«ãã£ãŠãŸã¡ãŸã¡ã§ãããããããäžå³ã®éãã§ãã æ¯æ¥ã®å§æ¥æã«æäŒã宿œããããŒã å
ã§æ¬æ¥ã®æ¥åå
容ãšå
šäœã®ã¿ã¹ã¯ãäºåé£çµ¡çãå
±æããŸãã ãã®åŸã¯æ¡ä»¶æ¯æŽãç ç©¶éçºã«é¢ããæã¡åãããåäººäœæ¥ã®æéãšãªãã空ãæéã¯èªå·±åŠç¿ããããã£ãèšäºå·çãªã©ã«å
ãŠãŠããŸãã åºæ¬çã«ãã¬ã¯ãŒã¯ãªã®ã§çµæ¥åŸã¯èªå®
ã§éããããšãå€ãã§ãããé± 1 çšåºŠã§åæãšããããµã«ãããŠããŸãã æåŸã« XïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã§ã¯ãæ°åã»ãã£ãªã¢æ¡çšåããå
±ã«åããŠããã仲éãæ¢ããŠããŸãã æ¬èšäºã§ç޹ä»ããç§ã®åãæ¹ãã ã¯ã©ãŠã ãäžå¿ãšããæ¥åã«ãèå³ããæã¡ã®æ¹ã¯ããã²æ¡çšããŒãžãããå¿åãã ããã æ°åæ¡çšã®æ¹ïŒ ISID æ°åæ¡çšãµã€ã ãã£ãªã¢æ¡çšã®æ¹ïŒ ISID ã°ã«ãŒã ãã£ãªã¢æ¡çšãµã€ã - ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @tamura.kohei ãã¬ãã¥ãŒïŒ Ishizawa Kento (@kent) ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®ç°æã§ãã æ®æ®µã¯ Microsoft ãæäŸãã ã¯ã©ãŠã ãµãŒãã¹ã§ãã Azure ãæŽ»çšããæ¡ä»¶æ¯æŽããç ç©¶éçºãæ
åœããŠããŸãã æ¬èšäºã§ã¯ãæ¥åå
容ã 1 é±éã®éããæ¹ãªã©ãç§ã®äž»ãªåãæ¹ã«ã€ããŠãã£ãããšã玹ä»ããŸãã IT äŒæ¥ãžã®å°±è·ãæ€èšãããŠããåŠçã®æ¹ããISID ã«ãèå³ããæã¡ã®æ¹ã®åèã«ãªãã°å¹žãã§ãã èªå·±çŽ¹ä» æ¥åå
容 æ¡ä»¶æ¯æŽ ç ç©¶éçº ãã®ä» 1 é±éã®éããæ¹ æåŸã« èªå·±çŽ¹ä» ã¿ã€ãã«ã«ããããŸããã2020 å¹Žã«æ°åå
¥ç€Ÿãã 4 幎ç®ç€Ÿå¡ã§ãã å
¥ç€ŸåŸã«å幎éã®ç ä¿®ãçµãŠã ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã«é
å±ãšãªããŸããã åŠçæä»£ã« ã¯ã©ãŠã ãã¯ãããšãã IT 系㮠çµéšãã»ãŒãªããã絶察㫠ã¯ã©ãŠã ã«é¢ããä»äºããããããšãã£ãåžæããªãã£ãããæå€ã§ã¯ãããŸããããäœãã®çžã ãããšä»äºãç¶ã仿¥ã«è³ããŸãã æ¥åå
容 åé ã§ã玹ä»ããéãã Microsoft Azure ãæŽ»çšããæ¡ä»¶æ¯æŽãšç ç©¶éçºãäž»ãªæ¥åã§ãã Azure ãšãã£ãŠãå€çš®å€æ§ãªãµãŒãã¹ããããŸãããç§ã®æ¥åã§ã¯äž»ã«ããŒã¿åæã®é åãæ±ã£ãŠããŸãã å
·äœçã«äœãããŠããã®ãã«ã€ããŠã¯ãåå¥ã§ã玹ä»ããããŸãã æ¡ä»¶æ¯æŽ è¿å¹Žã¯ IoT ã ããã°ããŒã¿ ãªã©ã®ã¯ãŒããæ®åããäŒæ¥ã«ãããŠãããŒã¿åæã®ããŒãºãé«ãŸã£ãŠããŸãã ISID ã«éãããããŒã¿åæãäžå¿ã«æ®ãããããžã§ã¯ãã¯æ°å€ããããŸãããç§ãåç»ããæ¯æŽæ¥åã§æ±ããããã®ã¯ãã客æ§ã®æ±ããæ§ã
ãªæœåšã»é¡åšèª²é¡ãèŠæã«å¯ŸããŠãAzure ãæŽ»çšããããŒã¿åæã«ããäŸ¡å€æäŸãè¡ããããšã§ãã å®éã«ããã ããã客æ§ããã®èŠæã«ã¯ãããªãã®ããããŸãã 瀟å
ã«æ£åšããŠããæ¥åããŒã¿ãäžå
管çã§ããããŒã¿åæåºç€ãæ§ç¯ããŠã»ãã ãªãã£ã¹ãã« å
ã®ç°å¢æ
å ±ïŒæž©åºŠ/湿床/ç
§åºŠ/空æ°ç¶æ
ãªã©ïŒãåéã»åæãäžç®ã§ææ¡ããã ãªãã£ã¹ãã« ã®ããžã¿ã«ãã€ã³ãäœæããå®èšŒå®éšïŒPoCïŒã宿œããã ã客æ§ã®èŠæã«å¿ããŠäœæ¥å
容ã¯ç°ãªããŸããã倧ãŸãã«ã¯ ãã¢ãª ã³ã°ãéããŠèŠä»¶ãããåããããAzure ããã³åšèŸºã·ã¹ãã ã®èšèšã»æ§ç¯ãè¡ããåæçµæãå¯èŠåããã¬ããŒãç»é¢ã®äœæãããããšãã£ãæ¥åãçµéšããŠããŸããã çŸå Žã§ã¯ããŒã¿åæã«éå®ããªã Azure ã®å¹
åºããµãŒãã¹ã ä»ã® Microsoft 補åãå Žåã«ãã£ãŠã¯ä»ç€Ÿãœãªã¥ãŒã·ã§ã³ã«å¯Ÿããç¥èã»ã¹ãã«ãèŠæ±ãããã®ã§ã ã¯ã©ãŠã ãšã³ãžãã¢ãšããè·çš®ãšããŠããçµéšãç©ããŠãããšæããŠããŸãã ç ç©¶éçº Azure ã®ããŒã¿é åã«ãããã¢ããããŒãå
容ã®èª¿æ»æ€èšŒãäžå¿ã§ãã Azure ãã¯ãããšãã ã¯ã©ãŠã ãµãŒãã¹ã¯äžè¬çãªããã±ãŒãžè£œåãšæ¯èŒããŠã¢ããããŒãã®ã¹ãã³ãçãã1 é±éåŸã«ã¯æ©èœã»ä»æ§ã倿Žããããšããã±ãŒã¹ããããŸãã ãã®ãããªå€åã«è¿œãã€ããŠããããã«ãããŒã å
ã§ Azure ã®æ°ãããµãŒãã¹ãæ©èœãå
±æãããå°æ¥çã«æ¡ä»¶æ¯æŽã瀟å
ãœãªã¥ãŒã·ã§ã³ã«é©çšã§ããèŠèŸŒã¿ãããããšå€æãããã®ã«å¯ŸããŠèª¿æ»æ€èšŒã宿œããŠããŸãã å
·äœçãªèª¿æ»æ€èšŒã®å
容ã«ã€ããŠã¯ã以åã«æçš¿ããèšäºãã芧ãã ããã Azure Managed Grafana ã«ã€ããŠèª¿ã¹ãŠã¿ã èª¿æ»æ€èšŒã®çµæã¯äžèšã®èгç¹ã§ãŸãšããè³æåããŠç€Ÿå
ã«å±éããŠããŸãã ãŸããã€ã³ã¿ãŒãããäžã«åæ§ã®èª¿æ»çµæãå ±åãããŠããªãå Žåã¯ãåè¿°ããããã«ãã¡ãã®ããã¯ããã°ã Qiita/ Twitter ã§ç€Ÿå€çºä¿¡ããå ŽåããããŸãã ã©ã®ãããªã¢ããããŒããªã®ãïŒ ã§ããããšãã§ããªãããšã¯äœãïŒ èª¿æ»æ€èšŒæç¹ã§èããããå
·äœçãªäœ¿çšäŸã¯äœãïŒ é¡äŒŒã»ç«¶åãµãŒãã¹ãšã®å·®å¥åç¹ã¯ïŒ ã©ã®ãããã®ã³ã¹ããå¿
èŠãïŒ äžèšã®ä»ã«ããAzure ãæŽ»çšãã瀟å
ãœãªã¥ãŒã·ã§ã³éçºãAzure ããŒã¿åæãããžã§ã¯ãã§èŠä»¶å®çŸ©ããéçšã«å¿
èŠãªããŒã«ãããã¥ã¡ã³ããç¶²çŸ
ãããã³ãã¬ãŒãã®äœæãããŒã¿é åã«ããããã¬ã³ãã®èª¿æ»ãªã©ã宿œããŠããŸããã ç ç©¶éçºã®å
容ã«é¢ããããããŠããŠãèç©ãæ¡ä»¶æ¯æŽã«æŽ»ãããŠãããšãããµã€ã¯ã«ã倧äºã«ããŠããŸãã ãã®ä» ãããŸã§èšèŒãããã®ä»¥å€ã«ããçµéšããŠããæ¥åãããã€ããããŸãã æ°å瀟å¡åãã® ã·ã¹ãã éçº ç ç©¶ã®ãµããŒã OJT ãµããŒãæ¥å æ°èŠäºæ¥éçºã»ææ¡ ISID ã¯ãè¥ã幎次ã§ããããããããšããä»äºãã¢ããŒã«ããã°ãã£ã¬ã³ãžã§ããåå£ããããšæããŠããŸãã 1 é±éã®éããæ¹ ãããžã§ã¯ãã®ç¶æ³ã«ãã£ãŠãŸã¡ãŸã¡ã§ãããããããäžå³ã®éãã§ãã æ¯æ¥ã®å§æ¥æã«æäŒã宿œããããŒã å
ã§æ¬æ¥ã®æ¥åå
容ãšå
šäœã®ã¿ã¹ã¯ãäºåé£çµ¡çãå
±æããŸãã ãã®åŸã¯æ¡ä»¶æ¯æŽãç ç©¶éçºã«é¢ããæã¡åãããåäººäœæ¥ã®æéãšãªãã空ãæéã¯èªå·±åŠç¿ããããã£ãèšäºå·çãªã©ã«å
ãŠãŠããŸãã åºæ¬çã«ãã¬ã¯ãŒã¯ãªã®ã§çµæ¥åŸã¯èªå®
ã§éããããšãå€ãã§ãããé± 1 çšåºŠã§åæãšããããµã«ãããŠããŸãã æåŸã« XïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã§ã¯ãæ°åã»ãã£ãªã¢æ¡çšåããå
±ã«åããŠããã仲éãæ¢ããŠããŸãã æ¬èšäºã§ç޹ä»ããç§ã®åãæ¹ãã ã¯ã©ãŠã ãäžå¿ãšããæ¥åã«ãèå³ããæã¡ã®æ¹ã¯ããã²æ¡çšããŒãžãããå¿åãã ããã æ°åæ¡çšã®æ¹ïŒ ISID æ°åæ¡çšãµã€ã ãã£ãªã¢æ¡çšã®æ¹ïŒ ISID ã°ã«ãŒã ãã£ãªã¢æ¡çšãµã€ã - ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @tamura.kohei ãã¬ãã¥ãŒïŒ Ishizawa Kento (@kent) ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ä»åã¯UE5ã§ ãã«ããã¬ã€ ã«å¯Ÿå¿ãããšã¢ãŒãæ©èœãäœæããæ¹æ³ãã玹ä»ããŸãã ãšã¢ãŒãæ©èœãšã¯ã ãã«ããã¬ã€ ã®ã²ãŒã ã«ãããŠãåã㣠ã©ã¯ ã¿ãŒãææ
ã衚çŸããçºã®æ©èœã§ãã äŸãã° Fortnite ã§ã¯ã㣠ã©ã¯ ã¿ãŒã«æ§ã
ãªåãããã³ã¹ããããããšãã§ããŸãã ã¯ããã« UE5ã§ã¯ãListenServerããšãDedicatedServerãã®2çš®é¡ã®ã²ãŒã ãµãŒããŒæ¹åŒã䜿çšå¯èœã§ãã åãµãŒããŒã«ã€ããŠã¯ããã¡ãã® éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å±±äžããã®èšäº ã§ç޹ä»ãããŠããã®ã§èª¬æã¯å²æããŸãã ä»åã¯æ€èšŒãç°¡æã«ãããããListenServerãã䜿çšã㊠ãã«ããã¬ã€ ã§ã®ãšã¢ãŒãæ©èœãäœæããŸããã ãDedicatedServerãã§ãåãæåãããå®è£
æ¹æ³ãšãªããŸãã æ€èšŒç°å¢/ããŒã« Unreal Engine5.2.0 AWS EC2 Windows _Server-2022-English-Full-Base-2023.01.19 å®è£
æé ãšã¢ãŒãçšWidgetBlueprintã®äœæ ãšã¢ãŒãçš Widget ãCharacterBlueprintã«ä»äž CharacterBlueprintã®åäœäœæ ãã«ããã¬ã€ çš ã¬ããªã±ãŒã·ã§ã³ èšå® 1. ãšã¢ãŒãçšWidgetBlueprintã®äœæ ä»åã¯ThirdPersonãã³ãã¬ãŒããå©çšãããããžã§ã¯ãã§é²ããŠãããŸãã ãŸãåãã«ãšã¢ãŒãçš Widget ã«äœ¿çšããWidgetBluePrintãäœæããŸãã ã³ã³ãã³ãããã¯ãŒãããWidgetBlueprintãéžã³ãWBP_IconEmoteãã§äœæããŸãã 以å玹ä»ãã UE5 PixelStreamingã§ãããŠã¹ã«ãŒãœã«ãå¥ã®ç»åã«å€æŽããŠã¯ãªãã¯ã€ãã³ããäœæããèšäº ã«ãŠã WidgetBlueprintå
ã«ä»»æã®ç»åãåãèŸŒãæ¹æ³ãããã®ã§ãåæ§ã«ãšã¢ãŒãã«äœ¿çšãããç»åãåã蟌ã¿ãIconEmoteããšããååãã€ããŸããããŸãåååæ§ã Canvas Panelããäœæããäœçœ®ãäžå¿ã«å€æŽãããŸãã ä»åã¯å¥ã®Blueprintã§ããã® Widget ãåŒã³åºããŠäœ¿ãäºå®ãªã®ã§ã詳现ã¿ãã®äžéšã«ãããIs Variableãã«ãã§ãã¯ãå
¥ããŠãããŸãã 2. ãšã¢ãŒãçš Widget ãCharacterBlueprintã«ä»äž ãŸãã¯CharacterBlueprintãéããŸãã ThirdPersonTemplateã䜿çšããŠäœæãããããžã§ã¯ãã®å Žåã AllïŒContentïŒThirdPersonïŒBlueprintså
ã«ãBP_ThirdPersonCharacterããèŠã€ããããšãã§ããŸãã ãBP_ThirdPersonCharacterãã®ViewPortãéãã Widget çšã® ã³ã³ããŒãã³ã ã远å ããŸãã ViewProtå·Šäžéšã®è¿œå ãã¿ã³ãæŒã㊠Widget ãšæ€çŽ¢ããã¯ãªãã¯ã§éžæããŸãã å·ŠåŽã® ã³ã³ããŒãã³ã äžèЧã«è¿œå ãããã®ã§ãååãã Widget _IconEmoteããšå€æŽããŸãã æ¬¡ã«è¿œå ããã Widget _IconEmoteããšãå
ã»ã©äœæãããWBP_IconEmoteãã飿ºãããŸãã å³åŽã® ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ å
ã®ã Widget Classãã®ã»ã¬ã¯ãããã¯ã¹ã§ãWBP_IconEmoteããéžæããŸãã 飿ºãããšäžèšç»åã®ããã«è¿œå ãããšã¢ãŒãç»åãCharacterBlueprintã«ä»äžãããŸãã ãã©ã³ã¹ãã©ãŒã æ¬ããäœçœ®ã倧ãããåããããšã§ããšã¢ãŒãæ©èœã®ããã«ãªã£ãŠããŸããã ã³ã³ãã€ã« ãä¿åãè¡ããã¬ãã«ã®ViewPortã§ç¢ºèªããŠã¿ãŸãã ã㣠ã©ã¯ ã¿ãŒã®é äžã«ã¢ã€ã³ã³ãåºãããšã¯åºæ¥ãŸããããã㣠ã©ã¯ ã¿ãŒã暪ãåããšã¢ã€ã³ã³ã暪ãåããŠããŸãç»é¢ããèŠããªããªã£ãŠããŸããŸããã 解決æ³ãšããŠãViewPortã® ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ æ¬ã®Spaceã®ã»ã¬ã¯ãããã¯ã¹ããWorldããããç»é¢ããéžã¶ããšã§ãã㣠ã©ã¯ ã¿ãŒãã©ã®åããåããŠããšã¢ãŒãã¢ã€ã³ã³ãèŠããããã«èšå®ã§ããŸãã 3. CharacterBlueprintã®åäœäœæ ä»åã¯ãããŒããŒãã®ã5ããæŒããæã«ã2ç§éãšã¢ãŒãã¢ã€ã³ã³ãã㣠ã©ã¯ ã¿ãŒã®é äžã«è¡šç€ºãããBlueprintãäœæããŸãã ä»ã®ãŸãŸã§ã¯ãã¢ã€ã³ã³ãåºç¶ããŠããŸãã®ã§ãŸãã²ãŒã ã¹ã¿ãŒããšãšãã«ã¢ã€ã³ã³ãé ãåŠçãè¡ããŸãã ãŸãã¯ãBP_ThirdPersonCharacterããããWBP_IconEmoteãã«æ¥ç¶ã§ããããã«ãEvent BeginPlayããããCast To WBP_IconEmoteãããã³ã§ã€ãªããŸãã ããã«Object屿§ã«å¯ŸããŠããGet User Widget ObjectãããŒãã远å ããã¿ãŒã²ãããã Widget Icon Emoteãã«ããŸãã ããã«ããããBP_ThirdPersonCharacterããããWBP_IconEmoteãã«æ¥ç¶ã§ããããã«ãªããŸããã æ¬¡ã«ãã¢ã€ã³ã³ãé衚瀺ã«ããããã«ãSet VisibilityãããŒããæ¥ç¶ããã¿ãŒã²ããããCast To WBP_IconEmoteãã®ãAs WBP Emoteãã«æ¥ç¶ããŸãããIn Visibilityãã®å€ããé衚瀺ãã«ããããšã§ãã¢ã€ã³ã³ãé衚瀺ã«ã§ããŸãããä»åã¯åŸè¿°ã® ãã«ããã¬ã€ çšã«ã衚瀺ã»é衚瀺ãåžã倿°ãäœæããŠãããŸãã ç»é¢å·Šäžã®å€æ°æ¬ãããã©ã¹ãæŒãããvar_IconEmoteByteããšãã倿°ãäœæããŸããã¿ã€ãã¯Byteãéžæããããã©ã«ãå€ãã2ãã«ããŸãã äœæãããvar_IconEmoteByteãããSet Visibilityãã«ã€ãªããŸãã ããã§å
¥åããã2ããšããã®ã¯ããIn Visibilityãã®å€ã®é
åçªå·ã«ãªãããé衚瀺ããæå³ããŠããŸãã ãããŸã§ã§ãã㣠ã©ã¯ ã¿ãŒé äžã®ã¢ã€ã³ã³ã¯äžæŠé衚瀺ã«ãªã£ãŠããã¯ãã§ãã æ¬¡ã«ããŒããŒãã®ã5ããæŒããæã«ã¢ã€ã³ã³ã衚瀺ãããåŠçã®èª¬æãè¡ããŸãã ãPress 5ãããŒãã远å ãããPressedãã®ãã³ã«å¯ŸããŠããvar_IconEmoteByteããã»ããããããã®ããŒãã远å ããŸãã 倿°ã®å€ãã0ãïŒãIn Visibilityãã®å€ã®é
åçªå·ã«ãªããã衚瀺ãã®æïŒã«æžãæããåŠçã®åŸã«ãå
ã»ã©äœæãããCast To WBP_IconEmoteãã®æµããè€è£œããŸãã ããã«ãããããŒããŒãã®ã5ããæŒããæã«ã¢ã€ã³ã³ã衚瀺ãããããšãã§ããŸãã ãããããã®ç¶æ
ã§ã¯ãŸã å·Šå³ã®ç»é¢ïŒ ãã«ããã¬ã€ã€ãŒ éïŒã§ã®åæã¯åããŠããªãã®ã§ã 次ã®ã¹ãããã§ä¿®æ£ããŠãããŸãã 4. ãã«ããã¬ã€ çš ã¬ããªã±ãŒã·ã§ã³ èšå® UEã§ ãã«ããã¬ã€ ãè¡ãéã¯ãã²ãŒã ãµãŒããŒãã²ãŒã ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠãæ
å ±ãã¬ããªã±ãŒãïŒè€è£œïŒããããšã§ã åã¯ã©ã€ã¢ã³ãéïŒãã¬ã€ã€ãŒéïŒã§ã®å·®ç°ãçããªãããã«ãªããŸãã ä»åäœã£ãåŠçã¯ããŸã ã¯ã©ã€ã¢ã³ãã§è¡ãããŠããã ãã®åŠçãªã®ã§ãã¯ã©ã€ã¢ã³ãéã§ã¯åæãããŸããã ãŸãã¯å
ã»ã©äœæãã倿°ãvar_IconEmoteByteãã ã¬ããªã±ãŒã·ã§ã³ ããèšå®ã«ããŸãã ãvar_IconEmoteByteãã®è©³çްç»é¢ãã ã¬ããªã±ãŒã·ã§ã³ ã®èšå®ããRepNotifyãã«èšå®ããŸãã ãRepNotifyããšã¯ã倿°ã®å€ããŠã©ããããŠããã倿°ã®å€ãå€ãã£ãæã«åŸç¶ã®é¢æ°ãOnRepãã颿°ãèµ·åãããŸãã 倿°ããRepNotifyãèšå®ã«ãããšãå·ŠåŽã®é¢æ°æ¬ã«ãOnRep_var_IconEmoteByteããšãã颿°ãã§ããŸãã æ¬¡ã«ããCast To WBP_IconEmoteããããSet Visibilityãã®åŠçãã³ããŒãããOnRep_var_IconEmoteByteãå
ã§è²Œãä»ããŸãã ãOnRep_var_IconEmoteByteãå
ãžã®ç§»åæ¹æ³ã¯ãå·ŠåŽã®é¢æ°æ¬ã®ãOnRep_var_IconEmoteByteããããã«ã¯ãªãã¯ããããšã§ç§»åãã§ããŸãã 貌ãä»ããåŠçããOn Rep Var Icon Emote ByteãããŒãã«ç¹ããå
ãã£ãå Žæã®åŠçã¯æ¶ããŠããŸããŸãã ããã§ããvar_IconEmoteByteãã®å€ãæžãæãã£ãéã«ãåŸç¶ã®åŠçãã²ãŒã ãµãŒããŒããã²ãŒã ã¯ã©ã€ã¢ã³ãã«åæããŠãããããã«ãªããŸãã ã¢ã€ã³ã³ã衚瀺ãããŠãã2ç§åŸã«ã¢ã€ã³ã³ãæ¶ãåŠçã远å ããããã«ãäžã®ããã«ãDelayãããŒããšãvar_IconEmoteByteãã®ã»ããçšã®ããŒãã远å ããŸããé衚瀺ã«ããå¿
èŠãããã®ã§ããvar_IconEmoteByteãã®å€ã¯ã2ãã«ããŸãã å®è¡ãããšäžã®åç»ã®ããã«ãªããŸãã å·ŠåŽã®ç»é¢ã®ãã¬ã€ã€ãŒã®ãšã¢ãŒãã¢ã€ã³ã³ã¯å³åŽã®ç»é¢ã«åæãããŠããã®ã«å¯Ÿããå³åŽã®ç»é¢ã®ãšã¢ãŒãã¯å·ŠåŽã«åæãããŠããªãããšãããããŸãã ãã®æåã¯ãªãã¹ã³ãµãŒããŒã§æ€èšŒãè¡ã£ãŠããããã®ãã®ã§ãã ãªãã¹ã³ãµãŒããŒã§ã¯ïŒäººã®ãã¬ã€ã€ãŒãã²ãŒã ãµãŒããŒãšã²ãŒã ã¯ã©ã€ã¢ã³ãäž¡æ¹ã®æ©èœããã¡ã ãã®ä»ã®ãã¬ã€ã€ãŒãã²ãŒã ã¯ã©ã€ã¢ã³ãã ãã®æ©èœãæã¡ãŸãã äžã®åç»ã§ã¯å·ŠåŽãã²ãŒã ãµãŒããŒãæã£ãŠããã¯ã©ã€ã¢ã³ãã§ãå³åŽãã²ãŒã ã¯ã©ã€ã¢ã³ãã ãã®ç»é¢ã«ãªããŸãã UEã® ã¬ããªã±ãŒã·ã§ã³ æ©èœã§ã¯ã ã²ãŒã ãµãŒããŒãæ
å ±ãã¬ããªã±ãŒãïŒè€è£œïŒããŠã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããåæããããšã¯åºæ¥ãŸããã ã²ãŒã ã¯ã©ã€ã¢ã³ããã²ãŒã ãµãŒããŒã®æ
å ±ãæžãæããŠåæããããšã¯åºæ¥ãŸããã ãŸããã¯ã©ã€ã¢ã³ããã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããŠåæããããšãåºæ¥ãŸããã ãŸãšãããšäžèšã®ããã«ãªããŸãã ã²ãŒã ãµãŒããŒã§ã®æ
å ±å€æŽãâãã²ãŒã ãµãŒããŒã®æ
å ±ãè€è£œããŠãã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããããšãå¯èœ ã²ãŒã ã¯ã©ã€ã¢ã³ãã§ã®æ
å ±å€æŽãâãã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãè€è£œããŠãã²ãŒã ãµãŒããŒã®æ
å ±ãæžãæããããšã¯äžå¯èœ ã²ãŒã ã¯ã©ã€ã¢ã³ãã§ã®æ
å ±å€æŽãâãã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãè€è£œããŠãä»ã®ã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããããšã¯äžå¯èœ äžèšã®çç±ãããå·ŠåŽã®è¡åã¯ã¬ããªã±ãŒããããå³åŽã®è¡åã¯ã¬ããªã±ãŒããããªãåŠçã«ãªã£ãŠããŸã£ãŠããã®ã§ä¿®æ£ããŠãããŸãã ãŸãã¯ã«ã¹ã¿ã ã€ãã³ãã远å ããŸããä»åã¯ãPress5syncããšããååã®ã€ãã³ãã«ããŸããã ãPress5syncããéžæããå³åŽã®è©³çްç»é¢ããè€è£œæ¬ã§ããµãŒããŒã§å®è¡ããéžæããŸãã æ¬¡ã«ããŒããŒãã®ã5ããæŒããŠèµ·åããåŠçããä»äœã£ããPress5syncãã«ç¹ãçŽããããŒããŒãã®ã5ãã®åŠçã¯ãPress5syncããèµ·åãããããã«ã€ãªããŸãã ããã«ãããã²ãŒã ã¯ã©ã€ã¢ã³ãåŽã§è¡ãããåŠçããã²ãŒã ãµãŒããŒã§å®è¡ãã圢åŒããšãã®ã§ã²ãŒã ãµãŒããŒãšã²ãŒã ã¯ã©ã€ã¢ã³ãéã§åæãåããããã«ãªããŸãã åæ§ã®æé ã§ãTextã¿ã€ãã®WidgetBlueprintã远å ããããšã§ãäžèšã®ãããªãšã¢ãŒãã远å ããããšãã§ããŸãã 以äžãã ãã«ããã¬ã€ ã«å¯Ÿå¿ãããšã¢ãŒãæ©èœãäœæããæé ã«ãªããŸãã ææ ä»åã®UE5ã§ ãã«ããã¬ã€ ã«å¯Ÿå¿ãããšã¢ãŒãæ©èœãäœæããæé ã調æ»ããã«ãããã UE5ã§ã®WidgetBlueprintã®äœ¿ç𿹿³ãã ãã«ããã¬ã€ ã®ã²ãŒã ãµãŒããŒãã²ãŒã ã¯ã©ã€ã¢ã³ãéã®é¢ä¿æ§ãªã©ã«è©³ãããªãããšãåºæ¥ãŸããã ãã«ããã¬ã€ ã®ãããžã§ã¯ããäœæããã«ãããããã¬ã€ã€ãŒéã®æ
å ±ã®åæïŒ ã¬ããªã±ãŒã·ã§ã³ ïŒã¯å¿
é äºé
ã«ãªãã®ã§ãä»åã®åºç€çãªç¥èãããšã«ãããè€é㪠ã¬ããªã±ãŒã·ã§ã³ ã®æ¹æ³ãªã©ãåŠç¿ããŠãããŸãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ISIDæ¡çšããŒãžïŒWeb3/ã¡ã¿ããŒã¹/AIïŒ åè https://docs.unrealengine.com/4.26/ja/InteractiveExperiences/Networking/HowTo/DedicatedServers/ https://docs.unrealengine.com/4.27/ja/Resources/ContentExamples/Networking/1_4/ https://qiita.com/Shibash/items/2408b653abe0549abe37 å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ä»åã¯UE5ã§ ãã«ããã¬ã€ ã«å¯Ÿå¿ãããšã¢ãŒãæ©èœãäœæããæ¹æ³ãã玹ä»ããŸãã ãšã¢ãŒãæ©èœãšã¯ã ãã«ããã¬ã€ ã®ã²ãŒã ã«ãããŠãåã㣠ã©ã¯ ã¿ãŒãææ
ã衚çŸããçºã®æ©èœã§ãã äŸãã° Fortnite ã§ã¯ã㣠ã©ã¯ ã¿ãŒã«æ§ã
ãªåãããã³ã¹ããããããšãã§ããŸãã ã¯ããã« UE5ã§ã¯ãListenServerããšãDedicatedServerãã®2çš®é¡ã®ã²ãŒã ãµãŒããŒæ¹åŒã䜿çšå¯èœã§ãã åãµãŒããŒã«ã€ããŠã¯ããã¡ãã® éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å±±äžããã®èšäº ã§ç޹ä»ãããŠããã®ã§èª¬æã¯å²æããŸãã ä»åã¯æ€èšŒãç°¡æã«ãããããListenServerãã䜿çšã㊠ãã«ããã¬ã€ ã§ã®ãšã¢ãŒãæ©èœãäœæããŸããã ãDedicatedServerãã§ãåãæåãããå®è£
æ¹æ³ãšãªããŸãã æ€èšŒç°å¢/ããŒã« Unreal Engine5.2.0 AWS EC2 Windows _Server-2022-English-Full-Base-2023.01.19 å®è£
æé ãšã¢ãŒãçšWidgetBlueprintã®äœæ ãšã¢ãŒãçš Widget ãCharacterBlueprintã«ä»äž CharacterBlueprintã®åäœäœæ ãã«ããã¬ã€ çš ã¬ããªã±ãŒã·ã§ã³ èšå® 1. ãšã¢ãŒãçšWidgetBlueprintã®äœæ ä»åã¯ThirdPersonãã³ãã¬ãŒããå©çšãããããžã§ã¯ãã§é²ããŠãããŸãã ãŸãåãã«ãšã¢ãŒãçš Widget ã«äœ¿çšããWidgetBluePrintãäœæããŸãã ã³ã³ãã³ãããã¯ãŒãããWidgetBlueprintãéžã³ãWBP_IconEmoteãã§äœæããŸãã 以å玹ä»ãã UE5 PixelStreamingã§ãããŠã¹ã«ãŒãœã«ãå¥ã®ç»åã«å€æŽããŠã¯ãªãã¯ã€ãã³ããäœæããèšäº ã«ãŠã WidgetBlueprintå
ã«ä»»æã®ç»åãåãèŸŒãæ¹æ³ãããã®ã§ãåæ§ã«ãšã¢ãŒãã«äœ¿çšãããç»åãåã蟌ã¿ãIconEmoteããšããååãã€ããŸããããŸãåååæ§ã Canvas Panelããäœæããäœçœ®ãäžå¿ã«å€æŽãããŸãã ä»åã¯å¥ã®Blueprintã§ããã® Widget ãåŒã³åºããŠäœ¿ãäºå®ãªã®ã§ã詳现ã¿ãã®äžéšã«ãããIs Variableãã«ãã§ãã¯ãå
¥ããŠãããŸãã 2. ãšã¢ãŒãçš Widget ãCharacterBlueprintã«ä»äž ãŸãã¯CharacterBlueprintãéããŸãã ThirdPersonTemplateã䜿çšããŠäœæãããããžã§ã¯ãã®å Žåã AllïŒContentïŒThirdPersonïŒBlueprintså
ã«ãBP_ThirdPersonCharacterããèŠã€ããããšãã§ããŸãã ãBP_ThirdPersonCharacterãã®ViewPortãéãã Widget çšã® ã³ã³ããŒãã³ã ã远å ããŸãã ViewProtå·Šäžéšã®è¿œå ãã¿ã³ãæŒã㊠Widget ãšæ€çŽ¢ããã¯ãªãã¯ã§éžæããŸãã å·ŠåŽã® ã³ã³ããŒãã³ã äžèЧã«è¿œå ãããã®ã§ãååãã Widget _IconEmoteããšå€æŽããŸãã æ¬¡ã«è¿œå ããã Widget _IconEmoteããšãå
ã»ã©äœæãããWBP_IconEmoteãã飿ºãããŸãã å³åŽã® ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ å
ã®ã Widget Classãã®ã»ã¬ã¯ãããã¯ã¹ã§ãWBP_IconEmoteããéžæããŸãã 飿ºãããšäžèšç»åã®ããã«è¿œå ãããšã¢ãŒãç»åãCharacterBlueprintã«ä»äžãããŸãã ãã©ã³ã¹ãã©ãŒã æ¬ããäœçœ®ã倧ãããåããããšã§ããšã¢ãŒãæ©èœã®ããã«ãªã£ãŠããŸããã ã³ã³ãã€ã« ãä¿åãè¡ããã¬ãã«ã®ViewPortã§ç¢ºèªããŠã¿ãŸãã ã㣠ã©ã¯ ã¿ãŒã®é äžã«ã¢ã€ã³ã³ãåºãããšã¯åºæ¥ãŸããããã㣠ã©ã¯ ã¿ãŒã暪ãåããšã¢ã€ã³ã³ã暪ãåããŠããŸãç»é¢ããèŠããªããªã£ãŠããŸããŸããã 解決æ³ãšããŠãViewPortã® ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ æ¬ã®Spaceã®ã»ã¬ã¯ãããã¯ã¹ããWorldããããç»é¢ããéžã¶ããšã§ãã㣠ã©ã¯ ã¿ãŒãã©ã®åããåããŠããšã¢ãŒãã¢ã€ã³ã³ãèŠããããã«èšå®ã§ããŸãã 3. CharacterBlueprintã®åäœäœæ ä»åã¯ãããŒããŒãã®ã5ããæŒããæã«ã2ç§éãšã¢ãŒãã¢ã€ã³ã³ãã㣠ã©ã¯ ã¿ãŒã®é äžã«è¡šç€ºãããBlueprintãäœæããŸãã ä»ã®ãŸãŸã§ã¯ãã¢ã€ã³ã³ãåºç¶ããŠããŸãã®ã§ãŸãã²ãŒã ã¹ã¿ãŒããšãšãã«ã¢ã€ã³ã³ãé ãåŠçãè¡ããŸãã ãŸãã¯ãBP_ThirdPersonCharacterããããWBP_IconEmoteãã«æ¥ç¶ã§ããããã«ãEvent BeginPlayããããCast To WBP_IconEmoteãããã³ã§ã€ãªããŸãã ããã«Object屿§ã«å¯ŸããŠããGet User Widget ObjectãããŒãã远å ããã¿ãŒã²ãããã Widget Icon Emoteãã«ããŸãã ããã«ããããBP_ThirdPersonCharacterããããWBP_IconEmoteãã«æ¥ç¶ã§ããããã«ãªããŸããã æ¬¡ã«ãã¢ã€ã³ã³ãé衚瀺ã«ããããã«ãSet VisibilityãããŒããæ¥ç¶ããã¿ãŒã²ããããCast To WBP_IconEmoteãã®ãAs WBP Emoteãã«æ¥ç¶ããŸãããIn Visibilityãã®å€ããé衚瀺ãã«ããããšã§ãã¢ã€ã³ã³ãé衚瀺ã«ã§ããŸãããä»åã¯åŸè¿°ã® ãã«ããã¬ã€ çšã«ã衚瀺ã»é衚瀺ãåžã倿°ãäœæããŠãããŸãã ç»é¢å·Šäžã®å€æ°æ¬ãããã©ã¹ãæŒãããvar_IconEmoteByteããšãã倿°ãäœæããŸããã¿ã€ãã¯Byteãéžæããããã©ã«ãå€ãã2ãã«ããŸãã äœæãããvar_IconEmoteByteãããSet Visibilityãã«ã€ãªããŸãã ããã§å
¥åããã2ããšããã®ã¯ããIn Visibilityãã®å€ã®é
åçªå·ã«ãªãããé衚瀺ããæå³ããŠããŸãã ãããŸã§ã§ãã㣠ã©ã¯ ã¿ãŒé äžã®ã¢ã€ã³ã³ã¯äžæŠé衚瀺ã«ãªã£ãŠããã¯ãã§ãã æ¬¡ã«ããŒããŒãã®ã5ããæŒããæã«ã¢ã€ã³ã³ã衚瀺ãããåŠçã®èª¬æãè¡ããŸãã ãPress 5ãããŒãã远å ãããPressedãã®ãã³ã«å¯ŸããŠããvar_IconEmoteByteããã»ããããããã®ããŒãã远å ããŸãã 倿°ã®å€ãã0ãïŒãIn Visibilityãã®å€ã®é
åçªå·ã«ãªããã衚瀺ãã®æïŒã«æžãæããåŠçã®åŸã«ãå
ã»ã©äœæãããCast To WBP_IconEmoteãã®æµããè€è£œããŸãã ããã«ãããããŒããŒãã®ã5ããæŒããæã«ã¢ã€ã³ã³ã衚瀺ãããããšãã§ããŸãã ãããããã®ç¶æ
ã§ã¯ãŸã å·Šå³ã®ç»é¢ïŒ ãã«ããã¬ã€ã€ãŒ éïŒã§ã®åæã¯åããŠããªãã®ã§ã 次ã®ã¹ãããã§ä¿®æ£ããŠãããŸãã 4. ãã«ããã¬ã€ çš ã¬ããªã±ãŒã·ã§ã³ èšå® UEã§ ãã«ããã¬ã€ ãè¡ãéã¯ãã²ãŒã ãµãŒããŒãã²ãŒã ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠãæ
å ±ãã¬ããªã±ãŒãïŒè€è£œïŒããããšã§ã åã¯ã©ã€ã¢ã³ãéïŒãã¬ã€ã€ãŒéïŒã§ã®å·®ç°ãçããªãããã«ãªããŸãã ä»åäœã£ãåŠçã¯ããŸã ã¯ã©ã€ã¢ã³ãã§è¡ãããŠããã ãã®åŠçãªã®ã§ãã¯ã©ã€ã¢ã³ãéã§ã¯åæãããŸããã ãŸãã¯å
ã»ã©äœæãã倿°ãvar_IconEmoteByteãã ã¬ããªã±ãŒã·ã§ã³ ããèšå®ã«ããŸãã ãvar_IconEmoteByteãã®è©³çްç»é¢ãã ã¬ããªã±ãŒã·ã§ã³ ã®èšå®ããRepNotifyãã«èšå®ããŸãã ãRepNotifyããšã¯ã倿°ã®å€ããŠã©ããããŠããã倿°ã®å€ãå€ãã£ãæã«åŸç¶ã®é¢æ°ãOnRepãã颿°ãèµ·åãããŸãã 倿°ããRepNotifyãèšå®ã«ãããšãå·ŠåŽã®é¢æ°æ¬ã«ãOnRep_var_IconEmoteByteããšãã颿°ãã§ããŸãã æ¬¡ã«ããCast To WBP_IconEmoteããããSet Visibilityãã®åŠçãã³ããŒãããOnRep_var_IconEmoteByteãå
ã§è²Œãä»ããŸãã ãOnRep_var_IconEmoteByteãå
ãžã®ç§»åæ¹æ³ã¯ãå·ŠåŽã®é¢æ°æ¬ã®ãOnRep_var_IconEmoteByteããããã«ã¯ãªãã¯ããããšã§ç§»åãã§ããŸãã 貌ãä»ããåŠçããOn Rep Var Icon Emote ByteãããŒãã«ç¹ããå
ãã£ãå Žæã®åŠçã¯æ¶ããŠããŸããŸãã ããã§ããvar_IconEmoteByteãã®å€ãæžãæãã£ãéã«ãåŸç¶ã®åŠçãã²ãŒã ãµãŒããŒããã²ãŒã ã¯ã©ã€ã¢ã³ãã«åæããŠãããããã«ãªããŸãã ã¢ã€ã³ã³ã衚瀺ãããŠãã2ç§åŸã«ã¢ã€ã³ã³ãæ¶ãåŠçã远å ããããã«ãäžã®ããã«ãDelayãããŒããšãvar_IconEmoteByteãã®ã»ããçšã®ããŒãã远å ããŸããé衚瀺ã«ããå¿
èŠãããã®ã§ããvar_IconEmoteByteãã®å€ã¯ã2ãã«ããŸãã å®è¡ãããšäžã®åç»ã®ããã«ãªããŸãã å·ŠåŽã®ç»é¢ã®ãã¬ã€ã€ãŒã®ãšã¢ãŒãã¢ã€ã³ã³ã¯å³åŽã®ç»é¢ã«åæãããŠããã®ã«å¯Ÿããå³åŽã®ç»é¢ã®ãšã¢ãŒãã¯å·ŠåŽã«åæãããŠããªãããšãããããŸãã ãã®æåã¯ãªãã¹ã³ãµãŒããŒã§æ€èšŒãè¡ã£ãŠããããã®ãã®ã§ãã ãªãã¹ã³ãµãŒããŒã§ã¯ïŒäººã®ãã¬ã€ã€ãŒãã²ãŒã ãµãŒããŒãšã²ãŒã ã¯ã©ã€ã¢ã³ãäž¡æ¹ã®æ©èœããã¡ã ãã®ä»ã®ãã¬ã€ã€ãŒãã²ãŒã ã¯ã©ã€ã¢ã³ãã ãã®æ©èœãæã¡ãŸãã äžã®åç»ã§ã¯å·ŠåŽãã²ãŒã ãµãŒããŒãæã£ãŠããã¯ã©ã€ã¢ã³ãã§ãå³åŽãã²ãŒã ã¯ã©ã€ã¢ã³ãã ãã®ç»é¢ã«ãªããŸãã UEã® ã¬ããªã±ãŒã·ã§ã³ æ©èœã§ã¯ã ã²ãŒã ãµãŒããŒãæ
å ±ãã¬ããªã±ãŒãïŒè€è£œïŒããŠã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããåæããããšã¯åºæ¥ãŸããã ã²ãŒã ã¯ã©ã€ã¢ã³ããã²ãŒã ãµãŒããŒã®æ
å ±ãæžãæããŠåæããããšã¯åºæ¥ãŸããã ãŸããã¯ã©ã€ã¢ã³ããã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããŠåæããããšãåºæ¥ãŸããã ãŸãšãããšäžèšã®ããã«ãªããŸãã ã²ãŒã ãµãŒããŒã§ã®æ
å ±å€æŽãâãã²ãŒã ãµãŒããŒã®æ
å ±ãè€è£œããŠãã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããããšãå¯èœ ã²ãŒã ã¯ã©ã€ã¢ã³ãã§ã®æ
å ±å€æŽãâãã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãè€è£œããŠãã²ãŒã ãµãŒããŒã®æ
å ±ãæžãæããããšã¯äžå¯èœ ã²ãŒã ã¯ã©ã€ã¢ã³ãã§ã®æ
å ±å€æŽãâãã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãè€è£œããŠãä»ã®ã²ãŒã ã¯ã©ã€ã¢ã³ãã®æ
å ±ãæžãæããããšã¯äžå¯èœ äžèšã®çç±ãããå·ŠåŽã®è¡åã¯ã¬ããªã±ãŒããããå³åŽã®è¡åã¯ã¬ããªã±ãŒããããªãåŠçã«ãªã£ãŠããŸã£ãŠããã®ã§ä¿®æ£ããŠãããŸãã ãŸãã¯ã«ã¹ã¿ã ã€ãã³ãã远å ããŸããä»åã¯ãPress5syncããšããååã®ã€ãã³ãã«ããŸããã ãPress5syncããéžæããå³åŽã®è©³çްç»é¢ããè€è£œæ¬ã§ããµãŒããŒã§å®è¡ããéžæããŸãã æ¬¡ã«ããŒããŒãã®ã5ããæŒããŠèµ·åããåŠçããä»äœã£ããPress5syncãã«ç¹ãçŽããããŒããŒãã®ã5ãã®åŠçã¯ãPress5syncããèµ·åãããããã«ã€ãªããŸãã ããã«ãããã²ãŒã ã¯ã©ã€ã¢ã³ãåŽã§è¡ãããåŠçããã²ãŒã ãµãŒããŒã§å®è¡ãã圢åŒããšãã®ã§ã²ãŒã ãµãŒããŒãšã²ãŒã ã¯ã©ã€ã¢ã³ãéã§åæãåããããã«ãªããŸãã åæ§ã®æé ã§ãTextã¿ã€ãã®WidgetBlueprintã远å ããããšã§ãäžèšã®ãããªãšã¢ãŒãã远å ããããšãã§ããŸãã 以äžãã ãã«ããã¬ã€ ã«å¯Ÿå¿ãããšã¢ãŒãæ©èœãäœæããæé ã«ãªããŸãã ææ ä»åã®UE5ã§ ãã«ããã¬ã€ ã«å¯Ÿå¿ãããšã¢ãŒãæ©èœãäœæããæé ã調æ»ããã«ãããã UE5ã§ã®WidgetBlueprintã®äœ¿ç𿹿³ãã ãã«ããã¬ã€ ã®ã²ãŒã ãµãŒããŒãã²ãŒã ã¯ã©ã€ã¢ã³ãéã®é¢ä¿æ§ãªã©ã«è©³ãããªãããšãåºæ¥ãŸããã ãã«ããã¬ã€ ã®ãããžã§ã¯ããäœæããã«ãããããã¬ã€ã€ãŒéã®æ
å ±ã®åæïŒ ã¬ããªã±ãŒã·ã§ã³ ïŒã¯å¿
é äºé
ã«ãªãã®ã§ãä»åã®åºç€çãªç¥èãããšã«ãããè€é㪠ã¬ããªã±ãŒã·ã§ã³ ã®æ¹æ³ãªã©ãåŠç¿ããŠãããŸãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ISIDæ¡çšããŒãžïŒWeb3/ã¡ã¿ããŒã¹/AIïŒ åè https://docs.unrealengine.com/4.26/ja/InteractiveExperiences/Networking/HowTo/DedicatedServers/ https://docs.unrealengine.com/4.27/ja/Resources/ContentExamples/Networking/1_4/ https://qiita.com/Shibash/items/2408b653abe0549abe37 å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
çããããã«ã¡ã¯ïŒISIDæ°åå
¥ç€Ÿ7幎ç®ã®æ± å
ã§ããçŸåšã¯EITäºæ¥éšïŒ ãšã³ã¿ãŒãã©ã€ãº ITäºæ¥éšïŒã«æå±ããŠãããISIDã®èªç€Ÿéçºè£œåã§ãããBusinessSPECTREãïŒããžã ã¹ã¹ã ã¯ãã«ïŒããVisAPãïŒãŽã£ã¹ãšãŒããŒïŒã®ææ¡ãå°å
¥ãæ
åœããŠããŸãã ãã®ããã°ãéããç§ã®ä»äºå
容ã1æ¥ã®æµãããŸãISIDã«å°ãã§ãèå³ãæã£ãŠãããã就掻çã«ãšã£ãŠåœ¹ç«ã€æ
å ±ãçºä¿¡ã§ããã°ãšæã£ãŠããŸãïŒ 1.ãèªå·±çŽ¹ä» ããã§ã¯æ©éãç°¡åã«èªå·±ç޹ä»ãããŠãã ããã 倧åŠã倧åŠé¢ã忥ãã2017å¹Žã«æ°å
¥ç€Ÿå¡ãšããŠISIDãžå
¥ç€ŸããŸããã倧åŠåšåŠäžã¯ãç¹ã«æ
å ±ç³»ïŒããã°ã©ã ãšãïŒã®ææ¥ããªãã¹ãé¿ããŠããŸããã®ã§ãIT ãªãã©ã·ãŒ ã¯ã»ãŒ0ã倧åŠã倧åŠé¢ã§ã¯ çµ±èšåŠ ãå°æ»ããŠããŸããã åœæã補è¬äŒç€Ÿã®ããŒã¿ãµã€ãšã³ãã£ã¹ããå¿æãã就掻ã«å±ãã§ããŸããããæ®å¿µãªããã©ã®äŒç€Ÿãããæçµé¢æ¥ãžã®ãã±ãããããããããã£ã±ãè¬åŠéšã«é²åŠããªããšã ããªã®ããªïœãšããèªåã£ãŠå°æ¥ã©ãã§äœããŠåããã ããïœãšããè²ã
èããªããæ¥ã
ãéãããŠãããšãããISIDã«åºäŒãããšãã§ãå
¥ç€Ÿããããšã決ããŸããã å
¥ç€ŸåŸã®é
å±å
ãšããŠã¯ãäž»ã«é¡§å®¢ã®åºå¹¹ã·ã¹ãã ïŒäŒèšã販売ãåšåº«ãªã©ã顧客ã®å¿èãšãªãã·ã¹ãã ïŒåšãã®ãä»äºãããŠããéšçœ²ã«é
å±ãããããšã«ãªããŸããã 幎床ããšã«çµç¹å€æŽããããéšçœ²åãå€ãã£ãŠã°ããã§ãããä»äºå
容ã¯å€ãããåºå¹¹ã·ã¹ãã ã®åšèŸºé åïŒBIãDWHãšãåŒã°ããïŒã®ãœãªã¥ãŒã·ã§ã³ãææ¡ãããå°å
¥ãããããŠããŸãã â»ISIDã®èªç€Ÿéçºè£œåãBusinessSPECTREãïŒããžã ã¹ã¹ã ã¯ãã«ïŒããVisAPãïŒãŽã£ã¹ãšãŒããŒïŒã«ã€ããŠã¯ããã¡ãã®ãµã€ãïŒ https://erp.isid.co.jp/solution/sap-bi-businessspectre/ ïŒã«æ²èŒãããŠããŸãã®ã§èå³ã®ããæ¹ã¯æ¯éïŒ 2.ã就掻çã®çãããæ°ã«ãªãã§ããã質åã«æ·¡ã
ãšçããŸã Q1. ã©ããªãä»äºïŒ A1. ISIDã®èªç€Ÿéçºè£œåãBusinessSPECTREãããVisAPãã®ææ¡ãå°å
¥æŽ»åãããŠããŸãããã€ã補ã®åºå¹¹ã·ã¹ãã ãSAPããå°å
¥ããŠããã客æ§ãã¿ãŒã²ããã«ãæ¥ã
ã®æ¥åããŒã¿ãèç©âåæâå¯èŠåãããããªã·ã¹ãã ãææ¡ããŠããŸãã Q2. ã©ããªè·å Žç°å¢ïŒ A2. äžåžãå
茩ãšã¯ãããã³ãã¥ãã±ãŒã·ã§ã³ãåããŸããæè¿ã§ã¯ãã¬ã¯ãŒã¯ã®ããã瀟å
æåãããã£ããã§ã®ããåããäž»æµã§ãããä»äºã®ããšã¯ãã¡ãããã©ã€ããŒããªããšã§ãæ°å
Œããªã話ã§ããã¡ã³ããŒã°ããã®ç°å¢ã ãªãšæããŠããŸããåæãšãããŸã«é£çµ¡ãåãåããŸããåæã¯å®ç©ã§ãã Q3. æè²å¶åºŠã¯ïŒ A3. å
¥ç€ŸåŸã¯æ°äººæè²ã®ã«ãªãã¥ã©ã ãçµãŸããŠãããããããã«åã£ãŠæè²ãåããããšãã§ããŸããITã«é¢ããç ä¿®ãã瀟äŒäººãšããŠã®ãããŒç ä¿®ãªã©å
å®¹ã¯æ§ã
ã§ãã©ããISIDã§åããŠããäžã§å¿
èŠãªç¥èã§ããé
å±åŸã¯ç€Ÿå
ç ä¿®å¶åºŠãéããŠå°éåéã«ã€ããŠç¥èç¿åŸããæ©äŒããããŸããå幎ã«äžåºŠç³ã蟌ãããšãã§ããå®åãããªããªããèªèº«ã® ã¹ãã«ã¢ãã ãå³ãããšãã§ããã®ã§ãæå¹æŽ»çšããŠããŸãïŒ Q4. åããŠããŠãããããæãããšãã¯ïŒ A4. äžçªã¯ã客æ§ããæè¬ããããšããæ¡ä»¶ãç¡äºå®äºãããšãã§ããã幎次ãäžãããšè²¬ä»»æãå¢ããŸãããäžåžãå
茩ããã®æåŸ
ã倧ãããªããŸãããããã£ãæåŸ
ã«å¿ãããããšãããå±ãŸãã®èšèãããã£ããšãã«ãããããæããããšãå€ãã§ãã Q5. å
¥ç€Ÿåã«ãã¹ãããšã¯ãããŸããïŒ A5. åãäžã§å¿
èŠãªããšã¯å
¥ç€ŸããŠããåŠã¹ãã®ã§ãç¹ã«ãã£ãŠããã¹ãããšã¯ãªãã§ããéã«åããŠããé·æäŒæãåãã¥ãããªãïŒäŒæã¯åãããã©è²ã
調æŽããã®ãé¢åïŒã®ã§ãæµ·å€æ
è¡ã«è¡ããšããæ¥ããããã«ã¯ã§ããªãããšã«ãã£ã¬ã³ãžããããšããªã¹ã¹ã¡ããŸãïŒ Q6. ãã¬ã¯ãŒã¯ã§ã®é£ããã¯ïŒ A6. åºç€Ÿæã«æ¯ã¹ãŠç€Ÿå
ã¡ã³ããŒãã客æ§ãšã®éè«ãæ¥µç«¯ã«æžã£ãããã«æããŸããå¯Ÿé¢æã¯æ°ã«ããããšãªãã§ããŠããéè«ããWebäŒè°è¶ãã§ã¯è¡šæ
ãèŠããªãããšã§éè«ãã¥ããæ°æã¡ã«ãªãã®ãæ£çŽãªãšããã§ããã客æ§ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã§ã¯éè«ã£ãŠçµæ§å€§äºãªã®ã§ããã®ãããã®ãã©ã³ã¹ãé£ããã§ããã Q7. ISIDã«å
¥ã£ãŠè¯ãã£ãããšã¯ïŒæªãã£ãããšã¯ïŒ A7. è¯ãã£ãããšã¯ãäœããISIDã®ã人æãã§ããæ¬åœã«ã¿ããªãŠãŒã¢ã¢ããã£ãŠãããããããã£ãŠãããã§ããŠé ãåããŠé¢çœããŠïŒïŒä»äºã ãã§ã¯ãªãããã©ã€ããŒãã§ãäžç·ã«éãããããšæããã¡ã³ããŒã°ããã§ããæªãã£ãããšã¯1ã€ããããŸããïŒæ¬åœã§ããïŒç¬ïŒ Q8. ISIDã«å
¥ç€Ÿãã人ã®å
±éç¹ã¯ïŒ A8. ãããŸã§å人çãªæèŠã§ããããã èªåãæã£ãŠããŠãèªåããããçžæã«äŒããããšãã§ãã è²ããªããšã«èå³ãæã£ãŠãã ããã«ãã£ã¬ã³ãžãããã Q9. ã©ããªåŸèŒ©ã欲ããã§ããïŒ A9. äœäºã«ããã£ã¬ã³ãžããŠããããæãæããŠãããåŸèŒ©ã¯å€§æè¿ã§ããäœäºããã£ãŠã¿ãªããšããããªãããšæãã®ã§ãåžžã«ååãã«ãã©ã€ããŠãããåŸèŒ©ãå
¥ã£ãŠããŠãããããšãé¡ã£ãŠããŸãïŒ Q10 . 1æ¥ã®æµãã¯ïŒ Q10 . ãããªæãã§ãã 3.ãæåŸã« ISIDã§äžç·ã«åããŸãããïŒç§ã®æå±ããéšã¯ãæ°åå
¥ç€Ÿãšäžéå
¥ç€Ÿã®ç€Ÿå¡ãåã
ãããã§ãã ç·å¥³æ¯ã¯ç·ïŒå¥³ïŒ8ïŒ2ãããã§ããããã æ¬èšäºã§ã玹ä»ããå
容ãåãã«ã€ããŠããŸãåºå¹¹ã·ã¹ãã åšèŸºåéã®ã·ã¹ãã å°å
¥æ¥åã«ãèå³ããæã¡ã®æ¹ã¯ããã²æ¡çšããŒãžãããå¿åãã ããïŒ ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ISID åéè·çš®äžèЧ å·çïŒ @ikeuchi.keisuke ãã¬ãã¥ãŒïŒ Ishizawa Kento (@kent) ïŒ Shodo ã§å·çãããŸãã ïŒ
çããããã«ã¡ã¯ïŒISIDæ°åå
¥ç€Ÿ7幎ç®ã®æ± å
ã§ããçŸåšã¯EITäºæ¥éšïŒ ãšã³ã¿ãŒãã©ã€ãº ITäºæ¥éšïŒã«æå±ããŠãããISIDã®èªç€Ÿéçºè£œåã§ãããBusinessSPECTREãïŒããžã ã¹ã¹ã ã¯ãã«ïŒããVisAPãïŒãŽã£ã¹ãšãŒããŒïŒã®ææ¡ãå°å
¥ãæ
åœããŠããŸãã ãã®ããã°ãéããç§ã®ä»äºå
容ã1æ¥ã®æµãããŸãISIDã«å°ãã§ãèå³ãæã£ãŠãããã就掻çã«ãšã£ãŠåœ¹ç«ã€æ
å ±ãçºä¿¡ã§ããã°ãšæã£ãŠããŸãïŒ 1.ãèªå·±çŽ¹ä» ããã§ã¯æ©éãç°¡åã«èªå·±ç޹ä»ãããŠãã ããã 倧åŠã倧åŠé¢ã忥ãã2017å¹Žã«æ°å
¥ç€Ÿå¡ãšããŠISIDãžå
¥ç€ŸããŸããã倧åŠåšåŠäžã¯ãç¹ã«æ
å ±ç³»ïŒããã°ã©ã ãšãïŒã®ææ¥ããªãã¹ãé¿ããŠããŸããã®ã§ãIT ãªãã©ã·ãŒ ã¯ã»ãŒ0ã倧åŠã倧åŠé¢ã§ã¯ çµ±èšåŠ ãå°æ»ããŠããŸããã åœæã補è¬äŒç€Ÿã®ããŒã¿ãµã€ãšã³ãã£ã¹ããå¿æãã就掻ã«å±ãã§ããŸããããæ®å¿µãªããã©ã®äŒç€Ÿãããæçµé¢æ¥ãžã®ãã±ãããããããããã£ã±ãè¬åŠéšã«é²åŠããªããšã ããªã®ããªïœãšããèªåã£ãŠå°æ¥ã©ãã§äœããŠåããã ããïœãšããè²ã
èããªããæ¥ã
ãéãããŠãããšãããISIDã«åºäŒãããšãã§ãå
¥ç€Ÿããããšã決ããŸããã å
¥ç€ŸåŸã®é
å±å
ãšããŠã¯ãäž»ã«é¡§å®¢ã®åºå¹¹ã·ã¹ãã ïŒäŒèšã販売ãåšåº«ãªã©ã顧客ã®å¿èãšãªãã·ã¹ãã ïŒåšãã®ãä»äºãããŠããéšçœ²ã«é
å±ãããããšã«ãªããŸããã 幎床ããšã«çµç¹å€æŽããããéšçœ²åãå€ãã£ãŠã°ããã§ãããä»äºå
容ã¯å€ãããåºå¹¹ã·ã¹ãã ã®åšèŸºé åïŒBIãDWHãšãåŒã°ããïŒã®ãœãªã¥ãŒã·ã§ã³ãææ¡ãããå°å
¥ãããããŠããŸãã â»ISIDã®èªç€Ÿéçºè£œåãBusinessSPECTREãïŒããžã ã¹ã¹ã ã¯ãã«ïŒããVisAPãïŒãŽã£ã¹ãšãŒããŒïŒã«ã€ããŠã¯ããã¡ãã®ãµã€ãïŒ https://erp.isid.co.jp/solution/sap-bi-businessspectre/ ïŒã«æ²èŒãããŠããŸãã®ã§èå³ã®ããæ¹ã¯æ¯éïŒ 2.ã就掻çã®çãããæ°ã«ãªãã§ããã質åã«æ·¡ã
ãšçããŸã Q1. ã©ããªãä»äºïŒ A1. ISIDã®èªç€Ÿéçºè£œåãBusinessSPECTREãããVisAPãã®ææ¡ãå°å
¥æŽ»åãããŠããŸãããã€ã補ã®åºå¹¹ã·ã¹ãã ãSAPããå°å
¥ããŠããã客æ§ãã¿ãŒã²ããã«ãæ¥ã
ã®æ¥åããŒã¿ãèç©âåæâå¯èŠåãããããªã·ã¹ãã ãææ¡ããŠããŸãã Q2. ã©ããªè·å Žç°å¢ïŒ A2. äžåžãå
茩ãšã¯ãããã³ãã¥ãã±ãŒã·ã§ã³ãåããŸããæè¿ã§ã¯ãã¬ã¯ãŒã¯ã®ããã瀟å
æåãããã£ããã§ã®ããåããäž»æµã§ãããä»äºã®ããšã¯ãã¡ãããã©ã€ããŒããªããšã§ãæ°å
Œããªã話ã§ããã¡ã³ããŒã°ããã®ç°å¢ã ãªãšæããŠããŸããåæãšãããŸã«é£çµ¡ãåãåããŸããåæã¯å®ç©ã§ãã Q3. æè²å¶åºŠã¯ïŒ A3. å
¥ç€ŸåŸã¯æ°äººæè²ã®ã«ãªãã¥ã©ã ãçµãŸããŠãããããããã«åã£ãŠæè²ãåããããšãã§ããŸããITã«é¢ããç ä¿®ãã瀟äŒäººãšããŠã®ãããŒç ä¿®ãªã©å
å®¹ã¯æ§ã
ã§ãã©ããISIDã§åããŠããäžã§å¿
èŠãªç¥èã§ããé
å±åŸã¯ç€Ÿå
ç ä¿®å¶åºŠãéããŠå°éåéã«ã€ããŠç¥èç¿åŸããæ©äŒããããŸããå幎ã«äžåºŠç³ã蟌ãããšãã§ããå®åãããªããªããèªèº«ã® ã¹ãã«ã¢ãã ãå³ãããšãã§ããã®ã§ãæå¹æŽ»çšããŠããŸãïŒ Q4. åããŠããŠãããããæãããšãã¯ïŒ A4. äžçªã¯ã客æ§ããæè¬ããããšããæ¡ä»¶ãç¡äºå®äºãããšãã§ããã幎次ãäžãããšè²¬ä»»æãå¢ããŸãããäžåžãå
茩ããã®æåŸ
ã倧ãããªããŸãããããã£ãæåŸ
ã«å¿ãããããšãããå±ãŸãã®èšèãããã£ããšãã«ãããããæããããšãå€ãã§ãã Q5. å
¥ç€Ÿåã«ãã¹ãããšã¯ãããŸããïŒ A5. åãäžã§å¿
èŠãªããšã¯å
¥ç€ŸããŠããåŠã¹ãã®ã§ãç¹ã«ãã£ãŠããã¹ãããšã¯ãªãã§ããéã«åããŠããé·æäŒæãåãã¥ãããªãïŒäŒæã¯åãããã©è²ã
調æŽããã®ãé¢åïŒã®ã§ãæµ·å€æ
è¡ã«è¡ããšããæ¥ããããã«ã¯ã§ããªãããšã«ãã£ã¬ã³ãžããããšããªã¹ã¹ã¡ããŸãïŒ Q6. ãã¬ã¯ãŒã¯ã§ã®é£ããã¯ïŒ A6. åºç€Ÿæã«æ¯ã¹ãŠç€Ÿå
ã¡ã³ããŒãã客æ§ãšã®éè«ãæ¥µç«¯ã«æžã£ãããã«æããŸããå¯Ÿé¢æã¯æ°ã«ããããšãªãã§ããŠããéè«ããWebäŒè°è¶ãã§ã¯è¡šæ
ãèŠããªãããšã§éè«ãã¥ããæ°æã¡ã«ãªãã®ãæ£çŽãªãšããã§ããã客æ§ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã§ã¯éè«ã£ãŠçµæ§å€§äºãªã®ã§ããã®ãããã®ãã©ã³ã¹ãé£ããã§ããã Q7. ISIDã«å
¥ã£ãŠè¯ãã£ãããšã¯ïŒæªãã£ãããšã¯ïŒ A7. è¯ãã£ãããšã¯ãäœããISIDã®ã人æãã§ããæ¬åœã«ã¿ããªãŠãŒã¢ã¢ããã£ãŠãããããããã£ãŠãããã§ããŠé ãåããŠé¢çœããŠïŒïŒä»äºã ãã§ã¯ãªãããã©ã€ããŒãã§ãäžç·ã«éãããããšæããã¡ã³ããŒã°ããã§ããæªãã£ãããšã¯1ã€ããããŸããïŒæ¬åœã§ããïŒç¬ïŒ Q8. ISIDã«å
¥ç€Ÿãã人ã®å
±éç¹ã¯ïŒ A8. ãããŸã§å人çãªæèŠã§ããããã èªåãæã£ãŠããŠãèªåããããçžæã«äŒããããšãã§ãã è²ããªããšã«èå³ãæã£ãŠãã ããã«ãã£ã¬ã³ãžãããã Q9. ã©ããªåŸèŒ©ã欲ããã§ããïŒ A9. äœäºã«ããã£ã¬ã³ãžããŠããããæãæããŠãããåŸèŒ©ã¯å€§æè¿ã§ããäœäºããã£ãŠã¿ãªããšããããªãããšæãã®ã§ãåžžã«ååãã«ãã©ã€ããŠãããåŸèŒ©ãå
¥ã£ãŠããŠãããããšãé¡ã£ãŠããŸãïŒ Q10 . 1æ¥ã®æµãã¯ïŒ Q10 . ãããªæãã§ãã 3.ãæåŸã« ISIDã§äžç·ã«åããŸãããïŒç§ã®æå±ããéšã¯ãæ°åå
¥ç€Ÿãšäžéå
¥ç€Ÿã®ç€Ÿå¡ãåã
ãããã§ãã ç·å¥³æ¯ã¯ç·ïŒå¥³ïŒ8ïŒ2ãããã§ããããã æ¬èšäºã§ã玹ä»ããå
容ãåãã«ã€ããŠããŸãåºå¹¹ã·ã¹ãã åšèŸºåéã®ã·ã¹ãã å°å
¥æ¥åã«ãèå³ããæã¡ã®æ¹ã¯ããã²æ¡çšããŒãžãããå¿åãã ããïŒ ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ISID åéè·çš®äžèЧ å·çïŒ @ikeuchi.keisuke ãã¬ãã¥ãŒïŒ Ishizawa Kento (@kent) ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®è¿ã§ãã AWS Security Hubã® ã³ã³ãããŒã« ã«ã¯ãã倿Žã«ãã£ãŠããªã¬ãŒããããã§ãã¯ããšã宿çãªãã§ãã¯ãããããŸãã ããããã®ãã§ãã¯ã¹ã±ãžã¥ãŒã«ã«ã€ããŠã¯ ãã¡ã ã«èšèŒããããã宿çãªãã§ãã¯ãã¯æ¬¡ã®ããã«æžãããŠããŸãã 宿çãªãã§ãã¯ã¯ãæåŸã®å®è¡ãã 12 æéãŸã㯠24 æé以å
ã«èªåçã«å®è¡ãããŸããåšæã¯ Security Hub ã«ãã£ãŠæ±ºå®ããã倿Žã¯ã§ããŸããã宿çãªã³ã³ ãããŒã« ã¯ãå®è¡æã®è©äŸ¡ããã£ããã£ããŸãã ããªãã¡ããªãœãŒã¹äœæã»å€æŽåŸã«ããã«ãã§ãã¯ãè¡ãããªãå Žåããããæå€§ã§24æéåŸ
ããªããã°ãªããŸãããã³ã³ ãããŒã« ã®åãã調æ»ããããšããªã©ã«äžäŸ¿ã ãšæããŠããŸããããã宿çãªãã§ãã¯ãã«å¯ŸããŠãããã«å®è¡ããæ¹æ³ãèŠã€ããã®ã§ã玹ä»ããŸãã 宿çãªãã§ãã¯ãããã«å®è¡ããæ¹æ³ 1. ã³ã³ãããŒã«ã«å¯Ÿå¿ãã Config ã«ãŒã«ãç¹å®ãã 2. AWS Config ã³ã³ãœãŒã«ã§ã«ãŒã«ãèŠã€ãã 3. ãã¢ã¯ã·ã§ã³ã>ãåè©äŸ¡ããå®è¡ãã ã³ãã³ãã©ã€ã³ã§ãã§ãã¯ãããã«å®è¡ããæ¹æ³ å®æçãªãã§ãã¯ãããã«å®è¡ããæ¹æ³ 1. ã³ã³ ãããŒã« ã«å¯Ÿå¿ãã Config ã«ãŒã«ãç¹å®ãã Security Hubã®ã»ãã¥ãªãã£ãã§ãã¯ã¯ AWS Config ã«ãŒã«ãå©çšããŠãããããã¥ã¡ã³ãã«ã¯ããããã®ã³ã³ ãããŒã« ãå©çšããŠãã Config ã«ãŒã«ãèšèŒãããŠããŸãã ãŸã㯠AWS ã®å
¬åŒããã¥ã¡ã³ããããããã«ãã§ãã¯ãå®è¡ãããã³ã³ ãããŒã« ã® Config ã«ãŒã«ãç¹å®ããŸãããã https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-controls-reference.html 2. AWS Config ã³ã³ãœãŒã«ã§ã«ãŒã«ãèŠã€ãã AWS Configã®ã³ã³ãœãŒã«ã«ãŠã該åœããã«ãŒã«ãèŠã€ããŸããã«ãŒã«ã«ãã£ãŠã¯ååãå°ãç°ãªãå Žåãããããã§ãã 3. ãã¢ã¯ã·ã§ã³ã>ãåè©äŸ¡ããå®è¡ãã ã«ãŒã«å³äžã®ãã¢ã¯ã·ã§ã³ã>ãåè©äŸ¡ããã¯ãªãã¯ãããšãããã«ãã§ãã¯ãåå®è¡ããŠãããŸãã ãã°ããããŠãªããŒããããšãæåŸã«è©äŸ¡ããæ¥æãšã«ãŒã«ã«éæºæ ãªãªãœãŒã¹ãæŽæ°ãããŸããã Security Hubã®ã³ã³ãœãŒã«ã§ããããã«ãã§ãã¯ã®çµæãåæ ãããŠããŸããã ã³ãã³ãã©ã€ã³ ã§ãã§ãã¯ãããã«å®è¡ããæ¹æ³ ã«ãŒã«åãç¹å®ããåŸã®ãåè©äŸ¡ãæäœã¯ã ã³ãã³ãã©ã€ã³ ã® start-config-rules-evaluation ã³ãã³ã ã§å®è¡ããããšãã§ããŸãã aws configservice start-config-rules-evaluation --config-rule-name <ã«ãŒã«å> ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžãã¢(ã»ãã¥ãªãã£èšèš) å·çïŒ @kou.kinyo ãã¬ãã¥ãŒïŒ @yamada.y ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®è¿ã§ãã AWS Security Hubã® ã³ã³ãããŒã« ã«ã¯ãã倿Žã«ãã£ãŠããªã¬ãŒããããã§ãã¯ããšã宿çãªãã§ãã¯ãããããŸãã ããããã®ãã§ãã¯ã¹ã±ãžã¥ãŒã«ã«ã€ããŠã¯ ãã¡ã ã«èšèŒããããã宿çãªãã§ãã¯ãã¯æ¬¡ã®ããã«æžãããŠããŸãã 宿çãªãã§ãã¯ã¯ãæåŸã®å®è¡ãã 12 æéãŸã㯠24 æé以å
ã«èªåçã«å®è¡ãããŸããåšæã¯ Security Hub ã«ãã£ãŠæ±ºå®ããã倿Žã¯ã§ããŸããã宿çãªã³ã³ ãããŒã« ã¯ãå®è¡æã®è©äŸ¡ããã£ããã£ããŸãã ããªãã¡ããªãœãŒã¹äœæã»å€æŽåŸã«ããã«ãã§ãã¯ãè¡ãããªãå Žåããããæå€§ã§24æéåŸ
ããªããã°ãªããŸãããã³ã³ ãããŒã« ã®åãã調æ»ããããšããªã©ã«äžäŸ¿ã ãšæããŠããŸããããã宿çãªãã§ãã¯ãã«å¯ŸããŠãããã«å®è¡ããæ¹æ³ãèŠã€ããã®ã§ã玹ä»ããŸãã 宿çãªãã§ãã¯ãããã«å®è¡ããæ¹æ³ 1. ã³ã³ãããŒã«ã«å¯Ÿå¿ãã Config ã«ãŒã«ãç¹å®ãã 2. AWS Config ã³ã³ãœãŒã«ã§ã«ãŒã«ãèŠã€ãã 3. ãã¢ã¯ã·ã§ã³ã>ãåè©äŸ¡ããå®è¡ãã ã³ãã³ãã©ã€ã³ã§ãã§ãã¯ãããã«å®è¡ããæ¹æ³ å®æçãªãã§ãã¯ãããã«å®è¡ããæ¹æ³ 1. ã³ã³ ãããŒã« ã«å¯Ÿå¿ãã Config ã«ãŒã«ãç¹å®ãã Security Hubã®ã»ãã¥ãªãã£ãã§ãã¯ã¯ AWS Config ã«ãŒã«ãå©çšããŠãããããã¥ã¡ã³ãã«ã¯ããããã®ã³ã³ ãããŒã« ãå©çšããŠãã Config ã«ãŒã«ãèšèŒãããŠããŸãã ãŸã㯠AWS ã®å
¬åŒããã¥ã¡ã³ããããããã«ãã§ãã¯ãå®è¡ãããã³ã³ ãããŒã« ã® Config ã«ãŒã«ãç¹å®ããŸãããã https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-controls-reference.html 2. AWS Config ã³ã³ãœãŒã«ã§ã«ãŒã«ãèŠã€ãã AWS Configã®ã³ã³ãœãŒã«ã«ãŠã該åœããã«ãŒã«ãèŠã€ããŸããã«ãŒã«ã«ãã£ãŠã¯ååãå°ãç°ãªãå Žåãããããã§ãã 3. ãã¢ã¯ã·ã§ã³ã>ãåè©äŸ¡ããå®è¡ãã ã«ãŒã«å³äžã®ãã¢ã¯ã·ã§ã³ã>ãåè©äŸ¡ããã¯ãªãã¯ãããšãããã«ãã§ãã¯ãåå®è¡ããŠãããŸãã ãã°ããããŠãªããŒããããšãæåŸã«è©äŸ¡ããæ¥æãšã«ãŒã«ã«éæºæ ãªãªãœãŒã¹ãæŽæ°ãããŸããã Security Hubã®ã³ã³ãœãŒã«ã§ããããã«ãã§ãã¯ã®çµæãåæ ãããŠããŸããã ã³ãã³ãã©ã€ã³ ã§ãã§ãã¯ãããã«å®è¡ããæ¹æ³ ã«ãŒã«åãç¹å®ããåŸã®ãåè©äŸ¡ãæäœã¯ã ã³ãã³ãã©ã€ã³ ã® start-config-rules-evaluation ã³ãã³ã ã§å®è¡ããããšãã§ããŸãã aws configservice start-config-rules-evaluation --config-rule-name <ã«ãŒã«å> ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžãã¢(ã»ãã¥ãªãã£èšèš) å·çïŒ @kou.kinyo ãã¬ãã¥ãŒïŒ @yamada.y ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®è¿ã§ãã IAM ã® Permissions BoundaryïŒã¢ã¯ã»ã¹èš±å¯å¢çïŒ ã«ã€ããŠãããããŠããŸããã广ã¯ããããã®ã®ãã©ãã㊠IAM ããªã·ãŒã ãã§ã¯ãã¡ã§ Permissions Boundary ãå¿
èŠãªã®ãããããããŸããã§ããããã®èšäºã§ã¯ IAM ã®ããªã·ãŒããã¥ã¡ã³ããš API ã®ä»æ§ããã Permissions Boundary ãå°å
¥ãããæ¬è³ªçãªçç±ãèããŠã¿ãŸãã çµè«ããå
ã«è¿°ã¹ããšãPermissions Boundary ã䜿ãããšã§ç¹å®ã®æš©éãè¶
ã㊠IAM ãŠãŒã¶ãŒ/ããŒã«ãäœæãããã®ãé²ã广ãããããã㯠IAM ããªã·ãŒã ãã§ã¯å®çŸã§ããŸãããPermissions Boundary ã¯ãç¹å®ã®ãŠãŒã¶ãŒã IAM ãŠãŒã¶ãŒ/ããŒã«ãäœæããã®ãèš±å¯ãã€ã€ãæš©éææ Œã鲿¢ããç®çãªã©ã«äœ¿çšã§ããŸãã æš©éææ Œã®äŸ Permissions Boundary ãšã¯ æš©éææ Œãé²ãäŸ æ¬è³ª1: IAM ããªã·ãŒããã¥ã¡ã³ãã« iam:PermissionsBoundary æ¡ä»¶ããŒã䜿ãã æ¬è³ª2: Permissions Boundary 㯠CreateUser / CreateRole æã«è¿œå ã§ãã ãããã« æš©éææ Œã®äŸ ãŸã㯠IAM ã®æš©éææ Œãç°¡åãªäŸã§èŠãŠã¿ãŸãã 以äžã® IAM ããªã·ãŒãæã€ IAM ãŠãŒã¶ãŒããããšããŸãã iam:CreateRole ïŒIAM ããŒã«ãäœæããæš©éïŒ ãš iam:PutRolePolicy ïŒIAM ããŒã«ã«ã€ã³ã©ã€ã³ããªã·ãŒã远å ããæš©éïŒãããã«ã¯ sts:AssumeRole ãèš±å¯ãããŠããŸããä»ã®æš©éã«ã€ããŠã¯çç¥ããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": [ " iam:CreateRole ", " iam:PutRolePolicy " ] , " Resource ": " * " } , { " Effect ": " Allow ", " Action ": [ " sts:AssumeRole " ] , " Resource ": " * " } ] } iam:CreateRole ãèš±å¯ãããŠããã®ã§ã以äžã®ä¿¡é Œããªã·ãŒãæã€ IAM ããŒã«ãäœãããšãã§ããŸããïŒåãã¢ã«ãŠã³ãå
ã® ããªã³ã·ãã« ã§ããã°ã AssumeRole ãèš±å¯ïŒ { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Principal ": { " AWS ": " arn:aws:iam::000000000000:root " } , " Action ": " sts:AssumeRole " } ] } å
ã® IAM ãŠãŒã¶ãŒã¯ iam:PutRolePolicy ãèš±å¯ãããŠããã®ã§ãäœã£ãããŒã«ã«ä»»æã®ã€ã³ã©ã€ã³ããªã·ãŒã远å ã§ããŸããäŸãã°ä»¥äžã®ãããªå
šãŠãèš±å¯ããããªã·ãŒããšã©ãŒãªã远å ã§ããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " * ", " Resource ": " * " } ] } å
ã® IAM ãŠãŒã¶ãŒã¯ sts:AssumeRole ãèš±å¯ãããŠããã®ã§ãäœã£ãããŒã«ã AssumeRole ããã¢ã¯ã»ã¹ããŒIDãã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒãã»ãã·ã§ã³ ããŒã¯ ã³ãç²åŸããããšã§ãå
šãŠã®æäœãèš±å¯ãããæš©éãæã«å
¥ããããšãã§ããŸããå
ã®ãŠãŒã¶ãŒã«ã¯ã§ããªãã£ãæäœãã§ããããã«ãªãã®ã§ãæš©éææ ŒãããŠããŸãã ïŒä»¥äžã®äŸã¯ãIAM ãŠãŒã¶ãŒãããIAM ããŒã«ãçµç±ããŠãæš©éææ ŒããäŸã§ããããæš©éææ Œããäž»äœããIAM ããŒã«ãã®å ŽåãããIAM ãŠãŒã¶ãŒãçµç±ããŠãæš©éææ Œããå ŽåããããŸããïŒ Permissions Boundary ãšã¯ Permissions Boundary ã®å®æ
㯠IAM 管çããªã·ãŒã§ããä»ã® IAM 管çããªã·ãŒãšåãããã«äœæããŸãã äžã€ã® IAM ãŠãŒã¶ãŒ/ããŒã«ã«ã¯æå€§ã§1ã€ã® IAM 管çããªã·ãŒãã Permissions Boundary ãšããŠè¿œå ã§ããŸãããŸããPermissions Boundary ã«ã€ã³ã©ã€ã³ããªã·ãŒãæå®ããããšã¯ã§ããŸããã IAM ãŠãŒã¶ãŒ/ããŒã«ã« Permissions Boundary ã远å ãããŠããå Žåããã®ãŠãŒã¶ãŒ/ããŒã«ã«èš±å¯ãããæš©éã¯ã ã¢ã€ãã³ãã£ã㣠ããŒã¹ã®ããªã·ãŒããšãPermissions Boundaryãã® AND æ¡ä»¶ã«ãªããŸããPermissions Boundary ã§æç€ºçã«èš±å¯ãããŠããªãæš©éã¯ã ã¢ã€ãã³ãã£ã㣠ããŒã¹ã®ããªã·ãŒã§èš±å¯ãããŠããŠãæçµçã«ãŠãŒã¶ãŒ/ããŒã«ã«ã¯èš±å¯ãããŸããã ïŒ https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_boundaries.html ããïŒ æš©éææ Œãé²ãäŸ Permissions Boundary ã䜿ãããšã§ãã©ã®ããã«æš©éææ Œãé²ãããšãã§ããã®ãèŠãŠã¿ãŸãã 以äžã® IAM 管çããªã·ãŒã my-permissions-boundary ãšããååã§äœæããŸãã iam:CreateRole iam:PutRolePolicy sts:AssumeRole ã®3ã€ã®æš©éããèš±å¯ããŠããŸããã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": [ " iam:CreateRole ", " iam:PutRolePolicy ", " sts:AssumeRole " ] , " Resource ": " * " } ] } 察象㮠IAM ãŠãŒã¶ãŒã«äœæãã my-permissions-boundary ã Permissions Boundary ãšããŠè¿œå ããŸãã 察象㮠IAM ãŠãŒã¶ãŒã®ããªã·ãŒã以äžã®ããã«å€æŽããŸãã Condition å¥ã远å ããPermissions Boundary ãšã㊠my-permissions-boudary ãæå®ãããå Žåã®ã¿ iam:CreateRole iam:PutRolePolicy ã§ããããã«ããŠããŸããïŒãã®äŸã§ã¯èªèº«ã®ããªã·ãŒã倿Žããæš©éãæã£ãŠããªãããšããã€ã³ãã§ããïŒ { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": [ " iam:CreateRole ", " iam:PutRolePolicy " ] , " Resource ": " * ", " Condition ": { " StringEquals ": { " iam:PermissionsBoundary ": " arn:aws:iam::000000000000:policy/my-permissions-boudary " } } } , { " Effect ": " Allow ", " Action ": [ " sts:AssumeRole " ] , " Resource ": " * " } ] } 以äžãæºå段éã§ããã®ç¶æ
ã§ IAM ããŒã«ãçµç±ããŠæš©éææ Œã詊ã¿ãŠã次ã®ãããªçµæã«ãªããŸãã my-permissions-boudary ãä»äžããªããšãIAM ããŒã«ãäœãããšã«å€±æããŸãã my-permissions-boudary ãä»äžããã°ãIAM ããŒã«ãäœæã§ããŸãã Admin æš©éçžåœã®ã€ã³ã©ã€ã³ããªã·ãŒãäœæãã IAM ããŒã«ã«ã€ããAssumeRole ãããããšã¯ã§ããŸãããPermissions Boundary ã§æç€ºçã«èš±å¯ããã以äžã®æš©éãæã¡ãŸããã 以äžã¯ãããã Permissions Boundary ã®èª¬æã§ããããã®ããã«æš©éææ Œã®é²æ¢ãå®çŸã§ããã®ã¯ã2ã€ã®ä»æ§äžã®æ¬è³ªãããããã ãšèããŠããŸãã æ¬è³ª1: IAM ããªã·ãŒããã¥ã¡ã³ãã« iam:PermissionsBoundary æ¡ä»¶ããŒã䜿ãã æš©éææ Œãé²ããã IAM ãŠãŒã¶ãŒ/ããŒã«ã®ããªã·ãŒã« iam:PermissionsBoundary æ¡ä»¶ããŒã䜿ãã ã®ã第äžã®ãã€ã³ãã§ããããã«ãã£ãŠãPermissions Boundary ã«ç¹å®ã®ããªã·ãŒãååšããå Žåã«éã£ãŠç¹å®ã®æäœãèš±ãããšãã£ãæžãæ¹ãã§ããããã«ãªããŸããã " Condition ": { " StringEquals ": { " iam:PermissionsBoundary ": " arn:aws:iam::000000000000:policy/my-permissions-boudary " } } æ¬è³ª2: Permissions Boundary 㯠CreateUser / CreateRole æã«è¿œå ã§ãã ãã¡ãã¯ããéèŠã§ãã CreateUser ãš CreateRole ã® API 仿§ã確èªãããšããããã® API ãåŒã³ã ãæã®ãã©ã¡ãŒã¿ã§ Permissions Boundary ã远å ã§ããããšãããããŸãã äžæ¹ã§ãéåžžã®ããªã·ãŒã«ã€ããŠã¯ CreateUser ãš CreateRole ã®åŒã³åºãæã«è¿œå ããããšã¯ã§ãããåŸãã AttachUserPolicy ã PutUserPolicy ã AttachRolePolicy ã PutRolePolicy ãªã©å¥ API ã§ä»äžããªããã°ãªããŸãããããªãã¡ã IAM ãŠãŒã¶ãŒ/ããŒã«ãäœæããç¬éã«ã¯ããªã·ãŒãäœãã€ããŠããªãç¶æ
ã«ã©ãããŠããªã£ãŠããŸã ãæåããç¹å®ã® IAM ããªã·ãŒãæã€ããã«å¶éã§ããŸãããPermissions Boundary ã§ããã°äœæãšåæã«ä»äžã§ããã®ã§ã iam:PermissionsBoundary æ¡ä»¶ããŒãšäœµçšããããšã§ç¹å®ã® Permissions Boundary ãæã€å Žåã«éã£ãŠ ãŠãŒã¶ãŒ/ããŒã«ã®äœæãèš±å¯ããããšãã£ãæžãæ¹ãã§ããŸãã æšæž¬ã§ãããäœææããããªã·ãŒãä»äžã§ããããã«åŸæ¥ã® CreateUser / CreateRole ã® API 仿§ã倿Žããããããæ°ãã Permissions Boundary ãšããæ©èœã远å ããæ¹ãæãŸãããšå€æããã®ã§ã¯ãªãããšæããŸãã ãããã« çè§£ããŠããŠã IAM ã®æš©éã¯è€éã§ãPermissions Boundary ã䜿ãããªãã®ã¯æ
éãªèšå®ãå¿
èŠãªå°è±¡ã§ãã å
¬åŒããã¥ã¡ã³ãã®äŸ ã«ãç®ãéããšãããã«çè§£ã®å©ãã«ãªãã®ã§ã¯ãªãããšæããŸãã ãèªã¿ããã ããŠããããšãããããŸããã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžãã¢(ã»ãã¥ãªãã£èšèš) å·çïŒ @kou.kinyo ãã¬ãã¥ãŒïŒ @nakamura.toshihiro ïŒ Shodo ã§å·çãããŸãã ïŒ