Who I am ã¿ãªããŸã¯ãããŸããŠã2025幎6æããAnalytics&Innovationæšé²éšïŒéç§°A&IïŒã«å
¥ããŸããäºæãšç³ããŸãã è©æžãšããŠã¯ããŒã¿ãµã€ãšã³ãã£ã¹ããšãããããã§ä»äºãããŠããŠãããŸããçµ±èšåæãèªç¶èšèªåŠçã«ããããåŠåé åãä¿®ããŠç€ŸäŒã«åºãããšãããŒã¿ãéãããšããããããããå å·¥ããåæãè¡ãã¢ãã«ã«ãããŸã§å¹
åºãããŒã¿åšãã«é¢ãããä»äºã«é¢ãã£ãŠããŸãããéå»ã«ã¯ECãµã€ãã®åæåºç€æ§ç¯ãšåææ¥åãçŽè¿åè·ã§ã¯ç€Ÿå
ã€ã³ãã©ããŒã¿ã®åæåºç€æ§ç¯ããããçšããããŒã¿å©æŽ»çšæšé²æ¥åãæ©æ¢°åŠç¿ãçšãããšã³ãžãã¢HRæ¥ã®æ¥åãããã³ã°ã·ã¹ãã ã®æ§ç¯ãªã©ã«æºãã£ãŠããŠãããŸããã When I decided to change åè·ã§ã®ä»äºã¯ãããããããç¹ã«å€§ããªäžæºããªãã£ãã®ã§ãããé¢ãã£ãŠãããããžã§ã¯ããèœã¡çããã¿ã€ãã³ã°ã§å
ã®ããšããŒãããèããããã«ãªããŸãããç§ã¯å€§åŠã«ããæéãé·ãã£ãé¢ä¿ã§ã瀟äŒäººçµéšã§èšããšå幎代åäžä»£ã®äººãã¡ãšæ¯ã¹ããšãããŸã§å€ããªããã§ãããºãŒãºãŒã§ãããºãŒãºãŒãªã®ã§ããã瀟äŒäººçµéšã®é·ãã«ãããããçå¹³çã«å¹Žããšã£ãŠãããŸããç§ã®æ®ãã®ç€ŸäŒäººäººçã¯ãããŸã§é·ããªããç°å¢ãå€ãããªãããããæåŸããªã£ãŠããæãããç§ã®èäžãæŒããŸããã Why Iâm here Motivation ç°å¢ãå€ãããšããŠäœããããïŒ ããã«ã€ããŠã¯ç§ã¯ã²ãšã€ããã€ãå»çãä»è·ã«é¢ãã人éã®ããã®ä»äºã«èªåã®èœåã圹ç«ãŠãŠã¿ãããšããæ¹åæ§ãæã£ãŠããŸãããäººéæ³ãåã£ãŠãããšãèªåãå®¶æãå»çä»è·ã®ãäžè©±ã«ãªãæ©äŒãå¢ããŠããŸããç§ããã®äŸã«æŒããå®¶æãéåãšãäžè©±ã«ãªãçµéšããããŸããããããŠç§ãã¡ã¯å€§å€å¹žéãªããšã«çŽ æŽãããæ¹ãæ
åœãããŠãã ãããé Œãããæ³ããå®å µãæããããšãããèŠããŠããŸããããã¯ãæ
åœããŠãã ãã£ãæ¹ã®æèœã¯ãã¡ããã®ããšããã®è·æãçŸå Žã«ãããŠãŸãã«é©æé©æã ã£ããããããªã®ã ãšç§ã¯æã£ãŠããŸãã驿驿ã£ãŠããã®ã¯ãé£ããåé¡ã§ããããã§ãã驿驿ã«ãªã確çãå°ãã§ãé«ããããšã¯ã§ããªããããããŠç§ãã¡ã®ãããªæ³ãããã人ãäžäººã§ãå€ãã§ããããã«èªåã®èœåãæŽ»ãããªãããšããæ°æã¡ãé·ããæ±ããŠãããŸããã çè·ä»è·ã®äººæãããã³ã°ãæ±ã®äžã€ãšãããšã¹ã»ãšã ã»ãšã¹ã¯ãç§ã®ãã£ã¬ã³ãžã®èå°ãšããŠã¯ãŸãã«çæ³çã§ããã The Determinants ãã¡ããçè·ä»è·ã®ãããã³ã°ãæäŸããäŒç€Ÿã¯ä»ã«ããããŸãããã®äžã§ãç§ããšã¹ã»ãšã ã»ãšã¹ãéžãã èŠå ãä»äžçæžåœæãåºããŠã¿ããšãããããããŸãããããããããŸãããåžžã«ã±ã£ãšæãæµ®ãã¶ã®ã¯ä»¥äžã®2ç¹ãã©ã¡ããå
šç¶ããžã«ã«ã§ã¯ãªãããããæèŠçãªã®ã§ããããŸããæææ±ºå®ãªããŠãããªãã®ã§ãããã â éžãã§ããããŠèªãããã£ã 転è·ãããã«ããã£ãŠããã¡ããåè£ãšãªãäŒæ¥ã¯ãããã調ã¹ãŸããäŒæ¥HPãã¿ããã転è·ãµã€ãã®å£ã³ãèŠãã瀟å¡ã®ã¿ãªããããã£ãŠããããã°ãèªãã ãããšã¹ã»ãšã ã»ãšã¹ããç§ãç®æããããŽãŒã«ã¯åå
šã«å
±æã§ãããã®ã®ãããã«åãããäžç·ã«åãæ¹ã
ã¯ã©ããã人éãªãã ããã£ãŠããããšãæ°ã«ãªã£ãŠã ãã¶èª¿ã¹ãŸããããšã¹ã»ãšã ã»ãšã¹ã®çããããšã³ãžãã¢ã¯ãã¡ãããã£ãªã¢ããŒãããŒãšããŠåã人ãã¿ãªå¿ãé«ãå®åè
ããããçããã¬ãã«ãé«ããã ãªç§ã®åãéçšããããªã£ãŠå°ãäžå®ã«ãªãã»ã©ãéžèãç·åŒµã®é£ç¶ãå·ãæ±ã ãã ããããã§ãç¡äºã«å
å®ãããã ãããã®åŸåã³å
éšã®ã¿ãªãããšã話ãããæ©äŒã«ãŠæ¹ããŠå¿ã®é«ãã確èªããã®ãããªæ¹ã
ã«éžãã§ããã ããããšã倧å€ã«èªãããæããå
¥ç€Ÿã®æ±ºãæã®äžã€ãšãªããŸããã ã ããä»ãç§ããããèªãããæ°æã¡ã§åããŠããŸãã â¡ ç°èŸºãã æ¬éšé·ã®ç°èŸºãããäžæ¬¡é¢æ¥ãæ
åœããŠãããŸãããç§ãããããã¡ããã¡ãç·åŒµããŠãããã§ããããªã³ã©ã€ã³ã ãã©ã¡ãããšã¹ãŒãçãŠãã¡ãããš3ååãããã«ã¯å
¥å®€ããŠèšãããšæã£ãŠããããšãã€ã£ãããã«èšããããªã£ãŠé ã®äžã§äœåºŠããªããŒãµã«ããŠã ãããŠã€ãã«ç»å Žããç°èŸºãããç§ãäºåã«æ³åããŠãããæ¬éšé·ã®ç°èŸºããããšã¯éåç°ãªãããªãã§ããããã«ãžã¥ã¢ã«ãšããããç»å Žãããªãç§ã®ç·åŒµãå¯ããŠãã2ã3èšããšã°ããããŠããã ããŠãç§ãç·åŒµããŠããã®ã§ããŸãèŠããŠããªãã®ã§ããããã®èšèã§è©ã®åãæããæ°ãããŠã ãªãã§ããããã颿¥ã«ã¯é¢ä¿ã®ãªãã»ãã®ããããªèšèã ã£ãããããŸæãåºããŠããã®äŒè©±ã«ã©ããªæ
å ±éãè©°ãŸã£ãŠãããæªã ã«ããããªããã§ãããã§ãããã®ç¬éã«ãããããã§ãã£ããåããããç°èŸºãããšãã£ããã«åãããã£ãŠæããã ãã人éã£ãŠäžæè°ã§ããããæ¬è³ªçã«ã¯ããžã«ã«ãªçç©ã§ã¯ãªããã§ããããã人éã çµå±â ãâ¡ãæ ¹åºã¯äŒŒãŠããã®ããªããããªã£ãŠæã£ãæ¹ã
ã«éžãã§ããã ãããããããããèªãããã§ããä»ãã What Iâm doing now ããã€ãã®æ¥åãæ
åœãããŠããã ããŠãããŸãããã¡ã€ã³ã¯ãã£ãªã¢ããŒãããŒåãã®ãµãŒãã¹æ¹åã§ãããã£ãªã¢ããŒãããŒã®ã¿ãªãããçŸåšå©çšããŠãããæ±è·è
ãšã®ãã©ã³ã¶ã¯ã·ã§ã³ã管çããã·ã¹ãã ããããæ©èœçã«ã¹ã±ãŒã©ãã«ã§äœ¿ãããããã®ãžãšå·æ°ããäžã§ãç§ã¯ç¹ã«ãæ±è·è
ãšäºæ¥è
ã®ãããã³ã°ç¢ºçãèšç®ããŠãªã³ã¡ã³ããçæããéšåã§é¢ããããŠããã£ãŠããŸãã äžè¬çãªãããã³ã°ãããã¯ãªã³ã¡ã³ãã®ææ³ã¯èšãã«åã°ããHRé åã«ãããŠããåœå
æµ·å€ãèŠæž¡ããŠã¿ããšçãã«ææ³ãææ¡ãããŠããŠããŸãããã ãããŒã¿ã®æã¡æ¹ãååŸã§ããããŒã¿ã®æ§è³ªã¯ããžãã¹ã®ã¹ã¿ã€ã«ã«ãã£ãŠå€§ããå€ãããŸããä»äžçªå¹æçã ãšè¬³ã£ãææ³ãæ¡çšããæå
ã®ããŒã¿ã«é©çšããããšããŠããã£ã±ããšããããšã¯ããã§ãããšãããç§éã®å Žåããããã³ã°ã«éããŠéã«ãã£ãªã¢ããŒãããŒãšãã人éãä»åšãããã£ãªã¢ããŒãããŒã®æ
å ±ãå©çšããå¿
èŠããããŸãããããããšå顿§é ããç ç©¶ãçãã«è¡ãããŠããåçŽãªResume-Jobãããã³ã°ãšå€§ããç°ãªã£ãŠããŸããæ¢åã®æè¡ã ãã§ã¯ã©ãã«ããªããªããããšå°ãäžå®ã¯ãããŸããããã§ããã®ãã£ã¬ã³ãžã³ã°ãªèª²é¡ã«å€§ããªãããããèŠåºããŠããããªããšãã¯ãªã¢ããããšå¥®éäžã§ãã Where I want to go ãé«éœ¢ç€ŸäŒã«é©ããæ
å ±ã€ã³ãã©ãæ§ç¯ããããšã§äººã
ã®ç掻ã®è³ªãåäžãã瀟äŒã«è²¢ç®ãç¶ããããããšã¹ã»ãšã ã»ãšã¹ã®ããã·ã§ã³ã§ãã ç§ã¯ããã«å
±æããŠå
¥ç€ŸããŠããŸããã ãããç§ã®å€§ããªç®æšã¯ãã äžã€ãèªåãå®å¹Žã«ãªã£ãŠéè·ãããããŠé«éœ¢ç€ŸäŒã®äžå¡ã«ãªã£ããšãããããŠç€ŸäŒãèŠæž¡ãããšãã«ããããšã¹ã»ãšã ã»ãšã¹ã§é 匵ã£ãŠããã£ããªãã£ãŠæããããã«ãããšããããšã§ããäžéã®å ±ãããæ¹ãããããšãç¹ã«è¥å¹Žå±€ã®äººããèŠããšãé«éœ¢ç€ŸäŒãšããã®ã¯äžçš®ã®ãã£ã¹ããã¢ã®ããã«èŠããŠããŸã£ãŠãããããããŸããã倧ããªéè·ã«èŠããŠãããããããŸããã確ãã«ããããããšãã§ãããä»äººã®äžè©±ãããªããŠã¯ãããªãäžçãšããã®ã¯æãããšã¯èšããŸããããã ãé«éœ¢è
ãããŠããã®é«éœ¢è
ã®åšãã«ã¯åã
ã®åã驿驿ã§çºæ®ã§ããå Žæãååšããã®ã ãšãããããã®ç€ŸäŒã¯éè·ã§ãããããããããã®ãã瀟äŒãšã¯èšããªãã§ãããããç§ã¯ãããã瀟äŒã«ãªãããè²¢ç®ããããšæã£ãŠããŸãã ãšã¯ããã¡ãã£ãšæŒ ç¶ãšããããç®æšãªã®ã§ãããã¡ããèªåã®èœåã«åŒãå¯ããç®æšãç«ãŠããšããŸãã¯äžè¿°ãããããã³ã°èšç®ã®ã¢ã«ãŽãªãºã ãæªèžãªéšåãå€ãã§ãããããéããããšæã£ãŠããŸãããããŠéçšã§åŸãããæ§ã
ãªç¥èŠã«ã€ããŠã¯ãã§ããéãçºä¿¡ããŠãããããšæã£ãŠããŸããå°åé«éœ¢åã¯ãé ãã¯ã€ã¿ãªã¢ãè¿ãã¯ãé£éåœãªã©ãæ¥æ¬ä»¥å€ã®æ§ã
ãªåœã§ãåé¡ã«ãªã£ãŠããŠããäžçã®å«ç·ã®èª²é¡ã§ããæ¥æ¬ã®ã¿ãªããäžçã®äººã
ãšç¥èãã·ã§ã¢ãããããã解決çãçã§æ€èšã§ããããã«ãªããããšæã£ãŠãããŸãã How Iâll get there ãªãããããããªããšãå»¶ã
æžããŠããŠããŸããŸããããç§ã®åã¯ãŸã ãŸã è¶³ããŸãããå
šç¶è¶³ããŸããããšããããšå®å¹Žéè·ã®åœæ¥ãŸã§æé·ããªããŠã¯ãããªããããè¶³ããªããããããŸããã ã ãã¶é·ãçããŠããŠããããããšèªåã®èœåã«ã€ããŠãã ãã¶ææ¡ã§ããŠããã®ã§ãããèªåã¯å°ããªé ã«ä¿¡ããŠããã»ã©ã®ã¹ãŒããŒãã³ã«ã¯ãªããŸããã§ããããããã¡ãã£ãšã®ã¹ãŒããŒãã³ã«ããªããŠããŸããã誰ãã1åã§ã§ããããšã¯ãç§ã¯3åããããŸããããŸæžããŠããŠæããŸããããã¹ãŒããŒãã³ãšãæã¡åºããŸãããæ¬åœã¯ã©ããããã®ãããããŸãããããããªããçããŸããã ãã å°ãªããšãã¹ãŒããŒãã³ã§ã¯ãªãç§ã3åç¹°ãè¿ãããšã¯ã§ãããã§ãã3åã§ã§ããªããŠã5åç¹°ãè¿ãããšã¯ã§ãããã§ãããã®æèœã¯å¿ããèŠªã«æè¬ããŠããŸããç§ã®åº§å³ã®éã¯æ¬åœã«ææ¬¡ã§é³è
ã ãšæãã®ã§ãããç¶ç¶ã¯åãã§ããããã¯æ¬åœããããŠç§ã®å¯äžã®æŠåšã§ãã é«ãæ²ããç®æšã1åææŠããŠã ããªã10åãããŸãããã€ããã£ãšã§ããŸãããã€ããã£ãšã§ãããã ãã©ãããããããããã¯å®å¹Žã®æ¥ãè¶
ãã¡ãããããããªããéã«åããªããããããªãããŸãã§ãããããªãã£ãŠéžæè¢ã¯ãªãã§ããããèªãããã£ãŠãé²ãã§ãããŸãïŒ
ããã«ã¡ã¯ãã«ã€ãã±ã®éçºçµç¹è²¬ä»»è
ã®é
äº ( @_atsushisakai )ã§ãã äºæ¥äŒç€Ÿã§åããœãããŠã§ã¢ãšã³ãžãã¢ãç¹ã«ãããã¯ãéçºã«é¢ãã人ã«ãšã£ãŠãå人ã®ç®æšèšå®ã«é¢ããæ©ã¿ã¯ãã話é¡ã«äžããããŒãã§ãããã©ãç«ãŠãã°ããã®ãããããªãããç«ãŠãã¯ãããã®ã®åœ¢éªžåããŠããŸãããç®æšãéæããŠãæã£ãããã«è©äŸ¡ãããªãããšãã£ãæ©ã¿ãèãããšãå€ããããŸãã 以åãç§èªèº«ã®ç®æšèšå®ã®èãæ¹ã瀟å
ã§ãŸãšãããšããåå¿ãããã£ãããšããããæ¹ããŠãç®æšããšãè©äŸ¡ãã®é¢ä¿æ§ãæŽçãã圢骞åãã«ãããææãšæé·ã«ã€ãªããç®æšèšå®ã®èãæ¹ã玹ä»ããããšæããŸãã ç®æšèšå®ã«é¢ããããããæ©ã¿ ãããŸã§è€æ°ç€Ÿã§äž»ã«ãšã³ãžãã¢ã®ãããžã¡ã³ãããã£ãŠããŠãç®æšèšå®ãé£ãããšæããçç±ã«ã¯ããã€ãã®å
±éç¹ãããããã«æããŠããŸãã 圢ã ãç«ãŠãŠçµãã ãšããããäœããæžããªããšãããªããããç¡é£ãªå
容ã«ããŠããŸãã éæããŠãè©äŸ¡ãæãéãã«ãªããªã ããã£ãããšã¯ãã£ãã®ã«ããªãè©äŸ¡ãäžãããªããã ããããšã¢ã€ã¢ã€ããã ããããç®æšã«äœãæžãã°ãããããããªã ããªãããèªååãããçæ³ã®ãã£ãªã¢ããã¯ã£ããããªããšãç®æšãæµ®ãã°ãªãã ããããæ©ã¿ãæ±ãã人ã¯å°ãªããªããšæããŸãããŸããç®æšãäžç·ã«ç«ãŠãŠãããããŒãžã£ãŒã«ãšã£ãŠããæçããèãæ¹ã身ã«ã€ããŠããªããšããã®ãããªã¡ã³ããŒã®åé¡ã解決ããã®ã¯çµæ§é£ããããšã ãšæããŸãã ç®æšãšè©äŸ¡ã®é¢ä¿æ§ ãããŸã§ã«äœåºŠãã¡ã³ããŒãããç®æšèšå®ãã«é¢ããçžè«ãåããŠããŸããããã®åºŠã«ãåæãšããŠç®æšãšè©äŸ¡ã®é¢ä¿æ§ããã£ãããšèªèããŠãããããã®ã³ãã¥ãã±ãŒã·ã§ã³ãåã£ãŠããŸãã ç®æšãšè©äŸ¡ã«ã€ããŠãç§ã®èãæ¹ãæŽçãããšæ¬¡ã®ããã«ãªããŸãã ç®æšãšè©äŸ¡ã¯çŽæ¥çŽã¥ããã®ã§ã¯ãªã ãšã¹ã»ãšã ã»ãšã¹ã®ãšã³ãžãã¢è©äŸ¡ã¯ãææè©äŸ¡ã§ã¯ãªãèœåè©äŸ¡ããšããææ³ããšã£ãŠããŸã (詳ããã¯ã ãšã³ãžãã¢æ¡çšããŒãž ã®èšèŒãã芧ãã ãã)ããã®è©äŸ¡ææ³ã«ãããŠãç®æšã¯ããããéæããããççŽUPããããéæã§ããªãã£ãããè©äŸ¡ãäžãããªãïŒäžããããšãããã®ã§ã¯ãªãããããŸã§èªåãã©ã®èª²é¡ã«ãã£ã¬ã³ãžããã®ãã衚æãããã®ãšäœçœ®ä»ããŠããŸãã ç®æšã®æ¬è³ªã¯æé·ã®ããã®ä»®èª¬ç«ãŠ ç®æšã¯è©äŸ¡ã®ããã§ã¯ãªããéæããããšãéããŠèªå·±æé·ãå®çŸããããã®ã¬ã€ãããŒã«ã§ããè©äŸ¡ãããã®ã¯ãã©ã®ãããªæå³ã®ããææãçã¿ããã®éçšã§ã©ãããæé·ãéããã®ãããšããçµæã«å¯ŸããŠã§ãããç®æšãéæããïŒããªãã£ããšããããèªäœã§ã¯ãããŸããã è©äŸ¡ã¯çµç¹ããšã®ãããžã¡ã³ãããªã·ãŒã«äŸåãã ã©ãã ãç®æšãéæãæé·ã§ããŠãããšèšã£ãŠãããããäŒç€ŸããæåŸ
ãããŠãã圹å²ãççŽã®ç¯å²ãè¶
ããŠããªããã°è©äŸ¡ã«åæ ããã«ããããšããããŸããããããã®çµç¹ã«ã¯ãã®çµç¹ã®ãããžã¡ã³ãããªã·ãŒã«æ²¿ã£ãè©äŸ¡è»žãååšãããã®è©äŸ¡è»žã«ç
§ããåãããŠäžããããã®ã§ãã ã€ãŸããç®æšã¯ãææãçãããã«ã©ã®èª²é¡ã«åãçµãããæç¢ºã«ããããã®ããŒã«ããšããŠæŽ»çšããè©äŸ¡ã«ã€ããŠã¯è©äŸ¡ã®æææ±ºå®ãè¡ããããŒãžã£ãŒãšãã®è©äŸ¡è»žãããåãããŠããããšã倧åã ãšèããŠããŸãã ç§èªèº«ã®äœéšãšåŠã³ ç§èªèº«ãç®æšèšå®ã«ã¯ããªãèŠåŽããŠããŸãããèªåãã©ããªãšã³ãžãã¢ããããŒãžã£ãŒãç®æãããã®ããæç¢ºãªããŒã«ã¢ãã«ãæã£ãŠããããã§ã¯ãªããæåã¯ãäœãæžãã°ãããããããªãããšããæãã§ããããããããç®æšèšå®ãšããäœæ¥ã¯ãšãŠãèŠæã§ããïŒä»ãåŸæã§ã¯ãããŸããïŒã ãããªäžã§æ°ã¥ããã®ã¯ãããªãããèªååãããéç®ããŠç®æšãç«ãŠãã®ã¯å¿
ãããå¿
èŠã§ã¯ãªããšããããšã§ããããããèªåãä»ããç°å¢ããããžã§ã¯ãã®äžã§ã ã©ããªãŽãŒã«ãçµç¹ããããã¯ãã«ãšã£ãŠæå³ãããã®ã ããã«åããäžã§äœã課é¡ã«ãªãã®ã ãã®èª²é¡ã解決ããããã«ãèªåã¯ã©ããªè²¢ç®ãã§ãããã ãã®è²¢ç®ã¯èªåã«ãšã£ãŠååãã£ã¬ã³ãžã³ã°ãªãã®ã ãèããæ¹ããçŸå®ã«ãã£ãããããããããã¯ãéçºã䞻軞ãšãããšã³ãžãã¢ã§ããèªåã¯ç®æšãäœãããããšæããŸããã ããæè¿ãç§ã¯ç®æšãç«ãŠãéã¯ãã€ãã ãŸãã¯å°ãå
ã®ããŽãŒã«ïŒçµç¹ããããã¯ãã«ã€ããŠããããªã£ãŠãããå¬ããç¶æ
ïŒããèãã ããã«åããäžã§ã®èª²é¡ãå€é¢çã«æŽãåºã ç¹ã«éèŠåºŠãé«ã課é¡ãéžã¶ ãã®èª²é¡ãã©ãè§£ããã課é¡ãè§£ãããã«ã¯ã©ããªã¹ããããããããããèãã ãšããã¹ããããèžãã§ããŸãã ãããç¹°ãè¿ããã¡ã«ããç®æšãç«ãŠããããšèªäœã¯èŠæã§ã¯ãããããã¹ãããšã ãšãæããããããã«ãªããåšå²ã«ã説æãããããè©äŸ¡ã«ãã€ãªããããã圢ã«èªç¶ãšãªã£ãŠãã£ããšæããŸãã ãç®æšèšå®ãã³ãã¬ãŒããã®çŽ¹ä» ããããäœéšãèžãŸããŠããã£ãšã·ã³ãã«ã«ã圢骞åãã«ããç®æšã誰ã§ãäœãã圢ã«ãããããšæããä»åãããããŠæŽçããã®ãããããã玹ä»ãããç®æšèšå®ãã³ãã¬ãŒããã§ãã ãã®ãã³ãã¬ãŒãã®å€§ããªç¹åŸŽã¯ãããŸãã¯äºæ¥ããããã¯ãã®ãŽãŒã«ãè§£éãããã®ãŽãŒã«ããéç®ããŠèª²é¡ãèŠã€ããããã«æãäžã§æé·ãåŸãããšããé åºã«ãããŸããããªãããèªååããããã§ã¯ãªããçŸå®ã®èª²é¡ããåºçºããŠãã£ã¬ã³ãžãèšèšãããšããèãæ¹ã§ãããã ãããã®ãã³ãã¬ãŒãã¯ãããã¯ãéçºã«é¢ãããšã³ãžãã¢åãã«äœã£ãŠãããè·çš®ã圹å²ã«ãã£ãŠã¯åœç¶åããªãéšåããããããããŸãããå¿
èŠã«å¿ããŠãèªåã®åœ¹å²ã«åãããŠèª¿æŽããŠäœ¿ã£ãŠãã ããã ãã³ãã¬ãŒãã®æ§æ ãã³ãã¬ãŒãã¯å€§ããæ¬¡ã®5ã¹ãããã§æ§æããŠããŸãã ãŽãŒã« çŸç¶ãšèª²é¡ ããŒã ã¹ããããšãã£ã¬ã³ãž ç®æš (Objectives) ãã³ãã¬ãŒãã®äžèº«ãšæå³ ãã³ãã¬ãŒãã®åé
ç®ã®æå³ãšãã©ãããèãæ¹ã§åãããšè¯ãããç°¡åã«èª¬æããŸãã 1. ãŽãŒã« ãŸãã¯ãããžãã¹ããããã¯ãã®æŠç¥ãé·æçãªç®æšãèžãŸããŠç®æãããç¶æ
ã»éæããææãæžããŸãã 2. çŸç¶ãšèª²é¡ ãã®ãŽãŒã«ã«åããäžã§ãçŸåšç«ã¡ã¯ã ãã£ãŠããåé¡ã«ã€ããŠèšèªåããŠãã ãããããŒã ãçµç¹ããããã¯ããããã»ã¹ãèªåã®ã¹ãã«ããã€ã³ããªã©å€é¢çã«æŽãåºããŸããããæçµçã«ããã®æéã«è§£æ±ºãã¹ãç¹ã«éèŠã»ç·æ¥ãªèª²é¡ã¯äœããæç€ºããŠãã ããïŒãã©ãŒã«ã¹ããããšãéèŠãããã®ã§æå€§3åçšåºŠã«çµããŸãããïŒã 3. ããŒã éžãã 課é¡ã«å¯ŸããŠãèªåãåãçµãéã®ããŒããæç¢ºåããŸãããªããã®èª²é¡è§£æ±ºãèªåãæ
ãããšã«æå³ãããã®ãïŒè²¢ç®ã»æé·ã®èŠç¹ïŒããã®èª²é¡ã解決ãããç¶æ
ã¯ã©ã®ãããªãã®ãªã®ãã«ã€ããŠèšèªåããŠãã ããã 4. ã¹ããããšãã£ã¬ã³ãž 課é¡ãè§£ãããã«ãã©ã®ãããªã¹ããããå¿
èŠã ãšèããŠããŸããïŒã¹ããããèžãã§ããäžã§ãããªãã«ãšã£ãŠäºæ³ãããããŒãã«ããã£ã¬ã³ãžã¯ã©ããªãã®ãããŸããïŒ 5. ç®æšïŒObjectivesïŒ ãã©ãŒã«ã¹ããããšãéèŠããã®ã§ã2ã3åã«çµã£ãŠèšå®ããŠãã ããã宿§çã§ãOKã§ããŽãŒã«ãææã瀺ãã ãã§ãªããããããå§¿ãåãçµã¿æ¹ã«çŠç¹ãåœãŠãŠãããã§ãããŸããèªèº«ã®çŸåšã®ççŽã圹å²ã«ãããæåŸ
ãèžãŸããäžã§ãããã®ç®æšã¯æ°ŽæºãšããŠåŠ¥åœãããèŠç«ãŠãæèãæã€ããšãéèŠã§ãã ãã®é åºã§æŽçãããšããæçµçãªçµç¹å
šäœãç®æãææãçãããã«ä»æèªåèªèº«ã¯ã©ã®èª²é¡ã«ãã£ã¬ã³ãžããã®ãããèªç¶ãšèšèªåã§ãããšèããŠããŸãã ãã³ãã¬ãŒã掻çšã®å·¥å€« ãã³ãã¬ãŒããæå€§é掻ããã€ã€ãç®æšã圢骞åãããªãããã«ãããã€ã工倫ãå ãããšè¯ããããããŸããã äŸãã°ä»¥äžã®ãããªå·¥å€«ã亀ããªããç®æšèšå®ãšããäœæ¥ã«åãåããšãåãªãååŒçãªäœæ¥ã«ãªãããçŸå®ã®èª²é¡ãšåãåãããŒã«ãšããŠé·ã掻ããããã®ã«ãªãã¯ãã§ãã ç®æšèšå®äœæ¥ã1äººã§æ±ã蟌ãŸãªã ç®æšã¯èªåã ãã§å®ç§ã«äœããã®ã§ã¯ãããŸããããããŒãžã£ãŒãããŒã ã¡ã³ããŒãšããªãŒãã³ãªäŒè©±ã§ããåãããªããã課é¡ã®åªå
é äœããŽãŒã«ã®è§£ååºŠãæ®µéçã«äžç·ã«ç¢ºèªãããšãããçŸå®ã«å³ããå
容ã«ãªããŸãã å®éåã«çžãããããªã ç®æšãå
šéšæ°åã§è¡šãããšãããšãéã«æ¬è³ªãããºã¬ãŠããŸãããšããããŸãããã©ãããç¶æ
ãç®æãã®ãããã©ããªå§¿å¢ã§åãçµãã®ãããšãã£ã宿§çãªèŠçŽ ããæé·ã瀺ã倧äºãªãã€ã³ãã§ãã éæã§ããªããŠãOK ç®æšã¯ãããããšã®å®£èšãã§ã¯ãªãããããã仮説ããã£ãŠãã£ã¬ã³ãžããããšãã衚æã§ããä»®ã«ç®æšãéæã§ããªããŠãããã®éçšã§äœãåŠã³ãæªéæã®åå ãå
çã»è¿œæ±ããæ¬¡ã«ã©ãã€ãªããããèšèªåããããšãã§ããã°ååã«æå³ã®ããäœæ¥ã§ãã ãŸãšã ãããã¯ãéçºãæ
ããœãããŠã§ã¢ãšã³ãžãã¢ãäºæ¥ææãèµ·ç¹ã«èããç®æšèšå®ãã©ã®ãããªã¹ãããã§è¡ããããã®èæ¯ã«ããè©äŸ¡ã®èãæ¹ã«ã€ããŠç޹ä»ããŸãããç®æšã¯ãè©äŸ¡ã®ããã®ã³ãããã¡ã³ããã§ã¯ãªãããä»ã©ã®èª²é¡ã«ãããŠææŠããã®ãããèšèªåããæé·ãšææãçµã³ã€ããããŒã«ã ãšç§ã¯èããŠããŸãã ãããç®æšã圢骞åããã¡ã§ãã£ãããäœãæžãã°ãããããããªããªã©ã®æ©ã¿ãããå Žåã«ã¯ããã²äžåºŠãã®ãã³ãã¬ãŒããåèã«ããŠã¿ãŠãã ããã
ã¯ããã« ããã«ã¡ã¯ãä»è·/é害çŠç¥äºæ¥è
åãçµå¶æ¯æŽãµãŒãã¹ãã«ã€ãã±ãã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã§ã¢ãã¿ãªã³ã°ããªãã¶ãŒãããªãã£åšããæ
åœããŠããå æ ( @TAKA_0411 ) ã§ãã ç§ãæºãã£ãŠããã«ã€ãã±ã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã§ã¯ãªãã¶ãŒãããªãã£ã®ããŒã«ãšããŠDatadogãæŽ»çšããŠããŸãããããŠãã®åºŠFindyæ§ããã®ã声ããã§ãDatadogã®ã¬ãã¥ãŒãFindy Toolsã«å¯çš¿ããŸããã findy-tools.io Findy Toolsã«ã€ã㊠ãFindy Toolsãã¯ãéçºããŒã«ã«ç¹åããã¬ãã¥ãŒãµã€ãã§ãã第äžè
ã®èŠç¹ã§å®éã«ããŒã«ã®éžå®ãè¡ã£ãäŒæ¥ã®çã®å£°ãéããããšã§ãããŒã«éžå®ã«é¢ããäžå®ãè§£æ¶ããå°å
¥æ€èšã«å¿
èŠãªæ
å ±ãæäŸããŸãã ãFindy ToolsããéçºããŒã«ã®å°å
¥æ€èšãããŠãããŠãŒã¶ãŒãå©çšãããšãå®éã«ããŒã«éžå®ãè¡ã£ã倧æäŒæ¥ãã¡ã¬ãã³ãã£ãŒäŒæ¥ã®æè¡è²¬ä»»è
ããšã³ãžãã¢ã«ããã¬ãã¥ãŒãéããããšãã§ããå°å
¥æ€èšãã¹ã ãŒãºã«ãªããŸãããŸããéçºããŒã«ãæ²èŒãããã³ããŒã«ã¯ãå®éã®å©çšäŒæ¥ã®å£°ã掻ãããã³ãã¥ããã£ããŒã±ãã£ã³ã°ã«ããæ°èŠé¡§å®¢ã®ç²åŸããèªç¥åäžããæåŸ
ããã ããŸãã findy.co.jp ã¬ãã¥ãŒã®å¯çš¿ã«è³ã£ãçµç·¯ 以åãåŒç€Ÿã®ãšã³ãžãã¢ãå¥ã®ããŒã«ã«é¢ããã¬ãã¥ãŒãFindy Toolsã«å¯çš¿ããããšããããŸããããã®æã®ãæ
åœè
æ§ã ç§ã®ããã°èšäº ãèŠãŠãDatadogã®æŽ»çšããŠããŠã«ã€ããŠã®ã¬ãã¥ãŒãå¯çš¿ããŠã¿ãŸãããããšã声ããããã ããã®ããã£ããã§ããã å®ã¯ã声ããããã ããã¿ã€ãã³ã°ãéåžžã«è¯ãã瀟å
ã§ãããªãã¶ãŒãããªãã£ã®ããŒã«ã®æè¡éžå®ã«ã€ããŠã®æææ±ºå®ãADR (Architecture Decision Record) ãšããŠæ®ããŠãããæ¹ãããã®ã§ã¯ããšããè°è«ããããŸãããããã«ãããé¢é£ããADRãæŽåããããã«æ²¿ã£ãŠã¬ãã¥ãŒèšäºãå·çããããšã§ç¡äºã«å¯çš¿ã§ããŸããã ã¬ãã¥ãŒã®æ³šç®ç®æ ãªãã¶ãŒãããªãã£ã®ããŒã«ã¯å€ãååšããŸãããå©çšããçµç¹ã®èŠæš¡ããããã¯ãã®ç¹æ§ã«ãã£ãŠæé©è§£ãç°ãªããŸããããŒã«ã®å°å
¥ã«ããããå®éçšããã£ããã€ã¡ãŒãžããããšããç¹å®ã®äººãããŒã ã«å±äººåãããªãããšããããå€ãã®éçºè
ã«å©çšããŠããããããšããéèŠã ãšç§ã¯èããŠããŸããç¹ã«ãããå€ãã®éçºè
ã«å©çšããŠããããããšãã¯ç§ãã¡ã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã§ãéèŠãªå€æè»žã§ãã ãããèžãŸããŠä»¥äžã®å
容ãã芧ããã ããšãçè§£ãæ·±ãŸããšæããŸãã ç§ãã¡ãããŒã«ãå°å
¥ããåã«ã©ã®ãããªèª²é¡ããã£ãã®ã ããŒã«ãå°å
¥ããããšã§ã©ã®ãããªç¶æ
ãç®æããŠããã æ¯èŒæ€èšããããŒã«ãšæ¯èŒã®è»ž å°å
¥ã®ææ ç¹ã«æåŸã®å°å
¥ã®ææã¯ç§ã®ã€ããªã·ã§ãããªãã¶ãŒãããªãã£ã®ããŒã«ãå°å
¥ããããšã§ã©ã®ãããªåé¡ã解決ã§ããããã«ãªã£ãã®ããšãã話ã¯ãçŸå Žã®ãšã³ãžãã¢ã ãã§ã¯ãªãå°å
¥ã倿ããç«å Žã®ãããŒãžã£ãŒã«ãšã£ãŠãæ°ã«ãªããã€ã³ãã ãšæããŸããç§ãã¡ã®ãµãŒãã¹ã¯éçºéäžã®ãããçŸæç¹ã§ã®ææãæ°ã«ãªãæ¹ãå€ãã§ãããããã²ã¿ãªããŸã®ç®ã§ç¢ºãããŠã¿ãŠãã ããã æåŸã« Findy ToolsãžDatadogã«é¢ããã¬ãã¥ãŒãå¯çš¿ãã話ã§ãããä»åŸãªãã¶ãŒãããªãã£ã®ããŒã«ãå°å
¥ããããšèããŠããèªè
ã®ã¿ãªããã¯ãã²åèã«ããŠã¿ãŠãã ããã ä»åã®ã¬ãã¥ãŒå¯çš¿ã«ããããåœæããããã¥ã¡ã³ããæ®ãã€ã€äžå¯§ã«Datadogå°å
¥ããªãŒãããŠãããSREããŒã ã® @okazu_dm ãããšå°ç¬ åããã«ã¯æè¬ãå°œããŸãããç¹ã«å°ç¬ åããã¯ä»åã®ã¬ãã¥ãŒã®å¯çš¿ãè¡ãã«ããããéå»ã®ããåãã®åããŸãšããADRã®æŽåãçå
ããŠé²ããŠããã ãéåžžã«å©ãããŸããã ããã¬ãã¥ãŒã®å
容ã«ã€ããŠè©³ããèããããšããæ¹ãããŸãããäžèšã®ã€ãã³ããTwitter (X) çã§æ°è»œã«ã声ãããã ããã datadog-jp.connpass.com
ã¯ããã« ã¿ãªãããããã«ã¡ã¯ïŒïŒ æ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ã®å·åãšç³ããŸãã ç§ã¯2024幎7æã«ãšã¹ã»ãšã ã»ãšã¹ã«å
¥ç€Ÿãã人æç޹ä»äºæ¥ã®æ¥ååºç€ãéçºãããBPRæšé²éš ãã£ãªã¢æšªæéçºã°ã«ãŒããã§ããã¯ãªãŒããåããŠããŸãã ãã®èšäºã§ã¯ãBPRæšé²éšã«ãããããã¯ãªãŒãã®ããã·ã§ã³ããããŠæ¥ã
ã®èª²é¡ã«ã©ã®ããã«åãåããªããäºæ¥è²¢ç®ã«çŽã¥ããŠããã®ãããå
·äœçãªäºäŸã亀ããªããã玹ä»ããããšæããŸãã ãã®èšäºãéããŠãšã¹ã»ãšã ã»ãšã¹ã§åãããšã®ãããããçŸåšæ±ããŠãã課é¡ãªã©ãå
±æããããšã§ãçãããåœç€Ÿã§æŽ»èºããã ãã€ã¡ãŒãžãæã€äžå©ãšãªãã°å¹žãã§ãã æã
ã®ãšã³ãžãã¢çµç¹ã«ã€ããŠã¯ãåŒç€Ÿåå·ã®èšäºã Team Topologies ã§ç€Ÿå
ãŠãŒã¶åãæ¥åã·ã¹ãã ãéçºããçµç¹ãåèšèšããŠã¿ã ããã芧ããã ãããšã§ãããã€ã¡ãŒãžãå
·äœçã«ãªãããšæããŸãã®ã§æ¯éã芧ãã ããã èªå·±çŽ¹ä» ç°¡åã«ç§ã®çµæŽã«ã€ããŠãäŒããããŠãã ããã ç§ã¯ãšã³ãžãã¢ã«ãªãåãå·¥æ¥è£œåã®çç£éšéã§1å·¥çšãæ
åœããŠããã®ã§ããã補é ã«ã¯ããçšåºŠã®åãããããã®åºæºéãã«çç£ããäºã ããææãšãªã£ãŠããäºã«å人çã«éåæããããŸããã çç£æ°ãå質ãããŒãããªãããç¶ç¶çã«ã¢ãŠãããããç¶ããä»äºã®å€§å€ããéèŠæ§ãçè§£ããäžæ¹ã§ãã©ã®ããã«ããã°ããè¯ãã¢ãŠããããã«ãªãã®ãïŒãã®ããã®ä»çµã¿äœããèšèšã«æ¥œãããèŠåºãããããå®çŸã§ããããªãœãããŠã§ã¢ãšã³ãžãã¢ã®éã«é²ã¿ãŸããã ãœãããŠã§ã¢ãšã³ãžãã¢ãšããŠã¯ãSIerã®Webãšã³ãžãã¢ãäºæ¥äŒç€ŸïŒå°å£²ïŒã®æ
å ±ã·ã¹ãã æ
åœãSaaSäŒæ¥ã®ã³ãŒãã¬ãŒããšã³ãžãã¢ãšãã£ãªã¢ãç©ãã§ããŸããã ã³ãŒãã¬ãŒããšã³ãžãã¢ã«ãªã£ãŠããã¯ãçµå¶ãäºæ¥éšããã®èŠæ±ãçŽæ¥ãã¢ãªã³ã°ããèŠæ±ãæè¡ã§ã©ã解決ãããã«æ³šåããŠããŸãããå
·äœçã«ã¯ãSalesforceãäžå¿ãšããCRM/SFAã®ã«ã¹ã¿ãã€ãºãå€éšã·ã¹ãã 飿ºã«ããæ¥åããã»ã¹ã®èªååãGCPãAWSãæŽ»çšãã飿ºåºç€ã®æ§ç¯ãåçš®SaaSã®å°å
¥ã»éçšãµããŒãã«ããçç£æ§åäžãªã©ãäž»ãªããã·ã§ã³ã§ããã åã«ã·ã¹ãã ãå°å
¥/éçºããã ãã§ãªãããããããžãã¹äŸ¡å€ã«ã©ãç¹ããããåžžã«æèããæé©ãªæè¡éžå®ãã¢ãŒããã¯ãã£èšèšãã³ãã¥ãã±ãŒã·ã§ã³ãDevOpsãªã©ãåŸæãªé åã§ãã ç§ãæããã³ãŒãã¬ãŒããšã³ãžãã¢ã®é
å è·æŽã®äžã§ãç¹ã«ãšã³ãžãã¢ãšããŠã®æ¥œãããããå¢ããã®ããã³ãŒãã¬ãŒããšã³ãžãã¢ãšããŠæŽ»åãå§ããé ã§ããSIeræä»£ã¯éçºãããã®ãæŠã決ãŸã£ãŠããäºãå€ããæ¬è³ªçã«ã¯ãã©ã®ãããªåãåºæºãäœãã¹ããªã®ããèããäºããã»ãšãã©ãã³ããªã³ã°åºæ¥ãªãã£ãããã«æããŸãã ã³ãŒãã¬ãŒããšã³ãžãã¢ãšããããŒã«ã®é
åã¯ãšã³ãžãã¢ãªã³ã°é¢ããããžãã¹ã®Opsæ¹åãäºæ¥éšãšäžç·ã«é²ããããããããè¯ãã¢ãŒããã¯ãã£ãèªåãã¡ã§èãããããªããããžãã¹ã«è²¢ç®ããŠãããç¹ã§ãã ã³ãŒãã¬ãŒããšã³ãžãã¢ã¯ã¹ããŒã¯ãã«ããŒãšè¿ãè·é¢ã§ã³ãã¥ãã±ãŒã·ã§ã³ããšããªãããæè¡çãªè§£ãšããžãã¹èŠæ±ã®ãã©ã³ã¹ãåãé£ãããšé¢çœãããããšæããŠããŸãã ãšã¹ã»ãšã ã»ãšã¹ã«å
¥ç€Ÿããçç± äžèšã®ããã«ããããã®ããæ¥ã
ãéãããŠããŸãããããããªäžã§ã転è·ããããšæã£ããã£ããã¯ãèªåèªèº«ããŸã ãŸã æé·åºæ¥ããšæããäºã§ããã ãããã£ã¬ã³ãžã³ã°ãªç°å¢ã§èªåãæé·ãããªããããããäºæ¥æé·ã«ç¹ããããäºã宿ã§ããã°ããææçŸ©ãªãã£ãªã¢ã«ãªããšèããã®ã§ãã è»¢è·æŽ»åãéå§ãã幞ããªããšã«ããã€ãã声ãããããã ãäžã§ãæçµçã«ãšã¹ã»ãšã ã»ãšã¹ã«å
¥ç€Ÿã決ããçç±ã¯ä»¥äžã§ãã 瀟äŒè²¢ç®åºŠã®é«ãäºæ¥äžã€æ¥çã«ãããã·ã§ã¢ã倧ãã èŠæš¡æã倧ãã+ãšã³ãžãã¢çµç¹ãžã®ã³ãããã¡ã³ãããããèªèº«ãæãæé·ã§ããããªç°å¢ãã ãšæãã ãªãã¡ãŒé¢è«ã®ã¡ãã»ãŒãžã«æéãåãã äºæ¥èŠæš¡ã«ã€ããŠã§ããããšã¹ã»ãšã ã»ãšã¹ã¯å»çä»è·é åã®äººæç޹ä»äºæ¥ã«ãããŠå€§ãã瀟äŒã«è²¢ç®ããŠãããã¬ãŒã€ãŒã ãšæããŸãããããã»ã©ã®èŠæš¡ã®äºæ¥ãæ¯ãããšã³ãžãã¢çµç¹ã®æé·ã«èå³ããã£ããšããã®ãæåã®ãã£ããã§ããã ãã®åŸãTeam Topologiesãå©çšããçµç¹æ§é ã®æ¹å€ãçµç¹ããã·ã§ã³ã®èŠçŽããã¢ãžã£ã€ã«ãªçµç¹ãžã®å€é©ãè¡ãªã£ãŠããããšã䌺ãããã®èŠæš¡ã§ããã€ã€ã¢ãã³ãªåãçµã¿ãè¡ãªã£ãŠããäºããšãŠãé
åçã ãšæããçµæçã«èªåã®æ¬¡ã®æé·ãå®çŸãããã£ãŒã«ããšããŠæé©ã ãšæããã®ã§ãã æå±ããçµç¹ãšããã·ã§ã³ã«ã€ã㊠åœç€Ÿãšã¹ã»ãšã ã»ãšã¹ã«ã¯ãå
šç€Ÿã®æ¥åæ¹åãæšé²ãããBPRæšé²éšãããããŸãããã®éšå
ã«ãå»çã»ä»è·æ¥çã®äººæäžè¶³ã解決ãã瀟å
æ¥åã·ã¹ãã ãéçºããããã£ãªã¢æšªæéçºã°ã«ãŒãããèšçœ®ãããŠããŸããç§ã¯ãã®äžå¡ãšããŠãåŸäºè
æ§ãšäºæ¥è
æ§ãã€ãªãããšã䟡å€ãšããæ©èœéçºãæ
åœãããããããã³ã°ããŒã ãã®ããã¯ãªãŒããåããŠããŸãã ãã£ãªã¢æšªæéçºã«ãããããã¯ãªãŒãã®åœ¹å² äºæ¥éšãBAïŒããžãã¹ã¢ãŒããã¯ãïŒãšãã£ãããŒã«ã®ã¡ã³ããŒãšæ¥ã
ã³ãã¥ãã±ãŒã·ã§ã³ãåããªãããããã¯ãã°ã¢ã€ãã ã®æŽçãæé©ãªã¢ãŒããã¯ãã£èšèšããªã¢ãŒããã¯ãã£ã³ã°ãã¬ãã¥ãŒããªãªãŒã¹èª¿æŽãéçšãå Žé¢ã«ãã£ãŠèªãå®è£
ãè¡ããªã©ãéçºã©ã€ããµã€ã¯ã«ã«ãããå
šäœãèŠãªããæšé²ãã圹å²ã«ãªããŸããBAãããŒã ãªãŒããŒãWhat/When/Who/Whyãªã©ã«éãããããããã¯ãªãŒããšããŠã¯Howã䞻軞ã«What/Whyãæ·±æãããŠãããŸãã åèãŸã§ã«åŒç€Ÿã®ããžãã¹ã¢ãŒããã¯ãã«ã€ããŠã¯è¥¿ç°ã®èšäºããããŒã ãªãŒããŒã«é¢ããŠã¯äºäžã®èšäºãã玹ä»ãããŠããã ããŸãã ããžãã¹ã¢ãŒããã¯ã à SalesforceïŒæ¹åã ãã§çµãããªããæŠç¥æšé²ãšæŠè¡å®è¡ã远æ±ãã BPRæšé²éšã®éçºãªãŒããŒãšããŠã®åãçµã¿ ããã¯ãªãŒãã®å
·äœçãªæŽ»å ããããã¯ç§ãããŒã ã®äžã§æ¥ã
ã©ã®ãããªèгç¹ã§ä»äºãããŠããã®ããããã«èª²é¡æãä»åŸã®å±æãªã©ã«ã€ããŠã·ã§ã¢ãããŠããã ããã°ãšæããŸãã ç§ãã¡ã®ããŒã ã§ã¯ã¹ã¯ã©ã ãçšããŠãããã¯ãéçºãè¡ã£ãŠããã®ã§ãä»åã¯ã¹ã¯ã©ã ã®ã€ãã³ãïŒãã©ã³ãã³ã°ããã€ãªãŒã¹ã¯ã©ã ãã¹ããªã³ãã¬ãã¥ãŒãã¬ããã¹ãã¯ãã£ãïŒãè»žã«æŽ»åãã·ã§ã¢ã§ããã°ãšæããŸãã ã¹ã¯ã©ã ã€ãã³ããžã®é¢ããæ¹ ã¹ããªã³ããã©ã³ãã³ã° ãã©ã³ãã³ã°ã§ã¯æ°ããªã¹ããªã³ãã§ã®ãŽãŒã«èšå®ãåãçµãã¹ãããã¯ãã°ã¢ã€ãã ãããŒã ã§æ±ºå®ããŠãããŸããåªå
é äœã«ã€ããŠã¯ããŒã ãªãŒããŒãBAãšäŒè©±ãããªãã調æŽããéçºèŠç¹ã§å®çŸå¯èœãªã©ã€ã³ã決å®ããŠãããŸããã¿ã¹ã¯ã®èŠæš¡æã«ã€ããŠã¯ãªãã¡ã€ã³ã¡ã³ããšããèšèšã®æéãèšããŠããŠãããã§ã¢ãŒããã¯ãã£ãªã©ãããŒã ã§å
±æããªããäºåã«ç®åºããäœæ¥ãè¡ã£ãŠããŸããã¢ãŒããã¯ãã£æ€èšæã«ã¯æ¢åã®ã³ãŒãããŒã¹ãæè¡çè² åµãã¹ã±ãžã¥ãŒã«ãªã©ããã¬ãŒããªããèæ
®ããªãããæçµçã«ã©ããŸã§ããã¹ãããèããªããæ±ºå®ããŠããŸããããããšãŠãé£ãããšããã§ã¯ãããŸãããééå³ã§ããããšæããŠããŸããæè¡çã«ããã¹ãå§¿ãèããªããå
·äœåããŠããæŽ»åã¯ããšã³ãžãã¢ã«ãšã£ãŠãšãŠãããããã®ããããã·ã§ã³ã ãšæã£ãŠããŸãã ãã€ãªãŒã¹ã¯ã©ã æ¯æè¡ã£ãŠãããã€ãªãŒã§ã¯äž»ã«éçºã¡ã³ããŒããåºããããã«ãŒã«ã€ããŠç¢ºèªããããã«ããŠããŸããããã¯ãªãŒããšããç«å ŽãšããŠã¯æè¡ç芳ç¹ã§æ¹åæ§ã«ã€ããŠæ¹ããŠè°è«ãå¿
èŠã«ãªã£ãå Žåã«ã¹ããªã³ããŽãŒã«ã®éæã«åããŠå皮調æŽãè¡ãªã£ãŠãããŸããç§ã¯ãã€ãªãŒã ãã§ãªãã¿ã¹ã¯ãé²ããäžã§å°ã£ãããšããªããïŒãªã©ãMTGã®æåŸãªã©ã«è»œãèããªã©ããŠçºä¿¡ããããç°å¢ã¥ãããå¿ãããŠããŸããããããããšã§1人ã ãã§ã¿ã¹ã¯ãããªããŠãããšããæèŠãããããŒã ããã·ã§ã³ãšããŠæããå
šå¡ã§ãŽãŒã«ã«åãã£ãŠåãããšã¡ã³ããŒã«æããŠæ¬²ããããã§ãã ã¹ããªã³ãã¬ãã¥ãŒ ã¹ããªã³ãã¬ãã¥ãŒã§ã¯ããŒã å
ã§ãåãå
¥ãèŠä»¶ããšãå®äºã®å®çŸ© / Definition of Done (DoD)ãã®ç¢ºèªãè¡ãïŒãããã¯ãã¬ãã¥ãŒïŒãã¹ããŒã¯ãã«ããŒã®ã¬ãã¥ãŒã¯ã¹ã¯ã©ã ã€ãã³ãå€ã§å®æœããŠããŸãããã®æãåœåã®èŠç©ãããšç°ãªã£ãŠããç¹ãæ¹ååºæ¥ãããªç¹ãçåç¹ãªã©ãããŒã ã§ãã£ã¹ã«ãã·ã§ã³ããªããæ¬¡ã®ãã©ã³ãã³ã°ã«åããŠæ¹åå
容ã確èªããŠãããŸãããŸããªãªãŒã¹åŸã«ã€ããŠã¯äºæ¥éšã¡ã³ããŒã«å©çšç¶æ³ãªã©ããã¢ãªã³ã°ããå Žé¢ããããŸãã ã¬ããã¹ãã¯ãã£ã ã¹ããªã³ãçµäºæã®æ¯ãè¿ãã¯KPTãå©çšããŠãã£ã¹ã«ãã·ã§ã³ããŠããŸãããŸã仿ããFour Keysã軞ãšããéçºçç£æ§ææšã®ã¡ããªã¯ã¹ãFindy Team+ã§ç¢ºèªããåãçµã¿ãéå§ããŸãããã³ããããããªãŒãã³ãŸã§ã®ãªãŒãã¿ã€ã ããªãŒãã³ããã¬ãã¥ãŒãŸã§ã®ãªãŒãã¿ã€ã ãªã©åçš®KPIãã¹ããªã³ãéã§æ¯èŒããªãããèŠå ã®æ·±æããããããšã§ããè¯ãéçºäœéšãå®çŸããããã®æ
å ±åéããã¡ã·ãªããŒã·ã§ã³ãè¡ãªã£ãŠããŸãã äžæµã§ã®é¢ããæ¹ ããã¯ãªãŒããšããç«å Žã¯åºæ¬çã«ãHowãã«è²¬åãæã£ãŠããŸããããããããã®ã欲ããããšããèŠæ±ããã£ãŠãã©ãå®è£
ãã¹ãããšãããHowããèããŠå
·äœã«èœãšã蟌ãäœæ¥ã§ãã ããããªãããšã¹ã»ãšã ã»ãšã¹ã§ã¯äœãäœãã¹ããªã®ãïŒãšããäºæ¥éšãBAãšã®ãã£ã¹ã«ãã·ã§ã³ã«ãé¢ããããšãã§ããæ¥œããããããšæããŸãã æéçãªå¶çŽãããã®ã§å
šãŠã®äŒè©±ã«å
¥ãããšã¯é£ããã®ãçŸå®ã§ãããå€§èŠæš¡ãªããŒãã®æ¹åã«ãããŠã¯éçºè
ãšããŠåå ããããšãã§ããããšã³ãžãã¢ã ããäºæ¥ã®äºã¯åãããªãã ããããšãã£ãç©ºæ°æããªããåãããªãäºãäžå¯§ã«æããŠããã ãäºãåºæ¥ãç¹ããšãŠãå©ãã£ãŠããŸããããã¯åèªãåŒç€Ÿã® ç念 ã倧åã«æãããæ
ç±ããèª å®ãããã£ãŠããããã§ãã·ã§ãã«ãã§ããããšã远æ±ãã ãšããèãæ¹ãåºæ¬ãšããŠããããšããçãŸããŠããæåã ãšæããŸãã éçºçç£æ§åäžã«åããåãçµã¿ãšãã®æçŸ© 仿ãç§ãã¡ã®ããŒã ããã³çµç¹å
šäœã§ã¯ãéçºçç£æ§ã®åäžããéèŠããŒããšããŠæ²ããããŸããŸãªåãçµã¿ãé²ããŠããŸãã ç§ãã¡ãæ
åœããã¢ãã¬ãã¯ã10幎以äžã«ãããæ©èœè¿œå ãšæ¹ä¿®ãéããŠããçµæãçŸåšã§ã¯èªç¥è² è·ã®é«ããæè¡çè² åµã®èç©ã課é¡ãšãªã£ãŠããŸããããããèæ¯ã®äžã§ãããã«ããŠç¶ç¶çã«äŸ¡å€ãå±ãç¶ããããã©ã®ããã«éçºçç£æ§ãé«ããŠå€åã«åŒ·ãéçºäœå¶ãç¯ããããç§ãã¡ã«ãšã£ãŠå«ç·ã®ãã£ã¬ã³ãžã§ãã ãã®ãããªåãçµã¿ãéããŠã ãé«éœ¢ç€ŸäŒã«é©ããæ
å ±ã€ã³ãã©ãæ§ç¯ããããšã§äººã
ã®ç掻ã®è³ªãåäžãã瀟äŒã«è²¢ç®ãç¶ããã ãšãããšã¹ã»ãšã ã»ãšã¹ã®ããã·ã§ã³ããããé«ã次å
ã§å®çŸããŠããããšç¢ºä¿¡ããŠããŸãã ãªããéçºçç£æ§åäžã®åãçµã¿ã«ã€ããŠã¯ããšã¹ã»ãšã ã»ãšã¹ BPRæšé²éšã«ãŠå°å
¥ããŠããã çµå¶ãšéçºçŸå Žãã€ãªãæŠç¥æ¯æŽSaaSãFindy Team+ã ããã²ãåç
§ãã ããã We are hiring!!! ç§ãèãããšã¹ã»ãšã ã»ãšã¹ã§åãé
åã¯ã瀟äŒãæ±ãã倧ããªèª²é¡ã®äžã€ã§ããé«éœ¢å瀟äŒã®é åã§è²¢ç®ããŠãããããšã«ãããšæã£ãŠããŸãã åæã«ãšãŠãé£æåºŠãé«ãé åã§ãããšãæããŠããŸããŠããŸã ãŸã ãšã³ãžãã¢ã®æãè¶³ããŠããªãç¶æ³ã§ãã ä»åã®èšäºãèªãã§å
±æããã ããæ¹ãå
±ã«æé·ããªãã瀟äŒã«è²¢ç®ããŠãããããšæã£ããšã³ãžãã¢ã®æ¹ããã²äžåºŠã«ãžã¥ã¢ã«é¢è«ãªã©ã§ã話ããŸãããïŒ open.talentio.com
ã¯ããã« @emfurupon777 ã§ãããšã¹ã»ãšã ã»ãšã¹ã«å
¥ç€Ÿããã®ã2022幎1æãªã®ã§ã3幎ã¡ãã£ãšãã¡ãŸããããããããšã¹ã»ãšã ã»ãšã¹ã§åããŠããã®ã ãšãã宿ãåŸå§ããŠãããšããã§ããããŸã§ã«çµéšããŠããç°å¢ãšã¯å®æã®ä»æ¹ãç°ãªãããšã«é¢çœã¿ãæãå§ããŠããŸãã ãã®æèŠããã£ãŠãSlackã«æŠç¥ã³ã³ãµã«åºèº«ã®çµå¶é£ãäœãäžããåã
è·ã§ã®å®æãã倿
çã«åªç§ãªäººãã¡ã«åŒã£åŒµãäžãããã€ã€æŸãåããç¶ããŠãããããªæèŠãïŒâ»ããã¯æå€§éã®è³èŸã®ã€ããã§ãïŒãšè¡šçŸãããšããããããã¯ãçµç¹ã®è²¬ä»»è
ã§ãã @sunaot ããããå¥éã§ãããç§ã以åã®è·å ŽïŒç§ã®åã
è·ãšã¯åãæŠç¥ã³ã³ãµã«åºèº«ã®å¥äººã«ããçµå¶ïŒã®ãšãã¯ããããæèŠã§ããwããšè¿ã£ãŠããã®ã§ãåŠãªçŽåŸæããããŸãããäžæ¹ã§ãããªãã»ã© @sunaotãç°ãªã宿ããããããªã®ã§ããã¯ããšã¹ã»ãšã ã»ãšã¹ã§æ±ããããããšã¯ãããŸã§ã®çµéšãšç°ãªãã®ã ãªãŒããšåèªèãããããŒãžã£ãŒãšããŠèããŠããããšãããšã ãšããŠæžããŠãããŸãã(ãããŸã§äžç€Ÿå¡ãšããŠã®ç§èŠã§ãã®ã§ããã®ç¹ã¯ã容赊ãã ããïŒ èŠåº§ãããããšããããš VUCAãªã©ãšããå°é£ãã衚çŸãçšãããŸã§ããªããå€åã®æ¿ããçŸä»£ã«ãããŠãç®ã®åã«ããä»ã€ã·ã¥ãŒã ãšèŠããŠãããã®ã«æ£é¢ããã¶ã€ãã£ãŠãç ããŠããç¹°ãè¿ããŠããã ãã§ã¯ããªããªãåã«é²ãããšãã§ããªããªãç¶æ³ã¯ãŸãŸçºçãããèŠåº§ãäžããŠèŠã€ãçŽããŠã¿ãŠãïŒæèš³ã§ããïŒãšã1on1ãªã©ã®å Žã§äŒããããäŒãããããããçµéšãæã€æ¹ã¯å€ãã®ã§ã¯ãªãã§ããããã ãããŒãžã£ãŒãšããŠã¯ããŒã ã«æ±ããã¹ãããšã ãšçè§£ã¯ã§ãããã®ã®ãèŠåº§ãšããèšèã®å¿
èŠæ§ãããŸãèšèªåãã説æããããšã«é£ãããæããŠããŸãããåãæåŽãããããã¯ãããŒãžã£ãŒã§ããããªãã«å¿
èŠãªãã®ã§ãã£ãŠãèªåã«ã¯é¢ä¿ãªãã®ã§ã¯ïŒããšååŒããããªãã®ã§ã¯ãªãã§ãããããïŒç§èªèº«ããã€ãŠããæããäžäººã§ãïŒ ããŒã ãžã®åœ¹å²æåŸ
å°ã話ã¯å€ãããŸãããããã§åæã2ç¹ããããŠãããŸãã 1ç¹ç®ã¯ã瀟å
ã®âããŒã âå®çŸ©ã§ãã ãšã¹ã»ãšã ã»ãšã¹ã«ãããããŒã ã¯çæãšäžé·æãäž»æŠå ŽãšåšèŸºãæé軞ã«å¯Ÿããæé·ãžã©ãåãçµãããèããŠããã®ã圹å²ã«ãªã£ãŠããŠãæ
ãããšãæåŸ
ãããŠããã®ã¯äž»ã«ãã®ãããªäºã§ãã åºæã®æèã®è§£éã»è©äŸ¡ 仿ãåæã®ç®æšãšKPIããããžã®ãã©ã³ ããããäžè¬çã«èšããããããŒãžã£ãŒã®åœ¹å²ãšèªèãããŠããäºã®çžå¿ã®å
容ãããšã¹ã»ãšã ã»ãšã¹ã§ã¯ãäžè¬çã«ãããŒãžã£ãŒã®åœ¹å²ãšãããå
容ã®å€ãããããŒã ãžã®æåŸ
ãšããŠææåãããŠããŸããã»ã»ã» ã¢ãŠãããŒãã³(æ¢æ) ã€ã¥ããŠ2ç¹ç®ã¯ãäžäœã°ã¬ãŒãã«å¯ŸããæåŸ
å€ã§ãã åŒç€Ÿãããã¯ã責任è
ã® @sunaotãæžãã瀟å
ããã¥ã¡ã³ãã®äžã«ãããªèšèŒããããŸãã çãããªãéžæè¢è€æ°ã®äžã§ã¢ãŠãããŒãã³ããã®ãäžäœã°ã¬ãŒãã®ã€ã¡ãŒãž ããïŒããã€ã®è©±ã§ããïŒããéã£ãã Googleæ¥æ¬èªèŸæžããåŒçš ããåœé¡ïŒããŒãŒïŒãšå¯Ÿç«é¢ä¿ã«ããåœé¡ïŒã¢ã³ãããŒãŒïŒãçµ±åããããé«ã次å
ã®åœé¡ïŒãžã³ããŒãŒïŒãå°ãåºãæ¢æïŒã¢ãŠãããŒãã³ïŒã®èãæ¹ãåå°ãšããæèæ³ãããããããåŒèšŒæ³ãšããããã§ãã éèŠãªã®ã¯ã察ç«ãã2ã€ã®åœé¡ïŒããŒãŒãšã¢ã³ãããŒãŒïŒã«åªå£ã¯ãªããçæ¹ãããçæ¹ãæã¡æ¶ãã®ã§ã¯ãªããçµ±åããé²åããŠãããšããç¹ã§ãããªãã»ã©ã äžèŠãççŸã察ç«ããèŠçŽ ãçµ±åãããã髿¬¡ã®äŸ¡å€ãåµåºããããã®éèŠãªææ³ã§ããã®èãæ¹ã¯ãå©ç远æ±ãšç€ŸäŒè²¢ç®ãçæçãªç®æšãšé·æçãªããžã§ã³ãªã©ãçµå¶ã«ãããå€ãã®èª²é¡ã«é©çšããããšã®ããšã (äžè¬çã«)ãããŒãžã£ãŒãšã¯ãªããªã®ã ãããŒãžã¡ã³ããšã¯ããªããšãããããšããšããã®ã¯ããèšãããããšã§ããã®ä»»ã«ããã£ãŠããäººã¯æèŠçã«ããã®è¡šçŸã¯ãã£ããããæ°ãããŠããŸãã ãšããããããã¡ã®äŒç€Ÿã®EM / PdM / PjMã£ãŠäœããã人ãªãã§ããïŒããšãããç¹å®ã®ã¢ã¯ã·ã§ã³ã«ãã£ãŠãããŒãžã£ãŒã®åœ¹å²ãå®çŸ©ãããŠãããã®ãããªè³ªåãæããããããããšãå€ãããã«æããŠããŸãã ãªãããæããã®ãã詊ãã«AIã«ãããŒãžã£ãŒã®æãã圹å²ãå°ããŠã¿ããšã»ã»ã» æ¥çžŸç®¡çãšç®æšèšå® 人æç®¡çãšè²æ ã³ãã¥ãã±ãŒã·ã§ã³ãšé£æº ã¢ãããŒã·ã§ã³ç®¡ç etc. ãªãã»ã©ã確ãã«ããããã人ããããŒãžã£ãŒãšããæãã®çããè¿ã£ãŠããŠã確ãã«è¡šå±€ã§ãããããã芳枬ã§ããã®ã¯ããããããšãããããªããšããæ°ã¯ããŸãã ãšã¹ã»ãšã ã»ãšã¹ã«ããããããŒãžã£ãŒãšã¯ ãšã¹ã»ãšã ã»ãšã¹ã®ãããã¯ãçµç¹ã§ãEMãšãã衚çŸãããããšãããããã¯ããããŒãžã¡ã³ãã°ã«ãŒããååšããããããããæ
ã人ãšããæå³ã§å
±éèªèãæã€ããã«PdMãšãã£ã衚çŸãããããšã¯ãããªãã«ããã®ã§ãããå人ãæ
ãæåŸ
ã¯åäžã§ã¯ãªããäºæ¥éè¡ã«å¿
èŠãªèœåãšãããããã®åŸæã»äžåŸæãªã©ã«ãã£ãŠã°ã©ããŒã·ã§ã³ãã€ããŠããŸããïŒããããŸãã®ããšãèšã£ãŠããŸããïŒ æ®æ®µã®æ¥åã§ã¯ããEMã ãããã®ã¢ã¯ã·ã§ã³ããããããããã¯ããããŒãžã£ãŒã ãããã®ã¢ã¯ã·ã§ã³ãããããšãã£ãè·çš®ã«çžãããèãæ¹ã¯ããŠããŸãããããŒã±ããã«åãåãäžã§å¿
èŠãªããšãèªãã®ã¹ã¿ã³ã¹ã§åæšéžæããåªå
é äœãã€ããªããæšé²ããŠããããšãæ±ããããŠããŸããïŒãã¡ãããå
šãŠã®ã¿ã¹ã¯ãèªåäžäººã§å®è¡ããã®ã§ã¯ãªãã仲éã®åãåããŠå®çŸããŠããå¿
èŠããããŸãïŒã ãã®åœ¹å²ã¯äžè¬çãªäŒæ¥ã§ããã°ãçµå¶å±€ãããããŒãã¡ã³ããŒããå Žåã«ãã£ãŠã¯ã圹å¡ããšãã£ããäŒç€Ÿäžã®æ©é¢ãšããŠäœçœ®ã¥ããããç«å Žã®è
ãæ
ãå²åãå€ããšæããŸãããããããšã¹ã»ãšã ã»ãšã¹ã¯åœ¹å¡ãå°ãªãçµå¶äœå¶ã§ããããšãããæšæž¬ã§ããããã«ãããããã®ç€Ÿå¡ã«æç¢ºãªæš©éç§»è²ãè¡ãããŠããçµç¹ã§ãã ãã®ç§»è²ãåããŠäºæ¥ãæšé²ããäž»äœããããŒãžã£ãŒãªã®ã ãšç§ã¯è§£éããŠããŸãããšã¹ã»ãšã ã»ãšã¹ã§ã¯çµç¹éå±€ã®äžã§ã®ããžã·ã§ãã³ã°ã衚ã衚çŸã¯å¿
èŠãšããŠããªã宿
ããããŸããããšãã°ãæè¿å€ã䜿ãããããã«ãªã£ãŠããå°è±¡ã®è¡šçŸã«âVPoEâããããŸããã瀟å
ã§è°è«ãããŠããäžã§ãããªãã誰ãVPoEãåä¹ãå¿
èŠæ§ãæããŠãªããã»ã»ããšãªãç¬éããã£ããããŸãã ã©ãããåãçµã¿ãå¿
èŠãªã®ã ç§å人ã®çµéšã§ã¯ãç€Ÿé·æèãã@sunaotã®çµéšã§ã¯ã2ã©ã³ã¯ã¢ãããããããŠãšã¹ã»ãšã ã»ãšã¹ã§ã¯çµå¶å±€ãšã®çžŠæšªã®é£æºãªã©ãåªããçµå¶ãè¡ã£ãŠããçµç¹ã§ã¯ãäœããã®åœ¢ã§èŠåº§ãé«ããåãçµã¿ãæšå¥šãããŠãããšæããŸãã 衚çŸã®éãã¯ããã©ãè¡ãè©°ãŸã£ããè¿·ã£ããããéã¯ãæèçã«èªèº«ã®èŠåº§ãäžãããããããã¯ïŒç¡çã«ã§ãïŒèŠåº§ãäžããŠããã人ã«ç©æ¥µçã«é¢ãã£ãŠããïŒäŸãã°1on1ãç³ã蟌ããªã©ïŒããšã§ãã¢ãŠãããŒãã³ãäœçŸããããã®æ°ããªèŠç¹ãåŸãããã®ã§ã¯ãªãã§ãããããã ãã¡ããè¯æžãèªãã§ã€ã³ããããããšãã£ãããšãéèŠã ãšã¯æããŸãããçµç¹ãšããŠäºæ¥ãæšé²ããŠããã«ããã£ãŠã察話ãéããŠããã®ã¯å¿
èŠäžå¯æ¬ ã§ãããã®å¯Ÿè©±ãçãã«ããã«è¡åãç¶ããããšãã§ããã®ã§ããã°ãããããåŸæé åã¯éãã©ãããŒãžã¡ã³ã驿£ã¯ãããçµå¶çæèãæ©ãã§ããããšã«ãç¹ãã£ãŠãããšèããŠããŸãã çµç¹ãæé·ããäžã§ãæã«ã¯ççŸãå¯Ÿç«æ§é ãçããããšããããŸãããããªæããã¢ãŠãããŒãã³ãæèããããããã®ããŒã ãçºæ®ããŠãã䟡å€ãå°éããäžã§çµ±åããŠãããããããæŠç¥çãªåœ¹å²ãæ
ãæèãæã€ããšãæéèŠã§ãããšèããŸããã ããŸã æåŸã« @sunaotã®èšèŒã玹ä»ããŠãããŸãã ããã§ãããããžã¡ã³ããšããã®ããEMãªã®ãã¢ãŒããã¯ããªã®ãPdMãªã®ããã¶ã€ã³ãããŒãžã£ãŒãªã®ãã宿
ã§ãããšããã¯ã©ãã§ããããªããšããã®ãä»ã®ç¶æ³ã§ãè·çš®çé©åããããå人èœåäŸåã®éçã®ã»ããæ©ãæ¥ãŠããå°è±¡ããã åé¡ã«åãçµã¿ãåãžé²ããããšãã§ããŠããã®ãªãã°ãããã¯è¯ããããžã¡ã³ãã§ããããã¯ã°ã©ãŠã³ãã®éžå¥ãããŠããäœè£ã¯ãªã ãããããžã§äœè£ã¯ãªãã§ãw ãã¹ãŠã®äºæ¥é åã§ä»²éãæ±ããŠããŠãæ±äººç¥šã®è¡šçŸãšããŠã¯äŸãã°EMãšãã£ãäžè¬çãªè¡šçŸã¯ãšã£ãŠããŸããã现ãã衚çŸã«ãã ããå¿
èŠã¯ãããŸãããå®äœãšããŠä»åèšèŒãããŠããã ããããã«ãâäºæ¥ãæšé²ãããããŒãžã¡ã³ãâã«èå³ãããæ¹ã¯ãã²ã«ãžã¥ã¢ã«é¢è«ã§æèŠäº€æãããã§ãïŒãšããããããç§ãã¡ã¯ä»²éãæ±ããŠããŸãã
ã¿ãªããããã«ã¡ã¯ïŒ ãããã¯ãæšé²æ¬éšã®äººäºãããŠãã ãŸãã ã§ãã ãšã¹ã»ãšã ã»ãšã¹ã¯ãã¡ã€ã³ãã£ç€Ÿäž»å¬ã®ã éçºçç£æ§Conference 2025 ãã«ããŒã¹åºå±ããã³ç»å£ããããšã«ãªããŸããïŒ é嬿¥çšã¯7/3 - 7/4ã®äºæ¥éã§é嬿¹åŒã¯ãã€ããªãã圢åŒããªãã©ã€ã³äŒå Žã¯æ±äº¬äžžã®å
ã®JPã¿ã¯ãŒããŒã«ïŒã«ã³ãã¡ã¬ã³ã¹ãšãªã£ãŠããŸãã ãšã¹ã»ãšã ã»ãšã¹ã¯ã·ã«ããŒã¹ãã³ãµãŒãšããŠããŒã¹åºå±ããããšãšãã«ã7/4ã«åŒç€Ÿéçºéšã®ã¡ã³ããŒãç»å£ããŸãã 仿¥ã¯ãã®å
容ã«ã€ããŠå°ããäŒããããŠãã ããã ç»å£ã«ã€ã㊠ä»è·/é害çŠç¥äºæ¥è
åãçµå¶æ¯æŽãµãŒãã¹ãã«ã€ãã±ãã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ããè¡ãªã£ãŠããäžã§ãéçºè
ã®çç£æ§ãåäžãããåãçµã¿ãšããŠæè¡æŠç¥ããŒã ãçºè¶³ãéå¶ããŠãããŸãã ä»åã¯ãã®åãçµã¿ã®æåäºäŸã»ã»ã»ã§ã¯ãªãæ¢ããŠã倱æè«ãããäŒããããŠããããããšæã£ãŠããŸãïŒ ã¿ã€ãã«ïŒã倱æããåæ§ç¯ããéçºæšé²ããŒã ã®ç«ã¡äžãã ç»å£æ¥æïŒ7/4 (é) 15:25ã ãªãã©ã€ã³ç»å£äŒå ŽïŒããŒã«B ç»å£è
玹ä»ïŒ2å ã¿ã€ã ããŒãã«ã¯ãã¡ã ð https://dev-productivity-con.findy-code.io/2025/detail/aDlc4Phu ⻠倧å€ãããããããšã«ãªãã©ã€ã³äŒå Žã¯æºåžãšãªããçŸåšã¯ãªã³ã©ã€ã³åå ã®ã¿ã®ãç³ã蟌ã¿ãåãä»ããŠãããšã®ããšã§ãïŒãç³ã蟌ã¿ããåŸ
ã¡ããŠããŸãïŒ ç»å£è
1 : é§ ç亢ïŒã§ã ã¯ãããïŒ æ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ ãããã¯ãæšé²æ¬éš ã«ã€ãã±éçºéš ã¢ãŒããã¯ã/PdM ããŒã¿ãµã€ãšã³ãã£ã¹ããããŒã¿ãšã³ãžãã¢ããã«ã¹ã¿ãã¯ãšã³ãžãã¢ãçµãŠCTOã«å°±ä»»ããæè¡æŠç¥ãšéçºæåãæšé²ããæµ·å€ã»æ°èŠäºæ¥ã®ç«ã¡äžããã¬ã¬ã·ãŒã·ã¹ãã ã®ãªãã¡ã¯ã¿ãªã³ã°ãªã©ããã£ãŠããŸããã ãšã¹ã»ãšã ã»ãšã¹ã§ã¯ã«ã€ãã±ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã®ã¢ãŒããã¯ãå
Œéçºæšé²ããŒã ã®PdMã«å°±ä»»ããŠåæãåæãšããŠã·ã¹ãã èšèšãšéçºçµç¹ã®å¹çåãæšé²ããŠããŸãã 飌ã£ãŠããç«ããšã£ãŠã坿ãã§ãïŒãžãŒãã³ãè²ãŠãããšãæšå·¥å®¶å
·ã®ã¡ã³ããè¶£å³ã§ãïŒ ç»å£è
2 : ç©ºäž æž
é«ïŒãããªã ããããïŒ æ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ ãããã¯ãæšé²æ¬éš ã«ã€ãã±éçºéš ãšã³ãžãã¢ãªã³ã°ãããŒãžã£ãŒ Webããã³ããšã³ããšã³ãžãã¢âWebãµãŒããŒãµã€ããšã³ãžãã¢âAndroidã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãšããçµç·¯ã§ãœãããŠã§ã¢ãšã³ãžãã¢ããã£ãŠããŠä»ã«è³ããŸãã DroidKaigi ãš iOSDC JapanãPHPerKaigi ã®ã³ã¢ã¹ã¿ãããããŠããŸãïŒ PCã²ãŒã ãããŒãã²ãŒã ã奜ãã§ãæ¥æ¬é
ããŠã€ã¹ããŒãåã¿ãŸãã ããŒã¹åºå±ã«ã€ã㊠ãšã¹ã»ãšã ã»ãšã¹ã®ããŒã¹ã§ã¯ãåœç€Ÿã®äºæ¥å
容ããšã³ãžãã¢ãªã³ã°ã«é¢ããåãçµã¿ãã玹ä»ããŸãã ããŒã¹ã§ã¯ã¿ãªããã«ãã¢ç»é¢ãè§Šã£ãŠããã ããæ¥é ã®åãçµã¿ã«ã€ããŠå°ãã§ããäŒãã§ããããšæã£ãŠããŸãïŒ ãŸãããããã§ã¯ãããŸãããã¡ãã£ãšããã³ã³ãã³ãããããã«ãã£ããçšæããŠãåŸ
ã¡ããŠãããŸãã å£ç¯æãã¢ã€ã¹ã¯ãªãŒã ã¹ããŒã³ããçšæããäºå®ã§ãã å°ãæ°ã«éããããããŸããããªããªã次第çµäºãšãªããŸãã ãŸããšã¹ã»ãšã ã»ãšã¹ç»å£ã®åŸã¯ããŒã¹ã§Ask The Speakerã®æéããããŸãã ãããã¹ã倧奜ããªã¡ã³ããŒã°ãããªã®ã§ãã©ããªäºçްãªããšã§ãæ°ã«ãªãããšãã質åãªã©ããã£ããæ¯éãç«ã¡å¯ããã ãã:) ããŒã¹ã®å Žæã¯åä»å
¥ã£ãŠããã§ãïŒ ïŒãªã¬ã³ãžã®äžžãããïŒ ããã¢ããã ð https://dev-productivity-con.findy-code.io/2025#floormap ããã§ã¯åœæ¥ããŒã¹ã§ããããã®æ¹ãšã話ãã§ããã®ã楜ãã¿ã«ããŠããŸãïŒ
ã¯ããã« ã¯ãããŸããŠã 人æç޹ä»éçºã°ã«ãŒãã§webå±¥æŽæžäœæãµãŒãã¹ãå±¥æŽæžã§ãããããã®éçºãæ
åœããŠããæŸå°Ÿãšç³ããŸãã 2020å¹Žã«æ°åå
¥ç€Ÿããæšå¹ŽåºŠããã¹ã¿ãŒãããwebå±¥æŽæžãããžã§ã¯ãã§webã®éçºãæ
åœãããŠããã ããŠãããŸããä»åã¯ãããªæ°èŠãµãŒãã¹ã®ç«ã¡äžããããªãªãŒã¹ãŸã§ã®çµç·¯ãšæ¯ãè¿ãã«ã€ããŠã話ãã§ããã°ãšæããŸãã ãããžã§ã¯ãçºè¶³ è»¢è·æŽ»åã«ãããŠãå±¥æŽæžã®äœæã¯è»¢è·æŽ»åã®å
å®ãå·Šå³ãã倧å€éèŠãªããã»ã¹ã§ããããæ
ã«å€ãã®åŽåãå¿
èŠãšããŸããããããã®æåãæžããªããã°ãããªãã£ãããå°ãé£ããæç« ãèããªããšãããªãã£ãããããã«ãåŒç€Ÿã®äººæç޹ä»ãµãŒãã¹ãå©çšããã ãå Žåã¯ãè»¢è·æŽ»åããµããŒããããã£ãªã¢ããŒãããŒã«äœæããå±¥æŽæžã®ç»åãéä»ãããã®ç»åã«å¯ŸããŠãã£ãªã¢ããŒãããŒãæ·»åãè¡ããšãããããŒã§å±¥æŽæžäœæãè¡ãããŠãããŸããã ããã«ããã質ã®é«ãå±¥æŽæžã®äœæã¯å®çŸã§ããŠããäžæ¹ã§ãã·ã¹ãã ããªãäžã§ã®éçšã¯å€ãã®æéãšæéãå¿
èŠãšããŠãããããããã¹ã ãŒãºãªè»¢è·æŽ»åã®ãæ¯æŽã«åããæ¹åãæ±ããããŠããŸããã ä»åã®ãããã¯ãã§ã¯ãäžèšã®èª²é¡ãè§£æ¶ããæ±è·è
ãšãã£ãªã¢ããŒãããŒã®åæ¹ã«ãšã£ãŠããè¯ãäœéšãæäŸããããšãéçºã®è»žã«æ®ããŸããã ãããã¯ãã§ã®è§£æ±º æ¬ãããžã§ã¯ãã§ã¯å±¥æŽæžäœæããæ·»åãŸã§ãäžè²«ããŠè¡ããWebãµãŒãã¹ãéçºããŸããããã®ãããã¯ãã¯ãæ±è·è
ãã¹ã ãŒãºã«å±¥æŽæžãäœæã»æåºã§ããã ãã§ãªãããã£ãªã¢ããŒãããŒãšã®ãããšããç°¡æœãã€å¹ççã«é²ããããããèšèšãããŠããŸãã å
·äœçãªæ©èœã¯ä»¥äžã®éãã§ãã èªåå
¥åæ©èœãšè±å¯ãªäŸæ äœææ€çŽ¢APIãçšããäœæã®èªåå
¥åããçå¹Žææ¥ããåŠæŽã®å
¥åŠã»åæ¥å¹Žãèªåç®åºããæ©èœãåŒç€Ÿäººæç޹ä»ãµãŒãã¹ã§åãæ±ãè·çš®ã«æé©åãããè³æ ŒäžèЧãäŸæäžèЧãåãæããå±¥æŽæžäœæã«ãããæ§ã
ãªæéãåæžããŠããŸãããŸããæ·»åã«ããããªãœãŒã¹ã倧å¹
ã«åæžã§ããèŠèŸŒã¿ã§ãã ããŒã¿ã®èªåä¿å å±¥æŽæžã¯èªåçã«ä¿åããããããéäžã§ç·šéãäžæããŠãå®å¿ã§ãããã©ã€ããŒããšã®äž¡ç«ã®äžã§ãå¿ããæ¥åžžã®ééæéã«å±¥æŽæžã®äœæãé²ããããšãã§ããŸãã ãã£ãªã¢ããŒãããŒãšã®ã¹ã ãŒãºãªé£æº äœæãããå±¥æŽæžã¯ããã£ãªã¢ããŒãããŒã«èªå飿ºãããŸããéç¥ãåãåã£ããã£ãªã¢ããŒãããŒã¯Webäžã§å±¥æŽæžãé²èЧã§ãããªã¢ã«ã¿ã€ã ã§æ·»åãã§ããŸãã PDFããŠã³ããŒã 宿ããå±¥æŽæžã¯PDFãšããŠããŠã³ããŒãå¯èœã§ããé»åæžé¡ãšããŠã®æåºã®ã»ããã³ã³ããã§ããªã³ãã¢ãŠãããããšãã§ããããæ¥ãªæåºã«ãå³åº§ã«å¯Ÿå¿ã§ããŸãã ããã«ãããæ±è·è
ã®äœæ¥è² æ
ã倧å¹
ã«è»œæžãã€ã€ããµãŒãã¹å
šäœãšããŠã®ãµããŒãå質ãåäžãããããšãã§ããŸããã 倧å€ã ã£ãããš ãããžã§ã¯ããé²ããã«ããã£ãŠãããã€ãã®å°é£ã«ãçŽé¢ããŸãããç¹ã«å°è±¡çã ã£ãã®ã¯ãäžç¢ºå®æ§ã®é«ã課é¡ãžã®åãåãæ¹ãšãããžã§ã¯ãç¶æ³ã«å¿ããæææ±ºå®ã§ãã äžç¢ºå®ãªèª²é¡ã«ã©ãåãçµãã ä»åã®éçºããŒã ã¯ç§å«ãæ¯èŒçãã£ãªã¢ã®æµ
ãã¡ã³ããŒã§æ§æãããŠããŸãããã®ããããŒããããããã¯ããç«ã¡äžãããšããçµéšãäžè¶³ããŠããããäœããæãã€ããã¹ããããã©ããŸã§æ±ºããã°éçºã«é²ããã®ãããšãã£ãåºæ¬çãªå€æã«è¿·ãå Žé¢ãå€ããããŸããã ãã®ãããªäžã§æèããŠããããšã¯ããäžç¢ºå®æ§ã®é«ãé åããåªå
ããŠåãçµããã§ãããæãèŠéããç«ã£ãŠããªãéšåãã調æ»ã»æ€èšŒãè¡ãããšã§ããã®åŸã®å€æãèšèšã®åæãšãªãææãæ©ã段éã§åŸãããã«å¿æããŠããŸããã ãŸãã倿ã®ç²ŸåºŠãé«ãããããã·ãã¢ãšã³ãžãã¢ãšã®å£æã¡ãã¹ããŒã¯ãã«ããŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãç©æ¥µçã«è¡ãããããžã§ã¯ãã®ãã§ãŒãºã«å¿ããŠãä»ç§ãã¡ãããã¹ãããšã¯äœãããããŒã å
ã§æèçã«ããåãããããã«ããŠããŸããã ãã®ãããªè©Šè¡é¯èª€ãç¹°ãè¿ãäžã§ãããŒã å
šäœããå®ç§ãªèŠéãããªããŠããå°ããé²ããŠèª¿æŽããã°ããããšèããããããã«ãªããäžç¢ºå®æ§ãåæã«åé²ã§ããèªèµ°åãåŸã
ã«è²ã£ãŠãã£ããšæããŠããŸãã ã¹ã³ãŒã調æŽãšæææ±ºå® ããããäžç¢ºå®æ§ã®é«ã課é¡ã«å¯ŸããŠåªå
çã«åãåããªãããããããžã§ã¯ãå
šäœãåã«é²ããã«ã¯ãç¶æ³ã«å¿ããæè»ãªæææ±ºå®ãæ±ããããŸããã å®éã«ãããžã§ã¯ããé²ããäžã§ãåœåã®èšç»ã«ã¯ãªãã£ãã¿ã¹ã¯ãæ°ããªèª²é¡ã倿ããåœåæ³å®ããŠããã¹ã±ãžã¥ãŒã«ã§ã®ãªãªãŒã¹ã¯çŸå®çã§ã¯ãªããšãã倿ã«è³ããŸãããããã§ç§ãã¡ã¯ãçŸæç¹ã§å®çŸã§ããæã䟡å€ã®ãããããã¯ããšã¯äœããèãããªãªãŒã¹ãããã«ãŒãæŽãåºãããšã§ãæ©èœã®åªå
é äœãèŠçŽããªããã¹ã³ãŒãã®èª¿æŽãè¡ããŸããã çµæçã«ãéãããæéãšãªãœãŒã¹ã®äžã§äŸ¡å€ã®ãããªãªãŒã¹ãå®çŸã§ãããšããããšããããŒã ã®å€§ããªèªä¿¡ã«ã€ãªãããŸããã æåŸã« ãªãªãŒã¹ããéããªã段éã§ã¯ãããŸãããæ©éæ¬¡ã®ãããªæåäºäŸãå¯ããããŠããŸãã å±¥æŽæžã®äœæãå¿ççãªããŒãã«ã«ãªã£ãŠããããªããªãè»¢è·æŽ»åã«èžã¿åºããªãã£ãæ±è·è
ã®æ¹ãããã®ããŒã«ã䜿ã£ãŠå±¥æŽæžãæåºããŠãã ãã£ã ä»ç€Ÿã®äººæç޹ä»ãµãŒãã¹ãšäœµçšããŠããæ±è·è
ããå±¥æŽæžäœæãŸã§ãµããŒãããäžè²«ãããµãŒãã¹æäŸãçç±ã«ãæçµçã«åŒç€ŸãéããŠè»¢è·ã決ããŠãã ãã£ã ãŸããã£ãªã¢ããŒãããŒããã¯ãåœåäºå®ããŠããå®ç§ãªãªãªãŒã¹ãã§ããªãã£ãããšã«å¯Ÿã㊠ãèªåãã¡ã掻çšããŠæèŠãåºããŠããããèªåãã¡ã«ãã£ãŠãããããµãŒãã¹ã«ãªãã æ©èœè¿œå ããã£ããã«ãäžé·æçãªãæ¯æŽã宿çãªãã©ããŒã¢ãããå¯èœãšãªããããäžäººã²ãšãã«å¯ãæ·»ã£ããµããŒããã§ããããã«ãªã£ã ãšãã£ãååããªãã£ãŒãããã¯ãããã ããŠããŸãã åœåã®èšç»ããã¹ã³ãŒããçµã蟌ãã§ã®ãªãªãŒã¹ã§ããããéããããªãœãŒã¹ãšäžç¢ºå®æ§ã®äžã§ãäœãäœããäœãäœããªãããã倿ãããããã¯ãã®äŸ¡å€ãæå€§åãããšããçµéšãã§ããããšã¯ãä»åã®ãããžã§ã¯ããéããŠåŸãããæå€§ã®åŠã³ã§ããã ä»ååŸãåŠã³ã掻ãããªãããæ±è·è
ããã£ãªã¢ããŒãããŒåæ¹ã®èª²é¡ã«åãåãã䟡å€ãããããã¯ããå±ããããããã«åŒãç¶ãåãçµãã§ãããããšæããŸãã
ãšã¹ã»ãšã ã»ãšã¹ã®ããã¯ããã°ç·šéããŒã ã®é«æšã§ãã åŒç€Ÿã®ããã¯ããã°ã¯2021幎3æ3æ¥ã«1æ¬ç®ã®èšäºãå
¬éãããŠãããä»å¹Žã§5幎ç®ã«ãªããŸããã¡ãªã¿ã«1æ¬ç®ã®èšäºã¯ãã¡ãã§ãã åãããã°ç·šéããŒã ã«åå ããã®ã¯2023幎4æãããªã®ã§ããã€ã®éã«ã2幎ãçµã¡ãŸãããèšäºèªäœã¯ããçšåºŠã³ã³ã¹ã¿ã³ãã«åºãŠããããã°ã§ã¯ãããŸãããããŸããã£ãåãçµã¿ãããã°ããŸããããªãã£ãåãçµã¿ããããŸãããã®ããããã·ã§ã¢ã§ããã°ãšæããŸãã ããã°ç·šéããŒã ã«ã€ã㊠åŒç€Ÿã®ããã°ã¯ç·šéããŒã ã«ãã£ãŠéå¶ãããŠããŸããåã
ãéçºããŒã ã«æå±ããªããæå¿ãšããŠæŽ»åããŠãããããªããŒã ã§ãããããã£ãŠãããžã§ã¯ããå¿ããã¿ã€ãã³ã°ã§ã¯åå ã§ãããä»ã®ããã°ç·šéã¡ã³ããŒã«ãé¡ããããããªç¶æ
ã§éå¶ããŠãããŸããçŸåšã¯æ°äººã§éå¶ããŠããŸãã 圹å²ãšããŠã¯ã以äžã®4ã€ã§ãã èšäºã®ããŒãã®ææ¡ åçš¿ã®æ·»å ã¯ãŠãªããã°ãžã®å
¥çš¿ããµã ãã€ã«ã®äœæ 瀟å
ãžã®å®£äŒ ããŸããã£ãŠããªãããš ãŸãããŸããã£ãŠããªãããšããå
±æããŸããããŸããã£ãŠããªãããšãããåæã§ããŸããã£ãŠããããšãå
±æã§ããã»ããçŸåšã®ç¶æ
ãææ¡ãããããšèããããã§ãã èªçºçã«æžããã人ãåºãŠããä»çµã¿ã¥ãã ãããªãã«ã¢ã¯ãã£ãã«æçš¿ã§ããŠããåŒç€Ÿã®ããã°ã§ããããããã®ã»ãšãã©ã¯ããã°ç·šéããŒã ãæ¡çšæ
åœãã話ãæã¡ãããããšãå€ãã§ããæ¯ççã«ã¯ ç·šéããæã¡ããïŒå·çè
ã®æã¡ãã¿ïŒïŒïŒïŒ ãããã®æèŠã§ãã ç·šéæ
åœè
ããã®å·çäŸé ŒãããŒã¹ã«ãªã£ãŠãããããã¹ã±ãŒã«ãã«ããåé¡ããã£ããèšäºããªããŠæçš¿ã§ããªãé±ãçºçãããããŠããŸãããããšãããéå¶ã§ãã£ãŠããã®ã§å€§ããªèª²é¡ã«ã¯ãªã£ãŠããŸããããæçš¿ãå®å®ãããããã«ã¯èªåŸçã«æçš¿ããããšæããä»çµã¿ã¥ãããå¿
èŠããªãšæã£ãŠããŸãã ãŸãç·šéæ
åœè
ããã®æã¡ããã ãšãçžæã®éœåãã¢ãããŒã·ã§ã³ããªããªã©æãããããšããããªãã«ãããŸããäŸé ŒãããŠæããããšããã®ã¯åœããåã§ããåœããåãªã®ã§ãããã£ã±ãæåã¯ç²Ÿç¥ãããæžããŸããåèªèº«ã¯2幎ã»ã©æ
åœããäžã§æ
£ããã®ã§ãããæ
£ãããŸã§ã¯ããã©ãæ°ãããŸãããã®ããèªåŸçã«æçš¿è
ãåããä»çµã¿ããããšããã°ãéå¶ãããšããæå³ã§å®å®ãããšæããŸããé£ããããšã ãšãããã€ã€ä»åŸã暡玢ããŠããããã§ãã æè¡çãªèšäºãåºã«ãã åŒç€Ÿã®ããã°ã¯æè¡ãã®ãã®ã«ãã©ãŒã«ã¹ããèšäºãšããããããããžã§ã¯ãããããã¯ãã«ãã©ãŒã«ã¹ããèšäºãåºãããåŸåã«ãããŸãããã®ããã°ãæèªããŠãã ãã£ãŠããæ¹ã¯ãåç¥ãããããŸããããæè¡ã«ãã©ãŒã«ã¹ããèšäºã¯1å¹Žã§æ°æ¬ããã§ãªãåŸåã«ãããŸããã ãã ãæšå¹ŽåŒç€Ÿã®Zenn Publicationãå§åããããšã§ç¶æ³ãå°ãå€ãããŸããã çµæãšããŠæè¡ãã®ãã®ã«ãã©ãŒã«ã¹ããèšäºã¯Zenn Publicationã§ä»¥åã«æ¯ã¹ããšæŽ»çºã«æçš¿ãããããã«ãªããŸããã ãã®ããšããèããã«ãåŒç€Ÿã®ç¹æ§ãšããŠæè¡çãªèšäºãæçš¿ãããªãã£ãã®ã§ã¯ãªããæè¡çãªèšäºãæçš¿ãã«ããé°å²æ°ããã£ããæçš¿ãŸã§ã®ã¹ããããéãã£ãã®ã ãšæããŸããZenn Publicationã¯å
¥çš¿ãŸã§ã®ã¹ããããå人ã§å®çµããããã«ãªã£ãŠããããšã§ãæ°è»œã«æçš¿ãããšããã¢ã¯ã·ã§ã³ãåãããããªã£ãã®ã ãšæããŸãã å³å¯ã«æ±ºãŸã£ãŠããããã§ã¯ãããŸãããããããã¯ããäŒç€Ÿã®æ
å ±ãæ±ããã®ã¯ããã¯ããã°ãæè¡åäœã«ãã©ãŒã«ã¹ããèšäºã¯Zennãšããæ£²ã¿åããã§ããããšã§ããžã£ã³ã«ã«ãããã¢ãŠãããããããããç°å¢ã«ãªã£ããšæããŸããããã¯ããã°ãšããŠã¯æè¡çãªèšäºãåºã«ãããšãã課é¡ã¯æ±ãããŸãŸã§ããã瀟ãšããŠã¯æè¡èšäºãã¢ãŠãããããããããã«ãªã£ãã®ã§è¯ãã£ããšæããŸãã ããŸããã£ãŠããããš é±æ¬¡ããŒãã£ã³ã°ã®éçš ããã°ç·šéããŒã ã§ã¯ã鱿¬¡ããŒãã£ã³ã°ãè¡ã以äžã宿œããŠããŸãã èšäºã®é²æç¢ºèª èšäºã®æ·»å èšäºã®åè£æ¢ã é²æç¢ºèªãæ·»åãªã©ãããŸããã£ãŠãããšãããšããããããŸãããããŒãã£ã³ã°ãã¹ãããããã«æ¯é±åãçµããŠããããšèªäœãããŸããã£ãŠããããšã ãšæããŸããã¡ã³ããŒéœåã§åå ã§ããªãé±ã¯ãããŸããã誰ãã¯å¿
ãåå ã§ãããããªã¡ã³ããŒã§æ§æã§ããŠããããšã«æå³ããããšæã£ãŠããŸããæ¯é±å¿
ã宿œããã¹ã±ãžã¥ãŒã«ãææ¡ã§ããŠããããšã§çµæãšããŠããã°èšäºã宿çã«åºããŠããããã«æããŸãã ç°ãªãããŒã ã®ã¡ã³ããŒã§æ§æãããŠããããæ
å ±ãå€ã ããŒã ã¯ããããç¶æ³ãç°ãªããããæã£ãŠããæ
å ±ãèŠããŠããç°å¢ãç°ãªããŸãããã®ããè€æ°ã®æå±ã§ããŒã ãæ§æãããŠããããšã§ã瀟å
ã®æ
å ±ãèŠãããããªãããã«æããŸããçŸåšã¯å·çäŸé Œãåæã«ãããªãã¬ãŒã·ã§ã³ãšãªã£ãŠããããšãããããããããªäººã®ç¶æ³ãèŠããããã«ãªã£ãŠããããšã§ã¢ã€ãã£ã¢ãèŠã€ãããããªã£ãŠããããã«æããŸãã æ¡çšæ
åœã絡ãããšã§å¹
ã®åºãæ
å ±ãåºã æ¡çšæ
åœãšå®æçã«ã³ãã¥ãã±ãŒã·ã§ã³ãåãããã«ããŠãããŸããæ¡çšæ
åœã¯æšªæã§ãããããªãããžã§ã¯ãã®çŸç¶ãææ¡ããŠããããããããžã§ã¯ãã®ç¶æ
ã«å¿ããã¢ã€ãã£ã¢ãããããããšãå€ãã§ãã ããã¯ããã°ã«æ¡çšã®è²ã匷ãåºãããŠããŸããšãèªã¿æã«ãšã£ãŠåŸããããã®ããªãæå³ã®ãªãèšäºã«ãªã£ãŠããŸããšæã£ãŠããŸããããã¯ãã®ããã°ãéå¶ããæã
ã«ãšã£ãŠãåºãã€ã³ã¿ãŒãããã®æµ·ã§å¶ç¶ã«ããã®èšäºã«ãã©ãçããŠãã ãã£ãæ¹ã«ãšã£ãŠãäžå¹žãªããšã§ãããã®ããæ¡çšæ
åœã«é¢ãã£ãŠããã£ãŠã¯ããŸãããèšäºã®å
容ã«ã€ããŠã¯åºæ¬çã«ç·šéããŒã ãšå·çè
ã§æ±ºããŠãæ¡çšç®çã«ãªããããªãããæ°ãã€ããŠããŸãããã£ãŠããããšã®å·¥å€«ãåçãèªã人ã«ãšã£ãŠäŸ¡å€ã«ãªããšæãã®ã§ã俯ç°çãªèšäºã¢ã€ãã£ã¢ãããããæ¡çšæ
åœã«ã¯ç¶ç¶çã«é¢ãã£ãŠã»ãããšæããŠããŸãã ç·šéæ
åœè
ãã°ãã€ããŠãã èšäºãå·çããã«åœãããããã°ç·šéããŒã ãã1人ãæ
åœãå·çè
ããµããŒãããŠããŸãã人æ°ã«äœè£ããããšããããšããããŸãããç·šéæ
åœè
ãç¹å®ã®å人ã«äŸåããŠããªããšããã®ã¯è¯ãããšã ãšæã£ãŠããŸããç·šéæ
åœè
ãã€ãããšã«ãã£ãŠèšäºã®è³ªã¯äžãããŸããããã®ä»çµã¿èªäœãã€ããã«ã¯ã©ãããŠã人ãå¿
èŠã§ãããç¹å®ã®å人ã«äŸåããŠãããšåæã«å¶äœã§ããèšäºã®æ°ã«éçããããŸããããã°ç·šéããŒã ãã¢ã¯ãã£ãã«åãã人ãã¡ã§åœ¢æã§ããã®ã§ãèšäºã宿çã«åºããŠããã®ã ãšæããŸãã äžæ¹ã§ç·šéæ
åœè
ãã€ããªããšèšäºãåºããªããšããããšã§ããããããèªåãã¡ãããã«ããã¯ã«ãªããªãããã«æŽ»åã¯ããŠãããã°ãšæã£ãŠããŸãã 瀟å
ããã¥ã¡ã³ããå©çšããLLMã«ãããã¿æ¢ãïŒè©ŠéšéçšäžïŒ ãã¿ã«å°ã£ããšãã«ã¯åŒç€Ÿã®ããã¥ã¡ã³ããLLMã«ã€ã³ããããšããŠäžããããã¯ããã°ã®èšäºãšããŠäœ¿ããããªã¢ã€ãã£ã¢ãæ¢ãããŠããŸããåŒç€Ÿã¯ esa ã«æè¡çãªåãçµã¿ã課é¡ãèãæ¹ãªã©ããŸããŸãªæç« ãä¿åãããŠããããããã®å
容ããã¢ãŠãããããåŸãããšããŠããŸãã èšäºã«ã§ããªããããªãã®ãã»ãšãã©ã§ãããããŸã«ãããããªãã®ãèŠã€ãã£ããããŠããŸãã瀟å
ã®åãçµã¿ãç¥ãããšãã§ããŠããã圹ã«ç«ã€ãã©ããã¯ãããŠãããŠä»åŸãç¶ããŠããããæœçã§ãã ãã®åãçµã¿ã¯ã @_kimuson ã®è²¢ç®ã倧ãããã€ãå©ããŠããã£ãŠããŸãã_kimusonãå·çããèšäºãããã€ãã§ãŠããã®ã§ãããããã°èªãã§ã¿ãŠãã ããã ãã£ãŠããªãããš èšäºã®è©äŸ¡ çŸåšã¯èšäºã®PVã䌞ã³ãããšããè©äŸ¡ã¯è¡ã£ãŠããŸãããè¡ã£ãŠããªããšãããé£ããããã§ããŠããªããšããã®ãæ£ãã衚çŸã ãšæããŸãã ã€ã³ã¿ãŒãããäžã«æçš¿ãããèšäºã®è²¢ç®ãšã¯ããã¬ãã¥ãŒæ°ã®ããã«ããããããæ°å€ã§èŠãããã®ãããã°èªè
ãžã®è²¢ç®åºŠãªã©æ°å€ã§èŠããªããã®ããããšæããŸãã1ã€ã®èšäºã«ãã£ãŠäŸ¡å€ãæå€§åããããšãããšæ€èšã®ãã§ãŒãºãæãŸã£ãŠããŸãèšäºãåºãããšã®ããŒãã«ãé«ããªããããŠããŸããŸããããæ¯æ¥100æ¬ã®èšäºãçãŸããã®ã§ããã°å®æœããã»ããè¯ããšæããŸãããä»ã®ãã§ãŒãºã§ã¯æã«æ°æ¬ããèšäºã¯åºãªãã®ã§èããªããŠãè¯ããšæããŸãã æåŸã« ä»åã¯ããã¯ããã°èªäœã®éå¶ãããŸããã£ãŠããããšãªã©ãæŽçããŠã¿ãŸãããããããäŒç€Ÿã«ãã£ãŠããã¯ããã°ã®éå¶ã圹å²ãªã©å€å²ã«ããããšæããŸããä»åŸãçããã«åœ¹ç«ã€èšäºãå
¬éã§ããã°ãšæããŸãã
äºäžå€§èŒïŒãã®ãã ã ãããïŒãšç³ããŸããBPRæšé²éš ãã£ãªã¢æšªæéçºã°ã«ãŒãã¡ã³ããŒãšããŠã2023幎ã«ãšã¹ã»ãšã ã»ãšã¹ã«å
¥ç€ŸããããŸããã ããšããšã¯ä¿è²å£«ãç®æããä¿è²å£«è³æ Œã»å¹Œçšåæè«äºçš®ãååŸããã®åŸãå®¶åºã®äºæ
ãšITåéãžã®èå³ããITæ¥çãžè»¢èº«ããå¶æ¥è·ãçµãŠãçŸåšã¯ãšã³ãžãã¢è·ã§ããŒã ãªãŒããŒãåããŠããŸãã ç°æ¥çš®ããITåéãž ç§ãè²ã£ãå°åã§ã¯å
±åãã®å®¶åºãå€ãã幎霢ã«é¢ãããåã©ããã¡ãéãŸã£ãŠéã¶ç°å¢ã§ããããã®äžã§åã©ãã®æé·ãæ¯æŽãããèããæã€ããã«ãªããåŠç«¥ä¿è²ãã©ã³ãã£ã¢ã®çµéšãçµãŠç倧ã«é²åŠããä¿è²å£«ã»å¹Œçšåæè«è³æ ŒãååŸããŸããã ããããå®¶åºã®äºæ
ã«ããä¿è²å£«ãç¶ããããšãé£ãã転è·ãæ€èšããŠãããšããã芪æã®èŠãããITåéãžèå³ãæã€ããã«ãªããããã°ã©ãç³»ã®å°éåŠæ ¡ãžå
¥ãçŽããŠããITæ¥çãžè»¢èº«ãããŸããã å°éåŠæ ¡åæ¥åŸã«å
¥ç€ŸããäŒæ¥ã§å¶æ¥è·ã®èœå驿£ãèŠåºãããå¶æ¥ã«é
å±ãããŸããã å¶æ¥è·ã§ã¯ãã客æ§ã®èª²é¡ãæ·±ããã¢ãªã³ã°ãããã®è§£æ±ºçãææ¡ããããšã«ãããããæãã顧客èŠç¹ã®éèŠæ§ãåŠã³ãŸããããã®å¶æ¥çµéšã¯ã衚é¢çãªåé¡è§£æ±ºã«çãŸãããäºæ¥éšãšé£æºããŠèª²é¡ã®æ ¹æ¬åå ãæãäžããå
±éèªèãæã£ãäžã§ã·ã¹ãã éçºãé²ããçŸåšã®æ¥åã«ã掻ããŠããŸãã è»¢è·æŽ»åãšãšã¹ã»ãšã ã»ãšã¹å
¥ç€Ÿ äžæ¹ã§éçºããããæãã諊ããããããšã³ãžãã¢ãç®æã転è·ãéçºå®çžŸããªãäžãOAäºåãšããŠå
¥ç€Ÿããæ¥åæ¹åããŒã«ã®éçºãéããŠç€Ÿå
çµéšãç©ã¿ã念é¡ã®ãšã³ãžãã¢ãžãšè»¢å±ããŸããããšã³ãžãã¢è»¢å±åŸã¯ãSalesforce顧客管çã·ã¹ãã ã®éçºãäžéãçµéšãæŽãªãæé·ãæ±ããã³ãã£ãŒãžè»¢è·ããSalesforceã«å ãAWSã€ã³ãã©ãªã©å¹
åºãæè¡ãç¿åŸããŸããã åè·ã§ã¯Salesforceã®å¥çŽçµäºã«äŒŽãè»¢è·æŽ»åãéå§ãSalesforceã®çµéšã掻ããã€ã€ãéçºäœå¶ãæŽã£ãç°å¢ã§èªèº«ã®æé·ã远æ±ããããšèããŠãããšããã転è·ãšãŒãžã§ã³ããéããŠãšã¹ã»ãšã ã»ãšã¹ãã玹ä»ããã ããŸãããçè°·ãããšã®é¢æ¥ãããšã¹ã»ãšã ã»ãšã¹ãžã®å
¥ç€Ÿã®æ±ºãæãšãªããŸããïŒç§ã颿¥ãããŠããã£ãçè°·ãããå
¥ç€Ÿãšã³ããªãŒãæžããŠããŸãã®ã§æ¯éãåç
§ãã ããïŒïŒ äºã€è¿äºã§æžãããç§ã®ãã£ãªã¢ããšãè»¢è·æ±ºæè©±ã ) çè°·ãããããšã¹ã»ãšã ã»ãšã¹ã®äººæç޹ä»äºæ¥ã«ãããæ¥ååºç€ã·ã¹ãã ã«Salesforceãæ¡çšãããŠãããäºæ¥æé·ã«äŒŽãèŠæ±ã®è€éåã»é«åºŠåã«å¯Ÿå¿ãããããå
±ã«èª²é¡è§£æ±ºã«åãçµã仲éãæ±ããŠãããšããã話ã䌺ããŸãããèªèº«ã®å¶æ¥ãšéçºåæ¹ã®çµéšã掻ããããšæããããšããããŠã¢ãžã£ã€ã«éçºå°å
¥ã«åããçµç¹äœå¶ã¥ãããé²ããããŠããããšãç¥ããèªèº«ã®æé·ã«ç¹ããç°å¢ã ãšç¢ºä¿¡ããŸããã ãŸããçè°·ããã®ãšã¹ã»ãšã ã»ãšã¹ã§ã®åçµã¿ãããšã³ãžãã¢èªèº«ãäž»äœãšãªã£ãŠèª²é¡è§£æ±ºã«åãçµãã§ãã話ããããšã¹ã»ãšã ã»ãšã¹ã«é
åãæãå
¥ç€Ÿã決ããŸããã ãã£ãªã¢äºæ¥é åã«ãããç§ã®ããŒã ã®åœ¹å² ãã£ãªã¢äºæ¥é åã¯å»çã»ä»è·/é害çŠç¥æ¥çã®äººæäžè¶³ãšãã課é¡è§£æ±ºã䜿åœãšãã人æç޹ä»ãµãŒãã¹ãéããŠèª²é¡è§£æ±ºã«åãçµãã§ããŸããç§ãæå±ããéçºããŒã ã¯ãå»çã»ä»è·äºæ¥è
ã®åãæã欲ããããŒãºã«å¿ããã¹ãã人æç޹ä»ãµãŒãã¹ã®æ±äººæ
å ±ãå
å®ãããããã®æ©èœãæäŸããŠããŸãã ããŒã ãªãŒããŒãšããŠã®åœ¹å² äžè¬çãªéçºããŒã ãªãŒããŒã®ã€ã¡ãŒãžãšããŠã責任ç¯å²ã®åºãããæ¥åãéäžããŠããŸããããã«ããã¯ã«ãªããããã£ãããäŒè°äœãå€ããªãã€ã¡ãŒãžãããããšæããŸãã ããã§ããããã®èª²é¡ã«ã€ããŠã¯ã¹ã¯ã©ã ãå°å
¥ã責任ç¯å²ãããŒã ã«åæ£ããããšã§è§£æ±ºããŸããã äºç®ç®¡çãå¥çŽé¢ãªã©äžå€®éæš©åçµç¹ãšããŠã®å¿
èŠæäœéã®ãããžã¡ã³ãæ¥åã¯ãªãŒããŒã«å§ããããŸãããã¹ããŒã¯ãã«ããŒãšã®äŒè°ã«ã¡ã³ããŒãåå ããããšã§ã課é¡ãžã®çè§£ãæ·±ãå®è£
æã®ãªã¹ã¯ãäºåã«åé¿ã§ããããèŠä»¶å®çŸ©ã®æç¹ããããŒã ãå·»ã蟌ãã§èª¿æŽçªå£ãšããŠã®æ©èœãã¡ã³ããŒèªèº«ãæ
ãããšã§ããªãŒããŒãããã«ããã¯ã«ãªãããšãªããè€æ°ã®éçºæ¡ä»¶ãåæã«å®è¡ã§ããããã«ããŠããŸãã ïŒã¹ã¯ã©ã ã®ã€ãã³ãã«é¢ããå
·äœçãªåãçµã¿ã¯ãã¡ããã芧ãã ããïŒ https://tech.bm-sms.co.jp/entry/2024/12/17/100000_1 ïŒ åãçµãã§ããããŒã èª²é¡ ç§ãã¡ã®ããŒã ã¯ãã¹ã¯ã©ã ã§éçºæ¡ä»¶ãé²ããäžã§ãããŸã§èŠããŠããªãã£ãããã€ãã®èª²é¡ã«çŽé¢ããŸããã ãã®äžã§ãç¹ã«å€§ããã£ãã®ããããŒã çºè¶³åã«åã¡ã³ããŒãå°ä»»ã«è¿ãç¶æ
ã§æ
åœããŠããæ©èœãããããã¬ããžãã¹ãã«ã«åããçããŠããããšã§ãã ãã®èª²é¡ã解決ãããããç§ãã¡ã¯ç©æ¥µçã«ããŒã å
ã§è©±ãåãã®å Žãæã¡ãŸããã 課é¡è§£æ±ºãžã®ç¬¬äžæ©ïŒããŒã æ¹åMTGã®æŽ»æ§å ãŸãåãçµãã ã®ã¯ãããŒã æ¹åMTGãããæŽ»çºã«ããããšã§ãããããã£ãšããããã°ããŒã ãããŸãåãã®ã§ã¯ãªããããšããã¢ã€ãã¢ãåºãŠããå人ã®çºæ£ã§çµãã£ãŠããŸãããšããããŸãããããé²ããããã¡ã³ããŒãæèŠãåºããããé°å²æ°ãäœãããã®MTGãæ°ãã«éå¬ããããšãææ¡ããŸããã ãã®MTGã§ã¯ãåã¡ã³ããŒãä»ç®ã䜿ã£ãŠèªç±ã«ã¢ã€ãã¢ãåºãåããããããå
±æããªããè°è«ãé²ããŸããããã®çµæãããã¬ããžãèç©ããå Žæããããã¬ããžã«èšå
¥ããã¹ãå
容ãã«ã€ããŠãããŒã å
šå¡ã§åæåœ¢æãå³ãããšãã§ããŸããã ãã¬ããžå
±æã®åºç€ïŒæ
å ±å
±æãµãŒãã¹esaã®æŽ»çš ããŒã ã§èç©ãããã¬ããžã¯ãæ
å ±å
±æãµãŒãã¹ã®esaãæŽ»çšããŠäžå
管çããŠããŸããesaã¯ãæ©èœä»æ§ã ãã§ãªããå©çšè
ããããŠå©çšè
ã®éçšæ¹æ³ã«ã€ããŠãèšé²ããããã«ããŠããŸãã æ©èœä»æ§: ã·ã¹ãã ã®èšèšãå®è£
ã«é¢ããåºæ¬çãªæ
å ±ã¯ãã¡ããã®ããšã å©çšè
: ã©ã®ãããªç®çã§æ©èœãå©çšããŠããã®ããã©ã®ãããªèª²é¡ãæããŠããã®ããšãã£ãããŠãŒã¶ãŒèŠç¹ã®æ
å ±ã å©çšè
ã®éçšæ¹æ³: å®éã«ã©ã®ãããªæé ã§æ©èœã䜿ãããŠããã®ããšãã£ããå
·äœçãªå©çšç¶æ³ã ãããã®æ
å ±ãå
±æããããšã§ãéçºè
åŽã®èŠç¹ã ãã§ãªãããŠãŒã¶ãŒã®èŠç¹ãå®éã®å©çšç¶æ³ãèžãŸããæ¹åæŽ»åã«ç¹ããããšãã§ããŸãã ã¹ãã«ã®åãè§£æ¶ãžã®åãçµã¿ ã¹ãã«ã®åããè§£æ¶ããããã®å
·äœçãªã¢ã¯ã·ã§ã³ãšããŠã以äžã®2ã€ã®åãçµã¿ãå§ããŸããã æè¡åéã«ã€ããŠã®å匷äŒã®éå¬: åã¡ã³ããŒã®åŸæãªåéãèå³ã®ããæè¡ã«ã€ããŠå匷äŒãéå¬ããããŒã å
šäœã®æè¡åãåºäžããç®æããŸãã æ©èœãå
šå¡ã§çè§£ããããã®ã°ã«ãŒãã¯ãŒã¯: ç¹å®ã®æ©èœã«ã€ããŠããŒã å
šå¡ã§éãŸãã仿§ãèªã¿è§£ããããå®éã«è§Šã£ãŠã¿ããããªãããçžäºçè§£ãæ·±ããŸãã ãããã®åãçµã¿ãéããŠãããŒã ã®ãã¬ããžã»ã¹ãã«ã®åãã®è§£æ¶ãç®æããŠããŸãã ããŒã ãªãŒããŒãšããŠã®ãããã ãšã¹ã»ãšã ã»ãšã¹ã®ãé«éœ¢ç€ŸäŒã«é©ããæ
å ±ã€ã³ãã©ãæ§ç¯ããããšã§äººã
ã®ç掻ã®è³ªãåäžãã瀟äŒã«è²¢ç®ãç¶ããããšããããã·ã§ã³ã«å¯ŸããŠãããŒã ãšããŠäœãããããšã§è²¢ç®ã§ããããèããäºæ¥éšãšã³ãã¥ãã±ãŒã·ã§ã³ããšããªãã課é¡ãçºèŠããè§£æ±ºæ¹æ³ãèŠåºããŠããããšã«ããŒã ãªãŒããŒãšããŠãããããæããŸãã å人çãªãããããæ¥œãã¿ ãšã¹ã»ãšã ã»ãšã¹ã§ä»äºãããäžã§å€§ããªãããããšãªã£ãŠããã®ãããã€ãŠç®æããŠããä¿è²å£«ãšããŠã®çµéšããã鿥çã§ã¯ãããŸããä¿è²æ¥çã®åŽå人å£å¢å ãå®çæ¯æŽã«è²¢ç®ã§ããŠãããšæããããããšã§ããèªèº«ã¯ããä¿è²å£«ã§ã¯ãªãçºãçŸå Žã«çŽæ¥ããããããšã¯ã§ããŸããããä¿è²æ¥çãããè¯ããªã£ãŠããçºã®ã·ã¹ãã æäŸãåºæ¥ãã°ãšæãä»äºã«åãçµãã§ããŸãã ãããã« ç§ãã¡ã®ããŒã ãæå±ãããã£ãªã¢äºæ¥é åã¯ãä»åŸããµãŒãã¹é åãæ¡å€§ããŠããæ¹éã§ãããã®ãããå°æ¥ã®äºæ¥æ¡å€§ãèŠæ®ããã·ã¹ãã å
šäœã®æé©åãšãå€åã«çŽ æ©ã察å¿ã§ããããŒã äœããæ¥åãšãªã£ãŠããŸãã ããŒã äœå¶ã¯çºè¶³ããã°ããã§ããŸã å€ãã®èª²é¡ããããŸããããããç§èªèº«ãã¡ã³ããŒãšå
±ã«èª²é¡ãçºèŠãã解決ããŠããéçšã«å€§ããªãããããæããŠããŸãã äºæ¥ã®ç®æšã課é¡ãæ·±ãçè§£ããã·ã¹ãã ãéããŠç€ŸäŒã«è²¢ç®ããŠããããšã¯æ±ºããŠç°¡åãªææŠã§ã¯ãããŸãããããããç§ãã¡ãšå
±ã«ãã®éèŠãªããã·ã§ã³ã«æ
ç±ãæã£ãŠåãçµãã§ããã ããæ¹ããåŸ
ã¡ããŠããŸãïŒããŒã ãªãŒããŒåéã®è©³çްã¯ãã¡ãïŒ https://open.talentio.com/r/1/c/smsc/pages/104978 ïŒã
ã¯ãããŸããŠã人æç޹ä»éçºã°ã«ãŒãã§çè·åž«åã人æç޹ä»ã ããŒã¹å°ç§ è»¢è· ãã®WEBéçºãæ
åœããŠããè€äºãšç³ããŸãïŒ 2024幎4æã«åœç€Ÿã«å
¥ç€ŸããŠãããã£ãšããéã«1幎ãçµéããŸãããæ¬çš¿ã§ã¯äž»ã«ã¹ã¯ã©ã ã«é¢ããŠå
¥ç€Ÿåœåã«ç§ãæãã課é¡ãšã課é¡ã«å¯ŸããŠè¡ã£ãŠããã¢ã¯ã·ã§ã³ãã玹ä»ã§ããã°ãšæããŸãã â»ç§ãå«ããéçºãè¡ããšã³ãžãã¢ããŒã ãšäºæ¥éšã®ããŒã±ã¿ãŒïŒäž»ã«ã¯é客ã«è²¬ä»»ãæã¡ã€ã€ãäºæ¥æé·ãããã·ã§ã³ãšããããŒã±ãã£ã³ã°çµç¹ïŒã床ã
ç»å ŽããããããããããéçºããŒã ããããŒã±ã¿ãŒããšåŒã°ããŠé ããŸãã ã¹ã¯ã©ã ã®äœå¶ã«ã€ã㊠ãããŒã¹å°ç§ 転è·ãã§ã¯ä»¥äžã®ã¹ã¯ã©ã ã€ãã³ãã1é±éã¹ããªã³ãã§å®æœããŠããŸãã ãã€ãªãŒã¹ã¯ã©ã ã¹ããªã³ããã©ã³ãã³ã° ã¹ããªã³ãã¬ããã¹ãã¯ãã£ã ãªãã¡ã€ã³ã¡ã³ãïŒé©å®ïŒ ãªãªãŒã¹ãé©å®è¡ãããéçšäœå¶ã®ãããã¹ããªã³ãã¬ãã¥ãŒãšããŠãŸãšãŸã£ãæéããšã£ãŠè¡ãã®ã§ã¯ãªããã¿ã¹ã¯ããšã«æ
åœè
ãããŒã±ã¿ãŒãšææç©ã®ç¢ºèªã宿œããŠããŸãã å
¥ç€Ÿæã«æããèª²é¡ ç§ã¯ããŒã ãã¹ã¯ã©ã ãåãå
¥ããŠå幎çšåºŠã®é ã«åç»ãããããåœæã¯ããŒã ãåŸã
ã«ã¹ã¯ã©ã ã«æ
£ããŠããŠããæ®µéã§ããããã®ç¶æ³ã§ç§ã¯ç¹ã«ãéçºããŒã å
ã®éææ§ããšãéçºããŒã ãšããŒã±ã¿ãŒã®è·é¢ãã«æ¹åã®äœå°ããããšæããŠããŸããã éçºããŒã å
ã®éææ§ ãã€ãªãŒã¹ã¯ã©ã ã§å¯Ÿå¿å
容ã®å
±æã¯è¡ã£ãŠãããã®ã®åºæ¬çã«åã§åããŠãã äœãããŒã ã§èª²é¡ãšãªã£ãŠãããã®ææ¡ãé£ããã£ã æ¥äžå°ã£ãæã«çžè«ããã®ã«éå£ããã£ã éçºããŒã ãšããŒã±ã¿ãŒã®è·é¢ é±1åã®å®äŸã§ã¿ã¹ã¯äŸé Œã®å
±æãè¡ããã以å€ã¯åºæ¬æ
åœè
å士ã§ãããšã ããŒã±ã¿ãŒã¯ã¹ã¯ã©ã ã«ã¯æªåå éçºããŒã ãããŒã±ã¿ãŒããäºããäœãããŠããã®ãææ¡ãã¥ãã äžèšã®ãããªäºè±¡ãçºçããŠããããšã§ã¹ã¯ã©ã ã®äžæ¬æ±ã§ãããéææ§ã»æ€æ»ã»é©å¿ããååã«æ©èœãåããŠããªãã£ããããããããæ¹åããããšã§ããŒã ãšããŠããã«æé·ããããšãã§ãããšèããŠããŸããã å®è·µã¢ã¯ã·ã§ã³ äžè¿°ãã課é¡ã解決ããããã«ããããŒã ãã«ãã£ã³ã°ããã¹ã¯ã©ã ã€ãã³ãã®æ¹åããã³ãã¥ãã±ãŒã·ã§ã³ã®æ¹åãã®å€§ããåããŠ3ã€ã®èгç¹ããæ¹åã®ã¢ã¯ã·ã§ã³ã宿œããŸããã ããŒã ãã«ãã£ã³ã° ã¹ã¯ã©ã ã¬ã€ãã®èªã¿åãã ã¹ãã«ãããã®äœæ ãã©ãã«ãŒé¢šãšã¯ãµãµã€ãº ã¯ãŒãã³ã°ã¢ã°ãªãŒã¡ã³ã ã¹ã¯ã©ã ã€ãã³ãã®æ¹å ãã€ãªãŒã¹ã¯ã©ã ã¬ããã¹ãã¯ãã£ã ãªãã¡ã€ã³ã¡ã³ãã»ãã©ã³ãã³ã°ïŒããŒã±ã¿ãŒã®åå ïŒ ã³ãã¥ãã±ãŒã·ã§ã³ã®æ¹å éçºããŒã ãšããŒã±ã¿ãŒã§1on1ããŒãã£ã³ã°ã®å®æœ ãªãã©ã€ã³ã€ãã³ãã®å®æœ ããããã«ã€ããŠè©³ãã玹ä»ããŠãããŸãã ããŒã ãã«ãã£ã³ã° ãŸãå§ãã«ãéçºããŒã å
ã§ã¡ã³ããŒéã®è·é¢ãçž®ãããšåæã«ã¹ã¯ã©ã ã«å¯ŸããèªèãåãããããšæãããŒã ãã«ãã£ã³ã°ã宿œããŸããã ããã§ã玹ä»ããããŒã ãã«ãã£ã³ã°ã¯äž»ã«ãã¢ãžã£ã€ã«ãµã ã©ã€ïŒJonathan Rasmussonè 20011.7.16ïŒãã«èšèŒã®å
容ãåèã«ããŠè¡ããŸããã æŽ»å å
容 ææ ã¹ã¯ã©ã ã¬ã€ãã®èªã¿åãã ã¹ã¯ã©ã ã¬ã€ããå
ã«çŸç¶ã®ããŒã äœå¶ã«ãªããããè³æãäœæããŠèªã¿åãã çŸç¶ã®èª²é¡ãšã©ãããã¹ããã«ã€ããŠã®æŠãåãããè¡ãããšãã§ãã ã¹ãã«ãããã®äœæ éçºã«æ±ããããã¹ãã«ãåæãããã®ã¹ãã«ã«å¯Ÿããç¿ç床ãžã®èªä¿¡ãåç ããŒã ã®åŒ·ã¿ã»åŒ±ã¿ã®ææ¡ãå°ã£ãæã®æ ãæã®çºèŠã«ç¹ãã£ã ãã©ãã«ãŒé¢šãšã¯ãµãµã€ãº èªåã¯äœãåŸæãªã®ãã»å€§åã«æã䟡å€ã¯äœãã»äœãæåŸ
ãããŠãããšæããã»ä»ã®ã¡ã³ããŒã«äœãæåŸ
ããããçºè¡šãåã ã¡ã³ããŒéã®èªèãåããããšåæã«ã¢ãããŒã·ã§ã³ã®åäžã«ãç¹ãã£ã ã¯ãŒãã³ã°ã¢ã°ãªãŒã¡ã³ã ãã€ã³ããšã¢ã¯ã·ã§ã³ã®äž¡åŽé¢ã§æèŠãåºãåããããŒã ã®çŽæäºãšå€§äºã«ããããšã決ãã ããåããããããŒã ã«ããããã«ãäºãæèãã¹ãããšã話ãåãè¯ãæ©äŒã«ãªã£ã ã¹ã¯ã©ã ã€ãã³ãã®æ¹å ãã€ãªãŒã¹ã¯ã©ã ãã€ãªãŒã¹ã¯ã©ã ã¯ç¶æ³å ±åã®å Žã«ãªã£ãŠãããããã¹ããªã³ãã®æ€æ»ãé©åã«è¡ãããã®å Žã«ããããšãæèããŠã¢ã¯ã·ã§ã³ãå®è·µããŸããã æ¹ååïŒãã€ãªãŒã¹ã¯ã©ã ãŸã§ã«ãŸãšããŠãããæšæ¥ãã£ãããšã»ä»æ¥ããããšã»å°ã£ãŠããããšãå
±æ ã¡ã³ããŒã«ãã£ãŠæ
å ±ã®ç²åºŠãéãç¶æ³ãææ¡ãã«ããã£ã ã¹ããªã³ãã®å
šäœåãããããæ€æ»ããã«ããã£ã æ¹ååŸïŒã¹ããªã³ãã«ç©ãŸããããã¯ãã°ã¢ã€ãã ãããŒã¹ã«ããŠåèªæšæ¥ãã£ãããšã»ä»æ¥ããããšã»å°ã£ãŠããããšã®å
±æ ã¹ããªã³ãå
šäœã®ã¿ã¹ã¯ãèŠæž¡ããã®ã§èšæ©å¿å€ã«åãããããªã£ã ããã¯ãã°äžã«éçºæã®ã¡ã¢ãããŒã±ã¿ãŒãšã®ãããšããªã©ãèšèŒãããŠããã®ã§å
å®¹ã®ææ¡ããããããªã£ã ã¬ããã¹ãã¯ãã£ã ã¬ããã¹ãã¯ãã£ãã¯ããŒã ã§ã®ãµããããèªäœã¯ã§ããŠããã®ã§ãããããããã«å
·äœçãªã¢ã¯ã·ã§ã³ãžã®èœãšã蟌ã¿ãã§ããã°ãã£ãšè¯ããã®ã«ãªããšæããŠããŸããã æ¹ååïŒæ¯é±ã®ã¹ããªã³ãã§ã®åºæ¥äºãKPTAæ³ã§ãµãããã ãã®å Žãã®å Žã§ã®ãµããããã¯ã§ããŠããããã¹ã¯ã©ã ãæ¹åããŠãã£ãŠãã宿ã¯èãã£ã ã¢ã¯ã·ã§ã³ã¢ã€ãã ã®æ±ºå®ã«ããŸã泚åã§ããŠããªãã£ã æ¹ååŸïŒæ¯åããŒããæ±ºãæ§ã
ãªææ³ã䜿ã£ãŠãµãããããè¡ããæ¯åã¢ã¯ã·ã§ã³ã¢ã€ãã ãè°è«ããæéãèšãã ããŒãã«å¿ããŠç°ãªãææ³ïŒ5ã€ã®ãªããYWTãå°ããªã«ã€ãŒã³ã¢ã€ãã¢ãetcïŒã䜿ã£ãŠå¹æçãªãµããããã宿œïŒãã³ããªåã®é²æ¢ãïŒ miro ã䜿ã£ãŠèªåãæ°ã«ãªã£ãã»å
±æããä»ç®ã«å¯ŸããŠã¹ã¿ã³ããã€ããé¢å¿ãéãŸã£ãå
容ã«ã€ããŠè°è« 2,3åã«çµã£ãã»ããæ¬¡ã¹ããªã³ãã®ã¢ã¯ã·ã§ã³ãšããŠå®è·µããããæ¯é±ç¶ããããã£ã å€ãã®ã¡ã³ããŒã®é¢å¿ããã广çãªã¢ã¯ã·ã§ã³ã決ãããããããããŒã ãšããŠæ¹åãé²ããŠãããšå®æã§ãã ã¬ããã¹ãã¯ãã£ãèªäœã®ãµããããã宿çã«è¡ããããææçŸ©ãªæéãšãªãããæèŠãåºãåã£ãŠãã ãªãã¡ã€ã³ã¡ã³ãã»ãã©ã³ãã³ã°ïŒããŒã±ã¿ãŒã®åå ïŒ ãªãã¡ã€ã³ã¡ã³ãã»ãã©ã³ãã³ã°ã¯ãããŸã§éçºããŒã ã ãã§è¡ãªã£ãŠããŸããããããŒã±ã¿ãŒãšã話ãåããã¹ã¯ã©ã ã«æ¬æ Œçã«åå ããŠãããããäœå¶ãå€ããŠãããŸããã æ¹ååïŒããŒã±ã¿ãŒã¯ã¹ã¯ã©ã ã«æªåå ããŒã±ã¿ãŒãéçºããŒã ã®ç¶æ³ãææ¡ã§ããå Žããªãã£ã ã¹ããªã³ãã«ç©ãã¿ã¹ã¯ã®æææ±ºå®ãéçºãè¡ã£ãŠããèªèçžéãçºçããŠãã æ¹ååŸïŒæ¯é±ã®ãªãã¡ã€ã³ã¡ã³ããšãã©ã³ãã³ã°ã«å
¥ã£ãŠããã éææ§ãæ Œæ®µã«äžãã£ãããšã§èªèçžéãæžã£ã ãªãã¡ã€ã³ã¡ã³ãã®éã«ç¢ºèªäœæ¥ããã®å Žã§å¹ççã«æžãŸããããããã«ãªã£ã ç°å¢æ¹åã¿ã¹ã¯ã®å¿
èŠæ§ãçè§£ããŠããããŠè² åµã®è§£æ¶ã¿ã¹ã¯ãã¹ããªã³ãã«ç©ã¿ããããªã£ã ã³ãã¥ãã±ãŒã·ã§ã³ã®æ¹å éçºããŒã ãšããŒã±ã¿ãŒã§1on1ããŒãã£ã³ã°ã®å®æœ ãã¡ãã¯äººæç޹ä»éçºã°ã«ãŒãã®ã°ã«ãŒãé·ã§ãã @kenjiszk ããã®ææ¡ã§ãæ
åœé åããšã«éçºããŒã ã®ã¡ã³ããŒãšããŒã±ã¿ãŒã®ãªãŒããŒã§äž»ã«æ
å ±å
±æãç®çãšãã宿çãª1on1ããŒãã£ã³ã°ã宿œããããã«ãªããŸããã æ¹ååïŒã¿ã¹ã¯äŸé Œã®å
±æãè¡ãå®äŸã§ãã話ãå Žããªãã£ã ããŒã±ã¿ãŒã®æ¥åã«é¢ããæ
å ±ãç¥ãå Žãã»ãšãã©ãªãã£ã ããŒã±ã¿ãŒãå°ããªçžè«ããããæã«ã³ãã¥ãã±ãŒã·ã§ã³ããå Žããªãã£ã æ¹ååŸïŒé±æ¬¡ã§1on1ããŒãã£ã³ã°ã宿œããããšã§ã³ãã¥ãã±ãŒã·ã§ã³æŽ»æ§å ãäºãã®ç¶æ³ãææ¡ã§ããŠçžè«ãããããªã£ã ãã®1on1ããŒãã£ã³ã°ã®å®æœãéçºããŒã ã»ããŒã±ã¿ãŒéã®é¢ä¿æ§ã匷ãããã£ããã«ãªã£ã ãªãã©ã€ã³ã€ãã³ãã®å®æœ ãã¡ãã¯æ¹åã®ã¢ã¯ã·ã§ã³ãšããåç®ã§è¡ã£ãããã§ã¯ãªãã®ã§ãããæ§ã
ãªæ¹åãè¡ã£ãŠããçµæãéçºããŒã ãšããŒã±ã¿ãŒã§æ¬ç€Ÿã§ã®ãªãã©ã€ã³ã€ãã³ãã宿œããããšãã§ããŸããïŒ ãã€ãã³ãã®è©³çްã ããŒã 察æNASAã²ãŒã ïŒããŒã ã§åæåœ¢æãè¡ãã³ã³ã»ã³ãµã¹ã²ãŒã ã®äžçš®ïŒ ãã®åŸã®ãµãããããããŒã ã§è¡ããããå
ã«ããŒã ã®é°å²æ°ãè¯ãããæå³ 話ããããšããªã人ãšã話ããããäºãã®èªå·±ç޹ä»ãå
ŒããŠãã éçºããŒã ã»ããŒã±ã¿ãŒã®äœå¶ã«ã€ããŠãµãããã ããŒã ããšã«ãµãããããè¡ããã¢ã¯ã·ã§ã³ã¢ã€ãã ãåºãåã ããããã®ããŒã ããåºãã¢ã¯ã·ã§ã³ã¢ã€ãã ãå
±æããç¹ã«é¢å¿ãéãŸã£ãå
容ããéçºããŒã ã»ããŒã±ã¿ãŒååã®ãã¯ã¹ãã¢ã¯ã·ã§ã³ãæ±ºå® ãã¢ãžã£ã€ã«ã®åã€ãã³ããããŒã±ã¿ãŒã«ãã£ãšæµžéãããããéçºããŒã ã«å¯ŸããŠäºæ¥ç¶æ³ã®å
±æãšæœçã®ãµãããããè¡ããçã®ãäºãã«çè§£ãé²ããããã®è¯ãã¢ã¯ã·ã§ã³ã¢ã€ãã ãæ±ºå® æåŸã«ãäžè©±ã«ãªã£ã人ãã¡ã«miroã§æè¬ãäŒããã ãã€ãã³ããçµããŠã ããããæ¥œããã£ãã§ãïŒãããšãŠãè¯ãåãçµã¿ã§ããïŒããšè²ã
ãªäººã«èšã£ãŠããã ããŠå¬ããã£ãã§ãã äŒç»ããåœæ¥ã®é²è¡ãŸã§ç§ã責任ãæã£ãŠä»»ããŠé ãããããæ¬çªåã®äžé±éã¯ããŸããããå¿é
ã§å¯ã€ããæªãã£ãã§ããé 匵ã£ãŠããã£ãã§ãã å人çã«ã¯ãã®ã€ãã³ãã宿œããããšã§ããŒã±ã¿ãŒã®ãªãŒããŒä»¥å€ã®ã¡ã³ããŒã®äººãã¡ãšã話ãããããªã£ããšæããã®ã§äœããã§ããã æåŸã« æåŸãŸã§ã芧ããã ãããããšãããããŸãããå
¥ç€Ÿæã«äž»ã«ã¹ã¯ã©ã ã«é¢ããŠç§ãæãã課é¡ãšããã«å¯Ÿããã¢ã¯ã·ã§ã³ãã玹ä»ãããŠããã ããŸããã 以åããéçºããŒã ãšããŒã±ã¿ãŒã®è·é¢ãçž®ãŸã£ããã®ã®ãã¿ã¹ã¯ã®ç®¡çæ¹æ³ãããå¹ççãªããŒãã£ã³ã°ã®èšèšãªã©èª²é¡ã¯å€ãæ®ã£ãŠããŸãã ãããã®èª²é¡ãæ¹åããŠãããšåæã«ãä»åŸãµãŒãã¹ãããæé·ãããããã«ããŒã±ã¿ãŒãšååããªããäœãã§ããã®ããèãå®è·µããŠããããšæããŸãã
ããã«ã¡ã¯ïŒã«ã€ãŽãžã§ãã®éçºãããŠãããŸã @katorie ã§ããæ®æ®µã¯Ruby on Railsã䜿ã£ãŠãããã¯ãã®æ¹åãæ°æ©èœéçºã«åãçµãã§ããŸãã ãã§ã«ãã®ããã°ã§ã¯åŒç€Ÿã®åŠçæ¯æŽã«ãã£ãŠRubyKaigi 2025ã«åå ããåŠçã®çããã®ã¬ããŒããå
¬éãããŠãããŸãããã芧ããã ããŸããã§ããããïŒ ç§ããã¯ãåé£ãã§åå ããRubyKaigi 2025ã«ã€ããŠãäŒããããæããŸãããããŸã§ç§åäººã®ææ³ãšãšãã«äžäŸãšããŠã®ã玹ä»ã«ãªããŸãããRubyKaigi ã«åå ããã¹ã¿ã€ã«ã®ã²ãšã€ãšããŠã©ãªããã®åèã«ãªãããšãé¡ã£ãŠããŸãã ãªãåã©ããé£ããŠRubyKaigiã«åå ããã ä»åRubyKaigiã«åã©ããé£ããŠåå ããã®ã«ã¯ãããã€ãçç±ããããŸãã ãŸãåçŽã«ããè¡ãããããšããæ°æã¡ããããŸãããRubyKaigiã¯ãRubyã«é¢ããéçºè
ã«ãšã£ãŠå¹Žã«äžåºŠã®ãç¥ãã®ãããªååšãæ¯å¹Žæ¥œãã¿ã«ããŠããã€ãã³ãã®ã²ãšã€ã§ãããšã¯ãããå®¶åºã®äºæ
ãè²å
ã®ç¶æ³ã«ãã£ãŠãä»å¹Žã¯ç¡çããªâŠããšåå ã諊ããŠããŸãããã«ãªãç¬éããããŸãã ã§ãããåã©ããããããè¡ããªããã®ã§ã¯ãªãããåã©ããšäžç·ã«è¡ãããšããéžæè¢ããã£ãŠãããã®ã§ã¯ãªãã§ããããã 幞ããRubyKaigiã§ã¯èšå
æã®æäŸãªã©åé£ãåå ãžã®ãµããŒããæŽã£ãŠããŸãããããæŽ»çšããã°ãã»ãã·ã§ã³ã楜ãã¿ãªããããåã©ãã«ç¡çã®ãªã圢ã§åå ã§ãããããããªããããæã£ãŠãæãåã£ãŠç³ã蟌ãããšã«ããŸããã ã¡ãªã¿ã«ãåŒç€Ÿã§ã¯RubyKaigiãžã®åå ã¯åºåŒµã®æ±ãã«ãªããŸããç§ã®åºåŒµã«åã©ãã垯åãããšããããšã«ãªããç§ã®æ
è²»ãšå®¿æ³è²»ã¯äŒç€Ÿè² æ
ã«ãªããŸããäŒç€Ÿããã¯åã©ãã垯åããããšã§å€åæéã®ç¢ºä¿ãå¯èœããšããç¹ã®ç¢ºèªããããŸããã®ã§ãèšå
æã®ååšã決ãæã«ãªããŸããã ããã²ãšã€ã®çç±ã¯ãèªåã®å°æ¬ãã人ãã¡ãä»äºä»²éãåã©ãã«å°ãã§ãèŠããŠã¿ãããšããæ°æã¡ã§ããç§ã¯æ®æ®µããã«ã€ãŽãžã§ããã®éçºã«æºãã£ãŠããŸããæ¥ã
PCã«åãã£ãŠããå§¿ãèŠãŠããåã©ããã¡ã«ãããæ¯ããã¯ãããªä»²éãšäžç·ã«åããŠããã ãããšäŒããæ©äŒããã£ããçŽ æµã ãªãšæããŸããã åã©ããé£ããŠRubyKaigiã«åå ããã®ã¯ãæ§ããã«èšã£ãŠæé«ã§ãã ãŸããåã©ããé£ããŠRubyKaigiã«åå ããããšã¯ãæ§ããã«ãã£ãŠæé«ã§ãïŒãããªãå人çãªææ³å
šéã§ãããå
·äœçã«æé«ãšæããç¬éãæŽçããŠã¿ãããšæããŸãã ãŸããããããããšã«ãRubyKaigi 2025ã§ã¯Nursery SponsorãšããŠSTORES瀟ãéå¶ããèšå
æãååšããŸããäºåç»é²ããã°ãäŒå Žå
ã®å°çšã¹ããŒã¹ã§åã©ããé ãã£ãŠãããããããå®å¿ããŠã»ãã·ã§ã³ã«éäžããããšãã§ããŸãããã¡ãããæ¥ã
ã®åã©ãã®äœèª¿ãæ§åã«ã¯åžžã«æ°ãé
ããªããã«ã¯ãªããŸãããããã®ä¿è²å£«ããã芪åãªSTORES瀟ã®ã¹ã¿ããã®çããããããããè¿ããŠãã ãã£ãã®ã§ãå®å¿ããŠé ããããšãã§ããŸããã芪ãšããŠãããšã³ãžãã¢ãšããŠããã©ã¡ãã倧åã«ã§ããç°å¢ãæŽã£ãŠãããšæããŸããã ãŸããç§ãä»äºã§é¢ãã£ãŠãã人ãã¡ãå°æ¬ããããã°ã©ããŒã®çãããšçŽæ¥äŒããåã©ãã«ç޹ä»ã§ããããšã貎éãªçµéšã§ãããããšãã°ã2æ¥ç®ã®Lightning TalksïŒLTïŒã§ãRoad to RubyKaigi: Making Tinny Chiptunes with Rubyããšããã¿ã€ãã«ã§çºè¡šãããŠãã @makicamel ããã«ã¯ãLTã§æ«é²ãããŠããã²ãŒã ãåã©ãã«äœéšãããŠãã ãããŸãããç®ã®åã«ãããã®ãäœã£ãŠãã人ãšè§Šãåããšããäœéšã¯ãåã©ãã«ãšã£ãŠããšãŠãå°è±¡æ·±ãã£ãããã§ãã åŸæ¥ããŸãæãåºããŠããã®ã²ãŒã ããããã£ããªãããäœã£ãã®ããããªããšæãåºããŠããŸããã ç§èªèº«ã楜ããã§ããå§¿ãåã©ãã«èŠãããããšããã®ããæã£ã以äžã«æå³ãããããšã§ãããåã©ãã¯å€§äººã®èäžãããèŠãŠããŸãããã€ããšéãå Žæã§ãåºæ¿ãåããªããæ¥œãã芪ã®å§¿ã¯ããã£ãšäœãããããžãã£ããªå°è±¡ãšããŠæ®ãã®ã§ã¯ãªãããšæããŸãã ããã«ãèšå
æã§åã©ããã¡ãæ®æ®µã®ç掻åãšã¯éãåéãšåºäŒããæ°ããç°å¢ã§éãããšããäœéšã倧ããªã¡ãªããã§ããã芪åãšãã«ãéæ¥åžžããå
±æã§ãããã®æéã¯ãã¡ãã£ãšããæ
è¡ä»¥äžã«å¿ã«æ®ããã®ã§ããã 3æ¥ç®ã®æåŸã«æ¥å¹Žã®äŒå Žãåœé€šã§ããããšãããã£ãŠããã¯ãåããŠèãå°åãå°å³ã§æ¢ããããèšå
æã§äžç·ã ã£ããåéãšãŸãäŒããããªãšæåŸ
ãããããã£ããæ¥å¹Žã®RubyKaigiãå¿åŸ
ã¡ã«ããŠããŸãã åé£ãåå ã«åããæºå ããå°ãå
·äœçãªTipsãã玹ä»ããããšæããŸããåé£ãã§ã«ã³ãã¡ã¬ã³ã¹ã«åå ãããšãªããšããã¯ãäºåã®æºåã¯å¿
èŠã§ããç§ããã©ããªãããªïŒããšäžå®ãæ±ããªããã®åå ã§ããããããã€ã工倫ãããããšã§ãåœæ¥ã¯æ¯èŒçã¹ã ãŒãºã«éããããšãã§ããŸããã ãŸããèšå
æã®ç³ã蟌ã¿ã¯æåªå
äºé
ã§ããRubyKaigiã«ãããèšå
æã®èšçœ®ã¯ååã2016幎ãšãªã£ãŠãããã³ããçŠãé€ããŠã¯ã»ãŒæ¯åçšæãããŠããŸãããã±ããã®è³Œå
¥æç¹ã§ãã®ååšãç¥ãããšãã§ããããã«ãªã£ãŠããŸãã 宿æ³å
ã«ã€ããŠã¯ãåã©ããšéããããããã©ãããéèŠãªãã€ã³ãã«ãªããŸããäŸãã°å€§æµŽå Žä»ãã ã£ãããéšå±ãåºãã ã£ãããè¿ãã«ã³ã³ãããã³ã€ã³ã©ã³ããªãŒããããšäœããšå©ãããŸããåã©ããå°ããå Žåã¯ããããŒããããåã©ãçšã®ååãåãããããã©ãããèŠãã§ãã¯ã§ããããã¯éå»ã®ç§ã®ãšããœãŒãã§ãããèšå
æã«é ããããã«ã¯ãåŒåœæåã ã£ãã®ã§ã宿æ³å
ã«ãããã³ãã€ããŠããããšãæ¡ä»¶ã«ãªã£ãããšããããŸããïŒä»ã§ã¯ã³ã³ããã§è²·ã£ããã®ãé£ã¹ãããããã«ãªã£ãã®ã§ãããã³ã¯å¿
èŠæ¡ä»¶ã§ã¯ãªããªããŸããïŒãä»åãç§ã¯éåŸæž©æ³ãšãªã¢ã®ããã«ã«å®¿æ³ããŸããããæ©ããŠå€æ¹¯ãå·¡ãããšãã§ããç°å¢ã ã£ãã®ã§ãæ¯æ©åã©ããã¡ãšæž©æ³ã楜ããã§ããŸããã è·ç©ã«ã€ããŠã¯ãç§»åäžã®è·ç©ãå°ãªãããããã«äºåã«ããã«ã«3æ³åã®çæ¿ããéã£ãŠããŸãããç§»åäžã¯ãæ°ã«å
¥ãã®ããã€ãã¿ãã¬ãããããããã©ã³ãªã©ãåã©ããèœã¡çããŠéãããã¢ã€ãã ã¯ãã¹ãã§ããåã©ãã®æéœ¢ã«ããããŸãããåã©ãã座ãããšãã§ãããã£ãªãŒã±ãŒã¹ã¯å€§æŽ»èºããŠããŸãã ããå¯èœã§ããã°ãå®¶æã®ãµããŒããåŸããããšããã§ããããä»åç§ã¯ã²ãšãã§åã©ã2人ãé£ããŠè¡ããŸããããçŸå°ã§ã¯åŒå®¶æãšåæµããŠéãããŸãããä»ã®ãå®¶åºã®æ§åããããããšãããŒãããŒãã䞡芪ãäžç·ã«æ»åšãããŠããæ¹ãå€ãããã§ããã æåŸã«ãå¿æ§ããšããŠãå
šéšã®ã»ãã·ã§ã³ã«åå ã§ããªããŠãOKããšããæ°æã¡ãæã£ãŠãããšãåœæ¥ã®å¿ççè² è·ãã ãã¶äžãããŸããèŠããã»ãã·ã§ã³ãäºåã«ããã¯ã¢ããããŠããã€ã€ãå Žåã«ãã£ãŠã¯é²ç»ãã¹ã©ã€ãã§åŸãã远ãããšãè¯ããšããŠãç¡çããæ¥œããããšãåªå
ããŸããã å®éã®åå ã¬ããŒã äŒå Žã«å°çãããŸã§ã¯ãæ¬åœã«åã©ããšäžç·ã§å€§äžå€«ããªâŠâŠããšããäžå®ãæ£çŽãããŸãããã§ããããå§ãŸã£ãŠã¿ããšããããªå¿é
ã¯ããã«å¹ãé£ã³ãŸããã èšå
ã¹ããŒã¹ã¯ã»ãã·ã§ã³äŒå Žãšã¯å¥ã®éã«èšããããŠããŠãèœã¡çããé°å²æ°ã®äžã§åã©ããã¡ãéãããããã«ãªã£ãŠããŸãããã¹ã¿ããã®æ¹ã
ãæ
£ããŠããŠãåã©ããå®å¿ããŠéããã空æ°ãäœã£ãŠãããŠããã®ãå°è±¡çã§ããå°çšã®Slackãã£ã³ãã«ãçšæããŠããã ããŠããŠã楜ãããã«éãã§ããæ§åãåçã§å
±æãããŠããŸããã ã€ãã³ãäžã¯ãåã©ããé£ããŠäŒå Žå
ãç§»åããå Žé¢ããããŸããããåšå²ã®åå è
ãã¹ã¿ããã®æ¹ã
ããšãŠããã¬ã³ããªãŒã«å£°ããããŠãã ãããè©ã®åãæããŸãããRubyKaigiãããããªãŒãã³ã§æž©ããé°å²æ°ã«äœåºŠãå©ããããŸããã 2æ¥ç®ã®å€ã«ã¯ãSTORES瀟ãäž»å¬ããSTORES Cafeã«ãåå ããŸããããã³ã¢ã«ã³ãŒã«ã®ã«ãžã¥ã¢ã«ãªé°å²æ°ã§ãåé£ãã®åå è
ãå€ãããšãŠããããããååšã§ãããåã©ããå°ãé
ãæéã§ã¯ãããŸããããæ¥œããéããããšãã§ããããããã«äº€æµã®èŒªãåºããæéãæ¥œãããŸããã åèãŸã§ã«ã3æ¥ç®ã®æãå®¶ã®ã¿ã€ã ã©ã€ã³ãæžãåºããŠã¿ãŸãã èšå
æã§ã¯å
¬åã§ã®å€éã³ã«é£ããŠè¡ã£ãŠãã ãã£ãããçŽã³ããã¢ãŒãã®ã¯ãŒã¯ã·ã§ããããã£ãããšåã©ããã¡ã楜ããã工倫ããããããããŸããã ãŸãšããšã¢ããã€ã¹ RubyKaigi 2025ã«åã©ããšäžç·ã«åå ããŠã¿ãŠãæ¬åœã«è¯ãã£ããšæã£ãŠããŸãã æºåã¯ãããªãã«å¿
èŠã§ããããåœæ¥ãã€ã¬ã®ã¥ã©ãŒãªããšãèµ·ããªãããã§ã¯ãããŸãããã§ãããã«ã³ãã¡ã¬ã³ã¹ã«è¡ãããåã©ããšéããããã®äºæã§ã¯ãªãããåã©ããšäžç·ã«è¡ãããšããéžæè¢ãããããšãããããããŠå®æããŸããã ãã¡ããããã¹ãŠã®å®¶åºãã¿ã€ãã³ã°ã§å®çŸã§ããããã§ã¯ãªããšæããŸãããããå°ãã§ããè¡ã£ãŠã¿ãããªããåã©ããé£ããŠã倧äžå€«ããªããšèããŠããæ¹ããããããã²ãã£ã¬ã³ãžããŠã¿ãŠã»ããã§ãã ããã«ãç§ãªãã®åé£ãåå Tipsãããã€ããŸãšããŠãããŸãã èšå
æã®äºåç³ã蟌ã¿ã¯æåªå
ããã«éžã³ã¯ç«å°ãšåã©ãåãèšåãéèŠ è·ç©ã¯äºåã«éããæè·ç©ã«ã¯ãæ°ã«å
¥ãã°ããºã ã»ãã·ã§ã³ã¯ç¡çãããæ°ã«ãªããã®ãæ°æ¬ããã¯ã¢ãã åã©ãã®ããŒã¹ãæåªå
ã«ãäœçœããã¹ã±ãžã¥ãŒã«ã åè²ãŠäžã§ãæè¡ã³ãã¥ããã£ãšã€ãªããç¶ãããããããªæããå¶ããŠãããå ŽãšããŠãRubyKaigiã¯ãšãŠãããããå Žæã§ããã åã©ã垯åã§ã®åºåŒµãšããŠå¿«ãéãåºããŠãã ãã£ãããŒã ã®çããã«ããšãŠãæè¬ããŠããŸãã æ¥å¹ŽãããŸãå®¶æã§åå ã§ããããããªãšæã£ãŠããŸãã æ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ã§ã¯ãåè²ãŠããªãããä»äºããç°å¢ãæŽã£ãŠããŸãïŒæ®æ®µã©ããªãµãã«éãããŠãããçãå
·äœçãªãè©±ãæ°ã«ãªã£ãæ¹ã¯ã«ãžã¥ã¢ã«é¢è«ã§ã«ãžã¥ã¢ã«ã«èããŠãã ãããã
ãšã¹ã»ãšã ã»ãšã¹ã§å
šç€Ÿ SRE ãšããããŒã«ã§æŽ»åããŠãã Security Hub èžäººã®å±±å£ïŒ @yamaguchi_tk ïŒã§ãã ããããã®AWSãµãŒãã¹ã¯å¶æ¥ã§ãïŒãã€ããäžè©±ã«ãªã£ãŠããŸãïŒã 1. ã¯ããã« 1.1 èæ¯ æ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ã§ã¯ãå
šç€Ÿæšªæã® SRE ããŒã ã AWS Organizations é
äžã§ 130 以äžã® AWS ã¢ã«ãŠã³ããšã200 åãè¶
ããéçºè
ã®èªèšŒãšèªå¯ã管çããŠããŸããAWS IAM Identity Center ã®å°å
¥ãš Terraform ã«ãã IaC åãCI/CD ã«ããèªåãããã€ã¯æŽã£ãŠããŸããããŠãŒã¶ãŒè¿œå ãæš©é倿Žã®ãªã¯ãšã¹ããç©ã¿éãªããéçšè² è·ã¯å¢å ããäžæ¹ã§ããã 1.2 ç®æãå§¿ ç§ãã¡ãçã£ããŽãŒã«ã¯ã·ã³ãã«ã§ãã éçšè² è·ã®è»œæž èšå®ãã¡ã€ã«ããŒã¹ã§æš©é管çã CI/CD ã§èªåå éçºããŒã ãžã®å®å
šãªå§è² çŽæçã«ç·šéã§ããããã¹ããã¡ã€ã«ã§ãèªåãæ
åœããŠããã¢ã«ãŠã³ãã®æš©éä»äžã¯èªåãã¡ã§ç®¡çã 以äžã§ã¯ããããå®çŸããããã«æ¡ã£ãã¢ãããŒããšå
·äœçãªã³ãŒããã玹ä»ããŸãã TL;DR: ãããã«æš©éãå²ãåœãŠãã倿Žã¯ããã¹ããã¡ã€ã«ãçŽãã ããããšã¯ CI/CD ãå
šéšãã£ãŠãããããããªäžçã Terraform ãšAWS IAM Identity Center ã§å®çŸããŸããã 2. AWS IAM Identity Center ã®åºæ¬ 2.1 æ©èœæŠèŠ ã·ã³ã°ã«ãµã€ã³ãªã³ (SSO) äžåºŠã®èªèšŒã§è€æ°ã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹ Azure AD ã Okta ãªã©å€éš IdP ãšã®é£æº ãã«ãã¢ã«ãŠã³ã管ç å
šãŠã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹å¶åŸ¡ãçµ±å èš±å¯ã»ãã IAMããªã·ãŒããã³ãã¬ãŒãåããŠåå©çš ãŠãŒã¶ãŒïŒã°ã«ãŒãåäœã§å²ãåœãŠ 2.2 äž»èŠãªæŠå¿µ ãŠãŒã¶ãŒ Identity Center ã§ç®¡çãããåã
ã®å©çšè
ã¡ãŒã«ã¢ãã¬ã¹ãäžæã®èå¥åãšããŠäœ¿çš ã°ã«ãŒã ãŠãŒã¶ãŒã®éåã管çããåäœ èš±å¯ã»ãã ããªã·ãŒãšããŒã«ã®ãã³ãã¬ãŒã ã¢ã«ãŠã³ãå²ãåœãŠ ã¢ã¯ã»ã¹å¶åŸ¡ã®åºæ¬åäœ ãŠãŒã¶ãŒ/ã°ã«ãŒããšã¢ã«ãŠã³ãã®çŽä»ã èš±å¯ã»ããã®é©çš 3. Terraform ã§ã®å®è£
3.1 æšæºçãªå®è£
äŸ æšæºç㪠Terraform ã«ããå®è£
ã§ã¯ã以äžã®ãããªã³ãŒããèšè¿°ããŸãã # ãŠãŒã¶ãŒã®å®çŸ© resource "aws_identitystore_user" "example" { identity_store_id = aws_ssoadmin_instances.example[0].identity_store_id display_name = "Example User" user_name = "user@example.com" emails { value = "user@example.com" } } # ã°ã«ãŒãã®å®çŸ© resource "aws_identitystore_group" "example" { identity_store_id = aws_ssoadmin_instances.example[0].identity_store_id display_name = "Example Group" description = "Example group for testing" } # ãŠãŒã¶ãŒãã°ã«ãŒãã«å²ãåœãŠ resource "aws_identitystore_group_membership" "example" { identity_store_id = aws_ssoadmin_instances.example[0].identity_store_id group_id = aws_identitystore_group.example.group_id member_id = aws_identitystore_user.example.user_id } # èš±å¯ã»ããã®å®çŸ© resource "aws_ssoadmin_permission_set" "example" { name = "ExamplePermissionSet" description = "Example permission set" instance_arn = aws_ssoadmin_instances.example[0].arn session_duration = "PT1H" } # èš±å¯ã»ãããžããªã·ãŒã®ã¢ã¿ãã resource "aws_ssoadmin_managed_policy_attachment" "example" { instance_arn = aws_ssoadmin_instances.example[0].arn permission_set_arn = aws_ssoadmin_permission_set.example.arn managed_policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess" } # ãŠãŒã¶ãŒãã¢ã«ãŠã³ãã«å²ãåœãŠ resource "aws_ssoadmin_account_assignment" "example" { instance_arn = aws_ssoadmin_instances.example[0].arn permission_set_arn = aws_ssoadmin_permission_set.example.arn target_id = "123456789012" target_type = "AWS_ACCOUNT" principal_id = aws_identitystore_user.example.user_id principal_type = "USER" } æšæºçãªå®è£
ã§ã¯ãåãªãœãŒã¹ãåå¥ã«å®çŸ©ãããªãœãŒã¹éã®äŸåé¢ä¿ãæç€ºçã«èšè¿°ããŸãã äŸãã°ãã°ã«ãŒãã¡ã³ããŒã·ããã®å®çŸ©ã§ã¯ããŠãŒã¶ãŒãšã°ã«ãŒãã® ID ãçŽæ¥åç
§ïŒãªãœãŒã¹æå®ããããšãå¯èœïŒããå¿
èŠããããŸãã 3.2 æšæºçãªå®è£
äŸã§ã® Terraform Plan äŸ æšæºçãªå®è£
äŸã§ã® Terraform Plan äŸã以äžã«ç€ºããŸãã # aws_identitystore_user.example will be created + resource "aws_identitystore_user" "example" { + display_name = "Example User" + identity_store_id = "d-1234567890" + user_id = (known after apply) + user_name = "user@example.com" + emails { + value = "user@example.com" } } # aws_identitystore_group_membership.example will be created + resource "aws_identitystore_group_membership" "example" { + group_id = "1234567890abcdef" + identity_store_id = "d-1234567890" + member_id = (known after apply) } # aws_ssoadmin_account_assignment.example will be created + resource "aws_ssoadmin_account_assignment" "example" { + instance_arn = "arn:aws:sso:::instance/ssoins-1234567890abcdef" + permission_set_arn = "arn:aws:sso:::permissionSet/ssoins-1234567890abcdef/ps-1234567890abcdef" + principal_id = (known after apply) + principal_type = "USER" + target_id = "123456789012" + target_type = "AWS_ACCOUNT" } èš±å¯ã»ãããä»äžãã察象ã®ãŠãŒã¶ãŒãå
éš IDïŒ ssoins-1234567890abcdef ãªã©ïŒã§è¡šç€ºãããŠããŸãã 3.3 æšæºçãªå®è£
ã«ãããèª²é¡ æšæºçãªå®è£
ã§ã¯ã以äžã®ãããªèª²é¡ããããŸãã ã³ãŒããè€éã«ãªã 倿°ã®ãªãœãŒã¹å®çŸ©ãå¿
èŠãšãªããã³ãŒãéãèšå€§ã«ãªã ãªãœãŒã¹éã®äŸåé¢ä¿ã®ç®¡çãè€é 倿Žã®åœ±é¿ç¯å²ã®ææ¡ãå°é£ ã¬ãã¥ãŒã®å°é£ã å
éš ID ã«ãã衚瀺ã®ãããTerraform Plan ã§å€æŽå
å®¹ãææ¡ããããšãé£ãã 3.4 課é¡ã解決ããããã«æ¡çšããã¢ãããŒã ãããã®èª²é¡ã«å¯ŸåŠããããã«ãç§ãã¡ã¯äžã€ã®æ¹éã«æ²¿ã£ãŠæ¹åãé²ããŸããã ã³ãŒãéã®åæž Assignment çã®å®è£
ãããã¹ããã¡ã€ã«åãã ã¬ãã¥ãŒã楜㫠Terraform Plan ã«ã¡ãŒã«ã¢ãã¬ã¹ãã°ã«ãŒãåãèš±å¯ã»ããåã衚瀺ãã éçºããŒã ã«å®å
šã«å§è²ã§ããããã« å®å
šã«å€æŽã§ããããã« AWS ã¢ã«ãŠã³ãåäœã§å§è²ã§ããä»çµã¿ã«ãã ãã£ã¬ã¯ããªããã¡ã€ã«åã ãã§ç®çãäŒããæ§é ã«ãã 4. å
·äœçãªå®è£
4.1 ãã£ã¬ã¯ããªæ§é terraform/ âââ user/ # ãŠãŒã¶ãŒç®¡ç â âââ user.txt # ãŠãŒã¶ãŒãªã¹ãïŒã¡ãŒã«ã¢ãã¬ã¹ïŒ â âââ dummy.tf âââ membership/ # ã°ã«ãŒãã¡ã³ããŒã·ãã â âââ XXX_Developers.txt # éçºè
ã°ã«ãŒã â âââ XXX_SREs.txt # SREã°ã«ãŒã â âââ YYY_Developers.txt # éçºè
ã°ã«ãŒã â âââ YYY_SREs.txt # SREã°ã«ãŒã â âââ dummy.tf âââ assignment/ # ã¢ã¯ã»ã¹æš©éã®å²ãåœãŠ â âââ 12345678/ # AWSã¢ã«ãŠã³ãID â â âââ AdministratorAccess_GROUP.txt â â âââ PowerUserAccess_GROUP.txt â â âââ AdministratorAccess_USER.txt â â âââ PowerUserAccess_USER.txt â â âââ dummy.tf â âââ 23456789/ â âââ ... âââ su/ # symlinkã«ããçµç¹æ§é â âââ å»çãã£ãªã¢/ # éçºè
ã°ã«ãŒã â â âââ prd -> ../../assignment/12345678 â â âââ stg -> ../../assignment/23456789 â â âââ dev âââ others/ # Terraformã®å®è£
ã³ãŒã âââ variables.tf # 倿°å®çŸ© âââ assignmeents.tf # assignmentã®å®è£
ã³ãŒã âââ assignmeents_dummy.tf # dummy.tfãèªã¿èŸŒãããã®å®è£
ã³ãŒã âââ memberships.tf # group membershipã®å®è£
ã³ãŒã âââ permissionsets.tf # permission setã®å®è£
ã³ãŒã âââ users.tf # userã®å®çŸ©ã³ãŒã âââ groups.tf # Groupã®å®è£
ã³ãŒã 4.2 èšå®ãã¡ã€ã«ã®å®è£
äŸ ãŠãŒã¶ãŒç®¡çïŒuser/user.txtïŒ Identiy Center ã«ç»é²ãããŠãŒã¶ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ãèšèŒããŸãã user1@example.com user2@example.com ã°ã«ãŒã管çïŒmembership/XXX_Developers.txt, membership/XXX_SREs.txtïŒ {ã°ã«ãŒãå}.txt ãšãã圢åŒã§ãã¡ã€ã«ãäœæããŸãã Group ã«æå±ããããŠãŒã¶ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ã®ã¡ãŒã«ã¢ã«ãŠã³ãéšåïŒïŒ ããå·ŠåŽïŒãèšèŒããŸãã user1 user2 ã¢ã¯ã»ã¹æš©éã»ã°ã«ãŒãïŒassignment/12345678/AdministratorAccess_GROUP.txtïŒ {èš±å¯ã»ããå}_GROUP.txt ãšãã圢åŒã§ãã¡ã€ã«ãäœæããŸãã ãã£ã¬ã¯ããªåã® AWS ã¢ã«ãŠã³ã ID ã§ãããã¹ããã¡ã€ã«åã®ã¢ã³ããŒã¹ã³ã¢ `_` ã®å·ŠåŽã«èšèŒã®èš±å¯ã»ãããä»äžãã Group åãèšèŒããŸãã XXX_SREs ã¢ã¯ã»ã¹æš©éã»ãŠãŒã¶ãŒïŒassignment/12345678/AdministratorAccess_USER.txtïŒ {èš±å¯ã»ããå}_USER.txt ãšãã圢åŒã§ãã¡ã€ã«ãäœæããŸãã ãã£ã¬ã¯ããªåã® AWS ã¢ã«ãŠã³ã ID ã§ãããã¹ããã¡ã€ã«åã®ã¢ã³ããŒã¹ã³ã¢ `_` ã®å·ŠåŽã«èšèŒã®èš±å¯ã»ãããä»äžãã ãŠãŒã¶ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ã®ã¡ãŒã«ã¢ã«ãŠã³ãéšåïŒïŒ ããå·ŠåŽïŒãèšèŒããŸãã user1 user2 â» åŒç€Ÿã®ç°å¢ã§ã¯ãIdentity Center ãžã®èªèšŒã¯å€éš IdP ã«ãã SSO ããã®ã¢ã¯ã»ã¹ã®ã¿ã«çµã£ãŠããã®ã§ãïŒ ããå³åŽã®ãã¡ã€ã³åã¯å
šãŠãŒã¶ãŒå
±éã§ãã 4.4 å®è£
ã³ãŒã user å®çŸ©ïŒothers/users.tfïŒ ################################################################################ # User ################################################################################ resource "aws_identitystore_user" "this" { for_each = local.users display_name = each.value identity_store_id = "d-abc1234567" user_name = each.value emails { primary = true type = "work" value = each.value } name { family_name = " " given_name = " " } } ################################################################################ # Users ################################################################################ locals { user_file = "../user/user.txt" # ãã¡ã€ã«ãååšããã°èªã¿èŸŒãããªããã°ç©ºãªã¹ã emails = (can(fileexists(local.user_file)) && fileexists(local.user_file) ? split("\n", trimspace(file(local.user_file))) : []) users = { for email in local.emails : regex("(^[^@]+)", email)[0] => email } } ################################################################################ # dummy module ################################################################################ module "dummy_user" { source = "../user" } Group å®çŸ©ïŒothers/groups.tfïŒ ################################################################################ # Groups ################################################################################ locals { groups = [ "XXX_SREs", "XXX_Developers", "YYY_SREs", "YYY_Developers", ] group_map = { for group in local.groups : group => { group_name = group } } } resource "aws_identitystore_group" "this" { for_each = local.group_map display_name = each.value.group_name identity_store_id = "d-abc123456" } assignment å®çŸ©ïŒothers/assignments.tfïŒ locals { merged_targets = concat(local.assignment_target_users, local.assignment_target_groups) # assignments_targets ã®åèŠçŽ ã«å¯ŸããŠåŠç # { # file_name = "PowerUserAccess_USER.txt" # permission_set_arn = "arn:aws:sso:::permissionSet/..." # principal_type = "USER" # # file_exists = true/false # raw_user_names = [...] # user_ids_map = { "alice" = "uuid1", "bob" = "uuid2" } # } # ã®ãããªæ§é ãäœã flatten_targets = flatten([ for account in local.assignment_target_aws_accounts : [ for t in local.merged_targets : { file_path = "${local.assignment_file_path}/${account}/${t.file_name}" file_name = t.file_name account = account permission_set_arn = t.permission_set_arn principal_type = t.principal_type } ] ]) assignment_targets_expanded = [ for t in local.flatten_targets : { file_name = t.file_name account = t.account resourcename_prefix = trimsuffix(t.file_name, ".txt") permission_set_arn = t.permission_set_arn principal_type = t.principal_type file_path = t.file_path file_exists = can(fileexists(t.file_path)) && fileexists(t.file_path) # ãã¡ã€ã«ãååšããã°èªã¿èŸŒãããªããã°ç©ºãªã¹ã raw_user_names = (can(fileexists(t.file_path)) && fileexists(t.file_path) ? split("\n", trimspace(file(t.file_path))) : []) # TXTãã¡ã€ã«ã空ã®å Žåãèæ
® # 空æåå""ã®å Žåã¯LISTããå€ã user_names = [ for name in can(fileexists(t.file_path)) && fileexists(t.file_path) ? split("\n", trimspace(file(t.file_path))) : [] : name if name != "" ] } ] } ################################### # assignment_targets_expanded ããã©ããã«åäœ ################################### # äŸ: { # "PowerUserAccess_USER.txt-alice" = { user_id="xxx", permission_set_arn="yyy", principal_type="USER" } # "PowerUserAccess_USER.txt-bob" = { user_id="xxx", permission_set_arn="yyy", principal_type="USER" } # "AdministratorAccess_USER.txt-charlie" = { ... } # } locals { combined_assignment_users = merge([ # assignment_targets_expanded ã®åèŠçŽ t ã«å¯ŸããŠâŠ for t in local.assignment_targets_expanded : { # ããã« t.user_ids_map ã®å entry (user_name, user_id) ã«ã€ããŠâŠ for user_name in t.user_names : # ããŒã "<awsaccount_id>_<file_name>_<user_name>"ãå€ããªããžã§ã¯ãã«ãã "${t.account}_${t.resourcename_prefix}_${user_name}" => { user_name = user_name account = t.account permission_set_arn = t.permission_set_arn principal_type = t.principal_type } } ]...) } ################################### # for_each ã§äžæ¬äœæ ################################### # combined_assignments ã«ã¯ã(ãã¡ã€ã«å)-(ãŠãŒã¶ãŒå)ããããŒã«ãªã£ãŠãã resource "aws_ssoadmin_account_assignment" "this" { for_each = local.combined_assignment_users instance_arn = local.instance_arn target_id = each.value.account target_type = "AWS_ACCOUNT" principal_id = each.value.principal_type == "USER" ? aws_identitystore_user.this[each.value.user_name].user_id : aws_identitystore_group.this[each.value.user_name].group_id principal_type = each.value.principal_type permission_set_arn = each.value.permission_set_arn } membership å®çŸ©ïŒothers/memberships.tfïŒ locals { # memberships_targets ã®åèŠçŽ ã«å¯ŸããŠåŠç # { # file_name = "SREs.txt" # group_id = "..." # # file_exists = true/false # raw_user_names = [...] # user_ids_map = { "alice" = "uuid1", "bob" = "uuid2" } # } # ã®ãããªæ§é ãäœã memberships_targets_expanded = [ for t in local.memberships_targets : { file_name = t.file_name resourcename_prefix = trimsuffix(t.file_name, ".txt") group_name = trimsuffix(t.file_name, ".txt") file_path = "${local.membership_file_path}/${t.file_name}" file_exists = can(fileexists("${local.membership_file_path}/${t.file_name}")) && fileexists("${local.membership_file_path}/${t.file_name}") # ãã¡ã€ã«ãååšããã°èªã¿èŸŒãããªããã°ç©ºãªã¹ã raw_user_names = (can(fileexists("${local.membership_file_path}/${t.file_name}")) && fileexists("${local.membership_file_path}/${t.file_name}") ? split("\n", trimspace(file("${local.membership_file_path}/${t.file_name}"))) : []) # TXTãã¡ã€ã«ã空ã®å Žåãèæ
® # 空æåå""ã®å Žåã¯LISTããå€ã user_names = [ for name in can(fileexists("${local.membership_file_path}/${t.file_name}")) && fileexists("${local.membership_file_path}/${t.file_name}") ? split("\n", trimspace(file("${local.membership_file_path}/${t.file_name}"))) : [] : name if name != "" ] } ] } ################################### # membership_targets_expanded ããã©ããã«åäœ ################################### # äŸ: { # "SREs-alice" = { group_id="xxx", user_id="xxx" } # "SREs-bob" = { group_id="xxx",user_id="xxx" } # "SREs-charlie" = { ... } # } locals { combined_memberships = merge([ # assignment_targets_expanded ã®åèŠçŽ t ã«å¯ŸããŠâŠ for t in local.memberships_targets_expanded : { # ããã« t.user_ids_map ã®å entry (user_name, user_id) ã«ã€ããŠâŠ for user_name in t.user_names : # ããŒã "<file_name>_<user_name>"ãå€ããªããžã§ã¯ãã«ãã "${t.resourcename_prefix}_${user_name}" => { group_name = t.group_name user_name = user_name } } ]...) } ################################### # for_each ã§äžæ¬äœæ ################################### # combined_memberships ã«ã¯ã(ãã¡ã€ã«å)_(ãŠãŒã¶ãŒå)ããããŒã«ãªã£ãŠãã resource "aws_identitystore_group_membership" "this" { for_each = local.combined_memberships identity_store_id = "d-95671a55c2" group_id = aws_identitystore_group.this[each.value.group_name].group_id member_id = aws_identitystore_user.this[each.value.user_name].user_id } ################################################################################ # dummy module ################################################################################ module "dummy_menbership" { source = "../membership" } variables å®çŸ©ïŒothers/variables.tfïŒ locals { instance_arn = tolist(data.aws_ssoadmin_instances.instance.arns)[0] assignment_file_path = "../assignment" # assignment以äžã®ãã©ã«ããåæ assignment_target_aws_accounts = distinct([ for file in fileset(local.assignment_file_path, "*/*.txt") : dirname(file) ]) membership_file_path = "../membership" } locals { # assignments_targets ã®å®çŸ© assignment_target_groups = [ { file_name = "AdministratorAccess_GROUP.txt" permission_set_arn = aws_ssoadmin_permission_set.AdministratorAccess.arn principal_type = "GROUP" }, { file_name = "DeveloperAccess_GROUP.txt" permission_set_arn = aws_ssoadmin_permission_set.DeveloperAccess.arn principal_type = "GROUP" }, ] assignment_target_users = [ { file_name = "AdministratorAccess_USER.txt" permission_set_arn = aws_ssoadmin_permission_set.AdministratorAccess.arn principal_type = "USER" }, { file_name = "Developer_USER.txt" permission_set_arn = aws_ssoadmin_permission_set.Developer.arn principal_type = "USER" }, ] } locals { memberships_targets = [ { file_name = "XXX_SREs.txt" }, { file_name = "XXX_Developers.txt" }, { file_name = "YYY_SREs.txt" }, { file_name = "YYY_Developers.txt" }, ] } dummy.tf èªã¿èŸŒã¿ïŒothers/assignments_dummy.tfïŒ module "dummy_12345678" { source = "../assignment/12345678" } module "dummy_23456789" { source = "../assignment/23456789" } ... 4.5 å®è£
ã®ãã€ã³ã èšå®ãã¡ã€ã«ã®èªã¿èŸŒã¿ã¯ãTerraform ã® file() 颿°ã䜿çšããŠå®è£
ããŠããŸãããã¡ã€ã«ã®å
容ãè¡ããšã«åå²ãã trimspace() ã§ç©ºçœãé€å»ããããšã§ãã¯ãªãŒã³ãªããŒã¿ãååŸããŸãã空è¡ã¯ if user != "" ã®æ¡ä»¶ã§é€å€ããæå¹ãªããŒã¿ã®ã¿ãåŠç察象ãšããŠããŸãã ãªãœãŒã¹ã®çæã¯ã for_each ã䜿çšããŠåçã«è¡ããŸãããã¹ãããããªã¹ã㯠flatten() ã§å¹³åŠåããäžæã®ããŒãçæããããšã§éè€ã鲿¢ããŠããŸããããã«ãããèšå®ãã¡ã€ã«ã®å€æŽãå¹ççã«ãªãœãŒã¹ã®æŽæ°ã«åæ ãããŸãã ãšã©ãŒãã³ããªã³ã°ã¯ããã¡ã€ã«ã®ååšç¢ºèªããå§ãŸããŸããååšããªããã¡ã€ã«ã«å¯ŸããŠã¯ file() 颿°ããšã©ãŒãè¿ããäžæ£ãªåœ¢åŒã®ããŒã¿ã¯ split() ã trimspace() ã§é©åã«åŠçãããŸãããŸããååšããªããŠãŒã¶ãŒãã°ã«ãŒããžã®åç
§ã¯ãTerraform ã®å®è¡æã«ãšã©ãŒãšããŠæ€åºãããŸãã ä»å㯠tfaction ãå©çšããããšãåæãšããŠãããããèšå®ãã¡ã€ã«ã眮ããŠãããã£ã¬ã¯ããªã« dummy.tf ãé
眮ãããã£ã¬ã¯ããªèªäœã module ãšããŠæ±ã£ãŠããŸãã tfaction-root.yaml ã«ä»¥äžã®èšå®ã远å ããããšã§ module åŽã§å€æŽããã£ãå ŽåïŒïŒèšå®ãã¡ã€ã«ã«å€æŽããã£ãå ŽåïŒã« Terraform Plan ãå®è¡ãããããã«ãªããŸãã update_local_path_module_caller: enabled: true 4.6 å®è£
ããã³ãŒãã§ã® Terraform Plan 衚瀺 # aws_identitystore_group_membership.this["XXX-SREs_user1"] will be created + resource "aws_identitystore_group_membership" "this" { + group_id = "abc12345-1234-1234-1234-abc123456789" + id = (known after apply) + identity_store_id = "d-1234567890" + member_id = (known after apply) + membership_id = (known after apply) } # aws_ssoadmin_account_assignment.this["123456789012_PowerUserAccess_USER_user1"] will be created + resource "aws_ssoadmin_account_assignment" "this" { + id = (known after apply) + instance_arn = "arn:aws:sso:::instance/ssoins-1234567890abcdef" + permission_set_arn = "arn:aws:sso:::permissionSet/ssoins-1234567890abcdef/ps-1234567890abcdef" + principal_id = (known after apply) + principal_type = "USER" + target_id = "123456789012" + target_type = "AWS_ACCOUNT" } # aws_identitystore_user.this["user1"] will be created + resource "aws_identitystore_user" "this" { + display_name = "user1@example.com" + external_ids = (known after apply) + id = (known after apply) + identity_store_id = "d-1234567890" + user_id = (known after apply) + user_name = "user1@example.com" + emails { + primary = true + type = "work" + value = "user1@example.com" } + name { + family_name = " " + given_name = " " } } 4.7 éçºããŒã ãžã®å§è² ãããŸã§å®è£
ã§ãããšãAWS ã¢ã«ãŠã³ãåäœã«äœæãããã£ã¬ã¯ããªåäœããXXX_GROUP.txt åäœã§ CODEOWNER ãéçºããŒã ã«èšå®ããããšã§ãéçºããŒã ã管çããŠããã°ã«ãŒããžã®ã¡ã³ããŒè¿œå ã AWS ã¢ã«ãŠã³ããžã®æš©éä»äžã«ã€ããŠãéçºããŒã ãèªåŸçãªå¯Ÿå¿ãå¯èœã«ãªããŸãã 4.8 課é¡ã®è§£æ±º ã³ãŒããè€éã«ãªã æ¥åžžçã«å€æŽããå¿
èŠã®ããã³ãŒããã·ã³ãã«ã«ããããšã§è§£æ±ºããŸããã å
·äœçã«ã¯ããŠãŒã¶ãŒã®è¿œå ãã°ã«ãŒããžã®ãŠãŒã¶ãŒè¿œå ããŠãŒã¶ãŒã»ã°ã«ãŒããžã®æš©éä»äžã«ã€ããŠããã¬ãŒã³ãªããã¹ããã¡ã€ã«ã«ããèšå®ãã¡ã€ã«æ¹åŒãæ¡çšããããšã§ãã³ãŒããã·ã³ãã«ã«ä¿ã€ããšãã§ããããã«ãªããŸããã ã¬ãã¥ãŒã®å°é£ã å
éš ID ã§ã¯ãªãã人éãèŠãŠå€æŽå
容ãããããã㪠Plan 衚瀺ãè¡ãããšã§è§£æ±ºããŸããã å
·äœçã«ã¯ãã誰ã«ããäœã®æš©éãããã©ã® AWS ã¢ã«ãŠã³ãã«ãä»äžããã®ãã人éãèŠãŠããããã㪠Terraform Plan 衚瀺ãå®çŸããããšã§ãPlan 衚瀺ã確èªããã ãã§å€æŽå
å®¹ãææ¡ã§ããããã«ãªããŸããã 4.9 ä»åã®å®è£
ãå®çŸã§ããèŠå ä»åã®å®è£
ãå®çŸã§ããèŠå ãšããŠãçŸç¶ã®éçšèŠæš¡ãšéçšã¹ã¿ã€ã«ããããšæããŸãã åŒç€Ÿã®èŠæš¡ãšããŠãåè¿°ã®éãAWS ã¢ã«ãŠã³ãæ°ã 130 以äžãéçºè
æ°ã 200 å以äžã§ãããã以å€ã® Identity Center ã§ã®ç®¡çåäœãšããŠã¯ãã°ã«ãŒãæ°ãæ°åçšåºŠãèš±å¯ã»ããæ°ã10åçšåºŠã§éçšããŠããŸãã èš±å¯ã»ããã¯ã»ãã¥ãªãã£ã®æå°æš©éã®ååãèæ
®ãããšãAWS ã¢ã«ãŠã³ããã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãéçºè
ã®å±æ§ãéçšæ¹æ³ã«å¿ãã现ããç²åºŠã§ã®èš±å¯èšå®ãæ±ããããŸãããåŒç€Ÿã§ã¯ãå
šç€Ÿ SRE ããŒã ãå
šç€Ÿæšªæã§ç®¡çããããã管çè² æ
ãšã®ãã©ã³ã¹ãåãã€ã€æå°æš©éã§ã¯ãªãåºãã«æš©éãä»äžãããããªèš±å¯ã»ããã§éçšããŠããŸãã ãã®éçšæ¹æ³ãšèŠæš¡æã ããããã¬ãŒã³ããã¹ããã¡ã€ã«ã«ããèšå®ãã¢ãã¬ã管çãCI/CDã§ã®èªååã®å®è£
ãšéçšãã§ããŠãããšèšããŸãã 5. ãŸãšã éçšã®å¹çå 1è¡1ãšã³ããªã®ãã¬ãŒã³ãªããã¹ããã¡ã€ã«ã§ã®ã·ã³ãã«ãªèšå®ã«ãããç°¡åã«æš©éä»äžã»åé€ãåºæ¥ãããã«ãªããŸããã ãŸããGit ã®å±¥æŽã远ãã ãã§æš©éä»äžã®å±¥æŽãäžç®çç¶ã«ãªããŸããã for_each / flatten() ã«ãã åçãªãœãŒã¹çæ ãå®è£
ããããšã§ã³ãŒãéã倧å¹
åæžã§ããŸããã ã¬ãã¥ãŒäœéšã®åäž Plan åºåã«ã¡ãŒã«ã¢ãã¬ã¹ããŠãŒã¶ãŒåãã°ã«ãŒãåãèš±å¯ã»ããåããã®ãŸãŸè¡šç€ºãããããšã§ãã誰ã«ããäœã®æš©éãããã©ã® AWS ã¢ã«ãŠã³ãã«ãä»äžãããããTerraform Plan ã確èªããã ãã§å¯èœã«ãªããŸããã ç®çãæã£ããã£ã¬ã¯ããªæ§é ã®ããããã¡ã€ã«å·®åã§å€æŽã®æå³ãäŒããããã«ãªããŸããã éçºããŒã ãžã®å®å
šãªå§è² ãã¬ãŒã³ãªããã¹ããã¡ã€ã«ã®ç·šéã ãã§æš©éã®ä»äžãå®äºããŸãã AWS ã¢ã«ãŠã³ã ID æ¯ã®ãã£ã¬ã¯ããªæ§é ã§ãç°å¢ãšæš©éã®é¢ä¿ãçŽæçã«ãªããŸããã ãŸããsymlink ã§æ¥æ¬èªåç§°ãä»ãããã£ã¬ã¯ããªæ§é ãäœæããããšã§ã察象ãšããAWS ã¢ã«ãŠã³ã IDãçŽæçã«æ¢ãããšãå¯èœã«ãªããŸããã ããããã®ãã£ã¬ã³ãž çæ AI ãæŽ»çšãã Issue ããèªåã§ PR ãäœæããçã«ãã AI OPS ã«ãã£ã¬ã³ãžããŠãããŸãã(泚éïŒéå»ã« Amazon Q Developer ãå©çšãããã£ã¬ã³ãžã¯å€±æããŠããŸãâ https://speakerdeck.com/yamaguchitk333/codecatalyst-in-action-automating-pr-creation-for-route-53-and-iam-identity-center-management ) èš±å¯ã»ããã®åäœããŸã èãã®ã§ããã®ç²åºŠã现ããããã ABAC ã«ããããšã§ã»ãã¥ãªãã£ã®åŒ·åãè¡ããŸãã
ããã«ã¡ã¯ã Retasusan ã§ãã æ®æ®µã¯å€§åŠã«éããªããã京éœã®ã¹ã¿ãŒãã¢ããã§Ruby on Railsã䜿ã£ãã¢ããªã±ãŒã·ã§ã³ãæžããŠããŸããããRubyãšã³ãžãã¢ããšèžã匵ã£ãŠåä¹ããã»ã©Rubyã«ã€ããŠè©³ããããšèšããããšæ£çŽãŸã ãŸã ã§ãâŠã ãããªèªåããæ¥æ¬æå€§çŽã®Rubyã«ã³ãã¡ã¬ã³ã¹ RubyKaigi 2025 ã«ååå ããŠããã®ã§ãçŸå°ã®ç©ºæ°æã亀æµã®æ§åãäžå¿ã«ãŸãšããŠã¿ãŸããïŒ RubyKaigiãšã®åºäŒã æåã«RubyKaigiãç¥ã£ãã®ã¯ã Kyoto Tech Talk ãšããã€ãã³ãã«ãéªéããæã®ããšã§ãããåŠçæ¯æŽããããšãã話ãèããçŽäœæ²æããã€ã€ãšã¹ã»ãšã ã»ãšã¹ã«å¿åãããŠããã ããæžé¡éžèãšãªã¢ãŒãã§ã®é¢æ¥ã®åŸã«æ¡æããŠããã ããŸããïŒ ãããããããšã«æŸå±±ãžã®äº€éææ®µãšRubyKaigiã®ãã±ããã確ä¿ã§ããŸãããæ¬åœã«ããããšãããããŸãïŒ äºåæºå æ£çŽãªãšããããRubyKaigiã£ãŠäœãããã®ïŒããšããã¬ãã«ããã®ã¹ã¿ãŒãã§ããã ãããŠç»å£ã»ã¯ã·ã§ã³ã®å
容ãããçè§£ããŠãããªããšãããªããšæããå
šãæéãè¶³ããŸããã§ããããã€ã³ã¿ãŒãããã®å
æµ·ã«æœã£ãŠã¯ãæã«æººããªããRubyã«ã€ããŠèª¿ã¹ãŠãããŸããã ãããŠãä»åã®åŠçæ¯æŽã«ã¯Official Partyãªã©ã®ã€ãã³ãã¯å«ãŸããŠããªãã£ããããåã€ãã³ããRubyKaigiã®eventããŒãžãšçšãã£ãããªããconnpassçµç±ã§äºçŽããŠãããŸããã äºåã®äºå®ã¯ä»¥äžã®éãã§ããã芧ã®éãå
·äœçãªäºå®ã¯å
šããªãã®ã§ããããŸããªããšããªãã ãããšããæ°æã¡ã§åœæ¥ãè¿ããŸããããŸããDay0ã®é£è¡æ©ããã£ããæ©æã«äºçŽããŠããŸã£ãããã忥ãã«ã©ãªã±ã§éããããšã§æä¹ã«æåããŸããã æ¥ä» 4/14(æ) Day-1 æ·±å€ã®ã«ã©ãªã±ã«ãŠå€ãæãã 4/15(ç«) Day0 æŸå±±èгå
(æŸå±±ã«åä¹ã) 4/16(æ°Ž) Day1 4/17(æš) Day2 4/18(é) Day3 æçµæ¥ 4/19(å) Day4 æŸå±±èгå
(京éœã«åž°é) Day0 ãã®æ¥ã¯ãã»ãšãã©èгå
ããããŠããŸãããæŸå±±ç©ºæž¯ã«çããšRubyKaigiã®ãããŒããã£ãã®ã§ãã³ã·ã§ã³ãäžãããŸããã æ¥ãŸãã #rubykaigi pic.twitter.com/gmvSGMoGcm — Retasusan (@retasusan_510) 2025幎4æ15æ¥ å人ãšPre-Checkinã®ããã«äŒå Žã«è¡ããŸããããæéãééããŠããããåºçŽããŸããã Pre-checkin倱æïŒæéãèªã¿ééããŠããâŠïŒ — Retasusan (@retasusan_510) 2025幎4æ15æ¥ ãŸã ã¹ã¿ãããã以å€ããªãäŒå Ž ãã®åŸã¯ãæŸå±±åãéåŸæž©æ³ã«è¡ã£ãåŸã§ã SmartHRããã®Drinkup ã«åå ããŸããã ãŸã RubyKaigiã®é°å²æ°ã«éŠŽæããŠããããããŸã亀æµã§ããŸããã§ããã Day1 ãã®æ¥èããã»ãã·ã§ã³ Ruby Taught Me About Encoding Under the Hood Introducing Type Guard to Steep State of Namespace TRICK 2025: Episode I ima1zumiããã®æåã³ãŒãã®è©±ã¯å°è±¡æ·±ãã£ãã§ããéäžããDevanagariæåã®è©±ãåºãŠããŠããŸããã æ¬æ¥ãã¯ã¿ã¡ããšç¹ãããªããšãããªãéšåããã¯ããšãã¿ã¡ãã«åå²ãããŠãããšããã話ããããŸããããããèããŠãUnicode察å¿ã«ã¯Devanagariæåã«ç²Ÿéããªããšãããªãã®ããšæŠã
æã
ãšããŸããã ima1zumiããã®Keynoteã®ã¹ã©ã€ãè³æã¯å
¬éãããŠããã®ã§ãããã°ãã¡ããã芧ãã ããã This is my RubyKaigi keynote presentation. Thank you! https://t.co/Ld7X6QNyMf — ima1zumi (@ima1zumi) 2025幎4æ16æ¥ ãŸããTakeshi KOMIYAããã®Steepã§ã®åã¬ãŒãã®è©±ã¯ããªãè峿·±ãã£ãã§ããæ£çŽãRBSã䜿çšããããšããªãã£ãã®ã§ãããå
ã
åçåä»ãèšèªã§ããRubyã«åãã€ããããšã¯ãããªãé£ãããããã®ã ãããªãšæããŸããã ãã®æç¹ã§ã¯æªæ¥ã®è©±ã«ãªãã®ã§ãããå®ã¯3æ¥ç®ã® ãããã€ã³ã¿ãŒãããããã§ã®æã¡äžã ã§ã話ãããæ©äŒãããããŸããã æ¥œããã£ãã§ãïŒ #rubyfriends pic.twitter.com/kMUqrAtGzo — Retasusan (@retasusan_510) 2025幎4æ18æ¥ ãæŒã¯Pixivããã®åŠçæ¯æŽã®æ¹ãšãšã¹ã»ãšã ã»ãšã¹ã®æ¯æŽåŠçã§ãæŒã®äº€æµäŒããããŸãããå®ã¯é
å»ããã»ã©Cookpadããã®æ¹ãšã®è©±ãçãäžãã£ãŠããŸããŸããâŠïŒæ¯ãè¿ããšãRubyKaigiã§ã¯æèããŠæèšãèŠãªããšæéãå¿ããŠè©±ããŠããŸããã¡ã§ãããæ¬¡å以éã®RubyKaigiã§ã¯ãã®åçãæŽ»ãããããšæããŸãïŒ é¯ãããããããã£ãã§ãã ååŸããã¯ãtagomorisããã®Namespaceã«ã€ããŠã®ã»ãã·ã§ã³ããèãããŸããã ãã®æ¥æåŸã®ã»ãã·ã§ã³ã¯å®ã¯äžçªæ¥œãã¿ã«ããŠãã TRICK ã§ããã審æ»å¡ã®æ¹ãå¿åã§ããããšã«é©ãã審æ»å¡ã®æ¹ãããããå
¥è³ããŠããããšã§ããã«é©ããŸãããåãäžçªå¥œãã ã£ãã®ã¯ãè±ã®æš¡æ§ãåãæ§ããšãŠã綺éºã ã£ã beta_chelseaããã®äœå ã§ãããæ£çŽã©ã®äœåãäœãã©ããªã£ãŠãã®ãããããªããããªãã®ã§ããããåã®Rubyãžã®äŸ¡å€èгãåºããŠãããŸããã ãã®æ¥ã¯å€æ¹ããåå±±å
¬åã«ãŠOfficial Partyãæ¥œãã¿ãŸãããè²ã
ãªæ¹ãããã£ããã£ãäžã§ããã£ããRubyKaigiã«æ¥ãããã«ã¯åèªèº«ãäœãäžæ©ãèžã¿åºããŠã¿ãããšæãæµ·å€ã®æ¹ã«ç©æ¥µçã«è©±ããããŠã¿ãããšã«ããŸãããæµ·å€ã®æ¹ã«è©±ããããããšã§ãåã®äžã®Rubyãgemãžã®ã³ãããæ¬²æ±ãããªãé«ãŸããŸãããRubyKaigiã«æ¥ããããªæµ·å€ã®æ¹ã¯çããäœãããã®gemãRubyèªäœã«ã³ãããããŠãã£ãããæ¹ã°ããã ã£ãã®ã§è©±é¡ãåºæ¬çã«ãã®ã³ãããå
容ã«ã€ããŠã§ããããã®ãããªæ¹ã
ã®äŒè©±ãèããŠãããšãåã®äžã§äŒè©±ã«ã€ããŠããããæ¬²æ±ãé«ãŸããŸããããŸããMatzãšããŒã·ã§ãããæ®ãããšã«ãæåããŸããïŒæç¡éã§ãâŠã Official Partyã®åŸã¯ãå人ãšåæµåŸYusuke Wadaãããå¹¹äºãããŠãã ãã£ãäºæ¬¡äŒã«åå ããŠããŸãããããã§ãæµ·å€ã®æ¹ãããããããã£ãããåã«ã€ãããšãã§ããŠè²Žéãªã話ã䌺ãããšãã§ããŸããã Ruby API ã®äœè
ã® Colbyãã ãšãã話ãããããšãã§ããŠæ¬åœã«ãããã£ãã§ãã(èªåœåã®æ¬ åŠ) 俺ãå¹¹äºããŠããã§ãã #rubykaigi pic.twitter.com/Xb31dGlbvH — Yusuke Wada (@yusukebe) 2025幎4æ16æ¥ #rubyfriends 楜ããã£ãã§ãïŒ pic.twitter.com/j45hyUf8Ka — Retasusan (@retasusan_510) 2025幎4æ16æ¥ æµç³ã«äœåã®éçãæãããããäºæ¬¡äŒã®åŸã«ããã«ã«æ»ãDay1ã¯çµäºã§ãã(æ¥ä»ã¯è¶
ããŠããã®ã§ããDay2ã«çªå
¥ããŠããå¯èœæ§ããããŸã) Day2 ãã®æ¥ã¯åæ¥ã®äºæ¬¡äŒã§ã¯ããããããããšããããæ£çŽããŸãã»ãã·ã§ã³ãèãããšãã§ããŸããã§ãããåçã è¿·ã蟌ãã å
ã§Kengo Hamasakiããã® Running JavaScript within Ruby ãèãããšãã§ããŸããããã®ã»ãã·ã§ã³ã¯ãJavaScriptãRubyã§åããã»ãã·ã§ã³ã§QuickJSãªã©ãRubyã§å®è£
ãçŽããšãããããªå
容ã ã£ãæ°ãããŸããäœèª¿ãæªãã£ãããšã«å ããå
容ãé£ããéšåçã«ããçè§£ã§ããªãã£ãã®ã§ãã¹ã¿ã³ãã©ãªãŒããŸãããªããããŒã¹ã®æ¹ã§ã話ã䌺ããŸããã ãªããšãäŒæ©ãæã¿ã€ã€Day2ã®ã»ãã·ã§ã³ãèŽãã«è¡ãæåŸã«LTãèŽããæ°ã¥ãã°Day2ãçµãã£ãŠããŸããã 倿¹ããã¯ããšã¹ã»ãšã ã»ãšã¹ã®ç€Ÿå¡ã®æ¹ãšåŠçæ¯æŽã®æ¹ã§äº€æµããããšã«ãªã£ãŠããã®ã§åŸ®åŠã«å埩ããäœãåŒãæºãã€ã€ã話ãããŠããŸããããšã¹ã»ãšã ã»ãšã¹ã®ç€Ÿå¡ã§Rubyã³ããã¿ãŒã§ããã å¡©äºãã ãšãã話ããããŠããã ãããããŸã貎éãªã話ãèãããšãã§ããŸããã(RubyKaigiã§è²Žéãªã話ãèãããšä»¥å€ã®æ¹ãå°ãªãã£ã) 瀟å¡ã®æ¹ãšã®é£äºåŸãã倧è¡éã§åºäŒã£ãRubyistãšçªçºçãª2次äŒãå§ãŸããæ§ã
ãªäŒç€Ÿã®æ¹ãšäº€æµããããšãã§ããŸããã #rubyfriends pic.twitter.com/onJWBwRomE — ãããã (@alitaso346) 2025幎4æ17æ¥ æµç³ã«ã«ã©ãªã±ã«è¡ãã»ã©ã®å
æ°ã¯ãªãã£ãã®ã§ããã®æ¥ã¯ããã«ã«åž°ã£ãŠãã倧åŠã®èª²é¡ãäºæéã»ã©ããªããåŸã«å¯ãŸããã Day3 ãã®æ¥ã¯ã Ruby Committers and the World ããå§ãŸããŸãããã³ããã¿ãŒã®æ¹ã
ã®è°è«ãèŽãããStatic BarrierãªããŠãã®ãæ€èšãããŠããã®ãããšé©ãããããNamespaceã¯ãŸã ãŸã 調æŽãå¿
èŠãªãã ãªãããšæã£ããããŠãŸãããäžã§ãäºææ§ãç¡èŠããŠç¡ãããããã®ãªã©ã¯é¢çœãè°è«ã§ããã Matzã®Keynoteã§ã¯ãRuby4.0ã®ãªãªãŒã¹äºå®ãæåŸã«å
šãŠã®è©±é¡ãæã£ãŠãããŸããããã®ç¬éã®äŒå Žã®çãäžããã¯å¿ããããŸããã ã¯ããŒãžã³ã°ããŒã¯ã§ã¯ã次åã®RubyKaigiãåœé€šã§éå¬ãããããšãçºè¡šãããŸããããã®æã«ã¯ãæ¥å¹Žãåå ããããšãåã®äžã§ç¢ºå®äºé
ã«ãªã£ãŠããŸããã ãããªãããªã§ãRubyKaigi 2025ã¯å¹ãéããŸãããããããªããšã§åãã¡ã®RubyKaigiã¯çµãããŸããã(!?) å人ãšå°ãè«ç¬ããã®ã¡ã«ã ãããã€ã³ã¿ãŒãããããã®æã¡äžã ã«åãããŸãã è²ã
ãªæ¹ãšäº€æµããã®ã¡ãPixivããã® RubyMusicMixin ã«åãããŸããã Mixinã§ã¯ããããŸãæµ·å€ã®æ¹ã«ç©æ¥µçã«è©±ããããŸããããã€ãããªãŒã¹ãã©ãªã¢ãã«ããã®æ¹ãªã©ãšã話ããããšãã§ããŸããããããŸã§ããã°ããªãRubyKaigiã«æãŸã£ãŠããŸããã æ¥œããïŒfun!!! #rubykaigi pic.twitter.com/MW1bPvG4mj — Retasusan (@retasusan_510) 2025幎4æ18æ¥ #rubyfriends pic.twitter.com/YLNKo6OuTw — Retasusan (@retasusan_510) 2025幎4æ18æ¥ #rubyfriends pic.twitter.com/rBbKliSc72 — Retasusan (@retasusan_510) 2025幎4æ18æ¥ ãã€ãã®æ¹ãšã¯ããªã話ãçãäžãããããªããŒã奜ããªè©±ããããæ¥å¹Žã®RubyKaigiã§ã¯ããªããŒãæã£ãŠããŠãã ãããšãã£ããã£ãŠãã ãããŸãããã°ã奜ããšããŠã¯æ¥å¹Žã®RubyKaigiã«ã¯å¿
ãåå ããããšããã ãã®æ¥ã¯æµç³ã«ç²ããã®ã§ãæ·±å€1æã«ã¯ãæãããŠããã ããŸããã Day4 ãã®æ¥ã¯ãæããå人ãšã¯ãã¹ãã£ããã«åå ããŠããŸãããéåäžè¶³ã®èªåã«ã¯ããªãããã€éåéã§6åããäžã§èªåã ãéäžã§ã®ãã¢ããããŠããŸããŸãããæ¥é ããã¡ãããšéåããããšæ±ºæããŸããã Wellness up! Morning CrossFit at RubyKaigi Day4 çµäºããŸããïŒ çããæ¬åœã«ãã€ã¹ã¬ããã§ããð @yfractal @bash0C7 @hetare70914 @h2z @ymneet ä»åã¯ã¯ãã¹ãã£ããæŸå±±æ§ã«å
šé¢ååããã ããŸããããè¿ãã«ãäœãŸãã®æ¹ã¯ãäœéšã«ãè¶ããã ããïŒ #rubykaigi #rubykaigi_hacomono pic.twitter.com/HWlhWZuTfh — hacomono Developers / hacomono ãããã¯ãããŒã å
¬åŒ (@hacomono_Dev) 2025幎4æ19æ¥ çããéåãããåŸã¯JRæŸå±±é§
ã«è·ç©ãé ããæŸå±±ã®è¡ã圷埚ã£ãŠãããšãããRuby Committerã®ã·ã£ããçãŠãã人ç©ãçºèŠãå人ãšçªæããŸãããåŸã»ã©å€æããã®ã§ããããã®æ¹ã¯ 2024幎ã®Keynote ãæ
åœãªãã£ã Samuelãã ã§ããïŒ æã«çé¢ç®ãªè©±ãæã¿ãªããéåŸæž©æ³ãç¥ç€Ÿãè¬ã®å¯ºããžã§ã©ãŒãåºãDD4Dãªã©ãäžç·ã«èгå
ããŠããããŸãããæ¬åœã«ããããšãããããŸããSamuelããïŒ #rubyfriends #rubykaigi @ioquatix Dogo onsen!!! pic.twitter.com/n8xwSpvheL — Retasusan (@retasusan_510) 2025幎4æ19æ¥ @retasusan_510 @rokuosan_dev @ioquatix #rubykaigi #rubyfriends pic.twitter.com/RCT64Jc9a0 — joker1007 (ã¢ã«ãã©ãŒããããã) (@joker1007) 2025幎4æ19æ¥ Rubyistå¢ããïŒ #rubyfriends #rubykaigi pic.twitter.com/cNOuNWkpoT — joker1007 (ã¢ã«ãã©ãŒããããã) (@joker1007) 2025幎4æ19æ¥ ãã®åŸãæŸå±±ç©ºæž¯ã«åããããã§ãæ¡ã®å®Rubyistãšäº€æµããªãã京éœãžãšåž°éããåã®RubyKaigi2025ã¯å¹ãéããŸããã æåŸã« åã¯ä»åãšã¹ã»ãšã ã»ãšã¹ã® åŠçæ¯æŽ ãå©çšããŠRubyKaigiã«åå ãããŠããã ããŸããã æ¯æŽããŠãã ãã£ããšã¹ã»ãšã ã»ãšã¹ã«ã¯æ¬åœã«é ãäžãããªãã§ãïŒ ä»åã¹ãã³ãµãŒããŒã¹ã§ã話ãããŠãã ãã£ãæ¹ã
ãRubyKaigiã«ãŠã話ããããããã®æ¹ã
ãå¿è«ä»åæ¯æŽããŠããã ãããšã¹ã»ãšã ã»ãšã¹ã®çæ§ãæ¬åœã«ããããšãããããŸããïŒæ¥å¹Žã®RubyKaigiã§ãäŒãããéã«ã¯ãŸããããããé¡ãããŸãïŒ ä»åã®RubyKaigiæéäžã«ãäŒããããšã¹ã»ãšã ã»ãšã¹ã®ç€Ÿå¡ã®çæ§ã®æž©ããããã€ãã³ããžã®ç±ãæ³ãã«ãšãŠãåºæ¿ãåããŸããïŒ ä»åãæ¯æŽããã ãããçžã倧åã«ããããèå³ãããã°ããã²ãšã¹ã»ãšã ã»ãšã¹ã®æ¡çšæ
å ±ãã芧ããã ããå¿åãæ€èšããŠã¿ãŠãã ããã open.talentio.com
ãæ©å«éºãã
ãããããŸãã @kimukei ã§ãã ãã㯠ãåç·šãVisual Regression Testing ã®å
補åãžã®é ð ãChromaticãã代æ¿ããŒã«ãžã ã®åŸç·šã«ããããŸãã ã§ã¯ãã£ãããã©ããã£ãŠ Chromatic ãã代æ¿ããŒã«ãžç§»è¡ããŠãã£ããã玹ä»ããŠãããŸãã ã³ã³ããã¹ã ã«ã€ãã±ãªãã¥ãŒã¢ã«ã§ã¯ 577 åã® Story, kaipoke-ui 1 㯠63 åã»ã©ã® Story ãæããŠãã VRT ããŠããã¹ãããã·ã§ããæ°ã¯ã«ã€ãã±ãªãã¥ãŒã¢ã«ã§ 969 æãkaipoke-ui ã§ 139 æçšåºŠ ã«ã€ãã±ãªãã¥ãŒã¢ã«ã§ã¯æ¯èŒçåãã®å€ã Modal ã yagisan-reports 2 ã䜿çšãã PDF ã衚瀺ãã Story ãå€ãååšãã ããã¯ããããªã«ã€ãã±ãªãã¥ãŒã¢ã«ã® pull request ã«å®è¡ãã CI ã§ Storybook ã®é
ä¿¡ãã VRT ã®å®è¡ãšãã¹ãã¬ããŒãã®çºè¡ãšé
ä¿¡ãŸã§ã 5 åçšåºŠã«åããç©èªã ãŸãããããŸã§ VRT ã®ä»çµã¿ã¯ Chromatic ã䜿ã£ãŠããããããªãã¹ã VRT ã®äœéšã¯ Chromatic ã®ãããæãªããªãããã«å·¥å€«ããŸããã ããã§è¡ã VRT ãšããŠã® CI ãš Storybook ã®é
ä¿¡ãš VRT ã®çµæã¬ããŒãã®é
ä¿¡ãšããŠã® CD ã«ã€ããŠã¯ãŒã¯ãããŒã§è¡ãåŠçã®æµãã¯ä»¥äžã®ããã«ãªããŸãã Storybook ã build Baseline 3 ã®ååŸ Storybook ã®æ®åœ± æ®åœ±ããç»åãš Baseline ãšã®æ¯èŒïŒVRTïŒ VRT ã¬ããŒããäœæ Storybook ãš VRT ã¬ããŒããããã〠& é
ä¿¡ VRT ã§å·®åãæ€åºããããšãã¯ããŒãžããããã¯ãã CI/CD ã®å®è¡ç°å¢ã¯ GitHub Actions ã§ãã VRT 㯠reg-viz/storycap ãš reg-viz/reg-cli ãçšããŠå®çŸããŠããŸãã ããã§ãå®çŸããäžã§ããã€ãç¥èŠãæºãŸã£ãã®ã§ç޹ä»ããŠãããŸãã Storybook, VRT ã«ã€ã㊠CI/CD æé©åã®ç¥èŠ GitHub Actions ã©ã³ããŒãšã³ã¹ãæé©å GitHub Actions hosted runner ãš AWS CodeBuild hosted runner ã®ã³ã¹ãæ¯èŒ large runner ã«ã€ããŠãã¹ãã GitHub Actions hosted runner ãš AWS CodeBuild hosted runner ãšã§ã³ã¹ãæ¯èŒãããšãCodeBuild ã®æ¹ãå®ãããšãããããŸãã GitHub Actions hosted runner pricing: https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions#per-minute-rates-for-x64-powered-larger-runners AWS CodeBuild hosted runner pricing: https://aws.amazon.com/codebuild/pricing/ â» GitHub Actions hosted runner 㯠arm64 ã¢ãŒããã¯ãã£ã ãšå®ãã®ã§ãããä»å chrome ã chromium ãš puppeteer ãåããã€ã€ç¶ç¶çã«ã¡ã³ããã³ã¹ããŠããéœåäž arm64 ã¢ãŒããã¯ãã£ã® runner ã®æ¡çšã¯èŠéã£ãŠããŸã ä»åç§ãéžå®ãã runner 㯠CPU ã®ã³ã¢æ°ã欲ãã㊠CodeBuild(ap-northeast-1)ã® general1.xlarge ïŒ$0.1002/minïŒ ãªã®ã§ãããè¿ããæ§èœãåºãããšãããš GitHub Actions self hosted runner ã® Linux 32-core ïŒ$0.128/minïŒãéžã¶ããšã«ãªããŸãã ãŸããCodeBuild ã® runner ã¯ãããã¯ãŒã¯äžãS3 ãšã®éä¿¡ãéããã Baseline ã®ååŸãæ©ããªãå©ç¹ãªã©ããããŸããã ãžã§ãåå²ã®èœãšã穎 VRT ã®æéçãªããã¯ã¯ã ãããæ®åœ±ã«ãããŸããææ°ãå€ãã®ã§ããããã§ãã sharding ãã㊠job ãåå²ããææ®µãåãããŸããããã®å Žå job åå²ã®ãªãŒããŒãããããªããªãç¡èŠã§ããŸããã å
·äœçã«ã¯ä»¥äžã®ãããªãªãŒããŒããããä¹ã£ãŠããŸãã runner ã®å²ãåœãŠåŸ
ã¡ åã® job ã§äœãããçæç©ã®ããŠã³ããŒãïŒåã® job ã§ã¯çæç©ãã¢ããããŒãããã³ã¹ããçºçããŸãïŒ runner ã®å²ãåœãŠåŸ
ã¡ã«ã€ããŠã§ãããGitHub Actions ã§ã¯æšæº runner ã§ã¯ãªããã®ã䜿ããšãã°ãã° pick ããããŸã§é
ãçŸè±¡ãçºçããŸããã CodeBuild ã§ã¯ provisioning ãªã©ãçºçãããããã ããã job ã®æåã® step ãå®è¡ããããŸã§ 30 ç§çšåºŠããã£ãŠããŸããã reg-viz/storycap ã«ã¯ parallel ãªãã·ã§ã³ãã reg-viz/reg-cli ã«ã¯ concurrency ãªãã·ã§ã³ãæäŸãããŠããŸãã ãã®ããããã§ã¯ãã㊠job åå²ãé¿ã㊠large runner ãçšããŠãã®äžã§å€§éã«å®è¡ããããšã§ãªãŒããŒããããæ¥µåãªãããŸãããïŒãã®ããã« CPU ã³ã¢æ°ã欲ããã£ãïŒïŒ ã¡ããã©ããããã倧ã㪠Storybook ã ãšãbuild ããçæç©ã 50MB 匷ãããã®å€§ããã§ãGitHub Actions ã®æšæº runner ã䜿ã£ãŠãããšåäœãå®å®ããªãããšãªã©ãèµ·ãã£ãŠããŸããããCPU ã³ã¢æ°ã最沢㪠runner ãéžã¶ãšã ãããããããæœ€æ²¢ãªã¡ã¢ãªãä»ããŠããŸãããããæ®åœ±åäœã®å®å®åãªã©ãå¯ç£ç©çã«ãããããŠãããŸããã ã¡ãªã¿ã« CodeBuild hosted runner ãçšããŠãããšãã·ã³ãªãœãŒã¹ã«ã€ããŠã®ã¡ããªã¯ã¹ãåæã«åããã®ã§ãæé©ãª runner æ¢ããæããŸãããGitHub Actions hosted runner ã§ãã¡ããªã¯ã¹ã¯èŠãããšæãã°èŠããŸãããèŠãããã®ã¹ã¯ãªãããå
¥ããããªã©ãå¿
èŠã§ãããããã°ããšãµãšæã£ãæã«èŠãããæºåãããŠããªãããšãã»ãšãã©ã§ãã ãã®èŸºã¯ãã·ã³ã¹ããã¯ã®ãã¥ãŒãã³ã°ãšå
±ã« job ãš step ã®ãã¥ãŒãã³ã°ãåæã«è¡ããšè¯ãã§ãããã ã¯ãŒã¯ãããŒå
šäœã®ããã¯éšåã pick éšåã®å¯èŠåãè¡ãã®ã« Kesin11/actions-timeline ããšãŠã䟿å©ã§ãããèšå®ãåºç€ãäžèŠã§ã¯ãŒã¯ãããŒã«å·®ã蟌ããšããã«ãã®ãããªå³ãèŠãããããã«ãªããŸãã actions-timeline ã®å³ ãŸãšãããšãäžèŠå¹ççã«æãããžã§ãã®åå²ã§ããå®éã«ã¯ çæç©ã®ã¢ããããŒãã»ããŠã³ããŒãã«æéãããã ãžã§ãéã®ãªã¬ãŒã§åŸ
æ©æéãçºç ã©ã³ããŒã®å²ãåœãŠåŸ
ã¡ãè€æ°åçºç ããã 1 ã€ã®å€§ããªãžã§ãã§å®è¡ããæ¹ããç·åçãªãã€ãã©ã€ã³å®è¡æéãçããªãããšããããšããããšã§ããã 䞊åå®è¡ã§ãã step ããã·ãã·äžŠåå®è¡ãããŠãã ã³ãã³ãã¯ãããªæãã§äžŠåå®è¡ã§ããŸãã jobs: parallel-commands: runs-on: ubuntu-latest steps: - name: Run commands in parallel run: | command1 & command2 & command3 & wait Baseline ã®ããŠã³ããŒããš Storybook ã®æ®åœ±ã¯äžŠååå¯èœã§ã©ã¡ããæéã®ãããåŠçã®ãã䞊ååããããšã§ 1 åçšåºŠã®ççž®ã«ã€ãªãã£ãŠããŸãã ããã large runner ã®ã¹ããã¯ããããæ
ã§ããã é
ä¿¡åºç€ã®éžæãšãµã€ãºç®¡ç Storybook ãš VRT ã¬ããŒãã®é
ä¿¡ã«ã€ããŠãã©ããã«é
ä¿¡ãããã¯éèŠãªåé¡ã§ãã ãã䜿ãããã®ã¯ Amazon S3 ã§ãããããä»å㯠Private GitHub Pages ãéžæããŠããŸãã Private GitHub Pages ã®å©ç¹ AWS ã§èªèšŒä»ãé
ä¿¡åºç€ãæ§ç¯ããããããPrivate GitHub Pages ã䜿çšããæ¹ãã»ããã¢ããã容æã§ç®¡çã³ã¹ããäœããªããŸãã åæãšããŠãåŒç€Ÿã§ã¯ãšã³ãžãã¢ã¯ã»ãŒãã«ãªã¢ãŒãã§éçºããŠããŸãã ãã®ããäœããéå®å
¬éããéã«ã¯ã¢ã¯ã»ã¹ã§ããã®ã¯åŒç€Ÿã®äººéã®ã¿ã«ããäœãããã®ä»çµã¿ãå¿
èŠã«ãªããŸãã S3 ã§ã¯ VPN ã® IP ã®ã¿ã¢ã¯ã»ã¹å¯èœã«ããã®ããæè»œã§ãããVPN æ¥ç¶ãããã©ããããšããäœéšäžã®ããã¯ãã€ã³ããçºçããŸãã çµç¹ã® Google ã¢ã«ãŠã³ããšé£æºããèªèšŒãçšæããã«ã¯å·¥å€«ãå¿
èŠã§ãã åŒç€Ÿã® GitHub ãªããžããªã¯ Google ã¢ã«ãŠã³ãã§ã® SAML èªèšŒãå¿
é åããŠãããããPrivate GitHub Pages ã§é
ä¿¡ããããšã§ VPN æ¥ç¶ã®ç
©ãããã解決ãã€ã€åæã«ã»ãã¥ã¢ãªéå®é
ä¿¡ãå¯èœã«ããŸããã ãã ããGitHub Pages ã«ã¯å¶éããããŸãã ã¢ãŒãã£ãã¡ã¯ãã®ãµã€ãºå¶éãã·ã㢠åæãããã€ãªã¯ãšã¹ãã«åŒ±ãïŒé 次åŠçãåºæ¬ïŒ ããããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ã©ããã£ãŠå¯Ÿå¿ããã®ã玹ä»ããŸãã ã¢ãŒãã£ãã¡ã¯ããµã€ãºç®¡çã®éèŠæ§ GitHub Pages ã®ãããã€ã¯ ç¹å®ã®ãã©ã³ãïŒããã§ã¯ gh-pages ãã©ã³ãïŒã®å
容ã artifact åããã¢ããããŒã ã¢ããããŒããã artifact ã Pages ã«ããã〠ãšããæµãã§è¡ãããŸãã ãã® artifact 㯠1GB çšåºŠã«åããŠãããªããš deploy ã®å€±æç¢ºçãäžãã£ãããdeploy ã«æéããããããã«ãªããŸãã GitHub Pages ã®ããã©ãŒãã³ã¹ãç¶æããããã«ã VRT ã¬ããŒãããäžèŠãªç»åïŒå·®åããªããã®ïŒãé€å» 倿Žããªãå Žåã¯ã¬ããŒããäœæããªã倿ããžãã¯ãå°å
¥ ãããã€ã¯å¯èœãªéããŸãšããŠå®è¡ïŒåæãªã¯ãšã¹ãã®é »åºŠãæžããïŒ Pull Request ã® merge/close ã¿ã€ãã³ã°ã§ã® gh-pages ãã©ã³ãã®æé€ å®æçãªå€ããã¡ã€ã«ã® gh-pages ãã©ã³ãã®æé€ ãè¡ããŸããã VRT ã¬ããŒãããäžèŠãªç»åãé€å»ã§ãããã倿Žããªãå Žåã¯ã¬ããŒããäœæããªãããã«ã§ããã®ã¯ãããã³ããšã³ãéšåãå®è£
ããŠãããšã³ãžãã¢ã«ãã¢ãªã³ã°ãããšãã PASSED ã®ç»åã¯ã»ãŒèŠãŠããªããšããããã£ãããã§ãã PASSED ã®ç»åãã¬ããŒãããé€å€ããããšã§ãã«ã ãš 50MB ãããã®å®¹éã®ã¬ããŒããå€§æµ 2~3MB ã«ãªã 90ïŒ
以äžã®ãµã€ãºåæžãèŠèŸŒããŸãã åæãããã€ãªã¯ãšã¹ãã®å¶åŸ¡ GitHub ã® Deployments ã¯ãªã¯ãšã¹ããæä»çã«åŠçããŸããã€ãŸããå®è¡äžã® Deployments ãããã°ä»ã® Deployments ã®ãªã¯ãšã¹ãã¯å€±æããŸãã ãŸããGitHub Pages ã® Build and deployment ã«ã¯ãGitHub ActionsããšãDeploy from a branchãã® 2 çš®é¡ã®ããæ¹ããããŸãã åè
ã¯å®å
šã«ãã£ã¡ã deploy ã®é¢åãèŠãèšå®ã§ãåŸè
ããã©ã³ããæŽæ°ããããèªåã§ GitHub ã®æ¹ã§ãããã€ããŠãããããæ¹ã§ãã ãDeploy from a branchãã®èšå®ã¯èªåã§ãã£ãŠãããã®ã¯å¬ããã®ã§ããããã©ã³ãã®å€æŽé »åºŠãé«ããšåæå®è¡æ§ã®ç¹ã§é£ããããŸãã éè€å®è¡ãåé¿ãããããã«ãå®è¡äžã«æ°ããå®è¡ãªã¯ãšã¹ããæ¥ããçŸåšã®å®è¡ããã£ã³ã»ã«ããæ°ããå®è¡ãå§ããããã«èšèšãããŠããŠããã®èšå®ã¯ããããŸããã ãã®ããããã©ã³ãã®å€æŽé »åºŠãé«ãå Žåã«å®è¡ãªã¯ãšã¹ããç¶ã
ãšæ¥ãŠããŸããšåžžã«ææ°ã®ãªã¯ãšã¹ããåŠçããããšããŠæåã®ãªã¯ãšã¹ãã®å€æŽãå»¶ã
ãš Pages ã«åæ ãããŸããã ãããé¿ããããã«åè
ã®ãGitHub Actionsãã§ Pages ãããã€ããæ¹æ³ãåããŸããã ãã®æ¹æ³ã§ããšãã¯ãŒã¯ãããŒå
ã® concurrency èšå®ã§åæå®è¡ãããéã®è¡åãå¶åŸ¡ã§ããããã«ãªããŸãã ããã§ã¯ãããã€ã®ã¯ãŒã¯ãããŒã¯ä»ã®å®è¡ã«ãããã£ã³ã»ã«ãããªãããã«ããŠããããããããã€ãããåãããã«ããŸããã ãã®éãDeployments ã®ãªã¯ãšã¹ãèªäœã¯æä»çã§ãã®ã§ãåŸç¶ã® Deployments ãªã¯ãšã¹ãã¯å€±æããæãããããŸãããåã®ãããã€ãçµããã°æåããŸãã ãã®ããèªåçã« rerun ã§ããä»çµã¿ãæ§ç¯ 4 ããartifact name ã¯ã¿ãªåäžã«ããŠãã㊠last write win ã®ç¶æ³ãäœããupload artifact ãè¡ã job ãš deploy artifact ãå®è¡ãã job ãšãåããdeploy artifact ãå®è¡ãã job ã®ã¿ rerun ãè¡ãããããã«çµãããšã§é 次ãããã€ã¯è§£æ¶ãã€ã€æçµçã«ã¯ææ°ã® artifact ã Pages ã«ãããã€ãããŠããç¶æ³ãäœãåºããŸããã VRT ã®æé©å ãããŸã§ Chromatic ãæŽ»çšããŠãããããéçºè
ã®ã¡ã³ã¿ã«ã¢ãã«ã«ã¯ Chromatic ã®äœéšãæ ¹ä»ããŠããŸãã ä»å VRT ã®ææ³ã Chromatic ããç§»è¡ãããã«ããããããã« Chromatic ã®äœéšã«è¿ã¥ããŠãã£ããããããããã€ã³ãã玹ä»ããŸãã storycap ã«ããçæãããç»åãã¡ã€ã«åãšå¯Ÿè±¡ã® Story ã®é£æºæ¹å Chromatic ã®äœéšãšããŠå€§ããã®ããVRT ã§æ€ç¥ãããã¹ãããã·ã§ããã§è©²åœãã Story ã®ããŒãžãžå³åº§ã«é£ã¹ãããšããããŸãã ãã®äœéšãç§»è¡ããã®ã«ã reg-viz/storycap ã§çæãããç»åãã¡ã€ã«åãã Storybook ã® URL ã«å€æã§ãã颿°ãå®è£
ããVRT ã¬ããŒãã®ãµããªãŒã Pull Request ã«ã³ã¡ã³ããããšå
±ã«å€æŽãæ€ç¥ããã¹ãããã·ã§ããã«ã€ããŠãããã該åœãã Storybook ã®ãªã³ã¯ãã³ã¡ã³ããšäžç·ã«æ·»ããããã«ããŸããã äŸïŒ GitHub Actions ãžã®ã¬ããŒã reg-viz/reg-cli ã§çæãã VRT ã¬ããŒãå
ã« Storybook ã®ãªã³ã¯ãé
眮ããã®ã¯é£ããã§ããããããªãã°ãããŸã§äœéšãæããã« VRT ã®çµæãšè©²åœã® Storybook ãžã®é·ç§»ããããããªããŸãã ã¢ãã¡ãŒã·ã§ã³å¯Ÿçãšãã¹ãå®å®æ§åäž VRT 㯠flaky ããšã®æŠãã§ãã VRT ã®å®å®æ§ãé«ããããã®æœçãããã€ã宿œããŸããã CSS ã¢ãã¡ãŒã·ã§ã³ãç¡å¹å JavaScript ã¢ãã¡ãŒã·ã§ã³ãäžæåæ¢ ã¿ã€ãã³ã°ã«äŸåããèŠçŽ ã®å¶åŸ¡ æåã® 2 ã€ã¯ DOM ã®ãã¹ãã£ã³ã°ã§ãããããæšå¥šããããããªããæ¹ã§ããã玹ä»ã¯å²æããŸãã ã¿ã€ãã³ã°ã«äŸåããèŠçŽ ã®å¶åŸ¡ã«ã€ããŠã¯ã parameters.screenshot.waitFor ã§é 匵ãã®ãè¯ãã®ã§ãããæ§é äžãããåŸãªããã®ã¯ parameters.screenshot.delay ã§ãè¶ãæ¿ãæãã«ãªããŸããã ããã«ãã«ã€ãã±ãªãã¥ãŒã¢ã«ã§ã¯è€æ°ã®ãã©ã³ããæ±ã£ãŠããã®ã§ãããããŸã«ãã©ã³ãèªã¿èŸŒã¿ãçµãã£ãŠããªãã®ã«æ®åœ±ãããããã«èª€æ€åºããã±ãŒã¹ããããŸããã ãã®åé¡ã«ã€ããŠã¯ããã¹ãŠã®ãã©ã³ãèªã¿èŸŒã¿ãŸã§åŸ
〠util ãå®è£
ããŸãã 5 ã ä»ã«ãã¹ãããã·ã§ãããå®å®ãããããã®ããããåŸ
ã¡æ¡ä»¶ã util åããå Story ã§ç®¡çããããããŸããã ããã«ããã¹ãã®äžå®å®æ§ïŒflakyïŒãæ€åºããããã®ä»çµã¿ãæ§ç¯ããŸãããå
·äœçã«ã¯ãBaseline ãšãªãç»å矀ïŒãã§ã« S3 ã«ã¢ããããŒãæžã¿ïŒãšãããã©ã«ããã©ã³ãã®ææ°ã³ãŒãããæ°ãã«çæããç»åçŸ€ãæ¯èŒããã¯ãŒã¯ãããŒãå®è£
ãã宿çïŒãã€ãªãŒïŒãã€è€æ°åå®è¡ããããšã§ãç°å¢ãå®è¡ã¿ã€ãã³ã°ã«ããå·®ç°ãæ€åºããŠããŸãã çŽ 1000 æã®ã¹ãããã·ã§ãããæ±ãèŠæš¡ã§ã¯ãåçŽãªæ°ã®åé¡ãããäžå®å®æ§ãçãããããªããŸãããã®ãããæ€åº â å¯Ÿå¿ â å確èªã®ãµã€ã¯ã«ãå°éã«ç¹°ãè¿ãããšãä¿¡é Œæ§åäžã®ã«ã®ãšãªããŸãããç¹ã« flaky ãã¹ãã¯ç¢ºççã«çºçãããããè€æ°åã®å®è¡ã«ããæ€èšŒã¯éåžžã«éèŠã§ãã PDF ã®ããžã¥ã¢ã«ãã¹ã PDF çæã¯ yagisan-reports ã䜿çšããŠããã®ã§ãããPDF ã«å¯ŸããŠã VRT ã宿œããããšãªããšäœãããã® viewer ãå¿
èŠã«ãªããŸãã wojtekmaj/react-pdf ã viewer ã«æŽ»çšããPDF ã® VRT ãå®çŸããŠããŸãã PDF ã¯ä»ã®ã³ã³ããŒãã³ãã«æ¯ã¹ããšã¬ã³ããªã³ã°ã«ããæéãããããããæ®åœ±ã¿ã€ãã³ã°ã®å¶åŸ¡ã¯å¿
é ã§ããã¬ã³ããªã³ã°ãæ€ç¥ããããã® data-testid ãªã©ãèšå®ãããã®èŠçŽ ã®è¡šç€ºãåŸ
ã£ãŠããã¹ã¯ãªãŒã³ã·ã§ãããæ®åœ±ããããã«ããŠããŸãã VRT å€å®åºæºã®æé©å VRT ã«ããã倿޿€ç¥ã®éŸå€èšå®ã¯ãããã°ãå ã®å¡©å æžãã®ãããªãã®ã§ããäŸãã° Chromatic ã§ã¯ diffThreshold ã®ããã©ã«ãå€ãšã㊠.063 (6.3%) ãæ¡çšããŠããããã®éŸå€ã®æ±ºå®ã«ã¯çµéšãšè©Šè¡é¯èª€ãäžå¯æ¬ ã§ãã https://www.chromatic.com/docs/threshold/ ããããChromatic ã® 6.3% ããã®ãŸãŸ reg-viz/reg-cli ã«é©çšãããšãæ€ç¥æåºŠã«éããçããåœé°æ§ïŒå€æŽãããã®ã«æ€ç¥ãããªãïŒãå¢å ããåŸåããããŸããã ãŸãã reg-viz/reg-cli ã§ã¯ããã詳现ãªéŸå€èšå®ãå¯èœã«ãªã£ãŠããŸãïŒ -M, --matchingThreshold Matching threshold, ranges from 0 to 1. Smaller values make the comparison more sensitive. 0 by default. Specifically, you can set how much of a difference in the YIQ difference metric should be considered a different pixel. If there is a difference between pixels, it will be treated as "same pixel" if it is within this threshold. -T, --thresholdRate Rate threshold for detecting change. When the difference ratio of the image is larger than the set rate detects the change. Applied after matchingThreshold. 0 by default. -S, --thresholdPixel Pixel threshold for detecting change. When the difference pixel of the image is larger than the set pixel detects the change. This value takes precedence over thresholdRate. Applied after matchingThreshold. 0 by default. https://github.com/reg-viz/reg-cli?tab=readme-ov-file#options æ§ã
ãªãã©ã¡ãŒã¿ã詊ããçµæãæçµçã« --matchingThreshold 0.011 --thresholdPixel 100 ãšããå€ã«èœã¡çããŸãããéŸå€èª¿æŽã®åºæ¬å§¿å¢ãšããŠã¯ããŸã 0 ã«è¿ãå€ïŒé«æåºŠïŒããå§ããåœéœæ§ïŒå€æŽãšæ€åºãããããªãã®ã«æ€ç¥ãããïŒãç®ç«ã€ããã§ããã°åŸã
ã«å€ãäžããŠããæ¹æ³ã广çã§ããããã¯åœé°æ§ã®æ¹ãçºèŠã»å¯Ÿå¿ãé£ããããã§ãã ãŸããéçºè
ã®ã¡ã³ã¿ã«ã¢ãã«ãšããŠãç»åå·®åãç»é¢å
šäœã®å²åã§æãããããã倿Žéšåã®ãã¯ã»ã«æ°ã§å€æããããšãå€ããšèгå¯ããããããå²åããŒã¹ïŒthresholdRateïŒã§ã¯ãªããã¯ã»ã«æ°ããŒã¹ïŒthresholdPixelïŒã§ã®æ€ç¥ææ³ãæ¡çšããŸããã倧ããªç»é¢ã§ãã£ãŠããéçºè
ã¯ç»é¢å
šäœã§ã¯ãªãæ§æã³ã³ããŒãã³ãåäœã§å€æŽãèªèããŠããããã§ãã VRT ã®æ¿èªããã»ã¹ãšããŒãžãããã¯ã®é£å ãã«ãªã¯ãšã¹ãã®ããŒãžå¶åŸ¡ã«ã¯ãGitHub ã® Branch protection rule ã«ãããRequire status checks to pass before mergingãæ©èœã广çã§ããããã«ãããã¹ããŒã¿ã¹ãã§ãã¯ãšããŒãžæ¡ä»¶ãé£åã§ããŸãã ãã ããVRT ã宿œããã¯ãŒã¯ãããŒã§ããŒãžãããã¯ãçŽæ¥å¶åŸ¡ããããšãããšåé¡ãçããŸããæ¿èªããã»ã¹ãšãã匷å¶çã«æåãšã¿ãªããè£å£çãªææ³ããã¯ãŒã¯ãããŒèªäœã«æ··å
¥ããŠããŸããå
šäœã®èŠéããæªããªãã¡ã³ããã³ã¹æ§ãæãªãæãããããŸããããã§ç§ãã¡ã¯ãããŒãžãããã¯å¶åŸ¡ãå¥ã®ä»çµã¿ãšããŠå®è£
ããŸããã å
·äœçãªã¢ãããŒãã¯ä»¥äžã®éãã§ãïŒ VRT ã§å·®åæ€åºæããã«ãªã¯ãšã¹ãã«å°çšã®ã©ãã«ãä»äž ãã®ã©ãã«ãååšããå Žåãã¹ããŒã¿ã¹ã pending ã«èšå® ã©ãã«ãå€ããå Žåãã¹ããŒã¿ã¹ã success ã«æŽæ° ãã®ããŒãžãããã¯å¶åŸ¡ã«ã¯ on.pull_request.types: [labeled, unlabeled] ã€ãã³ããæŽ»çšããã©ãã«ã®ä»ãå€ããšããåçŽãªæäœã§ VRT ã®æ¿èªç®¡çãå®çŸããŠããŸãã ãŸããéçºè
ããã®ãã£ãŒãããã¯ãåããVRT æ¿èªåŸ
ã¡ç¶æ
ã§ã¯ã³ãããã¹ããŒã¿ã¹ããfailureãã§ã¯ãªããpendingãã«èšå®ããããæ¹åããŸãããpending ç¶æ
ã¯ãã©ãŠã¶ã¿ãã§ä»¥äžã®ããã«è¡šç€ºããã察å¿ç¶æ³ãèŠèŠçã«ææ¡ãããããªã£ãŠããŸãã ã¹ããŒã¿ã¹ã倱æã®èŠãæ¹ ã¹ããŒã¿ã¹ããã³ãã£ã³ã°ã®èŠãæ¹ ããã¯ææ°ã®ã³ãããã«å¯Ÿãã status ãå¶åŸ¡ããããšã§å®çŸã§ããŸããGitHub ã® REST APIïŒ Create a commit status ïŒã䜿ã£ãŠãVRT ã®æ¿èªç¶æ
ã«åºã¥ããŠææ°ã³ãããã®ã¹ããŒã¿ã¹ãæäœãããRequire status checks to pass before mergingãã§èšå®ããŠãã job åã®ã³ã³ããã¹ãã§ä»äžããããšã§ãããã¯å¶åŸ¡ãšäž¡ç«ãããŸããã ãã®äžé£ã®åŠçãããŒã¯ä»¥äžã®ãšããã§ãïŒ VRT ã§å·®åæ€åºæãGitHub App ã®ããŒã¯ã³ãäœ¿çš 6 ããŠãã«ãªã¯ãšã¹ãã«ããŒãžãããã¯çšã©ãã«ãä»äž ãã®ã©ãã«ãä»ããŠããå Žåãææ°ã³ãããã®ã¹ããŒã¿ã¹ãç¹å®ã® job åã®ã³ã³ããã¹ãã§ pending ã«èšå® VRT ã®å€æŽãæ¿èªããå ŽåãVRT çµæãæ¡å
ããã³ã¡ã³ãå
ã®ãã§ãã¯ããã¯ã¹ã«ãã§ãã¯ãå
¥ããïŒissue_comment.types: edited ã€ãã³ããçºç«ïŒ ã³ã¡ã³ãç·šéã€ãã³ããããªã¬ãŒã«ãæ¿èªã³ã¡ã³ãã§ããããšã確èªããŠããŒãžãããã¯çšã©ãã«ãé€å» ã©ãã«åé€ã«ãããææ°ã³ãããã®ã¹ããŒã¿ã¹ã job åã®ã³ã³ããã¹ãã§ success ã«æŽæ° ããã§ããŒãžãå¯èœã«ãªã ãã®ä»çµã¿ã«ãããæå³ããªãããžã¥ã¢ã«å€æŽã®ããŒãžã鲿¢ãã€ã€ãæå³çãªå€æŽã¯ç°¡åãªæ¿èªããã»ã¹ã§å¯Ÿå¿ã§ããã¯ãŒã¯ãããŒãå®çŸããŸããã ãŸãšã ã«ã€ãã±ãªãã¥ãŒã¢ã«ã®ãã«ãªã¯ãšã¹ãã«å¯Ÿãã CI åŠçã§ãStorybook ã®é
ä¿¡ãã VRT ã®å®è¡ããã¹ãã¬ããŒãã®é
ä¿¡ãŸã§ã 5 åçšåºŠã«åããããã«å®æœããäž»ãªæé©åãã€ã³ãã¯ä»¥äžã®éãã§ãïŒ ã©ã³ããŒéžå®ã®æé©å ïŒ AWS CodeBuild hosted runner ã®æ¡çšã«ããã³ã¹ãå¹çãæ¹å é©åãªãã·ã³ã¹ããã¯ã®éžå®ã«ãã VRT ã®ããã©ãŒãã³ã¹ã倧å¹
ã«åäž ãžã§ãæ§æã®æé©å ïŒ å€æ°ã®å°ããªãžã§ããžã®åå²ã§ã¯ãªããåäžã®å€§ããªãžã§ãå
ã§ã®äžŠååŠçãéžæ 䞊åå®è¡å¯èœãªã¹ããããç¹å®ããå¹ççãªå®è¡ãã€ãã©ã€ã³ãæ§ç¯ é
ä¿¡åºç€ã®å¹çå ïŒ Private GitHub Pages ãæŽ»çšããèªèšŒä»ãé
ä¿¡ã®ç°¡çŽ å ã¢ãŒãã£ãã¡ã¯ããµã€ãºã®å³æ Œãªç®¡çã«ããå®å®ããããã〠ãããã€ã¡ã³ããªã¯ãšã¹ãã®å¹ççãªå¶åŸ¡ VRT ã®éçºè
äœéšåäž ïŒ Chromatic ã«è¿ãäœ¿çšæãåçŸããç§»è¡ã³ã¹ããæå°å ã¢ãã¡ãŒã·ã§ã³ãªã©ã®äžå®å®èŠçŽ ã«å¯Ÿããå
ç¢ãªå¯Ÿç 广çãªå€å®åºæºã®èšå®ã«ãã誀æ€åºã®æå°å çŽæçãªæ¿èªããã»ã¹ãšã³ãããã¹ããŒã¿ã¹ã®é£å ãããã®æé©åã«ããã577 åã® Story ãš 969 æã®ã¹ãããã·ã§ãããæ±ãå€§èŠæš¡ VRT ããã»ã¹ãçŽ 5 åã§å®äºã§ããããã«ãªããŸããããã®æ¹åã¯éçºãµã€ã¯ã«å
šäœã®å¹çåã«è²¢ç®ããéçºè
äœéšã®åäžã«ãã€ãªãã£ãŠããŸãã ãŸãããã®ç§»è¡ãéã㊠VRT ã Storybook ãé
ä¿¡ããã®ã«æ¯æã£ãŠããæã
ã®æ¯æãã 90% è¿ãåæžã§ããŸããã å
補ããŠãã UI ã³ã³ããŒãã³ã矀ãChakra UI ãããŒã¹ã«äœã£ãŠããã ↩ PDF ã®çæã«å©çšããŠãã垳祚çºè¡ãšã³ãžã³ã https://denkiyagi.jp/yagisan-reports/ ↩ VRT ãããéã®æ¯èŒå
ãšãªã main branch ã®ã¹ãããã·ã§ãããäºåã« S3 ã«ã¢ããããŒãããŠããŸãã ↩ https://github.com/orgs/community/discussions/67654#discussioncomment-8038649 ãåèã«ãªããšæããŸã ↩ FontFace API ã® loaded ããããã£ã掻çšãããããžã§ã¯ãã§äœ¿çšãããã¹ãŠã®ãã©ã³ããåæããŠãããããã® loaded() ã® Promise ã解決ãããŸã§åŸ
æ©ããå®è£
ãšããŸãããåè: https://developer.mozilla.org/en-US/docs/Web/API/FontFace/loaded ↩ GitHub App ã®ããŒã¯ã³ã䜿çšããçç±ã¯ããã©ã«ãããŒã¯ã³ã ãšã€ãã³ããåŸç¶ã®ã¯ãŒã¯ãããŒã«ããã¯ãããªã GitHub Actions ã®ä»æ§ã®ããã§ãã ↩
ã¯ãããŸããŠãéœå
ã®å€§åŠã§ã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ãå°æ»ããŠããå°éã§ããã€ã³ã¿ãŒãããäžã§ã¯ããç«( @yuneko1127 )ãšåä¹ã£ãŠããŸããRubyKaigi 2025ã«ã¯ãæ ªåŒäŒç€Ÿãšã¹ã»ãšã ã»ãšã¹ããåŠçæ¯æŽãåããŠåå ããŸããããã®èšäºã§ã¯ãRubyKaigiã«åŠçãåããŠåå ããçµéšãRubyKaigi 2025ã®é¢çœãã£ãã»ãã·ã§ã³ãªã©ã«ã€ããŠç޹ä»ããŸãã rubykaigi.org åå ã®çµç·¯ èªåã¯å°æ»ãšããŠæ
å ±ç§åŠãåŠç¿ããŠãããã®ã®ãå°éã¯ã³ã³ãã¥ãŒã¿ããžã§ã³ãšãã¥ãŒãã³ã³ã³ãã¥ãŒã¿ã€ã³ã¿ã©ã¯ã·ã§ã³ã§ãããã°ã©ãã³ã°èšèªåŠçãRubyã«ç¹ã«è©³ãããšããããã§ããªããRubyKaigiã«ã¯ã²ãããªçç±ããåå ããããšã«ãªããŸããã èªåã®ããã°ã©ãã³ã°ã¯é«æ ¡çã®ãšãã«Technovation Girlsãšããã¢ããªéçºã³ã³ãã¹ãã«åå ããããšãããæ¬æ Œçã«å§ãŸããŸãããã³ã³ãã¹ãåŸãããã°ã©ãã³ã°ãã³ã³ãã¥ãŒã¿ã®ããšãå匷ããã®ã奜ãã§ãæ°ä»ãããæ
å ±ç§åŠç§ã«é²åŠããŠããŸããã倧åŠé²åŠãæ©ã«ãTechnovation Girlsãžæ¥æ¬ããåå ããåŠçãæ¯æŽããŠããNPOæ³äººWaffleã§éå¶ã€ã³ã¿ãŒã³ãå§ããŸããããã®Slackã§Webéçºã®å匷ãããããšåããããã«ãªãã¥ã©ã ã»ãããŒãžã£ãŒããã£ãŠããé³¥äºãã( @yotii23 )ããRailsãªãæããããããšèšãããRailsããRubyãè§Šãããšã«ãªããŸããããã®å匷äŒãããäžã§ãé³¥äºããããRubyKaigiã®åŠçæ¯æŽãããããæ¯éãšãããããããåå ããŸããã èªåã¯Rubyããã€ãã£ãèšèªãšããããã§ããRubyã§ãããã¯ãã³ãŒããæžããŠããããã§ããªãã§ãããRubyistã«èªãããRubyKaigiã«åå ããŸããã åå ã®åã« RubyKaigiã«åå ã§ãããšæ±ºãŸã£ãŠãããæ¥œãã¿ã ãªãšããæ°æã¡ãšå
±ã«ãèªåãè¡ã£ãŠå€§äžå€«ãªã®ã ããããå Žéããªã®ã§ã¯ãªãã ããããšããäžå®ã«è¥²ãããŸãããçµè«ãèšã£ãŠããŸãã°ãããã¯ææã ã£ãã®ã§ããããããææã«ããããã«ãã£ãããšãå°ãã ããããŸãã äžã€ç®ã¯ãã¹ã±ãžã¥ãŒã«ãèŠãŠ(翻蚳ãèŠãŠ)äœåãããã¯èŠãŠé¢çœãã ããããåããããã ãªãšãããã®ã決ããŠããããšã§ããèªåã¯ãRubyã®çްãã仿§ã¯ããããªããã©ããªãŒãããã³ãæ£èŠè¡šçŸãªã©æ
å ±ç§åŠã®åŠåçãªè©±ãã¡ãã£ã¢ç³»ã®æ
å ±åŠç(ä»å話é¡ã®é³ãåºãç³»)ã®è©±ã¯åããã®ã§ããã®ãããªãã®ãç©æ¥µçã«èŠãããã«ããŠããŸããã äºã€ç®ã¯ãéå»ã®RubyKaigiãæµãèŠããããšã§ããå®éã«éå»ã®ã»ãã·ã§ã³ãèŠãŠã¿ããšèªåãã©ã®ãããããããªãã®ãã®æ€èšãã§ããããã«ãªããã€ãã§ã«ç¥èãã€ããŸãããŸããå»å¹Žãã®è©±ãããŠãã人ã ïŒãšäžæ¹çã«ç¥ã£ãŠãã人ãå¢ããŸããèªåã¯ãRubyKaigiã®è·ç©ããŸãšããŠãããšãã«ãRubyKaigi 2024ã®@tompngããã®KeynoteãèŠãŠãä»åã®TRICKãå¿ããæ¥œãã¿ã«ããŠããŸããã www.youtube.com é¢çœãã£ãã»ãã·ã§ã³ã®è©± ããããã¯ãããããããã»ãã·ã§ã³ã®äžã§å人çã«æåãããé¢çœãã£ãã»ãã·ã§ã³ã®è©±ãå°ãã ãããããšæããŸãã Make Parsers Compatible Using Automata Learning Day1ã®KeynoteåŸã®Main Roomã®ã»ãã·ã§ã³ã§ããRubyã«ã¯2çš®é¡ã®Parserãå®è£
ãããŠããŠãããããã®äºææ§ã確èªããæ¹æ³ãåé¡ã«ãªã£ãŠããŸããããããã®ããã°ã©ã ãããŒã¹ããŠããã®å·®åã確èªãããªã©éçã«ç¢ºèªããããšãã§ããŸããããã®çºè¡šã§ã¯ãããŒãµãŒã®äžéšããªãŒãããã³ãšããŠè¡šçŸããããšã«ãã£ãŠããã®å·®åãæããã«ããŸããããŒãµãŒããªãŒãããã³ã®è¡šçŸã«å€æããããšã¯ããªãŒãããã³åŠç¿ãšããææ³ãå©çšããããšã«ãã£ãŠå¯èœã«ãªããŸããå®éã«ããŒãµãŒã®äžéšããªãŒãããã³åŠç¿ã«ãã£ãŠãªãŒãããã³è¡šçŸã«å€æããããšã«ãã£ãŠãããŒãµãŒéã«ããäºææ§ã®åé¡ãçºèŠããããšãã§ããŠããããã§ãã ãã®çºè¡šã®å人çãªãã£ãšæ¥ããã€ã³ãã¯ããªãŒãããã³åŠç¿ãªã©ã®æ
å ±ç§åŠã®ã¢ã«ãããã¯ãªç¥èŠããå®éã«Rubyã®ããŒãµãŒã®ãã°ã®çºèŠãäºææ§ã®ç¶æã«å©çšãããŠãããšãããšããã§ãããã®ããã«Rubyãžè²¢ç®ããæ¹æ³ãããã®ããšæåããŸãããã¡ããã©ä»åŠæã«åè¬ããŠããããã°ã©ãã³ã°èšèªåŠçã®ç§ç®ã®çŽåã®ææ¥ã§ãæ£èŠè¡šçŸãšæéãªãŒãããã³ã®è©±ãèããŠããã®ã§ããã®ç¥èãããã§ä»ãŸãã«äœ¿ãããŠãããšæåããŠããŸããã TRICK 2025: Episode I Day1æåŸã«è¡ããããèŠãããšããªãå¥åŠãªã³ãŒããããããèŠãããšã®ã§ããã»ãã·ã§ã³ã§ããå
ã»ã©èª¬æããããã«ãèªåã¯TRICKãéåžžã«æ¥œãã¿ã«ããŠããŸãããããããã®TRICKã«é¢ããŠäœã説æã§ããªãã§ãããäŒå Žã§ãã²ãããã«ãããªããšãŸã§ã§ããã®ãïŒãšé©ããŠããŸãããè峿·±ããšã圹ã«ç«ã£ããšãã§ã¯ãªãããã ãã 驿ããè奮ããã»ãã·ã§ã³ã§ããããã®åŸãèªåãå¥åŠãªã³ãŒããæžããŠã¿ãããšæããRubyKaigiãçµãã£ãåŸã«TRICKã®å¯©æ»å¡ã§ããmameããã®èäœã ããªãã®ç¥ããªãè¶
çµ¶æå·§ããã°ã©ãã³ã°ã®äžç ããããã«èªã¿å§ããããšæ®ãããŠããã®ã¯æžãããšã ãã§ãã Ruby Committers and the World CRubyã®Committerãã¹ããŒãžã«äžãããRubyã«ã€ããŠè©±ãåãã»ãã·ã§ã³ã§ããRubyã®ä»æ§ã«è©³ããããã§ã¯ãªãã®ã§ãå
容ãããããã£ãããã§ã¯ãªãã§ãããRubyã®ãããªå·šå€§ãªOSSãã©ã®ããã«ç¶æéå¶ãããŠãããã®äžç«¯ãå£éèŠãããšãã§ããŠéåžžã«è峿·±ãã£ãã§ããMatzã®keynoteã§ããã£ãããã«Rubyãå
¬éãããŠãã30幎çµã£ãŠããçŸç¶ç¶æã ãã§ã¯ãªããä¿®æ£ãæŽæ°ãããŠãããããã®ã³ããã¿ãŒãããããšãRubyãšãã®ã³ãã¥ããã£ã®è±ããã瀺ããŠãããªãšãã¿ãã¿ããŠããŸããããããšåæã«ããã®è©±ãããããããããšæããRubyã®äœ¿ãæ¹ã ãã§ã¯ãªããRubyãã©ã®ããã«äœãããŠããã®ãã«ãèå³ããããŸããã RubyKaigiã¯ã©ããããã®ã ã£ãã RubyKaigiã¯ãåã«ããã°ã©ãã³ã°èšèªRubyã®èšèªåŠçã«é¢ããäŒè°ããšãã£ãŠããŸãããšã®ã§ããªããããªãå€çš®å€æ§ã§é
åçãªã«ã³ãã¡ã¬ã³ã¹ã§ãããã»ãã·ã§ã³ã ãã§ãªããAfter PartyãDrink upãäŒæ¥ããŒã¹ãå»äžãè¡äžã§ã®äŒè©±ãŸã§ãã¹ãŠãRubyKaigiã®äœéšãæ§æããŠããŠããŸãæ¥ããïŒãšæããããªäŒè°ã§ããã ãããŠãRubyKaigiã«åå ããŠãäžçªåèµ·ãããææ
ã¯Rubyããã£ãšæžããããšããè¡åã§ããèªåã¯ããã°ã©ãã³ã°èšèªã«ããŸããã ããããªãã®ã§ãããRubyãæã«éŠŽæãŸããŠãæåã«æã«åãèšèªã«ããããšæãããã«ãªããŸããããããŠãã®RubyKaigiãããäœãããã®åœ¢ã§Rubyã®ã³ãã¥ããã£ã«é¢ãã£ãŠããããããããŠè²¢ç®ããããšæããŸããã æŸå±±ãããããšãããããŸãããRubyKaigi 2026ãåœé€šã§ãŸãäŒããŸãããïŒ ãäžçã®é§ããšããã¢ããªã§èšé²ãããŠããæŸå±±åžã§ã®ç§»åå±¥æŽ
ã¯ããã« ããã«ã¡ã¯ãã«ã€ãã±ã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ããæ
åœããŠãããšã³ãžãã¢ã®ç°æ( @ikuma-t )ã§ããæšå¹Ž10æã«å
¥ç€ŸããçŸåšã¯è«æ±é¢é£ã®æ©èœã®éçºãè¡ã£ãŠããŸãã ã«ã€ãã±ã䟡å€ãæäŸããä»è·æ¥çã«ã€ããŠãæ¥åžžçã«ã¯éŠŽæã¿ããªããšããæ¹ãå€ããããããŸãããç§ãå
¥ç€Ÿä»¥åã¯åŸæé«éœ¢ç€ŸäŒã«ããã瀟äŒèª²é¡ã®1ã€ã§ãããšæŒ ç¶ãšèªèããŠããçšåºŠã§ãä»è·æ¥çã®å¶åºŠã«ã€ããŠã¯ããŸã詳ãããããŸããã§ããããä»è·æ¥çã«ã€ããŠã¯æªçµéšã§ã倧äžå€«ããšããèšèãä¿¡ãããã®äŒç€Ÿã«å
¥ç€ŸããŸããã ä»åã¯ç§ã®ããã«æªçµéšããä»è·æ¥çãžãã£ã¬ã³ãžããã¡ã³ããŒãæ¯ãããä»è·æ¥ççè§£ã®ããã®ã¯ãŒã¯ã·ã§ããç ä¿®ã«ã€ããŠç޹ä»ããŸãããã®èšäºã§ã¯å®éã«ä»è·æ¥çã«è§ŠããŠã¿ãŠæããä»è·æ¥çã®é£ãããèžãŸããäžã§ãç ä¿®ã§ã¯ã©ã®ãããªããšãåŸãããã®ãããŸãå®éã«ç ä¿®ãçµãŠãããžã§ã¯ãã«åç»ããŠã¿ãŠã®ææ³ããäŒãããŸãã ä»è·æ¥çã®é£ããã¯çްéšã®è€éãã«ãã å¶åºŠèªäœã®å
¥ãå£ã¯ãããŸã§é£ãããªã çŽå幎ãšããæéã§ã¯ãããŸãããä»è·æ¥çã«åãåã£ãŠæããã®ã¯ãå¶åºŠèªäœã®å
¥ãå£ã¯ãããŸã§é£ãããªãããšããããšã§ãã ä»è·äºé²ã»æ¥åžžçæŽ»æ¯æŽç·åäºæ¥ã®ãµãŒãã¹å©çšã®æµã | ä»è·ä¿éºã®è§£èª¬ | ä»è·äºæ¥æã»ç掻é¢é£æ
å ±æ€çŽ¢ãä»è·ãµãŒãã¹æ
å ±å
¬è¡šã·ã¹ãã ã ãã åŒçšã¯åçåŽåçã®ä»è·ãµãŒãã¹å©çšãŸã§ã®æµãã§ãããèŠä»è·1ãã§ãã£ããããä»è·äºé²äºæ¥ããªã©ã®èŠæ
£ããªãåèªã¯ãããããããŸããããå©çšè
ãä»è·ãåãããŸã§ã®ãããŒã¯ïŒå³èªäœãç°¡ç¥åãããŠãããšããããšããããŸããïŒæå€ãšã·ã³ãã«ã§ãã å©çšè
ãåžåºçºæã®åœ¹æã«çžè« å©çšè
ã®æ
å ±ãå
¥åã«ãä»è·åºŠïŒã©ã®çšåºŠã®ä»è·ãå¿
èŠãšãããïŒãåºåãã ä»è·åºŠã«å¿ããä»è·ã®èšç»ãç«ãŠã èšç»ã«åºã¥ããä»è·ãµãŒãã¹ãåãã èªèº«ã®åšå²ã«å®éã«ä»è·ãåããŠãã/æäŸããŠããæ¹ãããªããŠãããªããšãªããææã¡ã®å¥åº·ä¿éºèšŒããæ®æ®µãã¥ãŒã¹ã§èŠããã話é¡ããããŒããããšå€§ãŸããªæµããæ³åã§ããã®ã§ã¯ãªãã§ããããã 倿§ãªç°å¢ã«å¯Ÿå¿ããããã«è€éã«ãªããããåŸãªã äžæ¹ã§å®éã«éçºãé²ããŠãããšãªããšãåœç¶å
ã»ã©ç€ºãããããŒãã£ãŒãã®ç¯å²ã®ç¥èã ãã§ã¯ãã¹ãŠãè³ãããšã¯ã§ããŸããããããããã®ã±ãŒã¹ã§ã¯ãã®ãããŒã«åãããäžéšå€ããã±ãŒã¹ãããããããšããããšããããããŸãã å¶åºŠã¯å®éã«ä»è·ãæäŸããããã«ãããã®ã§ããããã®ä»è·ã®åœ¢ã¯äººã«ãã£ãŠããŸããŸã§ããèŠä»è·è
ã®çç¶ããèŠä»è·è
ã®ãŸããã®å®¶æã®ããæ¹ã®å€åãä»è·ãµãŒãã¹ãæäŸããè¡æ¿ã®è²¡æ¿ç¶æ³ãªã©è€æ°ã®èŠå ã絡ã¿åãããããã«åãããŠå¶åºŠã®ããæ¹ã¯å€åããŠããŸãã ãã®ããšã¯ä»è·ä¿éºæ³ã®å€é·ããä»ã3幎ã«äžåºŠæ³æ¹æ£ãè¡ãããŠããããšãããã¿ãŠåããã§ãããã ãŸãä»è·æ¥çã«ããŸã銎æã¿ã®ãªã人ã«ãšã£ãŠã¯ãäŸå€çãªã±ãŒã¹ã¯å¶åºŠä»¥åã«ãããå¿
èŠãšãªãç¶æ³èªäœãæ³åããã®ãé£ãããäœèšã«é£æåºŠãé«ãæãããããšæããŸãã ã¡ã³ã¿ã«ã¢ãã«ãããŸãæ§ç¯ããããšã§æ©ãçè§£ã§ããããã«ãªã æ°ããæŠå¿µãèªåã®ãã®ã«ããããã®æ¹æ³ã«ã¯ããŸããŸãªã¢ãããŒãããããŸããããã®äžã€ã«ãã¡ã³ã¿ã«ã¢ãã«ã®æ§ç¯ãããããŸãã以äžã¯ããã°ã©ãã³ã°ã®æèã§æžãããã¡ã³ã¿ã«ã¢ãã«ã«ã€ããŠã®èšäºããã®åŒçšã§ããã¡ã³ã¿ã«ã¢ãã«ã®å®çŸ©ã«ã€ããŠæžãããå
容ã§ã¯ãããŸããããã¡ã³ã¿ã«ã¢ãã«ãæçãããããšã®æå³ãæžãããŠããããåŒçšãããŠããã ããŸããã æªç¥ã®æŠå¿µã䜿ããããã«ããã«ã¯ããã®æŠå¿µã«ã€ããŠã€ã¡ãŒãžãé ã«æãæµ®ãã¹ãããããã«ããå¿
èŠããããŸããããã§æµ®ãã¹ãã€ã¡ãŒãžããã®æŠå¿µã®ãã¡ã³ã¿ã«ã¢ãã«ããšèšãããšã«ããŸããããåãã¯ããé«åºŠãªæŠå¿µãçè§£ããããã«ãã®ã¡ã³ã¿ã«ã¢ãã«ãæãæµ®ãã¹ãªããæç« ã远ããããŸããããã¡ã³ã¿ã«ã¢ãã«ãšæç« ã«ççŸãçºçãããã¡ã³ã¿ã«ã¢ãã«ãä¿®æ£ããŸããããããŠççŸãçºçããããšã«ä»ãŸã§ã®äºè±¡ãå
šãŠããŸã説æã§ããããã«ä¿®æ£ããŠãããã¡ã³ã¿ã«ã¢ãã«ã®å®æåºŠãé«ããŠããã®ã§ãã ã¯ããã« #Haskell - Qiita çè§£ã®åºç€ãšãªãã¡ã³ã¿ã«ã¢ãã«ãç¯ãããšã«ããããããšã®é¡äŒŒæ§ãå·®åããæ°ããæŠå¿µãæ©ãçè§£ã§ããããã«ãªããŸãã ä»è·æ¥çã®çè§£ã«ãããŠããäŸå€çãªã±ãŒã¹ãšå€§æ ã®ãããŒãã²ãšãããã«æåããããšãããšããã®æ
å ±éã«å§åããããããããã¯1ã€1ã€ã®æ
å ±ã®ååŒã«æéãããã£ãŠããŸããŸãããã®ããã¯ããã®æ®µéã§ãã£ãããšããã¡ã³ã¿ã«ã¢ãã«ãæ§ç¯ããããšããä»è·æ¥ççè§£ã®éµãšãªããŸãã ã¯ãŒã¯ã·ã§ããåç ä¿®ã§ã¡ã³ã¿ã«ã¢ãã«ãæ§ç¯ãã ä»è·æ¥ççè§£ã®ãããäžéå
¥ç€Ÿè
åãã«ã¯ãŒã¯ã·ã§ããåã®ç ä¿®ã宿œãããŠããŸãã ãªãã£ã¹ã«éãŸãã1æ¥ãããŠãã¡ã€ã³ãšãã¹ããŒãã®æ¹ãšä»è·æ¥çã«ã€ããŠã®çè§£ãæ·±ããŠãããŸãã æ±äº¬ã¿ã¯ãŒãèŠããäŒè°å®€ã§1æ¥åŠã³ãŸãã ä»è·æ¥çããèããŠãæžããŠãçè§£ãã ã¯ãŒã¯ã·ã§ããã®äžã§ã¯è¬çŸ©ããŒããšã°ã«ãŒãã¯ãŒã¯ã®ããŒãããããã°ã«ãŒãã¯ãŒã¯ã®ããŒãã§ã¯äžããããããŒããå
ã«ãä»è·æ¥çã«ã€ããŠèãããšããå
容ã§ãã ã¯ãŒã¯ã·ã§ããã§æ±ãããŒãã¯è€æ°ãããŸãããäžäŸãšããŠä»¥äžã®å
容ã«åãçµã¿ãŸãã ããŒã ã§ã¢ãŠããããããããšã§ææ§ãªç¥èã«æ°ãã€ãããšãã§ãã ããŒãã«ã€ããŠããŸãã¯äœã調ã¹ãã«èªåãã¡ããã§ã«ç¥ã£ãŠããããšãå
ã«ä»®èª¬ã話ãåãããã®åŸãããã§èª¿ã¹ãæ
å ±ããã¡ã€ã³ãšãã¹ããŒãã®æ¹ãšã®äŒè©±ãå
ã«ãä»è·ãåããããã®ãããŒãæžãèµ·ãããŠãããŸãã èªåãã¡ã§æãåãããªããèãããããåçŽã«åãéã座åŠã§çè§£ãããããããããã®æ°ä»ããåŸãããã®ãã¯ãŒã¯ã·ã§ããåç ä¿®ã®è¯ããšããã§ãã ãã®èšäºã®åé ã«æ²èŒãããããªãããŒãã£ãŒãã座åŠã§åŠç¿ããå Žåããã£ãšèŠãŠããªããšãªãããããæããªã®ã ãªããšçè§£ãæ¢ããŠããŸãããšãå€ãã§ããããäžæ¹ã°ã«ãŒãã¯ãŒã¯ã§ã¯ããŒã ã«åããŠèªåã®èªèãå
±æããªããã¢ãŠããããããŠããå¿
èŠããããããææ§ãªéšåãçŽ éãããããšã¯ã§ããŸããã å®éã«ã¯ãŒã¯ã·ã§ãããäœéšããéã«ãããä»è·åããããªãããã¶ãæåã¯åœ¹æè¡ã£ãšã...ããïŒããšãã£ãäŒè©±ããã¯ããŸãããªããšãªãç¥ã£ãŠãããã©ã説æã§ããªãéšåã1ã€1ã€æããã«ããããšã§çè§£ãæ·±ããŠãããŸããã å®éã«ã°ã«ãŒãã§èãããããŒå³ å®éã«ä»è·ã®çŸå Žã§é·å¹ŽåããŠãããã¡ã€ã³ãšãã¹ããŒããšäžç·ã«åŠã¶ ãã®ã¯ãŒã¯ã·ã§ããåã®ç ä¿®ã®è¬åž«åœ¹ã¯ãå®éã«ä»è·ã®çŸå Žã§é·å¹ŽåããŠãããã¡ã€ã³ãšãã¹ããŒãã®æ¹ãã¡ã§ãã å®éã«èªåãã¡ã§ããŒãã«å¯ŸããŠèª¿ã¹ãŠãããšè²ã
ãšçްãããšãããæ°ã«ãªã£ãŠããã®ã§ããããã®éã«ã¯ãã¡ã€ã³ãšãã¹ããŒãã®æ¹ã«æ°è»œã«è³ªåããŠãã®å Žã§çåãè§£æ¶ããããšãã§ããŸããã ãã¡ã€ã³ãšãã¹ããŒãã®æ¹ã¯ç ä¿®ã®ãšãã ãã§ãªããå®éã®ãããžã§ã¯ãã§ããäžè©±ã«ãªã£ãŠãã *1 ãããããªãããšãããã°Slackã§æ°è»œã«ç¢ºèªããããæ°ãããšããã¯ã®éå§æã«ã¯ããã®ãã¡ã€ã³ã®å匷äŒã宿œããã ãããããŠããŸãã ããã¡ã€ã³ãšãã¹ããŒãã«æ°è»œã«è³ªåã§ããç°å¢ããšãã£ãŠããã»ãŒãªã¢ãŒããã€å察é¢ã ãšãªããªã質åãã¥ãããã®ã§ããå
¥ç€ŸããŠããã«ãã¡ã€ã³ãšãã¹ããŒãã®æ¹ãšå¯Ÿé¢ã§ã³ãã¥ãã±ãŒã·ã§ã³ãåããæ©äŒãããããšã§ã以éã®éçºæã®ã³ãã¥ãã±ãŒã·ã§ã³ã«ãããå®å¿æãéããšå人çã«ã¯æããŠããŸãã å®éã«ç ä¿®ãåããŠãããããžã§ã¯ãã«é
å±ãããŠã¿ãŠ å®éã«å
¥ç€Ÿæç ä¿®ãçµããŠãããžã§ã¯ãã«é
å±ãããéãåœæããŒã ãéçºããŠããå
容ãç ä¿®ã«åºãŠããªããã®ã ã£ããããïŒç ä¿®ã®ç解床ã¯ã°ã£ã¡ãã ãšæã£ãŠããããšãããïŒéåžžã«çŠã£ãèšæ¶ããããŸãã ãã ãã£ãããšåãåã£ãŠã¿ããšãç ä¿®ã§å¹ã£ãã¡ã³ã¿ã«ã¢ãã«ãããŒã¹ã«ãã©ã®ä»è·ã®ãã¿ãŒã³ã§ãã©ãã®æ¥åã§äœ¿ããã®ããã¹ããšçè§£ããããšãã§ããããŒã ã®éçºã«ãã¹ã ãŒãºã«åæµããããšãã§ããŸããã *2 ãããã« ãã®åŸæé«éœ¢ç€ŸäŒã«ãããŠä»è·æ¥çã«åãåãããšã¯ç€ŸäŒçæçŸ©ã®ããããšã§ãç§ãããã«å
±æããŠåŒç€Ÿã«å
¥ç€ŸããŸããã äžæ¹ã§ãšã³ãžãã¢ãšããŠä»è·æ¥çã«åãããããšã®é
åã¯ããã ãã§ã¯ãªãããã®åºãæ·±ãå¶åºŠãã©ãçè§£ããä¿å®æ§ã®é«ãå®è£
ã«èœãšã蟌ãã§ããããèããéšåã«ããããšèããŠããŸãã ä»åã¯ãã®çè§£ãæ·±ããããã®åãçµã¿ã®1ã€ãšããŠãæ¥ççè§£ã®ããã®ã¯ãŒã¯ã·ã§ããç ä¿®ãã玹ä»ããŸããããã®èšäºã®å
容ãä»è·æ¥çã«èå³ã¯ãããã©ãæ¥çç¥èã®äžè¶³ã«å¯ŸããŠäžå®ã«æãããŠããæ¹ã®åèã«ãªãã°å¬ããã§ãïŒ ã«ã€ãã±çµç¹ã«ããããã¡ã€ã³ç¥èã®åãåãæ¹ã«ã€ããŠã以äžã®èšäºã§ãè§ŠããããŠããã®ã§ã芧ããã ããã°ãšæããŸãã tech.bm-sms.co.jp *1 : ãã®ããã°èšäºãæžãéã«ããäžè©±ã«ãªã£ãŠããŸãã *2 : éçºããŒã ããªã³ããŒãã£ã³ã°ã®ã¡ã³ã¿ãŒããã¡ã€ã³ãšãã¹ããŒããªã©ãæ°è»œã«èããç°å¢ããããšããããšãå¯äžããŠããŸãã
ããã«ã¡ã¯ãä»è·/é害çŠç¥äºæ¥è
åãçµå¶æ¯æŽãµãŒãã¹ãã«ã€ãã±ãã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã§ã¢ãã¿ãªã³ã°ããªãã¶ãŒãããªãã£åšããæ
åœããŠããå æ ( @TAKA_0411 ) ã§ãã 4/11ã«éå¬ãããPHPã«ã³ãã¡ã¬ã³ã¹å°ç°å (以äžãºã¡ãã ) 2025ã®åå€ç¥ã«ãŠãæšãã®ã³ãã¥ããã£ã¯ãªããŒãã£ãŠãããããšããã¿ã€ãã«ã§5åLTãããŠããŸãããæ¬èšäºã§ã¯LTã®å
容ã«è§Šãã€ã€ã以äžã®èгç¹ã§ãŸãšããŸãã ãã®ããŒããéžãã çç± ç»å£åŸã®åé¿ ç§ããºã¡ãã ã«åå ããçç± PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å2025 ã€ãã³ãå
¬åŒãµã€ã phpcon-odawara.jp PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å2025 åå€ç¥ phpcon-odawara.connpass.com ç»å£ã¹ã©ã€ã speakerdeck.com ãã®ããŒããéžãã çç± YAPC::Hiroshima 2024ã«ãŠããŒã ããã ( @soudai1025 ) ããèªåã®å¥œããªæè¡é åããã®ã³ãã¥ããã£ã«ããŠãè¯ãããèå³ã®ããæè¡çã«è¿ãé£ã®ã³ãã¥ããã£ã«åå ããã®ãè¯ãããšãã話ãããŠããã®ãå°è±¡çã§ãèªåã®äœéšã亀ããŠçºè¡šããããšèããã®ããã£ããã§ãã www.youtube.com ç§ã¯æè¿ãäž»ã«JAWS-UGã®ã€ãã³ãã§éå¶ã»ç»å£ã»åå ããŠããŸãããJAWS-UGãšPHPã³ãã¥ããã£ã®è·é¢ã¯é ããªããšæããŠããŸãããæè¡çã«è¿ãé£ã®ã³ãã¥ããã£ã«åå ããããšãã®æçŸ©ãçºä¿¡ããã«ã¯ãºã¡ãã ã¯æé©ãªå Žã ãšæãç»å£ã決ããŸããã çºè¡šå
容ãèããäžã§ãPHPã«ã³ãã¡ã¬ã³ã¹åæµ·é2024ã«AWSçéã®ç¥äººãèªã£ããšããœãŒããæãæµ®ãã³ãŸããã ç¥äººã¯ãPHPã®è©±ã¯ããŸãçè§£ã§ããªãã£ãããéçºã«åœ¹ç«ã€äžè¬çãªç¥èãåŠã³ãèªåã®ç¬åŠã®çãåãããã§ãããäœããPHPã³ãã¥ããã£ã®äººãšè©±ããŠæ¥œããã£ãããšèšã£ãŠãããŸããããããããèå³ã®ããé£ã®ã³ãã¥ããã£ã«åå ãããããšã®äŸ¡å€ã ãšå®æããè€æ°ã®ã³ãã¥ããã£ã«åå ããã¡ãªããããåå è
ãæ¥œãããèŠçŽ ã«ã€ããŠèããçµæãä»åã®çºè¡šã¹ã©ã€ãã§ãã ä»åã®ãºã¡ãã 2025ã«ã¯æå¹åšäœã®AWSçéã®ç¥äºº3åãèªãã4人ã§åå ããŸãããå
šå¡PHPã«ã¯è©³ãããªãäž»ã«AWSãæ±ã£ãŠããŸãã圌ãã«ãåå åŸã®ææ³ãããã°ã«æžããŠãããäºå®ã§ãç§ã®ä»®èª¬ãã©ãã ã£ãããæ¥œãã¿ã«ããŠããŸãã ç§èªèº«ãä»ã¯ãªãã¶ãŒãããªãã£é åã«åŒ·ãé¢å¿ããããŸãããAWSã³ãã¥ããã£ãPHPã³ãã¥ããã£ãæè¿ã ãšSREã³ãã¥ããã£ãçµãŠåŸãããåŠã³ãéããŠãèªåã¯ãªãã¶ãŒãããªãã£ã«èå³ãããããšæ°ã¥ããŸãããAWSã ãã«è©³ãããŠãWebã¢ããªã±ãŒã·ã§ã³ã®ããšãåãããªããã°ãµãŒãã¹ã®åé¡è§£æ±ºã¯ã§ããŸãããProduction ReadyãªWebã¢ããªã±ãŒã·ã§ã³ãéçºããã¹ãã«ããªãèªåããåããŠããWebã¢ããªã±ãŒã·ã§ã³ã§äœãèµ·ããŠããã®ããåé¡è§£æ±ºã®ããã®æè¡ãèãæ¹ãåŠãŒãããšæããã®ã¯ãè€æ°ã®ã³ãã¥ããã£ã«åå ããããããåŸãããæ°ã¥ãã§ãã ç»å£åŸã®åé¿ LTç»å£åŸã«ãå®ã¯ç§ãJAWS-UGã«åå ããŠã¿ãããšæã£ãŠããŠâŠããšããçžè«ãåããšãŠãå¬ããæããŸãããããJAWS-UGã€ãã³ããžã®åå ãè¿·ã£ãŠãããšã®ããšã§ããããç§ã¯çŸå°åå ã§ãããã©ããŒãé£ããç¶æ³ã§ãããããã§ãæè¡çãªããã¯ã°ã©ãŠã³ããè¿ãç¥äººãã³ãã¥ãã±ãŒã·ã§ã³åã®ããç¥äººã玹ä»ãã€ã€ãŸãã¯åå ããŠã¿ãŠã»ãããšäŒãããšãããåœæ¥ã®XïŒæ§TwitterïŒã§æ¥œããã§ããæ§åãäŒãã£ãŠããŸãããå匷äŒåŸã®æèŠªäŒã«ãåå ãæ¥œããã§ããããããã§ãèäžãæŒãã身ãšããŠãå¬ããéãã§ãã ç§èªèº«ãã€ãã³ããæ¥œããã®ã倧åã§ããããæè¡çã«è¿ãé£ã®ã³ãã¥ããã£ãã®äººã®åå ãæ¯æŽããããååå ã®äººãšéå¶ãã€ãªãããããããšãæè¿ã®æ¥œãã¿ã®äžã€ã«ãªãã€ã€ãããŸããããã¯YAPC::Hiroshima 2024ã§ããŒã ãããã®ã¹ã©ã€ãã«ãã£ããæ¬¡ã®äººã«æ°Žã®å ŽæãæããŠããããã«ãéãããããããŸããã ç§ããºã¡ãã ã«åå ããçç± ç§ãé¢ãã£ãŠããã«ã€ãã±ã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã¯PHP以å€ã®èšèªã§éçºãããŠãããç§èªèº«ãçŸåšPHPãç©æ¥µçã«æžããŠããããã§ã¯ãããŸãããéå»ã«PHPã䜿ã£ããããžã§ã¯ãã«æºãã£ãããšã¯ãããŸããããããä»ã§ã¯æã®è©±ã§ãã ããã§ãæšå¹Žã«ç¶ãä»å¹Žããºã¡ãã ã«åå ããçç±ã¯ããPHPã³ãã¥ããã£ã®å±
å¿å°ã®è¯ãããšããºã¡ãã ã®å§åçãªãã¹ãã¿ãªãã£ãã«ãããŸãã PHPã³ãã¥ããã£ã®å±
å¿å°ãè¯ã ä»ã§ããè²ã
ãªæè¡ã³ãã¥ããã£ã«åå ããŠããç§ã§ãããç§ãåããŠåå ããæè¡ã³ãã¥ããã£ã¯JAWS-UGïŒAWS User Group â JapanïŒã®JAWS DAYS 2014ã§ããã®æ¬¡ãPHPã«ã³ãã¡ã¬ã³ã¹2015ã§ãããç¹ã«PHPã«ã³ãã¡ã¬ã³ã¹2015ã§ã¯ååå ã«ããããããã¹ã¿ããã«å¿åããå€ãã®PHPãšã³ãžãã¢ã®å
茩ãå人ãã§ããŸããã äžæšå¹ŽãŸã§ã¯ã«ã³ãã¡ã¬ã³ã¹éå¶ã¹ã¿ãããšããŠãç©æ¥µçã«åå ããŠããŸããããå°å
åæµ·éãžã®Uã¿ãŒã³ãæ©ã«åå ã§ããªããªã£ãã³ãã¥ããã£ãå¢ããŸãããPHPã³ãã¥ããã£ããã®äžã€ã§ãããããªç¶æ³ã§ã®ãºã¡ãã 2025åå ã«ã¯äžå®ããããŸããããPHPã³ãã¥ããã£ã®çããã¯æž©ããè¿ããŠãããŸãããããããå±
å¿å°ã®è¯ãããããããæ¥çšãåãã°ãŸãåå ããããšæããã®ãç§ã«ãšã£ãŠã®PHPã³ãã¥ããã£ã§ãã ãºã¡ãã ã®å§åçãªãã¹ãã¿ãªã㣠ãºã¡ãã ã§ã¯åå è
ãæ¥œããããããªä»çµã¿ãããã€ããããŸããæšå¹Žã®ãºã¡ãã 2024ã§ã¯åå€ç¥ã«IRT (Interactive Round Table) ãè¡ãããæ¬ç·šåå åã«åå è
å士ã§äº€æµãæ·±ããããšãã§ããŸããã PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡2023ã§ã®äœéšãè²æ¿ãã®ã§ãããå
šç¶éèã»åå€ç¥ããã£ãããšã§ãã¿ããªãšä»²è¯ããªããäœéšããã®èšèšã®çŽ æŽããããå°ç°åã§ãåçŸãããã£ããããå
¬åŒã§åå€ç¥ãäŒç»ããŸããã ã³ãã¥ãã±ãŒã·ã§ã³ã«éãããããããããIRTãè¡ãããã®ããšã¯ã¿ããªã§é£²ã¿ãŸããðº asumikam.com åè : IRT: Interactive Round Table ã宿œããŸã blog.phperkaigi.jp å»å¹Žã«åŒãç¶ãè¡ãããã1åéãã£ãŒãããã¯ãã«å ããä»å¹Žã¯åå è
ã®äº€æµãæ·±ããããã®æ°ããªåãçµã¿ãšããŠããºã¡ãã å€§åæŠãã宿œãããŸããã åå€ç¥ 6人çšåºŠã§1ã€ã®ããŒãã«ãå²ã¿ã也æ¯ãšèªå·±ç޹ä»ïŒããŒãã¯äºåã«éå¶ããæç€ºïŒãè¡ãããŸãããããªã³ã¯çæã«å°ç°åã®çŸå³ãããã¶ãé£ã¹ãªããè«ç¬ãããã®åŸã»ãã·ã§ã³ãšLTãå§ãŸããŸãããºã¡ãã 2025ã§ã¯ã1åéãã£ãŒãããã¯ããšããä»çµã¿ããããç»å£è
ã®çºè¡šåŸã«1åéã§ä»ç®ã«ãã£ãŒãããã¯ãæžãããã¯ã€ãããŒãã«è²Œããšãããã®ã§ãããäŒæåŸã®ã¢ã³ã±ãŒããããæ°è»œã«ãã£ãŒãããã¯ã§ããå°è±¡ãæ°é®®ãªãã¡ã«æèŠãäŒããããè¯ãåãçµã¿ã ãšæããŸããã ä»ç®ã«ãããã£ãŒãããã¯ åœæ¥ äžéãã»ãã·ã§ã³ãšLTãèŽãçµãã£ã倿¹ããã¯3人1çµã®ããºã¡ãã å€§åæŠããšããããŒã æŠããããåå è
å士ã§å€§ãã«çãäžãããŸããã ãºã¡ãã ã§ã¯ãåå è
å士ã®ã³ãã¥ãã±ãŒã·ã§ã³ã倧åãªè»žã®äžã€ãšããŠããŸãããããäœçŸããã³ã³ãã³ããšããŠãåå è
å士ã§ã©ã³ãã ãªããŒã ãçµãã§ç«¶ãåããããŒã 察æããã«ãéå¬ããŸããâïž note.com note.com ãºã¡ãã å€§åæŠã¯æ¥ã®é£ã»å€ã®é£ã»ç§ã®é£ã»å¬ã®é£ã®4ã€ã«åãããŠããŸãã æ¥ã®é£ïŒã¹ãã³ãµãŒããŒã¹å·¡ã å€ã®é£ïŒPHPã®é¢æ°ãããŒãã«ããã²ãŒã ç§ã®é£ïŒPHPãWebãå°ç°åã«é¢ããããŒããŒãã¹ã å¬ã®é£ïŒHTTPã¹ããŒã¿ã¹ã³ãŒãçŸäººäžéŠ åé£ã«ã¯ããŒãã·ãŒããããã¥ã¡ã³ããå
¬åŒnoteã«æ£ãã°ãããããã³ãããããå€ãã®åå è
ãè¿·ããæ¥œããããšæããŸããç¹ã«å¬ã®é£ã®HTTPã¹ããŒã¿ã¹ã³ãŒãçŸäººäžéŠã¯ãPHPã«éŠŽæã¿ã®ãªãç§ãç¥äººãåé¡ãªãåå ã§ãçãäžããããšãã§ããŸãããèªã¿äžããããã¹ããŒã¿ã¹ã³ãŒãã«å¯ŸããŠãããã¯èªä¿¡ããã£ãïŒããšããäžåºŠã䜿ã£ãããšããªãããªã©ã®çãææ³æŠãç¹°ãåºããããŠããã®ãå°è±¡æ·±ãã§ãã ãŸãšã PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å2025ã«ãŠæè¡ã³ãã¥ããã£ã«ã€ããŠèãçºè¡šããŠãã話ã§ãããç§ã¯ããæ°å¹Žã§ããããç»å£ããããã«ãªã£ãã®ã§ããã5åã®LTã¯äººçåã§ãããè³æäœæã«ãçºè¡šã®æé調æŽã«ãèŠåŽããŸããããå€ãã®æ¹ããããžãã£ããªåé¿ãé ããã®ã§èŠåŽã®ç²æããããŸãããæ¬¡ã¯JAWS-UGã«ãŠPHPã³ãã¥ããã£ã«åå ããŠã¿ãããšããéåŽã®çºè¡šãç»çããŠããŸãã ç§ã®äž»èгã§ããããºã¡ãã ã¯ãåŠã³ãã ãã§ãªããåå è
å士ã®äº€æµãã€ãã³ãèªäœã楜ããããšãéèŠããŠããã«ã³ãã¡ã¬ã³ã¹ã ãšæããŸããçŸåšãæ¥åã§PHPã䜿ã£ãŠããªãç§ã®ãããªäººã§ãåå ãããããéæã«æ¥œããã工倫ãåããããŠããŸãããã³ãã¥ããã£éå¶ã«æºãã身ãšããŠãå€ãã®åŠã³ããããŸãããæ¹ããŸããŠãºã¡ãã ã«é¢ããå
šãŠã®ã¿ãªããŸãããããšãããããŸãã & ãç²ãæ§ã§ããã æåŸã«äžè³é£¯å± å
«èµ·ãã (ãºã¡ãã äŒå Žã®ãé£) ã§é£ã¹ããå°ç°åâ鯵ã®éçŒãã飯âã ãã¯ã¡ããã¡ãã«çŸå³ããã£ãã®ã§çœ®ããŠãããŸãã çŸå³ããã¯ãã¿ #phpcon_odawara pic.twitter.com/Tg2AOJKAWS — ããã/Kaga (@TAKA_0411) 2025幎4æ13æ¥
çããã¯ãããŸããŠã æ
¶æçŸ©å¡Ÿå€§åŠã®äžæé¢¯ãšãããŸãã X(Twitter)ã§ã¯ã¿ã
ãŒã( @lit_myura )ã§ãã£ãŠãã®ã§ãããããã°ã話ããŸããã...! åã¯å
ã
äžåŠã®æã«ããã°ã©ãã³ã°å¡Ÿã«éã£ãŠããŠãããã§åºäŒã£ãã®ãRubyã§ãããããããæ©8幎äœçµã£ãŠãä»ã§ã¯å
ã
éã£ãŠãããšããã§åãRubyãæããŠããŸãã ãããªäžã§æãåãã¡ã®ã¬ãã«ãã©ãã©ãäžããäžãåãææ°æ
å ±ããã£ããã¢ããããªãã§äœãåºæ¥ãã®ããšæã£ãŠãããšãããRubyKaigi2025ãèŠã€ããŸããã ä»ååã¯ãšã¹ã»ãšã ã»ãšã¹ããã®åŠçæ¯æŽãåããŠã人çã§åããŠRubyKaigiã«åå ããŸãããå®ã¯ããã¯ã«ã³ãã¡ã¬ã³ã¹ãžã®åå èªäœãåããŠã§ãããååœã蚪ããã®ãåããŠã§ãããšãŠãç·åŒµããŸããã ä»åã¯ãã®ã¬ããŒããšãªããŸãã ãããããã°æåŸãŸã§èªãã§ãããããšå¹žãã§ãã RubyKaigiã«åå ããŠã¿ãŠ ãŸããäœãããæ¬åœã«æ¥œãã3æ¥éã§ãããæ£çŽãªãšãããå
容ã®8å²ã»ã©ã¯çè§£ãåã°ããèªåã®åãç¥èã§ã¯åãããªãããšã ããã§ããããããã§ãååãããã»ã©ã®åºæ¿ããããŸããã ç¹ã«ãäŒå Žã§ã¯ããŒã¹ã«ããæéãé·ããã»ãã·ã§ã³ãèãããã1察1ã§ã話ã§ããæéãå€ãã£ãã®ããã£ãŠãããããªãããšãå«ããŠãã£ãã察話ã§ããã®ããšãŠãè¯ãã£ãã§ãããããŠããã£ã±ãæ¹ããŠæããã®ã¯ãã¿ããªãæ¬åœã«Rubyã奜ããªãã ãªããšããããšã è¶£å³ã§Rubyã䜿çšããŠãããšããæ¹ãå€ããä»äºã§ã¯äœ¿ããªããã©ãèªåã§ãªã«ãäœããªãRubyãè§ŠãããªããŠå£°ãèããŸããããã®ããã«æãããŠããããã°ã©ã èšèªãæ¥æ¬ã§çãŸããRubyã§ããããšããããèªåã«ãšã£ãŠã倧åãªèšèªã§ããããšã¯æ¬åœã«çŽç²ã«å¬ãããªãšæããŸããã ããšå
šäœçã«ããã«ãã£ã®ã»ã³ã¹ãæ¬åœã«è¯ããŠçµå§ãã³ã·ã§ã³ãäžã£ãŠããŸããã 埡æ±å°åž³ãšãã仿²»ç£ã®ã¿ãªã«ãšããããããã䜿ãç¶ããäºã«ãªããããªãã®ã°ããã§æãåºã®æ°ã
ã§ãã âå人çã«ã¯ç ¥éšçŒã«ã¯ã¯ã¯ã¯ãã¡ãããŸããã Rubyã«å¯Ÿããæè åèªèº«ããšããšRubyãžã®æçã¯ãããŸããããä»åã®RubyKaigiãéããŠæ¹ããŠãRubyã䜿ãã°ãªãã§ãã§ããç¶æ
ãã«èªåãæã£ãŠãããããšããæ°æã¡ã匷ããªããŸããã å
çšãèšèŒããéããã»ãã·ã§ã³ã®å€ãã¯çè§£ããã®ãå³ããã£ãã§ãã ãã ããã以äžã«ç»å£è
ãã¡ãæ¬åœã«æ¥œãããã«ãæ
ç±ãæã£ãŠè©±ããŠããå§¿ãå°è±¡çã§ãããå
容ãå®å
šã«çè§£ã§ããªããŠãããã®äººã®è©±ã¯é¢çœããã ãªããšæãããåããããŸãããç¹ã«DAY1åé ã®ima1zumiããã®ã»ãã·ã§ã³ã§ã¯ãæåã³ãŒãã«å¯Ÿããã奜ãããäŒãã£ãŠããŠãRubyKaigiãžã®æåŸ
ãçäžãããã¡ãããŸããã ãããŠãDAY1æåŸã«è¡ããããTRICK 2025: Episode Iãã§ã¯ãä»ãŸã§èªåãèŠãŠããªãã£ããããªã¿ã€ãã®ã³ãŒãã£ã³ã°ãç®ã«ããŸãããèªåã¯ãããŸã§RubyããWebãµãŒãã¹ãäœãããã®ããã¯ãšã³ãèšèªããšããŠæ±ã£ãŠããŠããã®ç®çã®ããã«å¹çãå®æåºŠãã¹ããŒãããããŠãŠãŒã¶ããªãã£ãéèŠããããšãåœããåã ãšèããŠããŸãããã ãããããæè¿ã§ã¯AIã䜿ã£ãŠã³ãŒãã£ã³ã°ããããšãå¢ããäœããã宿åãã«äŸ¡å€ããããšæã蟌ãã§ããç¯ããããŸãã ããããTRICK 2025: Episode Iãã®å Žã§ã¯ãã³ãŒããã®ãã®ã楜ãã人ãã¡ã®å§¿ããããŸããã誰ãã®åœ¹ã«ç«ã€ã³ãŒãã§ã¯ãªããèªåã®å·¥å€«ãéã³å¿ãè©°ãŸã£ãã³ãŒããæ«é²ãåãæ§åãèŠãŠããããèªåã§æžãã£ãŠããè¡çºèªäœã«ããæ¥œããã£ãŠãã£ãããªããšæãåºããŸããã ãããªçµéšãããèªåãå¿ããæ¥œããããèªåã«ãšã£ãŠã®çµ¶å¯Ÿçãªèšèªããããã£ãŠããããçŽ æµãªããšãªãã ãšæããŸããããã¡ãããµãŒãã¹ãäœãããšããè€æ°ã®èšèªã䜿ãããªãããšã倧åã§ãããããã®ã¥ããã®éçšãã®ãã®ããæ¥œããããã©ããã§ããã®äººã®æèãåãçµã¿æ¹ã£ãŠå€§ããå€ãã£ãŠãããã ãªãšæ¹ããŠå®æããŸããã ãã¡ããåŠçé床ã驿驿ã®éžæã¯ãããšæããŸãããã©ããªãã®ã§ãRubyã§ã€ãããèªåã§ããããããRubyãéããŠæ¥œãããæãç¶ããããšæã£ãŠããŸããæ®æ®µã¯WebãµãŒãã¹ã®éçºãªã©ã§ããRubyã«è§Šããªãåã§ããããã以å€ã®éšåã«ãè§ŠããŠã¿ããã£ãŠæããã£ããã«ãªããŸãããPicoRubyãšãã®è©±ãé¢çœãã£ãã®ã§ãçµã¿èŸŒã¿åã®RubyãšãããææŠããŠã¿ãã€ããã§ãããŸãã¯ããããLãã«ããã¯ãããŠã¿ãŸãã ãŸããJITã«ããé«éåã®åãçµã¿ãªã©ãå«ããŠãRubyãé²åãããããšæ¬æ°ã§åãçµãã§ããæ¹ãå€ããŠããã®ç±éãããããšæããŸãããã§ãããããäœãã«è¿œãããŠãããããªé°å²æ°ã§ã¯ãªãããèªåãæ¥œãããããã£ãŠãããšããé°å²æ°ãªã®ãå°è±¡çã§ããããããããèªåã®ããããããšãèªç±ã«ãã£ãŠããŠããããã¡ãããšRubyã®æªæ¥ã«ã€ãªãã£ãŠãããšããã®ã¯æ¬åœã«çŽ æŽããããªãšæããŸãã ãã®äžã§ãããã ãããããã話ããããŠããã人ãã¡ãããRubyã³ãã¥ããã£ã«ããããããé¢ãã£ãŠãããããšæããŸããã å°å.rbãªã©ãå«ããŠãä»åŸãããããªåœ¢ã§åå ããããšæã£ãŠããŸã(æ±äº¬è¿éã§ããããã®å Žæãããã°æããŠäžãã)ã ãŸãšã RubyKaigi2025ãéããŠãã®ãããªå Žæã«ããããããšèªäœã幞ãã§ããã®ã³ãã¥ããã£ã®äžå¡ã«ãªã£ãŠããããããšæãããããªæéã§ããã ä»ã®åã¯ãŸã Rubyãã·ã³ãã«ãªäœ¿ãæ¹ããã§ããŠããŸãããã§ãããããããã£ãšæ·±ãåŠãã§ããã°ãèŠãããã®ã話ããããšãå¢ããŠããã¯ããä»ä»¥äžã«Rubyãæ¥œãããªãæªæ¥ãåŸ
ã£ãŠããããããªåžæãæãŠã3æ¥éã§ããã ãŸããæµ·å€ã®åå è
ã®å€ãã«ãé©ããŸãããèŠæš¡ãæ¬åœã«å€§ãããŠããã®ãµã€ãºãåããŠã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ããšããã®ã¯èŽ
æ²¢ã ã£ããªãšâŠãèªåãèå³ããåéã§ãçã®è±èªãäžçäžã®äººã®å£°ãçŽæ¥èãããšããã®ã¯æ¬åœã«è²Žéãªæ©äŒã ã£ããšæããŸãã ããããå人çãªåçç¹ã1ã€ã ããããŸããååºãæã£ãŠãããªãã£ãã®ã¯ãããªããã£ãããªãã£ãã§ãããã£ãšäº€æµã§ãããã£ã³ã¹ããã£ãã®ã«âŠãšå°ãæããæ°æã¡ããããŸããæ¬¡åã¯ãã£ããæºåããŠããã£ãšããããªæ¹ãšã€ãªãããããã«ãããã§ãã æ¬ããµã€ã³äŒãªã©ãéããŠãè¿ãè·é¢æã§åŠã¹ãç©ºæ°æãçŽ æµã§ããããããããéãèŠç¹ã§äžçãèŠãŠããã®ã«ãç®æããŠããå
ã¯åããåãæ¹ã¯éã£ãŠããã¿ããªãRubyã®æªæ¥ãèŠãŠè¡åããŠãããããããå§¿ã«ããããåºäŒããããšããäœããã®åç©«ã§ããã æ¹ããŠãå©ããŠãã ãã£ãçãããã話ãããŠãã ãã£ãçãããæ¬åœã«ããããšãããããŸããã ãŸããæ¯æŽããŠãã ãã£ããšã¹ã»ãšã ã»ãšã¹ããã«ãæ¹ããŠæè¬ç³ãäžããŸãã æé«ã®RubyKaigiã§ããã æ¬¡ã®RubyKaigiãKaigi on RailsããããŠä»ã®Rubyã³ãã¥ããã£ã§ãããŸãçãããšãäŒãã§ããã®ã楜ãã¿ã«ããŠããŸãïŒ
ååäŒç€Ÿ makigaiïŒããã¬ã€ïŒ ã®è²ç¬ã§ãã2024幎6æããã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠãä»è·/é害çŠç¥äºæ¥è
åãçµå¶æ¯æŽãµãŒãã¹ãã«ã€ãã±ãã«é¢ããçµç¹ãããã»ã¹ã®æ¹åãæ¯æŽããŠããŸãã ã«ã€ãã±ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã§ã¯ãLeSSïŒLarge Scale ScrumïŒå€§èŠæš¡ã¹ã¯ã©ã ïŒãå°å
¥ããŠããŸããæ¬èšäºã§ã¯2025幎1æã«å®æœãã座è«äŒã®æ®ãã®éšåïŒPart3ïŒãã玹ä»ããŸãã Part1ãPart2ã«ã€ããŠã¯ä»¥äžã®èšäºããåç
§ãã ããã tech.bm-sms.co.jp tech.bm-sms.co.jp 人ç©çŽ¹ä» ãã ããœã ïŒä»¥äžããã POïŒ ãšãªã¢ãããã¯ããªãŒããŒ ç°ææµïŒä»¥äžãç°æPOïŒ ãšãªã¢ãããã¯ããªãŒã㌠åéèªå€§ïŒä»¥äžãåéENïŒ ãšã³ãžã㢠äŒé倧æïŒä»¥äžãäŒéENïŒ ãšã³ãžã㢠çŠç°å°äº® ã¹ã¯ã©ã ãã¹ã¿ãŒå
Œãã¡ã·ãªããŒã¿ãŒ è²ç¬å²³å¿ å
šäœã®ã¹ã¯ã©ã ãã¹ã¿ãŒå
Œæ¬èšäºã®å·çè
çµç¹ã®ã¢ãžãªãã£åäžãç®æããããŒã åç·š ââ 12 æã¯ã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ããŒã (泚: ãããã¯ãéçºã«å¿
èŠãªã¹ãã«ãä¿æããŠããããŸãã¯ç¿åŸã§ããããŒã )ãç®æãããããã ãããåéããã®çµç¹ã§æ¢åã®è€æ°ããŒã ãããã³ããšã³ããšããã¯ãšã³ãæ··æã«ãªãããã«åç·šæããã¿ã€ãã³ã°ã ã£ãããšæããŸãããŸãã¯ãåœæã®æžå¿µã«ã€ããŠæããŠãã ãã åéENïŒç§ã®ããŒã ã§ã¯æ¢ã«11æã®æç¹ã§ãããã³ããšã³ããšã³ãžãã¢ãããã¯ãšã³ããæ
åœããããšã«ãªã£ãŠããŸãããããã¯åœåã®æåŸ
éããããããããªã£ãããªãšæããŸããäžæ¹ãåç·šæåŸã®æ°ããŒã ã§ã¯ãè€æ°ã®æåãæã£ãããŒã ã¡ã³ããŒãæ··ããããã®ã§å€åããã倧ãããé£ããç¹ãåºãŠããã ãããªãšæã£ãŠããŸããã ãã POïŒäžé·æçãªèŠç¹ã§ã¯ãèªåŸçãªã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ããŒã ãäœã£ãŠããã®ã¯å®çŸãããããšã§ããããåéãããšåæ§ã«ãæåã®éã2ããŒã ã1ããŒã ã«ãªãæã«æåã®éããéçºã®é²ãæ¹ã®éããã©ããªãã®ããæ°ã«ãªã£ãŠããŸããã仿ãã°æ§é çãªåé¡ãåå ã§ãããããŒã åç·šåã¯ããã¯ãšã³ãéçºãå
è¡ãããã®åŸå¥ã®ã¹ããªã³ãã§ããã³ããšã³ãéçºã远åŸãããšãã£ãé²ãæ¹ãåã£ãŠããã®ã§ãæ··æããŒã ã«ãªã£ããšãã®å
·äœçãªé²ãæ¹ãã€ã¡ãŒãžã§ããŸããã§ãããè°è«ããªããé²ãæ¹ã決ããŠãããªã©ã®ããŒã ãã«ãã£ã³ã°æéãå¿
èŠã«ãªããšæã£ãŠããã®ã§ãããåœæã¯å€§ããªãªãªãŒã¹ãæ§ããŠããææãªã®ã§ãäžæçã«èµ·ããã§ãããã¹ããŒãäœäžãã©ã®ããã«åãæ»ããŠããã®ããæ°ãããã§ããããããã£ãäžã§ã®åç·šæã¯ãæ¬åœã«å€§ããªãã£ã¬ã³ãžã ã£ããšæããŸãã ââ ããŸããã£ãæã®ãªã¿ãŒã³ã«æåŸ
ãã€ã€ãã倧ããªãªãªãŒã¹ã®çŽåã«äœå¶ãå€ããŠããããšã«ãããªã¹ã¯ã倧ããã£ãã§ãããã1 æçŸåšããã Done ã®å®çŸ© ãã®åå®çŸ©ãªã©ãæ°ããŒã ã§ã®ããŒã ãã«ãã£ã³ã°ã宿œããŠããæäžã§ã¯ãããŸãããçŸæç¹ã§èŠããŠããããŒã åç·šæã®å¹æã«ã€ããŠãèãããŠãã ãã ãã POïŒåç·šåŸã«ãæ··åã°ã«ãŒãã«ããè€æ°ããŒã ãããã¯ãããã¯ãã°ãªãã¡ã€ã³ã¡ã³ãã宿œããããšã«ãã£ãŠãæªæ¥ãžã®äžç¢ºå®æ§ãäžå®äžãããã宿ããããŸããã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ãªãã£ãŒãã£ãŒããŒã ãç®æãéçšã®äžã§ãåœé¢ã®ãããã¯ãããã¯ãã°ã¢ã€ãã ã«å¯Ÿããå
šå¡ã®è§£å床ãåºäžãã§ããããšãè¯ãã£ããšæã£ãŠããŸããå
šäœã«ç®ãåãã圱é¿ã§ããšãããããã¯ãããã¯ãã°ã¢ã€ãã ã®éçºãç°æããã»äŒéãããã¡ã®çµç¹ãšåæ
ããŠé²ãããã£ããã«ã§ããããšã倧ããã£ãã§ãã ãŸããããŸãè¡ããªãããšãåºãŠãããšãã«ãå
ã®ããã³ããšã³ããšããã¯ãšã³ãã§å¥ããããŒã ã«æ»ããšãã話ã§ã¯ãªããæ°ããŒã ã®äžã§è§£æ±ºãã¹ã課é¡ãšæããŠããç¶æ³ãè¯ãç¹ããªãšæã£ãŠããŸããäŸãã°ãããã³ããšã³ãã®éçºã¿ã¹ã¯ãå€ããšããäºå®ã«å¯ŸããŠãããŒã å
šäœã®ã¹ãã«ã¢ããã課é¡ãšããŠæããããã¯ãšã³ããšã³ãžãã¢ãããã³ããšã³ãã®å®è£
ã«ãã£ã¬ã³ãžã§ãããããªæŠç¥ãããŒã èªèº«ãè°è«ããŠå®è¡ã«ç§»ããŠããŸããå®éæ¢ã«ãããã¯ãšã³ããšã³ãžãã¢ãããã³ããšã³ãã¿ã¹ã¯ãæ¶åã§ããããã«ãªã£ãŠãããšããææãã§ãŠããã®ã§ããã£ã¬ã³ãžããŠè¯ãã£ããªãšæã£ãŠããŸãã åéENïŒããå°ãåºãç¯å²ã§æ¯ãè¿ã£ãŠèŠããšãLeSSã®å°å
¥ããæ¯æã®ããã«å€§ããªå€åãèµ·ããç¶ããŠããããªãšæã£ãŠããŸããã¹ããªã³ãã2é±éãªã®ã§ã2ã¹ããªã³ãçµéããŠå€åã«æ
£ããŠããé ã«ããŸã倧ããªå€åãèµ·ããŠãã¿ãããªããã ããã®4ãæã§ããã»ã¹ãçµç¹ãå€åãããŠããããšèªäœã«æ
£ããŠããŠãã¢ãžãªãã£ã®é«ãããŒã ã«ãªã£ãŠãã宿ããããŸãã1ã€1ã€ã®å€§ããªå€åã¯ãã ãããäžå¿ãšãªã£ãŠæšãé²ããŠããããã§ãããããŸããããªãå¯èœæ§ã倧ããäžã§ãã©ãã©ãé²ããŠãããšããã¯ããããªãšæããªããèŠãŠããŸãããå€åã«è¿œåŸããããŒã ã倧å€ã§ãããå€åãåããããæ¹ã¯ãã£ãšå€§å€ã ãããªãšæããŸãã ãã POïŒããããšãããããŸããäžæ¹ãã©ãã©ãå€åããŠããç¶æ³ã®äžã§ãååãçµã¿ã«å¯Ÿããè©äŸ¡ãææ§ã«ãªã£ãŠããç¹ã課é¡ãšããŠæããŠããŸããæçµçã«ã¯ããŒã ã®å®å®åãç®æããããšæã£ãŠããŸãããçŽè¿ã§ã¯ãããã¯ãããŒããããã«é¢é£ããèšç»ãšå®çžŸã®å·®åãåã¹ããªã³ãã«ãããããã·ãã£ãªã©ãèŠãã¹ãææšã«ãªãã®ããªãšæã£ãŠããŸãã åéENïŒè©±ãããŠããŠããã®åº§è«äŒèªäœã1ã€1ã€ã®å€åã«å¯ŸããèŠçŽãã®ãã£ããã«ãªã£ãŠããããšã«æ°ã¥ããŸããã ââ çµç¹ã®é©å¿æ§ã¯ã LeSS ãã¬ãŒã ã¯ãŒã¯ ã®äžã§ãéèŠãªãã€ã³ããšããŠãããããŠããŸãããã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠæ¯æŽã«å
¥ã£ãŠãããå€åã«å¯ŸããŠã©ãé©å¿ããŠããã®ããšããè°è«ãåæã§å»ºèšçã«ãªãããŠããããšãå°è±¡çã§ãçµç¹ãšããŠã®éèŠãªäŸ¡å€èгã«éãããšãããªãã ãããªãšæããŠããŸã å°æ¥ã®å±æ ââ æåŸã«ãçµç¹ãããŒã ã«å¯Ÿããä»åŸã®æåŸ
ã«ã€ããŠäžäººãã€èãããŠãã ãã äŒéENïŒç§ã®çµç¹ã§ã¯ãæ¢ã«ããã¯ãšã³ããããã³ããšã³ããªã©ã®æè¡é åã§ã®åœ¹å²åæ
ãæžã£ãŠããŠãã宿ããããŸãããã®å
ã¯æè¡é åãšãããããããã¯ããã£ã¹ã«ããªãŒãå質ä¿èšŒãªã©ããšã³ãžãã¢ä»¥å€ã®è·çš®ã«é Œã£ãŠããé åã«ãåºããŠè¡ãããã§ãã宿ã®å®çŸ©ãæ¡åŒµããŠãäŸ¡å€æäŸã«å¿
èŠãªããšã¯ã¹ããªã³ãå
ã§äœã§ãã§ãããããªãåé¡è§£æ±ºåã®é«ãããŒã ã«ãªã£ãŠããããšãããªãšæã£ãŠããŸãã ç°æPOïŒç§ã®çµç¹ã§ã¯ã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ãªããŒã åå²ãããã°ããã§ãããä»åŸã¯ãããã¯ããããŒãžã£ãŒããããã¯ããªãŒããŒãæ
ã£ãŠããæ¥åãå
·äœçã«ã¯ãããã¯ãããã¯ãã°ã¢ã€ãã ã®äœæãªã©ãããŒã ã®èª°ããæ
åœã§ããç¶æ
ã«ããŠããããšè¯ããªãšæã£ãŠããŸãã åéENïŒæ°ããã¡ã³ããŒãããŒã ã«ãžã§ã€ã³ããããæ°ããªããŒã ãäœããããããããšãä»åŸããããšæãã®ã§ãããã§èµ·ãããã課é¡ã«å¯ŸããŠããããŸãä¹ãè¶ããŠãããããšæã£ãŠããŸããã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ãªããŒã ã«ã¯ãªã£ãŠããŸããããçµç¹å
šäœãšããŠãã¡ã€ã³ã«ããã§ããŒã ãäœãããŠããã®ã§ããã®ããããè§£æ¶ããŠããããšãä»åŸã®èª²é¡ããªãšæã£ãŠããŸããããããããŒã ããããããã¡ã€ã³ã察å¿ã§ãããããªå€åãèµ·ãããšæã£ãŠããã®ã§ããã®å€åã«æåŸ
ããŠããŸãã ãã POïŒç§ã®ãããã¯ãã¯ä»åŸ2ã3幎åŸãèŠæ®ããæã«ããŸã ãŸã æ¡å
ãã¹ãæ©èœã»ãµãŒãã¹ãæ§ããŠããã®ã§ãä»ããã¡ã³ããŒãå¢ããŠããã¯ãã§ããçŸåšã¯ã¯ãã¹ãã¡ã³ã¯ã·ã§ã«ããŒã ã§éçºãé²ããŠããéæž¡æããšã¯æããŸãããã¡ã³ããŒãå¢ãããšãã«åã
ã®ããŒã ãå®å®ãããç¶æ
ã§ãã©ã®ããã«ã¹ã±ãŒã«ã¢ãŠãããŠããããæ¬¡ã®èª²é¡ã«ãªã£ãŠããã ãããªãšæã£ãŠããŸããä»ã§ããããšã¯åŒãç¶ããã£ãŠãããªãããæªæ¥ã®èŠç¹ãå
¥ããªãããæºåãé²ããŠãããããšæã£ãŠãŸãã ââ ã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ãªãã£ãŒãã£ãŒããŒã ãé²ããéçšã§ãã©ããªé åã§ãåŠç¿ããªããé²ããŠãããããŒã ã«ãªã£ãŠããã®ã§ãçµæãšããŠçµç¹å
šäœã®ã¢ãžãªãã£ãåäžããŠãããã ãããªãšæã£ãŠããŸããã¹ã¯ã©ã ãã¹ã¿ãŒäžåãšããŠããçããã®æåŸ
ãå®çŸã§ããããã«ãåŒãç¶ãæ¯æŽãããŠããã ããŸãã座è«äŒã«åå ããã ãããããšãããããŸãã ãŸãšã èš3åã«æž¡ã£ãŠç޹ä»ããŠããLeSS座è«äŒã§ã¯ã以äžã®ãããªãããã¯ãæ±ããŸããã Part1ïŒLeSSã®å°å
¥ããåæãŸã§ LeSSå°å
¥æã®å°è±¡ãæåŸ
LeSSå°å
¥åŸåæã«èµ·ããå€å Part2ïŒLeSSå°å
¥åŸã«èµ·ãã圹å²ãšçµç¹æ§é ã®å€å ããŒã ã®èªåŸæ§åäžã®ããã®åœ¹å²å»æ¢ ã³ã³ããŒãã³ãããŒã ããã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ããŒã ãž Part3ïŒå€åãç¶ããçµç¹ãšå°æ¥ã®å±æ çµç¹ã®ã¢ãžãªãã£åäžãç®æããããŒã åç·š å°æ¥ã®å±æ çãéã«LeSSã®å°å
¥ã»ãããžã§ã¯ããªãŒããšãã圹å²ã®å»æ¢ã»ã¯ãã¹ãã¡ã³ã¯ã·ã§ãã«ããŒã /ãã£ãŒãã£ãŒããŒã ãžã®åç·šããšãã£ã倧ããªå€åãèµ·ããç¶ããŸãããããããã¯ãéçºã®åœäºè
èªããäž»äœãšãªã£ãŠèããå®è¡ããŠããããšãäŒãã£ãã®ã§ã¯ãªãã§ããããã 仿¹ãã¹ã¯ã©ã ãã¹ã¿ãŒããããŒãžã£ãŒã¯ãLeSSå°å
¥ã«ããã 3 ã€ã®åå ãªã©ã念é ã«ãããŠãåœäºè
ãžã®åŒ·å¶ã¯é¿ãã芳ç¹ãåºããããã®åãããããåœäºè
ãå¿
èŠãšããæ¯æŽãè¡ãããåªããŠããŸããLeSSã¯æ¥æ¬åœå
ã«ãããŠã®äºäŸãå°ãªãã®ã§ãå°å
¥ãæ€èšããŠããçµç¹ã®åèã«ãªãã°å¹žãã§ãã
ããã«ã¡ã¯ïŒã«ã€ãã±ãªãã¥ãŒã¢ã«ã®éçºæšé²ããŒã ã§ãšã³ãžãã¢ãããŠãã @_kimuson ã§ãã ããã³ããšã³ãéçºã«ãããŠèŠèŠçãªã°ã¬ãã·ã§ã³ãã¹ãïŒVisual Regression Testingãä»¥äž VRTïŒã¯æ¬ ãããªãååšã§ãã ç§ãã¡ã®ããŒã ã§ã¯é·ãã Chromatic ãæŽ»çšããŠããŸãããããããžã§ã¯ãã®æé·ã«äŒŽããããã¹ã±ãŒã©ãã«ã§ã³ã¹ãå¹çã®é«ããœãªã¥ãŒã·ã§ã³ã暡玢ããå¿
èŠãåºãŠããŸããã æ¬èšäºã¯ 2 éšæ§æã®åç·šãšããŠãå
補åã®æ±ºæã«è³ã£ãèæ¯ãšä»£æ¿ããŒã«ã®æ€èšéçšã玹ä»ããŸãã åŸç·šã§ã¯å®éã®å®è£
ããã»ã¹ãšç§»è¡äœæ¥ã®è©³çްã«çŠç¹ãåœãŠãäºå®ã§ãã å
補åã®æ±ºæ ð€ Chromatic ã®å©ç¹ Chromatic 㯠Storybook ãããŒã¹ã«ãã VRT ãæäŸãã SaaS ã§ãã ç°¡åãªã»ããã¢ããã§åªããéçºè
äœéšãšçŽæçãªã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŠããŸãã ç§ãã¡ã®ããŒã ãç¹ã«äŸ¡å€ãæããŠããç¹ã¯ä»¥äžã®éãã§ãïŒ æå°éã®ã»ããã¢ããã®ã¿ã§ Storybook ãããŒã¹ã«ãã VRT ãåããããšãã§ãã VRT ã®ãããå€ã广çã«èšå®ãããŠãããç¹ã«ãã¥ãŒãã³ã°ãããšã FlakyïŒäžå®å®ãªïŒãã¹ããæå°éã«æããããŠãã ããããããå·®åã®è¡šç€ºãšãStory åäœã§ã®å€æŽæ¿èª/æåŠã®æè»ãªã¯ãŒã¯ãã㌠VRT ã«ãããå®å
šã«ããã³ããšã³ããç·šéã§ããç¹ ã³ãŒãã¬ãã¥ãŒã®éã«å€æŽã«ãã£ãŠ UI ãã©ã倿Žãããã®ããèªåã§ãããéçºè
äœéš VRT ã«å ã㊠Storybook ããã¹ãã£ã³ã°ãããéãšã³ãžãã¢ã«åçŸã®é£ããç¶æ
ã® UI ãå
±æã§ããç¹ Chromatic ã«å€§ãã«å©ããããŠããŸãããããããžã§ã¯ãã®èп𡿡倧ã«äŒŽã課é¡ãèŠããŠããŸããã å
補åãæ€èšãããã£ãã ð° æå€§ã®èª²é¡ã¯ã³ã¹ãã§ããã æã
ã®ããŒã ã§ã¯ã¹ãããã·ã§ããã®ç·æ°ãæãããçŽ 13 äžã¹ãããã·ã§ãããã€å¢å ããŠãããæ€èšŒéå§ã®æç¹ã§åèšçŽ 70 äžã¹ãããã·ã§ããã«éããŠããŸããã Chromatic ã®èª²é圢æ
ã¯ã¹ãããã·ã§ããæ°ã«å¯ŸããåŸé課éã§ãããã¹ãããã·ã§ããã«å¯ŸããŠç·åœ¢ã«éé¡ãå¢ããŠãããŸãããããžã§ã¯ãèŠæš¡ã«é©ããã³ã¹ãæ§é ãèããå
補åãæ€èšããã«è³ããŸããã æèŸºã 13 äžã¹ãããã·ã§ããå¢å ããŠããããšããããããããã«ãããã³ããšã³ãã®ã³ãŒãããŒã¹ãšæ©èœæ¡å€§ã«äŒŽã£ãŠããã®è²»çšã¯ä»åŸãå¢å ãäºæ³ãããŸãã ããã§ãChromatic ã®åªããéçºäœéšãã§ããéãç¶æããªãããããã³ã¹ãå¹çã®é«ãä»£æ¿ææ®µãæ¢ãããšã«ããŸããã 代æ¿ããŒã«ã®æ€èš ð å
補åã«ããã£ãŠéèŠã ã£ãã®ã¯ãChromatic ãæäŸããŠãã䟡å€ãã©ã眮ãæããããšããç¹ã§ãã 代æ¿ããŒã«ãæ€èšããåã«ããŸã Chromatic ããåŸãŠããäž»ãªäŸ¡å€ãæŽçããŸããã Chromatic ããåŸãŠããäŸ¡å€ ð Chromatic ã¯åãªã VRT ããŒã«ã«ãšã©ãŸãããããã³ããšã³ãã®éçºãããŒããã³å質ä¿èšŒã«å¹
åºã䟡å€ãæäŸããŠããŸãã ç¹ã«ä»¥äžã® 3 ã€ã®äŸ¡å€ãéèŠã§ããïŒ ãªã°ã¬ãã·ã§ã³ã®æ€ç¥ UI ã«æå³ããªã倿Žãå
¥ã£ãŠããªãããèªåçã«æ€ç¥ ç¶ç¶çãªå質ä¿èšŒã®åºç€ éçºäœéšã®åäž PR ã®å€æŽã«ãã£ãŠ UI ã«ã©ã®ãããªåœ±é¿ãããããèŠèŠçã«ç¢ºèª Story åäœã§ã®å€æŽæ¿èª/æåŠã«ãããã³ã³ããŒãã³ãããšã®çްããªã¬ãã¥ãŒãå¯èœ Storybook å
±æã«ããã³ãã¥ãã±ãŒã·ã§ã³åºç€ ãã¶ã€ããŒããããã¯ããããŒãžã£ãŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ããŒã«ãšããŠæ©èœ åçŸãé£ããæ¡ä»¶ã® UI ç¶æ
ããStorybook ã§ãã©ã¡ãŒã¿ãåºå®ããŠå
±æå¯èœ ã³ã³ããŒãã³ãã®å
šããªãšãŒã·ã§ã³ãäžèЧã§ããã«ã¿ãã°ãšããŠã®åœ¹å² ãããã®äŸ¡å€ãã§ããéãç¶æããªããå
補åãé²ããå¿
èŠããããŸããã Storybook ã®ãã¹ãã£ã³ã°ã代æ¿ãã ã3. Storybook å
±æã«ããã³ãã¥ãã±ãŒã·ã§ã³åºç€ ãã«ã€ããŠãStorybook ããã¹ãã£ã³ã°ã§ããããšã«ã€ããŠã¯ãStorybook èªäœã¯éçãªé
ä¿¡ã«å¯Ÿå¿ããŠããŸãã ã§ãã®ã§ãåã«ããã©ã³ãããšã«ãã«ããã㊠AWS S3 çã®ãã¹ãã£ã³ã°ãè¡ãããµãŒãã¹ã§ãã¹ãã£ã³ã°ãããä»çµã¿ã ãäœããã°è¯ãã®ã§ãGitHub Actions ã§ AWS S3 ã«ã¢ããããŒãããã¯ãŒã¯ãããŒãçµãããšã§å¯Ÿå¿ã§ããèŠç«ãŠãç«ã¡ãŸããã VRT ã®å®è¡ããã³ã¬ããŒã確èªã代æ¿ãã Storycap + reg-suit Storycap ãš reg-suit ã®çµã¿åããã¯ããªãŒãã³ãœãŒã¹ã§ VRT ãå®çŸããåºã䜿ãããŠãããªãã·ã§ã³ã§ãã VRT ã®å®çŸã«ã¯ã倧ããåã㊠ã¹ã¯ãªãŒã³ã·ã§ãããæ®åœ±ããéšå UI ã®å·®åãæ€ç¥ããéšå ã¬ããŒãã衚瀺ããéšå ã®èŠçŽ ãå¿
èŠã§ãããStorycap ã 1 ã®æ®åœ±éšåããreg-suit ã 2 ãš 3 ã®å·®åã®æ€ç¥ãšã¬ããŒãéšåãã«ããŒããŸãã å®éã«æ¢åã® Storybook ã«çµã¿èŸŒãã§ã¿ãŠæãã£ã課é¡ç¹ãšããããã®å¯Ÿå¿æ¡ã¯ä»¥äžã®éãã§ã: ãã¥ãŒããŒããµã€ãº ð±: ããã©ã«ãã§ã¯æ£æ¹åœ¢ã«è¿ããµã€ãºã§ãå€ãã®ããŒãžã§ã¯é©åã§ã¯ãªãã£ã 察å¿: ããã©ã«ãã®ãã¥ãŒããŒãæå®ã远å ïŒ823 x 1,512ïŒ CSS ã¢ãã¡ãŒã·ã§ã³ ð: ããŒãã£ã³ã°ã¢ãã¡ãŒã·ã§ã³ã diff ã«ãªãåé¡ å¯Ÿå¿: æäŸããã disableCssAnimation ã§ã¯åºå®ã§ããªãã£ãã®ã§ãisSnapshot ã¢ãŒãæã«ã¹ãããŒã®ã¢ãã¡ãŒã·ã§ã³ã忢ãã Storybook ã®ãã³ã¬ãŒã¿ã远å ããããšã§å¯Ÿå¿ Play Function â¶ïž: Chromatic ã§ã¯èªåçã«åŸ
æ©ããŠãã Play Function ã®å®äºãåŸ
ããªãåé¡ å¯Ÿå¿: delay æå®ãŸãã¯æç€ºçã« waitFor ãäœ¿çš ããããã®èª²é¡ãåå¥å¯Ÿå¿ã§ããããšãåãããååå®çšã«èãããã ãšããããšã§ç¢ºèªã§ããŸããã ãŸããreg-suit ã«ããã¬ããŒããèŠèŠçã«ãããããããå·®åã®ç¢ºèªæ¹æ³ãè€æ°çšæãããŠããŸãã Lost Pixel Storybook ããŒã¹ã® VRT ãå®çŸããä»ã®ããŒã«ãšããŠã Lost Pixel ãæ€èšŒããŸããã Lost Pixel 㯠reg-suit + Storycap åæ§ã« Storybook ã®ã¹ã¯ãªãŒã³ã·ã§ãããæ®åœ±ãã倿Žãæ€ç¥ããããã®ããŒã«ã§ããPlatform çïŒSaaSïŒãš OSS çã® 2 ã€ã®éžæè¢ããããŸãããOSS çãæ€èšããŸããã Lost Pixel ã¯åè¿°ã®èŠçŽ ã«ãã㊠1 ãš 2 ããµããŒãããŸãã å·®åã¯ã©ããã£ãŠææ¡ããã®ããšãããšãææ°ã®ã¹ã¯ãªãŒã³ã·ã§ãããã³ãããããŠãããã¹ã¯ã·ã§ãæŽæ°ããããšã§ GitHub ã® PR ã® UI ãã確èªããææ³ã§äœãããŠããŸãã èªåã¯ããŸã䜿ã£ãããšã¯ãªãã£ããã§ãããè€æ°ã®å·®åè¡šç€ºæ¹æ³ã GitHub ã察å¿ããŠããŠå€æŽå
容èªäœã¯ãããããã確èªãå¯èœã§ããã å®éã«è©Šçšããçµæã以äžã®ãããªç¹åŸŽãããããŸããïŒ ã»ããã¢ããã®å®¹æã : èšå®ã reg-suit ç³»ã«æ¯ã¹ãŠãEasyãã«ãã£ãŠãããã»ãŒããã©ã«ãèšå®ã ãã§åäœãã å®å®æ§ : Chromatic ã reg-suit ã§åå¥ã»ç¹æ®å¯Ÿå¿ãå¿
èŠã ã£ãã±ãŒã¹ããç¹ã«è¿œå èšå®ãªãå®å®ããŠåäœããŠãã ããªã Easy ãã€å®å®ãã VRT ãå®çŸã§ããŠããŠæè§Šã¯ããªãè¯ãã£ãã§ãã äžæ¹ã 課é¡ç¹ ãèŠã€ãããŸããã å®è¡é床ãé
ããããŒã«ã«ãã·ã³(M2 Max 64GB Mac) ã§ã¹ã¯ãªãŒã³ã·ã§ããã®ã¿ã§çŽ 9 å 䞊ååã®ãªãã·ã§ã³ã¯æäŸãããããsharding ã®ãªãã·ã§ã³ããªãå€§èŠæš¡ãããžã§ã¯ãã§ã®å®è¡æéççž®ãé£ãã ã»ãšãã©ã«ã¹ã¿ãã€ãºã¯äžèŠã§ããããStory åäœã®ãªãã·ã§ã³å¶åŸ¡ã¯åŒ±ãããã¥ã¡ã³ããŒã·ã§ã³ãéå®çã§ã«ã¹ã¿ãã€ãºã¯ãã¥ãã ã¬ããŒãæ©èœãæäŸããããGitHub ã® diff ã«äŸåããå¿
èŠããã æè¡æ¯èŒãšéžå® âïž äžèšã®æ€èšŒçµæããŸãšãããšä»¥äžã®ããã«ãªããŸã: åã¹ãããã«ãããããŒã«æ¯èŒ ã¹ã¯ãªãŒã³ã·ã§ããã® capture ããŒã« è¯ãç¹ æªãç¹ Storycap å®è¡æéã«é£ã¯ãããã䞊ååããã³ sharding ãªãã·ã§ã³ãæäŸãããã¹ã±ãŒã«ã«èãã Chromatic ãããã¬ã€ããŒæ°å³ã§åå¥å¯Ÿå¿ãå¿
èŠã«ãªããã¡ãplay function éå¯Ÿå¿ Lost Pixel (OSS) å®å®ããŠãã å®è¡æéã«é£ãããã〠sharding ã§ããªãã®ã§ã¹ã±ãŒã«ã«éç ãªã°ã¬ãã·ã§ã³æ€ç¥ã»ã¬ããŒã ããŒã«ã»ãµãŒãã¹ å·®åãã§ãã¯ã®äœéš reg-suit ã¬ããŒã UI ãæäŸãã Chromatic ã«è¿ã䜿ããããäœéšãStory ããšã® Accept/Deny/Comment ãã§ããªãç¹ã¯ Chromatic ã«å£ã Lost Pixel (OSS) ã¬ããŒãã¯æäŸããããããŒã«ã«ãŸã㯠CI ã§æ°ããã¹ã¯ã·ã§ãã³ãããããGitHub ã® diff ã§ç¢ºèªããæ³å® äºäŸã¯ã»ãšãã©èŠãããŸããã§ããã ã¹ã¯ã·ã§éšåã Lost Pixel ãªã°ã¬ãã·ã§ã³æ€ç¥ãšã¬ããŒãéšå㯠reg-suit ã®ãããªæ§æãäžå¿åãããšãã§ããã®ã§ã䜵çšããæ¡ãå«ããŠããããéžå®ãè¡ãã reg-suit + Storycap ã®æ§é ãåãããšã«æ±ºããŸããã çç±: ã¹ã¯ãªãŒã³ã·ã§ããã® capture : Lost Pixel ãç°¡åã〠Flaky ããå°ãªããŠæè§Šã¯è¯ãã£ãã®ã§ãããå®è¡æéã®ã¹ã±ãŒãªã³ã°ãå³ããããªç¹ã§éžæã§ããªããšå€æããŸãã æ€èšŒæç¹ã§ã 1000 以äžã® Story ãååšããŠãããä»åŸãå¢ããŠããããšãèãããš sharding ãäžå¯èœãªç¹ã¯èŽåœçã§ãã ãªã°ã¬ãã·ã§ã³æ€ç¥ã»ã¬ããŒã: Chromatic ã«ç¿çããŠããéçºè
ã®çç£æ§ã極åèœãšããã«ç§»è¡ããŠãããããã«ãã¬ããŒãç»é¢ãããç¹ã§ reg-suit ã¯é
åçã ã£ããããæ¡çšããŸãã Lost Pixel ã®å Žåãã¯ãŒã¯ãããŒãç
©éã«ãªã£ãŠããŸãç¹ããã€ãã¹ãã€ã³ãã§ãã reg-suit + Storycap ã®æ§æã§ã¯ãChromatic ãšæ¯èŒãããšéçºè
äœéšã¯è¥å¹²å£ããã®ã®ã以äžã®ç¹ã§åªäœæ§ããããŸããïŒ ã³ã¹ã ð°: 倧å¹
ãªåæžãèŠèŸŒãã ã«ã¹ã¿ãã€ãºæ§ ð ïž: ã¯ãŒã¯ãããŒã®å段éãã«ã¹ã¿ãã€ãºå¯èœ å®è¡ç°å¢ã®å¶åŸ¡ ð®: èªç€Ÿç°å¢ã§å®è¡ãããããå®è¡ããŒãã®ã¹ããã¯ãã¿ã€ãã³ã°ãå¶åŸ¡å¯èœ äžæ¹ã§ã以äžã®ãã¬ãŒããªããååšããŸãïŒ éçºè
äœéšã®äœäž : Story ããšã® Accept/Deny/Comment ãã§ããªã å·®å確èªã¯ GitHub ã®ã³ã¡ã³ãã䜿ã£ãããåãã«ãªã ç¹æ®ãª Story ã«å¯Ÿããã«ã¹ã¿ã 察å¿ãå¿
èŠã«ãªãå Žåããã éçšã³ã¹ã : åææ§ç¯ãšç¶ç¶çãªã¡ã³ããã³ã¹ãå¿
èŠ GitHub Actions ã®å®è¡æéãšè²»çšã®ãã©ã³ã¹èª¿æŽãå¿
èŠ ãããã®æ¯èŒãè¡ããã³ã¹ãåæžå¹æãšèš±å®¹ã§ããéçºè
äœéšã®ãã©ã³ã¹ãèæ
®ãã Storycap + reg-suit ãæ¡çšããããšã§æ±ºå®ããŸããã ããéçºäœéšã®äœäžã¯ãããã®ã®ãåå蚱容ã§ããã©ã€ã³ãšå€æããŸããã ãŸãšã ð Chromatic ããã®ç§»è¡ãæ€èšããéçšã§ãè€æ°ã® VRT ãæäŸãã OSS ãšã¢ãããŒããæ€èšŒããŸããã ãã®çµæãã³ã¹ãåæžå¹æãšéçºè
äœéšã®ãã©ã³ã¹ãããStorycap + reg-suit ã®çµã¿åãããæé©ã§ãããšããçµè«ã«è³ããŸããã äž»ãªæ±ºãæãšãªã£ããã€ã³ãã¯ä»¥äžã®éãã§ãïŒ å€§å¹
ãªã³ã¹ãåæž : æé¡è²»çšã®å€§å¹
ãªåæžãèŠèŸŒãã 蚱容å¯èœãªéçºè
äœéš : äœéšã¯ Chromatic ã«ã¯è¥å¹²å£ããã®ã®ãäž»èŠãªæ©èœã¯ç¶æã§ãã 1-2 ãæºãããªããçŸå®ç㪠CI ã®å®è¡æéãç¶æã§ãã ä»åã¯æ¡çšããŸããã§ããããçµç¹ãå°ããã¿ã€ãã³ã°ã§ã® Chromatic ã¯ã»ãŒæäœéã®ã»ããã¢ããã§é«åºŠãªéçºäœéšãæäŸããŠãããŸãããLost Pixel (OSS ç) ãç°¡åãã»å®å®æ§ã§åªäœããããéèŠãããã¬ãŒããªãã«ãã£ãŠè¯ãéžæè¢ã ãªãšæããŸããã æ¬¡åäºå åŸç·šã§ã¯ãStorycap + reg-suit ã䜿ã£ãã¯ãŒã¯ãããŒãå®éã«æ§ç¯ããŠããéã®å·¥å€«ããç¹ãç§»è¡ã®ããã»ã¹ã«ã€ããŠç޹ä»ããäºå®ã§ãïŒ ãæ¥œãã¿ã«ïŒ