ISID X(ã¯ãã¹) ã€ãããŒã·ã§ã³ æ¬éš ããžã¿ã«ãšã³ã²ãŒãžã¡ã³ãã»ã³ã¿ãŒ ã® æ ¹æ¬åº·å¹³ ã§ãã ä»åã¯ãTeamsãæ¥ããå©çšããŠããã»é¢åãªäœæ¥ã¯å«ã»äœæ¥ãèªååããããã»PowerAutomateã¯è¯ãç¥ããªãããšããæ¹ã«åããŠãPowerAutomateã§äœãã§ããã®ããã玹ä»ããèšäºã§ãã æ¬èšäºã®ååã§ã¯ã1ããç°¡åãªèªåååŠçãäœããPowerAutomateãã«ã€ããŠã®çè§£ãæ·±ããŸãã èšäºã®åŸåã§ã¯ãPowerAutomateã§äœ¿ããæ©èœãããã³ãã¬ãŒããã«è§Šããç°¡åã«è€éãªèªåååŠçãäœãããšãã§ããããšãç¥ã£ãŠããã ããã°ãšæããŸãã PowerAutomateãšã¯ ãããŒãäœã£ãŠèªåã§Teamsã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã è€éãªèªååæ©èœãç°¡åã«äœãã PowerAutomateãšã¯ å
ã»ã©ããæ°åç»å ŽããŠãããPowerAutomateãã¯ã Microsoft ãæäŸããŠããæ¥åå¹çåãç®çãšããããŒã«ã§ãã èªåã¯ãŒã¯ãããŒãäœãããšã§ãé¢åãªå®åäœæ¥ãç¹°ãè¿ãäœæ¥ã人ã®ä»£ããã«ãã£ãŠãããŸãã å
·äœçã«ã¯ããã¡ãŒã«ãåä¿¡ãããTeamsã«éç¥ãæ¥ãããã«ããããã¡ãŒã«ã«æ·»ä»ãããŠãããã¡ã€ã«ãOneDriveã«èªåä¿åãããã Excel ããŒã¿ã宿çã«å å·¥ããããªã©ã®äœæ¥ãèªåã§ãã£ãŠãããŸãã æéã®åæžã¯ãã¡ãããåçŽãªäœæ¥ãã¹ãªã©ãæžããããšãå¯èœã§ãã ãããŒãäœã£ãŠèªåã§Teamsã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã ããããã15åã§åºæ¥ãTeamsèªåæçš¿ãããŒã®äœãæ¹ã玹ä»ããŸãã ãªããPowerAutomateãå©çšã§ããç°å¢/ãŠãŒã¶ã§ããããšãåæãšãã説æã§ãã 宿ãããããŒã§åºæ¥ãããšã¯æ¬¡ã®ãšããã§ãã æ¯é±éææ¥ 18:00 ã«ç¹å®ã®Teamsãã£ãã«ã«èªåã§ã¡ãã»ãŒãžãæçš¿ èªåãšäžåžAã«å¯ŸããŠã¡ã³ã·ã§ã³ 以äžã®æµãã§ãããŒãäœæããŸãã æ¯é±éææ¥ 18:00 ã«èµ·åããæ°ãããããŒãäœã ã¡ã³ã·ã§ã³ãããŠãŒã¶ã決ããã¢ã¯ã·ã§ã³ãäœã ã¡ãã»ãŒãžå
å®¹ãæ±ºããTeamsã«æçš¿ããã¢ã¯ã·ã§ã³ãäœã åäœããã¹ããã ããã§ã¯ããããããããŒäœæã®æé ã玹ä»ããŸãã Teamsã¢ããªãéã ãã¢ããªããã¯ãªã㯠ãPower Automateããã¯ãªã㯠ããŠã§ããµã€ãã衚瀺ããããã¯ãªã㯠ããã€ãããŒããã¯ãªãã¯ ãæ°ãããããŒããã¯ãªã㯠ãã¹ã±ãžã¥ãŒã«æžã¿ ã¯ã©ãŠã ãããŒããã¯ãªã㯠ãããŒåãå
¥åãéå§æ¥ã«ä»»æã®æ¥ä»ãšæéãå
¥åãç¹°ãè¿ãééã1é±éãéæãéžæããäœæããã¯ãªã㯠Recurrence ãã¯ãªã㯠ã詳现ãªãã·ã§ã³ã衚瀺ããããã¯ãªã㯠èšå®æå»ïŒæéïŒã«18ãèšå®æå»ïŒåïŒã«0ãå
¥åïŒããã§æ¯é±éææ¥ã®18:00ã«ãã®ãããŒãå®è¡ãããŸãïŒ ãæ°ããã¹ãããããã¯ãªã㯠ã³ãã¯ã¿ãšã¢ã¯ã·ã§ã³ãæ€çŽ¢ãã æ¬ã« Teams ãšå
¥åããããŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããããã¯ãªã㯠ãŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããæåã®æšªã äžç¹ãªãŒã ãŒãã¯ãªãã¯ãååããèªåãžã®ã¡ã³ã·ã§ã³ããšå€æŽ ãŠãŒã¶ãŒã®æ¬ã«èªåã®ãŠãŒã¶ ããªã³ã·ãã« ããŒã ïŒåºæ¬çã«ã¯ã¡ãŒã«ã¢ãã¬ã¹ïŒãå
¥å ãæ°ããã¹ãããããã¯ãªã㯠ã³ãã¯ã¿ãšã¢ã¯ã·ã§ã³ãæ€çŽ¢ãã æ¬ã« Teams ãšå
¥åããããŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããããã¯ãªã㯠ãŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããã®æåæšªã äžç¹ãªãŒã ãŒãã¯ãªãã¯ãååããäžåžãžã®ã¡ã³ã·ã§ã³ããšå€æŽ ãŠãŒã¶ãŒã®æ¬ã«äžåžAã®ãŠãŒã¶ ããªã³ã·ãã« ããŒã ïŒåºæ¬çã«ã¯ã¡ãŒã«ã¢ãã¬ã¹ïŒãå
¥å ãæ°ããã¹ãããããã¯ãªã㯠ã³ãã¯ã¿ãšã¢ã¯ã·ã§ã³ãæ€çŽ¢ãã æ¬ã« Teams ãšå
¥åããããã£ãããŸãã¯ãã£ãã«ã§ã¡ãã»ãŒãžãæçš¿ããããã¯ãªã㯠æçš¿è
ã§ããããŒãããããéžæ æçš¿å
ã§ãChannelããéžæ Teamã§ïŒ»æçš¿ãããTeamãéžæ Channelã§ïŒ»æçš¿ãããChannelãéžæ Messageã® Add message ãã¯ãªãã¯ãåçãªã³ã³ãã³ãããäžåžãžã®ã¡ã³ã·ã§ã³@mentionãšïŒ»èªåãžã®ã¡ã³ã·ã§ã³ @mentionãã¯ãªã㯠æ¹è¡ããæçš¿ã«æžãããã¡ãã»ãŒãžãèšå
¥ ç»é¢å³äžã®ãä¿åããã¯ãªã㯠ç»é¢å³äžã®ããã¹ãããã¯ãªã㯠ãæåããéžæããããã¹ãããã¯ãªã㯠ããããŒã®å®è¡ããã¯ãªãã¯ïŒïŒå®éã«åäœããã¹ããããã®ã§ããæ¬åœã«èªåãšäžåžAãã¡ã³ã·ã§ã³ããŠæçš¿ããããŸãã®ã§ã泚æãã ããïŒïŒ ããããŒå®è¡ããŒãžããã¯ãªã㯠éå§æéãã¯ãªãã¯ããããŒãã©ã®ããã«å®è¡ãããã確èªã§ããŸãã ãã¹ãã§å®éã«æå®ããChannelã«ã¡ã³ã·ã§ã³ä»ãã®æçš¿ããããããç¢ºèª ããã€ãããŒããã¯ãªã㯠ä»åäœæãããããŒãã¯ãªã㯠ããªãã«ããããã¯ãªãã¯ïŒãããå¿ãããšãæ¯é±éææ¥18:00ã«æçš¿ãããŠããŸãã®ã§æ³šæããŠãã ããïŒïŒ 15åã§åºæ¥ãTeamsèªåæçš¿ãããŒäœæã®èª¬æã¯ä»¥äžã§ãã è€éãªèªååæ©èœãç°¡åã«äœãã äžã®ãã³ãºãªã³ã§ã¯ã ãŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸãã ãã ãã£ãããŸãã¯ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã ãã®2ã€ã®ã¢ã¯ã·ã§ã³ãã䜿çšããŠããŸããããä»ã«ãæ§ã
ãªã¢ã¯ã·ã§ã³ãå¯èœã§ãããèªèº«ã§è§Šããæ¹ã¯ãè²ã
ãšè©ŠããŠã¿ãŠãã ããã äŸãã°ãã倿°ããšå
¥åããã°ã 倿°ã®èšå® ããã é
å倿°ã«è¿œå ããåºæ¥ãããã æ¡ä»¶åå² ããã ç¹°ãè¿ã ããã Excel ã®æ
å ±ãååŸã»æŽæ°ã»åé€ ããå¯èœã§ããã ã¡ãŒã«ã®éä¿¡ ããã AIã¢ãã«ã®æ§ç¯ ããåºæ¥ãŸãã ãšã¯ãããè€éãªãããŒãäœãããšããããæéããããéäžã§æ«æããŠããŸããããããŸããã ã§ãããæ§ã
ãªãããŒãã ãã³ãã¬ãŒã ããšããŠçšæãããŠããã®ã§ãããã䜿ããšæ¥œã«ãããŒãäœãããšãã§ããŸãã äŸãã°ã Microsoft Formsã§ã¢ã³ã±ãŒããæåºãããšã¡ãŒã«éç¥ãã Sharepoint ãªã¹ãã«åçå
容ãä¿åããããããŒããã¿ã³ãæŒããã10ååŸã«Teamsã§éç¥ããããããŒãªã©ãæ§ã
ãªãã³ãã¬ãŒããçšæãããŠããŸãã ãããã®ãã³ãã¬ãŒãã䜿ããªãããèªåæµã«ãããŒãã«ã¹ã¿ãã€ãºããŠå©çšã§ããŸãã é¢åãªæ¿èªäœæ¥ã倿 管çãªã©ãPowerAutomateã䜿ã£ãŠå¹çåã§ãããã§ããïŒ ç§ã®æå±ããŠãããŠããããéšçœ²ã§ã¯ãPowerAutomateã䜿ã£ãŠæ¬¡ã®ãããªããšãããŠããŸãã æ¯æ¥ã®å€æ 管çïŒç¹å®ã®æéãŸã§ã«å€åéå§ã®ã¢ã¯ã·ã§ã³ããªã瀟å¡ã«å¯ŸããŠãå€åéå§ããŠãããã確èªããTeamsã¡ãã»ãŒãžæçš¿ãèªåã§è¡ã ããŒã¿ã«ãµã€ã ã®ã¢ã¯ã·ã§ã³ãéç¥ïŒãŠãããå
ã§æŽ»çšããŠãã ããŒã¿ã«ãµã€ã ã«æ°ããèšäºãæçš¿ããããã¢ã¯ã·ã§ã³ãè¡ãããå Žåã«ãç¹å®ã®Teamsãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã 宿çã« Excel ããŒã¿ã®ç¢ºèªãšæšç§»ã°ã©ãã®äœæïŒæ¯æç¹å®ã® Excel ãã¡ã€ã«å
ã®ããŒã¿ã確èªããæããšã«ããŒã¿ãã©ã®ããã«æšç§»ãããã衚ãã°ã©ããäœæãã ç§ã®æå±ãããŠãããã§ã¯ãäœæ¥ãå¹çåããã«ã¯ã©ãããã°ãããããã¡ã³ããŒéã®ã³ãã¥ãã±ãŒã·ã§ã³ã掻çºã«ããããã«ã©ãããã°ãããããªã©ã宿çã«ç€Ÿå¡å士ã§è©±ãåããPowerAutomateãã¯ããæ§ã
ãªããŒã«ã掻çšããŠèª²é¡ã解決ããŠããŸãã ä»åã¯PowerAutomateã玹ä»ããããŸãããä»ã«ããPowerAppsãšããç°¡åã«ã¢ããªãäœæã§ããããŒã«ããã£ããããŸããPowerAppsã®äœ¿ãæ¹ã玹ä»ãããããªèšäºãæžããããããªãã®ã§ããŸãèŠãŠããã ãããšå¬ããã§ãïŒ ISID X(ã¯ãã¹) ã€ãããŒã·ã§ã³ æ¬éš ããžã¿ã«ãšã³ã²ãŒãžã¡ã³ãã»ã³ã¿ãŒ ã§ã¯ã Microsoft Power Platform ã Dynamics 365 ã Salesforce ãçšããDXæšé² ãªã©ãããŠãããŸããå
šç€ŸçãªDXæšé²ã顧客æ¥ç¹ã®æé©åããšã³ã²ãŒãžã¡ã³ãã®åŒ·åãªã©ã®ãå°ãäºãããããŸããããæ°è»œã«ãååããã ããã ISID顧客æ¥ç¹DXãœãªã¥ãŒã·ã§ã³ãµã€ãã¯ãã¡ã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ãå
šç€ŸéçŽãCRMãœãªã¥ãŒã·ã§ã³ã³ã³ãµã«ã¿ã³ã ITæ¥çã«èå³ã®ãã就掻çã®çããŸããã²ãå¿åãã ããïŒ ãæ°åæ¡çšãISID ãªã¯ã«ãŒããµã€ã å·çïŒ @nemoto.kouhei ãã¬ãã¥ãŒïŒ @fukutake.hiroaki ïŒ Shodo ã§å·çãããŸãã ïŒ
ISID X(ã¯ãã¹) ã€ãããŒã·ã§ã³ æ¬éš ããžã¿ã«ãšã³ã²ãŒãžã¡ã³ãã»ã³ã¿ãŒ ã® æ ¹æ¬åº·å¹³ ã§ãã ä»åã¯ãTeamsãæ¥ããå©çšããŠããã»é¢åãªäœæ¥ã¯å«ã»äœæ¥ãèªååããããã»PowerAutomateã¯è¯ãç¥ããªãããšããæ¹ã«åããŠãPowerAutomateã§äœãã§ããã®ããã玹ä»ããèšäºã§ãã æ¬èšäºã®ååã§ã¯ã1ããç°¡åãªèªåååŠçãäœããPowerAutomateãã«ã€ããŠã®çè§£ãæ·±ããŸãã èšäºã®åŸåã§ã¯ãPowerAutomateã§äœ¿ããæ©èœãããã³ãã¬ãŒããã«è§Šããç°¡åã«è€éãªèªåååŠçãäœãããšãã§ããããšãç¥ã£ãŠããã ããã°ãšæããŸãã PowerAutomateãšã¯ ãããŒãäœã£ãŠèªåã§Teamsã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã è€éãªèªååæ©èœãç°¡åã«äœãã PowerAutomateãšã¯ å
ã»ã©ããæ°åç»å ŽããŠãããPowerAutomateãã¯ã Microsoft ãæäŸããŠããæ¥åå¹çåãç®çãšããããŒã«ã§ãã èªåã¯ãŒã¯ãããŒãäœãããšã§ãé¢åãªå®åäœæ¥ãç¹°ãè¿ãäœæ¥ã人ã®ä»£ããã«ãã£ãŠãããŸãã å
·äœçã«ã¯ããã¡ãŒã«ãåä¿¡ãããTeamsã«éç¥ãæ¥ãããã«ããããã¡ãŒã«ã«æ·»ä»ãããŠãããã¡ã€ã«ãOneDriveã«èªåä¿åãããã Excel ããŒã¿ã宿çã«å å·¥ããããªã©ã®äœæ¥ãèªåã§ãã£ãŠãããŸãã æéã®åæžã¯ãã¡ãããåçŽãªäœæ¥ãã¹ãªã©ãæžããããšãå¯èœã§ãã ãããŒãäœã£ãŠèªåã§Teamsã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã ããããã15åã§åºæ¥ãTeamsèªåæçš¿ãããŒã®äœãæ¹ã玹ä»ããŸãã ãªããPowerAutomateãå©çšã§ããç°å¢/ãŠãŒã¶ã§ããããšãåæãšãã説æã§ãã 宿ãããããŒã§åºæ¥ãããšã¯æ¬¡ã®ãšããã§ãã æ¯é±éææ¥ 18:00 ã«ç¹å®ã®Teamsãã£ãã«ã«èªåã§ã¡ãã»ãŒãžãæçš¿ èªåãšäžåžAã«å¯ŸããŠã¡ã³ã·ã§ã³ 以äžã®æµãã§ãããŒãäœæããŸãã æ¯é±éææ¥ 18:00 ã«èµ·åããæ°ãããããŒãäœã ã¡ã³ã·ã§ã³ãããŠãŒã¶ã決ããã¢ã¯ã·ã§ã³ãäœã ã¡ãã»ãŒãžå
å®¹ãæ±ºããTeamsã«æçš¿ããã¢ã¯ã·ã§ã³ãäœã åäœããã¹ããã ããã§ã¯ããããããããŒäœæã®æé ã玹ä»ããŸãã Teamsã¢ããªãéã ãã¢ããªããã¯ãªã㯠ãPower Automateããã¯ãªã㯠ããŠã§ããµã€ãã衚瀺ããããã¯ãªã㯠ããã€ãããŒããã¯ãªãã¯ ãæ°ãããããŒããã¯ãªã㯠ãã¹ã±ãžã¥ãŒã«æžã¿ ã¯ã©ãŠã ãããŒããã¯ãªã㯠ãããŒåãå
¥åãéå§æ¥ã«ä»»æã®æ¥ä»ãšæéãå
¥åãç¹°ãè¿ãééã1é±éãéæãéžæããäœæããã¯ãªã㯠Recurrence ãã¯ãªã㯠ã詳现ãªãã·ã§ã³ã衚瀺ããããã¯ãªã㯠èšå®æå»ïŒæéïŒã«18ãèšå®æå»ïŒåïŒã«0ãå
¥åïŒããã§æ¯é±éææ¥ã®18:00ã«ãã®ãããŒãå®è¡ãããŸãïŒ ãæ°ããã¹ãããããã¯ãªã㯠ã³ãã¯ã¿ãšã¢ã¯ã·ã§ã³ãæ€çŽ¢ãã æ¬ã« Teams ãšå
¥åããããŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããããã¯ãªã㯠ãŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããæåã®æšªã äžç¹ãªãŒã ãŒãã¯ãªãã¯ãååããèªåãžã®ã¡ã³ã·ã§ã³ããšå€æŽ ãŠãŒã¶ãŒã®æ¬ã«èªåã®ãŠãŒã¶ ããªã³ã·ãã« ããŒã ïŒåºæ¬çã«ã¯ã¡ãŒã«ã¢ãã¬ã¹ïŒãå
¥å ãæ°ããã¹ãããããã¯ãªã㯠ã³ãã¯ã¿ãšã¢ã¯ã·ã§ã³ãæ€çŽ¢ãã æ¬ã« Teams ãšå
¥åããããŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããããã¯ãªã㯠ãŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸããã®æåæšªã äžç¹ãªãŒã ãŒãã¯ãªãã¯ãååããäžåžãžã®ã¡ã³ã·ã§ã³ããšå€æŽ ãŠãŒã¶ãŒã®æ¬ã«äžåžAã®ãŠãŒã¶ ããªã³ã·ãã« ããŒã ïŒåºæ¬çã«ã¯ã¡ãŒã«ã¢ãã¬ã¹ïŒãå
¥å ãæ°ããã¹ãããããã¯ãªã㯠ã³ãã¯ã¿ãšã¢ã¯ã·ã§ã³ãæ€çŽ¢ãã æ¬ã« Teams ãšå
¥åããããã£ãããŸãã¯ãã£ãã«ã§ã¡ãã»ãŒãžãæçš¿ããããã¯ãªã㯠æçš¿è
ã§ããããŒãããããéžæ æçš¿å
ã§ãChannelããéžæ Teamã§ïŒ»æçš¿ãããTeamãéžæ Channelã§ïŒ»æçš¿ãããChannelãéžæ Messageã® Add message ãã¯ãªãã¯ãåçãªã³ã³ãã³ãããäžåžãžã®ã¡ã³ã·ã§ã³@mentionãšïŒ»èªåãžã®ã¡ã³ã·ã§ã³ @mentionãã¯ãªã㯠æ¹è¡ããæçš¿ã«æžãããã¡ãã»ãŒãžãèšå
¥ ç»é¢å³äžã®ãä¿åããã¯ãªã㯠ç»é¢å³äžã®ããã¹ãããã¯ãªã㯠ãæåããéžæããããã¹ãããã¯ãªã㯠ããããŒã®å®è¡ããã¯ãªãã¯ïŒïŒå®éã«åäœããã¹ããããã®ã§ããæ¬åœã«èªåãšäžåžAãã¡ã³ã·ã§ã³ããŠæçš¿ããããŸãã®ã§ã泚æãã ããïŒïŒ ããããŒå®è¡ããŒãžããã¯ãªã㯠éå§æéãã¯ãªãã¯ããããŒãã©ã®ããã«å®è¡ãããã確èªã§ããŸãã ãã¹ãã§å®éã«æå®ããChannelã«ã¡ã³ã·ã§ã³ä»ãã®æçš¿ããããããç¢ºèª ããã€ãããŒããã¯ãªã㯠ä»åäœæãããããŒãã¯ãªã㯠ããªãã«ããããã¯ãªãã¯ïŒãããå¿ãããšãæ¯é±éææ¥18:00ã«æçš¿ãããŠããŸãã®ã§æ³šæããŠãã ããïŒïŒ 15åã§åºæ¥ãTeamsèªåæçš¿ãããŒäœæã®èª¬æã¯ä»¥äžã§ãã è€éãªèªååæ©èœãç°¡åã«äœãã äžã®ãã³ãºãªã³ã§ã¯ã ãŠãŒã¶ãŒã®@mention ããŒã¯ ã³ãååŸãã ãã ãã£ãããŸãã¯ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã ãã®2ã€ã®ã¢ã¯ã·ã§ã³ãã䜿çšããŠããŸããããä»ã«ãæ§ã
ãªã¢ã¯ã·ã§ã³ãå¯èœã§ãããèªèº«ã§è§Šããæ¹ã¯ãè²ã
ãšè©ŠããŠã¿ãŠãã ããã äŸãã°ãã倿°ããšå
¥åããã°ã 倿°ã®èšå® ããã é
å倿°ã«è¿œå ããåºæ¥ãããã æ¡ä»¶åå² ããã ç¹°ãè¿ã ããã Excel ã®æ
å ±ãååŸã»æŽæ°ã»åé€ ããå¯èœã§ããã ã¡ãŒã«ã®éä¿¡ ããã AIã¢ãã«ã®æ§ç¯ ããåºæ¥ãŸãã ãšã¯ãããè€éãªãããŒãäœãããšããããæéããããéäžã§æ«æããŠããŸããããããŸããã ã§ãããæ§ã
ãªãããŒãã ãã³ãã¬ãŒã ããšããŠçšæãããŠããã®ã§ãããã䜿ããšæ¥œã«ãããŒãäœãããšãã§ããŸãã äŸãã°ã Microsoft Formsã§ã¢ã³ã±ãŒããæåºãããšã¡ãŒã«éç¥ãã Sharepoint ãªã¹ãã«åçå
容ãä¿åããããããŒããã¿ã³ãæŒããã10ååŸã«Teamsã§éç¥ããããããŒãªã©ãæ§ã
ãªãã³ãã¬ãŒããçšæãããŠããŸãã ãããã®ãã³ãã¬ãŒãã䜿ããªãããèªåæµã«ãããŒãã«ã¹ã¿ãã€ãºããŠå©çšã§ããŸãã é¢åãªæ¿èªäœæ¥ã倿 管çãªã©ãPowerAutomateã䜿ã£ãŠå¹çåã§ãããã§ããïŒ ç§ã®æå±ããŠãããŠããããéšçœ²ã§ã¯ãPowerAutomateã䜿ã£ãŠæ¬¡ã®ãããªããšãããŠããŸãã æ¯æ¥ã®å€æ 管çïŒç¹å®ã®æéãŸã§ã«å€åéå§ã®ã¢ã¯ã·ã§ã³ããªã瀟å¡ã«å¯ŸããŠãå€åéå§ããŠãããã確èªããTeamsã¡ãã»ãŒãžæçš¿ãèªåã§è¡ã ããŒã¿ã«ãµã€ã ã®ã¢ã¯ã·ã§ã³ãéç¥ïŒãŠãããå
ã§æŽ»çšããŠãã ããŒã¿ã«ãµã€ã ã«æ°ããèšäºãæçš¿ããããã¢ã¯ã·ã§ã³ãè¡ãããå Žåã«ãç¹å®ã®Teamsãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã 宿çã« Excel ããŒã¿ã®ç¢ºèªãšæšç§»ã°ã©ãã®äœæïŒæ¯æç¹å®ã® Excel ãã¡ã€ã«å
ã®ããŒã¿ã確èªããæããšã«ããŒã¿ãã©ã®ããã«æšç§»ãããã衚ãã°ã©ããäœæãã ç§ã®æå±ãããŠãããã§ã¯ãäœæ¥ãå¹çåããã«ã¯ã©ãããã°ãããããã¡ã³ããŒéã®ã³ãã¥ãã±ãŒã·ã§ã³ã掻çºã«ããããã«ã©ãããã°ãããããªã©ã宿çã«ç€Ÿå¡å士ã§è©±ãåããPowerAutomateãã¯ããæ§ã
ãªããŒã«ã掻çšããŠèª²é¡ã解決ããŠããŸãã ä»åã¯PowerAutomateã玹ä»ããããŸãããä»ã«ããPowerAppsãšããç°¡åã«ã¢ããªãäœæã§ããããŒã«ããã£ããããŸããPowerAppsã®äœ¿ãæ¹ã玹ä»ãããããªèšäºãæžããããããªãã®ã§ããŸãèŠãŠããã ãããšå¬ããã§ãïŒ ISID X(ã¯ãã¹) ã€ãããŒã·ã§ã³ æ¬éš ããžã¿ã«ãšã³ã²ãŒãžã¡ã³ãã»ã³ã¿ãŒ ã§ã¯ã Microsoft Power Platform ã Dynamics 365 ã Salesforce ãçšããDXæšé² ãªã©ãããŠãããŸããå
šç€ŸçãªDXæšé²ã顧客æ¥ç¹ã®æé©åããšã³ã²ãŒãžã¡ã³ãã®åŒ·åãªã©ã®ãå°ãäºãããããŸããããæ°è»œã«ãååããã ããã ISID顧客æ¥ç¹DXãœãªã¥ãŒã·ã§ã³ãµã€ãã¯ãã¡ã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ãå
šç€ŸéçŽãCRMãœãªã¥ãŒã·ã§ã³ã³ã³ãµã«ã¿ã³ã ITæ¥çã«èå³ã®ãã就掻çã®çããŸããã²ãå¿åãã ããïŒ ãæ°åæ¡çšãISID ãªã¯ã«ãŒããµã€ã å·çïŒ @nemoto.kouhei ãã¬ãã¥ãŒïŒ @fukutake.hiroaki ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã¯ããã°ç·šééšã®å±±äžã§ãã ä»åã¯èªåãç»å£ããã€ãã³ãã玹ä»ããŸãã詳现ããã³ãç³èŸŒã¿ã¯ãªã³ã¯å
ãµã€ããåç
§ããŠãã ããã https://techplay.jp/event/913881 åå ç»é²ã®ãé¡ã ãã®çºè¡šãè¡ãå±±äžã§ãã è¿å¹Žãªã¢ãŒãéçºç°å¢ãããã€ãå°é ããŠãã€ã€ãããŸãã AWS Codecatalystã Google Workstationsã GitHub Codespacesãšãã£ããã®ã§ãã ãã®ã€ãã³ãã§ã¯ã GitHub Codespacesãš Visual Studio Code ã®Dev Containerã玹ä»ããŸãã ãããã®æè¡ãçšããããšã§æè»ã§å®å®ããéçºç°å¢ã®æ§ç¯ãå¯èœã«ãªããŸããã€ãã³ãã§ã¯ãããã®æè¡ã®ã¡ãªããããã¡ãªãããåºæ¬çãªä»çµã¿ã«ã€ããŠç޹ä»ããŸãã 埡èå³ãããããã¯æ¯éç»é²ããŠã¿ãŠãã ããã åºæ¬æ
å ± ã¿ã€ãã«ïŒä¹±ç«ããç°å¢ããªãœãŒã¹ã®å¶çŽãç°å¢æ§ç¯ã«ã¯ããæ©ãŸãããªãïŒ-ã¹ãã¬ã¹ããªãŒãªéçºãå®çŸãã GitHub Codespaces- æ¥æïŒ2023/09/06(æ°Ž) 19:00 ã 20:15 圢æ
ïŒãªã³ã©ã€ã³éå¬ æŠèŠ ä»ããã¹ããªç°å¢ã§éçºã«æããŠããŸããïŒ ãã¬ã¯ãŒã¯ãæ°ããªåžžæ
ãšãªã£ãä»ãéçºç°å¢ã«ããããããã課é¡ã«é ãæ±ããæ¹ãå€ãã Yesãšçããããšã®ã§ããæ¹ã¯å€ããªãã®ã§ã¯ãªãã§ããããã ã³ãŒãã¬ãã¥ãŒã ãããã° ãè¡ã床ã«ä¹±ç«ããç°å¢ ããŒã«ã«ç°å¢ã®ã»ããã¢ãããã¡ã³ããã³ã¹ãããã¯ã¢ããäœæ¥ ãã·ã³ã¹ããã¯ã«å·Šå³ãããŠå®å®ããªãåŠçé床 ãªã©ããŸããŸãªèª²é¡ã®åœ±é¿ã«ããã éçºã«å²ãæéãããå€ãã®æéãç°å¢æŽåã«è²»ãããŠãããšãã£ãæ¹ãå°ãªããããŸããã éçºãã¹ã ãŒãºã«é²ããããã®æéèŠäºé
ã¯ãå¹ççãªäœæ¥ç°å¢ã§éçºè
ã®ã¹ãã¬ã¹ã軜æžããããšã§ãã ISIDã§ã¯ã¹ãã¬ã¹ããªãŒãªéçºç°å¢ãäœãåºãã¹ãã ãœãªã¥ãŒã·ã§ã³ã®ã²ãšã€ãšããŠã GitHub Codespacesãã®å°å
¥ã«ææŠã æ©é瀟å
ãããžã§ã¯ãã§æ€èšŒãè¡ãã ã»ãã±ãŒã·ã§ã³éã(瀟å
/瀟å€)ã§ã®éçºãç°ãªããã·ã³ã§ã®äœæ¥ã«åãããç°å¢æ§ç¯ãäžèŠã«ãªã£ã ã»ç°å¢æ§ç¯æé ãç
©éãäžæçãªå Žåã§ããæ©èœãçµã¿åãããããšã§æè»œã«ç°å¢ãåçŸã§ãã ãšãã£ããããªææãåŸãããä»åŸã®å©çšæ¡å€§ã«ãæåŸ
ãé«ãŸã£ãŠããŸãã æ¬ã€ãã³ãã§ã¯ãã GitHub Codespacesããæ¡çšããçç±ããå°å
¥ã«ãããææŠãåŸãããææãªã©å®äŸã亀ããŠå
±æããŸãã ã GitHub CodespacesãæŽ»çšããèŠããå¥åº·çãªãœãããŠã§ã¢éçºã®ããã®ãã³ãæºèŒãª1æé15åããæ¥œãã¿ã«ïŒ å·çïŒ @yamashita.tsuyoshi ãã¬ãã¥ãŒïŒ @sato.taichi ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã¯ããã°ç·šééšã®å±±äžã§ãã ä»åã¯èªåãç»å£ããã€ãã³ãã玹ä»ããŸãã詳现ããã³ãç³èŸŒã¿ã¯ãªã³ã¯å
ãµã€ããåç
§ããŠãã ããã https://techplay.jp/event/913881 åå ç»é²ã®ãé¡ã ãã®çºè¡šãè¡ãå±±äžã§ãã è¿å¹Žãªã¢ãŒãéçºç°å¢ãããã€ãå°é ããŠãã€ã€ãããŸãã AWS Codecatalystã Google Workstationsã GitHub Codespacesãšãã£ããã®ã§ãã ãã®ã€ãã³ãã§ã¯ã GitHub Codespacesãš Visual Studio Code ã®Dev Containerã玹ä»ããŸãã ãããã®æè¡ãçšããããšã§æè»ã§å®å®ããéçºç°å¢ã®æ§ç¯ãå¯èœã«ãªããŸããã€ãã³ãã§ã¯ãããã®æè¡ã®ã¡ãªããããã¡ãªãããåºæ¬çãªä»çµã¿ã«ã€ããŠç޹ä»ããŸãã 埡èå³ãããããã¯æ¯éç»é²ããŠã¿ãŠãã ããã åºæ¬æ
å ± ã¿ã€ãã«ïŒä¹±ç«ããç°å¢ããªãœãŒã¹ã®å¶çŽãç°å¢æ§ç¯ã«ã¯ããæ©ãŸãããªãïŒ-ã¹ãã¬ã¹ããªãŒãªéçºãå®çŸãã GitHub Codespaces- æ¥æïŒ2023/09/06(æ°Ž) 19:00 ã 20:15 圢æ
ïŒãªã³ã©ã€ã³éå¬ æŠèŠ ä»ããã¹ããªç°å¢ã§éçºã«æããŠããŸããïŒ ãã¬ã¯ãŒã¯ãæ°ããªåžžæ
ãšãªã£ãä»ãéçºç°å¢ã«ããããããã課é¡ã«é ãæ±ããæ¹ãå€ãã Yesãšçããããšã®ã§ããæ¹ã¯å€ããªãã®ã§ã¯ãªãã§ããããã ã³ãŒãã¬ãã¥ãŒã ãããã° ãè¡ã床ã«ä¹±ç«ããç°å¢ ããŒã«ã«ç°å¢ã®ã»ããã¢ãããã¡ã³ããã³ã¹ãããã¯ã¢ããäœæ¥ ãã·ã³ã¹ããã¯ã«å·Šå³ãããŠå®å®ããªãåŠçé床 ãªã©ããŸããŸãªèª²é¡ã®åœ±é¿ã«ããã éçºã«å²ãæéãããå€ãã®æéãç°å¢æŽåã«è²»ãããŠãããšãã£ãæ¹ãå°ãªããããŸããã éçºãã¹ã ãŒãºã«é²ããããã®æéèŠäºé
ã¯ãå¹ççãªäœæ¥ç°å¢ã§éçºè
ã®ã¹ãã¬ã¹ã軜æžããããšã§ãã ISIDã§ã¯ã¹ãã¬ã¹ããªãŒãªéçºç°å¢ãäœãåºãã¹ãã ãœãªã¥ãŒã·ã§ã³ã®ã²ãšã€ãšããŠã GitHub Codespacesãã®å°å
¥ã«ææŠã æ©é瀟å
ãããžã§ã¯ãã§æ€èšŒãè¡ãã ã»ãã±ãŒã·ã§ã³éã(瀟å
/瀟å€)ã§ã®éçºãç°ãªããã·ã³ã§ã®äœæ¥ã«åãããç°å¢æ§ç¯ãäžèŠã«ãªã£ã ã»ç°å¢æ§ç¯æé ãç
©éãäžæçãªå Žåã§ããæ©èœãçµã¿åãããããšã§æè»œã«ç°å¢ãåçŸã§ãã ãšãã£ããããªææãåŸãããä»åŸã®å©çšæ¡å€§ã«ãæåŸ
ãé«ãŸã£ãŠããŸãã æ¬ã€ãã³ãã§ã¯ãã GitHub Codespacesããæ¡çšããçç±ããå°å
¥ã«ãããææŠãåŸãããææãªã©å®äŸã亀ããŠå
±æããŸãã ã GitHub CodespacesãæŽ»çšããèŠããå¥åº·çãªãœãããŠã§ã¢éçºã®ããã®ãã³ãæºèŒãª1æé15åããæ¥œãã¿ã«ïŒ å·çïŒ @yamashita.tsuyoshi ãã¬ãã¥ãŒïŒ @sato.taichi ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ä»åã¯ååã«åŒãç¶ãã UE5ã§ããã©ãŒãã³ã¹ãæ
ä¿ããããã«å¿
èŠãªããããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒCPUç·šã®èª¬æãè¡ããŸãã UEã§ã¯ãå¶äœãããããžã§ã¯ãã®æ§èœã枬ãããã«ãããã¡ã€ãªã³ã°ãšããäœæ¥ãè¡ããŸãã ãããã¡ã€ãªã³ã°ã¯ãäž»ã«ããã©ãŒãã³ã¹æ¹åãç®çãšããŠå®æœããŸããäŸãã°ã³ãã³ããå°çšã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãæç»ã«é
å»¶ãèµ·ãã£ãŠããªãããäžèŠãªåŠçãããŠããBlueprintããªããããªã©ã調ã¹ãŸãã ååã®èšäºïŒãããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒGPUç·šïŒã¯ãã¡ã ã«ãªããŸãã æ€èšŒç°å¢/ããŒã« OSïŒ Windows 11 pro GPU ïŒ NVIDIA GeForce RTX 4070 Ti Game EngineïŒ Unreal Engine 5.2.0 å®è£
æé ãstat unitãã³ãã³ãã®å®æœ Gamesã®åŠçãéãå Žåã®å¯ŸåŠæ¹æ³ 2-1. Unreal Insightsã®äœ¿ãæ¹ 2-2. Session Frontendã®äœ¿ãæ¹ 2-3. é
å»¶åå ã®ç¹å®æ¹æ³ 1. ãstat unitãã³ãã³ãã®å®æœ ååã«åŒãç¶ãããstat unitãã³ãã³ãã«ã€ããŠèª¬æããŸãã ååã®èšäºïŒãããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒGPUç·šïŒ ã«è©³ãããstat unitãã®ç޹ä»ãããã®ã§ãã¡ããåèã«ããŠãã ããã GPU ç·šã§ã玹ä»ããŸãããããstat unitãã®äž»èŠãªé
ç®ã¯äžèšã«ãªããŸãã Frame : ç»é¢ãæç»ããã®ã«ããã£ãåŠçæéã60FPSã®ã²ãŒã ãäœæããå Žåã¯ã16.6ms以äžã«ãªãããã«èª¿æŽããªããšãããªã Game : ãªã¢ã«ã¿ã€ã ã§åäœããã²ãŒã ã®ããžãã¯ãã¢ãã¡ãŒã·ã§ã³ã«ãããCPUã®åŠçæé Draw : äœãæç»ããããéžæãèšç®ãããããã«ãããCPUã®åŠçæé GPU Time : ã¡ãã·ã¥ãåãããªã¢ã«ã®æç»ããã©ã€ãã£ã³ã°ãªã©ã«ããã GPU ã®åŠçæé Draws : æç»ããå¿
èŠã®ããã¡ãã·ã¥ã®åæ°ã GPU Timeã«åœ±é¿ãäžãã 察象ãªããžã§ã¯ããæŽçããããNaniteãå©çšããŠã¡ãã·ã¥æ°ã®èª¿æŽãè¡ãããšã§ã GPU ã«é¢é£ããå€ãäžããããšã¯ã§ããŸããããäŸç¶ãšããŠãGameãã®å€ãé«ãã®ã§ã調æ»ãä¿®æ£ãè¡ã£ãŠãããŸãã 2. Gamesã®åŠçãéãå Žåã®å¯ŸåŠæ¹æ³ Gameã®åŠçãéãå Žåã¯2ã€ã®äºè±¡ãèããããŸãã ã«ãªã³ã°ãLODãªã©ã䜿çšããŠã¬ãã«å
ã®ã©ã®ãªããžã§ã¯ããæç»ããããäºåã«èšç®ããããã«CPUã䜿çšããŠãã ã²ãŒã ãã¬ã€äžã®ã㣠ã©ã¯ ã¿ãŒã®åäœããã¢ã¯ã¿ãŒããã®ä»ã®Blueprintã®åŠçãèšç®ãããããã«CPUã䜿çšããŠãã ä»åã¯ã²ãŒã ãã¬ã€äžã®Blueprintã®æåã«ã€ããŠããããã¡ã€ãªã³ã°æ¹æ³ã玹ä»ããŸãã ã«ãªã³ã°ãLODã«é¢ããŠã¯ãæ¬èšäºã§ã¯å²æããããŸãã 2-1. Unreal Insightsã®äœ¿ãæ¹ Unreal Insightsã¯ã Unreal Engine ã«æšæºã§æèŒãããŠãããããã¡ã€ãªã³ã°ã·ã¹ãã ã®ããšã§ã ããŒã¿ã®åéãåæãããã³èŠèŠåãè¡ã£ãŠãããŸãã ä»åã¯ãã®ã·ã¹ãã ã䜿çšããŠãã¢ããªã® ããã«ããã¯ ãæ¢ãããã©ãŒãã³ã¹ãåäžãããŠãããŸãã ãŸã Unreal InsightsãéããŠãããŸãã UEãããŠã³ããŒãããéã«åæã«ããŠã³ããŒããããŠããã®ã§ãäžèšç»åã®ããã« UE ïŒ Engine ïŒ Binaries ïŒ Win64 ã®äžã«ãããUnrealInsights.exeããéããŸãã ã¢ããªã±ãŒã·ã§ã³ãéããŸãããä»ã¯äžæŠãã®ãŸãŸçœ®ããŠãããŸãã ïŒäžã®ç»åã§ã¯ããã€ãããŒã¿ãå
¥ã£ãŠããŸãããåããŠéããå Žåã¯ããŒã¿ã«ã¯äœãå
¥ã£ãŠããŸãããïŒ æ¬¡ã«ã²ãŒã èµ·åæã«ãããã¡ã€ãªã³ã°çšã®ããŒã¿ãäœæããèšå®ãè¡ããŸãã UEã®ãšãã£ã¿ã®ç°å¢èšå®ããããã¬ã€ ïŒ è¿œå ã®èµ·åãã©ã¡ãŒã¿ ã®æ¬ã«äžèšã³ãã³ãã远å ããŸãã -trace=cpu,frame,bookmark,log -statnamedevents ãã®ã³ãã³ãã«ããã ã¹ã¿ã³ãã¢ãã³ ã¢ãŒãã§ã²ãŒã ãéå§ããæããã°ãšããŠãããã¡ã€ãªã³ã°çšã®ããŒã¿ã Unreal Insightsã§åç
§å¯èœãªåœ¢åŒã§äœæãããŸãã ã¹ã¿ã³ãã¢ãã³ ã¢ãŒãã§ã²ãŒã ãèµ·åäžã« Unreal InsightsãéããšããŒã¿ããLIVEãã§äœæãããŠããã®ã確èªã§ããŸãã èµ·ååŸ10ç§ããããããã²ãŒã ãçµäºããäœæãããããŒã¿ã Unreal Insightsã§ç¢ºèªããŸãã ä»åã¯ã²ãŒã ãèµ·åããããã®ãããã¡ã€ãªã³ã°ã§ã¯ãªããéåžžã²ãŒã æã®ãããã¡ã€ãªã³ã°ãè¡ãããã®ã§ã äžã®ç»åå³åŽã®ãå®å®ãå§ããéšåã®ããŒã¿ã調æ»ããŸãã å³åŽã®éšåãã¯ããŒãºã¢ããããç»åããã¡ãã§ãã äžæ®µã®ãã³ã¯ãšé»ç·ã®åž¯ã§FEngineLoopãšæžãããŠããéšåããããŸãã ããã1ãã¬ãŒã ã®åŠçã«ãªããä»åã®å Žåã ãš180msã»ã©ããã£ãŠããŸã£ãŠããŸãã ïŒ60FPSã®ã²ãŒã ãç®æãå Žåã¯16.6ms以äžãç®æããªããšãããªãïŒ æ¬¡ã«ããå°ã现ããèŠãŠãããŸãã 1ãã¬ãŒã ã®åŠçã®äžã§æéã®ããã£ãŠããããªåŠçã調ã¹ãŠãããŸãã ãã®ããŒã¿ã®èŠæ¹ã¯ãäžããé ã«åŠçã现ãããªã£ãŠãããååŠçã®æµãã¯å³æ¹åã«é²ãã§ãããŸãã äœåºŠããããã¡ã€ãªã³ã°ãè¡ã£ãŠãã人ãªãããããšèŠãã ãã§ã©ãã蟺ãããããã®ããããã®ãããããªãã§ããã èªåã¯ãŸã ååŠè
ãªã®ã§å°ããã€è§£èªããŸãã 现ååãããŠããäžã®æ¹ã®åŠçã§ãæããã«é·ãæéãããã£ãŠããŸã£ãŠããåŠçãã玫è²ã®åž¯ã®Functionãšããéšåã«ãªããŸãã 1ãã¬ãŒã å
šäœã§180msã»ã©ããã£ãŠããã®ã«å¯Ÿãããã®Functionã§177.9msãã®æéã䜿ã£ãŠãããããªã®ã§ãã»ãŒãã®åŠçã®ããã§é
ããªã£ãŠããããã«èŠããŸãã ãã®Functionã®èŠªãèŠãŠã¿ããšBlueprint Timeãšæžããã垯ãããã®ã§ãããã§ã¯Blueprintã«åé¡ãããã®ããªãããããŸã§ããããŸãã Unreal Insightsã¯ãåŠçå
šäœã®æµãããã©ãã蟺ã§åé¡ãèµ·ããŠããããªã©ãèŠãããã«äœ¿ããŸãã ããããBlueprintã®ã²ãšã€ã²ãšã€ãŸã§è©³ããã¿ãããšã¯ã§ããªãã®ã§ã次ã¯å¥ã®ãããã¡ã€ãªã³ã°ã·ã¹ãã ã䜿ã£ãŠããå°ãæ·±ãŒã£ãŠãããŸãã 2-2. Session Frontendã®äœ¿ãæ¹ Session Frontendãã Unreal Insightsãšåæ§ã Unreal Engine ã«æšæºã§æèŒãããŠãããããã¡ã€ãªã³ã°ã·ã¹ãã ã®ããšã§ã ããŒã¿ã®åéãåæãããã³èŠèŠåãè¡ã£ãŠãããŸãã Unreal Insightãšã®éãã¯ãSession Frontendã®æ¹ãããã詳ãããã¡ã³ã¯ã·ã§ã³ã®äžèº«ãèŠãŠããããšãã§ããŸãããäžæ¹ã§ Unreal Insightsã»ã©å¯èŠæ§ããããªãã§ãã ãã®ããã Unreal Insightsã§å€§äœã®åŠçã®æµããšåé¡ç¹ã®ããããã€ããSession Frontendã§è©³ããèŠãŠããæµããè¯ããšæããŸãã Session Frontendã䜿ãããã«ãå°çšã®ã»ãã·ã§ã³ããŒã¿ãå¿
èŠã«ãªãã®ã§ãã³ãã³ãã§ããŒã¿ãäœæããŸãã UEã®ã²ãŒã ãéå§ããäžã§ãç»é¢äžéšã®ã¢ãŠãããããã°ã¿ããããã³ãã³ãå
¥åæ¬ã«ãstat startfileããšå
¥åããŸãã ã³ãã³ããå
¥åãããšã²ãŒã ç»é¢äžã«ãããã¡ã€ãªã³ã°äžã®æåã衚瀺ãããŸãã ãã¡ããåãã10ç§ã»ã©åŸ
æ©ããŠãããã³ãã³ãå
¥åæ¬ã«ãstat stopfileããšå
¥åããŸãã ããã§ããŒã¿ãååŸã§ããŸããã ç»é¢äžéšã®ããŒã«ã¿ãããã»ãã·ã§ã³ããã³ããšã³ããéžæããç»é¢ã衚瀺ãããŸãã ãããã¡ã€ã©ã®ã¿ããžç§»åããç»é¢äžå€®äžéšã®ãã¡ã€ã«ãããŒããã¿ã³ãæŒäžããŸãã ãã¡ã€ã«éžæç»é¢ã«ãªãã®ã§ãææ°ã®ãã©ã«ããéžæããŸãã ïŒåããŠè¡ãéã¯äžã€ãããã©ã«ãã衚瀺ãããªãã¯ãã§ããïŒ ãã©ã«ããéžæãããšãããã¡ã€ã©ç»é¢ã«ããŒã¿ã衚瀺ãããŸãã ä»å䜿çšããã®ã¯å³äžã®ã€ãã³ãåãšæžãããéšåã«ãªããŸãã éåžžã²ãŒã æã®ãããã¡ã€ãªã³ã°ãè¡ãããå Žåã¯ãã€ãã³ãåãããGameThreadããéžæããŸãã ãã®åŸã¯ã Unreal Insightsã§è¡šç€ºããã£ããFrameTimeããéžæããåŠçæéãããã£ãŠããã¿ããã©ãã©ãéããŠãããŸãã ä»åã®å Žåã¯ãæçµçã«ãã¡ã³ã¯ã·ã§ã³åãŸã§è¡ãçããŸããã Function/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C.MeanlessFunction ãBP_ThirdPersonCharacterãã®ãMeanlessFunctionããšãããã¡ã³ã¯ã·ã§ã³ã«æéãããã£ãŠããŸã£ãŠãããããªã®ã§ãæ€èšŒããŸãã 2-3. é
å»¶åå ã®ç¹å®æ¹æ³ Unreal InsightsãšSession Frontendãå©çšããŠãé
å»¶ã®åå ã«ãªã£ãŠããããªãã¡ã³ã¯ã·ã§ã³ãç¹å®ããã®ã§ãå®éã«UEç»é¢ãã調æ»ããŠã¿ãŸãã BP_ThirdPersonCharacterã®ãã¡ã€ã«ãéããBlueprintã確èªããŸãã ãã¡ã€ã«å
ã«ãMeanless Functionããšãããã¡ã³ã¯ã·ã§ã³ããã€ãã³ãTickãã«ã€ãªãã£ãŠãããæ¯ãã¬ãŒã ããšã«åŒã°ããŠããŸã£ãŠããããšãããããŸãã ãã¡ã³ã¯ã·ã§ã³ã®å
éšã«ç§»åãããšãæåéããæå³ã®ãªãåŠçãForæã§2äžåãè¡ã£ãŠããŸããã 1ãã¬ãŒã ããšã«2äžåãprint stringãããŠãããšèãããšæããããã°ã§ãã ïŒãã¡ããä»èŸŒã¿ã§ãããã¿ãŸãããïŒ ãã®ãMeanless Functionããåé€ããããäžåºŠã²ãŒã ãéå§ããŠã¿ãŸãã èŠäºãGameãã®æ°å€ãæ¹åãããFrameãã60FPSã«å¯Ÿå¿ã§ããæ°å€ãŸã§æ¹åã§ããŸããã 念ã®çº Unreal InsightsãSession Frontendã確èªããŸããããä¿®æ£åãšæ¯ã¹ç°åžžãªåŠçæéãããã£ãŠããéšåããªããªã£ãŠããã®ã確èªã§ããŸããã ãããã« ä»åã¯ãååã«åŒãç¶ããUE5ãå©çšããŠãããã¡ã€ãªã³ã°ã®æ¹æ³ã説æããŠããŸããã ä»ååŠç¿ããã GPU ã§åé¡ã«ãªã£ãŠããç®æãæ¢ããŠå¯Ÿçãè¡ãããã®æ¬¡ã«CPUã§åé¡ã«ãªã£ãŠããç®æãæ¢ããããŒã¯ã ä»åŸã®å®éã®çŸå Žã§ã䜿ã£ãŠãããã®ã§ã¯ãªãããšæããŠããŸãã ãã¡ããå®éã®ãããžã§ã¯ãã§ã¯ãããè€éã«åå ãå
¥ãçµãã§ããããšãæ³åã§ããã®ã§ã åºç€ã®å匷ããã€ã€ãå®éã®ãããã¡ã€ãªã³ã°ãã©ãã©ãè¡ã£ãŠããããã§ãã ãŸã ååã®èšäºïŒãããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒGPUç·šïŒ ãã芧ã«ãªã£ãŠããªãæ¹ã¯ããã¡ããæ¯éèªãã§ããã ãããšå¬ããã§ãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ISIDæ¡çšããŒãžïŒWeb3/ã¡ã¿ããŒã¹/AIïŒ åè https://qiita.com/donbutsu17/items/159dfaacfac6a4b1392d https://docs.unrealengine.com/4.27/ja/TestingAndOptimization/PerformanceAndProfiling/UnrealInsights/ https://hub.vive.com/storage/docs/en-us/UnrealPlugin/UnrealProfiler.html å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @yamada.y ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ä»åã¯ååã«åŒãç¶ãã UE5ã§ããã©ãŒãã³ã¹ãæ
ä¿ããããã«å¿
èŠãªããããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒCPUç·šã®èª¬æãè¡ããŸãã UEã§ã¯ãå¶äœãããããžã§ã¯ãã®æ§èœã枬ãããã«ãããã¡ã€ãªã³ã°ãšããäœæ¥ãè¡ããŸãã ãããã¡ã€ãªã³ã°ã¯ãäž»ã«ããã©ãŒãã³ã¹æ¹åãç®çãšããŠå®æœããŸããäŸãã°ã³ãã³ããå°çšã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãæç»ã«é
å»¶ãèµ·ãã£ãŠããªãããäžèŠãªåŠçãããŠããBlueprintããªããããªã©ã調ã¹ãŸãã ååã®èšäºïŒãããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒGPUç·šïŒã¯ãã¡ã ã«ãªããŸãã æ€èšŒç°å¢/ããŒã« OSïŒ Windows 11 pro GPU ïŒ NVIDIA GeForce RTX 4070 Ti Game EngineïŒ Unreal Engine 5.2.0 å®è£
æé ãstat unitãã³ãã³ãã®å®æœ Gamesã®åŠçãéãå Žåã®å¯ŸåŠæ¹æ³ 2-1. Unreal Insightsã®äœ¿ãæ¹ 2-2. Session Frontendã®äœ¿ãæ¹ 2-3. é
å»¶åå ã®ç¹å®æ¹æ³ 1. ãstat unitãã³ãã³ãã®å®æœ ååã«åŒãç¶ãããstat unitãã³ãã³ãã«ã€ããŠèª¬æããŸãã ååã®èšäºïŒãããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒGPUç·šïŒ ã«è©³ãããstat unitãã®ç޹ä»ãããã®ã§ãã¡ããåèã«ããŠãã ããã GPU ç·šã§ã玹ä»ããŸãããããstat unitãã®äž»èŠãªé
ç®ã¯äžèšã«ãªããŸãã Frame : ç»é¢ãæç»ããã®ã«ããã£ãåŠçæéã60FPSã®ã²ãŒã ãäœæããå Žåã¯ã16.6ms以äžã«ãªãããã«èª¿æŽããªããšãããªã Game : ãªã¢ã«ã¿ã€ã ã§åäœããã²ãŒã ã®ããžãã¯ãã¢ãã¡ãŒã·ã§ã³ã«ãããCPUã®åŠçæé Draw : äœãæç»ããããéžæãèšç®ãããããã«ãããCPUã®åŠçæé GPU Time : ã¡ãã·ã¥ãåãããªã¢ã«ã®æç»ããã©ã€ãã£ã³ã°ãªã©ã«ããã GPU ã®åŠçæé Draws : æç»ããå¿
èŠã®ããã¡ãã·ã¥ã®åæ°ã GPU Timeã«åœ±é¿ãäžãã 察象ãªããžã§ã¯ããæŽçããããNaniteãå©çšããŠã¡ãã·ã¥æ°ã®èª¿æŽãè¡ãããšã§ã GPU ã«é¢é£ããå€ãäžããããšã¯ã§ããŸããããäŸç¶ãšããŠãGameãã®å€ãé«ãã®ã§ã調æ»ãä¿®æ£ãè¡ã£ãŠãããŸãã 2. Gamesã®åŠçãéãå Žåã®å¯ŸåŠæ¹æ³ Gameã®åŠçãéãå Žåã¯2ã€ã®äºè±¡ãèããããŸãã ã«ãªã³ã°ãLODãªã©ã䜿çšããŠã¬ãã«å
ã®ã©ã®ãªããžã§ã¯ããæç»ããããäºåã«èšç®ããããã«CPUã䜿çšããŠãã ã²ãŒã ãã¬ã€äžã®ã㣠ã©ã¯ ã¿ãŒã®åäœããã¢ã¯ã¿ãŒããã®ä»ã®Blueprintã®åŠçãèšç®ãããããã«CPUã䜿çšããŠãã ä»åã¯ã²ãŒã ãã¬ã€äžã®Blueprintã®æåã«ã€ããŠããããã¡ã€ãªã³ã°æ¹æ³ã玹ä»ããŸãã ã«ãªã³ã°ãLODã«é¢ããŠã¯ãæ¬èšäºã§ã¯å²æããããŸãã 2-1. Unreal Insightsã®äœ¿ãæ¹ Unreal Insightsã¯ã Unreal Engine ã«æšæºã§æèŒãããŠãããããã¡ã€ãªã³ã°ã·ã¹ãã ã®ããšã§ã ããŒã¿ã®åéãåæãããã³èŠèŠåãè¡ã£ãŠãããŸãã ä»åã¯ãã®ã·ã¹ãã ã䜿çšããŠãã¢ããªã® ããã«ããã¯ ãæ¢ãããã©ãŒãã³ã¹ãåäžãããŠãããŸãã ãŸã Unreal InsightsãéããŠãããŸãã UEãããŠã³ããŒãããéã«åæã«ããŠã³ããŒããããŠããã®ã§ãäžèšç»åã®ããã« UE ïŒ Engine ïŒ Binaries ïŒ Win64 ã®äžã«ãããUnrealInsights.exeããéããŸãã ã¢ããªã±ãŒã·ã§ã³ãéããŸãããä»ã¯äžæŠãã®ãŸãŸçœ®ããŠãããŸãã ïŒäžã®ç»åã§ã¯ããã€ãããŒã¿ãå
¥ã£ãŠããŸãããåããŠéããå Žåã¯ããŒã¿ã«ã¯äœãå
¥ã£ãŠããŸãããïŒ æ¬¡ã«ã²ãŒã èµ·åæã«ãããã¡ã€ãªã³ã°çšã®ããŒã¿ãäœæããèšå®ãè¡ããŸãã UEã®ãšãã£ã¿ã®ç°å¢èšå®ããããã¬ã€ ïŒ è¿œå ã®èµ·åãã©ã¡ãŒã¿ ã®æ¬ã«äžèšã³ãã³ãã远å ããŸãã -trace=cpu,frame,bookmark,log -statnamedevents ãã®ã³ãã³ãã«ããã ã¹ã¿ã³ãã¢ãã³ ã¢ãŒãã§ã²ãŒã ãéå§ããæããã°ãšããŠãããã¡ã€ãªã³ã°çšã®ããŒã¿ã Unreal Insightsã§åç
§å¯èœãªåœ¢åŒã§äœæãããŸãã ã¹ã¿ã³ãã¢ãã³ ã¢ãŒãã§ã²ãŒã ãèµ·åäžã« Unreal InsightsãéããšããŒã¿ããLIVEãã§äœæãããŠããã®ã確èªã§ããŸãã èµ·ååŸ10ç§ããããããã²ãŒã ãçµäºããäœæãããããŒã¿ã Unreal Insightsã§ç¢ºèªããŸãã ä»åã¯ã²ãŒã ãèµ·åããããã®ãããã¡ã€ãªã³ã°ã§ã¯ãªããéåžžã²ãŒã æã®ãããã¡ã€ãªã³ã°ãè¡ãããã®ã§ã äžã®ç»åå³åŽã®ãå®å®ãå§ããéšåã®ããŒã¿ã調æ»ããŸãã å³åŽã®éšåãã¯ããŒãºã¢ããããç»åããã¡ãã§ãã äžæ®µã®ãã³ã¯ãšé»ç·ã®åž¯ã§FEngineLoopãšæžãããŠããéšåããããŸãã ããã1ãã¬ãŒã ã®åŠçã«ãªããä»åã®å Žåã ãš180msã»ã©ããã£ãŠããŸã£ãŠããŸãã ïŒ60FPSã®ã²ãŒã ãç®æãå Žåã¯16.6ms以äžãç®æããªããšãããªãïŒ æ¬¡ã«ããå°ã现ããèŠãŠãããŸãã 1ãã¬ãŒã ã®åŠçã®äžã§æéã®ããã£ãŠããããªåŠçã調ã¹ãŠãããŸãã ãã®ããŒã¿ã®èŠæ¹ã¯ãäžããé ã«åŠçã现ãããªã£ãŠãããååŠçã®æµãã¯å³æ¹åã«é²ãã§ãããŸãã äœåºŠããããã¡ã€ãªã³ã°ãè¡ã£ãŠãã人ãªãããããšèŠãã ãã§ã©ãã蟺ãããããã®ããããã®ãããããªãã§ããã èªåã¯ãŸã ååŠè
ãªã®ã§å°ããã€è§£èªããŸãã 现ååãããŠããäžã®æ¹ã®åŠçã§ãæããã«é·ãæéãããã£ãŠããŸã£ãŠããåŠçãã玫è²ã®åž¯ã®Functionãšããéšåã«ãªããŸãã 1ãã¬ãŒã å
šäœã§180msã»ã©ããã£ãŠããã®ã«å¯Ÿãããã®Functionã§177.9msãã®æéã䜿ã£ãŠãããããªã®ã§ãã»ãŒãã®åŠçã®ããã§é
ããªã£ãŠããããã«èŠããŸãã ãã®Functionã®èŠªãèŠãŠã¿ããšBlueprint Timeãšæžããã垯ãããã®ã§ãããã§ã¯Blueprintã«åé¡ãããã®ããªãããããŸã§ããããŸãã Unreal Insightsã¯ãåŠçå
šäœã®æµãããã©ãã蟺ã§åé¡ãèµ·ããŠããããªã©ãèŠãããã«äœ¿ããŸãã ããããBlueprintã®ã²ãšã€ã²ãšã€ãŸã§è©³ããã¿ãããšã¯ã§ããªãã®ã§ã次ã¯å¥ã®ãããã¡ã€ãªã³ã°ã·ã¹ãã ã䜿ã£ãŠããå°ãæ·±ãŒã£ãŠãããŸãã 2-2. Session Frontendã®äœ¿ãæ¹ Session Frontendãã Unreal Insightsãšåæ§ã Unreal Engine ã«æšæºã§æèŒãããŠãããããã¡ã€ãªã³ã°ã·ã¹ãã ã®ããšã§ã ããŒã¿ã®åéãåæãããã³èŠèŠåãè¡ã£ãŠãããŸãã Unreal Insightãšã®éãã¯ãSession Frontendã®æ¹ãããã詳ãããã¡ã³ã¯ã·ã§ã³ã®äžèº«ãèŠãŠããããšãã§ããŸãããäžæ¹ã§ Unreal Insightsã»ã©å¯èŠæ§ããããªãã§ãã ãã®ããã Unreal Insightsã§å€§äœã®åŠçã®æµããšåé¡ç¹ã®ããããã€ããSession Frontendã§è©³ããèŠãŠããæµããè¯ããšæããŸãã Session Frontendã䜿ãããã«ãå°çšã®ã»ãã·ã§ã³ããŒã¿ãå¿
èŠã«ãªãã®ã§ãã³ãã³ãã§ããŒã¿ãäœæããŸãã UEã®ã²ãŒã ãéå§ããäžã§ãç»é¢äžéšã®ã¢ãŠãããããã°ã¿ããããã³ãã³ãå
¥åæ¬ã«ãstat startfileããšå
¥åããŸãã ã³ãã³ããå
¥åãããšã²ãŒã ç»é¢äžã«ãããã¡ã€ãªã³ã°äžã®æåã衚瀺ãããŸãã ãã¡ããåãã10ç§ã»ã©åŸ
æ©ããŠãããã³ãã³ãå
¥åæ¬ã«ãstat stopfileããšå
¥åããŸãã ããã§ããŒã¿ãååŸã§ããŸããã ç»é¢äžéšã®ããŒã«ã¿ãããã»ãã·ã§ã³ããã³ããšã³ããéžæããç»é¢ã衚瀺ãããŸãã ãããã¡ã€ã©ã®ã¿ããžç§»åããç»é¢äžå€®äžéšã®ãã¡ã€ã«ãããŒããã¿ã³ãæŒäžããŸãã ãã¡ã€ã«éžæç»é¢ã«ãªãã®ã§ãææ°ã®ãã©ã«ããéžæããŸãã ïŒåããŠè¡ãéã¯äžã€ãããã©ã«ãã衚瀺ãããªãã¯ãã§ããïŒ ãã©ã«ããéžæãããšãããã¡ã€ã©ç»é¢ã«ããŒã¿ã衚瀺ãããŸãã ä»å䜿çšããã®ã¯å³äžã®ã€ãã³ãåãšæžãããéšåã«ãªããŸãã éåžžã²ãŒã æã®ãããã¡ã€ãªã³ã°ãè¡ãããå Žåã¯ãã€ãã³ãåãããGameThreadããéžæããŸãã ãã®åŸã¯ã Unreal Insightsã§è¡šç€ºããã£ããFrameTimeããéžæããåŠçæéãããã£ãŠããã¿ããã©ãã©ãéããŠãããŸãã ä»åã®å Žåã¯ãæçµçã«ãã¡ã³ã¯ã·ã§ã³åãŸã§è¡ãçããŸããã Function/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C.MeanlessFunction ãBP_ThirdPersonCharacterãã®ãMeanlessFunctionããšãããã¡ã³ã¯ã·ã§ã³ã«æéãããã£ãŠããŸã£ãŠãããããªã®ã§ãæ€èšŒããŸãã 2-3. é
å»¶åå ã®ç¹å®æ¹æ³ Unreal InsightsãšSession Frontendãå©çšããŠãé
å»¶ã®åå ã«ãªã£ãŠããããªãã¡ã³ã¯ã·ã§ã³ãç¹å®ããã®ã§ãå®éã«UEç»é¢ãã調æ»ããŠã¿ãŸãã BP_ThirdPersonCharacterã®ãã¡ã€ã«ãéããBlueprintã確èªããŸãã ãã¡ã€ã«å
ã«ãMeanless Functionããšãããã¡ã³ã¯ã·ã§ã³ããã€ãã³ãTickãã«ã€ãªãã£ãŠãããæ¯ãã¬ãŒã ããšã«åŒã°ããŠããŸã£ãŠããããšãããããŸãã ãã¡ã³ã¯ã·ã§ã³ã®å
éšã«ç§»åãããšãæåéããæå³ã®ãªãåŠçãForæã§2äžåãè¡ã£ãŠããŸããã 1ãã¬ãŒã ããšã«2äžåãprint stringãããŠãããšèãããšæããããã°ã§ãã ïŒãã¡ããä»èŸŒã¿ã§ãããã¿ãŸãããïŒ ãã®ãMeanless Functionããåé€ããããäžåºŠã²ãŒã ãéå§ããŠã¿ãŸãã èŠäºãGameãã®æ°å€ãæ¹åãããFrameãã60FPSã«å¯Ÿå¿ã§ããæ°å€ãŸã§æ¹åã§ããŸããã 念ã®çº Unreal InsightsãSession Frontendã確èªããŸããããä¿®æ£åãšæ¯ã¹ç°åžžãªåŠçæéãããã£ãŠããéšåããªããªã£ãŠããã®ã確èªã§ããŸããã ãããã« ä»åã¯ãååã«åŒãç¶ããUE5ãå©çšããŠãããã¡ã€ãªã³ã°ã®æ¹æ³ã説æããŠããŸããã ä»ååŠç¿ããã GPU ã§åé¡ã«ãªã£ãŠããç®æãæ¢ããŠå¯Ÿçãè¡ãããã®æ¬¡ã«CPUã§åé¡ã«ãªã£ãŠããç®æãæ¢ããããŒã¯ã ä»åŸã®å®éã®çŸå Žã§ã䜿ã£ãŠãããã®ã§ã¯ãªãããšæããŠããŸãã ãã¡ããå®éã®ãããžã§ã¯ãã§ã¯ãããè€éã«åå ãå
¥ãçµãã§ããããšãæ³åã§ããã®ã§ã åºç€ã®å匷ããã€ã€ãå®éã®ãããã¡ã€ãªã³ã°ãã©ãã©ãè¡ã£ãŠããããã§ãã ãŸã ååã®èšäºïŒãããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒGPUç·šïŒ ãã芧ã«ãªã£ãŠããªãæ¹ã¯ããã¡ããæ¯éèªãã§ããã ãããšå¬ããã§ãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ISIDæ¡çšããŒãžïŒWeb3/ã¡ã¿ããŒã¹/AIïŒ åè https://qiita.com/donbutsu17/items/159dfaacfac6a4b1392d https://docs.unrealengine.com/4.27/ja/TestingAndOptimization/PerformanceAndProfiling/UnrealInsights/ https://hub.vive.com/storage/docs/en-us/UnrealPlugin/UnrealProfiler.html å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @yamada.y ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®å€§è¥¿ã§ããçŸåšãTypeScriptãšReactã䜿ã£ãŠWebã¢ããªãéçºããŠããŸãããããã³ããšã³ãã®å®è£
ãä»»ãããéã« Linkify ãš MUI(Material UI) ãåãããŠäœ¿ãå Žé¢ããããŸãããLinkifyãšMUIã®ã³ã©ãå®è£
ã¯ããŸãèšäºããªãã£ãã®ã§èšäºãæžããŠã¿ãŸããã Linkifyãšã¯ïŒ MUI(Material UI)ãšã¯ïŒ LinkifyãšMUIãäžç·ã«äœ¿ã ãŸãšã Linkifyãšã¯ïŒ Reactã§ããã¹ãå
ã®URLããªã³ã¯ã«ãããå Žé¢ããã£ããšããŸãããããªæãã§ããã Linkifyãšã¯ãæååã«URLãå«ãŸããŠãããšãã«èªåã§ãªã³ã¯åããéã«äœ¿ããã©ã€ãã©ãªã§ãã ãã®ããã«èªåã§ãªã³ã¯åããæ¹æ³ãæ¢ããšãLinkifyãå
¥ããŠ3ã€ã»ã©æ¹æ³ããããŸããã Linkifyã䜿ã react-string-replace ã䜿ã èªåã§å®è£
ãã 2ã®react-string-replaceã¯1ã®Linkifyã«æ¯ã¹ GitHub ã®Forkæ°ãstaræ°ãå°ãªãã3ã®èªåå®è£
ã¯ã dangerouslySetInnerHTML ãšãã颿°ã䜿ããªããã°ãããªãã£ãããä»åã¯Linkifyã䜿ãããšã«ããŸãããLinkify㯠ããã¥ã¡ã³ã ããã£ããæŽåãããŠããŠã XSS(ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°)æ»æã«å¯ŸããŠè匱ã«ãªããªããããªæ¹æ³ ã瀺ãããŠããã®ã§ãšãŠãè¯ãã£ãã§ãã MUI(Material UI)ãšã¯ïŒ MUIã¯Reactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ã«äœ¿ããUI ã³ã³ããŒãã³ã ã®å·šå€§ãªã©ã€ãã©ãªã§ããåºç€çãªUIèŠçŽ ããé«åºŠãªUIèŠçŽ ãŸã§ããã£ãŠãããã«ã¹ã¿ãã€ãºå¯èœãªã©ã€ãã©ãªãåãã£ãŠããŸããåºæ¬çã«ç¡æã§å©çšã§ããŸãããäžéšææã®ã©ã€ãã©ãªããããŸããMUIã䜿ããšãäŸã㰠衚(ããŒãã«) ã ããã°ã¬ã¹ã㌠ã«ããŠããèªåã§äžããå®è£
ããããç°¡åã«å®çŸã§ããŸãã MUIã䜿çšããŠäœã£ã衚â MUIã䜿çšããŠäœã£ã ããã°ã¬ã¹ã㌠â LinkifyãšMUIãäžç·ã«äœ¿ã Reactã¢ããªãéçºããŠããäžã§ãLinkifyãšMUIãåæã«äœ¿ãããå Žé¢ãåºãŠããŸãããäŸãã°MUIã® Linkã³ã³ããŒãã³ã ãšLinkifyãåæã«äœ¿ãããå Žåã§ããLinkifyã¯ãã¡ããLink ã³ã³ããŒãã³ã ã䜿ããªããŠã以äžã®ããã«æžããšæååããªã³ã¯åã§ããŸãã < Linkify > { props.content } < /Linkify > ããããããŒã å
ã§ãããããçµ±äžããŠäœã£ãŠãããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ïŒä»åã¯ãCustomLinkããšããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ããã£ããšããŸãïŒã䜿ãããå Žåã¯å°ã工倫ãå¿
èŠã§ã renderãªãã·ã§ã³ ãå¿
èŠã§ããrenderãªãã·ã§ã³ãçšãããšããªã³ã¯èŠçŽ ã®çææ¹æ³ããªãŒããŒã©ã€ãã§ããŸããã¿ãŒã²ãããªã³ã¯ã®äžé衚çŸïŒIntermediateRepresentationãã¿ã°åã屿§ãããã¹ãã³ã³ãã³ãçãå«ããªããžã§ã¯ãïŒãåãå
¥ãã颿°ãæå®ããæ»ãå€ã¯ãæååãHTML èŠçŽ ããŸã㯠ã€ã³ã¿ãŒãã§ã€ã¹ åºæã®ãšã³ãã£ãã£ã«ããŸããrender颿°ã¯ãçµæ ïŒå±æ§ãã³ã³ãã³ããªã©ïŒãåŒæ°ãšããŠä»ã®ãã¹ãŠã®ãªãã·ã§ã³ãèšç®ãããåŸã«å®è¡ãããŸããå®è£
ãããšä»¥äžã®ããã«ãªããŸãã ããŒã å
ã§çµ±äžããŠå®çŸ©ããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã â import { Link , LinkProps } from "@mui/material" ; export const CustomLink = ( props: LinkProps ) : JSX. Element => { const { href , children , ...other } = props ; return ( < Link { ...other } href = { href } target = "_blank" rel = "noopener noreferrer" color = "#FF0000" ...ãªã©ããŒã å
ã§èšå®ãããªãã·ã§ã³ > { children } < /Link > ); } ; äžèšã®ã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ã䜿ããããã«æ°ãã ã³ã³ããŒãã³ã ãäœæããâ import { IntermediateRepresentation } from "linkifyjs" ; import { CustomLink } from "CustomLinkãå®çŸ©ãããã¡ã€ã«" ; export const renderLink = ( ir: IntermediateRepresentation ) : JSX. Element => { return < CustomLink { ...ir.attributes } > { ir.content } < /CustomLink >; } ; ãããŠãCustomLinkããªã³ã¯åãããã³ã³ãã³ãã衚瀺ãã tsx ãã¡ã€ã«ã«æã£ãŠãããrenderãªãã·ã§ã³ã«æž¡ãâ < Linkify options = {{ render: renderLink }} > { props.content } < /Linkify > ãšããŠããã°ãããŒã å
ã§çµ±äžããŠäœ¿ã£ãŠããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ã䜿ã£ãŠãæååå
ã®URLããªã³ã¯åã§ããŸãïŒIntermediateRepresentationã«ã€ããŠè£è¶³ã§ããã ã»ir.attributes å
ã« href ããããã£ãªã©aã¿ã°ã®å±æ§ãæž¡ã£ãŠãã ã»ir.content ã¯ãªã³ã¯ã®è¡šèšãæž¡ã£ãŠãã ãšãã仿§ã«ãªã£ãŠããŸãã ã¡ãªã¿ã«Link ã³ã³ããŒãã³ã ãæ±ãéã« target="_blank" ãã€ããå Žåã¯ã rel="noopener" ãš rel="noreferrer" ãªãã·ã§ã³ãã€ããŠããããšå®å¿ã§ããtarget="_blank"ãã€ãããšãªã³ã¯ãã¯ãªãã¯ãããšãã«å¥ã¿ãã§ãªã³ã¯å
ã®ããŒãžãéããŸãããéããå
ã®ããŒãžãæªæããè
ã«ãã£ãŠäœæãããããŒãžã§ãã£ãå Žåã ãªã³ã¯å
ã®ããŒãžãæäœãããå±éºããããŸãããããrel="noopener noreferrer"ãã€ããŠãããããšã§ã ãªã³ã¯å
ã®ããŒãžãæäœãããã®ãé²ãã ãã ãªã³ã¯å
ã®æ
å ±ãæž¡ããªãããã«ã§ããŸãã ãŸãšã ãã®ããã«ãLinkifyãšMUIãäžç·ã«äœ¿ãããšã§ãããŒã å
ã§çµ±äžããŠäœ¿ã£ãŠããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ã䜿ã£ãŠæååå
ã®URLããªã³ã¯åã§ããŸããLinkifyã¯URLã ãã§ãªããã¡ãŒã«ã¢ãã¬ã¹ããªã³ã¯åã§ããŸããã ãã©ã°ã€ã³ ã䜿çšããã° Twitter ã® ããã·ã¥ã¿ã° ãã¡ã³ã·ã§ã³ã IPã¢ãã¬ã¹ ããŸãèªåãæå®ããããŒã¯ãŒããæ€åºããŠãªã³ã¯åã§ããŠããŸããŸãïŒäŸ¿å©ãª ãªãã·ã§ã³ ãããã£ãŠããã®ã§ããã²äœ¿ã£ãŠã¿ãŠãã ããïŒ ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžã㢠å·çïŒ @onishi.mayu ãã¬ãã¥ãŒïŒ @kano.nanami ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®å€§è¥¿ã§ããçŸåšãTypeScriptãšReactã䜿ã£ãŠWebã¢ããªãéçºããŠããŸãããããã³ããšã³ãã®å®è£
ãä»»ãããéã« Linkify ãš MUI(Material UI) ãåãããŠäœ¿ãå Žé¢ããããŸãããLinkifyãšMUIã®ã³ã©ãå®è£
ã¯ããŸãèšäºããªãã£ãã®ã§èšäºãæžããŠã¿ãŸããã Linkifyãšã¯ïŒ MUI(Material UI)ãšã¯ïŒ LinkifyãšMUIãäžç·ã«äœ¿ã ãŸãšã Linkifyãšã¯ïŒ Reactã§ããã¹ãå
ã®URLããªã³ã¯ã«ãããå Žé¢ããã£ããšããŸãããããªæãã§ããã Linkifyãšã¯ãæååã«URLãå«ãŸããŠãããšãã«èªåã§ãªã³ã¯åããéã«äœ¿ããã©ã€ãã©ãªã§ãã ãã®ããã«èªåã§ãªã³ã¯åããæ¹æ³ãæ¢ããšãLinkifyãå
¥ããŠ3ã€ã»ã©æ¹æ³ããããŸããã Linkifyã䜿ã react-string-replace ã䜿ã èªåã§å®è£
ãã 2ã®react-string-replaceã¯1ã®Linkifyã«æ¯ã¹ GitHub ã®Forkæ°ãstaræ°ãå°ãªãã3ã®èªåå®è£
ã¯ã dangerouslySetInnerHTML ãšãã颿°ã䜿ããªããã°ãããªãã£ãããä»åã¯Linkifyã䜿ãããšã«ããŸãããLinkify㯠ããã¥ã¡ã³ã ããã£ããæŽåãããŠããŠã XSS(ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°)æ»æã«å¯ŸããŠè匱ã«ãªããªããããªæ¹æ³ ã瀺ãããŠããã®ã§ãšãŠãè¯ãã£ãã§ãã MUI(Material UI)ãšã¯ïŒ MUIã¯Reactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ã«äœ¿ããUI ã³ã³ããŒãã³ã ã®å·šå€§ãªã©ã€ãã©ãªã§ããåºç€çãªUIèŠçŽ ããé«åºŠãªUIèŠçŽ ãŸã§ããã£ãŠãããã«ã¹ã¿ãã€ãºå¯èœãªã©ã€ãã©ãªãåãã£ãŠããŸããåºæ¬çã«ç¡æã§å©çšã§ããŸãããäžéšææã®ã©ã€ãã©ãªããããŸããMUIã䜿ããšãäŸã㰠衚(ããŒãã«) ã ããã°ã¬ã¹ã㌠ã«ããŠããèªåã§äžããå®è£
ããããç°¡åã«å®çŸã§ããŸãã MUIã䜿çšããŠäœã£ã衚â MUIã䜿çšããŠäœã£ã ããã°ã¬ã¹ã㌠â LinkifyãšMUIãäžç·ã«äœ¿ã Reactã¢ããªãéçºããŠããäžã§ãLinkifyãšMUIãåæã«äœ¿ãããå Žé¢ãåºãŠããŸãããäŸãã°MUIã® Linkã³ã³ããŒãã³ã ãšLinkifyãåæã«äœ¿ãããå Žåã§ããLinkifyã¯ãã¡ããLink ã³ã³ããŒãã³ã ã䜿ããªããŠã以äžã®ããã«æžããšæååããªã³ã¯åã§ããŸãã < Linkify > { props.content } < /Linkify > ããããããŒã å
ã§ãããããçµ±äžããŠäœã£ãŠãããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ïŒä»åã¯ãCustomLinkããšããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ããã£ããšããŸãïŒã䜿ãããå Žåã¯å°ã工倫ãå¿
èŠã§ã renderãªãã·ã§ã³ ãå¿
èŠã§ããrenderãªãã·ã§ã³ãçšãããšããªã³ã¯èŠçŽ ã®çææ¹æ³ããªãŒããŒã©ã€ãã§ããŸããã¿ãŒã²ãããªã³ã¯ã®äžé衚çŸïŒIntermediateRepresentationãã¿ã°åã屿§ãããã¹ãã³ã³ãã³ãçãå«ããªããžã§ã¯ãïŒãåãå
¥ãã颿°ãæå®ããæ»ãå€ã¯ãæååãHTML èŠçŽ ããŸã㯠ã€ã³ã¿ãŒãã§ã€ã¹ åºæã®ãšã³ãã£ãã£ã«ããŸããrender颿°ã¯ãçµæ ïŒå±æ§ãã³ã³ãã³ããªã©ïŒãåŒæ°ãšããŠä»ã®ãã¹ãŠã®ãªãã·ã§ã³ãèšç®ãããåŸã«å®è¡ãããŸããå®è£
ãããšä»¥äžã®ããã«ãªããŸãã ããŒã å
ã§çµ±äžããŠå®çŸ©ããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã â import { Link , LinkProps } from "@mui/material" ; export const CustomLink = ( props: LinkProps ) : JSX. Element => { const { href , children , ...other } = props ; return ( < Link { ...other } href = { href } target = "_blank" rel = "noopener noreferrer" color = "#FF0000" ...ãªã©ããŒã å
ã§èšå®ãããªãã·ã§ã³ > { children } < /Link > ); } ; äžèšã®ã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ã䜿ããããã«æ°ãã ã³ã³ããŒãã³ã ãäœæããâ import { IntermediateRepresentation } from "linkifyjs" ; import { CustomLink } from "CustomLinkãå®çŸ©ãããã¡ã€ã«" ; export const renderLink = ( ir: IntermediateRepresentation ) : JSX. Element => { return < CustomLink { ...ir.attributes } > { ir.content } < /CustomLink >; } ; ãããŠãCustomLinkããªã³ã¯åãããã³ã³ãã³ãã衚瀺ãã tsx ãã¡ã€ã«ã«æã£ãŠãããrenderãªãã·ã§ã³ã«æž¡ãâ < Linkify options = {{ render: renderLink }} > { props.content } < /Linkify > ãšããŠããã°ãããŒã å
ã§çµ±äžããŠäœ¿ã£ãŠããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ã䜿ã£ãŠãæååå
ã®URLããªã³ã¯åã§ããŸãïŒIntermediateRepresentationã«ã€ããŠè£è¶³ã§ããã ã»ir.attributes å
ã« href ããããã£ãªã©aã¿ã°ã®å±æ§ãæž¡ã£ãŠãã ã»ir.content ã¯ãªã³ã¯ã®è¡šèšãæž¡ã£ãŠãã ãšãã仿§ã«ãªã£ãŠããŸãã ã¡ãªã¿ã«Link ã³ã³ããŒãã³ã ãæ±ãéã« target="_blank" ãã€ããå Žåã¯ã rel="noopener" ãš rel="noreferrer" ãªãã·ã§ã³ãã€ããŠããããšå®å¿ã§ããtarget="_blank"ãã€ãããšãªã³ã¯ãã¯ãªãã¯ãããšãã«å¥ã¿ãã§ãªã³ã¯å
ã®ããŒãžãéããŸãããéããå
ã®ããŒãžãæªæããè
ã«ãã£ãŠäœæãããããŒãžã§ãã£ãå Žåã ãªã³ã¯å
ã®ããŒãžãæäœãããå±éºããããŸãããããrel="noopener noreferrer"ãã€ããŠãããããšã§ã ãªã³ã¯å
ã®ããŒãžãæäœãããã®ãé²ãã ãã ãªã³ã¯å
ã®æ
å ±ãæž¡ããªãããã«ã§ããŸãã ãŸãšã ãã®ããã«ãLinkifyãšMUIãäžç·ã«äœ¿ãããšã§ãããŒã å
ã§çµ±äžããŠäœ¿ã£ãŠããã«ã¹ã¿ã ãªã³ã¯ ã³ã³ããŒãã³ã ã䜿ã£ãŠæååå
ã®URLããªã³ã¯åã§ããŸããLinkifyã¯URLã ãã§ãªããã¡ãŒã«ã¢ãã¬ã¹ããªã³ã¯åã§ããŸããã ãã©ã°ã€ã³ ã䜿çšããã° Twitter ã® ããã·ã¥ã¿ã° ãã¡ã³ã·ã§ã³ã IPã¢ãã¬ã¹ ããŸãèªåãæå®ããããŒã¯ãŒããæ€åºããŠãªã³ã¯åã§ããŠããŸããŸãïŒäŸ¿å©ãª ãªãã·ã§ã³ ãããã£ãŠããã®ã§ããã²äœ¿ã£ãŠã¿ãŠãã ããïŒ ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžã㢠å·çïŒ @onishi.mayu ãã¬ãã¥ãŒïŒ @kano.nanami ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ã²ãŒã ãåç»ãªã©ãäœæããéã«ããŠãŒã¶ãŒãéåæãªãã³ã³ãã³ãã䜿çšããããã«ã¯ã ãã¬ãŒã ããšã®æç»é床ïŒãã¬ãŒã ã¬ãŒãïŒãæèããããã©ãŒãã³ã¹ãæ
ä¿ãç¶ããå¿
èŠããããŸãã ä»åã¯UE5ã§ããã©ãŒãã³ã¹ãæ
ä¿ããããã«å¿
èŠãªããããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒã®èª¬æãè¡ããŸãã ã¯ããã« UEã§ã¯ãå¶äœãããããžã§ã¯ãã®æ§èœã枬ãããã«ãããã¡ã€ãªã³ã°ãšããäœæ¥ãè¡ããŸãã ãããã¡ã€ãªã³ã°ã¯ãäž»ã«ããã©ãŒãã³ã¹æ¹åãç®çãšããŠå®æœããŸããäŸãã°ã³ãã³ããå°çšã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãæç»ã«é
å»¶ãèµ·ãã£ãŠããªãããäžèŠãªåŠçãããŠããBlueprintããªããããªã©ã調ã¹ãŸãã ä»åã®èšäºã§ã¯ãUEã®åºç€çãªãããã¡ã€ãªã³ã°ã®æ¹æ³ïŒ GPU ç·šïŒã«ã€ããŠç޹ä»ããŠãããŸãã CPUã«é¢ããŠã¯èšäºãé·ããªãã®ã§ã次ã®èšäºã§ã玹ä»ããŸãã æ€èšŒç°å¢/ããŒã« OSïŒ Windows 11 pro GPU ïŒ NVIDIA GeForce RTX 4070 Ti Game EngineïŒ Unreal Engine 5.2.0 å®è£
æé ãstat unitãã³ãã³ãã®å®æœ Drawsãå€ãå Žåã®å¯ŸåŠæ¹æ³ 2-1. 察象ã¡ãã·ã¥ã®ç¢ºèªãåé€ 2-2. Naniteã®èšå®ïŒUE5ã®å ŽåïŒ 1. ãstat unitãã³ãã³ãã®å®æœ ãŸãåãã«ããstat unitãã³ãã³ãã«ã€ããŠèª¬æããŠãããŸãã UEã§ã¯ããŸããŸãªæ¹æ³ã§ãããžã§ã¯ãã®ãããã¡ã€ãªã³ã°ãè¡ãæ¹æ³ããããŸãã ãstat unitãã¯ãããžã§ã¯ãå
šäœã俯ç°ãã倧äœã©ã®èŸºã«èŽåœçãªãã°ãé
å»¶ã®åå ãããããªã©ã調ã¹ãã®ã«é©ããã³ãã³ãã«ãªããŸãã ãstat unitãã³ãã³ãã䜿çšããããã«ã¯ã ãããã° ããããããžã§ã¯ããéããç»é¢äžéšããã¢ãŠããããã¿ããæŒäžãã ã³ãã³ãå
¥åã¹ããŒã¹ã«ãstat unitããèšè¿°ããŸãã ç»é¢äžã«ç»åã®ãããªãã°ãåºãŠããŸãã äž»èŠãªé
ç®ã®èª¬æãããŸãã Frame : ç»é¢ãæç»ããã®ã«ããã£ãåŠçæéã60FPSã®ã²ãŒã ãäœæããå Žåã¯ã16.6ms以äžã«ãªãããã«èª¿æŽããªããšãããªã Game : ãªã¢ã«ã¿ã€ã ã§åäœããã²ãŒã ã®ããžãã¯ãã¢ãã¡ãŒã·ã§ã³ã«ãããCPUã®åŠçæé Draw : äœãæç»ããããéžæãèšç®ãããããã«ãããCPUã®åŠçæé GPU Time : ã¡ãã·ã¥ãåãããªã¢ã«ã®æç»ããã©ã€ãã£ã³ã°ãªã©ã«ããã GPU ã®åŠçæé Draws : æç»ããå¿
èŠã®ããã¡ãã·ã¥ã®åæ°ã GPU Timeã«åœ±é¿ãäžãã ãŸãGameãªã©ã®æ°å€ã¯ãã²ãŒã ããã¬ã€ããŠããæäžã«Blueprintãªã©ã«é£åããŠæ°å€ãå€åããã®ã§ã ã²ãŒã ããã¬ã€ããŠã㣠ã©ã¯ ã¿ãŒã®æäœãªã©ãè¡ã£ãéã®æ°å€ã確ãããå¿
èŠããããŸãã ä»å㯠GPU ç·šãªã®ã§ããstat unitãã®çµæããã ãDrawãããDrawsãã®æ°å€ã調æ»ãä¿®æ£ãè¡ã£ãŠãããŸãã ãã®ä»ã®é
ç®ã®CPUã«é¢ããç®æã¯æ¬¡ã®èšäºã§ç޹ä»ããã®ã§ãæ¬èšäºã§ã¯å²æããŸãã 2. Drawsãå€ãå Žåã®å¯ŸåŠæ¹æ³ Drawsã®æ°å€ã倧ããå Žåã¯ãã¡ãã·ã¥ã倧éã«é
眮ãããŠããããããªãŽã³æ°ã®å€ãããè€éãªã¡ãã·ã¥ãé
眮ãããŠããŸã£ãŠããå¯èœæ§ããããŸãã ä»åã¯ã16.6msãè¶
ããŠãããããæ£åžžæã¯ç·ã«è¡šç€ºãããæ°åãèµ€æåã«ãªã£ãŠããŸãã ãã® Drawsã®æ°å€ã倧ããããã«æããã®ã§èª¿æ»ããŠãããŸãã ãŸãã¯ã¬ãã«äžã«ã©ã®ãããªã¡ãã·ã¥ãããªãŽã³ãããã確èªããŠãããŸãã 2-1. 察象ã¡ãã·ã¥ã®ç¢ºèªãåé€ ç»é¢äžéšã®ããŒã«ããããªãŒãã£ããïŒçµ±èš ãéžã³ãŸãã ãããšå¥ç»é¢ã§ã¬ãã«å
ã«é
眮ãããŠããã¡ãã·ã¥ã®ããªãŽã³æ°ã確èªããããšãåºæ¥ãŸãã ãTrisããšæžãããŠããéšåãããªãŽã³æ°ã§ããSum TrisããšæžãããŠããéšåãåèšã®ããªãŽã³æ°ã«ãªããŸãã ä»åã®çµ±èšã§ã¯ããSM_Movehumanããšãããªããžã§ã¯ãã®ãCountããã31,834ãã«ãªã£ãŠããããSum Trisãã®æ°å€ãéåžžã«é«ããªã£ãŠããŸãã äžè¬çã«ããªãŽã³æ°ã¯äžèšã® éŸå€ ãåèã«ãããšè¯ããšãããŠããŸãã 2000ãã3000ãŸã§ãçæ³ 5000ãè¶
ãããšéãããªãå§ãã 10000ãè¶
ãããšåé¡ãèµ·ããå§ãã ãã®ããDrawã®æ°å€ã倧ãããªã£ãŠããããšãèããããŸãã ãããžã§ã¯ãã«æ»ã£ãŠç¢ºèªããŠã¿ããšã å®ã¯ãã®ã¬ãã«ã«ã¯å€§éã®ãSM_Movehumanãã®ã¢ã¯ã¿ãŒãé
眮ããŠããããšãããããŸããã ãã¡ãããã®ãããžã§ã¯ãã¯åŠçãéãããããšãç®çã«äœæããŠããã®ã§ç°¡åã«çºèŠã§ããŸãããã å®éã®ãããžã§ã¯ãã§ã¯ããããŸã§åçŽã«åé¡ãçºèŠããããšã¯ãªããªãåºæ¥ãŸããã ããããçµ±èšãèŠãªããã¬ãã«ã«é
眮ããŠãããªããžã§ã¯ãã®åæ°ããããªãŽã³æ°ã確èªãã倧äœã®ããããã€ããã®ã«ã¯ãšãŠãæå¹ãªææ®µã§ãã ä»åã®ããã«ããªããžã§ã¯ãã倧éã«ãããDrawsãã®æ°å€ãéåžžã«é«ãå Žåã®å¯ŸåŠæ³ã¯å€§ãã3ã€ãããŸãã ç¡é§ãªãªããžã§ã¯ãã®åé€ UE5ã§è¿œå ããããNaniteããäœ¿çš ãªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ã®èšå® â»ãªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ã®èšå®æ¹æ³ã¯æ¬èšäºã§ã¯èª¬æããŸãããæ¬¡å以éã®èšäºã§ç޹ä»ããäºå®ã§ãã ãŸãã¯ç¡é§ãªãªããžã§ã¯ãã®åé€ã詊ããŸãã æ¬ãããžã§ã¯ãã§ã¯ããSM_Movehumanãã®ã¢ã¯ã¿ãŒããã¹ãŠåé€ããŠã¿ãŸãã ãstat unitãã®å€ã確èªããŠã¿ãŸãã ãDrawsãã®å€ãäžããããDrawãã«ãããåŠçé床ãçããªã£ãŠããããšã確èªã§ããŸãã ã¢ã¯ã¿ãŒåé€å ã¢ã¯ã¿ãŒåé€åŸ ãŸããæ¬ãããžã§ã¯ãã§ã¯å²æããŸãããçµ±èšå
ã®ãCountãã®æ°ãäžããªããšããããããã®ããªãŽã³æ°ãå°ãªããã®ãçšæããã®ãæå¹ã§ãã ããé
眮ããŠãããªããžã§ã¯ããå
šãŠå¿
èŠãªãã®ã§ãåé€ã§ããªãå Žåã¯æ¬¡ã®ææ®µã詊ããŸãã 2-2. Naniteã®èšå®ïŒUE5ã®å ŽåïŒ Naniteãšã¯ ãŸã Nanite ãç°¡åã«èª¬æãããŸãã Nanite ãšã¯ãUE5ããæèŒãããã3Dã¢ãã«ãå¹ççã«ãã€é«éã« ã¬ã³ããªã³ã° ããŠãããã·ã¹ãã ã§ãLODãèªåã§è¡ã£ãŠãããŸãã LODãšããã®ã¯ Level of Detail ã®ç¥ã§ãã²ãšã€ã®ãªããžã§ã¯ãã«å¯Ÿããè€æ°ã®ç²ãã®éãã¡ãã·ã¥ãäœæãã ã«ã¡ã©ãé ãã«ãããšãã«ã¯ç²ã軜ãã¡ãã·ã¥ã䜿çšããè¿ãã«ãããšãã¯çްããæ£ç¢ºãªã¡ãã·ã¥ã䜿çšããæç»æ¹æ³ã§ãã ããã«ãããŠãŒã¶ãŒã«éåæãã¡ãã·ã¥ã®ç²ããæããããã«ãæç»é床ãäžããããšãã§ããŸãã NaniteãæèŒãããåã¯ããããã®è€æ°ã®ã¡ãã·ã¥ãçšæããè·é¢ãèšç®ãé
眮ããäœæ¥ã¯æäœæ¥ã§è¡ã£ãŠããŸãããã LODãNaniteã«ãã£ãŠèªååãããæäœæ¥ã§ããããããã«å¹ççã« ã¬ã³ããªã³ã° ã§ããããã«ãªããŸããã Naniteã®èšå®æ¹æ³ Naniteã¯ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ã«ã®ã¿äœ¿çšã§ããŸããïŒã¹ã±ã«ã¿ã«ã¡ãã·ã¥ãªã©ã«ã¯èšå®ã§ããªãã®ã§æ³šæãå¿
èŠïŒ èšå®ãããã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãéããŸãã ä»åã¯ã¬ãã«å
ã«é
眮ããŠãã倧éã®äººåã®ãªããžã§ã¯ãã«å¯ŸããNaniteã®èšå®ãè¡ã£ãŠãããŸãã ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãéããã詳现ããã«ãããNaniteã®èšå® ïŒ NaniteãµããŒãã®æå¹å ããªã³ã«ããŸãã ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãä¿åããã¬ãã«ã«é
眮ããããã®ã¢ã¯ã¿ãŒã¯ã©ã¹BlueprintãäœæããŸãã ã³ã³ããŒãã³ã å
ã«ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ã远å ãã詳现ç»é¢ããå
ã»ã©Naniteã®èšå®ãããã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãéžæããŸãã ããšã¯ããã®ã¢ã¯ã¿ãŒãã¬ãã«äžã«é
眮ããŠè² è·ã«å€åããããæ€èšŒããŠãããŸãã Naniteã«ããè² è·è»œæžã®æ€èšŒ PCGãå©çšããŠäººåã®ã¢ã¯ã¿ãŒã倧éã«é
眮ããã¬ãã«ãçšæããNaniteãèšå®ãããã®ãšãããŠããªããã®ã§ã©ãã ãæ°å€ã«å·®ãåºãã調æ»ããŸããã ããããã®ã²ãŒã äžã§ãstat unitããè¡ããŸãã ïŒä»åã®èšäºã§ã¯PCGã«é¢ããŠã®èª¬æã¯å²æããããŸããïŒ Naniteãæå¹ã«ããŠããªãå Žå Naniteãæå¹ã«ããŠããå Žå Drawsã®æ°å€ãåçã«æžå°ããïŒ 18143 â 559 ïŒãFrameã«ãããæéã16ms ã»ã©ççž®ã§ããŠããŸãã ä»åã¯ããã©ã«ãã§çšæãããŠãã人åã®ã¡ãã·ã¥ã«å¯ŸãNaniteã®èšå®ãè¡ããŸãããã ZBrush ãªã©ã§äœæããè€éã§ããªãŽã³æ°ã®å€ããªããžã§ã¯ããªã©ã«å¯ŸããŠNaniteã®èšå®ãè¡ãããšã§ãåçã«æç»é床ãåäžã§ããŸãã ãããã« ä»åã¯ãUE5ãå©çšããŠãããã¡ã€ãªã³ã°ã®æ¹æ³ã® GPU éšåã«é¢ããŠã ããã«ãã㯠ã«ãªã£ãŠããç®æãæ¢ãã察çããæ¹æ³ãªã©ããŸãšããŸããã ä»åã¯æ€èšŒçšã«äœæãããããžã§ã¯ãã ã£ããããåçŽæå¿«ã«åé¡ã®çºèŠãšè§£æ±ºãã§ããŸãããã å®éã®ãããžã§ã¯ãã§ã¯ãããè€éã«åå ãå
¥ãçµãã§ããããšãæ³åã§ããŸãã å®è·µãç©ã¿ãªããããããã¡ã€ãªã³ã°ã«ã€ããŠãã£ãšè©³ãããªã£ãŠããããã§ãã æ¬ãããžã§ã¯ãã§ã¯ããŸã CPUåŽã« ããã«ãã㯠ãããFrameã®æ°å€ã140msãšãéåžžã«é
ããªã£ãŠããã®ã§ã 次ã®èšäºã§ã¯CPUã«é¢ãããããã¡ã€ã«ã³ã°æ¹æ³ãã玹ä»ããŠãããŸãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ISIDæ¡çšããŒãžïŒWeb3/ã¡ã¿ããŒã¹/AIïŒ å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @kano.nanami ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãISID éèãœãªã¥ãŒã·ã§ã³äºæ¥éšã®å²¡åŽã§ãã ã²ãŒã ãåç»ãªã©ãäœæããéã«ããŠãŒã¶ãŒãéåæãªãã³ã³ãã³ãã䜿çšããããã«ã¯ã ãã¬ãŒã ããšã®æç»é床ïŒãã¬ãŒã ã¬ãŒãïŒãæèããããã©ãŒãã³ã¹ãæ
ä¿ãç¶ããå¿
èŠããããŸãã ä»åã¯UE5ã§ããã©ãŒãã³ã¹ãæ
ä¿ããããã«å¿
èŠãªããããã¡ã€ãªã³ã°ã®ã¯ãŒã¯ãããŒã®èª¬æãè¡ããŸãã ã¯ããã« UEã§ã¯ãå¶äœãããããžã§ã¯ãã®æ§èœã枬ãããã«ãããã¡ã€ãªã³ã°ãšããäœæ¥ãè¡ããŸãã ãããã¡ã€ãªã³ã°ã¯ãäž»ã«ããã©ãŒãã³ã¹æ¹åãç®çãšããŠå®æœããŸããäŸãã°ã³ãã³ããå°çšã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãæç»ã«é
å»¶ãèµ·ãã£ãŠããªãããäžèŠãªåŠçãããŠããBlueprintããªããããªã©ã調ã¹ãŸãã ä»åã®èšäºã§ã¯ãUEã®åºç€çãªãããã¡ã€ãªã³ã°ã®æ¹æ³ïŒ GPU ç·šïŒã«ã€ããŠç޹ä»ããŠãããŸãã CPUã«é¢ããŠã¯èšäºãé·ããªãã®ã§ã次ã®èšäºã§ã玹ä»ããŸãã æ€èšŒç°å¢/ããŒã« OSïŒ Windows 11 pro GPU ïŒ NVIDIA GeForce RTX 4070 Ti Game EngineïŒ Unreal Engine 5.2.0 å®è£
æé ãstat unitãã³ãã³ãã®å®æœ Drawsãå€ãå Žåã®å¯ŸåŠæ¹æ³ 2-1. 察象ã¡ãã·ã¥ã®ç¢ºèªãåé€ 2-2. Naniteã®èšå®ïŒUE5ã®å ŽåïŒ 1. ãstat unitãã³ãã³ãã®å®æœ ãŸãåãã«ããstat unitãã³ãã³ãã«ã€ããŠèª¬æããŠãããŸãã UEã§ã¯ããŸããŸãªæ¹æ³ã§ãããžã§ã¯ãã®ãããã¡ã€ãªã³ã°ãè¡ãæ¹æ³ããããŸãã ãstat unitãã¯ãããžã§ã¯ãå
šäœã俯ç°ãã倧äœã©ã®èŸºã«èŽåœçãªãã°ãé
å»¶ã®åå ãããããªã©ã調ã¹ãã®ã«é©ããã³ãã³ãã«ãªããŸãã ãstat unitãã³ãã³ãã䜿çšããããã«ã¯ã ãããã° ããããããžã§ã¯ããéããç»é¢äžéšããã¢ãŠããããã¿ããæŒäžãã ã³ãã³ãå
¥åã¹ããŒã¹ã«ãstat unitããèšè¿°ããŸãã ç»é¢äžã«ç»åã®ãããªãã°ãåºãŠããŸãã äž»èŠãªé
ç®ã®èª¬æãããŸãã Frame : ç»é¢ãæç»ããã®ã«ããã£ãåŠçæéã60FPSã®ã²ãŒã ãäœæããå Žåã¯ã16.6ms以äžã«ãªãããã«èª¿æŽããªããšãããªã Game : ãªã¢ã«ã¿ã€ã ã§åäœããã²ãŒã ã®ããžãã¯ãã¢ãã¡ãŒã·ã§ã³ã«ãããCPUã®åŠçæé Draw : äœãæç»ããããéžæãèšç®ãããããã«ãããCPUã®åŠçæé GPU Time : ã¡ãã·ã¥ãåãããªã¢ã«ã®æç»ããã©ã€ãã£ã³ã°ãªã©ã«ããã GPU ã®åŠçæé Draws : æç»ããå¿
èŠã®ããã¡ãã·ã¥ã®åæ°ã GPU Timeã«åœ±é¿ãäžãã ãŸãGameãªã©ã®æ°å€ã¯ãã²ãŒã ããã¬ã€ããŠããæäžã«Blueprintãªã©ã«é£åããŠæ°å€ãå€åããã®ã§ã ã²ãŒã ããã¬ã€ããŠã㣠ã©ã¯ ã¿ãŒã®æäœãªã©ãè¡ã£ãéã®æ°å€ã確ãããå¿
èŠããããŸãã ä»å㯠GPU ç·šãªã®ã§ããstat unitãã®çµæããã ãDrawãããDrawsãã®æ°å€ã調æ»ãä¿®æ£ãè¡ã£ãŠãããŸãã ãã®ä»ã®é
ç®ã®CPUã«é¢ããç®æã¯æ¬¡ã®èšäºã§ç޹ä»ããã®ã§ãæ¬èšäºã§ã¯å²æããŸãã 2. Drawsãå€ãå Žåã®å¯ŸåŠæ¹æ³ Drawsã®æ°å€ã倧ããå Žåã¯ãã¡ãã·ã¥ã倧éã«é
眮ãããŠããããããªãŽã³æ°ã®å€ãããè€éãªã¡ãã·ã¥ãé
眮ãããŠããŸã£ãŠããå¯èœæ§ããããŸãã ä»åã¯ã16.6msãè¶
ããŠãããããæ£åžžæã¯ç·ã«è¡šç€ºãããæ°åãèµ€æåã«ãªã£ãŠããŸãã ãã® Drawsã®æ°å€ã倧ããããã«æããã®ã§èª¿æ»ããŠãããŸãã ãŸãã¯ã¬ãã«äžã«ã©ã®ãããªã¡ãã·ã¥ãããªãŽã³ãããã確èªããŠãããŸãã 2-1. 察象ã¡ãã·ã¥ã®ç¢ºèªãåé€ ç»é¢äžéšã®ããŒã«ããããªãŒãã£ããïŒçµ±èš ãéžã³ãŸãã ãããšå¥ç»é¢ã§ã¬ãã«å
ã«é
眮ãããŠããã¡ãã·ã¥ã®ããªãŽã³æ°ã確èªããããšãåºæ¥ãŸãã ãTrisããšæžãããŠããéšåãããªãŽã³æ°ã§ããSum TrisããšæžãããŠããéšåãåèšã®ããªãŽã³æ°ã«ãªããŸãã ä»åã®çµ±èšã§ã¯ããSM_Movehumanããšãããªããžã§ã¯ãã®ãCountããã31,834ãã«ãªã£ãŠããããSum Trisãã®æ°å€ãéåžžã«é«ããªã£ãŠããŸãã äžè¬çã«ããªãŽã³æ°ã¯äžèšã® éŸå€ ãåèã«ãããšè¯ããšãããŠããŸãã 2000ãã3000ãŸã§ãçæ³ 5000ãè¶
ãããšéãããªãå§ãã 10000ãè¶
ãããšåé¡ãèµ·ããå§ãã ãã®ããDrawã®æ°å€ã倧ãããªã£ãŠããããšãèããããŸãã ãããžã§ã¯ãã«æ»ã£ãŠç¢ºèªããŠã¿ããšã å®ã¯ãã®ã¬ãã«ã«ã¯å€§éã®ãSM_Movehumanãã®ã¢ã¯ã¿ãŒãé
眮ããŠããããšãããããŸããã ãã¡ãããã®ãããžã§ã¯ãã¯åŠçãéãããããšãç®çã«äœæããŠããã®ã§ç°¡åã«çºèŠã§ããŸãããã å®éã®ãããžã§ã¯ãã§ã¯ããããŸã§åçŽã«åé¡ãçºèŠããããšã¯ãªããªãåºæ¥ãŸããã ããããçµ±èšãèŠãªããã¬ãã«ã«é
眮ããŠãããªããžã§ã¯ãã®åæ°ããããªãŽã³æ°ã確èªãã倧äœã®ããããã€ããã®ã«ã¯ãšãŠãæå¹ãªææ®µã§ãã ä»åã®ããã«ããªããžã§ã¯ãã倧éã«ãããDrawsãã®æ°å€ãéåžžã«é«ãå Žåã®å¯ŸåŠæ³ã¯å€§ãã3ã€ãããŸãã ç¡é§ãªãªããžã§ã¯ãã®åé€ UE5ã§è¿œå ããããNaniteããäœ¿çš ãªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ã®èšå® â»ãªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ã®èšå®æ¹æ³ã¯æ¬èšäºã§ã¯èª¬æããŸãããæ¬¡å以éã®èšäºã§ç޹ä»ããäºå®ã§ãã ãŸãã¯ç¡é§ãªãªããžã§ã¯ãã®åé€ã詊ããŸãã æ¬ãããžã§ã¯ãã§ã¯ããSM_Movehumanãã®ã¢ã¯ã¿ãŒããã¹ãŠåé€ããŠã¿ãŸãã ãstat unitãã®å€ã確èªããŠã¿ãŸãã ãDrawsãã®å€ãäžããããDrawãã«ãããåŠçé床ãçããªã£ãŠããããšã確èªã§ããŸãã ã¢ã¯ã¿ãŒåé€å ã¢ã¯ã¿ãŒåé€åŸ ãŸããæ¬ãããžã§ã¯ãã§ã¯å²æããŸãããçµ±èšå
ã®ãCountãã®æ°ãäžããªããšããããããã®ããªãŽã³æ°ãå°ãªããã®ãçšæããã®ãæå¹ã§ãã ããé
眮ããŠãããªããžã§ã¯ããå
šãŠå¿
èŠãªãã®ã§ãåé€ã§ããªãå Žåã¯æ¬¡ã®ææ®µã詊ããŸãã 2-2. Naniteã®èšå®ïŒUE5ã®å ŽåïŒ Naniteãšã¯ ãŸã Nanite ãç°¡åã«èª¬æãããŸãã Nanite ãšã¯ãUE5ããæèŒãããã3Dã¢ãã«ãå¹ççã«ãã€é«éã« ã¬ã³ããªã³ã° ããŠãããã·ã¹ãã ã§ãLODãèªåã§è¡ã£ãŠãããŸãã LODãšããã®ã¯ Level of Detail ã®ç¥ã§ãã²ãšã€ã®ãªããžã§ã¯ãã«å¯Ÿããè€æ°ã®ç²ãã®éãã¡ãã·ã¥ãäœæãã ã«ã¡ã©ãé ãã«ãããšãã«ã¯ç²ã軜ãã¡ãã·ã¥ã䜿çšããè¿ãã«ãããšãã¯çްããæ£ç¢ºãªã¡ãã·ã¥ã䜿çšããæç»æ¹æ³ã§ãã ããã«ãããŠãŒã¶ãŒã«éåæãã¡ãã·ã¥ã®ç²ããæããããã«ãæç»é床ãäžããããšãã§ããŸãã NaniteãæèŒãããåã¯ããããã®è€æ°ã®ã¡ãã·ã¥ãçšæããè·é¢ãèšç®ãé
眮ããäœæ¥ã¯æäœæ¥ã§è¡ã£ãŠããŸãããã LODãNaniteã«ãã£ãŠèªååãããæäœæ¥ã§ããããããã«å¹ççã« ã¬ã³ããªã³ã° ã§ããããã«ãªããŸããã Naniteã®èšå®æ¹æ³ Naniteã¯ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ã«ã®ã¿äœ¿çšã§ããŸããïŒã¹ã±ã«ã¿ã«ã¡ãã·ã¥ãªã©ã«ã¯èšå®ã§ããªãã®ã§æ³šæãå¿
èŠïŒ èšå®ãããã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãéããŸãã ä»åã¯ã¬ãã«å
ã«é
眮ããŠãã倧éã®äººåã®ãªããžã§ã¯ãã«å¯ŸããNaniteã®èšå®ãè¡ã£ãŠãããŸãã ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãéããã詳现ããã«ãããNaniteã®èšå® ïŒ NaniteãµããŒãã®æå¹å ããªã³ã«ããŸãã ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãä¿åããã¬ãã«ã«é
眮ããããã®ã¢ã¯ã¿ãŒã¯ã©ã¹BlueprintãäœæããŸãã ã³ã³ããŒãã³ã å
ã«ã¹ã¿ãã£ãã¯ã¡ãã·ã¥ã远å ãã詳现ç»é¢ããå
ã»ã©Naniteã®èšå®ãããã¹ã¿ãã£ãã¯ã¡ãã·ã¥ãéžæããŸãã ããšã¯ããã®ã¢ã¯ã¿ãŒãã¬ãã«äžã«é
眮ããŠè² è·ã«å€åããããæ€èšŒããŠãããŸãã Naniteã«ããè² è·è»œæžã®æ€èšŒ PCGãå©çšããŠäººåã®ã¢ã¯ã¿ãŒã倧éã«é
眮ããã¬ãã«ãçšæããNaniteãèšå®ãããã®ãšãããŠããªããã®ã§ã©ãã ãæ°å€ã«å·®ãåºãã調æ»ããŸããã ããããã®ã²ãŒã äžã§ãstat unitããè¡ããŸãã ïŒä»åã®èšäºã§ã¯PCGã«é¢ããŠã®èª¬æã¯å²æããããŸããïŒ Naniteãæå¹ã«ããŠããªãå Žå Naniteãæå¹ã«ããŠããå Žå Drawsã®æ°å€ãåçã«æžå°ããïŒ 18143 â 559 ïŒãFrameã«ãããæéã16ms ã»ã©ççž®ã§ããŠããŸãã ä»åã¯ããã©ã«ãã§çšæãããŠãã人åã®ã¡ãã·ã¥ã«å¯ŸãNaniteã®èšå®ãè¡ããŸãããã ZBrush ãªã©ã§äœæããè€éã§ããªãŽã³æ°ã®å€ããªããžã§ã¯ããªã©ã«å¯ŸããŠNaniteã®èšå®ãè¡ãããšã§ãåçã«æç»é床ãåäžã§ããŸãã ãããã« ä»åã¯ãUE5ãå©çšããŠãããã¡ã€ãªã³ã°ã®æ¹æ³ã® GPU éšåã«é¢ããŠã ããã«ãã㯠ã«ãªã£ãŠããç®æãæ¢ãã察çããæ¹æ³ãªã©ããŸãšããŸããã ä»åã¯æ€èšŒçšã«äœæãããããžã§ã¯ãã ã£ããããåçŽæå¿«ã«åé¡ã®çºèŠãšè§£æ±ºãã§ããŸãããã å®éã®ãããžã§ã¯ãã§ã¯ãããè€éã«åå ãå
¥ãçµãã§ããããšãæ³åã§ããŸãã å®è·µãç©ã¿ãªããããããã¡ã€ãªã³ã°ã«ã€ããŠãã£ãšè©³ãããªã£ãŠããããã§ãã æ¬ãããžã§ã¯ãã§ã¯ããŸã CPUåŽã« ããã«ãã㯠ãããFrameã®æ°å€ã140msãšãéåžžã«é
ããªã£ãŠããã®ã§ã 次ã®èšäºã§ã¯CPUã«é¢ãããããã¡ã€ã«ã³ã°æ¹æ³ãã玹ä»ããŠãããŸãã çŸåšISID㯠web3é åã®ã°ã«ãŒã暪æçµç¹ ãç«ã¡äžããWeb3ããã³ ã¡ã¿ããŒã¹ é åã®R&Dãè¡ã£ãŠãããŸãïŒã«ããŽãªãŒã3DCGãã®èšäºã¯ ãã¡ã ïŒã ããæ¬é åã«ãèå³ã®ããæ¹ããäžç·ã«ãã£ã¬ã³ãžããŠããããæ¹ã¯ããã²ãæ°è»œã«ãé£çµ¡ãã ããïŒ ç§ãã¡ãšåãããŒã ã§åããŠããã仲éããæ¯éãåŸ
ã¡ããŠãããŸãïŒ ISIDæ¡çšããŒãžïŒWeb3/ã¡ã¿ããŒã¹/AIïŒ å·çïŒ @okazaki.wataru ãã¬ãã¥ãŒïŒ @kano.nanami ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®å¹³å²¡ã§ãã ç§ã¯ç€Ÿå
ã® SOC ãµãŒãã¹ã®ç ç©¶éçºã¡ã³ããŒãšããŠãAzureã® Microsoft Defender for Cloudåšãã®èª¿æ»ãå°éã«è¡ã£ãŠããŸãã æè¿ã¯ãäž»ã«æšå¥šäºé
ã®çºåºæ¡ä»¶ãã»ãã¥ãªãã£ã¢ã©ãŒãã®èª¿æ»ããããã顧客éçºç°å¢ã®ã»ãã¥ãªãã£ç£èŠãªã©ãè¡ãããã®ä»çµã¿ãäœã£ãŠããŸãã SOC掻åãéããŠãæ¯éèªè
ã®çããã«è©ŠããŠããã ããããšæã£ãæ
å ±ãããã®ããã¯ããã°ã§ç޹ä»ããããšæããŸããã©ãããããããé¡ãããŸãã ããŠãä»åã¯ã Azure Lighthouseãå©çšããŠä» ãµãã¹ã¯ãªãã·ã§ã³ ã®ã»ãã¥ãªãã£æ
å ±ãéçŽããæ¹æ³ ã玹ä»ããŸãã ããããã©ããªã·ãã¥ãšãŒã·ã§ã³ã§ãã®èšå®ã圹ã«ç«ã€ã®ãïŒ AzureããŒã¿ã«äžã§ã¯ã Microsoft Defender for Cloudçã®ãµãŒãã¹ãéããŠãèªåã® ãµãã¹ã¯ãªãã·ã§ã³ å
ã®ã»ãã¥ãªãã£æ
å ±ãèŠãããšãåºæ¥ãŸãã 䜿çšããŠãã ãµãã¹ã¯ãªãã·ã§ã³ ãäžã€ã ããªããã»ãã¥ãªãã£æ
å ±ã®ç®¡çã¯ããã»ã©é£ãããªããããããŸããã ãããã倧ããªäŒæ¥ã«ãªããšç€Ÿå
ã§æ²¢å±±ã® ãµãã¹ã¯ãªãã·ã§ã³ ãç«ãŠãŠããããéšçœ²ãæ¡ä»¶åäœã§ç®¡çããŠããããšãå€ãã®ã§ã¯ãªãã§ããããããã®ãããªç¶æ³ã§ããã°ãäžã€ã® ãµãã¹ã¯ãªãã·ã§ã³ ã§ãä»ã® ãµãã¹ã¯ãªãã·ã§ã³ ããç°ãªãããã³ãéã®ãªãœãŒã¹ã®ã»ãã¥ãªãã£æ
å ±ãéçŽããŠãç£èŠããããšãåºæ¥ãããšãŠã楜ã§ãããã ããã§äœ¿ã£ãŠããã ãããã®ã Azure Lighthouse ã§ãã Azure lighthouseãšã¯ã»ã»ã»Azure Lighthouseã¯ãè€æ°ã®Azure ADããã³ãã®ç®¡çãäžãæã®ããã³ãã§è¡ããããã«ãããã®ã§ããããã«ãããAzureãæãåºããŠããéšçœ²ããåéšçœ²ãæ¡ä»¶åäœã§å©çšããããã³ããå¹ççã«æ§ç¯ããã³æäŸããäºãã§ããããã«ãªããŸãããŸããAzure Lighthouseèªäœã®å©çšæéã¯ããããŸããã Azure Lighthouse ãšã¯ https://learn.microsoft.com/ja-jp/azure/lighthouse/overview ããã§ã¯ãæ©éèšå®ããŠã¿ãŸãã ä»åã¯å§ä»»å
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã«å¯ŸããŠãå§ä»»å
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®ã»ãã¥ãªãã£æ
å ±ãéçŽã§ããããã«ããŸãã 1. Azure Lighthouseã®ãããã€ã宿œããŸã (1) Azure Lighthouseã®ãããã€ã¯ããŒã¿ã«ããã¯ã§ããªã(â» 2023/6/1çŸåš)ããã Github ã®ARMãã³ãã¬ãŒãã䜿çšããŸãããã³ãã¬ãŒãã¯ãªã³ã¯ããéžæããŸãã https://github.com/Azure/Azure-Lighthouse-samples/ (2) README.mdå
ã®"Deploy to Azure buttons"ãããäžèšç»åã®ãã³ãã¬ãŒããéžæããŸãã Name : Azure Lighthouse - Subscription Deployment Description : onboard a subscription 2. Azureã®ã«ã¹ã¿ã ãããã€ç»é¢ã«é·ç§»åŸãå¿
é é
ç®ãåããŸã  Â ãµãã¹ã¯ãªãã·ã§ã³ : å§ä»»å
ã® ãµãã¹ã¯ãªãã·ã§ã³ ãªãŒãžã§ã³ ïŒãããã€å Žæ Msp Offer Name : å§ä»»ã®åç§° Msp Offer Description : å§ä»»ã®èª¬æ Managed By Tenant ID : å§ä»»å
ã®ããã³ãID Authorizations : å§ä»»å
容ã json 圢åŒã§èšè¿° [ { "principalId": "<ãŠãŒã¶ãŒçã®ãªããžã§ã¯ã ID>", "principalIdDisplayName": "<ä»»æã®åå>", "roleDefinitionId": "<å§ä»»ããçµã¿èŸŒã¿ããŒã« ID>" } ] å§ä»»å
ã®ããã³ãIDã¯ãAzure Acrive DirectoryïŒæŠèŠããåç
§ããŸãã principalIdïŒã°ã«ãŒããŸãã¯ãŠãŒã¶ãŒã®ãªããžã§ã¯ãIDïŒã¯ãAzure Active Directory ïŒã°ã«ãŒãïŒãŠãŒã¶ãŒïŒããåç
§ããŸãã roleDefinitionIdïŒå§ä»»ããçµã¿èŸŒã¿ããŒã«IDïŒã¯ãäžèšããã¥ã¡ã³ãããå¿
èŠãªæš©éãéžæããŸãã Azure çµã¿èŸŒã¿ããŒã«ïŒ https://learn.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles 3.å¿
é é
ç®ã®å
¥åå®äºåŸãâ確èªãšäœæâãã¿ã³ãæŒäžããããã€ãå®äºããŸã 4.å§ä»»å
ã®ããã³ãã§ãããŒã¿ã«ã®èšå®ã«é·ç§»ããŸã ããŒã¿ã«ã®èšå®ç»é¢ã¯å³äžã®æ¯è»ãã¿ã³ãæŒäžããŸã 5.æ¢å®ã® ãµãã¹ã¯ãªãã·ã§ã³ ãã£ã«ã¿ãŒã®ãã«ããŠã³ãâãã¹ãŠã® ãã£ã¬ã¯ã ãªâããã³âãã¹ãŠã® ãµãã¹ã¯ãªãã·ã§ã³ âã«èšå®ããŸã èšå®ã¯ä»¥äžã§ãã éçŽå
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã§ Microsoft Defender for Cloudç»é¢ãèŠãŠã¿ãŸãããã éçŽå
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®æšå¥šæ
å ±ãã»ãã¥ãªãã£èŠåãåæ ãããŠããŸãã ãµãã¹ã¯ãªãã·ã§ã³ ãè¡ãæ¥ããªããŠããäžã€ã® ãµãã¹ã¯ãªãã·ã§ã³ ã§ã»ãã¥ãªãã£æ
å ±ãèŠãããããã«ãªãã管çããããããªããŸããã ïŒæšå¥šäºé
ç»é¢ïŒ ïŒã»ãã¥ãªãã£èŠåç»é¢ïŒ çµããã« ä»å玹ä»ããAzure Lighthouseãå©çšããããšã§ãäžã€ã® ãµãã¹ã¯ãªãã·ã§ã³ ã«è€æ°ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®æ
å ±ãéçŽããããšãã§ããŸãã è€æ°ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®ç®¡çãããŠããæ¹ã¯æ¯éå©çšããŠã¿ãŠãã ããã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ã»ãã¥ãªãã£ãšã³ãžã㢠å·çïŒ @hiraoka.eri ãã¬ãã¥ãŒïŒ @fukutake.hiroaki ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®å¹³å²¡ã§ãã ç§ã¯ç€Ÿå
ã® SOC ãµãŒãã¹ã®ç ç©¶éçºã¡ã³ããŒãšããŠãAzureã® Microsoft Defender for Cloudåšãã®èª¿æ»ãå°éã«è¡ã£ãŠããŸãã æè¿ã¯ãäž»ã«æšå¥šäºé
ã®çºåºæ¡ä»¶ãã»ãã¥ãªãã£ã¢ã©ãŒãã®èª¿æ»ããããã顧客éçºç°å¢ã®ã»ãã¥ãªãã£ç£èŠãªã©ãè¡ãããã®ä»çµã¿ãäœã£ãŠããŸãã SOC掻åãéããŠãæ¯éèªè
ã®çããã«è©ŠããŠããã ããããšæã£ãæ
å ±ãããã®ããã¯ããã°ã§ç޹ä»ããããšæããŸããã©ãããããããé¡ãããŸãã ããŠãä»åã¯ã Azure Lighthouseãå©çšããŠä» ãµãã¹ã¯ãªãã·ã§ã³ ã®ã»ãã¥ãªãã£æ
å ±ãéçŽããæ¹æ³ ã玹ä»ããŸãã ããããã©ããªã·ãã¥ãšãŒã·ã§ã³ã§ãã®èšå®ã圹ã«ç«ã€ã®ãïŒ AzureããŒã¿ã«äžã§ã¯ã Microsoft Defender for Cloudçã®ãµãŒãã¹ãéããŠãèªåã® ãµãã¹ã¯ãªãã·ã§ã³ å
ã®ã»ãã¥ãªãã£æ
å ±ãèŠãããšãåºæ¥ãŸãã 䜿çšããŠãã ãµãã¹ã¯ãªãã·ã§ã³ ãäžã€ã ããªããã»ãã¥ãªãã£æ
å ±ã®ç®¡çã¯ããã»ã©é£ãããªããããããŸããã ãããã倧ããªäŒæ¥ã«ãªããšç€Ÿå
ã§æ²¢å±±ã® ãµãã¹ã¯ãªãã·ã§ã³ ãç«ãŠãŠããããéšçœ²ãæ¡ä»¶åäœã§ç®¡çããŠããããšãå€ãã®ã§ã¯ãªãã§ããããããã®ãããªç¶æ³ã§ããã°ãäžã€ã® ãµãã¹ã¯ãªãã·ã§ã³ ã§ãä»ã® ãµãã¹ã¯ãªãã·ã§ã³ ããç°ãªãããã³ãéã®ãªãœãŒã¹ã®ã»ãã¥ãªãã£æ
å ±ãéçŽããŠãç£èŠããããšãåºæ¥ãããšãŠã楜ã§ãããã ããã§äœ¿ã£ãŠããã ãããã®ã Azure Lighthouse ã§ãã Azure lighthouseãšã¯ã»ã»ã»Azure Lighthouseã¯ãè€æ°ã®Azure ADããã³ãã®ç®¡çãäžãæã®ããã³ãã§è¡ããããã«ãããã®ã§ããããã«ãããAzureãæãåºããŠããéšçœ²ããåéšçœ²ãæ¡ä»¶åäœã§å©çšããããã³ããå¹ççã«æ§ç¯ããã³æäŸããäºãã§ããããã«ãªããŸãããŸããAzure Lighthouseèªäœã®å©çšæéã¯ããããŸããã Azure Lighthouse ãšã¯ https://learn.microsoft.com/ja-jp/azure/lighthouse/overview ããã§ã¯ãæ©éèšå®ããŠã¿ãŸãã ä»åã¯å§ä»»å
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã«å¯ŸããŠãå§ä»»å
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®ã»ãã¥ãªãã£æ
å ±ãéçŽã§ããããã«ããŸãã 1. Azure Lighthouseã®ãããã€ã宿œããŸã (1) Azure Lighthouseã®ãããã€ã¯ããŒã¿ã«ããã¯ã§ããªã(â» 2023/6/1çŸåš)ããã Github ã®ARMãã³ãã¬ãŒãã䜿çšããŸãããã³ãã¬ãŒãã¯ãªã³ã¯ããéžæããŸãã https://github.com/Azure/Azure-Lighthouse-samples/ (2) README.mdå
ã®"Deploy to Azure buttons"ãããäžèšç»åã®ãã³ãã¬ãŒããéžæããŸãã Name : Azure Lighthouse - Subscription Deployment Description : onboard a subscription 2. Azureã®ã«ã¹ã¿ã ãããã€ç»é¢ã«é·ç§»åŸãå¿
é é
ç®ãåããŸã  Â ãµãã¹ã¯ãªãã·ã§ã³ : å§ä»»å
ã® ãµãã¹ã¯ãªãã·ã§ã³ ãªãŒãžã§ã³ ïŒãããã€å Žæ Msp Offer Name : å§ä»»ã®åç§° Msp Offer Description : å§ä»»ã®èª¬æ Managed By Tenant ID : å§ä»»å
ã®ããã³ãID Authorizations : å§ä»»å
容ã json 圢åŒã§èšè¿° [ { "principalId": "<ãŠãŒã¶ãŒçã®ãªããžã§ã¯ã ID>", "principalIdDisplayName": "<ä»»æã®åå>", "roleDefinitionId": "<å§ä»»ããçµã¿èŸŒã¿ããŒã« ID>" } ] å§ä»»å
ã®ããã³ãIDã¯ãAzure Acrive DirectoryïŒæŠèŠããåç
§ããŸãã principalIdïŒã°ã«ãŒããŸãã¯ãŠãŒã¶ãŒã®ãªããžã§ã¯ãIDïŒã¯ãAzure Active Directory ïŒã°ã«ãŒãïŒãŠãŒã¶ãŒïŒããåç
§ããŸãã roleDefinitionIdïŒå§ä»»ããçµã¿èŸŒã¿ããŒã«IDïŒã¯ãäžèšããã¥ã¡ã³ãããå¿
èŠãªæš©éãéžæããŸãã Azure çµã¿èŸŒã¿ããŒã«ïŒ https://learn.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles 3.å¿
é é
ç®ã®å
¥åå®äºåŸãâ確èªãšäœæâãã¿ã³ãæŒäžããããã€ãå®äºããŸã 4.å§ä»»å
ã®ããã³ãã§ãããŒã¿ã«ã®èšå®ã«é·ç§»ããŸã ããŒã¿ã«ã®èšå®ç»é¢ã¯å³äžã®æ¯è»ãã¿ã³ãæŒäžããŸã 5.æ¢å®ã® ãµãã¹ã¯ãªãã·ã§ã³ ãã£ã«ã¿ãŒã®ãã«ããŠã³ãâãã¹ãŠã® ãã£ã¬ã¯ã ãªâããã³âãã¹ãŠã® ãµãã¹ã¯ãªãã·ã§ã³ âã«èšå®ããŸã èšå®ã¯ä»¥äžã§ãã éçŽå
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã§ Microsoft Defender for Cloudç»é¢ãèŠãŠã¿ãŸãããã éçŽå
ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®æšå¥šæ
å ±ãã»ãã¥ãªãã£èŠåãåæ ãããŠããŸãã ãµãã¹ã¯ãªãã·ã§ã³ ãè¡ãæ¥ããªããŠããäžã€ã® ãµãã¹ã¯ãªãã·ã§ã³ ã§ã»ãã¥ãªãã£æ
å ±ãèŠãããããã«ãªãã管çããããããªããŸããã ïŒæšå¥šäºé
ç»é¢ïŒ ïŒã»ãã¥ãªãã£èŠåç»é¢ïŒ çµããã« ä»å玹ä»ããAzure Lighthouseãå©çšããããšã§ãäžã€ã® ãµãã¹ã¯ãªãã·ã§ã³ ã«è€æ°ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®æ
å ±ãéçŽããããšãã§ããŸãã è€æ°ã® ãµãã¹ã¯ãªãã·ã§ã³ ã®ç®¡çãããŠããæ¹ã¯æ¯éå©çšããŠã¿ãŠãã ããã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ã»ãã¥ãªãã£ãšã³ãžã㢠å·çïŒ @hiraoka.eri ãã¬ãã¥ãŒïŒ @fukutake.hiroaki ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ããã« ããã«ã¡ã¯ãX ã€ãããŒã·ã§ã³ æ¬éšã®è€å·ã§ãã ç§ã¯ãaiuolaïŒã¢ã€ãŠã©ãŒã©ïŒããšãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ãã©ãããã©ãŒã ã®éçºã«ãããŠããããã¯ããããŒãžã£ãŒãããŠããŸãããŸãã«ã¢ãŒããã¯ãã ããããã ãŒãªã©å¥ã®åžœåã被ã£ãŠ éçºããã»ã¹ ã«åå ããŠããŸãã ä»åã®èšäºã§ã¯ãaiuolaãæ¡çšããŠãã ã¢ãžã£ã€ã« éçºããã»ã¹ ã«ã€ããŠç§ãã¡ã®çŸåšã®çå°ç¹ãã¹ããªã³ãã€ãã³ããäžå¿ã«ç޹ä»ããŸãã ã¡ãªã¿ã«aiuolaãšã¯ã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã§ã客æ§ã«æåãããšãããã£ãããã¬ãŒãºã§ç«ã¡äžããéçºãããžã§ã¯ãã§ãããšã³ãã©ç³»ã¢ããªã£ãŠãªããããããããçµå±å€§ããããšãªãã§ãããšããçåŸ100%ã®çæ§ããå®å¿ãã ããã ç§ãã¡ã®æ³ããäœçŸãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã¯ãCi*XïŒãµã€ã¯ãã¹ïŒããšãããã©ã³ãã§ãªãªãŒã¹ããŠãããŸãã ãå©çšäžã®ã客æ§ããã¯ãããã¥ã¢ã«ãåç
§ããã«äœ¿ããæ¥åã¢ããªã£ãŠåããŠïŒãã çµç éšéã«é
å±ä»¥æ¥æã倧ããªæåäœéšã§ãïŒããšè©å€ã§ãã äŒèšãããã¯ãã®æ€èšããããŠããæ¹ã¯ãã²ãã¡ããã芧ãã ããã ã°ã«ãŒãçµå¶ç®¡çãœãªã¥ãŒã·ã§ã³ããµã€ã¯ãã¹ã·ãªãŒãº aiuolaã®åãçµã¿ aiuola ãšã¯ aiuolaã¯åœç€Ÿã® ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã®å
±éãã©ãããã©ãŒã ã§ãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã§æ±ããããèªèšŒã»èªå¯ãUIã©ã€ãã©ãªãæäŸããŠããŸãã 2023幎çŸåšãaiuolaãæŽ»çšããããã€ãã®ãããã¯ã矀ããªãªãŒã¹ãã奜è©ãããã ããŠãããŸãã äœå¶ aiuolaã®éçºäœå¶ã¯åæããã®å€é·ãçµãŠã以äžã®ãããªäœå¶ãšãªã£ãŠããŸãã æ¬ããŒã ã§ã¯ãµãŒãã¹éçšã®ããã·ã§ã³ãæã£ãŠããªãããã€ã³ãã©ããŒã ã¯æããŠããŸããã ïŒåãããã¯ãåŽã«ã€ã³ãã©ããŒã ãããŠãæã
ãšååããŠã客æ§ã®ãµã¯ã»ã¹ãæ¯ããŠããŸãïŒ åæã®é ã¯ããã³ããšã³ãžãã¢4åãå°ä»»ãã¶ã€ããŒã1åãšããäœå¶ã§ãããããã¶ã€ã³ã·ã¹ãã ãåºãŸã£ãŠããã¯æŠãäžèšã®äœå¶ã§æŽ»åããŠããŸãã åœããŒã ã®ããã¯ãšã³ããšã³ãžãã¢ã¯åäžã® ãŠãŒã¹ã±ãŒã¹ ïŒæ©èœïŒã®éçºãæ
åœããæ©èœåäœã®ããã³ãå®è£
ãè¡ããŸãã äžæ¹ã§ããã³ããšã³ãžãã¢ã¯UI ã³ã³ããŒãã³ã ã®éçºãããã³ããšã³ãå®è£
æéã«ãã©ãŒã«ã¹ãåœãŠãп޻åããŠããŸãã ã¹ããªã³ãã€ãã³ã aiuolaã®éçºã¯2é±éã®ã¹ããªã³ãã§å®æœããŠããŸãã ã¹ããªã³ãæéã®éããæ¹ãã¹ããªã³ãã€ãã³ããäžå¿ã«å³ã«ããŠã¿ãŸããã ã芧ããã ããšãåããããšæããŸãããããããªãŒãœããã¯ã¹ãª ã¹ã¯ã©ã éçºããã»ã¹ ãæ¡çšããŠããŸãã ãªãã2020幎以éãaiuolaã®éçºã¯ãªã¢ãŒãã¹ã¿ã€ã«ã§ã®éçºãšãªã£ãŠããŸãã ã¹ããªã³ãã€ãã³ããå«ããŠããã¹ãŠã®æŽ»åããªã¢ãŒãç°å¢ã§å®æœããŠããŸãã飲ã¿äŒä»¥å€ã¯ãïŒðã ãã€ãªãŒããŒãã£ã³ã° äž»ã«åæ¥ã¿ã¹ã¯ã§ã®èª²é¡ãšãã®æ¥ã®æŽ»åäºå®ãå
±æããŸãããslackã§ç°¡åãªã¯ãŒã¯ã¬ããŒããæçš¿ããã«ãŒã«ã«ããŠããã®ã§ãå°ãããšãžã®å¯Ÿå¿ãã¬ãã¥ãŒæ
åœè
ãžã® ã¢ãµã€ ã³ãQAã¡ã³ããŒãžã®ãã¹ãäŸé Œãªã©ãç®çã«ãªããŸãã 倧äœã15åã20åãããã®æéã§ãã®åã®éããæ¯æ¥å®æœããŠããŸãã ã¹ããªã³ããã©ã³ãã³ã° ã¹ããªã³ãã§å®æœããã¿ã¹ã¯ã ããã¯ãã° ããæ±ºå®ããŸãã ã¹ããªã³ãããŒã ã¯QAããŒã ãå«ããŠ4ã€ã®ãµãããŒã ãååšããã®ã§ã3段éã®ã¹ããªã³ããã©ã³ãã³ã°ã¹ããŒãžãèšããŠããŸãã ãã¬ã¹ããªã³ããã©ã³ãã³ã° åãµãããŒã ã«ãŠæ¬¡ã¹ããªã³ãã¿ã¹ã¯ã®éžå®ãšããŒã«ãŒ ãµããªãŒããŒã«ããã¹ããªã³ããã©ã³ãã³ã° ãµãããŒã éã®äœæ¥ããåãã å
šå¡ã§ã®ã¹ããªã³ããã©ã³ãã³ã° ã¹ããªã³ãã¿ã¹ã¯ã®å
±æ åŸæ¥ã¯3ã ãã§ãã¹ãŠã宿œããŠããã®ã§ãããããŒã äœå¶ã倧ãããªãã«ã€ããå
šå¡ãææããŠããŸãæéãå¢ããŠããŸããŸããã 貎éãªãšã³ãžãã¢ãªã³ã°æéãååã«ç¢ºä¿ããããšãç®çã«3段éã®ãã§ãŒãºãèšããããšã«ããŸããã ãããã¯ããªãŒããŒäŒ ãããã¯ããã¡ããªãŒã§ç޹ä»ããéããaiuolaãæŽ»çšãããããã¯ãã¯è€æ°ãããŸãã åãããã¯ããæ¥ã
éçºãé²ããŠããŸãããããã¯ãéã§æåŸ
ããèŠæã察å¿ã¹ã±ãžã¥ãŒã«ã®ããåããã¯éèŠã§ãã ãããã¯ããªãŒããŒäŒã§ã¯ãã®ãããªãããã¯ãããŸããã£ã調æŽãè¡ããŸãã ãªãªãŒã¹å
容çºè¡šäŒ ãªãªãŒã¹å
容çºè¡šäŒã§ã¯ã¹ããªã³ãã«ãããŠãªãªãŒã¹ã§ããæ©èœãããŒã å
ã§å
±æãã玹ä»ããå瞟ãç§°ããäŒãšãªããŸãã ç§ãã¡ã®éçºå¯Ÿè±¡ã¯ ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã®ãããåäžã®æ©èœãæãããã£ãŒãã£ãŒã¯æ¯èŒçå€§èŠæš¡ã«ãªããŸãããã®ããã¹ããªã³ãã®äžã§1ã€ã®æ©èœãå®å
šã«äœãäžããããšãã§ããŸããã ãªãªãŒã¹å
容çºè¡šäŒã§ã¯ãã®ãªãªãŒã¹ã«å«ããããšãã§ããæ©èœã察象ãšããŸãã ãã以å€ã«ãQAããŒã ããå質ã®åãçµã¿ã«é¢ããçºè¡šãå«ãŸããããšããããŸãã ã¹ããªã³ããªãªãŒã¹ ã¹ããªã³ããªãªãŒã¹ã¯ããŒãã£ã³ã°ã§ã¯ãªããåã¹ããªã³ãã®ææããªãªãŒã¹ããã¿ã¹ã¯ãšãªããŸãã aiuolaãšããŠã®ãªãªãŒã¹ã¯ã¹ããªã³ãã®ææç©ãåãããã¯ãããŒã ã«æäŸããäœæ¥ã§ãã ãããã¯ããã¡ããªãŒã®åžå Žæå
¥ãµã€ã¯ã«ã¯aioulaãå«ããŠãã¹ãŠ6ã¶æåäœãšãªããŸãããã®ãããã¹ããªã³ããªãªãŒã¹ã¯éçºããŒã¿çãšããŠãããã¯ãããŒã ã«ææç©ãæäŸããããšãæããŸãã ã¬ããã¹ãã¯ãã£ã ã¬ããã¹ãã¯ãã£ãã¯ãã®åã®éããã¹ããªã³ãã®æåŸã«è¡ãæ¯ãè¿ãäŒã§ãã éçºã®æ¹åã«åœ¹ç«ã€ã¢ ã€ã㢠ã課é¡ãè°è«ããã¹ããªã³ãã®äžã§ææŠãã¹ãããšãè°è«ããŸãã åŸæ¥ã¯ãªãã©ã€ã³ã§å®æœããŠããŸãããããªã³ã©ã€ã³äž»äœã® éçºããã»ã¹ ã«å€ãã£ãŠããã¯MiroãæŽ»çšããŠãããŸãã çµããã« ä»åã®èšäºã§ã¯ç§ãã¡ãéçºããŠãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ãã©ãããã©ãŒã ãaiuolaãã® éçºããã»ã¹ ã«ã€ããŠéåžžã«ç°¡åã§ãããã®äžç«¯ãã玹ä»ããŸããã ãããã¯ããã¡ããªãŒã«ãŠç޹ä»ããaiuolaãã©ãããã©ãŒã ãæŽ»çšããåãããã¯ããç©æ¥µçãªæ©èœåŒ·åãè¡ã£ãŠããŸãã ããããã®ãããã¯ãã¯ããã§ç޹ä»ããããã»ã¹ãã³ããŒããŠé©çšããŠããããã§ã¯ãªãããããã¯ãç¹æ§ãããŒã äœå¶ã«å¿ããéçºã¹ã¿ã€ã«ãæ¡çšããç¬èªã«çºå±ãéããŠããŸãããã¡ããç§ãã¡aiuolaããŒã ãçŸç¶ã«æºè¶³ããŠããããã§ã¯ãªãããã广çãªåãçµã¿ã«ãã£ã¬ã³ãžããŠããŸãã ãããã®ãããã¯ãã§ããå
±ã«æ°ããªãã£ã¬ã³ãžã«æãã§ããã仲éãæ¢ããŠããŸãã®ã§ããèå³ãæã£ãŠããã ããæ¹ã¯æ¯éãšãæ¡çšããŒãžãã芧ãã ããã ãŸããæ¬ããŒã ã®éçºã¡ã³ããŒãã¢ããªã±ãŒã·ã§ã³ ã¢ãŒããã¯ã㣠ãããŒããšããŠTech Playã«ç»å£ããŸãã ãã¡ããæ¯éãåå ããã ãããšå¹žãã§ãã Tech Play URL ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ãããã¯ããã©ãããã©ãŒã éçºãšã³ãžãã¢/æ°èŠãããã¯ãéçºãšã³ãžã㢠次äžä»£äŒèšãããã¯ãéçºITã¢ãŒããã¯ãïŒCi*Xã·ãªãŒãºïŒ 次äžä»£äŒèšãããã¯ãDevOpsãšã³ãžãã¢ïŒCi*Xã·ãªãŒãºïŒ å·çïŒ @fujikawa.kenji ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
ã¯ããã« ããã«ã¡ã¯ãX ã€ãããŒã·ã§ã³ æ¬éšã®è€å·ã§ãã ç§ã¯ãaiuolaïŒã¢ã€ãŠã©ãŒã©ïŒããšãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ãã©ãããã©ãŒã ã®éçºã«ãããŠããããã¯ããããŒãžã£ãŒãããŠããŸãããŸãã«ã¢ãŒããã¯ãã ããããã ãŒãªã©å¥ã®åžœåã被ã£ãŠ éçºããã»ã¹ ã«åå ããŠããŸãã ä»åã®èšäºã§ã¯ãaiuolaãæ¡çšããŠãã ã¢ãžã£ã€ã« éçºããã»ã¹ ã«ã€ããŠç§ãã¡ã®çŸåšã®çå°ç¹ãã¹ããªã³ãã€ãã³ããäžå¿ã«ç޹ä»ããŸãã ã¡ãªã¿ã«aiuolaãšã¯ã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã§ã客æ§ã«æåãããšãããã£ãããã¬ãŒãºã§ç«ã¡äžããéçºãããžã§ã¯ãã§ãããšã³ãã©ç³»ã¢ããªã£ãŠãªããããããããçµå±å€§ããããšãªãã§ãããšããçåŸ100%ã®çæ§ããå®å¿ãã ããã ç§ãã¡ã®æ³ããäœçŸãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã¯ãCi*XïŒãµã€ã¯ãã¹ïŒããšãããã©ã³ãã§ãªãªãŒã¹ããŠãããŸãã ãå©çšäžã®ã客æ§ããã¯ãããã¥ã¢ã«ãåç
§ããã«äœ¿ããæ¥åã¢ããªã£ãŠåããŠïŒãã çµç éšéã«é
å±ä»¥æ¥æã倧ããªæåäœéšã§ãïŒããšè©å€ã§ãã äŒèšãããã¯ãã®æ€èšããããŠããæ¹ã¯ãã²ãã¡ããã芧ãã ããã ã°ã«ãŒãçµå¶ç®¡çãœãªã¥ãŒã·ã§ã³ããµã€ã¯ãã¹ã·ãªãŒãº aiuolaã®åãçµã¿ aiuola ãšã¯ aiuolaã¯åœç€Ÿã® ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã®å
±éãã©ãããã©ãŒã ã§ãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã§æ±ããããèªèšŒã»èªå¯ãUIã©ã€ãã©ãªãæäŸããŠããŸãã 2023幎çŸåšãaiuolaãæŽ»çšããããã€ãã®ãããã¯ã矀ããªãªãŒã¹ãã奜è©ãããã ããŠãããŸãã äœå¶ aiuolaã®éçºäœå¶ã¯åæããã®å€é·ãçµãŠã以äžã®ãããªäœå¶ãšãªã£ãŠããŸãã æ¬ããŒã ã§ã¯ãµãŒãã¹éçšã®ããã·ã§ã³ãæã£ãŠããªãããã€ã³ãã©ããŒã ã¯æããŠããŸããã ïŒåãããã¯ãåŽã«ã€ã³ãã©ããŒã ãããŠãæã
ãšååããŠã客æ§ã®ãµã¯ã»ã¹ãæ¯ããŠããŸãïŒ åæã®é ã¯ããã³ããšã³ãžãã¢4åãå°ä»»ãã¶ã€ããŒã1åãšããäœå¶ã§ãããããã¶ã€ã³ã·ã¹ãã ãåºãŸã£ãŠããã¯æŠãäžèšã®äœå¶ã§æŽ»åããŠããŸãã åœããŒã ã®ããã¯ãšã³ããšã³ãžãã¢ã¯åäžã® ãŠãŒã¹ã±ãŒã¹ ïŒæ©èœïŒã®éçºãæ
åœããæ©èœåäœã®ããã³ãå®è£
ãè¡ããŸãã äžæ¹ã§ããã³ããšã³ãžãã¢ã¯UI ã³ã³ããŒãã³ã ã®éçºãããã³ããšã³ãå®è£
æéã«ãã©ãŒã«ã¹ãåœãŠãп޻åããŠããŸãã ã¹ããªã³ãã€ãã³ã aiuolaã®éçºã¯2é±éã®ã¹ããªã³ãã§å®æœããŠããŸãã ã¹ããªã³ãæéã®éããæ¹ãã¹ããªã³ãã€ãã³ããäžå¿ã«å³ã«ããŠã¿ãŸããã ã芧ããã ããšãåããããšæããŸãããããããªãŒãœããã¯ã¹ãª ã¹ã¯ã©ã éçºããã»ã¹ ãæ¡çšããŠããŸãã ãªãã2020幎以éãaiuolaã®éçºã¯ãªã¢ãŒãã¹ã¿ã€ã«ã§ã®éçºãšãªã£ãŠããŸãã ã¹ããªã³ãã€ãã³ããå«ããŠããã¹ãŠã®æŽ»åããªã¢ãŒãç°å¢ã§å®æœããŠããŸãã飲ã¿äŒä»¥å€ã¯ãïŒðã ãã€ãªãŒããŒãã£ã³ã° äž»ã«åæ¥ã¿ã¹ã¯ã§ã®èª²é¡ãšãã®æ¥ã®æŽ»åäºå®ãå
±æããŸãããslackã§ç°¡åãªã¯ãŒã¯ã¬ããŒããæçš¿ããã«ãŒã«ã«ããŠããã®ã§ãå°ãããšãžã®å¯Ÿå¿ãã¬ãã¥ãŒæ
åœè
ãžã® ã¢ãµã€ ã³ãQAã¡ã³ããŒãžã®ãã¹ãäŸé Œãªã©ãç®çã«ãªããŸãã 倧äœã15åã20åãããã®æéã§ãã®åã®éããæ¯æ¥å®æœããŠããŸãã ã¹ããªã³ããã©ã³ãã³ã° ã¹ããªã³ãã§å®æœããã¿ã¹ã¯ã ããã¯ãã° ããæ±ºå®ããŸãã ã¹ããªã³ãããŒã ã¯QAããŒã ãå«ããŠ4ã€ã®ãµãããŒã ãååšããã®ã§ã3段éã®ã¹ããªã³ããã©ã³ãã³ã°ã¹ããŒãžãèšããŠããŸãã ãã¬ã¹ããªã³ããã©ã³ãã³ã° åãµãããŒã ã«ãŠæ¬¡ã¹ããªã³ãã¿ã¹ã¯ã®éžå®ãšããŒã«ãŒ ãµããªãŒããŒã«ããã¹ããªã³ããã©ã³ãã³ã° ãµãããŒã éã®äœæ¥ããåãã å
šå¡ã§ã®ã¹ããªã³ããã©ã³ãã³ã° ã¹ããªã³ãã¿ã¹ã¯ã®å
±æ åŸæ¥ã¯3ã ãã§ãã¹ãŠã宿œããŠããã®ã§ãããããŒã äœå¶ã倧ãããªãã«ã€ããå
šå¡ãææããŠããŸãæéãå¢ããŠããŸããŸããã 貎éãªãšã³ãžãã¢ãªã³ã°æéãååã«ç¢ºä¿ããããšãç®çã«3段éã®ãã§ãŒãºãèšããããšã«ããŸããã ãããã¯ããªãŒããŒäŒ ãããã¯ããã¡ããªãŒã§ç޹ä»ããéããaiuolaãæŽ»çšãããããã¯ãã¯è€æ°ãããŸãã åãããã¯ããæ¥ã
éçºãé²ããŠããŸãããããã¯ãéã§æåŸ
ããèŠæã察å¿ã¹ã±ãžã¥ãŒã«ã®ããåããã¯éèŠã§ãã ãããã¯ããªãŒããŒäŒã§ã¯ãã®ãããªãããã¯ãããŸããã£ã調æŽãè¡ããŸãã ãªãªãŒã¹å
容çºè¡šäŒ ãªãªãŒã¹å
容çºè¡šäŒã§ã¯ã¹ããªã³ãã«ãããŠãªãªãŒã¹ã§ããæ©èœãããŒã å
ã§å
±æãã玹ä»ããå瞟ãç§°ããäŒãšãªããŸãã ç§ãã¡ã®éçºå¯Ÿè±¡ã¯ ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ã®ãããåäžã®æ©èœãæãããã£ãŒãã£ãŒã¯æ¯èŒçå€§èŠæš¡ã«ãªããŸãããã®ããã¹ããªã³ãã®äžã§1ã€ã®æ©èœãå®å
šã«äœãäžããããšãã§ããŸããã ãªãªãŒã¹å
容çºè¡šäŒã§ã¯ãã®ãªãªãŒã¹ã«å«ããããšãã§ããæ©èœã察象ãšããŸãã ãã以å€ã«ãQAããŒã ããå質ã®åãçµã¿ã«é¢ããçºè¡šãå«ãŸããããšããããŸãã ã¹ããªã³ããªãªãŒã¹ ã¹ããªã³ããªãªãŒã¹ã¯ããŒãã£ã³ã°ã§ã¯ãªããåã¹ããªã³ãã®ææããªãªãŒã¹ããã¿ã¹ã¯ãšãªããŸãã aiuolaãšããŠã®ãªãªãŒã¹ã¯ã¹ããªã³ãã®ææç©ãåãããã¯ãããŒã ã«æäŸããäœæ¥ã§ãã ãããã¯ããã¡ããªãŒã®åžå Žæå
¥ãµã€ã¯ã«ã¯aioulaãå«ããŠãã¹ãŠ6ã¶æåäœãšãªããŸãããã®ãããã¹ããªã³ããªãªãŒã¹ã¯éçºããŒã¿çãšããŠãããã¯ãããŒã ã«ææç©ãæäŸããããšãæããŸãã ã¬ããã¹ãã¯ãã£ã ã¬ããã¹ãã¯ãã£ãã¯ãã®åã®éããã¹ããªã³ãã®æåŸã«è¡ãæ¯ãè¿ãäŒã§ãã éçºã®æ¹åã«åœ¹ç«ã€ã¢ ã€ã㢠ã課é¡ãè°è«ããã¹ããªã³ãã®äžã§ææŠãã¹ãããšãè°è«ããŸãã åŸæ¥ã¯ãªãã©ã€ã³ã§å®æœããŠããŸãããããªã³ã©ã€ã³äž»äœã® éçºããã»ã¹ ã«å€ãã£ãŠããã¯MiroãæŽ»çšããŠãããŸãã çµããã« ä»åã®èšäºã§ã¯ç§ãã¡ãéçºããŠãã ãšã³ã¿ãŒãã©ã€ãº ã¢ããªã±ãŒã·ã§ã³ãã©ãããã©ãŒã ãaiuolaãã® éçºããã»ã¹ ã«ã€ããŠéåžžã«ç°¡åã§ãããã®äžç«¯ãã玹ä»ããŸããã ãããã¯ããã¡ããªãŒã«ãŠç޹ä»ããaiuolaãã©ãããã©ãŒã ãæŽ»çšããåãããã¯ããç©æ¥µçãªæ©èœåŒ·åãè¡ã£ãŠããŸãã ããããã®ãããã¯ãã¯ããã§ç޹ä»ããããã»ã¹ãã³ããŒããŠé©çšããŠããããã§ã¯ãªãããããã¯ãç¹æ§ãããŒã äœå¶ã«å¿ããéçºã¹ã¿ã€ã«ãæ¡çšããç¬èªã«çºå±ãéããŠããŸãããã¡ããç§ãã¡aiuolaããŒã ãçŸç¶ã«æºè¶³ããŠããããã§ã¯ãªãããã广çãªåãçµã¿ã«ãã£ã¬ã³ãžããŠããŸãã ãããã®ãããã¯ãã§ããå
±ã«æ°ããªãã£ã¬ã³ãžã«æãã§ããã仲éãæ¢ããŠããŸãã®ã§ããèå³ãæã£ãŠããã ããæ¹ã¯æ¯éãšãæ¡çšããŒãžãã芧ãã ããã ãŸããæ¬ããŒã ã®éçºã¡ã³ããŒãã¢ããªã±ãŒã·ã§ã³ ã¢ãŒããã¯ã㣠ãããŒããšããŠTech Playã«ç»å£ããŸãã ãã¡ããæ¯éãåå ããã ãããšå¹žãã§ãã Tech Play URL ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ãããã¯ããã©ãããã©ãŒã éçºãšã³ãžãã¢/æ°èŠãããã¯ãéçºãšã³ãžã㢠次äžä»£äŒèšãããã¯ãéçºITã¢ãŒããã¯ãïŒCi*Xã·ãªãŒãºïŒ 次äžä»£äŒèšãããã¯ãDevOpsãšã³ãžãã¢ïŒCi*Xã·ãªãŒãºïŒ å·çïŒ @fujikawa.kenji ãã¬ãã¥ãŒïŒ @wakamoto.ryosuke ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®æŽç°ã§ãã æ¬èšäºã§ã¯Terraformã§ã³ãŒãã倿ŽããŠããªããªãœãŒã¹ã known after apply ãšãªã£ãŠããŸãå Žåã®åé¿çãã玹ä»ããŸãã åæ åé¡ãšãªãã³ãŒãã®äŸ åå åé¿ç ãããã« åè åæ ãã®èšäºã¯ä»¥äžã®Terraformã®ããŒãžã§ã³ãåæãšããŸãã æ°ããããŒãžã§ã³ã®Terraformã§ã¯æ¬èšäºãšç°ãªãæåãããå¯èœæ§ããããŸãã $ terraform version Terraform v1.5.3 on linux_amd64 + provider registry.terraform.io/hashicorp/aws v5.7.0 åé¡ãšãªãã³ãŒãã®äŸ 以äžã®Terraformã³ãŒããäŸã«èããŠã¿ãŸãããã resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project A" } } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ aws_s3_bucket.sample.arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } ãã®Terraformã³ãŒãã terraform apply ããŸãã $ terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (config refers to values not yet known) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + (known after apply), ] } } # aws_iam_policy.sample will be created + resource "aws_iam_policy" "sample" { + arn = (known after apply) + id = (known after apply) + name = "SampleBucketFullAccess" + name_prefix = (known after apply) + path = "/" + policy = (known after apply) + policy_id = (known after apply) + tags_all = (known after apply) } # aws_s3_bucket.sample will be created + resource "aws_s3_bucket" "sample" { + acceleration_status = (known after apply) + acl = (known after apply) + arn = (known after apply) + bucket = (known after apply) + bucket_domain_name = (known after apply) + bucket_prefix = "sample-" + bucket_regional_domain_name = (known after apply) + force_destroy = false + hosted_zone_id = (known after apply) + id = (known after apply) + object_lock_enabled = (known after apply) + policy = (known after apply) + region = (known after apply) + request_payer = (known after apply) + tags = { + "Project" = "My Project A" } + tags_all = { + "Project" = "My Project A" } + website_domain = (known after apply) + website_endpoint = (known after apply) } Plan: 2 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes aws_s3_bucket.sample: Creating... aws_s3_bucket.sample: Creation complete after 1s [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Creating... aws_iam_policy.sample: Creation complete after 1s [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Apply complete! Resources: 2 added, 0 changed, 0 destroyed. 次ã«S3 ãã±ãã aws_s3_bucket.sample ã® Project ã¿ã°ã®å€ã倿ŽããŸãã resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { - Project = "My Project A" + Project = "My Project B" } } 倿ŽåŸã®Terraformã³ãŒãã«å¯Ÿã㊠terraform plan ãå®è¡ããŸãã $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (depends on a resource or a module with changes pending) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + "arn:aws:s3:::sample-20230713121614963200000001", ] } } # aws_iam_policy.sample will be updated in-place ~ resource "aws_iam_policy" "sample" { id = "arn:aws:iam::************:policy/SampleBucketFullAccess" name = "SampleBucketFullAccess" ~ policy = jsonencode( { - Statement = [ - { - Action = "s3:*" - Effect = "Allow" - Resource = "arn:aws:s3:::sample-20230713121614963200000001" }, ] - Version = "2012-10-17" } ) -> (known after apply) tags = {} # (4 unchanged attributes hidden) } # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 2 to change, 0 to destroy. ãããšã倿Žããªãã¯ãã®IAM policy aws_iam_policy.sample ã® policy ã known after apply ãšãªã£ãŠããŸããŸããã åå ããã¯Data Sourceã®ä»æ§ã«ãããã®ã§ãã Data Resource Dependencies ã«ã¯ä»¥äžã®ããã«èšè¿°ãããŠããŸãã Data resources have the same dependency resolution behavior as defined for managed resources . Setting the depends_on meta-argument within data blocks defers reading of the data source until after all changes to the dependencies have been applied. In order to ensure that data sources are accessing the most up to date information possible in a wide variety of use cases, arguments directly referencing managed resources are treated the same as if the resource was listed in depends_on . èŠçŽãããšä»¥äžã®ãšããã§ãã Data Sourceã§ã¯ depends_on ã«èšèŒããããªãœãŒã¹ã®ãã¹ãŠã®å€æŽãé©çšããããŸã§èªã¿åãã¯å»¶æãããã Data Sourceã®åŒæ°ãä»ã®ãªãœãŒã¹ãçŽæ¥åç
§ããŠããå Žåãåç
§å
ã®ãªãœãŒã¹ãData Sourceã® depends_on ã«å«ãŸããŠããå Žåãšåãããã«æ±ãããã ã€ãŸã Data SourceãçŽæ¥åç
§ããŠãããªãœãŒã¹ã«å€æŽãããå Žåããããã®å€æŽãé©çšãããããšãData Sourceã®èªã¿åããåå®è¡ããã ãšããããšã§ãã æ¹ããŠå
ã»ã©ã®äŸãèããŠã¿ãŸããããTerraformã以äžã®ããã«å€æããŠããããšãããããŸãã aws_s3_bucket.sample ã®ã³ãŒãã®å€æŽãæ€åºãããã data.aws_iam_policy_document.sample 㯠aws_s3_bucket.sample ãçŽæ¥åç
§ããŠããããã depends_on ã« aws_s3_bucket.sample ãå«ãŸããŠããå Žåãšåãããã«æ±ãããã depends_on ã«å«ãŸãã aws_s3_bucket.sample ã®å€æŽãæ€åºãããããããã®å€æŽãé©çšãããããšã§ data.aws_iam_policy_document.sample ã®åèªã¿åããè¡ãå¿
èŠããããšå€æãããã 3ããã㊠aws_iam_policy.sample ã® policy ãæŽæ°ããããšå€æãããã åé¿ç Data Resource Dependencies ã«ã¯ä»¥äžã®ããã«èšè¿°ãããŠããŸãã This behavior can be avoided when desired by indirectly referencing the managed resource values through a local value , unless the data resource itself has custom conditions . ã©ããã Local Value ãéã«æãããšã§å
ã»ã©ã®äºè±¡ãåé¿ã§ããããã§ãã 詊ããŠã¿ãŸããããå
ã»ã©ã®Terraformã³ãŒãã以äžã®ããã«å€æŽããŸãã provider "aws" { region = "ap-northeast-1" } resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project B" } } locals { s3_bucket_arn = aws_s3_bucket.sample.arn } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ local.s3_bucket_arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } 倿ŽåŸã®Terraformã³ãŒãã«å¯Ÿã㊠terraform plan ãå®è¡ããŸãã $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 1 to change, 0 to destroy. S3 ãã±ãã aws_s3_bucket.sample 以å€ã®å€æŽã衚瀺ãããªãããšã確èªã§ããŸããã ãããã« æ¬èšäºã§ã¯Terraformã§ã³ãŒãã倿ŽããŠããªããªãœãŒã¹ã known after apply ãšãªã£ãŠããŸãå Žåã®åé¿çãã玹ä»ããŸããã ãã®èšäºããã®åé¡ã«æ©ãã§ããæ¹ã®ã圹ã«ç«ãŠã°å¹žãã§ãã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸããã åè Data Sources - Configuration Language | Terraform | HashiCorp Developer date source referencing managed resource proposes unnecessary changes under 0.14 · Issue #27171 · hashicorp/terraform ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @shibata.takao ãã¬ãã¥ãŒïŒ 寺山 èŒ (@terayama.akira) ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®æŽç°ã§ãã æ¬èšäºã§ã¯Terraformã§ã³ãŒãã倿ŽããŠããªããªãœãŒã¹ã known after apply ãšãªã£ãŠããŸãå Žåã®åé¿çãã玹ä»ããŸãã åæ åé¡ãšãªãã³ãŒãã®äŸ åå åé¿ç ãããã« åè åæ ãã®èšäºã¯ä»¥äžã®Terraformã®ããŒãžã§ã³ãåæãšããŸãã æ°ããããŒãžã§ã³ã®Terraformã§ã¯æ¬èšäºãšç°ãªãæåãããå¯èœæ§ããããŸãã $ terraform version Terraform v1.5.3 on linux_amd64 + provider registry.terraform.io/hashicorp/aws v5.7.0 åé¡ãšãªãã³ãŒãã®äŸ 以äžã®Terraformã³ãŒããäŸã«èããŠã¿ãŸãããã resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project A" } } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ aws_s3_bucket.sample.arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } ãã®Terraformã³ãŒãã terraform apply ããŸãã $ terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (config refers to values not yet known) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + (known after apply), ] } } # aws_iam_policy.sample will be created + resource "aws_iam_policy" "sample" { + arn = (known after apply) + id = (known after apply) + name = "SampleBucketFullAccess" + name_prefix = (known after apply) + path = "/" + policy = (known after apply) + policy_id = (known after apply) + tags_all = (known after apply) } # aws_s3_bucket.sample will be created + resource "aws_s3_bucket" "sample" { + acceleration_status = (known after apply) + acl = (known after apply) + arn = (known after apply) + bucket = (known after apply) + bucket_domain_name = (known after apply) + bucket_prefix = "sample-" + bucket_regional_domain_name = (known after apply) + force_destroy = false + hosted_zone_id = (known after apply) + id = (known after apply) + object_lock_enabled = (known after apply) + policy = (known after apply) + region = (known after apply) + request_payer = (known after apply) + tags = { + "Project" = "My Project A" } + tags_all = { + "Project" = "My Project A" } + website_domain = (known after apply) + website_endpoint = (known after apply) } Plan: 2 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes aws_s3_bucket.sample: Creating... aws_s3_bucket.sample: Creation complete after 1s [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Creating... aws_iam_policy.sample: Creation complete after 1s [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Apply complete! Resources: 2 added, 0 changed, 0 destroyed. 次ã«S3 ãã±ãã aws_s3_bucket.sample ã® Project ã¿ã°ã®å€ã倿ŽããŸãã resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { - Project = "My Project A" + Project = "My Project B" } } 倿ŽåŸã®Terraformã³ãŒãã«å¯Ÿã㊠terraform plan ãå®è¡ããŸãã $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (depends on a resource or a module with changes pending) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + "arn:aws:s3:::sample-20230713121614963200000001", ] } } # aws_iam_policy.sample will be updated in-place ~ resource "aws_iam_policy" "sample" { id = "arn:aws:iam::************:policy/SampleBucketFullAccess" name = "SampleBucketFullAccess" ~ policy = jsonencode( { - Statement = [ - { - Action = "s3:*" - Effect = "Allow" - Resource = "arn:aws:s3:::sample-20230713121614963200000001" }, ] - Version = "2012-10-17" } ) -> (known after apply) tags = {} # (4 unchanged attributes hidden) } # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 2 to change, 0 to destroy. ãããšã倿Žããªãã¯ãã®IAM policy aws_iam_policy.sample ã® policy ã known after apply ãšãªã£ãŠããŸããŸããã åå ããã¯Data Sourceã®ä»æ§ã«ãããã®ã§ãã Data Resource Dependencies ã«ã¯ä»¥äžã®ããã«èšè¿°ãããŠããŸãã Data resources have the same dependency resolution behavior as defined for managed resources . Setting the depends_on meta-argument within data blocks defers reading of the data source until after all changes to the dependencies have been applied. In order to ensure that data sources are accessing the most up to date information possible in a wide variety of use cases, arguments directly referencing managed resources are treated the same as if the resource was listed in depends_on . èŠçŽãããšä»¥äžã®ãšããã§ãã Data Sourceã§ã¯ depends_on ã«èšèŒããããªãœãŒã¹ã®ãã¹ãŠã®å€æŽãé©çšããããŸã§èªã¿åãã¯å»¶æãããã Data Sourceã®åŒæ°ãä»ã®ãªãœãŒã¹ãçŽæ¥åç
§ããŠããå Žåãåç
§å
ã®ãªãœãŒã¹ãData Sourceã® depends_on ã«å«ãŸããŠããå Žåãšåãããã«æ±ãããã ã€ãŸã Data SourceãçŽæ¥åç
§ããŠãããªãœãŒã¹ã«å€æŽãããå Žåããããã®å€æŽãé©çšãããããšãData Sourceã®èªã¿åããåå®è¡ããã ãšããããšã§ãã æ¹ããŠå
ã»ã©ã®äŸãèããŠã¿ãŸããããTerraformã以äžã®ããã«å€æããŠããããšãããããŸãã aws_s3_bucket.sample ã®ã³ãŒãã®å€æŽãæ€åºãããã data.aws_iam_policy_document.sample 㯠aws_s3_bucket.sample ãçŽæ¥åç
§ããŠããããã depends_on ã« aws_s3_bucket.sample ãå«ãŸããŠããå Žåãšåãããã«æ±ãããã depends_on ã«å«ãŸãã aws_s3_bucket.sample ã®å€æŽãæ€åºãããããããã®å€æŽãé©çšãããããšã§ data.aws_iam_policy_document.sample ã®åèªã¿åããè¡ãå¿
èŠããããšå€æãããã 3ããã㊠aws_iam_policy.sample ã® policy ãæŽæ°ããããšå€æãããã åé¿ç Data Resource Dependencies ã«ã¯ä»¥äžã®ããã«èšè¿°ãããŠããŸãã This behavior can be avoided when desired by indirectly referencing the managed resource values through a local value , unless the data resource itself has custom conditions . ã©ããã Local Value ãéã«æãããšã§å
ã»ã©ã®äºè±¡ãåé¿ã§ããããã§ãã 詊ããŠã¿ãŸããããå
ã»ã©ã®Terraformã³ãŒãã以äžã®ããã«å€æŽããŸãã provider "aws" { region = "ap-northeast-1" } resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project B" } } locals { s3_bucket_arn = aws_s3_bucket.sample.arn } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ local.s3_bucket_arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } 倿ŽåŸã®Terraformã³ãŒãã«å¯Ÿã㊠terraform plan ãå®è¡ããŸãã $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 1 to change, 0 to destroy. S3 ãã±ãã aws_s3_bucket.sample 以å€ã®å€æŽã衚瀺ãããªãããšã確èªã§ããŸããã ãããã« æ¬èšäºã§ã¯Terraformã§ã³ãŒãã倿ŽããŠããªããªãœãŒã¹ã known after apply ãšãªã£ãŠããŸãå Žåã®åé¿çãã玹ä»ããŸããã ãã®èšäºããã®åé¡ã«æ©ãã§ããæ¹ã®ã圹ã«ç«ãŠã°å¹žãã§ãã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸããã åè Data Sources - Configuration Language | Terraform | HashiCorp Developer date source referencing managed resource proposes unnecessary changes under 0.14 · Issue #27171 · hashicorp/terraform ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @shibata.takao ãã¬ãã¥ãŒïŒ 寺山 èŒ (@terayama.akira) ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®ç°æã§ãã 2023 幎 5 æã® Microsoft Build ã«ãŠçµ±ååæãã©ãããã©ãŒã Microsoft Fabric ãçºè¡šãããŸããã Microsoft Fabric ã¯çŸåšãã¬ãã¥ãŒäžã§ãããæ¢åã®ãµãŒãã¹ã«ã¯ãªãæ©èœè¿œå ãå€ãã®ã¢ããããŒããäºå®ãããŠããã Microsoft ã®ããŒã¿é åããžãã¹ã«ãããŠä»åŸæ³šç®ãã¹ããµãŒãã¹ã§ãã æ¬èšäºã§ã¯ã Microsoft Fabric ã®æŠèŠãšãµãŒãã¹æ€èšŒãšããŠå®æœãã倿 ããŒã¿åæã®å
容ãã玹ä»ããŸãã Microsoft Fabric ã®æŠèŠ One Lake Synapse Data Engineering Data Factory Power BI ãµãŒãã¹æ€èšŒïŒå€æ ããŒã¿ã®åæ æŠèŠ æ€èšŒã·ããªãªïŒå€æ ããŒã¿åæ æ€èšŒã¢ãŒããã¯ã㣠Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ã®è³Œå
¥ Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ã®äœæ ã¬ã€ã¯ããŠã¹ã®äœæ 倿 ããŒã¿ã®æ ŒçŽ ããŒãããã¯ã«ããããŒã¿ã®æŽåœ¢ ããŒã¿ãããŒã«ããããŒã¿ã®å€æã»å å·¥ SQL ãšã³ããã€ã³ãã«ããåæ Power BI ã¬ããŒãã®äœæ ãµãŒãã¹æ€èšŒçµæ äžæ°é貫ã®ããŒã¿åæ ããŒã¿åæã®çµéšãæµ
ããŠãŒã¶ãŒãžã®ãµããŒã åæ©èœã®æäœæ ãŸãšã Microsoft Fabric ã®æŠèŠ Microsoft Fabric ã¯ãããŒã¿åæã«å¿
èŠãªèŠçŽ ã 1 ã€ã®çµ±åç°å¢ã§æäŸãã SaaS 圢åŒã®ãœãªã¥ãŒã·ã§ã³ã§ãã åŸæ¥ Microsoft ã® ã¯ã©ãŠã ãµãŒãã¹ã§ããŒã¿åæãããå Žåã¯ãAzure Data Factory ã Azure Synapse Analytics ãšãã£ã PaaS ãçµã¿åããã ã¢ãŒããã¯ã㣠ãèšèšããææ³ãäžè¬çã§ããã Microsoft Fabric ã§ã¯ãããŒã¿ã®èç©/å å·¥/倿/åæ/å¯èŠåãåäžã®åºç€äžã§å®çŸã§ããããããŠãŒã¶ãŒã¯çµ±äžããã UI äžã§ã·ãŒã ã¬ã¹ãªåæã宿œã§ãããšè¬³ãããŠããŸãã ããã«ããããŠãŒã¶ãŒã¯ 1 ã€ã®ãµãŒãã¹å
ã§ããŒã¿åæãããŒã¿ç®¡çã«é¢ããäœæ¥ããã¹ãŠå®çµã§ããåæãªãœãŒã¹ã®ãµã€ãžã³ã°ãšãã£ã管çè² æ
ã®è»œæžãæåŸ
ã§ããŸãã Microsoft Fabric ã®äž»èŠãªæ§æèŠçŽ ã«ã€ããŠè¿°ã¹ãŸãã èšäºã®ããªã¥ãŒã ãèæ
®ããä»åã¯æè¡æ€èšŒã«ãŠæ±ã£ãèŠçŽ ã«ã€ããŠç°¡æœã«èª¬æããŸãã®ã§ãä»ã«ãèå³ãããæ¹ã¯ ãã¡ã ã®ãªã³ã¯ããåç
§ãã ããã ïŒåºå
žïŒ Microsoft Fabric ãšã¯ One Lake Microsoft Fabric ã®ç°å¢ã« 1 ã€äœæããã SaaS 圢åŒã®ããŒã¿ã¬ã€ã¯ã§ãã Microsoft Fabric ã®åæ©èœã§å©çšãããããŒã¿ãäžå
çã«ç®¡çããåºç€ã§ãããã·ã§ãŒãã«ãããšåŒã°ããæ©èœãå©çšãããšããŸããŸãªãµãŒãã¹ããæè»œã«ããŒã¿ãç§»åã§ããŸãã çŸæç¹ã§ã¯ Microsoft Fabric å
éš/ Amazon S3 /Azure Data Lake Storage ãšã®é£æºãå®è£
ãããŠãããä»åŸãæ¡å€§ãããŠãããšæãããŸãã OneLake ã®ã·ã§ãŒãã«ãã Synapse Data Engineering ã¬ã€ã¯ããŠã¹ãšåŒã°ããæ§é å/éæ§é åããŒã¿ã管çã»åæã§ããããŒã¿ã¹ãã¢ã«æ ŒçŽãããããŒã¿ã«å¯ŸããåŠçãè¡ãæ©èœã§ãã å
·äœçã«ã¯ Apache Spark ã¯ã©ã¹ã¿ ã«ããåæãããŒãããã¯ã«ãã察話çãªåæïŒ Python /R/ Scala ïŒãããŒã¿ãã€ãã©ã€ã³ã«ããããŒã¿ã®ç§»å/倿/çµåçã宿œã§ããŸãã Microsoft Fabric ã®ããŒã¿ ãšã³ãžãã¢ãªã³ã°ãšã¯ Data Factory æ¢åã®ããŒã¿çµ±åãµãŒãã¹ã§ãã Azure Data Factory ãšã Excel ã Power BI çã«æèŒãããŠãã Power Query ãçµã¿åãããããŒã¿çµ±åæ©èœã§ãã ããŸããŸãªããŒã¿ãœãŒã¹ããããŒã¿ãåã蟌ã¿ãæè»ãªåŠçãå¯èœã§ãã Microsoft Fabric ã® Data Factory ãšã¯ Power BI Microsoft Power Platform ã«ãŠæäŸãããŠãã BI ããŒã«ã§ãã Microsoft Fabric ã«å¯èŠå ã³ã³ããŒãã³ã ãšããŠçµ±åãããŠããŸãã Power BI ãšã¯ ãµãŒãã¹æ€èšŒïŒå€æ ããŒã¿ã®åæ æŠèŠ 7 æäžæ¬ãããã§ Microsoft Fabric ã®ãã£ããã¢ãããš ãã¥ãŒããªã¢ã« ã®å®æœãããçšåºŠé²ãã ã®ã§ãææã¡ã®ããŒã¿ã䜿çšã㊠Microsoft Fabric ã§ã®åæã«çæããŸããã åæäœæ¥ãéããŠãäžèšã®é
ç®ã«ã€ããŠæ€èšŒããããšãç®çãšããŸãã Microsoft Fabric ã®ã¿ã§ããŒã¿åæã äžæ°é貫 ã§å®æœã§ããã ããŒã¿åæã®çµéšãããŸããªããŠãŒã¶ãŒããµããŒãããæ©èœãçŸæç¹ã§ã©ã®çšåºŠå®è£
ãããŠããã Microsoft Fabric ã®æäœæïŒPower BI ã Data Factory ãªã©çµ±åããããµãŒãã¹ããããŸã§éãå©çšã§ãããïŒ æ€èšŒã·ããªãªïŒå€æ ããŒã¿åæ ISID ã§ã¯æ¥ã
ã®å€æ å
¥åãèªç€Ÿãœãªã¥ãŒã·ã§ã³ã§ãã POSITIVE ã§å®æœããŠããŸãã POSITIVE - 人äºçµŠäžã倿 ã·ã¹ãã ISID 瀟å
ã§å©çšããŠãã POSITIVE ã§ã¯ãå
¥åãã倿 æ
å ±ã Excel 圢åŒã§ããŠã³ããŒãã§ããŸãã ããã§ãèªåã®å€æ ããŒã¿ãèšé²ããã Excel ãã¡ã€ã«ã Microsoft Fabric ã§åæããå¯èŠåãŸã§ã®å·¥çšã äžæ°é貫 ã§æ€èšŒããŠã¿ãããšã«ããŸããã æ€èšŒ ã¢ãŒããã¯ã㣠ã¢ãŒããã¯ãã£ ãšæ€èšŒæé ã¯äžèšã®éãã§ãã Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ ã賌å
¥ãã Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ ãäœæãã Synapse Data Engineering ã«ãŠããŒã¿ã¹ãã¢ãšãªãã¬ã€ã¯ããŠã¹ãäœæãã ããŒã«ã«ãã Excel 圢åŒã®å€æ ããŒã¿ãã¬ã€ã¯ããŠã¹ãžæ ŒçŽãã ããŒããã㯠ãäœæãã Excel 圢åŒã®å€æ ããŒã¿ãæŽåœ¢ããŠå床ã¬ã€ã¯ããŠã¹ãžæ ŒçŽãã æŽåœ¢ããã倿 ããŒã¿ãããŒã¿ãããŒã«ãŠå€æã»å å·¥ããå床ã¬ã€ã¯ããŠã¹ãžæ ŒçŽãã ã¬ã€ã¯ããŠã¹ãã SQL ãšã³ããã€ã³ããäœæãåæã宿œãã 倿åŸã®ããŒã¿ããã³åæçµæã Power BI ã«ãŠå¯èŠåãã Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ ã®è³Œå
¥ Microsoft 365 ããã㯠Azure äžãã賌å
¥ã§ããŸãã ä»å㯠Azure äžãã賌å
¥ããŸããã æé ã¯ç°¡åãã€ããã¥ã¡ã³ãã®å
容ããªããã ãã§ãã®ã§ãæ¬èšäºã§ã¯å²æããŸãã Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ã賌å
¥ãã Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ ã®äœæ ã¯ãŒã¯ã¹ããŒã¹ ãšã¯ã Microsoft Fabric ã§äœæããããŸããŸãªã³ã¬ã¯ã·ã§ã³ïŒã¬ã€ã¯ããŠã¹ãããŒã¿ãããŒãBI ã¬ããŒã etc...ïŒããŸãšããŠç®¡çãããã®ã§ãã Microsoft Fabric ã§äœæ¥ãéå§ããéã«ã¯ãå
容ãåããã¯ããã«å®æœããå·¥çšãšãªããŸãã æé ãšããŠã¯ ã¯ãŒã¯ã¹ããŒã¹ åãå
¥åããŠä¿åããã ãã§ãã®ã§ããã¡ãã«ã€ããŠã詳现ã¯å²æããŸãã å³å¯ã«ã¯ ã¯ãŒã¯ã¹ããŒã¹ ã«å¯Ÿããæš©éèšå®ãªã©ããããŸãããä»åã¯æ€èšŒçš ã¯ãŒã¯ã¹ããŒã¹ ã®ãã宿œããŠããŸããã ã¯ãŒã¯ã¹ããŒã¹ã®äœæ ã¬ã€ã¯ããŠã¹ã®äœæ ã¬ã€ã¯ããŠã¹ã¯ã倧容éã®ããŒã¿ãèç©ããããŒã¿ã¬ã€ã¯ãšããŒã¿ã®åã蟌ã¿ãåæã«ç¹åããããŒã¿ãŠã§ã¢ããŠã¹ãçµ±åãããã®ã§ãã äžè¬çã«æ§é å/åæ§é å/éæ§é åããŒã¿ã 1 ç®æã§ç®¡çã»åæããããšãå¯èœã§ã Microsoft Fabric ã§ã¯å€æ§ãªããŒã¿ãœãŒã¹ããã®ããŒã¿æ ŒçŽãšããŒã¿ã«å¯ŸããããŸããŸãªå€æã»çµ±ååŠçã SQL ã Spark ãšã³ãžã³ãå©çšããåæããµããŒãããŠããŸãã ãŸã Microsoft Fabric ã«ãããã¬ã€ã¯ããŠã¹ã®ç¹åŸŽãšããŠãæ ŒçŽãããããŒã¿ãèªåã§æ€åºããåæã«é©ãã圢åŒã§ããŒãã«ãšããŠç»é²ããæ©èœãçšæãããŠããŸãã äœæèªäœã¯éåžžã«ç°¡åã§ã Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ ã®ïŒ»+ æ°èŠïŒœããã¬ã€ã¯ããŠã¹ïŒœãéžæãä»»æã®ååãèšå®ããŠå®äºã§ãã 倿 ããŒã¿ã®æ ŒçŽ æ€èšŒã«å¿
èŠãªããŒã¿ãäœæããã¬ã€ã¯ããŠã¹ãžæ ŒçŽããŸãã 察象ãšãªãã®ã¯ãç§ã® 2023 幎 6 æåã®å€æ å®çžŸãèšé²ãã Excel ããŒã¿ïŒãã¡ã€ã«åïŒAttendance_202306.xlsxïŒã§ãã äœæçŽåŸã®ã¬ã€ã¯ããŠã¹ã«ã¯ æ§é åããŒã¿ã管çããã Tables ãšããŒã¿ã¬ã€ã¯ã®ããã«ããŸããŸãªãœãŒã¹ãã飿ºãããçããŒã¿ã管çããã Files ãšããã»ã¯ã·ã§ã³ãçšæãããŠããŸãã ããŒã¿æ ŒçŽãããéã¯ããŒã¿ãããŒããã€ãã©ã€ã³ãå©çšããæ¹æ³ããOne Lake ã®ã·ã§ãŒãã«ããæ©èœãªã©ããŸããŸãªéžæè¢ããããŸãããä»åã¯ã·ã³ãã«ã«æåã§ã¢ããããŒãããŸããã ã¢ããããŒããå®äºãããš ããŒã¿åœ¢åŒ ã«ãã£ãŠã¯ãã¬ãã¥ãŒè¡šç€ºãå¯èœã§ããã2023 幎 7 ææç¹ã§ Excel ããŒã¿ã¯ãµããŒãå€ã®ããã§ãã ããŒãããã¯ã«ããããŒã¿ã®æŽåœ¢ çããŒã¿ã®æç¹ã§ããçšåºŠæ§é åãããŠããã°ããã®ã§ãããæ€èšŒã§æ±ã倿 ããŒã¿ã¯åæçšã«ãã©ãŒãããããããã®ã§ã¯ãªãããã 倿ãçµ±ååŠçã®åã«ããŒã¿ãæŽåœ¢ããå¿
èŠããããŸãã ããã§ãä»å㯠Spark ãšã³ãžã³ãæ¥ç¶ãããããŒãããã¯ã«ããããŒã¿ã®æŽåœ¢ã宿œããŸããã ã»ãã®éžæè¢ãšããŠããŒã¿ãããŒïŒPower QueryïŒãæ€èšããŸãããããã¡ãã¯ãã®åŸã®äœæ¥ã§ããããŒã¿ã®å€æã»å å·¥åŠçã§å©çšããŠããŸãã ããŒãããã¯ã¯ã¬ã€ã¯ããŠã¹ UI ã®ïŒ»ããŒãããã¯ãéãããäœæã§ããŸãã ããŒãããã¯ã®äœæãšåæã« Spark ãšã³ãžã³ãçšæãããããããŠãŒã¶ãŒã¯èšèªãéžæããŠåŠçãèšè¿°ããŠããã ãã§ãã ç§ã¯ Python ãéžæããŸãããããã®ä»ã« Scala / C# /R/Spark SQL ããµããŒããããŠããŸãã ããŒã¿æŽåœ¢ã®å
容ãšããŠã¯ã Excel 圢åŒã®å€æ ããŒã¿ãããå¿
èŠãªããŒã¿ãæœåºãã Python ã®ããŒã¿ãã¬ãŒã ãå©çšããŠããŒã¿ãåé
眮ããŠããŸãã æœåºããããŒã¿ã¯äžèšã®éãã§ãã æ¥ä» å€ååºåïŒåºå€/æ³å®äŒæ¥/æçµŠãªã©ïŒ å€å圢æ
ïŒåºç€Ÿ/ãã¬ã¯ãŒã¯/顧客å
ãªã©ïŒ å€åéå§æé å€åçµäºæé å€åæé äŒæ©æé ãŸããæŽåœ¢åŸã®ããŒã¿ã¯ã¬ã€ã¯ããŠã¹å
ã§ãã¬ãã¥ãŒè¡šç€ºããããã£ãã®ã§ã CSV 圢åŒã®ãã¡ã€ã«ãšã㊠Files ã»ã¯ã·ã§ã³ã«æ ŒçŽããŠããŸãã æŽåœ¢åŸã®ããŒã¿ã¯äžèšã®éãã§ãïŒãã¡ã€ã«åïŒAttendance. csv ïŒã ããŒã¿ãããŒã«ããããŒã¿ã®å€æã»å å·¥ æŽåœ¢ããããŒã¿ã«å¯ŸããŠã倿ã»å å·¥åŠçã宿œãåæã®æºåãè¡ããŸãã åè¿°ããããŒãããã¯ã§ãŸãšããŠå®æœããŠãããã£ãã®ã§ãããä»ã®æ©èœãè§Šã£ãŠã¿ãããšããæãã§ããŒã¿ãããŒã«ããäœæ¥ãšããŸããã ããŒã¿ãããŒã¯ Microsoft Fabric ã® UI ãã Data Factory ãéžæãã[Dataflow Gen2ïŒãã¬ãã¥ãŒïŒ]ããäœæã§ããŸãã äœæåŸã¯ã¬ã€ã¯ããŠã¹ã«æ ŒçŽãããŠããæŽåœ¢åŸã®å€æ ããŒã¿ïŒAttendance. csv ïŒãèªã¿èŸŒã¿ãå¿
èŠãªåŠçã宿œããŸãã ä»å宿œããäž»ãªåŠçå
容ã¯äžèšã®éãã§ãã å€åéå§/çµäºæéã®ããŒã¿åãæåååãžå€æŽãã 宿ã衚çŸããåã远å ãã å€åæéãšå®æãèšç®ããæ®æ¥æéã衚çŸããåã远å ãã å€ååºåã«äŒæ¥åºå€ãå«ãŸããå Žåã¯ãå€åæéãæ®æ¥æéãšããŠè¿œå ãã å®éã®ããŒã¿ãããŒç»é¢ã¯äžç»åã®ããã«ãªããŸãã ããŒãããã¯ãšç°ãªããã³ãŒãïŒPower QueryïŒãèšè¿°ã§ããªããšã GUI äžã®æäœã§åºæ¬çãªããŒã¿ã®å€æã»å å·¥ãå¯èœã§ãã ãã¡ãããå¿
èŠã«å¿ããŠçŽæ¥ Power Query ãæžãããšãã§ããŸãã ãŸããåŠçã®ãµããªããã€ã¢ã°ã©ã ãã¥ãŒïŒç»åå
ã®éæ éšåïŒã«èšé²ããåŠççµæã¯ç»åäžéšã«ãã¬ãã¥ãŒãããã®ã§ãåŠçã«å¯Ÿããçµæãå³æææ¡ã§ããŸãã ããŒã¿å€æãå®äºããããç»åå³äžã®ïŒ»ããŒã¿ã®åæå
ããã¬ã€ã¯ããŠã¹ãžã®åæèšå®ãè¡ãããšã§ãåæçšã«æé©åããã圢åŒã§ Tables ã»ã¯ã·ã§ã³ãžæ ŒçŽãããŸãã ãŸãããã®éã® ã¹ããŒã å®çŸ©ãããŒã¿æ§é ã®äœæãªã©ã¯ãã¹ãŠèªåã§å®æœãããŸãã ããŒã¿ãããŒããã¬ã€ã¯ããŠã¹ãžã®åæãå®äºãããšãTables ã»ã¯ã·ã§ã³ã§ããŒãã«ã®å
容ããã¬ãã¥ãŒã§ããŸãã ä»åã¯å€æåŸã®ããŒã¿ã§ããããšãæç€ºããããã«ãattendance_transform ãšããããŒãã«åãšããŸããã SQL ãšã³ããã€ã³ãã«ããåæ ããŒã¿ãããŒããåæãããããŒãã«ã«å¯ŸããŠåæã宿œããŸãã SQL ãšã³ããã€ã³ããšåŒã°ããæ©èœãå©çšããããšã§ãã¬ã€ã¯ããŠã¹å
ã®ããŒãã«ã«å¯Ÿãã SQL ã¯ãšãªçºè¡ããªã¬ãŒã·ã§ã³ã·ããã®æ§æãå¯èœã§ãã ã¬ã€ã¯ããŠã¹ã® UI ããã SQL ãšã³ããã€ã³ããžé·ç§»ããŸãã SQL ãšã³ããã€ã³ãã§ã¯ 3 ã€ã®ãã€ã³ãçšæãããŠãããããããäžèšã®äœæ¥ãå¯èœã§ãã ããŒã¿ïŒ ã¹ããŒã å®çŸ©ã«å«ãŸããã㌠ãã«ã㌠ã¿ã®ç¢ºèªã SQL ã¯ãšãªã®ç®¡ç ã¯ãšãªïŒ T-SQL ã¯ãšãªã®çºè¡ ã¢ãã«ïŒããŒãã«éã®ãªã¬ãŒã·ã§ã³ã·ããæ§æã Power BI ã«ãããã¡ãžã£ãŒã®èšå®ãå¯èœ ä»åã¯ã¯ãšãªãšã¢ãã«ã®ãã€ã³ã«ãŠãããããåæäœæ¥ã宿œããŸããã äž»ãªåæå
容ã¯äžèšã®éãã§ãã SQL ã¯ãšãªãå©çšããåæ å€åæéãæ®æ¥æéãå€ååºåãå€å圢æ
ã®éèš å€å圢æ
ã«ãããå€åç¶æ³ã®åŸååæ 1 ãæéã«ãããå€åç¶æ³ã®åŸååæ ã¢ãã« å€åæ¥ã«ãããåºç€Ÿ/ãã¬ã¯ãŒã¯ã®å²åãç®åº ä»å㯠1 ãæåã®å€æ ããŒã¿ã®ã¿ã§ãã£ããããããŸã§è€éãªåæã§ã¯ãããŸããããé¢é£ããŒã¿ã®è¿œå ãããŒã¿æéãæ¡å€§ããããšã§ããã«å
å®ããåæãå¯èœã§ãã Power BI ã¬ããŒãã®äœæ æçµå·¥çšãšããŠãåæçµæã Power BI ã§å¯èŠåããŸãã SQL ãšã³ããã€ã³ã UI ã®ïŒ»æ°ããã¬ããŒããããPower BI ã¬ããŒãã®äœæç»é¢ãžé·ç§»ããŸãã åæçµæãåæ ãã Power BI ã¬ããŒãã¯äžç»åã®éãã§ãã ã¬ããŒãå
ã®åããžã¥ã¢ã«ã§åæçµæãå¯èŠåããŠããŸãã å€åæéãšæ®æ¥æéããã³å€åæ¥ã«å¯Ÿãããã¬ã¯ãŒã¯ã®å²åãã«ãŒãäžã«ããã¹ã圢åŒã§è¡šç€º 1 ãæéã«ãããå€åæéã®æšç§»ãšå®æã«å¯Ÿããæ®æ¥æéã®æšç§»ãæ£ã°ã©ãã§è¡šç€º å€åæéãé·ãæ¥ãæéã衚圢åŒã§è¡šç€º å€å圢æ
ïŒåºç€Ÿ or ãã¬ã¯ãŒã¯ïŒã®éãã§å¹³åå€åæéã«ã©ã®ãããªåœ±é¿ããããæ£åžå³ã§è¡šç€º ãµãŒãã¹æ€èšŒçµæ 倿 ããŒã¿ã®åæã·ããªãªãéãã Microsoft Fabric ã®æ€èšŒçµæããŸãšããŸãã æ€èšŒé
ç®ã¯äžèšã®éãã§ãïŒåæ²ïŒã Microsoft Fabric ã®ã¿ã§ããŒã¿åæã äžæ°é貫 ã§å®æœã§ããã ããŒã¿åæã®çµéšãããŸããªããŠãŒã¶ãŒããµããŒãããæ©èœãçŸæç¹ã§ã©ã®çšåºŠå®è£
ãããŠããã Microsoft Fabric ã®æäœæïŒPower BI ã Data Factory ãªã©çµ±åããããµãŒãã¹ããããŸã§éãå©çšã§ãããïŒ ãã®ä»å©çšæã®æ³šæç¹ äžæ°é貫 ã®ããŒã¿åæ ããŒã¿ã®æ ŒçŽããå¯èŠåãŸã§ãã¹ãŠ Microsoft Fabric ã§å®çµã§ããŸããã åŸæ¥ã®ããã«åæããšã«çšéã«å¿ã㊠PaaS ãçµã¿åãããããã€ã³ãã©ã確ä¿ããå¿
èŠããªããçµ±äžããã UI ã®å
ã§äœæ¥ãã§ããããšã¯ã¡ãªããã§ãããšèšããŸãã ä»åã¯ããŒã«ã«ããŒã¿ãäžå¿ãšããåæã·ããªãªã§ãããã æ©æ¢°åŠç¿ ããªã¢ã«ã¿ã€ã åæãªã©å¹
åºãã·ããªãªã«å¯Ÿå¿ã§ãããµãŒãã¹ã§ãããšããå°è±¡ã§ãã äžæ¹ã§ãåæã·ããªãªã«ãã£ãŠã¯äžèŠãªæ©èœã ã³ã³ããŒãã³ã ãããããšãäºå®ã§ãã Microsoft Fabric ã®å©çšãæé©ãšãªãåæã·ããªãªã¯äœãããšããç¹ã«ã€ããŠã¯ãééé¢ãåŠç¿ã³ã¹ãã®èгç¹ãå«ããŠä»åŸã®ã¢ããããŒãã远ã£ãŠããå¿
èŠããããŸãã ããŒã¿åæã®çµéšãæµ
ããŠãŒã¶ãŒãžã®ãµããŒã ä»åã®æ€èšŒã§è§Šããæ©èœã®äžã§ã¯ãããŒã¿ãããŒã® GUI ã«ããããŒã¿å€æåŠçã¯æ¯èŒçãŠãŒã¶ãŒã«æããèšèšãšããå°è±¡ãåããŸããã ã§ããããã以å€ã®éšåã«ã€ããŠã¯ç¶ç¶çãªåŒ·åãå¿
èŠãšæããŠããŸãã Microsoft Fabric ã¯ã誰ããããŒã¿ã管çããã³åæããŠã¢ã¯ã·ã§ã³ã«ã€ãªãã ã€ã³ãµã€ã ãåŸãããããšããã³ã³ã»ãããæ²ããŠããŸãããçŸç¶ã®æ©èœæ§æã¯ããŒã¿å€æãå å·¥ã»åæçã®åŠçèšèšããŠãŒã¶ãŒã®ç¥èã«äŸåããŠããŸãã Microsoft Fabric - ããŒã¿åæ ä»åã®æ€èšŒã«ãããŠã¯ãããŒãããã¯ãå©çšããããŒã¿ã®ååŠçã SQL ãšã³ããã€ã³ãã«ããåæã§å¿
èŠãšãªãã³ãŒããã¯ãšãªã®äœæã¯ãæªçµéšã®ãŠãŒã¶ãŒã«ã¯é£æåºŠãé«ãäœæ¥ã§ãã 誰ããããŒã¿ã管çããã³åæããããã«ã¯ãã®ãããªäœæ¥ã«å¯ŸãããµããŒãæ©èœãå¿
èŠã§ãå
·äœçã«ã¯äžèšã®ãããªå
容ãæåŸ
ããŸãã Copilot æ©èœã«ããåçš®ã³ãŒããã¯ãšãªã®èªåçæ One Lake ã®ã·ã§ãŒãã«ããæ©èœåŒ·åïŒé£æºå
ã®æ¡åŒµãªã©ïŒ ããã¥ã¡ã³ãã ãã¥ãŒããªã¢ã« ã®å
å® Microsoft ã«ãããšãAzure OpenAI ãšé£æºãã Copilot æ©èœãè¿æ¥å
¬éäºå®ãšãªã£ãŠãããŸãã®ã§ããã¡ããæ³šèŠããããšæããŸãã åæ©èœã®æäœæ 䞻芳ã«ãªããŸãããæ¢åã® PaaS ã SaaS ããçµ±åãããæ©èœã«ã€ããŠã¯éåæãªãæäœã§ããŸããã ããŒãããã¯ã«ãã察話圢åŒã§ã®ããŒã¿æäœãããŒã¿ãããŒåšèŸºã®æäœã¯ãUI èªäœãçµ±åå
ã® Microsoft 補åãšå€§ããå€ãããªãããããããã®çµéšãããæ¹ã§ããã°æµæãªãå©çšã§ããããšæããŸãã ãŸãšã æ¬èšäºã§ã¯ã Microsoft Fabric ã®æŠèŠãšãµãŒãã¹æ€èšŒãšããŠå®æœãã倿 ããŒã¿åæã®å
容ã«ã€ããŠã玹ä»ããŸããã Microsoft Fabric ã¯çºè¡šãããŠéããªããœãªã¥ãŒã·ã§ã³ã§ãããããŒããããã§ã¯ä»åŸãå€ãã®ã¢ããããŒããäºå®ãããŠãããŸãã®ã§ãåŒãç¶ã泚èŠããããšæããŸãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @tamura.kohei ãã¬ãã¥ãŒïŒ @yamada.y ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ã¯ã©ãŠã ã€ãããŒã·ã§ã³ ã»ã³ã¿ãŒã®ç°æã§ãã 2023 幎 5 æã® Microsoft Build ã«ãŠçµ±ååæãã©ãããã©ãŒã Microsoft Fabric ãçºè¡šãããŸããã Microsoft Fabric ã¯çŸåšãã¬ãã¥ãŒäžã§ãããæ¢åã®ãµãŒãã¹ã«ã¯ãªãæ©èœè¿œå ãå€ãã®ã¢ããããŒããäºå®ãããŠããã Microsoft ã®ããŒã¿é åããžãã¹ã«ãããŠä»åŸæ³šç®ãã¹ããµãŒãã¹ã§ãã æ¬èšäºã§ã¯ã Microsoft Fabric ã®æŠèŠãšãµãŒãã¹æ€èšŒãšããŠå®æœãã倿 ããŒã¿åæã®å
容ãã玹ä»ããŸãã Microsoft Fabric ã®æŠèŠ One Lake Synapse Data Engineering Data Factory Power BI ãµãŒãã¹æ€èšŒïŒå€æ ããŒã¿ã®åæ æŠèŠ æ€èšŒã·ããªãªïŒå€æ ããŒã¿åæ æ€èšŒã¢ãŒããã¯ã㣠Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ã®è³Œå
¥ Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ã®äœæ ã¬ã€ã¯ããŠã¹ã®äœæ 倿 ããŒã¿ã®æ ŒçŽ ããŒãããã¯ã«ããããŒã¿ã®æŽåœ¢ ããŒã¿ãããŒã«ããããŒã¿ã®å€æã»å å·¥ SQL ãšã³ããã€ã³ãã«ããåæ Power BI ã¬ããŒãã®äœæ ãµãŒãã¹æ€èšŒçµæ äžæ°é貫ã®ããŒã¿åæ ããŒã¿åæã®çµéšãæµ
ããŠãŒã¶ãŒãžã®ãµããŒã åæ©èœã®æäœæ ãŸãšã Microsoft Fabric ã®æŠèŠ Microsoft Fabric ã¯ãããŒã¿åæã«å¿
èŠãªèŠçŽ ã 1 ã€ã®çµ±åç°å¢ã§æäŸãã SaaS 圢åŒã®ãœãªã¥ãŒã·ã§ã³ã§ãã åŸæ¥ Microsoft ã® ã¯ã©ãŠã ãµãŒãã¹ã§ããŒã¿åæãããå Žåã¯ãAzure Data Factory ã Azure Synapse Analytics ãšãã£ã PaaS ãçµã¿åããã ã¢ãŒããã¯ã㣠ãèšèšããææ³ãäžè¬çã§ããã Microsoft Fabric ã§ã¯ãããŒã¿ã®èç©/å å·¥/倿/åæ/å¯èŠåãåäžã®åºç€äžã§å®çŸã§ããããããŠãŒã¶ãŒã¯çµ±äžããã UI äžã§ã·ãŒã ã¬ã¹ãªåæã宿œã§ãããšè¬³ãããŠããŸãã ããã«ããããŠãŒã¶ãŒã¯ 1 ã€ã®ãµãŒãã¹å
ã§ããŒã¿åæãããŒã¿ç®¡çã«é¢ããäœæ¥ããã¹ãŠå®çµã§ããåæãªãœãŒã¹ã®ãµã€ãžã³ã°ãšãã£ã管çè² æ
ã®è»œæžãæåŸ
ã§ããŸãã Microsoft Fabric ã®äž»èŠãªæ§æèŠçŽ ã«ã€ããŠè¿°ã¹ãŸãã èšäºã®ããªã¥ãŒã ãèæ
®ããä»åã¯æè¡æ€èšŒã«ãŠæ±ã£ãèŠçŽ ã«ã€ããŠç°¡æœã«èª¬æããŸãã®ã§ãä»ã«ãèå³ãããæ¹ã¯ ãã¡ã ã®ãªã³ã¯ããåç
§ãã ããã ïŒåºå
žïŒ Microsoft Fabric ãšã¯ One Lake Microsoft Fabric ã®ç°å¢ã« 1 ã€äœæããã SaaS 圢åŒã®ããŒã¿ã¬ã€ã¯ã§ãã Microsoft Fabric ã®åæ©èœã§å©çšãããããŒã¿ãäžå
çã«ç®¡çããåºç€ã§ãããã·ã§ãŒãã«ãããšåŒã°ããæ©èœãå©çšãããšããŸããŸãªãµãŒãã¹ããæè»œã«ããŒã¿ãç§»åã§ããŸãã çŸæç¹ã§ã¯ Microsoft Fabric å
éš/ Amazon S3 /Azure Data Lake Storage ãšã®é£æºãå®è£
ãããŠãããä»åŸãæ¡å€§ãããŠãããšæãããŸãã OneLake ã®ã·ã§ãŒãã«ãã Synapse Data Engineering ã¬ã€ã¯ããŠã¹ãšåŒã°ããæ§é å/éæ§é åããŒã¿ã管çã»åæã§ããããŒã¿ã¹ãã¢ã«æ ŒçŽãããããŒã¿ã«å¯ŸããåŠçãè¡ãæ©èœã§ãã å
·äœçã«ã¯ Apache Spark ã¯ã©ã¹ã¿ ã«ããåæãããŒãããã¯ã«ãã察話çãªåæïŒ Python /R/ Scala ïŒãããŒã¿ãã€ãã©ã€ã³ã«ããããŒã¿ã®ç§»å/倿/çµåçã宿œã§ããŸãã Microsoft Fabric ã®ããŒã¿ ãšã³ãžãã¢ãªã³ã°ãšã¯ Data Factory æ¢åã®ããŒã¿çµ±åãµãŒãã¹ã§ãã Azure Data Factory ãšã Excel ã Power BI çã«æèŒãããŠãã Power Query ãçµã¿åãããããŒã¿çµ±åæ©èœã§ãã ããŸããŸãªããŒã¿ãœãŒã¹ããããŒã¿ãåã蟌ã¿ãæè»ãªåŠçãå¯èœã§ãã Microsoft Fabric ã® Data Factory ãšã¯ Power BI Microsoft Power Platform ã«ãŠæäŸãããŠãã BI ããŒã«ã§ãã Microsoft Fabric ã«å¯èŠå ã³ã³ããŒãã³ã ãšããŠçµ±åãããŠããŸãã Power BI ãšã¯ ãµãŒãã¹æ€èšŒïŒå€æ ããŒã¿ã®åæ æŠèŠ 7 æäžæ¬ãããã§ Microsoft Fabric ã®ãã£ããã¢ãããš ãã¥ãŒããªã¢ã« ã®å®æœãããçšåºŠé²ãã ã®ã§ãææã¡ã®ããŒã¿ã䜿çšã㊠Microsoft Fabric ã§ã®åæã«çæããŸããã åæäœæ¥ãéããŠãäžèšã®é
ç®ã«ã€ããŠæ€èšŒããããšãç®çãšããŸãã Microsoft Fabric ã®ã¿ã§ããŒã¿åæã äžæ°é貫 ã§å®æœã§ããã ããŒã¿åæã®çµéšãããŸããªããŠãŒã¶ãŒããµããŒãããæ©èœãçŸæç¹ã§ã©ã®çšåºŠå®è£
ãããŠããã Microsoft Fabric ã®æäœæïŒPower BI ã Data Factory ãªã©çµ±åããããµãŒãã¹ããããŸã§éãå©çšã§ãããïŒ æ€èšŒã·ããªãªïŒå€æ ããŒã¿åæ ISID ã§ã¯æ¥ã
ã®å€æ å
¥åãèªç€Ÿãœãªã¥ãŒã·ã§ã³ã§ãã POSITIVE ã§å®æœããŠããŸãã POSITIVE - 人äºçµŠäžã倿 ã·ã¹ãã ISID 瀟å
ã§å©çšããŠãã POSITIVE ã§ã¯ãå
¥åãã倿 æ
å ±ã Excel 圢åŒã§ããŠã³ããŒãã§ããŸãã ããã§ãèªåã®å€æ ããŒã¿ãèšé²ããã Excel ãã¡ã€ã«ã Microsoft Fabric ã§åæããå¯èŠåãŸã§ã®å·¥çšã äžæ°é貫 ã§æ€èšŒããŠã¿ãããšã«ããŸããã æ€èšŒ ã¢ãŒããã¯ã㣠ã¢ãŒããã¯ãã£ ãšæ€èšŒæé ã¯äžèšã®éãã§ãã Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ ã賌å
¥ãã Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ ãäœæãã Synapse Data Engineering ã«ãŠããŒã¿ã¹ãã¢ãšãªãã¬ã€ã¯ããŠã¹ãäœæãã ããŒã«ã«ãã Excel 圢åŒã®å€æ ããŒã¿ãã¬ã€ã¯ããŠã¹ãžæ ŒçŽãã ããŒããã㯠ãäœæãã Excel 圢åŒã®å€æ ããŒã¿ãæŽåœ¢ããŠå床ã¬ã€ã¯ããŠã¹ãžæ ŒçŽãã æŽåœ¢ããã倿 ããŒã¿ãããŒã¿ãããŒã«ãŠå€æã»å å·¥ããå床ã¬ã€ã¯ããŠã¹ãžæ ŒçŽãã ã¬ã€ã¯ããŠã¹ãã SQL ãšã³ããã€ã³ããäœæãåæã宿œãã 倿åŸã®ããŒã¿ããã³åæçµæã Power BI ã«ãŠå¯èŠåãã Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ ã®è³Œå
¥ Microsoft 365 ããã㯠Azure äžãã賌å
¥ã§ããŸãã ä»å㯠Azure äžãã賌å
¥ããŸããã æé ã¯ç°¡åãã€ããã¥ã¡ã³ãã®å
容ããªããã ãã§ãã®ã§ãæ¬èšäºã§ã¯å²æããŸãã Microsoft Fabric ãµãã¹ã¯ãªãã·ã§ã³ã賌å
¥ãã Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ ã®äœæ ã¯ãŒã¯ã¹ããŒã¹ ãšã¯ã Microsoft Fabric ã§äœæããããŸããŸãªã³ã¬ã¯ã·ã§ã³ïŒã¬ã€ã¯ããŠã¹ãããŒã¿ãããŒãBI ã¬ããŒã etc...ïŒããŸãšããŠç®¡çãããã®ã§ãã Microsoft Fabric ã§äœæ¥ãéå§ããéã«ã¯ãå
容ãåããã¯ããã«å®æœããå·¥çšãšãªããŸãã æé ãšããŠã¯ ã¯ãŒã¯ã¹ããŒã¹ åãå
¥åããŠä¿åããã ãã§ãã®ã§ããã¡ãã«ã€ããŠã詳现ã¯å²æããŸãã å³å¯ã«ã¯ ã¯ãŒã¯ã¹ããŒã¹ ã«å¯Ÿããæš©éèšå®ãªã©ããããŸãããä»åã¯æ€èšŒçš ã¯ãŒã¯ã¹ããŒã¹ ã®ãã宿œããŠããŸããã ã¯ãŒã¯ã¹ããŒã¹ã®äœæ ã¬ã€ã¯ããŠã¹ã®äœæ ã¬ã€ã¯ããŠã¹ã¯ã倧容éã®ããŒã¿ãèç©ããããŒã¿ã¬ã€ã¯ãšããŒã¿ã®åã蟌ã¿ãåæã«ç¹åããããŒã¿ãŠã§ã¢ããŠã¹ãçµ±åãããã®ã§ãã äžè¬çã«æ§é å/åæ§é å/éæ§é åããŒã¿ã 1 ç®æã§ç®¡çã»åæããããšãå¯èœã§ã Microsoft Fabric ã§ã¯å€æ§ãªããŒã¿ãœãŒã¹ããã®ããŒã¿æ ŒçŽãšããŒã¿ã«å¯ŸããããŸããŸãªå€æã»çµ±ååŠçã SQL ã Spark ãšã³ãžã³ãå©çšããåæããµããŒãããŠããŸãã ãŸã Microsoft Fabric ã«ãããã¬ã€ã¯ããŠã¹ã®ç¹åŸŽãšããŠãæ ŒçŽãããããŒã¿ãèªåã§æ€åºããåæã«é©ãã圢åŒã§ããŒãã«ãšããŠç»é²ããæ©èœãçšæãããŠããŸãã äœæèªäœã¯éåžžã«ç°¡åã§ã Microsoft Fabric ã¯ãŒã¯ã¹ããŒã¹ ã®ïŒ»+ æ°èŠïŒœããã¬ã€ã¯ããŠã¹ïŒœãéžæãä»»æã®ååãèšå®ããŠå®äºã§ãã 倿 ããŒã¿ã®æ ŒçŽ æ€èšŒã«å¿
èŠãªããŒã¿ãäœæããã¬ã€ã¯ããŠã¹ãžæ ŒçŽããŸãã 察象ãšãªãã®ã¯ãç§ã® 2023 幎 6 æåã®å€æ å®çžŸãèšé²ãã Excel ããŒã¿ïŒãã¡ã€ã«åïŒAttendance_202306.xlsxïŒã§ãã äœæçŽåŸã®ã¬ã€ã¯ããŠã¹ã«ã¯ æ§é åããŒã¿ã管çããã Tables ãšããŒã¿ã¬ã€ã¯ã®ããã«ããŸããŸãªãœãŒã¹ãã飿ºãããçããŒã¿ã管çããã Files ãšããã»ã¯ã·ã§ã³ãçšæãããŠããŸãã ããŒã¿æ ŒçŽãããéã¯ããŒã¿ãããŒããã€ãã©ã€ã³ãå©çšããæ¹æ³ããOne Lake ã®ã·ã§ãŒãã«ããæ©èœãªã©ããŸããŸãªéžæè¢ããããŸãããä»åã¯ã·ã³ãã«ã«æåã§ã¢ããããŒãããŸããã ã¢ããããŒããå®äºãããš ããŒã¿åœ¢åŒ ã«ãã£ãŠã¯ãã¬ãã¥ãŒè¡šç€ºãå¯èœã§ããã2023 幎 7 ææç¹ã§ Excel ããŒã¿ã¯ãµããŒãå€ã®ããã§ãã ããŒãããã¯ã«ããããŒã¿ã®æŽåœ¢ çããŒã¿ã®æç¹ã§ããçšåºŠæ§é åãããŠããã°ããã®ã§ãããæ€èšŒã§æ±ã倿 ããŒã¿ã¯åæçšã«ãã©ãŒãããããããã®ã§ã¯ãªãããã 倿ãçµ±ååŠçã®åã«ããŒã¿ãæŽåœ¢ããå¿
èŠããããŸãã ããã§ãä»å㯠Spark ãšã³ãžã³ãæ¥ç¶ãããããŒãããã¯ã«ããããŒã¿ã®æŽåœ¢ã宿œããŸããã ã»ãã®éžæè¢ãšããŠããŒã¿ãããŒïŒPower QueryïŒãæ€èšããŸãããããã¡ãã¯ãã®åŸã®äœæ¥ã§ããããŒã¿ã®å€æã»å å·¥åŠçã§å©çšããŠããŸãã ããŒãããã¯ã¯ã¬ã€ã¯ããŠã¹ UI ã®ïŒ»ããŒãããã¯ãéãããäœæã§ããŸãã ããŒãããã¯ã®äœæãšåæã« Spark ãšã³ãžã³ãçšæãããããããŠãŒã¶ãŒã¯èšèªãéžæããŠåŠçãèšè¿°ããŠããã ãã§ãã ç§ã¯ Python ãéžæããŸãããããã®ä»ã« Scala / C# /R/Spark SQL ããµããŒããããŠããŸãã ããŒã¿æŽåœ¢ã®å
容ãšããŠã¯ã Excel 圢åŒã®å€æ ããŒã¿ãããå¿
èŠãªããŒã¿ãæœåºãã Python ã®ããŒã¿ãã¬ãŒã ãå©çšããŠããŒã¿ãåé
眮ããŠããŸãã æœåºããããŒã¿ã¯äžèšã®éãã§ãã æ¥ä» å€ååºåïŒåºå€/æ³å®äŒæ¥/æçµŠãªã©ïŒ å€å圢æ
ïŒåºç€Ÿ/ãã¬ã¯ãŒã¯/顧客å
ãªã©ïŒ å€åéå§æé å€åçµäºæé å€åæé äŒæ©æé ãŸããæŽåœ¢åŸã®ããŒã¿ã¯ã¬ã€ã¯ããŠã¹å
ã§ãã¬ãã¥ãŒè¡šç€ºããããã£ãã®ã§ã CSV 圢åŒã®ãã¡ã€ã«ãšã㊠Files ã»ã¯ã·ã§ã³ã«æ ŒçŽããŠããŸãã æŽåœ¢åŸã®ããŒã¿ã¯äžèšã®éãã§ãïŒãã¡ã€ã«åïŒAttendance. csv ïŒã ããŒã¿ãããŒã«ããããŒã¿ã®å€æã»å å·¥ æŽåœ¢ããããŒã¿ã«å¯ŸããŠã倿ã»å å·¥åŠçã宿œãåæã®æºåãè¡ããŸãã åè¿°ããããŒãããã¯ã§ãŸãšããŠå®æœããŠãããã£ãã®ã§ãããä»ã®æ©èœãè§Šã£ãŠã¿ãããšããæãã§ããŒã¿ãããŒã«ããäœæ¥ãšããŸããã ããŒã¿ãããŒã¯ Microsoft Fabric ã® UI ãã Data Factory ãéžæãã[Dataflow Gen2ïŒãã¬ãã¥ãŒïŒ]ããäœæã§ããŸãã äœæåŸã¯ã¬ã€ã¯ããŠã¹ã«æ ŒçŽãããŠããæŽåœ¢åŸã®å€æ ããŒã¿ïŒAttendance. csv ïŒãèªã¿èŸŒã¿ãå¿
èŠãªåŠçã宿œããŸãã ä»å宿œããäž»ãªåŠçå
容ã¯äžèšã®éãã§ãã å€åéå§/çµäºæéã®ããŒã¿åãæåååãžå€æŽãã 宿ã衚çŸããåã远å ãã å€åæéãšå®æãèšç®ããæ®æ¥æéã衚çŸããåã远å ãã å€ååºåã«äŒæ¥åºå€ãå«ãŸããå Žåã¯ãå€åæéãæ®æ¥æéãšããŠè¿œå ãã å®éã®ããŒã¿ãããŒç»é¢ã¯äžç»åã®ããã«ãªããŸãã ããŒãããã¯ãšç°ãªããã³ãŒãïŒPower QueryïŒãèšè¿°ã§ããªããšã GUI äžã®æäœã§åºæ¬çãªããŒã¿ã®å€æã»å å·¥ãå¯èœã§ãã ãã¡ãããå¿
èŠã«å¿ããŠçŽæ¥ Power Query ãæžãããšãã§ããŸãã ãŸããåŠçã®ãµããªããã€ã¢ã°ã©ã ãã¥ãŒïŒç»åå
ã®éæ éšåïŒã«èšé²ããåŠççµæã¯ç»åäžéšã«ãã¬ãã¥ãŒãããã®ã§ãåŠçã«å¯Ÿããçµæãå³æææ¡ã§ããŸãã ããŒã¿å€æãå®äºããããç»åå³äžã®ïŒ»ããŒã¿ã®åæå
ããã¬ã€ã¯ããŠã¹ãžã®åæèšå®ãè¡ãããšã§ãåæçšã«æé©åããã圢åŒã§ Tables ã»ã¯ã·ã§ã³ãžæ ŒçŽãããŸãã ãŸãããã®éã® ã¹ããŒã å®çŸ©ãããŒã¿æ§é ã®äœæãªã©ã¯ãã¹ãŠèªåã§å®æœãããŸãã ããŒã¿ãããŒããã¬ã€ã¯ããŠã¹ãžã®åæãå®äºãããšãTables ã»ã¯ã·ã§ã³ã§ããŒãã«ã®å
容ããã¬ãã¥ãŒã§ããŸãã ä»åã¯å€æåŸã®ããŒã¿ã§ããããšãæç€ºããããã«ãattendance_transform ãšããããŒãã«åãšããŸããã SQL ãšã³ããã€ã³ãã«ããåæ ããŒã¿ãããŒããåæãããããŒãã«ã«å¯ŸããŠåæã宿œããŸãã SQL ãšã³ããã€ã³ããšåŒã°ããæ©èœãå©çšããããšã§ãã¬ã€ã¯ããŠã¹å
ã®ããŒãã«ã«å¯Ÿãã SQL ã¯ãšãªçºè¡ããªã¬ãŒã·ã§ã³ã·ããã®æ§æãå¯èœã§ãã ã¬ã€ã¯ããŠã¹ã® UI ããã SQL ãšã³ããã€ã³ããžé·ç§»ããŸãã SQL ãšã³ããã€ã³ãã§ã¯ 3 ã€ã®ãã€ã³ãçšæãããŠãããããããäžèšã®äœæ¥ãå¯èœã§ãã ããŒã¿ïŒ ã¹ããŒã å®çŸ©ã«å«ãŸããã㌠ãã«ã㌠ã¿ã®ç¢ºèªã SQL ã¯ãšãªã®ç®¡ç ã¯ãšãªïŒ T-SQL ã¯ãšãªã®çºè¡ ã¢ãã«ïŒããŒãã«éã®ãªã¬ãŒã·ã§ã³ã·ããæ§æã Power BI ã«ãããã¡ãžã£ãŒã®èšå®ãå¯èœ ä»åã¯ã¯ãšãªãšã¢ãã«ã®ãã€ã³ã«ãŠãããããåæäœæ¥ã宿œããŸããã äž»ãªåæå
容ã¯äžèšã®éãã§ãã SQL ã¯ãšãªãå©çšããåæ å€åæéãæ®æ¥æéãå€ååºåãå€å圢æ
ã®éèš å€å圢æ
ã«ãããå€åç¶æ³ã®åŸååæ 1 ãæéã«ãããå€åç¶æ³ã®åŸååæ ã¢ãã« å€åæ¥ã«ãããåºç€Ÿ/ãã¬ã¯ãŒã¯ã®å²åãç®åº ä»å㯠1 ãæåã®å€æ ããŒã¿ã®ã¿ã§ãã£ããããããŸã§è€éãªåæã§ã¯ãããŸããããé¢é£ããŒã¿ã®è¿œå ãããŒã¿æéãæ¡å€§ããããšã§ããã«å
å®ããåæãå¯èœã§ãã Power BI ã¬ããŒãã®äœæ æçµå·¥çšãšããŠãåæçµæã Power BI ã§å¯èŠåããŸãã SQL ãšã³ããã€ã³ã UI ã®ïŒ»æ°ããã¬ããŒããããPower BI ã¬ããŒãã®äœæç»é¢ãžé·ç§»ããŸãã åæçµæãåæ ãã Power BI ã¬ããŒãã¯äžç»åã®éãã§ãã ã¬ããŒãå
ã®åããžã¥ã¢ã«ã§åæçµæãå¯èŠåããŠããŸãã å€åæéãšæ®æ¥æéããã³å€åæ¥ã«å¯Ÿãããã¬ã¯ãŒã¯ã®å²åãã«ãŒãäžã«ããã¹ã圢åŒã§è¡šç€º 1 ãæéã«ãããå€åæéã®æšç§»ãšå®æã«å¯Ÿããæ®æ¥æéã®æšç§»ãæ£ã°ã©ãã§è¡šç€º å€åæéãé·ãæ¥ãæéã衚圢åŒã§è¡šç€º å€å圢æ
ïŒåºç€Ÿ or ãã¬ã¯ãŒã¯ïŒã®éãã§å¹³åå€åæéã«ã©ã®ãããªåœ±é¿ããããæ£åžå³ã§è¡šç€º ãµãŒãã¹æ€èšŒçµæ 倿 ããŒã¿ã®åæã·ããªãªãéãã Microsoft Fabric ã®æ€èšŒçµæããŸãšããŸãã æ€èšŒé
ç®ã¯äžèšã®éãã§ãïŒåæ²ïŒã Microsoft Fabric ã®ã¿ã§ããŒã¿åæã äžæ°é貫 ã§å®æœã§ããã ããŒã¿åæã®çµéšãããŸããªããŠãŒã¶ãŒããµããŒãããæ©èœãçŸæç¹ã§ã©ã®çšåºŠå®è£
ãããŠããã Microsoft Fabric ã®æäœæïŒPower BI ã Data Factory ãªã©çµ±åããããµãŒãã¹ããããŸã§éãå©çšã§ãããïŒ ãã®ä»å©çšæã®æ³šæç¹ äžæ°é貫 ã®ããŒã¿åæ ããŒã¿ã®æ ŒçŽããå¯èŠåãŸã§ãã¹ãŠ Microsoft Fabric ã§å®çµã§ããŸããã åŸæ¥ã®ããã«åæããšã«çšéã«å¿ã㊠PaaS ãçµã¿åãããããã€ã³ãã©ã確ä¿ããå¿
èŠããªããçµ±äžããã UI ã®å
ã§äœæ¥ãã§ããããšã¯ã¡ãªããã§ãããšèšããŸãã ä»åã¯ããŒã«ã«ããŒã¿ãäžå¿ãšããåæã·ããªãªã§ãããã æ©æ¢°åŠç¿ ããªã¢ã«ã¿ã€ã åæãªã©å¹
åºãã·ããªãªã«å¯Ÿå¿ã§ãããµãŒãã¹ã§ãããšããå°è±¡ã§ãã äžæ¹ã§ãåæã·ããªãªã«ãã£ãŠã¯äžèŠãªæ©èœã ã³ã³ããŒãã³ã ãããããšãäºå®ã§ãã Microsoft Fabric ã®å©çšãæé©ãšãªãåæã·ããªãªã¯äœãããšããç¹ã«ã€ããŠã¯ãééé¢ãåŠç¿ã³ã¹ãã®èгç¹ãå«ããŠä»åŸã®ã¢ããããŒãã远ã£ãŠããå¿
èŠããããŸãã ããŒã¿åæã®çµéšãæµ
ããŠãŒã¶ãŒãžã®ãµããŒã ä»åã®æ€èšŒã§è§Šããæ©èœã®äžã§ã¯ãããŒã¿ãããŒã® GUI ã«ããããŒã¿å€æåŠçã¯æ¯èŒçãŠãŒã¶ãŒã«æããèšèšãšããå°è±¡ãåããŸããã ã§ããããã以å€ã®éšåã«ã€ããŠã¯ç¶ç¶çãªåŒ·åãå¿
èŠãšæããŠããŸãã Microsoft Fabric ã¯ã誰ããããŒã¿ã管çããã³åæããŠã¢ã¯ã·ã§ã³ã«ã€ãªãã ã€ã³ãµã€ã ãåŸãããããšããã³ã³ã»ãããæ²ããŠããŸãããçŸç¶ã®æ©èœæ§æã¯ããŒã¿å€æãå å·¥ã»åæçã®åŠçèšèšããŠãŒã¶ãŒã®ç¥èã«äŸåããŠããŸãã Microsoft Fabric - ããŒã¿åæ ä»åã®æ€èšŒã«ãããŠã¯ãããŒãããã¯ãå©çšããããŒã¿ã®ååŠçã SQL ãšã³ããã€ã³ãã«ããåæã§å¿
èŠãšãªãã³ãŒããã¯ãšãªã®äœæã¯ãæªçµéšã®ãŠãŒã¶ãŒã«ã¯é£æåºŠãé«ãäœæ¥ã§ãã 誰ããããŒã¿ã管çããã³åæããããã«ã¯ãã®ãããªäœæ¥ã«å¯ŸãããµããŒãæ©èœãå¿
èŠã§ãå
·äœçã«ã¯äžèšã®ãããªå
容ãæåŸ
ããŸãã Copilot æ©èœã«ããåçš®ã³ãŒããã¯ãšãªã®èªåçæ One Lake ã®ã·ã§ãŒãã«ããæ©èœåŒ·åïŒé£æºå
ã®æ¡åŒµãªã©ïŒ ããã¥ã¡ã³ãã ãã¥ãŒããªã¢ã« ã®å
å® Microsoft ã«ãããšãAzure OpenAI ãšé£æºãã Copilot æ©èœãè¿æ¥å
¬éäºå®ãšãªã£ãŠãããŸãã®ã§ããã¡ããæ³šèŠããããšæããŸãã åæ©èœã®æäœæ 䞻芳ã«ãªããŸãããæ¢åã® PaaS ã SaaS ããçµ±åãããæ©èœã«ã€ããŠã¯éåæãªãæäœã§ããŸããã ããŒãããã¯ã«ãã察話圢åŒã§ã®ããŒã¿æäœãããŒã¿ãããŒåšèŸºã®æäœã¯ãUI èªäœãçµ±åå
ã® Microsoft 補åãšå€§ããå€ãããªãããããããã®çµéšãããæ¹ã§ããã°æµæãªãå©çšã§ããããšæããŸãã ãŸãšã æ¬èšäºã§ã¯ã Microsoft Fabric ã®æŠèŠãšãµãŒãã¹æ€èšŒãšããŠå®æœãã倿 ããŒã¿åæã®å
容ã«ã€ããŠã玹ä»ããŸããã Microsoft Fabric ã¯çºè¡šãããŠéããªããœãªã¥ãŒã·ã§ã³ã§ãããããŒããããã§ã¯ä»åŸãå€ãã®ã¢ããããŒããäºå®ãããŠãããŸãã®ã§ãåŒãç¶ã泚èŠããããšæããŸãã ç§ãã¡ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãïŒ ã¯ã©ãŠãã¢ãŒããã¯ã å·çïŒ @tamura.kohei ãã¬ãã¥ãŒïŒ @yamada.y ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®è¿ã§ãã AWS ã®ãããžã¡ã³ãã³ã³ãœãŒã«ãžã®ãŠãŒã¶ãŒèªèšŒã§ã¯MFAã®å©çšãäžè¬çã«ãªã£ãŠããŸããããã¢ã¯ã»ã¹ããŒå©çšæã«MFAãå¿
é ãšããã«ã¯å°ãã³ããããã®ã§ããã®èšäºã§ãŸãšããŠã¿ãŸãã ã¡ãªã¿ã« Security Hub ã®ã³ã³ ãããŒã« IAM.19 ããã¹ãŠã® IAM ãŠãŒã¶ãŒã«å¯Ÿã㊠MFA ãæå¹ã«ããå¿
èŠããããŸãããæºããã«ã¯ããããžã¡ã³ãã³ã³ãœãŒã«ã®ãŠãŒã¶ãŒã ãã§ã¯ãªããã¢ã¯ã»ã¹ããŒã§å©çšããIAMãŠãŒã¶ãŒã«å¯ŸããŠãMFAã®èšå®ãããªããã°ãªããŸããã åæïŒIAMãŠãŒã¶ãŒã®ç¶æ
éåžžéãããªã·ãŒãã€ããŠããMFAäžèŠã§ã¢ã¯ã»ã¹ã§ããŠããŸã MFAãå¿
é ã«ããæ¹æ³1ïŒãŠãŒã¶ãŒããªã·ãŒã«æ¡ä»¶ã远å ãã MFAãå¿
é ã«ããæ¹æ³2ïŒã¹ã€ããããŒã«ãå©çšããã³ãŒãã®ååŸãç°¡åã«ãã TipsïŒOSSããŒã«AWSumeã§ç°¡åã«ã¹ã€ããããŒã« ãŸãšã åæïŒIAMãŠãŒã¶ãŒã®ç¶æ
IAMãŠãŒã¶ãŒãäœæããMFAãèšå®ããç¶æ
ãåæãšããŠããã®åŸã®è©±ãé²ããŸããïŒIAMãŠãŒã¶ãŒã»ã¢ã¯ã»ã¹ããŒãé
åžããã±ãŒã¹ã¯äºåã«MFAãèšå®ããŠããããšã¯ã§ããŸãããããã®èšäºã§ã¯å²æããŸããïŒ ãã®ãŠãŒã¶ãŒã«å¯ŸããŠã¢ã¯ã»ã¹ããŒãçºè¡ããŠãããŸãã ~/.aws/credentials ã« test-user ãšãããããã¡ã€ã«åã§ãã¢ã¯ã»ã¹ããŒãšã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒãä¿åããŠãããŸãã [test-user] aws_access_key_id = <ã¢ã¯ã»ã¹ããŒID> aws_secret_access_key = <ã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒ> region = ap-northeast-1 éåžžéãããªã·ãŒãã€ããŠããMFAäžèŠã§ã¢ã¯ã»ã¹ã§ããŠããŸã ãã®ãŠãŒã¶ãŒã«å¯ŸããŠã以äžã®ãããªããªã·ãŒãä»ããŠã¿ãŸãã ãã®èšäºã§ã¯äžè²«ã㊠ec2:DescribeRegions ãäŸãšããŠããŸãããäžè¬çãªãªãœãŒã¹ã¢ã¯ã»ã¹ã®èš±å¯ã«é©å®çœ®ãæããŠèããŠãã ããã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } ãã®ãŠãŒã¶ãŒãå©çšã DescribeRegions API ãã³ãŒã«ãããšãMFAãèšå®ããŠããã«ãé¢ããããMFAã³ãŒããå
¥åããªããŠãã¢ã¯ã»ã¹ãæåããŠããŸããŸããã Security Hub ã®IAM.19ã³ã³ ãããŒã« ãã¯ãªã¢ããã ãã§ããã°ããã®ããã«MFAãæå¹ã«ããã ãã§è¯ãã®ã§ãããããã ãšMFAãå©çšããªããŠãæš©éã䜿çšã§ããŠããŸããŸãããã£ããMFAãæå¹ã«ããã®ã§ããããMFAãå©çšããªããš API ã¢ã¯ã»ã¹ã§ããªãããã«ãã£ã¡ãèšå®ãããã§ããã MFAãå¿
é ã«ããæ¹æ³1ïŒãŠãŒã¶ãŒããªã·ãŒã«æ¡ä»¶ã远å ãã MFAã®å©çšãå¿
é ãšããæ¹æ³ã®1ã€ç®ãšããŠãIAMãŠãŒã¶ãŒã®ããªã·ãŒã次ã®ããã«æžãæããŸãã Condition å¥ã远å ãã aws:MultiFactorAuthPresent ãå©çšããŠMFAãè¡ã£ãããšãæ¡ä»¶ãšããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } åã³ DescribeRegions API ãã³ãŒã«ãããšãMFAãå©çšããŠããªãã®ã§ä»åºŠã¯ã¡ãããšãšã©ãŒãšãªããŸãã MFAãå©çšããããã«ã¯ STS ã® GetSessionToken API ãåŒã³åºããäžæçãªèªèšŒæ
å ±ãååŸããŸãã ãã®ãšã --serial-number ãªãã·ã§ã³ã«ã¯èšå®ãã MFA ã ãã€ã¹ ã®èå¥åïŒARNïŒãã --token-code ã«ã¯MFA ããŒã¯ ã³ãæå®ããŸãã çºè¡ãããäžæçãªèªèšŒæ
å ±ã䜿çšããããã« ~/.aws/credentials ã«æ°ãããããã¡ã€ã«ãäœæããŠãè¯ãã§ãããããã§ã¯ã·ã³ãã«ã« ç°å¢å€æ° ã«èšå®ããŸãã ( ç°å¢å€æ° ã«èšå®ããã AWS èªèšŒæ
å ±ã¯ã èªèšŒæ
å ±ãã¡ã€ã«ãããåªå
ãããŸã ã) ãã㊠ç°å¢å€æ° ã«èšå®ããèªèšŒæ
å ±ãå©çšããŠãããããã«ã AWS CLI ã® --profile ãªãã·ã§ã³ãã€ããã« DescribeRegions API ãã³ãŒã«ãããšãåã³ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã 以äžã®æ¹æ³ã§MFAã®å©çšãå¿
é ã«ã¯ã§ããŸãããã GetSessionToken API ãåŒã³åºããŠäžæçãªèªèšŒæ
å ±ãååŸãã ååŸããèªèšŒæ
å ±ãå©çšããããã«èšå®ãã ãšãã£ãæéãããã£ãŠããŸããŸãã MFAãå¿
é ã«ããæ¹æ³2ïŒã¹ã€ããããŒã«ãå©çšããã³ãŒãã®ååŸãç°¡åã«ãã äžã§èª¬æããæéãçãããã«ãã¹ã€ããããŒã«ãå©çšããŠMFAã匷å¶ããæ¹æ³ããããŸãã IAMããŒã«ã1ã€äœæããŸãã ä¿¡é Œããªã·ãŒ ã§ã¯åãã¢ã«ãŠã³ãããã® AssumeRole ãèš±å¯ãããšåæã«ã aws:MultiFactorAuthPresent ãå©çšããŠMFAãè¡ã£ãããšãæ¡ä»¶ãšããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Principal ": { " AWS ": " arn:aws:iam::<ã¢ã«ãŠã³ãID>:root " } , " Action ": " sts:AssumeRole ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } ãã®ããŒã«ã® èš±å¯ããªã·ãŒ ã¯ãäžã§äœæãããŠãŒã¶ãŒãšåããšããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } ãããŠå
ã®IAMãŠãŒã¶ãŒã®èš±å¯ããªã·ãŒãã DescribeRegions ã®èš±å¯ãé€å€ããäœæãã IAMããŒã«ãžã® AssumeRole ã®ã¿ãèš±å¯ããŸããïŒ aws:MultiFactorAuthPresent ã®æ¡ä»¶ãäžèŠã§ããïŒ { " Version ": " 2012-10-17 ", " Statement ": [ { " Action ": " sts:AssumeRole ", " Resource ": " arn:aws:iam::<ã¢ã«ãŠã³ãID>:role/<ããŒã«å> ", " Effect ": " Allow " } ] } ã¹ã€ããããŒã«ãç°¡åã«ããããã«ã ~/.aws/config ã«ä»¥äžã®ããã«è¿œèšããŸãã [profile test-user] ã®éšå㯠~/.aws/credentials ã«èšèŒãããããã¡ã€ã«å test-user ãšååãåãããå¿
èŠããããŸãã [profile test-user] region = ap-northeast-1 [profile my-test-role] region = ap-northeast-1 source_profile = test-user role_arn = arn:aws:iam::<ã¢ã«ãŠã³ãID>:role/<ã¹ã€ããããŒã«çšã®ããŒã«å> mfa_serial = arn:aws:iam::<ã¢ã«ãŠã³ãID>:mfa/<ããã€ã¹å> DescribeRegions API ãåŒã³åºãæã«ãã¹ã€ããããŒã«ããå
ã®ãããã¡ã€ã«åïŒããã§ã¯ my-test-role ïŒãæå®ãããšããã®ãŸãŸMFAã³ãŒããå°ããããŸããå
¥åãããš API å®è¡ãæåããŸãã ãã®æ¹æ³ã®è¯ããšããã¯ãå®è¡ããã API ããã®ãŸãŸã³ãŒã«ããã°ãããã ãã€ã¹ ã®èå¥åïŒARNïŒã ~/.aws/config ã«ãããããä¿åããŠããã®ã§æ¯åå
¥åããå¿
èŠããªãããšã§ãã TipsïŒ OSS ããŒã«AWSumeã§ç°¡åã«ã¹ã€ããããŒã« MFAã匷å¶ããã¹ã€ããããŒã«ãç°¡åã«ããããŒã«ãšããŠã OSS ã® AWSume ãããããã§ãã å¿
èŠãªããŒã«ã»ããªã·ãŒæ§æã¯ãæ¹æ³2ããšåãã§ãããŒã«ã«ã§ AWS SDK ãå©çšããæã«ãäžæçãªã¯ã¬ãã³ã·ã£ã«æ
å ±ãç°¡åãªã³ãã³ãã§ã»ããã¢ããã§ãããããã®ã§äŸ¿å©ã§ãã ã»ããã¢ãã åŸã awsume <ãããã¡ã€ã«å> ã§äžæçãªèªèšŒæ
å ±ãååŸã§ããMFAãå¿
èŠãªå Žåã¯ããã§å°ããããŸãããã®ããšã¯ãäžæçãªèªèšŒæ
å ±ãå©çšã㊠API ã³ãŒã«ã§ããããã«ãªããŸãã ãŸãšã ãããŸã§èª¬æãããã¿ãŒã³ãå³ã«ãŸãšããŠã¿ãŸããã IAMã¢ã¯ã»ã¹ããŒã¯æŒããããªãããã«çްå¿ã®æ³šæãæãããšã倧åæã§ãããäžãäžæŒãããããšããŠãããã«äœ¿ããªãããã«ãMFAã§äºéã®ã¬ãŒããããŠãããŸãããã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžã㢠å·çïŒ @kou.kinyo ãã¬ãã¥ãŒïŒ 寺山 èŒ (@terayama.akira) ïŒ Shodo ã§å·çãããŸãã ïŒ
ããã«ã¡ã¯ãXïŒã¯ãã¹ïŒ ã€ãããŒã·ã§ã³ æ¬éš ãœãããŠã§ã¢ãã¶ã€ã³ã»ã³ã¿ãŒ ã»ãã¥ãªãã£ã°ã«ãŒãã®è¿ã§ãã AWS ã®ãããžã¡ã³ãã³ã³ãœãŒã«ãžã®ãŠãŒã¶ãŒèªèšŒã§ã¯MFAã®å©çšãäžè¬çã«ãªã£ãŠããŸããããã¢ã¯ã»ã¹ããŒå©çšæã«MFAãå¿
é ãšããã«ã¯å°ãã³ããããã®ã§ããã®èšäºã§ãŸãšããŠã¿ãŸãã ã¡ãªã¿ã« Security Hub ã®ã³ã³ ãããŒã« IAM.19 ããã¹ãŠã® IAM ãŠãŒã¶ãŒã«å¯Ÿã㊠MFA ãæå¹ã«ããå¿
èŠããããŸãããæºããã«ã¯ããããžã¡ã³ãã³ã³ãœãŒã«ã®ãŠãŒã¶ãŒã ãã§ã¯ãªããã¢ã¯ã»ã¹ããŒã§å©çšããIAMãŠãŒã¶ãŒã«å¯ŸããŠãMFAã®èšå®ãããªããã°ãªããŸããã åæïŒIAMãŠãŒã¶ãŒã®ç¶æ
éåžžéãããªã·ãŒãã€ããŠããMFAäžèŠã§ã¢ã¯ã»ã¹ã§ããŠããŸã MFAãå¿
é ã«ããæ¹æ³1ïŒãŠãŒã¶ãŒããªã·ãŒã«æ¡ä»¶ã远å ãã MFAãå¿
é ã«ããæ¹æ³2ïŒã¹ã€ããããŒã«ãå©çšããã³ãŒãã®ååŸãç°¡åã«ãã TipsïŒOSSããŒã«AWSumeã§ç°¡åã«ã¹ã€ããããŒã« ãŸãšã åæïŒIAMãŠãŒã¶ãŒã®ç¶æ
IAMãŠãŒã¶ãŒãäœæããMFAãèšå®ããç¶æ
ãåæãšããŠããã®åŸã®è©±ãé²ããŸããïŒIAMãŠãŒã¶ãŒã»ã¢ã¯ã»ã¹ããŒãé
åžããã±ãŒã¹ã¯äºåã«MFAãèšå®ããŠããããšã¯ã§ããŸãããããã®èšäºã§ã¯å²æããŸããïŒ ãã®ãŠãŒã¶ãŒã«å¯ŸããŠã¢ã¯ã»ã¹ããŒãçºè¡ããŠãããŸãã ~/.aws/credentials ã« test-user ãšãããããã¡ã€ã«åã§ãã¢ã¯ã»ã¹ããŒãšã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒãä¿åããŠãããŸãã [test-user] aws_access_key_id = <ã¢ã¯ã»ã¹ããŒID> aws_secret_access_key = <ã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒ> region = ap-northeast-1 éåžžéãããªã·ãŒãã€ããŠããMFAäžèŠã§ã¢ã¯ã»ã¹ã§ããŠããŸã ãã®ãŠãŒã¶ãŒã«å¯ŸããŠã以äžã®ãããªããªã·ãŒãä»ããŠã¿ãŸãã ãã®èšäºã§ã¯äžè²«ã㊠ec2:DescribeRegions ãäŸãšããŠããŸãããäžè¬çãªãªãœãŒã¹ã¢ã¯ã»ã¹ã®èš±å¯ã«é©å®çœ®ãæããŠèããŠãã ããã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } ãã®ãŠãŒã¶ãŒãå©çšã DescribeRegions API ãã³ãŒã«ãããšãMFAãèšå®ããŠããã«ãé¢ããããMFAã³ãŒããå
¥åããªããŠãã¢ã¯ã»ã¹ãæåããŠããŸããŸããã Security Hub ã®IAM.19ã³ã³ ãããŒã« ãã¯ãªã¢ããã ãã§ããã°ããã®ããã«MFAãæå¹ã«ããã ãã§è¯ãã®ã§ãããããã ãšMFAãå©çšããªããŠãæš©éã䜿çšã§ããŠããŸããŸãããã£ããMFAãæå¹ã«ããã®ã§ããããMFAãå©çšããªããš API ã¢ã¯ã»ã¹ã§ããªãããã«ãã£ã¡ãèšå®ãããã§ããã MFAãå¿
é ã«ããæ¹æ³1ïŒãŠãŒã¶ãŒããªã·ãŒã«æ¡ä»¶ã远å ãã MFAã®å©çšãå¿
é ãšããæ¹æ³ã®1ã€ç®ãšããŠãIAMãŠãŒã¶ãŒã®ããªã·ãŒã次ã®ããã«æžãæããŸãã Condition å¥ã远å ãã aws:MultiFactorAuthPresent ãå©çšããŠMFAãè¡ã£ãããšãæ¡ä»¶ãšããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } åã³ DescribeRegions API ãã³ãŒã«ãããšãMFAãå©çšããŠããªãã®ã§ä»åºŠã¯ã¡ãããšãšã©ãŒãšãªããŸãã MFAãå©çšããããã«ã¯ STS ã® GetSessionToken API ãåŒã³åºããäžæçãªèªèšŒæ
å ±ãååŸããŸãã ãã®ãšã --serial-number ãªãã·ã§ã³ã«ã¯èšå®ãã MFA ã ãã€ã¹ ã®èå¥åïŒARNïŒãã --token-code ã«ã¯MFA ããŒã¯ ã³ãæå®ããŸãã çºè¡ãããäžæçãªèªèšŒæ
å ±ã䜿çšããããã« ~/.aws/credentials ã«æ°ãããããã¡ã€ã«ãäœæããŠãè¯ãã§ãããããã§ã¯ã·ã³ãã«ã« ç°å¢å€æ° ã«èšå®ããŸãã ( ç°å¢å€æ° ã«èšå®ããã AWS èªèšŒæ
å ±ã¯ã èªèšŒæ
å ±ãã¡ã€ã«ãããåªå
ãããŸã ã) ãã㊠ç°å¢å€æ° ã«èšå®ããèªèšŒæ
å ±ãå©çšããŠãããããã«ã AWS CLI ã® --profile ãªãã·ã§ã³ãã€ããã« DescribeRegions API ãã³ãŒã«ãããšãåã³ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã 以äžã®æ¹æ³ã§MFAã®å©çšãå¿
é ã«ã¯ã§ããŸãããã GetSessionToken API ãåŒã³åºããŠäžæçãªèªèšŒæ
å ±ãååŸãã ååŸããèªèšŒæ
å ±ãå©çšããããã«èšå®ãã ãšãã£ãæéãããã£ãŠããŸããŸãã MFAãå¿
é ã«ããæ¹æ³2ïŒã¹ã€ããããŒã«ãå©çšããã³ãŒãã®ååŸãç°¡åã«ãã äžã§èª¬æããæéãçãããã«ãã¹ã€ããããŒã«ãå©çšããŠMFAã匷å¶ããæ¹æ³ããããŸãã IAMããŒã«ã1ã€äœæããŸãã ä¿¡é Œããªã·ãŒ ã§ã¯åãã¢ã«ãŠã³ãããã® AssumeRole ãèš±å¯ãããšåæã«ã aws:MultiFactorAuthPresent ãå©çšããŠMFAãè¡ã£ãããšãæ¡ä»¶ãšããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Principal ": { " AWS ": " arn:aws:iam::<ã¢ã«ãŠã³ãID>:root " } , " Action ": " sts:AssumeRole ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } ãã®ããŒã«ã® èš±å¯ããªã·ãŒ ã¯ãäžã§äœæãããŠãŒã¶ãŒãšåããšããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } ãããŠå
ã®IAMãŠãŒã¶ãŒã®èš±å¯ããªã·ãŒãã DescribeRegions ã®èš±å¯ãé€å€ããäœæãã IAMããŒã«ãžã® AssumeRole ã®ã¿ãèš±å¯ããŸããïŒ aws:MultiFactorAuthPresent ã®æ¡ä»¶ãäžèŠã§ããïŒ { " Version ": " 2012-10-17 ", " Statement ": [ { " Action ": " sts:AssumeRole ", " Resource ": " arn:aws:iam::<ã¢ã«ãŠã³ãID>:role/<ããŒã«å> ", " Effect ": " Allow " } ] } ã¹ã€ããããŒã«ãç°¡åã«ããããã«ã ~/.aws/config ã«ä»¥äžã®ããã«è¿œèšããŸãã [profile test-user] ã®éšå㯠~/.aws/credentials ã«èšèŒãããããã¡ã€ã«å test-user ãšååãåãããå¿
èŠããããŸãã [profile test-user] region = ap-northeast-1 [profile my-test-role] region = ap-northeast-1 source_profile = test-user role_arn = arn:aws:iam::<ã¢ã«ãŠã³ãID>:role/<ã¹ã€ããããŒã«çšã®ããŒã«å> mfa_serial = arn:aws:iam::<ã¢ã«ãŠã³ãID>:mfa/<ããã€ã¹å> DescribeRegions API ãåŒã³åºãæã«ãã¹ã€ããããŒã«ããå
ã®ãããã¡ã€ã«åïŒããã§ã¯ my-test-role ïŒãæå®ãããšããã®ãŸãŸMFAã³ãŒããå°ããããŸããå
¥åãããš API å®è¡ãæåããŸãã ãã®æ¹æ³ã®è¯ããšããã¯ãå®è¡ããã API ããã®ãŸãŸã³ãŒã«ããã°ãããã ãã€ã¹ ã®èå¥åïŒARNïŒã ~/.aws/config ã«ãããããä¿åããŠããã®ã§æ¯åå
¥åããå¿
èŠããªãããšã§ãã TipsïŒ OSS ããŒã«AWSumeã§ç°¡åã«ã¹ã€ããããŒã« MFAã匷å¶ããã¹ã€ããããŒã«ãç°¡åã«ããããŒã«ãšããŠã OSS ã® AWSume ãããããã§ãã å¿
èŠãªããŒã«ã»ããªã·ãŒæ§æã¯ãæ¹æ³2ããšåãã§ãããŒã«ã«ã§ AWS SDK ãå©çšããæã«ãäžæçãªã¯ã¬ãã³ã·ã£ã«æ
å ±ãç°¡åãªã³ãã³ãã§ã»ããã¢ããã§ãããããã®ã§äŸ¿å©ã§ãã ã»ããã¢ãã åŸã awsume <ãããã¡ã€ã«å> ã§äžæçãªèªèšŒæ
å ±ãååŸã§ããMFAãå¿
èŠãªå Žåã¯ããã§å°ããããŸãããã®ããšã¯ãäžæçãªèªèšŒæ
å ±ãå©çšã㊠API ã³ãŒã«ã§ããããã«ãªããŸãã ãŸãšã ãããŸã§èª¬æãããã¿ãŒã³ãå³ã«ãŸãšããŠã¿ãŸããã IAMã¢ã¯ã»ã¹ããŒã¯æŒããããªãããã«çްå¿ã®æ³šæãæãããšã倧åæã§ãããäžãäžæŒãããããšããŠãããã«äœ¿ããªãããã«ãMFAã§äºéã®ã¬ãŒããããŠãããŸãããã ç§ãã¡ã¯åãããŒã ã§åããŠããã仲éã倧åéããŠããŸãïŒããããã®ãå¿åããåŸ
ã¡ããŠããŸãã ã»ãã¥ãªãã£ãšã³ãžã㢠å·çïŒ @kou.kinyo ãã¬ãã¥ãŒïŒ 寺山 èŒ (@terayama.akira) ïŒ Shodo ã§å·çãããŸãã ïŒ