ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ ããŒã¿æŠç¥å®€ã®æ£®äžã§ãã 2024/01/25ã«TECH PLAY Data Conference 2024ã«ãŠãå¶æ¥éšéãšæãããŒã¿ã®æ°äž»åãã«ã€ããŠçºè¡šããã®ã§ããã®ã¹ã©ã€ããå
±æããŸãã å¶æ¥äººå¡ãå€ãåœç€Ÿã«ãããŠãããŒã¿ã®æ°äž»åã«ã©ã®ããã«åãçµã¿ãããŒã¿åæã®å°éå®¶ã ãã§ãªããå
šç€Ÿå¡ãããŒã¿ã«åºã¥ããæææ±ºå®ãè¡ããææãåäžãããåãçµã¿ã«ã€ããŠç޹ä»ããŠããã®ã§ãæ¯éã芧ãã ããã ã€ãã³ãæŠèŠ: techplay.jp We are hiring çŸåšã¬ãã¬ãžãŒãºã§ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãããèå³ã®ããæ¹ã¯ã以äžã®ãªã³ã¯ãããå¿åãã ããã ãšã³ãžãã¢æ¡çšããŒãž: recruit.leverages.jp ããŒã¿ãšã³ãžãã¢æ¡çšããŒãž: hrmos.co
ã¯ããã« ãã¯ãããžãŒæŠç¥å®€ã¯ãã¹ãšã³ãžãã¢ãªã³ã°ããŒã ã®å°æäº¬èŒã§ããæ¥åã§ã¯äž»ã«ããã³ããšã³ããšã³ãžãã¢ãšããŠãè€æ°ããŒã ã§ããã³ããšã³ãã®ã¬ãã¥ãŒããã¢ãããããŠãŸãã å
æ¥ã瀟å
ã®ãšã³ãžãã¢ãšäžç·ã«åå ããïŒæ ªïŒãµãŒããŠã§ãŒãäž»å¬ç¬¬äžå24æéAIããã«ãœã³ïŒ2023幎11æ3ã»4æ¥ïŒã§æºåªåããããšãã§ããã®ã§ãããã«ãœã³ã§äœæããã¢ããªã«ã€ããŠç޹ä»ããããšæããŸãã ããã«ãœã³ïŒ connpass.com èšäºïŒ forest.watch.impress.co.jp éçºããã¢ã㪠ãã£ããäœããªã瀟äŒèª²é¡ã解決ãããããªã¢ããªã±ãŒã·ã§ã³ãäœãããšãã話ã«ãªããæçµçã«æ¥åžžç掻ã«ãããã¹ãã¬ã¹ã粟ç¥çãªè² æ
ã軜æžãã誰ãããã€ã§ãã©ãã§ãæ°æ¥œã«ã¢ã¯ã»ã¹ã§ããããŒãœãã«ãã«ã¹ã±ã¢AIãšéæã£ãŠãKirakuããšããã¢ããªã24æéã§äœããŸããã 以åã çè·ã±ã¢ãšçŸè±¡åŠçç ç©¶ ãèªãã ããšããããçŸè±¡åŠçã±ã¢ãšããæŠå¿µãæ°é®®ã«æããããŸããã çç¶ã«ã€ããŠå¯ŸåŠããã®ã§ã¯ãªããæ£è
ããã®æåã«æ²¿ã£ã圢ã§ã±ã¢ãè¡ãããšïŒçŸè±¡åŠçã±ã¢ïŒã¯ãçŸè±¡åŠçãªæèã«ããããå¿åæ§ãã«çç®ããæ¹æ³ã ãšèããçŸè±¡åŠã®æµããæ±²ãã æŠå¿µã瀟äŒã«å®è£
ããããšããæãããããŸããã äžèšãèžãŸããŠãäœæããã¢ããªã«ã¯å€§ããåããŠïŒã€ã®ç»é¢ããããå蚺ç»é¢ããã£ããç»é¢ããããŸãã å蚺ç»é¢ã§ã¯ãããã€ãã®èšåã«çããŠããã圢ã§ããŠãŒã¶ãŒã®åŸåãå€å®ããŸããã ãŸãã¯ç²Ÿç¥çãªæ©ã¿ãæ±ãããŠãŒã¶ãŒã«å¯Ÿããçè§£ãå¿
èŠã ãšèããçŽé¢ããŠããåé¡ã«å¯ŸããŠå¯ãæ·»ããæåŸ
ããã¿ã€ããšãå
·äœçãªèª²é¡è§£æ±ºãæ±ããã¿ã€ãã®ïŒã€ãæ³å®ããããã³ãããã¶ã€ã³ãããããšã§å蚺ãè¡ããŸãã ãã£ããç»é¢ã§ã¯ãåã¿ã€ãã«å¿ããå¿çãããããã«ããã³ãããæžããå¿çãããããã«èšèšããŸããã å¯ãæ·»ããæåŸ
ããã¿ã€ãã®ãŠãŒã¶ãŒã«å¯ŸããŠã¯ãåžžã«å
±æãšã«ãžã¥ã¢ã«ãªäŒè©±ã§æ©ã¿ãåãããããã«å¿çãããå
·äœçãªè§£æ±ºãæ±ãããŠãŒã¶ãŒã«å¯ŸããŠã¯åé¡è§£æ±ºã«çŠç¹ãåœãŠãçŽæ¥çãªè³ªåãšã¢ããã€ã¹ãããããã«ãããŠãŒã¶ãŒã®åŸåã«åãããŠããŒãœãã©ã€ãºããããã£ããããããäœããŸããã ãããã« ä»åã人çã§åããŠåå ããããã«ãœã³ã§ãããã24æéãšããçæéã§åããã®ãäœãããŸãæºåªåãšããçµæã«çµã³ã€ããããšã¯çŽ çŽã«å¬ããã£ãã§ãã ãŸããæ·±å€ãŸã§æ®ã£ãŠãããã¡ã³ããŒãšäžç·ã«éçºããŠãçµç¹ãšããŠäžã€ã®ç®æšã«å€¢äžã«ãªããããšã¯è²Žéãªäœéšã«ãªããŸããã ã¬ãã¬ãžãŒãºã§ã¯ç€ŸäŒèª²é¡ãæè¡ã§è§£æ±ºããŠãããããšã³ãžãã¢ãåéããŠããŸãã èå³ã®ããæ¹ã®ãå¿åããåŸ
ã¡ããŠããŸãïŒ
ããã«ã¡ã¯ïŒã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿãã¯ãããžãŒæŠç¥å®€SREããŒã ã®è²çã§ãã Datadogå°å
¥ãšç£èŠã®ã€ãã€ããªã³ã°ã«ãã£ãŠã€ã³ãã©ç£èŠãã¢ã©ãŒãéçšãéçºè
åãã«æ°äž»åããäºäŸã玹ä»ããŸãïŒïŒ ãã®èšäºã§äŒãããããš ã€ã³ãã©ç£èŠãã¿ããªã§ããã®ããã ãµãŒãã¹ã®ã¹ã±ãŒã«ã«æè»ã«å¯Ÿå¿ã§ããã ã€ã³ãã©ã®ããšãŸã§èããŠéçºãã§ããã âã®ç¶æ
ãéæããããã«ãã£ãããš ç£èŠã®ã€ãã€ããªã³ã° ç£èŠã«ããéçºè
ãžã®è² è·è»œæž ã€ã³ãã©æ§æãç°¡åã«è¥å€§åãè€éåããæä»£ã«ãªã£ãŠããŸããã æ¥ã
æé·ããäºæ¥ãæ¯ããããã«å¢ããŠããæ°èŠã®ãã€ã¯ããµãŒãã¹ãã¹ã±ãŒã«ã¢ãŠãããããµãŒããŒã«å¯ŸããŠç£èŠã®èšå®ãããŠããããšã«æ©ãã çµéšã¯ãªãã§ããããã ç§ãäž»ã«æ
åœããŠããã¬ãããã¯ã®éçºã§ã¯ãã€ã³ãã©ç£èŠã«éçºè
ãæºãããäœå¶ã«ããããšã§é«éã«å€åããŠããã€ã³ãã©æ§æã«å¯ŸããŠæè»ã«å¯Ÿå¿ã§ããããã«ãªããŸããã åœæã®èª²é¡ åœæã®éçºã§ã¯ä»¥äžã®ãããªåæãšèª²é¡ãæ±ããŠããŸããã åæ ã¢ãŒããã¯ã㣠ã¬ãããã¯ã§ã¯AWSã®EC2ã®ã¢ããªã¹ã¢ããªã±ãŒã·ã§ã³ããECSãªã©ãµãŒããŒã¬ã¹ç°å¢ã«ãã€ã¯ããµãŒãã¹ãšããŠåãåºããŠãããªãã¬ã€ã¹ãããžã§ã¯ããé²è¡äžã§ããã ç£èŠäœå¶ åœæã®ç£èŠããŒã«ã¯AWS CloudWatchã䜿çšããŠããŠãCloudWatch AlarmãLambdaããã¡ããªã¯ã¹ã®ã¢ã©ãŒãããšã©ãŒãã°ãSlackã«æµãããã«ããŠããŸããã ã¢ãŒããã¯ãã£å³ èª²é¡ éçºã¹ããŒãã«å¯ŸããŠç£èŠã®å¯Ÿå¿ã远ãã€ããŠããªã åæã«ããéãECSãLambdaãå©çšããŠãã€ã¯ããµãŒãã¹ã«åãåºããŠãããã ã€ã³ãã©ã®ãªãœãŒã¹ãã©ãã©ãå¢ããŠããç¶æ
ã«ç£èŠã®èšå®ãäœå¶ã远ãã€ããŠããããèšæž¬ãããããŒã¿ãååŸã§ããŠããŸããã§ããã ã€ã³ãã©é¢ä¿ã®ã€ã³ã·ãã³ãã®å€ã ã¢ã¯ã»ã¹è² è·ãããŒã¿éã®å€åãäžé©åãªå®è£
ã«ããã€ã³ãã©ãªãœãŒã¹ãžã®è² è·ãåå ã§ã€ã³ã·ãã³ããçºçããŠããŸãã±ãŒã¹ãæ£èŠãããŠããŸããã ã€ã³ã·ãã³ãçºçæã«ããã調æ»å·¥æ°ã®è¥å€§å ã€ã³ã·ãã³ããçºçãããšãã«ãã°ãã¡ããªã¯ã¹ãå©çšããŠèª¿æ»ãéå§ããã®ã§ãã å
ã«è¿°ã¹ãããã«ååŸã§ããŠããªãããŒã¿ããã£ããç£èŠäœå¶ãæŽã£ãŠããªãããšããã 調æ»å·¥æ°ãè¥å€§åããŠè§£æ±ºãŸã§ã«æéãããã£ãŠããŸããã 課é¡åæ åœæã®èª²é¡ã以äžã®ããã«ããããåå åæããŠã¿ãŸããã ç£èŠå¯Ÿå¿ã®å±äººå ç£èŠã®èšå®ãéçšãã§ãã人ã瀟å
ã§éãããŠã㊠远å ãããŠããã€ã³ãã©ã®å€ãã«å¯ŸããŠããã«ããã¯ã«ãªã£ãŠããŸããã èšå®ã«ãããè² è·ãé«ãããèšå®æŒããªã©ã§ååŸããŠããªãããŒã¿ããããŸããã å®éã®äœæ¥ã«é¢ããæé»ç¥ã ãã§ãªãã©ã®é
ç®ã«ç£èŠã®èšå®ãããã°ããã®ããã¡ããªã¯ã¹ã®çžé¢ãã©ãèŠãã°ããã®ããªã©ã®ç¥èŠã®å
±æãè¶³ããŠããªãç¶æ
ã ã£ããšæããŸãã ã€ã³ãã©ãªãœãŒã¹ã®äœ¿çšç¶æ³ã®ææ§ã å®è£
è
ããã¿ãŠãªãœãŒã¹ã®äœ¿çšç¶æ³ãææ¡ãã¥ããäœå¶ã§ããã ã€ã³ãã©ã®ãªãœãŒã¹ãæ®æ®µã©ã®ããã䜿çšãããŠããã®ããæèããã¿ã€ãã³ã°ãå°ãªãããªãªãŒã¹åŸãã°ããçµã£ãŠå€åããã¡ããªã¯ã¹ãªã©ã«ã¯æ°ã¥ãã«ããç¶æ
ã ã£ããšæããŸãã ãŸãåœæã®CloudWatchã ãšäœ¿ãæ
£ããŠãã人ã§ãªããšããŒã¿ãã¡ããªã¯ã¹ãžã®ã¢ã¯ã»ã¹æ§ãæªãã䜿çšç¶æ³ãã±ã£ãšç¢ºèªã§ããææ®µããªãã£ãã®ãææ§ã«ãªã£ãåå ãšãªã£ãŠããŸããã èª¿æ»æã«çºçããã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ãã®è¥å€§å åœæç£èŠèšå®ãã¡ããªã¯ã¹ã®ã¢ãã¿ãªã³ã°ãSREããŒã ãæ
åœããããšãå€ãã£ãã®ã§ãããå®éã«éçºãããŠããã®ã¯éçºããŒã ãšãããµã€ãåããç¶æ
ã§ããã ã€ã³ã·ãã³ããçºçããéã«ç°å€ã«æ°ã¥ã調æ»ãéå§ããã®ã¯SREããŒã ã ãã© äœããªãªãŒã¹ãããã®ããã³ãŒããã©ãå®è£
ãããŠããã®ããŸã§æ·±ãææ¡ããŠããªãã®ã§éçºããŒã ãšé£æºãåãå¿
èŠããããããã§ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããçºçããŠããŸããã 解決ç åœæç¥èããã£ãããã§ã¯ãªãã§ããä»ããæ¯ãè¿ããšDevOpsã®CALMSãã¬ãŒã ã¯ãŒã¯ã§ããCïŒCultureïŒãAïŒAutomationïŒãSïŒSharingïŒãç¹ã«æèããŠè§£æ±ºçãèããããã«æããŸãã ç£èŠèšå®ãéçšã®è² è·è»œæž ã€ã³ãã©ç£èŠèšå®ã®èªå/åèªååãé²ããããšã§èšå®æŒããšå
šäœã®å·¥æ°ãæžãããã€ã³ãã©ç£èŠã®ç¥èããªãéçºè
ã§ãèšå®ãã§ãããããªç¶æ
ã«ããããšã§å±äººåã®è§£æ¶ãç®æããŸããã ãŸãDatadogã®å°å
¥ã«ãã£ãŠã¡ããªã¯ã¹ããã°ã®å¯èŠæ§ãäžããŠããŒã¿ãžã®ã¢ã¯ã»ã¹æ§ãåäžãããŸããã ç£èŠã®ã€ãã€ããªã³ã° éçºããŒã ãšäžç·ã«ã¡ããªã¯ã¹ãã¢ã©ãŒãã確èªããæ©äŒã宿çã«äœã£ãŠãéçºããŠãªãªãŒã¹ãããã®ãã€ã³ãã©ããµãŒãã¹ã«ã©ã圱é¿ãäžããŠããããææ¡ããŠãããããã«ããŸããã ããã«ãã£ãŠéçºè
ãç£èŠèšå®ãæ®æ®µã®ã¢ãã¿ãªã³ã°ãè¡ããããã«ããŠãã€ã³ã·ãã³ãçºçæã«éçºè
ã®äžã§ããçšåºŠå¯Ÿå¿ãå®çµã§ããããã«ããŸããã å
·äœçãªæœç Datadogå°å
¥ã«ããç£èŠèšå®ãéçšã®è² è·è»œæž æ®æ®µã®èšå®ãéçšã«ãããè² è·ã軜æžããããã« ç£èŠSaaSããŒã«ã§ããDatadogã®å°å
¥ãè¡ãããšã§ã€ã³ãã©ç£èŠèšå®ã®èªå/åèªååã«ããèšå®å·¥æ°ã®åæžãšã¡ããªã¯ã¹ããã°ã®å¯èŠæ§åäžãé²ããŸããã ãããŸã§äœ¿çšããŠããCloudWatchã§ã¯åœæã ãšååŸãããã¡ããªã¯ã¹ã®äžè¶³ãçµ±äžçãªã¢ã©ãŒãèšå®ããã«ãããããã·ã¥ããŒãã®UIã®äœ¿ãã«ãããªã©ã®èª²é¡ããããèªå/åèªååãé²ãã«ããç¶æ
ã ã£ãã®ã§ãã®ã¿ã€ãã³ã°ã§ããŒã«ã®åãæ¿ããæ±ºæããŸããã Datadogã®ã¯ã³ã¡ãã ã¯ã©ãŠãã®ãªãœãŒã¹ã«ç£èŠçšã®ã¿ã°ãã€ããã ãã§èªåã§Datadogã«ããŒã¿ãéããããã«ãã æ°èŠã®ãµãŒããŒããã€ã¯ããµãŒãã¹ã«å¯ŸããŠã¯IaCããŒã«ã«ãã£ãŠã³ãŒãåããããšã§èšå®ã«ãããè² è·ã軜æžããŠéçºè
ã«ãã£ãŠã€ã³ãã©ç£èŠèšå®ãèªèµ°ã§ããããã«ããŸããã ããã«ãã£ãŠSREããŒã ãã€ã³ãã©ã«è©³ãã人ãããªããŠãç£èŠèšå®ãé²ãããã«ãªããŸããã ãŸãç£èŠçšã®ããã·ã¥ããŒããšãã°æ€çŽ¢æ©èœãçšæããŠãéçºè
ã確èªãããã¿ã€ãã³ã°ã§ã±ã£ãšèŠããããã«ããŒã¿ãžã®ã¢ã¯ã»ã¹æ§ãšå¯èŠæ§ãåäžãããŸããã 宿çãªã¡ããªã¯ã¹ç¢ºèªäŒå®æœã«ããç£èŠã®ã€ãã€ããªã³ã° éçºè
ã«ç£èŠã®ç¥èŠãæ·±ããŠããã£ãŠéçšã§ããç¶æ
ã«ããããã« ã¡ããªã¯ã¹ããã·ã¥ããŒãã䜿ã£ãŠéçºããŒã ãšäžç·ã«ã¡ããªã¯ã¹ç¢ºèªäŒã鱿¬¡ã§å®æœããŸããã ãŸãå
è¿°ããDatadogã䜿ã£ãŠåãµãŒãã¹ããšã«ããã·ã¥ããŒããäœæããéçºè
ããã€ã§ãã€ã³ãã©ã®ã¡ããªã¯ã¹ããã°ã確èªã§ããç¶æ
ã«ã㊠ãã®ããã·ã¥ããŒããå©çšããŠé±æ¬¡ã§éçºããŒã ãšé±æ¬¡ã§ã¡ããªã¯ã¹ãã¢ã©ãŒãã確èªããã¡ããªã¯ã¹ç¢ºèªäŒã宿œããŸããã ããã·ã¥ããŒã ã¯ããã¯ãã¡ã·ãªããŒã·ã§ã³ãç§ãè¡ã£ãŠã¡ããªã¯ã¹ã®ç°åžžå€ãç¶æ
åããã¢ã©ãŒããªã©äŒã®äžã§ç¢ºèªããã»ãããããã®ãã·ã§ã¢ããŠããããã«å¯Ÿãã調æ»ãæ¹åãªã©ã®ãã¯ã¹ãã¢ã¯ã·ã§ã³ãåºããŸã§ã話ãæéãäœããŸããã ããã«ãã£ãŠãªãªãŒã¹ãããã©ã®ã³ãŒããã€ã³ãã©ããŠãŒã¶ãŒã«åœ±é¿ãåãŒãããã¡ããªã¯ã¹ãã¢ã©ãŒãã®ç¢ºèªãéããŠéçºè
ãææ¡ããŠç°å€ãèŠã€ãã£ããä¿®æ£è¡åã«ç§»ããããã«ãªããŸããã Slackã§ã¡ããªã¯ã¹ã«ã€ããŠè©±ãããŠããã¹ã¬ãã éçºè
ãããçšåºŠæ
£ããŠããããã¡ã·ãªããŒã·ã§ã³ãã ãã ãå§è²ãããããšã§ãSREããŒã æãã§äŒãåãããã«ãªã£ãŠãããŸããã ä»ã§ã¯ã€ã³ã·ãã³ãçºçæã®ã¢ã©ãŒããžã®1次ã¢ã¯ã·ã§ã³ã¯éçºããŒã ãè¡ã£ãŠããŸãã ãŸãšã ç£èŠèšå®ã®è² è·ã軜æžãããŠéçºè
ãéçšã«é¢ãããããç¶æ
ã«ãªãããµãŒãã¹ã®ã¹ã±ãŒã«ã«ã€ã³ãã©ç£èŠã远åŸã§ããããã«ãªããŸããã ããã«ãéçºè
ã鱿¬¡ã§ã¡ããªã¯ã¹ãã¢ã©ãŒãã確èªããæ©äŒãäœãããšã§ãéçºè
ãæ®æ®µã®éçºãã€ã³ãã©ã¬ã€ã€ã«åãŒããŠãã圱é¿ãææ¡ããã¢ã©ãŒããžã®ã¢ã¯ã·ã§ã³ãéçºããŒã å
ã§ããçšåºŠå®çµã§ããããã«ãªããŸããã ã€ã³ãã©ç£èŠã®æ°äž»åã®éèŠæ§ã瀺ãã²ãšã€ã®äŸãšãªã£ãã®ã§ã¯ãªãã§ããããã ãªã«ããSREããŒã ã®ç§ãšããŠã¯éçºããŒã ã®æ¹ãšå
±éèšèªã䜿ã£ãŠãµãŒãã¹ã®èª²é¡ã«ã€ããŠè©±ãåããããã«ãªã£ãŠä»äºã楜ãããªããŸããã éçºããŒã ãç¬èªã«ç£èŠããã°ã®èšèšãèŠçŽããŠããæŽ»åãèŠããšãã¯å¬ãããªããŸããã æ¹ããŠããã§äŒãããããšã®ãããã ã€ã³ãã©ç£èŠãã¿ããªã§ããã®ããã ãµãŒãã¹ã®ã¹ã±ãŒã«ã«æè»ã«å¯Ÿå¿ã§ããã ã€ã³ãã©ã®ããšãŸã§èããŠéçºãã§ããã ä»åã¯ç£èŠãã¢ã©ãŒãã«é¢ããåãçµã¿ã§ãããä»ã«ãè²ã
ãªåãçµã¿ãéããŠSREããŒã ãšããŠãããã¯ãã®ä¿¡é Œæ§ãä¿ã¡ãªãããã質ã®é«ããªãªãŒã¹ãå¯èœãªéãæ©ãã§ããç¶æ
ãç®æããŠé 匵ã£ãŠãããŸãïŒïŒ ã¬ãã¬ãžãŒãºã§ã¯ãµãŒãã¹ã®ä¿¡é Œæ§ãé«ããæŽ»åãããŠãããããšã³ãžãã¢ãåéããŠããŸãã èå³ã®ããæ¹ã®ãå¿åããåŸ
ã¡ããŠããŸãïŒ
忥 ~ 2æ¥ç®ã¯ åç·š ã«æžããŠããŸãã ãã¡ãã®èšäºã¯ã3æ¥ç® ~ åž°åœãŸã§ã®èšäºã§ãã æè¡çãªèšäºãªã©ã¯ ãã¡ã ããèŠããŸãã 3æ¥ç® 3æ¥ç®ã®äŒå Žã¯ãMGM Grandã§åå ããŸããã æé£ çžå€ãããã®çãããªãã³ãšãã«ãŒãã«å ããŠãã¹ã¯ã©ã³ãã«ãšãã°ãããŒã³ã³ããœãŒã»ãŒãžãªã©ãæã£ãŠãŸãããããŒã³ã³ã¯ããããã§ããã ã©ã³ã æ¬æ¥ã®ã©ã³ãã¯äžè¯ã£ãœãæãã§ãããçœããç±³ããã£ãã®ã§æ¥æ¬äººçã«ãè¯ãã£ãã§ãã ãã¶ãŒããããªãå
å®ããŠãŸãã ããã€ïŒ æŒéãããããã³ãã§ã¹ã¿ãããªã®ããèåãäŒå Žã«åºãŠãŸããã ãã€ãããŒãã£ ïŒæ¥ç®ã¯ãAWS Japanãäž»å¬ããŠããããæ¥æ¬äººåãã®ClosedããŒãã£ãŒã«åå ããŸããã2æ¥ç®ã¯ç¬ãèšä»¥å€ã§æ¥æ¬èªã話ããªãã£ãã®ã§ãããªãæ¥æ¬èªè©±ããŸããã æçã¯ã話ããŠãããŠã§ã€ã¿ãŒããããäžã€ã©ãïŒãã£ãŠå£°ãããŠããŠããã£ãŠé£ã¹ããšãã圢ã§ããã äºæ¬¡äŒ äžæ¬¡äŒè¿ãå°å
ã®é£²ã¿å±è¡ã§ãäºãå察é¢å士ã§äºæ¬¡äŒããŸããã ãé
ã1æ¬è²·ããš1æ¬ã€ããŠãããšããè¬ã·ã¹ãã ãšãè¬ã®Asada Friesãã€ãŸã¿ã«é£²ã¿ãŸããã 4æ¥ç® 4æ¥ç®ã®äŒå Žã¯ãMandalay bayã§åå ããŸããã æé£ çããã³ãå²ããšæ§ããã§ããããã®ä»£ãããžã£ã ãšãã倧éã«ãããã¿ãŒã³ã ã©ã³ã ã©ã³ãã¯èªåã§äœããããããã°ã ãããŠãªãããããã re:Play 4æ¥ç®ã®å€ã¯ãAWSãäž»å¬ã®ã¯ã©ãã€ãã³ãã ã¹ããŒãžãïŒã€ãããããŒãã³ãŒããªã©ã䜵èšã飲ãã§èžã£ãŠã®å€§å®ŽäŒã§ããã 5æ¥ç® æçµæ¥ã¯Venetianã«ãŠåå ããŸããã æé£ å®å®ã®çããã³ãšãã«ãŒããåŸã¯ããã£ã³ããŒã¬ãŒïŒçãªã®ãšãre:Partyã§ãåºãŠãPupusaããããŸãããä»åã®re:Inventã§åããŠé£ã¹ãŸãããã ãšã«ãµã«ããã«ããã³ãžã¥ã©ã¹ã®é·åæç ã ããã§ãã æŒé£ re:Inventã¯5æ¥ç®ã®æŒã«çµäºãªã®ã§ãã©ã³ãã¯åºãŸããã§ããããªã®ã§å人ã§Shake Shackã«è¡ã£ãŠããŸããã ããŒã¬ãŒã®ã³ã³ããšãèµ€ã¯ã€ã³é Œã¿ãŸããããé
ãé Œãã§ãããšã¯ããã$30è¶
ãã§æ¥æ¬åã§5000å以äžã®èŽ
æ²¢ã©ã³ãã ã«ãžãã«ãŠ æŒã®ãã³ããŒã¬ãŒããè
¹ã«æ®ã£ãŠããŠããè
¹æžããªãã£ãã®ã§ããŒã«ã ãã è² ããŸããã åž°åœ æ©å
é£ ããããããªãæçã§ããã(ã©ã¹ãã¬ã¹ã§é£ã¹ãŠããã®ã倧ååååãããé£ã¹ãŠã¯ããŸãããw) ãããã« ãããã§ããã§ããããïŒã²ãããé£ã¹ããã®è²Œãç¶ããã ãã®ããã°ãªã®ã§ãªããããããã£ãŠæããããããŸããããçé¢ç®ãªèšäºãæžããŠããã®ã§ãã² ãã¡ã ããã芧ãã ããã çŸåšãç§ãã¡ãšäžç·ã«ææŠããŠãã ããã°ã«ã¡ãªãšã³ãžãã¢ãåéããŠããŸããèšäºãªã©èªãã§ãè峿ãããæ¹ãããããããã²ãå¿åãã ããã(ã°ã«ã¡ãããªããŠããå¿åãã ãã) recruit.leverages.jp
ã¯ããã« ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ ãã¯ãããžãŒæŠç¥å®€å®€é·ã®ç«¹äžã§ããæè¡çãªããšã ãã§ãªããããã£ãšããå
容ãã¬ããŒãããããšæã£ãã®ã§ãçŸå°ã®é£ã¹ç©ãã¬ããŒãããããšæããŸããAWS re:Inventã§ã¯é嬿éã®æé£ãæŒé£ãå
šéšåºãŠãå€ãããŒãã£ãŒãªã©ãéå¬ãããŠãããããã€ãã³ãã®æçãäžå¿ã«ã玹ä»ããŠãããŸãã AWS re:Invent忥以å ãŸã å§ãŸã£ãŠããªãã®ã§åæ¥ã¯èªåã§åºãªã©ãæ¢ããŠé£ã¹ã«è¡ããŸãã é£è¡æ© 2é£åºãŸãããChicken or BeafãæåŸ
ããŠãŸããããChicken or PastaãšYakisoba or Omletã§ãããæ®å¿µã§ãã Chicken ãšãYakisobaãéžã³ãŸãã ã©ã³ã Outback Steakã§ã©ã³ãããŸããããããã¹ããŒãã®åœãè¶
èå ããã€ïŒ é£ã¹ãããŸãã(ãã¹ãœã«ã) æ©é
ããŠçªç¶ã®ã¯ã€ãºã§ããããŒã«ãšããŒããžã£ãŒããŒã§ãããã§ãããïŒ çãã¯ãã¡ã(éžæå転ã§èŠããŸã) => çŽ3300å(22$)ã€ã³ãã¬ãšåå®ãã°ã AWS re:Invent 1æ¥ç® æé£ ã¢ã¡ãªã«ã³ãªæãã§ãçããã³ããç¡ãããããšãŒã°ã«ããšãã«ãŒãããããŸããã ã©ã³ã ã©ã³ãã¯ã¡ãã·ã³é¢šã§ã¿ã³ã¹ãªã©ããããŸããããã¶ãŒããæããããªãæºè¶³åºŠãé«ãã äŒå Žã¯Venetianã§é£ã¹ãŸããããæŒé£äŒå Žããã¡ããã¡ãåºãã£ãã§ãã ããšãWynnã§ã¯ã³ãŒã©ãªã©ã®ããªã³ã¯ã眮ããŠãŸãã æ©ãã¯ãïŒ ãšãã¹ã(ã¹ãã³ãµãŒããŒã¹)ã§æ§ã
ãªæçãšãé
ãé£ã¹é£²ã¿æŸé¡ã§ãããçé
ãçæã«ã¹ãã³ãµãŒããŒã¹ãåã£ãŠãŸãã(ãã¡ããç§ã) 2æ¥ç® æé£ æé£ã¯ãçžå€ããããã«ãŒããšçããã³ãæããŸãããã远å ã§æ°çš®é¡ã®ãœãŒã»ãŒãžã ã£ããããããçãããã®ããåµçœãåºãããªã«ããªã©ããããŸãã(egg white frittataãšããæçããïŒ) çããã®ä»¥å€ãåºãã®ã§é£ã¹ãããæããŸããã ã©ã³ã 2æ¥ç®ã¯ãã»ãã·ã§ã³ã®éãããŸãç¡ãã£ãã®ã§ãµã³ãã€ããã®Lanch Boxã«ããŸãããããããäžžã
1åå
¥ã£ãŠããããããããã¢ã¡ãªã«ãæããŸããã ãã€ãããŒãã£ãŒ å€ã¯Datadogãªã©4瀟ãã¹ãã³ãµãŒãããŠãããã€ãããŒãã£ãŒã«ãéªéããŸããã æçã«é¢ããŠããŠã§ã€ã¿ãŒãæºãåã£ãŠãŠãã³ãã§ã¹ã¿ãããªã®ããã²ãšã€ã©ãïŒããšé²ããŠãã圢ã§ããããã®ãããäŒè©±ã«å€¢äžã§é£äºã®æ¹ã¯æ®ãéããŠããŸããŸããããã¿ãŸããã(3æ¥ç®ã§ã¯ã¡ãããšåçæ®ããã®ã§ã容赊ãã䌌ãæãã§ãã) ã¡ãªã¿ã«ããé
ã§ã¯ã€ã³ãé Œããšãwhite/red以å€ã«ã¶ã©ãã®åçš®ã®ç¢ºèªãããŸãããããã»ãã¯ãŒã«ã ãã©ããïŒããšããæ¥æ¬ã ãšã¶ã©ãã®åçš®ãèãããããšãªããŠç¡ãã®ã§æ°é®®ã§ããã 3æ¥ç®~ AWS re:Invent 2023 ã°ã«ã¡çŽè¡ åŸç·š ã«ç¶ããŸãã æåŸã« æ¥å¹Žã¯èªåãAWS re:Inventã«åºãŠçŸå³ãããã¯ããé£ã¹ããïŒãšããæ¹ã¯ããã²äžã®ãªã³ã¯ãããå¿åãã ããã recruit.leverages.jp
ã¯ããã« ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ ãã¯ãããžãŒæŠç¥å®€å®€é·ã®ç«¹äžã§ãã çŸåš AWS re:Invent 2023ã«çŸå°ã©ã¹ãã¬ã¹ã§åå ããŠããŸããçããã«å°ãã§ãæ©ãã©ã¹ãã¬ã¹ã®é¢šãæããŠãããããã«ãææååã®âLLMOps: The lifecycle of an LLMâã»ãã·ã§ã³ã®ã¬ããŒããããã®äŒç€Ÿãããã®ããã°ããæéã§ãå±ãããããšæããŸãã ä»ã®èšäºãèŠããæ¹ã¯ ãã¡ãã®ç®æ¬¡ ããã蟿ããã ããã ã»ãã·ã§ã³æŠèŠ LLMOpsãé²ããã«åœãã£ãŠãE-mailã®ãµããªãŒãèªåã§äœæããã·ã¹ãã ãäŸã«åºããªãããã©ã®ãããªèгç¹ã§ã©ã®ããã«æææ±ºå®ãããããã·ãã¥ã¬ãŒã·ã§ã³ããŸããAWSã®ãµãŒãã¹ãã©ã®ããã«çµã¿åãããŠã·ã¹ãã ãå®çŸã§ãããã®æ§æã®ç޹ä»ããã ã»ãã·ã§ã³ã®å
容 ä»åã¯ãToolingãšãLLMOpsã®æ§ç¯ããã»ã¹ã«ã€ããŠã®è©±ãããŠããã E-mailã®ãµããªãŒãèªåã§è¡ãã·ã¹ãã ãäŸã«ããŠè©±ãããŠããã LLMOpsã«ãããŠãããStart small, think bigãã¯å€§äºã ãŸãã¯ããã ãµããªãŒãäœãéšåããå§ãããã®ã®ãæçµçã«ã¯å人ã®ãã¡ã€ã³ãçè§£ããã·ã¹ãã ãèããŠäœãå¿
èŠããã MLOpsãšLLMOpsãŸãFMOpsã®éãã¯ãªã«ãïŒ ã©ã¡ããã»ãŒãªãŒããŒã©ããããŠãã LLMOpsã«ã¯ã3ã¿ã€ãã®ãŠãŒã¶ãŒãããã Provider: Tuners, Customer ããããå¿
èŠãªã¹ãã«ã泚ç®ç¹ãéã£ãŠãã LLMOpsæ§ç¯ãŸã§ã®ããã»ã¹ãšãæ§ç¯åŸã®æ¹åããã»ã¹ãããã ãŸãã¯æ§ç¯æ®µéã®è©±ãããŠãã ãŸãã¯UseCaseã®åæãå¿
èŠãCriticality, Scale, Task Type, Eloquence, ROIã®èгç¹ã倧ããèãããããä»åã®E-mailã®ãµããªãŒã·ã¹ãã ã®å Žåã¯ã Criticality: Low å
容å€å°éã£ãŠãããšããŠããã¡ãŒã«ã®æ¬æãèªãã°è¯ãã®ã§ãåªå
床ã¯äœã Scale: Low èªåã®ã¡ãŒã«ã®å
¥åã ãã§è¯ããåºåããã®ãŠãŒã¶ãŒã«åããŠã ããªã®ã§ããŒã¿çã«ã¹ã±ãŒã«èŠä»¶ã¯äœã Task Type: Specific ã¡ãŒã«ã®èŠçŽãšããSpecificãªç¯å² Eloquence: Medium æç« çã«èªç¶ã§ããå¿
èŠã¯ããçšåºŠãã ROI: éèŠãçç£æ§ãé«ããããšãã¡ãããšåºæ¥ãå¿
èŠããã LLMã¢ãã«ãéžæãããšãã®å€æè»žãšããŠã¯ä»¥äžã®ãããªç©ãããã ãã®äžã§UseCaseã§éèŠãªé
ç®ãšåªå
床ãèŠç©ãã£ãŠãã ä»åã®E-mailã®ãµããªãŒã·ã¹ãã ã®å Žå㯠Cost > Precision > Speed ãšãªãã ãŸããéåžžã®DeepLearningãªã©ã¯ãã€ããŒãã©ã¡ãŒã¿ãŒãªã©ã®èª¿æŽãšãªãããLLMãGenAIã®å Žåã¯ãããã³ããã®èª¿æŽãšãªã ã¢ãã«ã決å®ãã調æŽãåºæ¥ãããè©äŸ¡ãå¿
èŠã ã¢ãã«ã¯å®ç§ã§ã¯ç¡ãããå€å±€çã«ãå³ã®ãããªããŒãºã¢ãã«ã«ãã£ãŠè©äŸ¡ããèŽåœçãªåé¡ãç¡ããã驿£ã«ãã§ãã¯ããå¿
èŠãããã æ§ç¯ãå®äºããããããšã¯æ¹åã®ã«ãŒããåãå¿
èŠããããæåã®æ§ç¯ã¯S3ããSageMakerã®NoteBookãªã©ãå©çšããBedRokSummaryãæããŠçµæãè¿ãã ã·ã¹ãã åãããåãåã£ãã¡ãŒã«ã®ããŒã¿ã転éããããã宿å®è¡ãåºåãããçµæãã¡ãŒã«ãããQuickSightã«ã€ãªãããã§è©äŸ¡ãå¯èŠåãããªã©ãããããã以äžã®ãããªæ§æã«ãªã æŽã«é²åãããã«ã¯ãOrchestrationãå¿
èŠãšãªã£ãŠãã æåŸã« çŸå°æé 2023/11/27 12:01 æžãäžããŸãããã»ãã·ã§ã³èããªãããªã¢ã«ã¿ã€ã ã§ãŸãšããŠãªãªãŒã¹ããã®ã§ããã£ãšäžçæéã¬ããŒãã«ãªã£ãŠãããšæããŸãã èãæŒããããšãããããã®ã§å®ç§ãªå
容ã§ã¯ãªãéšåããããŸããããäºæ¿ãã ããã çŸåšãç§ãã¡ãšäžç·ã«ææŠããŠãã ãããšã³ãžãã¢ãåéããŠããŸãããèå³ã®ããæ¹ã¯ãã² æ¡çšãµã€ã ãã芧ãã ããïŒ
AWS re:Invent 2023 ã«åŒç€Ÿãšã³ãžãã¢ãçŸå°ã©ã¹ãã¬ã¹ã§åå ããŸããã ã»ãã·ã§ã³ãªã©ã®ã¬ããŒãçã鿿޿°ããŠãããŸãã ãã¡ãã¯ãã®ã¬ããŒããªã©ãžã®ãªã³ã¯ã®ãŸãšãèšäºã§ãã æè¡èšäº AWS re:Invent 2023 - LLMOps: The lifecycle of an LLM ã®(ãããã)äžçæéã¬ããŒã ãã¬ãããã¯LABãAWSéçºæåã®ããŒã¹ãšãªã忣ããŒã : çµç¹æ§é ããã€ãããŒã·ã§ã³ãå éãããä»çµã¿ãAWS re:Invent 2023ã ããããèšäº AWS re:Invent 2023 ã°ã«ã¡çŽè¡ åç·š AWS re:Invent 2023 ã°ã«ã¡çŽè¡ åŸç·š ãããã« çŸåšãç§ãã¡ãšäžç·ã«ææŠããŠãã ãããšã³ãžãã¢ãåéããŠããŸããSREã®åéããããŸãã®ã§ãèšäºãªã©èªãã§ãè峿ãããæ¹ãããããããã²ãå¿åãã ããã recruit.leverages.jp
ã¯ããã« ãããã«ã¡ã¯ãã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã·ã¹ãã æ¬éšã®ç°äžã§ãã ã2022幎11æããæ°èŠäºæ¥ã®ç«ã¡äžãã¡ã³ããŒãšããŠéçºæ¥åã«æºãã£ãŠããã2023幎6æã« ã¬ãã¯ãª ããªãªãŒã¹ããŸããã瀟å
ã§ã¯åãšãªãå€§èŠæš¡ãã€æ±ºæžã䌎ãtoCãµãŒãã¹ã§ãããæ§ã
ãªææŠãããªããéçºãé²ããŠããŸããã ãã¬ãã¯ãªã¯ãããªãã®èªå®
ãã¯ãªããã¯ã«ããããã³ã³ã»ããã«ããªã³ã©ã€ã³ã§èšºçäºçŽã蚺å¯ã決æžãå®çµããèªå®
ã«è¬ãå±ããªã³ã©ã€ã³èšºçãã©ãããã©ãŒã ãµãŒãã¹ã§ãããå»çã®ããæ¹ãå€ããæ¥æ¬ã®å»çã«ãããåé¡è§£æ±ºã®äž»äœè
ãšãªããããšãããã·ã§ã³ãšããææºããŠããå»çæ©é¢ãšé£æºããªãããæ£è
ãšå»çæ©é¢ã®åæ¹ãžã®æé©ãªäœéšãæäŸã§ãããµãŒãã¹ã®å®çŸãç®æããŠããŸãã ãã¬ãã¬ãžãŒãºã§ã¯ãšã³ãžãã¢äžäººã²ãšããèŠä»¶å®çŸ©ãªã©ã®äžæµããå®è£
ãŸã§å¹
åºãæ
åœããããšã¯ãã¡ãããããŒã±ãã£ã³ã°ããã¶ã€ã³ããªãã¬ãŒã·ã§ã³ãªã©æ§ã
ãªé åã®æ¥åã«é¢ããããšããããŸããç¹ã«æ°èŠäºæ¥ã®éçºã«ãããŠã¯ãšã³ãžãã¢ã«éããå°äººæ°ããŒã ã§å§ãŸãããšãå€ãããããšã³ãžãã¢ãšããŠã§ã¯ãªãç«ã¡äžãã¡ã³ããŒãšããŠæ§ã
ãªããšã«äž»äœçã«åãçµãããšãã§ããŸãããã®èšäºã§ã¯æ°èŠäºæ¥ãã¬ãã¯ãªãã®éçºã«ããã£ãŠç§ãåãçµãã ããšã«ã€ããŠã以äžäºã€ã®èгç¹ã§ç޹ä»ããŠãããããšæããŸãã æè¡çåŽé¢ ãããã¯ããããŒãžã¡ã³ãçåŽé¢ ãã¬ãã¬ãžãŒãºã§ã®æ°èŠéçºã§ãšã³ãžãã¢ãã©ã®ããã«æŽ»èºãæé·ã§ããã®ããã©ããªåœ¢ã§è²¢ç®ã§ããã®ããå°ãã§ãã€ã¡ãŒãžãé®®æã«ãªããšå¹žãã§ãã ãµãŒãã¹ãããŒã ã®ç¹åŸŽãããŒã¹ãšããèªç±ãªæè¡éžå® ãæè¡éžå®ãšããã°ãæ°èŠäºæ¥ã®ãããã¯ãéçºã®éã®ééå³ã®1ã€ã ãšæããŸããã¬ãã¬ãžãŒãºã§ã¯æè¡éžå®ã¯åããŒã ã«ä»»ãããŠããã®ã§ãäºæ¥ã®ç¹æ§ãããŒã æ§æãã¡ã³ããŒã®çµéšãªã©ãããŒã¹ã«è¡ãããšãã§ããŸãã ãä»åãã¬ãã¯ãªéçºããŒã ã§ã¯ãæéã§ã®ãªãªãŒã¹ããšãéçºè
äœéšããèããæè¡éžå®ãè¡ããŸãããããŒã çºè¶³ãããªãªãŒã¹äºå®ãŸã§7ã¶æããŸããšçãã£ãããšãããã§ããã ãéçºé床ãåºããããã«ããŸãããŒã ã¡ã³ããŒã®éçºäœéšãã§ããã ãé«ããããšãã§ããããã«ãšããæå³ã§ããã èšèª ãèšèªã¯ããã³ããšã³ããããã¯ãšã³ããšãã« TypeScript ãæ¡çšããŸããã ãéžå®çç±ã¯ããªãäžè¬çãªéšåã«ãªããŸããã 瀟å
ã§ãæšæºæè¡ãšãªãã€ã€ãã å®è£
æã«åãã§ãã¯ãå¹ããŠãšã©ãŒãæªç¶ã«é²ãã ããã³ããšã³ããããã¯ãšã³ãã§åãèšèªã䜿ãã ãããšãæããããŸãã ããã³ããšã³ã ãTypeScriptã§éçºã§ããFWãšã㊠Next.js ãæ¡çšããŸããã ãNext.jsã¯FWã®å€§ããªç¹åŸŽãšã㊠ReactããŒã¹ã§TypeScriptãšã®çžæ§ããã ã¢ããããŒãããªãªãŒã¹ãé«é »åºŠã§ã³ãã¥ããã£ãæŽ»çº ãã£ãã·ã¥æŠç¥ãReact Server Component察å¿ãªã©ãé«ããã©ãŒãã³ã¹ã®ã¢ããªã±ãŒã·ã§ã³ãå®è£
ããããã®ãã¹ããã©ã¯ãã£ã¹ãçšæãããŠãã ãããšãæããããŸãã ããŸããç§èªèº«å
¥ç€ŸããŠãã1幎åNext.jsã䜿ã£ããµãŒãã¹ã®éçºãããŠãããããæ°èŠãããžã§ã¯ããžã®ã¹ã ãŒãºãªå°å
¥ãæåŸ
ã§ããããšããããŸãããä»ã«Next.jsã®çµéšãããããŒã ã¡ã³ããŒã¯ããŸããã§ããããVueãNuxtã®çµéšã¯ãã£ãããé å¿ã«ãã»ã©ã³ã¹ããããããªããšå€æããŸããã æè¡é¢ã®ç¹åŸŽãšããŠã¯ bulletproof-react ããŒã¹ã®ãã£ã¬ã¯ããªæ§æ featuresãã£ã¬ã¯ããªå
ã§æ©èœããšã«åããããšã§ãæ©èœéã®çµåãé¿ããŠç¡é§ãªå
±éåãèããã«éçºé床ãé«ããããšãã§ãã GraphQL Code Generator ãš Apollo Client ãçµã¿åãããŠããŒã¿ååŸãå®è£
ããã¯ãšã³ãã®ã¹ããŒãå®çŸ©ããåãçæã§ãã èªåçæãããApollo Clientã®Hooksã䜿ã£ãŠããŒã¿ååŸåŠçããã£ãã·ã¥ç®¡çã®å®è£
å·¥æ°ãåæž App Routerãäžéšå°å
¥ v13.4ã§stableã«ãªã£ãããšãåããäžéšã®æ©èœã§App Routerãæ¡çš ãšãã£ãå
·åã§ãã ããã¯ãšã³ã/API ãTypeScriptã§éçºã§ãã NestJS ãAPI㯠GraphQL ãæ¡çšããŸããã ãNestJS㯠TypeScriptã§éçºãããFW GraphQLãšçžæ§ããã ExpressïŒãããã¯FastifyïŒãããŒã¹ã§å®è£
ææ³ãè¿ã æ¡åŒµæ§ãæ®ãã€ã€ãFWãšããŠã»ããæ©èœãäžéãæã£ãŠãã ããšãã£ãç¹åŸŽããããŸããç§èªèº«ã¯TypeScriptã§ã®ããã¯ãšã³ãéçºçµéšãã»ãšãã©ãªããExpressãå°ãè§Šã£ãããšãããçšåºŠã§ããããããã¥ã¡ã³ããå
å®ããŠããŠå®è£
æ¹æ³ã«çãããŸããªãã®ã§ã¹ã ãŒãºã«å®è£
ã«å
¥ãããšãã§ããŸããã ãGraphQL㯠åäžã®ãšã³ããã€ã³ãã§1ãªã¯ãšã¹ãããè€æ°ãªãœãŒã¹ãååŸã§ãã ååŸããå
容ãããã³ããšã³ãã§æå®ã§ãã ããã¯ãšã³ãã§å®çŸ©ããã¹ããŒããåãšããŠãã®ãŸãŸããã³ããšã³ãã§äœ¿ãããšãã§ãã ãç¹åŸŽããããããŒãžæ°ãå€ããåãããŒã¿ãè€æ°ç®æã§äœ¿ã£ããå°ã圢ãå€ããŠååŸããããããããã¯ãã®ç¹æ§ã«ãã£ããããŠãããšå€æããŸããããŸããããã¯ãšã³ããšããã³ããšã³ãã§åãäžèŽããããšã¯éçºè
äœéšãéåžžã«åäžããããã®ãšãªããŸããã æè¡é¢ã®ç¹åŸŽãšããŠã¯ ãªããªã³ã¢ãŒããã¯ãã£ããŒã¹ NeverThrow ã䜿ã£ãŠåå®å
šã«ãšã©ãŒãã³ããªã³ã° try-catchã§ãšã©ãŒã«åãã€ããªãåé¡ãResultåãè¿ãããšã§è§£æ¶ãã ORMãšã㊠Prisma ãæ¡çš å€æ©èœã§ã¯ãªãããçŽæçã§å®è£
ãç°¡åãªNode.jsçšã®ORM GraphQLã®N+1åé¡ãè§£æ¶ããŠããã ãšãã£ãå
·åã§ãã 瀟å
ã¹ã¿ããåãCMS ãèšäºãªã©ã®åçã³ã³ãã³ãã®ç®¡çã«ã¯ Strapi ãšããHeadless CMSãæ¡çšããŸããã ãHeadless CMSãšãããšããŸãèããããšããªãã£ãããç¥ã£ãŠããŠã䜿ã£ãããšã¯ãªãæ¹ãå€ããããããŸãããã衚瀺éšåïŒHeadïŒä»¥å€ã®ç®¡çç»é¢æ©èœãããŒã¿é
ä¿¡æ©èœïŒAPIïŒãåãããã®ã§ããSEOæµå
¥ç²åŸã®ããã«èšäºããŒãžãå±éããäžã§CMSã®éçºã¯å¿
é ã§ããããªãœãŒã¹ãä¿å®ãèããŠ0ããã®èªäœã¯é¿ãããã£ããããã«ã¹ã¿ãã€ãºæ§ã¯ç¢ºä¿ãã€ã€å®è£
ãæå°éã«æããããCMSãæ¢ããŠããŸããã ãStrapi㯠TypeScriptã«å¯Ÿå¿ããŠãã ãªãŒãã³ãœãŒã¹ãªã®ã§ç¡æã§æ§ç¯ã§ãã REST apiãGraphQL apiãã©ã¡ããå©çšå¯èœ ããšããç¹åŸŽããããŸããèªåã§ç°å¢æ§ç¯ãå¿
èŠã§ã¯ãããŸãããæéãããããã³ãŒããæžãã°ç°¡åã«ã«ã¹ã¿ãã€ãºãæ¡åŒµãã§ããç¹ããStrapiãéžæããŸããã ãStrapiã«ã€ããŠè©³ããæžããšé·ããªãã®ã§çç¥ããŸããã瀟å
å©çšã«å¶éãããŠããŠæ©èœãæäœéã®ç®¡çç»é¢ãšAPIãå¿
èŠãªçšåºŠã ã£ããããæ³å®ãããæè»œã«éçšã«æã£ãŠããããšãã§ããŸããã å€éšãµãŒãã¹ ãèªèšŒã«é¢ããŠã¯ãæåãªIDaaSãšã㊠Cognito ã Auth0 ã Firebase Authentication ããããŸãã æéãæ¯èŒçå®ã Firebase Authentication < Cognito < Auth0 ã€ã³ãã©ãAWSã§æ§ç¯ããŠããã®ã§èŠªåæ§ãé«ã ã»ãã¥ãªãã£çãªæžå¿µãããŸããªã Firebase Authenticationã«ã¯ ç»é²ããŠãããŠãŒã¶ãŒãç¹å®ã§ããåé¡ ããã ãšãã£ãç¹åŸŽããCognitoãæ¡çšããŸãããããã³ããšã³ãã¯Amplifyãšçµã¿åãããããšã§ç°¡åã«å®è£
ã§ããã®ãšããµãŒããŒã®åŠçãAWS Admin SDKã䜿ã£ãŠã·ã³ãã«ã«å®è£
ãå¯èœã§ããããŸããAWSã§ã€ã³ãã©ãæ§ç¯ããŠããã®ã§æš©éåšãã®èšå®ã楜ã«è¡ãããšãã§ããŸãããCognitoãšAmplifyãåãããå®è£
ã«ã€ããŠã¯ å¥ã®ã¹ã©ã€ã ã§ç°¡åã«èª¬æããŠããã®ã§ãã¡ããåãããŠã芧ãã ããã ãæ±ºæžãã©ãããã©ãŒã 㯠Stripe ãæ¡çšããŸãããå®è£
ãããµãŒãã¹ããããã¯ãã®ç¹åŸŽã«ãã£ãŠå€§ããå€ãã£ãŠããã®ã§äžæŠã«ã¯ãããŸããããStripeã¯APIãå
å®ããŠããéçºè
åãã®ããã¥ã¡ã³ããè±å¯ãªãããé«ãã«ã¹ã¿ãã€ãºæ§ãæ±ããå Žåã«éåžžã«çžæ§ãããã§ãã ãŠãŒã¶ãŒäœéšã第äžã«èããŠãµãŒãã¹èšèšãäž»å° ãæè¡éžå®ã¯ãã¡ããã§ãããæ°èŠäºæ¥ã®ç«ã¡äžãã¡ã³ããŒãšããŠãµãŒãã¹èšèšãäž»å°ããŸããããªã³ã©ã€ã³èšºçäºæ¥ãšããŠã¯å€§ããªç«¶åã2瀟ãããŸããããããã®ãµãŒãã¹ã®æ©èœããããŒãåæããäžã§å¿
èŠãªæ©èœãæŽãåºããããè¯ããŠãŒã¶ãŒäœéšãå±ããããã«ã©ããããããããã©ã®æ©èœãã¯ãªãã£ã«ã«ã§åªå
ãã¹ãããæŽçããŸããããããŠãæé©ãªãŠãŒã¶ãŒäœéšã第äžã«ãµãŒãã¹èšèšãäž»å°ããŸããã ãããã§ã¯ç¹ã«èšèšã«å·¥å€«ãããtoCã®ã¡ãŒã«ã¢ãã¬ã¹èªèšŒãštoBã®èšºçç»é¢ã«ã€ããŠç޹ä»ããŸãã ã¡ãŒã«ã¢ãã¬ã¹èªèšŒ ãã¡ãŒã«ã¢ãã¬ã¹èªèšŒèªäœã¯æ©èœãšããŠäžè¬çã§ããã瀟å
ã®ä»ãµãŒãã¹ã§ã¯å°å
¥ããŠãããã®ãå°ãªããå°å
¥ããŠCVRãäžãã£ãäŸããã£ããããã¡ãŒã«ã¢ãã¬ã¹èªèšŒãå
¥ããã¹ããã©ããã®è°è«ããã¹ã¿ãŒãããŸããã ãã¬ãã¯ãªã¯åºæ¬çã«ç»é²ããã¡ãŒã«ã¢ãã¬ã¹ã䜿ã£ãŠãŠãŒã¶ãŒãšãµãŒãã¹åŽãã³ãã¥ãã±ãŒã·ã§ã³ããšãå Žé¢ãå€ãããã°ã€ã³æã®IDãšããŠã䜿çšããå Žåãããã®ã§ã¡ãŒã«ã¢ãã¬ã¹ãååšããªãã£ãã誀ã£ãŠå
¥åãããŠããŸãããšã¯ãµãŒãã¹éå¶äžå€§ããªéå£ãšãªããŸãããŸããã»ãã¥ãªãã£é¢ã§ããªãããŸãã第äžè
ã«ã¡ãŒã«ãå±ããŠããŸããªã¹ã¯ã«ã€ãªãããŸããå»çã«é¢ä¿ãããµãŒãã¹ã§ãããããå蚺æŽãå蚺ã®åçå
å®¹ãæµåºããŠããŸããšå€§ããªåé¡ã«ãªã£ãŠããŸããŸãããŠãŒã¶ãŒã«å®å
šã«ãµãŒãã¹ã䜿çšããŠãããããã«ãã¡ãŒã«ã¢ãã¬ã¹èªèšŒã¯æå¹ãªææ®µã§ããã ããšã³ãžãã¢ãšããŠã¯ã»ãã¥ãªãã£ãªã¹ã¯ãæå°éã«æããããã«ã¡ãŒã«ã¢ãã¬ã¹èªèšŒãå¿
èŠãšå€æããŸããããäºæ¥ãµã€ãã®CVRã«ãããæžå¿µããã以äžãã»ãã¥ãªãã£ãªã¹ã¯ã説æããŠçè§£ãåŸãå¿
èŠããããŸãã以äžã®ãããªãããŒãã£ãŒããäœæãããªã¹ã¯ãæå°éã«æããããã®ãã¿ãŒã³ã«ã€ããŠæç€ºããäžã§ãèªèšŒãæããã€ã³ããšããŠã©ãããã¹ããè°è«ãããŸããã ãã¬ãã¯ãªã«ã¯è€æ°ã®æ©èœããããŸããå
šãŠèšºçã®äºçŽãèµ·ç¹ãšãªããŸããèšãæãããšèšºçãäºçŽãããŸã§ã¯æµåºãã¯ãªãã£ã«ã«ã«ãªããããªæ
å ±ããªãããŸãæ©äŒã¯ãªãããã蚺çäºçŽãå®äºãããŸã§ã«ã¡ãŒã«ã¢ãã¬ã¹ãèªèšŒã§ããŠããã°æäœéã®ã»ãã¥ãªãã£èŠä»¶ãæºããããšãã§ããŸãããŠãŒã¶ãŒç»é²ã«å¿
èŠãªæ
å ±ãç»é²ããŠããããæåŸã«äºçŽã確å®ããã¿ã€ãã³ã°ã«ã¡ãŒã«ã¢ãã¬ã¹èªèšŒãèŠæ±ããã¹ãããã«å·¥å€«ããŸããã toB蚺å¯ç»é¢ ã蚺å¯ãè¡ãå»åž«ãã¯ãªããã¯ã®äºåäœæ¥ãè¡ãã¹ã¿ããã䜿çšããç»é¢ãtoBç»é¢ãšåŒãã§ããŸããtoBç»é¢ã蚺å¯ã®äžèŠ§è¡šç€ºã蚺å¯ãè¬ã®çºéã«é¢ããç»é¢ãªã©è€æ°ã®æ©èœãååšããŠããŸãããäºæ¥ã®ç¶æ³ãããŒã æ§æã«ãã£ãŠãŠãŒã¶ãŒãå€åããå¯èœæ§ããããŸããäŸãã°äžäººã§èšºå¯ããçºéãŸã§è¡ãå Žåãšãäœæ¥ãè€æ°äººã§åæ
ããå Žåã§ã¯å°ç·ã¯ãã¡ããå¿
èŠãªç»é¢ã®çš®é¡ãæ°ãŸã§å€ãã£ãŠããŸãããã®ãããé客ããµãŒãã¹éå¶ãå®å®ããŠãããŸã§ã«çްãã倿Žãç°¡åã«ã§ããããã«ãããŸãäœã蟌ãŸãã«æäœéã®æ©èœãçšæããŠãªãªãŒã¹ããããšãç®æããŸããã ãåæã®ã¹ã³ãŒãã¯å»åž«ãå
šãŠå¯Ÿå¿ããã®ãåºæ¬ç·ãšããŠãææºã¯ãªããã¯ã®å»åž«ã«ãã¢ãªã³ã°ãããªããèšèšããŸãããå»åž«ãæ®æ®µã®èšºå¯æã«äœ¿ã£ãŠããã·ã¹ãã ã«ã€ããŠç¥èŠã®ããã¡ã³ããŒãã»ãšãã©ãããããªãã¡ã¬ã³ã¹ããªããªãèŠã€ãããã«é£ããã¿ã¹ã¯ã§ããããé©å®ç»é¢ã®æ§æãæ©èœã«ã€ããŠããåããããããããã¿ã€ããè§Šã£ãŠããã£ãŠãã£ãŒãããã¯ãåããªããé²ããŸããã ãçŸåšã¯CSããŒã ãèšçœ®ãããããäœæ¥è
ã®åæ
ããã£ãããšäºæ¥ã®ç¶æ³ãå€ãã£ãŠããŠããŠãåæã¯ã¹ã³ãŒãããå€ããŠããæ€çŽ¢æ©èœãå©çšã·ãŒã³ã«ãã£ã圢ã§å®è£
ããããšæ¥ã
ã¢ããããŒããè¡ãããŠããŸãã ä»åŸã®èª²é¡ ãæåŸã«ä»åŸã®èª²é¡ãšããŠåãçµãã§ããããããšã«ã€ããŠã玹ä»ããŸãã éçºçµç¹ã®äœå¶æŽå ãããŒã çºè¶³ãããšã³ãžãã¢æ£ç€Ÿå¡2å+æ¥åå§èšæ°åã§éçºãç¶ããŠãããåæã¹ã³ãŒãã§ã¯ãããããå
šãŠèšèšããŠããé²ãããŠã©ãŒã¿ãŒãã©ãŒã«ã®åœ¢ã§éçºããŠããŸãããçŸåšã¯ããŒã ã¡ã³ããŒãåŸã
ã«å¢ããè€æ°æ©èœã䞊è¡ããŠèšèšãéçºããªãªãŒã¹ããã¢ãžã£ã€ã«éçºã«è¿ã圢ã«ãªã£ãŠããŸãããæŽåãããŠããããã§ã¯ãªãã®ã§ã¿ã¹ã¯ã®ç®¡çå·¥æ°ã®å¢å€§ãããŒã ãšããŠããã©ãŒãã³ã¹ãæå€§åã§ããŠããŸããã瀟å
ã§å°å
¥ããŠããããŒã ãå€ãã¹ã¯ã©ã éçºãå«ããŠãæ©èœéçºãé²ããªããéçºçµç¹ã®äœå¶ãæŽåããŠãããããšèããŠããŸãã ãããã¯ããšããŠç«¶åã«å¯Ÿããåªäœæ§ã®ç¢ºç« ãã¬ãã¯ãªã¯ãªã³ã©ã€ã³èšºçãµãŒãã¹ã®äžã§ã¯åŸçºã«ãªããããçŸåšã¯ç«¶åã®ã¬ãã«ã«è¿œãã€ãããã®æ©èœéçºãäžå¿ã«ãªã£ãŠããŸããçå®ã«æ©èœéçºãé²ãã§ããŠããã幎å
ã«ã¯æ©èœãšããŠç«¶åã«éè²ãªãç¶æ
ã«ãªãèŠéããšãªã£ãŠãããããä»åŸã¯è¿œãã€ããå
ã§åžå Ž1äœããšãããã«ãããã¯ãã®åŒ·ã¿ã䌞ã°ããŠããå¿
èŠããããŸããå
·äœçã«ã¯ãäºçŽããªã³ã©ã€ã³ã§ã®èšºå¯ãšãã£ãåºæ¬æ©èœã ãã§ãªããå»è¬åã®æçšããªãã€ã³ããããæçšã®äžã§ã®å¯äœçšãžã®äžå®ããµããŒãã§ãããããªæ©èœãã蚺å¯ã®çµæãèªãã®å¥åº·ç¶æ
ã確èªã§ããæ©èœãªã©ããããã¯ããšããŠäœåºŠã䜿ã£ãŠãããããããªä»çµã¿ãäœã£ãŠããããã«ãããžãã¹ãµã€ãã«é£ã蟌ãã§äºæ¥æé·ã«è²¢ç®ããŠãããããšèããŠããŸãã ãããã« ãæåŸãŸã§ãèªã¿ããã ãããããšãããããŸãããã¬ãã¯ãªãäžçªéžã°ããæé«ã®ãµãŒãã¹ã«ããŠããããšãç®æããŠããããã®èª²é¡ã«åãçµã¿ããã匷ãéçºçµç¹ãäœã£ãŠãããããšèããŠããŸããçŸåšãç§ãã¡ãšäžç·ã«ææŠããŠãã ãããšã³ãžãã¢ãåéããŠããŸãããèå³ã®ããæ¹ã¯ãã² æ¡çšãµã€ã ãã芧ãã ããïŒ
ã¯ãã㫠以åã®ããã¯ããã°ãŸã§ã«ãã£ãããšãšèª²é¡ å課é¡ãšãã®è§£æ±ºçã®åæ ç¹åŸŽéã®åå©çšæ§ã®äœã åŠç¿ã«ãããæéã®é·æå åäžã¢ãã«ãããã€ãããŒããæŽåãããŠããªã ãã€ãã©ã€ã³å®è¡ã®ç
©éå PoCããã·ã¹ãã ãžã®åæå°å
¥ã®ãªãŒãã¿ã€ã ã®é·æå ãããŸã§ã®åãçµã¿ ç¹åŸŽéã®åå©çšæ§ã®äœã åŠç¿ã«ãããæéã®é·æå åäžã¢ãã«ã®ãããã€ãããŒããæŽåãããŠããªã ãã€ãã©ã€ã³å®è¡ã®ç
©éå ããããããããããš ãŸãšã ã¯ããã« ããã¯ãããžãŒæŠç¥å®€MLOpsããŒã ã®å€è³ã§ããMLOpsããŒã ã§ã¯ãã¬ã³ã¡ã³ããšã³ãžã³ã®MLOpsåºç€ã®æ§ç¯ããAWS Personalizeãªã©ã®MLãµãŒãã¹ãLLMãªã©ML掻çšããäŒç»ããæ§ç¯ãŸã§é²ããŠããŸããæ¬ããã¯ããã°ã§ã¯åè
ã®MLOpsåºç€æ§ç¯ã®åãçµã¿ã玹ä»ããŸãã ã 以åæçš¿ããããã¯ããã° ã«ããããã«ãAWS SageMakerãšStep Functions Data Science SDKãå°å
¥ããããŒã¿ãµã€ãšã³ãã£ã¹ãäž»å°ã®MLã¢ãã«æ¹åãããŒãæ§ç¯ã§ããŸããããããããŽãŒã«ãšããããã§ã¯ãªãããŸã ãŸã æ¹åã®äœå°ããããŸããã ãããã§ãæ¬ããã¯ããã°ã§ã¯ã課é¡ã®æŽãåºããåæã解決ã®ããã®åãçµã¿ã玹ä»ããŸããããããMLOpsãè¡ãèæ¯ã¯ ä»¥åæçš¿ããããã¯ããã°ã®ãèæ¯ã ã«èšèŒããŠããã®ã§ãèå³ããæ¹ã¯ã確èªãã ããã 以åã®ããã¯ããã°ãŸã§ã«ãã£ãããšãšèª²é¡ ããŸãåæãšããŠãä»ãŸã§ã®MLOpsã·ã¹ãã æ§æãç¥ãå¿
èŠããããŸããäžèšã®ãããªæ§æã«ãªã£ãŠããŸãã説æã®éœåäžãå³ãæžãçŽããŠããŸãããæ§æã¯äžç·ã§ãã ãäžé£ã®MLããã»ã¹ããã€ãã©ã€ã³åãããŠãããããããŒã¿ãµã€ãšã³ãã£ã¹ãäž»å°ã§ã¢ãã«æ¹åãããŒãå®è¡ã§ããŸãããŸããåŠç¿-æšè«æã§ååŠçãå
±éåããŠãããããTraining-Serving Skewãæ¹ååºæ¥ãŠããŸãã ãäžæ¹ã§èª²é¡ãããã€ããããŸããã ç¹åŸŽéäœæ ç¹åŸŽéãåå©çšã§ããªã åŠç¿ïŒéçºæãåŠç¿ãã€ãã©ã€ã³ïŒååŠçããè©äŸ¡ãŸã§ïŒã®å®è¡æéãé·ã ãããã€ïŒåäžã¢ãã«ã®ãããã€ãããŒããæŽåãããŠããªã å
šäœ ãã€ãã©ã€ã³å®è¡ã®è€éå PoCããã·ã¹ãã ãžã®åæå°å
¥ã®ãªãŒãã¿ã€ã ãé·ã å課é¡ãšãã®è§£æ±ºçã®åæ ãå課é¡ãåæããå¿
èŠãªè§£æ±ºçã説æããŸãã ç¹åŸŽéã®åå©çšæ§ã®äœã ãçŸç¶S3ã«ç¹åŸŽéãåºåããŠããŸããS3ã«ç¹åŸŽéãæ ŒçŽããŠããå Žåãäœæè
以å€ã®äººãç¹åŸŽéã®å©çšã倿ããã®ãé£ãããªããŸããçç±ã¯ãS3ã«ã¯ç¹åŸŽéã®ã¡ã¿ããŒã¿ç®¡çãããŒãžã§ã³ç®¡çã®æ©èœããªãããã§ãããããã®æ©èœããªãç¶æ
ã§äœæè
以å€ã®äººãå©çšå€æããããã«ã¯ããã®ç¹åŸŽéãä¿¡é Œã§ããããŒã¿ãœãŒã¹ããæ£ãã倿åŠçã«ããäœãããŠãããããœãŒã¹ã³ãŒãããèªã¿è§£ã確èªãããã®çµæäœãããç¹åŸŽéãæ£ãããã確èªããå¿
èŠããããŸãã ãããã§ãç¹åŸŽéã®ã¡ã¿ããŒã¿ç®¡çæ©èœãããŒãžã§ã³ç®¡çæ©èœãæã£ãããŒã¿ã¹ãã¢ã«æ ŒçŽããå¿
èŠããããŸãã åŠç¿ã«ãããæéã®é·æå ãåŠç¿ãã€ãã©ã€ã³ã®å®è¡ã«ããåäœç¢ºèªã«æéãããã£ãŠããŸãããçç±ã¯2ã€ãããŸãã äžèŠãªã¹ããããå®è¡ããããããäŸãã°ãè©äŸ¡ã®åŠçã倿Žããå Žåãè©äŸ¡ã¹ãããã®ã¿å®è¡ãã¹ãã§ãããååŠçã¹ãããããå®è¡ããŠããŸããŸãã SageMaker Processingã®èµ·åã«æéããããããã1ã€ããã5åçšåºŠããããããå
šãŠå®è¡ãããšèµ·åã ãã§15åçšåºŠããããŸãã ããããã®èª²é¡ã解決ããããã«ã¯ãå¿
èŠãªã¹ãããã ãå®è¡ããèµ·åæéãæžããå¿
èŠããããŸãã åäžã¢ãã«ãããã€ãããŒããæŽåãããŠããªã ãåäžã¢ãã«ã®ãããã€ã®ã¿å®è£
ããŠãããè€æ°ã¢ãã«ã®ãªã³ã©ã€ã³è©äŸ¡ã®ä»çµã¿ãçšæãããŠãããŸããã§ããããã®ãããè€æ°ã¢ãã«ã®ãããã€ãšãããã®ãªã³ã©ã€ã³è©äŸ¡ã®ä»çµã¿ãå¿
èŠã§ãã ãã€ãã©ã€ã³å®è¡ã®ç
©éå ããããã€ãã€ãã©ã€ã³ä»¥å€ã®åäœç¢ºèªæé ãç
©éã§ãããäŸãã°ãã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãç¹åŸŽé倿åŠçã倿Žããå Žåãäžèšã®äœæ¥ãå¿
èŠã§ããã åäœç¢ºèªçšã®AWSãªãœãŒã¹ãäœæïŒããŒã¿ååŸãã€ãã©ã€ã³ãS3ãã±ããïŒ Dockerã€ã¡ãŒãžã®buildãšpush åäœç¢ºèªçšã®ããŒã¿ååŸãã€ãã©ã€ã³å®è¡notebookãå®è¡ 倿Žãããã³ã«ãåäœç¢ºèªæé ãå€ããã®ã¯èªç¥è² è·ãé«ãäžãå¯Ÿå¿æŒããçºçããŸããå ããŠã倿Žç®æã«ãã£ãŠã¯ãAWSãªãœãŒã¹ã¯ä»ã®ãã€ãã©ã€ã³ãLambdaã®äœæãå¿
èŠã«ãªããŸãããããã®èª²é¡ã解決ããã«ã¯ã倿Žç®æã«ãããªãåäœç¢ºèªææ®µãå¿
èŠã«ãªããŸãã PoCããã·ã¹ãã ãžã®åæå°å
¥ã®ãªãŒãã¿ã€ã ã®é·æå ãã¬ã³ã¡ã³ããããžã§ã¯ããäžèšã®ããã«é²ããŠããŸããã ãMLOpsãšããŠæåªå
ã§è§£æ±ºãããã®ã¯ãSageMakerãžã®èŒãæ¿ãã®é·æåã§ããé·æåããŠããçç±ã¯2ã€ãããŸãã ãããžã§ã¯ãããšã«äžããã€ã³ãã©æ§ç¯ããŠãããã PoCåŸã«MLãšã³ãžãã¢ãæ§ç¯ãããã€ãã©ã€ã³ã«èŒãæ¿ããŠãããã ãç¹ã«åŸè
ã®å·¥æ°ã倧ãããPoCã§ã¯PoCåŸã®ç§»æ€ãæ³å®ããã³ãŒããæžããŠããããã¹ãã²ããã£ã³ãŒãã®ãããªç¶æ
ã§ç§»è¡ã倧å€ã§ãããå ããŠãèŒãæ¿ãã«ããããããŒã¿ãµã€ãšã³ãã£ã¹ããšMLãšã³ãžãã¢ã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããããã£ãŠããŸããã ããããã®èª²é¡ã解決ããããã«ã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ãã®éçºã¹ããŒããèœãšãããäœã£ãã¢ãã«ããã®ãŸãŸã·ã¹ãã ã«çµã¿èŸŒãããããªåºç€ãå¿
èŠã«ãªããŸãã ãããŸã§ã®åãçµã¿ ãäžèšèª²é¡ã®äžã§å®éã«åãçµãã ããšã玹ä»ããŸããç¹åŸŽéã®åå©çšæ§ã«ã€ããŠã¯Feature Store + Dataflowã®æ€èšŒãŸã§ã«ãªããŸããããä»ã®èª²é¡ã¯ããçšåºŠè§£æ±ºã§ããŸãããFeature Store + Dataflowã®æ€èšŒã«ã€ããŠã玹ä»ããŸãã ç¹åŸŽéã®åå©çšæ§ã®äœã ãAWS SageMaker Feature StoreãšGoogle Cloud Dataflowãéžæããæ€èšŒãé²ããŠããŸããAWS SageMaker Feature Storeãæ¡çšããçç±ã¯äžèšã®éãã§ãã ç¹åŸŽéã®ããŒãžã§ã³ç®¡çæ©èœãã¡ã¿ããŒã¿æ©èœããããç¹åŸŽéã®åå©çšæ§ãé«ãããããã Google Cloud Dataflowãæ¡çšããçç±ã¯äžèšã®éãã§ãã ããŒã¿å€æŽåŸããªã¢ã«ã¿ã€ã ã«ç¹åŸŽéã«å€æããŠæ ŒçŽãããã pandasäºæã®APIããµããŒãããŠãããããŒã¿ãµã€ãšã³ãã£ã¹ããæ±ãããã ä»ããŒã ã§RDSããBigQueryã«ETLåŠçããããã«Google Cloud Dataflowãå°å
¥äºå®ã§æè¡ãæšæºåãããã ãçŸåšã¯äžèšã®æ§æã®æ€èšŒãé²ããŠããŸãã çœæãéšåã®å®è£
ã¯æŠãå®äºããã®ã§ãããããæ€èšŒ / æ¬çªç°å¢ã«ãããã€ãåé¡ããªãã確èªããŠãããŸããåé¡ããªããã°ã皌åäžã®ã¬ã³ã¡ã³ããããžã§ã¯ãã«ãå°å
¥ããŠããäºå®ã§ãã åŠç¿ã«ãããæéã®é·æå ãSageMaker Pipelinesãå°å
¥ã解決ããŸãããå°å
¥ããçç±ã¯äžèšã®éãã§ãã ãã£ãã·ã¥ã¢ãŒããååšããäžèŠãªã¹ãããã®å®è¡ãã¹ãããã§ãããã ããŒã«ã«ã¢ãŒããååšããSageMaker Processing Jobã®èµ·åæéãççž®ã§ãããã åŠçã倿Žããã¹ãããã®ã¿å®è¡ã§ããã®ã§ãæå°éã®å®è¡æéã«ã§ããŸããã åäžã¢ãã«ã®ãããã€ãããŒããæŽåãããŠããªã ãè€æ°ã¢ãã«ããããã€ã§ããããã«ããæšè«ãšã³ããã€ã³ãã§ããSageMaker Endpointã®å段ã«é
眮ããŠãããã£ãã·ã¥ãµãŒããŒã«ãã©ãã£ãã¯ãæ¯ãåããåŠçãå®è£
ããŸããããªãããã©ãã£ãã¯ãæ¯ãåããéã¯ããŠãŒã¶ãŒã«å¯ŸããŠæšè«ããã¢ãã«ãåºå®ããŸããã ããŸãããŠãŒã¶ãŒããšã«ã¢ãã«ãåºå®ããçç±ã¯äžèšã®éãã§ãã ãŠãŒã¶ãŒãå°æãããªããããã¬ã³ã¡ã³ãæ©èœã䜿ããã³ã«çµæãå€ãããšããŠãŒã¶ãŒãæ··ä¹±ããããã åæãç°¡åã«ããããããããã©ãã£ãã¯ãã©ã³ãã ã«æ¯ãåãããšãã©ã®ã¢ãã«ãæšèŠããã远ãå¿
èŠããããŸãããã®æ¹æ³ããã¯ãABãã¹ãæéå
ã§ãŠãŒã¶ãŒããšã«ã¢ãã«ãåºå®ããæ¹ãã·ã³ãã«ã§åæãããããšå€æããŸããã ãæ¬¡ã«ããã£ãã·ã¥ãµãŒããŒã«å®è£
ããçç±ã¯ãSageMaker Endpointã®ãã©ãã£ãã¯æ¯ãåãæ©èœã¯ã©ã³ãã ãªæ¯ãåããããªãããŠãŒã¶ãŒããšã«ã¢ãã«ãåºå®ã§ããªãããã§ãããã®ãããSageMaker Endpointã®å段ã®ãµãŒããŒã«æ¯ãåãããžãã¯ãå®è£
ããŸããã ãã€ãã©ã€ã³å®è¡ã®ç
©éå ãã©ã®ãã¡ã€ã«ã倿ŽããŠããGithub Actionsã¯ãŒã¯ãããŒãåããã°åäœç¢ºèªã§ããããã«ããŸãããå ããŠãModel Registryã«ç»é²ãããè©äŸ¡çµæãæ¿èªãã察象ã®ã¢ãã«ããããã€ã§ããããã«ããŸããã ãGithub Actionsã¯ãŒã¯ãããŒã¯Dockerã€ã¡ãŒãžã®buildãšpushãLambda颿°ã®äœæ / æŽæ°ãããŒã¿ååŸãšåŠç¿ãã€ãã©ã€ã³ãäœæ / æŽæ°ãå®è¡ããŸããã©ãã倿ŽããŠãããã®ã¯ãŒã¯ãããŒãåããã°ç¢ºèªã§ãããããèªç¥è² è·ãæžãããŸãããå ããŠãå¿
èŠãªæã®ã¿Dockerã€ã¡ãŒãžã®æ§ç¯ãLambda颿°ã®æŽæ°ãå®è¡ããŠãããããäžèŠãªå®è¡æéã¯ãããŸããã ãModel Registryã«ç»é²ãããã¢ãã«ãæ¿èªãããããã€ãã€ãã©ã€ã³ãå®è¡ããŸãããã®ãããªãããŒã«ããŠãçç±ã¯ã人éãè©äŸ¡çµæã確èªããŠãããããã€ãããããã§ãããã ãããã®å€æåºæºãæç¢ºãªã«ãŒã«ã«ã§ãããªãã°ãGithub Actionsã¯ãŒã¯ãããŒã§ãããã€ãŸã§å®è¡ããŠãè¯ããšèããŠããŸãã ããããããããããš ãçæçã«ã¯ãã¬ã³ã¡ã³ããããžã§ã¯ãã®éçºå¹çãé«ããããã«ã解決ã§ããŠãªã課é¡ã解決ãããã§ãã ç¹åŸŽéãä»ãããžã§ã¯ãã§åå©çšã§ããªã Feature Store + Dataflowãæ¬æ Œå°å
¥ãããã§ããããã©ãŒãã³ã¹ã«åé¡ãç¡ãããšã確èªãããä»ã®æ©èœãšã®åªå
床ã®å
Œãåããªã©ãããŸãããå®çŸããŠããããã§ãã PoCããã·ã¹ãã ãžã®åæå°å
¥ã®ãªãŒãã¿ã€ã ã®é·æå MLOpsãã¬ãŒã ã¯ãŒã¯ã®æ§ç¯ããŸãã¯ãæšæºæ§æã®ãã³ãã¬ãŒãåãªã©ã§ççž®ããããã§ããPoCããæ®µéããSageMakeräžã§éçºããããšã§ãSageMakerç§»è¡ã®å·¥æ°ãç¡ããããã§ãã ãé·æçã«ã¯ãéçºå¹çã ãã§ãªããããžãã¹ãµã€ããã¬ã³ã¡ã³ããäºæ¥ã«äžãã圱é¿ãçŽæçã«åããããã«ããããžãã¹ãµã€ããšããŒã¿ãµã€ãšã³ãã£ã¹ãã®ã³ãã¥ãã±ãŒã·ã§ã³ãå¹çåãããã¬ã³ã¡ã³ãã®ç²ŸåºŠæ¹åã¹ããŒããåäžããããã§ãã ãŸãšã ã以åã®ããã¯ããã°å·çæã®èª²é¡ãšè§£æ±ºã®ããã«ãææ¡ãå®è¡ããåãçµã¿ã玹ä»ããŸããããŸã Googleãæå±ãã MLOps ã¬ãã«1 ã«éããŠãªãã§ããã䜿ãåæãæ¹åããŠããå¿
èŠããããŸããå ããŠãä»åã¯ç޹ä»ã§ããŸããã§ããããML掻çšãæšé²ããŠããŸããã¬ãã¬ãžãŒãºã§ã¯MLOpsåºç€ãML掻çšãäŒç»ããèãæ§ç¯ãŸã§ãããããšã³ãžãã¢ãåéããŠããŸããèå³ã®ããæ¹ã®å¿åããåŸ
ã¡ããŠããŸãã
ã¯ããã« CTO宀ãèšç«ãããèæ¯ CTO宀ã§å®çŸãããããš CTO宀ã®ä»åŸ ãããã« ã¯ããã« ããã«ã¡ã¯ãã¬ãããã¯éçºéšã§ããã¯ãªãŒããæ
åœããŠããæ²³æã§ãã ç§ã¯ã¬ãããã¯å
šäœã®ã·ã¹ãã èšèšãæ
åœããŠãããä»åŸã®äºæ¥æ¡å€§ã«åããŠãçæ³ã®ã·ã¹ãã ãç®æããŠãæè¡çè² åµã®è§£æ¶ãªã©ã®æšé²ãè¡ã£ãŠããŸãã ã¬ãããã¯ã¯ãããŸã§ããã€ã¯ããµãŒãã¹åãäž»äœã«ãããæè¡ã¹ã¿ãã¯ã®å·æ°ãè¡ã£ãŠããŸãããããããã¯ãŠãŒã¶ãŒäœéšãæ¥åããã»ã¹ãæè¡çè² åµãå«ããŠãçã¿ããšãªã£ãŠããéšåã®è§£æ¶ãé²ããŠããããããã¯ãããµãŒãã¹ãšããŠã®æé©è§£ãæ¢çŽ¢ããŠãããŸãã ããã§ãä»åã¯ã¬ãããã¯ã®ã·ã¹ãã 課é¡ã§ãã ã忣ãããã¢ããªã¹ãã®ç¶æ
ãããæ¥æ¬äžã®ããŒã¿ãšã·ã¹ãã ãæã€äºæ¥ãšãããæ¯ããã¢ãŒããã¯ãã£ããç®æã㊠ã©ã®ãããªããšãè¡ãããšããŠããã®ããããã«åãããŠæ°èšãããCTO宀ãã©ã®ãããªæŽ»åãè¡ããšããŠããã®ããã¬ãããã¯ã®çŸç¶ãšèª²é¡ãèžãŸããŠã玹ä»ããŸãã CTO宀ãèšç«ãããèæ¯ ã¬ããã㯠- äºæ¥ããŒããã©ãªãª ã¬ãããã¯ã¯çŸåšãããªãŒã©ã³ã¹ã»æŽŸé£ã»å°±è»¢è·ãæ°åã®åé åãè»žã«æ§ã
ãªãµãŒãã¹ã»äºæ¥ãå±éããŠããŸãã â» äž»ãªãµãŒãã¹ãé¢ããã·ã¹ãã ã¬ãããã¯ããªãŒã©ã³ã¹ãã¬ãããã¯ã¯ãªãšã€ã¿ãŒ ITããªãŒã©ã³ã¹ãšããŠã®ãã£ãªã¢ã®å¯èœæ§ãåºãããšãŒãžã§ã³ããµãŒãã¹ ã¬ãããã¯ãã£ãªã¢ãã¬ãããã¯ãã€ã¬ã¯ã æ£ç€Ÿå¡ãšããŠã®ãã£ãªã¢ã®å¯èœæ§ãåºãã転è·ãšãŒãžã§ã³ãã»ã¹ã«ãŠããµãŒãã¹ ã¬ãããã¯ã«ãŒã㌠ITãšã³ãžãã¢ãç®æãåŠçã®å¯èœæ§ãåºãã就掻ãšãŒãžã§ã³ãã»ã¹ã«ãŠããµãŒãã¹ ã¬ãããã¯ãã©ãããã©ãŒã ã¬ãããã¯ã«ç»é²ããã ããITããªãŒã©ã³ã¹ã®ã¹ã«ãŠããããåç»åŸã®å¥çŽç®¡çãŸã§ãå®çŸãããã©ãããã©ãŒã ãµãŒãã¹ ã¬ãããã¯ID ãµãŒãã¹ãç¶ç¶ããŠäœ¿ãç¶ããŠãããããã®æ ¹å¹¹ãšãªãèªèšŒèªå¯åºç€ã·ã¹ãã åèèšäºïŒ ãšã³ãžãã¢ãäºæ¥æŠç¥ã®å®çŸã®ããã«èªèšŒåºç€ã·ã¹ãã ãæ§ç¯ãã話 äžèšã¬ãããã¯ã®ãµãŒãã¹ãæ¯ãããã€ã¯ããµãŒãã¹çŸ€ åèèšäºïŒ ãã€ã¯ããµãŒãã¹åãäžå¿ã«ãããæè¡å·æ°ãšãã®çã ã¬ããã㯠- äºæ¥é²æã»ãµãŒãã¹å±æ ã¬ãããã¯ã¯5幎åŸã10幎åŸã®äºæ¥æ¡å€§ã«åããŠãæ§ã
ãªäºæ¥å±éãèšç»ããŠãããŸãã ä»ãŸã§ã¯å¶æ¥ãšããŒã±ãã£ã³ã°ã®åŒ·ã¿ãçãããŠäºæ¥å±éãè¡ã£ãŠããŸããããä»åŸã¯éçºãšããŒã¿ã掻çšããŠäºæ¥å±éãèšç»ããŠãããéçºãšããŒã¿ã匷ãçµç¹ã»ã·ã¹ãã ãæ§ç¯ããªããã°ãªããŸããããã®ããã«ãã ãæ¥æ¬æå€§çŽã®IT人æãã©ãããã©ãŒã ã®é²åãæ¯ãããçµç¹ãã·ã¹ãã ãæ§ç¯ããå¿
èŠãããããŠãŒã¶ãŒäœéšãæ¥åããã»ã¹ãæè¡çè² åµã®æ¹å ã«åããŠåãçµãã§ããŸãã ã¬ããã㯠- çŸç¶ã®ã·ã¹ãã å
šäœå ã¬ãããã¯ã®åãµãŒãã¹ã»äºæ¥ãæ¯ããã·ã¹ãã ã¯äžèšã®ããã«ãªã£ãŠããŸãã åã·ã¹ãã éã®é£æºãå¶æ¥æ¯æŽã·ã¹ãã ãå€éšãµãŒãã¹ãšã®é£æºããããã¬ãããã¯ã«é¢é£ããã¬ããžããªã ãã§ã200å以äžãããå€§èŠæš¡ãªã·ã¹ãã ã«ãªãã€ã€ãããŸãã ãã®äžã§ã ã·ã¹ãã ãšããŠæã課é¡ãšããŠããã®ãã忣ãããã¢ããªã¹ãã®ãããªç¶æ
ïŒåèèšäºïŒ What is 忣ã¢ããªã¹(Distributed Monolith) ïŒã§ãããã¹ãŠã®æ©èœããã€ã¯ããµãŒãã¹åãããŠããããã§ã¯ãªãã®ã§ãäžè¬çãªã忣ãããã¢ããªã¹ãã®ç¶æ
ãšããããã§ã¯ãªãã®ã§ãããçºçããŠããåé¡ãšããŠã¯è¿ãç¶æ
ã§ãã äžèšã®å³ã®ããã«ã·ã¹ãã ã¯åãµãŒãã¹ã»äºæ¥ããšã«åæ£ãããŠããŸããã§ããããã®åæ£ãããã·ã¹ãã ã¯çæ³çãªåå²ã§ã¯ãªããæ¢åã·ã¹ãã ã®è€è£œã§äœãããã·ã¹ãã ã§ãã£ããã人ãå¢ããããšã«ããåºæ¥äžãã£ãã·ã¹ãã ãã·ã¹ãã ã®æ¬æ¥ã®è²¬åãè¶
ããæ©èœããã£ãŠããããšçæ³ã®ã·ã¹ãã ãšããªãã®ã£ãããããç¶æ
ã§ãã ããã§ãã忣ãããã¢ããªã¹ããšãªã£ãŠããŸã£ãŠããåå ãšããŠä»¥äžã®åé¡ããããŸãã å¯çµåãªã·ã¹ãã 人æãäŒæ¥ã®ããŒã¿ãéè€ããŠä¿æããŠããç¶æ
ã§ãã€DBçŽåç
§ãããããµãŒã飿ºã§è¡ã£ãŠãããããã·ã¹ãã ã®è¿œå ã倿ŽãæèããŠéçºããªããã°ãªããªã éæ§é åããŒã¿ã®ååš æååãEAVãã¿ãŒã³ãå©çšããæé»çãªãªã¬ãŒã·ã§ã³æ§é ãååšããDBã«æ ŒçŽãããæååã倿Žããã ãã§ã·ã¹ãã ã®é害ã®ãã£ãããšãªãåŸã ãã¹ã¿ããŒã¿ïŒè·çš®ãã¹ãã«ãªã©ã®ãªãã¡ã¬ã³ã¹ããŒã¿ïŒã®åæ£ åã·ã¹ãã ã§ãã¹ã¿ããŒã¿ã®IDãé
ç®ãç°ãªãããããã³ã°ãããŠé£æºãåæãè¡ã£ãŠãã äžèšã®åé¡ã¯2ã3幎åããé¡åšåããŠããŸãããã§ããããããªããã¹ãŠã®åé¡ã«åãçµãã®ã¯é£ããããŸããåœæã®æè¡ã¹ã¿ãã¯ãå€ãç¶æ
ã§çšŒåããŠããŸããããªã®ã§ããŸãã¯æè¡ã¹ã¿ãã¯ã®å·æ°ããã€ã¯ããµãŒãã¹åã®å°å
¥ããé²ããŠããŸããïŒåèèšäºïŒ ãã€ã¯ããµãŒãã¹åãäžå¿ã«ãããæè¡å·æ°ãšãã®çã ã ã¬ãããã¯ã®æªæ¥ã«åããéçºçµç¹ã®åãçµã¿ ïŒãæè¡ã¹ã¿ãã¯ã®å·æ°ã«ãããéçåä»ãèšèªã§ããTypeScriptãããŒã¹ãšããã·ã¹ãã ã«ããããšãã§ããè² åµã貯ãã«ããã»è§£æ¶ããããèšèšææ³ã§ããã¯ãªãŒã³ã¢ãŒããã¯ãã£ãDDDïŒãã¡ã€ã³é§åèšèšïŒã®å°å
¥ãè¡ãããããªããèšç»çãªè² åµã®è§£æ¶ãé²ããããç¶æ
ã«ããããšãã§ããŸããã ä»åŸã¯ ã忣ãããã¢ããªã¹ããããããããã®ã·ã¹ãã ãšããŒã¿ãâç¬ç«åâãâççµååâãããç¶æ
ã ãç®æããŠãçŸåšã®TypeScriptãããŒã¹ãšããã·ã¹ãã ã®ãªãã¥ãŒã¢ã«ãè¡ããä»åŸã®ã¬ãããã¯ãæ¯ããçµç¹ã»ã·ã¹ãã ãæ§ç¯ããŠãããŸãã ã€ãŸããä»ãŸã§è¡ã£ãŠããããªãã¬ãŒã¹ããçãããŠãä»åŸã¯ãããããã®ã·ã¹ãã ãšããŒã¿ãâç¬ç«åâãâççµååâãããç¶æ
ãã«åã㊠ããªãã¡ã¯ã¿ãªã³ã°ãããªãã¬ãŒã¹ãããªãã¥ãŒã¢ã«ããèšç»çã« é²ããŠãããŸãã â» ãªãã¡ã¯ã¿ãªã³ã°ã»ãªãã¬ãŒã¹ã»ãªãã¥ãŒã¢ã«ã®å®çŸ© ãªãã¡ã¯ã¿ãªã³ã° çŸåšã®ã·ã¹ãã ãI/FïŒIN/OUTïŒããµããŸããå€ããã«ã³ãŒãã倿Žããããš äŸïŒMVCããã¬ã€ã€ãŒãã¢ãŒããã¯ãã£ã«ç§»è¡ãã ãªãã¬ãŒã¹ çŸåšã®ã·ã¹ãã ãI/FïŒIN/OUTïŒããµããŸããå€ããã«å¥ã®ã·ã¹ãã ã«èŒãæ¿ããããš äŸïŒPHPãããŒã¹ã§åããŠããã·ã¹ãã ãTypeScriptããŒã¹ã®ã·ã¹ãã ã«èŒãæ¿ãã ãªãã¥ãŒã¢ã« çŸåšã®ã·ã¹ãã ãI/FïŒIN/OUTïŒããµããŸããå€ããŠãæ°ãã䟡å€ãçã¿åºãããš äŸïŒã·ã¹ãã ã»ããŒã¿ã®æ¡åŒµæ§ãåäžãããããããŠãŒã¶ãŒç»é²ã®ä»çµã¿ãæ¥åããã»ã¹ããæ¹åãè¡ã CTO宀ã§å®çŸãããããš ã¬ããã㯠- CTO宀ããã·ã§ã³ äžèšã®ã¬ãããã¯ã«ãããã·ã¹ãã ã»ããŒã¿ã®èª²é¡ã解決ããªãŒãããŠããããããã®åºŠãCTO宀ãç«ã¡äžããããšã«ãªããŸããã å€§èŠæš¡ãªã·ã¹ãã ã«ãªã£ãŠããã¬ãããã¯ã®é¢é£ãµãŒãã¹ãæ¯ããä»åŸã®äºæ¥æ¡å€§ã«åããŠãç·åçãªã¢ãŒããã¯ãã£ãèšèšãæ±ããããããšã«ãªããŸããç¹ã«ãæãé£ãããšèããŠããã®ããä»ã®ã¬ãããã¯ã«ããããŠãŒã¶ãŒäœéšãæ¥åããã»ã¹ãæè¡çè² åµã®äžã§æããçã¿ããšãªã£ãŠããéšåã®ç¹å®ãšãã®ãçã¿ãã®è§£æ¶ã§ãã ãã¹ãŠã®èª²é¡ããããªããã¹ãŠè§£æ¶ã§ããèŠæš¡ã§ã¯ãªããä»åŸã®äºæ¥æ¡å€§ãéã¿ãŠã æããçã¿ããšãªãéšåãåæã»ç¹å®ããçµå¶ãä»è·çš®ãå·»ã蟌ãã§ããã®ãçã¿ããèšç»çã«è§£æ¶ãé²ããŠããå¿
èŠ ããããŸãããªã®ã§ããã åçŽã«æè¡çè² åµãè§£æ¶ãé²ããŠãããšããããšã§ã¯ãããŸãããçŸç¶ã®ãŠãŒã¶ãŒäœéšãæ¥åããã»ã¹ãå«ããŠæé©è§£ãæ¢çŽ¢ããå¿
èŠããããŸãã ã¬ããã㯠- CTO宀ãç®æãå
ã¬ãããã¯ã¯çŸåšãç»é²è
æ°50äžäººãå¥çŽç€Ÿæ°1äžç€Ÿãçªç ŽããIT人æã®2.5人ã®1人ãç»é²ãããµãŒãã¹ã«ãªã£ãŠãããŸããäžèšã®ã忣ãããã¢ããªã¹ããªç¶æ
ãè±åŽããã¬ãããã¯ã«ããããŠãŒã¶ãŒäœéšãæ¥åããã»ã¹ãæè¡çè² åµã®äžã§æããçã¿ããšãªã£ãŠããéšåãè§£æ¶ãã ç®æãå
ã¯ãæ¥æ¬äžã®ããŒã¿ãšã·ã¹ãã ãæã€äºæ¥ãšãããæ¯ããã¢ãŒããã¯ãã£ããäœãããš ã§ãã ã¬ããã㯠- ã³ã¢èŠçŽ ãD-POSãã®Asis-Tobe ãæ¥æ¬äžã®ããŒã¿ãšã·ã¹ãã ãæã€äºæ¥ãšãããæ¯ããã¢ãŒããã¯ãã£ãã«ãªãããã«äžèšã®Tobeã®ãããªç¶æ
ãå¿
èŠã ãšå®çŸ©ããŠããŸããã€ãŸããããŒã¿ã軞ã«ãããã¯ã/ãªãã¬ãŒã·ã§ã³/ã·ã¹ãã ïŒDataâProduct/Operation/SystemïŒãåèšèšããŠããå¿
èŠããããšèããŠããŸãã ãããŸã§ããŸãšãããšã ã¬ãããã¯ã¯5幎åŸã10幎åŸã®äºæ¥æ¡å€§ã«åããŠãæ§ã
ãªäºæ¥å±éãèšç»ããŠãã ãã®ããã«ã¯ããæ¥æ¬æå€§çŽã®IT人æãã©ãããã©ãŒã ã®é²åãæ¯ãããçµç¹ãã·ã¹ãã ãæ§ç¯ããå¿
èŠããã çŸåšãçµç¹ã»ã·ã¹ãã ãšããŠã忣ãããã¢ããªã¹ããšããç¶æ
ã®èª²é¡ãæ±ããŠãã çæ³ããæ¥æ¬äžã®ããŒã¿ãšã·ã¹ãã ãæã€äºæ¥ãšãããæ¯ããã¢ãŒããã¯ãã£ããšå®çŸ© ããã«çŽã¥ãTobeãç®æããŠã¬ãããã¯ãåèšèšããŠãã CTO宀ã®ä»åŸ ä»åŸãCTO宀ã¯äžèšã®èª²é¡ãã以äžã®è»žãããŒã¹ã«åŒ·åããŠãããŸãããŸã ãŸã å
·äœçãªç®æšãªã©ã¯æ±ºããããŠããŸãããã以äžã軞ã«CTO宀ã®åœ¹å²ãæ¡å€§ããŠãããããªãšèããŠãããŸãã äºæ¥æŠç¥ã«çŽã¥ããã·ã¹ãã æŠç¥ã®ãªãŒã ãã¯ãã«ã«ãšãã¡ã€ã³ãæãåããããã¡ã€ã³ã®æé©å äºæ¥æšªæããçµç¹ã»ã·ã¹ãã ã®æé©å éçºè
çç£æ§ã®åäž äºæ¥æŠç¥ã«çŽã¥ããã·ã¹ãã æŠç¥ã®ãªãŒã CTO宀ã¯ãä»åŸãŸããŸãäºæ¥æŠç¥ã«é£åããã·ã¹ãã æŠç¥ãäž»å°ãã圹å²ãæãããŸãããã®åãçµã¿ã«ãããæè¡æŠç¥ãããžãã¹ã®é·æçãªç®æšãšäžèŽããæã
ã®ç«¶äºåãåäžãããæ°ããªåžå Žæ©äŒãæ¢æ±ããŸãããæ¥æ¬æå€§çŽã®IT人æãã©ãããã©ãŒã ã®é²åãæ¯ãããçµç¹ãã·ã¹ãã ãæ§ç¯ããæŠç¥çãªæé·ãæ¯ããããšãç®æšã«é²ãã§ãããŸãã ãã¯ãã«ã«ãšãã¡ã€ã³ãæãåããããã¡ã€ã³ã®æé©å ãã¯ãã«ã«ãªå°éç¥èãšããžãã¹ãã¡ã€ã³ç¥èãèåãããŠããã¡ã€ã³ã®æé©åã«åãçµã¿ãŸãããã®ã¢ãããŒãã«ãããç¹å®ã®ãã¡ã€ã³ã«ç¹æã®èª²é¡ã«å¯ŸåŠããããã®åªãããœãªã¥ãŒã·ã§ã³ãæäŸããŸããããã§ãã¬ãããã¯ã®äºæ¥/éçºåæ¹ã®æŠç¥åã³æŠè¡ã«åºã¥ãç¹å®ã®ãã¯ãã«ã«ãã¡ã€ã³é åã«ãããä¿¡é Œãããã¹ãã·ã£ãªã¹ããå€ã茩åºããŠãããæ°ããªå¯èœæ§ãåãæããŸãã äºæ¥æšªæããçµç¹ã»ã·ã¹ãã ã®æé©å CTO宀ã¯ãçµç¹ãšã·ã¹ãã ãçµã³ã€ããæ
å ±å
±æãšååãä¿é²ããäºæ¥å
šäœã§ã®æé©åãå®çŸããŸããããã«ã¯ã€ãã€ããªã³ã°ãSREãQAãã¢ãžã£ã€ã«CoEã«ããäºæ¥ã暪æããçµç¹ã»ã·ã¹ãã ã®åŒ·åãå¿
èŠã§ããåé·æ§ã®æé€ããªãœãŒã¹ã®æé©å©çšãå¯èŠ³æž¬æ§ã®åäžã«ããããã广çã«éå¶ããããžãã¹ç®æšã®éæãç®æããŸãã éçºè
çç£æ§ã®åäž CTO宀ã¯éçºè
çç£æ§ã®åäžã«æ³šåããŸããæ°ããããŒã«ãããã»ã¹ããã¬ãŒãã³ã°ãæäŸããéçºè
ããã广çã«äœæ¥ã§ããç°å¢ãæŽåããŠãããŸããããã«ãããã€ãããŒã·ã§ã³ãä¿é²ããããããã¯ãéçºãããæ¯æŽã§ããããšèããŠããŸãã ããããã¯ãšã³ãžãã¢ãéžã¶ãéçºè
äœéšãè¯ããã€ã¡ãŒãžã®ããäŒæ¥ãDeveloper eXperience AWARD 2023ãã©ã³ãã³ã°äžäœ5ã«ã©ã³ã¯ã€ã³ã«åããŠåãçµã¿ãé²ããŠãããããšèããŠãããŸãã ãããã« ãããã®ç®æšãéæããããã«ãCTO宀ã¯ç©æ¥µçãªåãçµã¿ãé²ããããã¯ã«ã³ãããŒãšããŠããé«ãã¬ãã«ã®éçºçµç¹ã«ããŠãããããšèããŠããŸããçŸåšãäžç·ã«CTOå®€ãæšé²ããŠããã ãããšã³ãžãã¢ãåéããŠããŸãïŒãèå³ã®ããæ¹ã¯ãã² ãã¡ã ãããé£çµ¡ãã ããïŒ
ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ HRããã¯äºæ¥éšã®æ¡çã§ãã ã¢ããªã±ãŒã·ã§ã³éçºã«ãããŠãéããåŠçã®é«éåã¯é¿ããŠã¯éããªã課é¡ã®äžã€ã§ããããªããšãªãã§åãçµãã§ããŸãè¯ãçµæãåŸãããªãã£ãããããããã©ãããæãã€ããŠãããåãããªãã£ããããããšãããããšæããŸãã æ¬èšäºã§ã¯ãåŠçã®é«éåãäžæã«è¡ãããã®æµããšãåã¹ãããã§æããã¹ããã€ã³ããã玹ä»ããŸãã å®éã«ç§ãæºãã£ãŠãããããã¯ãã§ããä»åã玹ä»ããæµãã«åã£ãŠé«éåã«åãçµã¿ã æçµçã«åŠçæéã40å以äžé«éåããããšã«æåããŸãã ããã¡ãã®å
·äœçãªäºäŸãå«ããŠè©³ããã玹ä»ããŸãã®ã§ããã²æåŸãŸã§ãèªã¿ããã ããã°ãšæããŸãïŒ ãªãããã¡ãã¯6æã«éå¬ãããã¬ãã¬ãžãŒãº ããã¯ãã§ã¹ã«ãŠçºè¡šãããŠããã ããå
容ãšåããã®ã§ãã 倧ãŸããªæµã 以äžã®æµãã§åŠçã®é«éåãè¡ã£ãŠãããŸãã ç¡é§ãå«ãåŠçãèŠã€ãã åŠçã®é
ãåå ãç¹å®ããïŒèšæž¬ïŒ é«éåã®ããã®ææ®µãèããå®è£
ãã å®è£
ããé«éåã®å¹æã枬å®ãã ãç¡é§ããå«ãåŠçãèŠã€ããã«ã¯ïŒ é
ãåŠçãç®ã®åã«ããæã«ããŸãèããå¿
èŠãããã®ã¯ããã®åŠçã«åããç¡é§ã¯æ®ã£ãŠãããïŒããšããããšã§ããåœããåã®è©±ã§ã¯ããã®ã§ãããæ¢ã«ãªãœãŒã¹ãååã«äœ¿ãåã£ãŠããåŠçãé«éåããã®ã¯é£ããããã§ãã ãç¡é§ããååšããŠããããšã倿ããã®ã«éèŠãªã®ããåŠçå
容ããèããŠã©ã®ãããã®æéããããããããäºæž¬ãããããå®éã®åŠçæéãšæ¯èŒããããšã§ãããããããåŠçã ãããããããã®æéããããããããšããäºæž¬ã粟床è¯ãè¡ãããšã§ãç¡é§ãèŠã€ããããšãã§ããããã«ãªããŸãã åŠçã®æ§è³ªããšã«ãããæéãèšç®ãã åŠçæéãèŠç©ããéã«ã¯ããã©ããªãªãœãŒã¹ã§ããã©ããããã®éã®ãåŠçãè¡ã£ãŠãããã«çç®ããŸããäŸãã°ãå€ãã®åŠçã§äœ¿ãããã§ããããCPUããã¹ãã¬ãŒãžãããããã¯ãŒã¯éä¿¡ãã¯ã以äžã«ç€ºãããã«1åã®æäœã«ãããæéãéåžžã«å€§ããç°ãªããŸãã ãã®ãããåŠçã®æ§è³ªã«ãã£ãŠä»¥äžã®ããã«èŠç©ãããå€ããå¿
èŠããããŸãã èšç®åŠçãäžå¿ã®åŠçã®å Žåãæéãããããšæããã«ã¯å°ãªããšã æ°çŸäžåãæ°åäžåçšåºŠ ã®èšç®ã¹ããããå¿
èŠã«ãªããŸãããœãŒãåŠçãå€§èŠæš¡ãªæåååŠçãããã³ç»ååŠççã¯ããã«è©²åœããããšããããŸãããäžè¬çãªæ¥åã¢ããªã±ãŒã·ã§ã³ã§ãã®ã¬ãã«ã®èšç®è² è·ãæ±ããããå Žé¢ã¯æ¯èŒçãŸããšãããŸãã éã«ãã¹ãã¬ãŒãžã»ãããã¯ãŒã¯ã¢ã¯ã»ã¹ãäžå¿ã®å Žåããã£ãšå°ããªæ°åã§ãæéããããå ŽåããããŸãã åŠçæéãæŠç®ããŠã¿ã äžèšãèžãŸããŠãå®éã«åŠçæéãèŠç©ãã£ãŠã¿ãŸããããäŸãšããŠã以äžã®ãããªåŠçãæ³å®ããŸãã 1000ä»¶/ãŠãŒã¶ãŒã®ããŒã¿ãã100ãŠãŒã¶ãŒåéèšãã éèšã¯åçŽãªå¹³åã»åèšç ããŒã¿ã¯DBãµãŒããŒããååŸãã ãã®å Žåãè¡ãããåŠçã¯ä»¥äžã®ããã«åé¡ã§ããŸãã CPUã§ã®èšç®: 1000Ã100 = 10äžã®ãªãŒã㌠â 1ç§ã¯æ±ºããŠè¶
ããªã ããŒã¿ååŸ: NWéä¿¡1å + èªã¿åºãã«1ç§ãæ°ç§ïŒ ãããã®ããšãããã©ããªã«é·ããŠãæ°ç§ã10ç§çšåºŠã§å®äºããããšãäºæ³ã§ããŸãããã£ãŠããããããé¥ãã«é·ãæéãããã£ãŠããå Žåã¯ã»ãŒç¢ºå®ã«ç¡é§ãæœãã§ãããšèããããããã§ãã ãã®ããã«ãåŠçå
容ããæ³å®ã®åŠçæéãèŠç©ããããšã§ãç¡é§ãå«ãã§ããåŠçãèŠåããããšãã§ããŸãã èšæž¬ããïŒ ç¡é§ãå«ãã§ããããªåŠçãç¹å®ã§ãããšããã§ã次ã¯ãã®åŠçãéãããããšãã話ã«ãªãããã§ãããããã§ãã£ãŠããŸããã¡ãªã®ããäœãšãªããããé
ããããšããæšæž¬ã ãã§é«éåã«æãã€ããŠããŸãããšã§ããããããããã¯æ¬¡ã«ç€ºãããã«ãå¯èœãªéãé¿ããã¹ãã§ãã ããã»ãã€ã¯ã®ããã°ã©ãã³ã°5ã«æ¡ ããã°ã©ãã³ã°çéã§æåãªããã»ãã€ã¯ã®ãããã°ã©ãã³ã°5ã«æ¡ããããåŠçæéã«é¢ãã2ã€ã®ã«ãŒã«ãã玹ä»ããŸãã ã«ãŒã«1: ããã°ã©ã ãã©ãã§æéãæ¶è²»ããããšã«ãªããç¥ãããšã¯ã§ããªããããã«ããã¯ã¯é©ãã¹ãç®æã§èµ·ãããã®ã§ããããããã£ãŠãã©ããããã«ããã¯ãªã®ããã¯ã£ããããããŸã§ã¯ãæšæž¬ãè¡ã£ãããã¹ããŒãããã¯ãããŠã¯ãªããªãã ã«ãŒã«2: èšæž¬ãã¹ããèšæž¬ãããŸã§ã¯é床ã®ããã®èª¿æŽãããŠã¯ãªããªããã³ãŒãã®äžéšãæ®ããå§åããªãã®ã§ããã°ããªãããã§ããã (åŒçšå
: http://www.lysator.liu.se/c/pikestyle.html ) ããã§è¿°ã¹ãããŠããéããåŠçã®éããå
·äœçã«äœã«èµ·å ããã®ããæšæž¬ã«ãã£ãŠç¹å®ããã®ã¯éåžžã«å°é£ã§ãããã®ãããæšæž¬ã«ãã£ãŠäœæ¥ã«æãã€ãããšã å
šãé
ããªãç®æãäžçæžåœé«éåãã ãšããäºæ
ã«é¥ãå¯èœæ§ãããã®ã§ãã ãã®ããã«ãé«éåãè¡ãéã«ã¯ãã©ããé
ãã®ãããèšæž¬ããŠç¹å®ããåŠçæéã®å ããå²åã倧ãããšãããåã£ãŠããå¿
èŠãããã®ã§ãã åŠçæéã®èšæž¬ã®ããã®ææ³ã¯ãããããšååšããŸãããããã§ã¯ä»£è¡šçãªãã®ã2ã€ã玹ä»ããŸãã ã¿ã€ããŒã«ããèšæž¬ äžã€ç®ã¯éåžžã«æçŽãªæ¹æ³ã§ãåŠçã®ååŸã®æå»(ã¿ã€ããŒã®å€)ãèšé²ããããšã§åŠçæéãèšæž¬ããæ¹æ³ã§ãã äŸãšããŠãJavaScriptã®Dateã¯ã©ã¹ã䜿ã£ãŠåŠçæéãèšæž¬ããæ¹æ³ã瀺ããŸãã function run() { // éå§æã®æå»ãèšé² const startTime = Date .now(); someHeavyWork(); // çµäºæã®æå»ãèšé² const endTime = Date .now(); // çµéæéã¯ãçµäºææå» - éå§ææå» ã§æ±ãããã const elapsedTime = endTime - startTime; console.log(âsomeHeavyWork:â, elapsedTime, âmsâ); } Date.now()ãåŒã¶ããšã§ããã®æç¹ã§ã®æå»(ããªç§åäœ)ãèšé²ããããšãã§ããŸããä»åã¯äŸãšããŠJavaScriptã®æ©èœãçšããŸããããä»ã®èšèªã§ãçŸåšæå»ã®ã¿ã€ã ã¹ã¿ã³ããååŸãã颿°(PHPã®microtimeãRubyã®Time.nowç)ãçšããããšã§åæ§ã«èšæž¬ã§ããŸãããããå©çšããŠåŠçã®éå§æã»çµäºæã®æå»ãèšæž¬ãããã®å·®ãåãããšã§ãéã«æãã åŠçã«ã©ã®ãããã®æéãããã£ãããç¥ãããšãã§ããŸãã â»ãªããJavaScriptã®å Žå㯠console.time ãšãã颿°ãçšããããšã§ããç°¡åã«æéãèšæž¬ããããšãã§ããŸãã詳ããã¯MDNã®è©²åœããã¥ã¡ã³ãããåç
§ãã ããã ãã®ãããªæéã®èšé²åŠçããéãå¯èœæ§ã®ããåŠçã®ååŸã«æãããšã§ãå®éã«éãéšåãçµã蟌ãã§ãããŸãã(æåã¯å€§ããã®ç¯å²ãæãã§ãåŸã
ã«ãã®ç¯å²ãçããŠãã) ãã®æ¹æ³ã¯éåžžã«åå§çãªã®ã§ãã©ããªåŠçã«ã§ãé©çšã§ãããšããè¯ãã¯ããã®ã§ããããã®åé¢ãèšæž¬åŠçãæåã§æãã§ããå¿
èŠãããããæéãããããŸããæ¬¡ã«ç޹ä»ãããããã¡ã€ã«ãçšãããšãæåã§åŠçãæãŸãã«æéãèšæž¬ããããšãã§ããŸãã ãããã¡ã€ã©ã®æŽ»çš ãããã¡ã€ã©ãšã¯ã颿°ããšã®åŠçæéãèªåã§èšé²ããŠãããããŒã«ã§ãããããã¡ã€ã©ãçšãããšãããã°ã©ã å®è¡äžã®é¢æ°åŒã³åºãã远跡ããŠãæéã®ããã£ãŠããéšåãç¹å®ããããšãã§ããŸãã倧æµã®ãã©ãããã©ãŒã ã§ã¯ããããã®ãã©ãããã©ãŒã ããšã«å°çšã®ãããã¡ã€ã©ãååšããŠãããäŸãã°Node.jsãããã¡ã€ã©ã䜿ã£ãŠèšæž¬ãè¡ããšä»¥äžã®ãããªåºåãåŸãããšãã§ããŸãã å颿°ã®äžã§ããã£ãæéã垯ç¶ã«è¡šç€ºãããŠããŸãããŸããã°ã©ãã®äžäžé¢ä¿ã¯é¢æ°ã®åŒã³åºãé¢ä¿ã衚ããŠããŸããäžåŽã«ããã»ã©é¢æ°ã®åŒã³åºãéå±€ãæ·±ããªã£ãŠãã£ãŠããŸãã ä»åçšããNode.jsãããã¡ã€ã©ã®äœ¿ãæ¹ã®åèèšäº: Node.js ã® CPU ãããã¡ã€ãªã³ã°ã§ããã«ããã¯ãç¹å®ãã â- ä»åã¯åŠçæéãèšæž¬ããæ¹æ³ã2ã€ã玹ä»ããŸãããããããçšããŠå®éã«é
ãç®æãç¹å®ããããã€ãã«å®éã®é«éåäœæ¥ã«åãçµãããšã«ãªããŸãã é«éåã«çéãªã ããããå®éã®é«éåäœæ¥ãè¡ãããã§ãããããã°ã©ã ãé
ãåå ãšããã®ã¯å®ã«æ§ã
ã§ããã®ãããé«éåã®ããã®æ®éçãªææ³ãååšããŸããããã ãããã ãã§èª¬æãæžãŸããŠããŸãã®ãå¯ããã®ã§ãä»åã¯ç§ãå®éã«é¢ãã£ãé«éåã®äºäŸãã玹ä»ããŠãé«éåäœæ¥ã®ã€ã¡ãŒãžãæŽãã§ããã ãããšæããŸãã äºäŸïŒææ¬¡åŠçã®é«éå ïŒã€ç®ã«ã玹ä»ããäºäŸã絊äžèšç®ãœããã«ãããææ¬¡ã®å€æ ç· ãæäœã®é«éåã§ãããã¡ãã¯äŒç€Ÿããšã®å
šç€Ÿå¡ã®å€æ ããŒã¿ãéèšããŠçµŠäžé¡ãèšç®ããåŠçãªã®ã§ãããäŒç€Ÿãããã®ãŠãŒã¶ãŒæ°ãå¢å ãããšãèšç®å®äºãŸã§äœåãããã£ãŠããŸããšããåé¡ããããŸããã åŠçæéã®èŠç©ãã ãŸãã¯ãæ¬æ¥ã®åŠçæéãèŠç©ãã£ãŠã¿ãŸããå
·äœçã«ããã£ãŠããæéã§ãããäŸãã°300人çšåºŠã®äŒç€Ÿã§ããš7å以äžããã£ãŠããŸããããã ãå®éã«åŠçããããŒã¿ã®éãèãããšä»¥äžã®ããã«ãªãã倧ããªä¹é¢ãçããŠããŸãã 300人 * 30æ¥ = 9000åã®å€æ ããŒã¿ã®éèš + éå»ã®æçµŠäœ¿çšããŒã¿(300人 * æ°åä»¶ = æ°åã1äžä»¶)ã®éèš éèšã¯åºæ¬çã«ã¯æéã环ç©ããŠããã®ã¿ å®éã¯å¶æ¥æ¥ã¯30æ¥ããªãã®ã§å€ãã«èŠç©ãã£ãŠãã ããŒã¿ã®ååŸçå«ããŠèããŠãäœåç§ããããã®ã§ãããããã æ°äžä»¶ã®ããŒã¿ã®ååŸ(æ°ç§) + ããŒã¿åŠç(1ç§ä»¥å
) + æ°äžä»¶ã®ããŒã¿ã®æžãæ»ã(æ°ç§)ã«ãããªããªãã¯ã ãããèžãŸãããšããã®åŠçã¯ãŸã é«éåã®äœå°ããããšå€æã§ããŸãã é
ãç®æã®ç¹å® 次ã«ãå®éã«äœãé
ãåå ãšãªã£ãŠããããèšæž¬ããŠèª¿æ»ããŸããåŠçéšåã«ãã°ãä»èŸŒãã§èšæž¬ããçµæãDBã®ããŒã¿èªã¿æžãã«å€§åã®æéãè²»ãããŠããããšãããããŸããã ããã«è©³ããã³ãŒãã調æ»ããçµæã以äžã®2ã€ã®åå ã倿ããŸããã ç¹å®ã®ããŒãã«(倧ãã)ã«ã€ã³ããã¯ã¹ã匵ãããŠããªãã£ã 1ãŠãŒã¶ãŒã®åŠçããšã«å€§éã®ã¯ãšãªãçºè¡ããŠãã ãããã詳ãã説æããŸãã ããŒãã«ã«ã€ã³ããã¯ã¹ã匵ãããŠããªãã£ã ä»åã®é
ãã£ãç®æã®äžã€ãã倿 éèšããŒã¿ãä¿æããRDBããŒãã«ããã®ããŒã¿èªã¿èŸŒã¿ã§ããèªã¿åã£ãŠããããŒã¿ã¯ãŠãŒã¶ãŒããšã«æ°åä»¶çšåºŠãªã®ã§ãã(1ã¶æåã®ããŒã¿ããèªã¿åããªããã)ãèªã¿åãã«ç°åžžã«æéãããã£ãŠããŸãããããã¯åœè©²ããŒãã«ã«å¿
èŠãªã€ã³ããã¯ã¹ã匵ãããŠããªãã£ãããšãåå ã§ãã ããŒã¿ããŒã¹ããæ¡ä»¶ã§çµã£ãŠããŒã¿ãååŸããå Žåãäœãèšå®ããªããšããŒãã«å
šäœãæ€çŽ¢ãããããããŒãã«å
šäœã®ããŒã¿éã«æ¯äŸããæéãããã£ãŠããŸããŸãããã®ãããéåžžã¯æ€çŽ¢ãããã«ã©ã ã« ã€ã³ããã¯ã¹ ã匵ãããšã§ãã®æéãäžå®ã«æããã®ã§ãããä»åæäœããŠããããŒãã«ã§ã¯æ€çŽ¢å¯Ÿè±¡ã®ã«ã©ã ã«ã€ã³ããã¯ã¹ã匵ãããŠããŸããã§ããããã®ããŒãã«ã«ã¯éå»ã®å
šãŠã®å€æ ããŒã¿ãä¿æãããŠããããã®ç·ã¬ã³ãŒãæ°ã¯æ°åäžã«ãåãã§ãããããäžèŠãªããŒã¿ã«å¯ŸããŠæ€çŽ¢ããããŠããæéãããã£ãŠããã®ã§ãã å¯ŸåŠæ³ãšããŠã¯ãåçŽã«æ€çŽ¢å¯Ÿè±¡ã®ã«ã©ã ã«æå¹ãªã€ã³ããã¯ã¹ã匵ãã ãã§ããããã®å¯ŸåŠã ãã§åŠçæéãå
ã
ã®3åã®1çšåºŠã«ãŸã§æžå°ããŸããã 1ãŠãŒã¶ãŒããšã«å€æ°ã®ã¯ãšãªãçºè¡ããŠãã ããäžã€ã®åå ãã1ãŠãŒã¶ãŒããšã«ããŒã¿ã®ååŸã»æžãåºãã¯ãšãªãçºè¡ããŠããããšã§ããä»åã®å®è£
ã«ãããŠã¯ã1ãŠãŒã¶ãŒããšã«å¿
èŠãªããŒã¿ãå
šãŠããŒã¿ããŒã¹ããååŸããŠããããŸãçµæããŒã¿ã®æžã蟌ã¿ã1è¡ãã€è¡ã£ãŠãããããçµæçã«ãŠãŒã¶ãŒããã100以äžã®ã¯ãšãªãçºè¡ããŠãããããŒã¿ã«ã§äœäžä»¶ãã®ã¯ãšãªãçºè¡ããŠããŸã£ãŠããŸãããããã«ãããããã¯ãŒã¯éä¿¡åŸ
ã¡ãšã¯ãšãªå®è¡ã®ãªãŒããŒãããã§å€§ããæéãããã£ãŠããŸããäœåãåŠçã«æéãããã£ãŠããŸã£ãŠããŸããã å¯ŸåŠæ³ãšããŠã¯ãäºãåŠç察象ã®ãŠãŒã¶ãŒã®ããŒã¿ããŸãšããŠååŸããããšã«ããã¯ãšãªçºè¡åæ°ãæžãããŸããããŸããæžãæ»ãã®éãããçšåºŠãŸãšããŠæžã蟌ã¿ã¯ãšãªãçºè¡ããããã«ããŸããã äžèš2ã€ã®æœçãè¡ã£ãããšã«ãããèšç®ã¢ã«ãŽãªãºã ã«ã¯äžåæãå ããŸããã§ããããæçµçã«10ç§çšåºŠãŸã§åŠçæéãççž®ããããšã«æåããŸããã äºåŸã®èšæž¬ãå¿ããã« é«éåäœæ¥ãè¡ã£ãåŸã¯ããããæ¬åœã«é«éåã«å¯äžãããã©ãããå¿
ããã§ãã¯ããããã«ããŸããããç¹ã«ã2ã€ä»¥äžã®å€æŽãè¡ã£ãå Žåã¯ãäž¡æ¹ã®å€æŽã«å¹æããã£ããã©ããããããã調ã¹ãªããšã广ã®ãªã倿Žãå
¥ã蟌ãã§ããŸãããšããããŸããå®éã«èªåãé«éåãè¡ã£ãéã«ããçæ¹ã®å€æŽã¯é«éåã«å¯äžããŠããããããäžæ¹ã®å€æŽã¯ãããããã°ã©ã ãé
ãããŠããŸã£ãŠããããšããå ŽåããããŸããã é«éåã®ããã®ã³ãŒã倿Žãšããã®ã¯äžè¬çã«ã³ãŒããããè€éã«ããŠããŸããã®ãªã®ã§ã广ã®ãªãã³ãŒãã¯ãªãã¹ãæé€ããããã«ããŸãããã ãŸãšã ãããŸã§ã§ãåŠçé«éåã®ããã®å€§ãŸããªæµããäžéãã玹ä»ããŸãããèŠç©ãããšèšæž¬ã«åºã¥ããŠé«éåäœæ¥ã«åãçµãããšã§ãããé«ã粟床ã§äœæ¥ãè¡ãããšãã§ããããã«ãªãã¯ãã§ãã æ¬èšäºã®å
容ãå°ãã§ãçæ§ã®ã圹ã«ç«ãŠã°å¹žãã§ããæåŸãŸã§ãèªã¿ããã ãããããšãããããŸããïŒ
ã¯ããã« ããã«ã¡ã¯ãã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã®å æ¬ã»äžæã§ããæ¬èšäºã§ã¯ç§ãã¡2人ãéå¶åŽãšããŠåå ããã¬ãã¬ãžãŒãºã°ã«ãŒãå
šäœã®ãšã³ãžãã¢ãåå ããããã¯ãã§ã¹ã®æ§åãã玹ä»ããŸããåºèª¿è¬æŒãã瀟å¡ã«ããããŒã¯ã»ãã·ã§ã³ãªã©ã«ã€ããŠæžããŠããŸãã®ã§ããã²æåŸãŸã§ã芧ãã ããã å æ¬èªå·±çŽ¹ä» ç§ã¯2020幎4æã«ã¬ãã¬ãžãŒãºãžæ°åå
¥ç€Ÿããã°ã«ãŒãäŒç€Ÿã§ããã¬ãããã¯ã§ã®æ³äººå¶æ¥ã2幎éçµéšããããšãã¬ãã¬ãžãŒãºã®ãšã³ãžãã¢ã«ç°åããŸãããçŸåšã¯ç€Ÿå
æ¥åå¹çåã®ããŒã«ãéçºããŠããŸãã äžæèªå·±çŽ¹ä» ç§ã¯2022幎4æã«ã¬ãã¬ãžãŒãºã«äžéå
¥ç€Ÿããå»çä»è·é åã®ãªãŠã³ãã¡ãã£ã¢ãäžå¿ã«éçºã«æºãã£ãŠããŸãããçŸåšã¯ãã¬ããŠã§ã«äºæ¥éšã«ãŠSREæ¥åã«åãçµãã§ããŸãã ããã¯ãã§ã¹ãšã¯ ã¬ãã¬ãžãŒãºã°ã«ãŒãã«æå±ãããšã³ãžãã¢ã察象ã«ã瀟å
ã§å幎ã«äžåºŠè¡ãããŠããæè¡ã®ç¥å
žã§ãããšã³ãžãã¢ãæ°ããæè¡ã«èå³ãæã¡ãå匷ããããã£ãããäœãããšãç®çãšããã°ã«ãŒãå
šäœã®æè¡ååäžãç®æããŸãã6æ7æ¥ã«ãæ¥ãã°å質ãã¯ã³ã©ã³ã¯äžã®ã¬ãã¯ãªãªãã£ãžããšããããŒãã§ããã¯ãã§ã¹2023æ¥ãéå¬ããŸããã åºèª¿è¬æŒ æŠèŠ åºèª¿è¬æŒã«ã€ããŠã¯å æ¬ãã話ãããŠãããŸãã ãããã«éçºå¹çãšå質ãé«ãããïŒãã¡ã€ã³é§åèšèšãšçµç¹ãã¿ãŒã³ã®èŠç¹ããèããããšããé¡åã§ãçŸä»£ã®ãœãããŠã§ã¢éçºã«æ±ããããå¹çæ§ãšå質ã®éèŠãªèŠçŽ ã§ããããã¡ã€ã³é§åèšèšïŒDDDïŒãšçµç¹ãã¿ãŒã³ã«ã€ããŠå è€æœ€äžããã«ã話ãããã ããŸããã ç»å£è
çŽ¹ä» ãã¡ã€ã³é§åèšèšã颿°åããã°ã©ãã³ã°ãã¢ã¯ã¿ãŒããã°ã©ãã³ã°ãOSGiãªã©ã®ã¢ãžã¥ã©ãŒããã°ã©ãã³ã°ãç ç©¶ããŠãããå·ç掻åãè¬æŒãOSSã®éçºãªã©ã«åãçµãã§ããã Chatworkæ ªåŒäŒç€Ÿããã¯ãªãŒããZOZOæè¡é¡§åã æè¡è©è«ç€Ÿ WEB+DB PRESS Vol.63~68 åèããJava å·çã æ¥çµBP瀟 æ¥çµãœãããŠãšã¢ ç¹é ç¹é2 ã5 å·çã æ¥çµBP瀟 JavaããŒã«å®å
šçè§£ 第2éšãææ°Eclipseã§è¯ãJavaããã°ã©ã ãæžãã å·çã ã©ã€ãã©ãª Baseunits for Scala äœè
ã åŠãã ããš DDDã«ã€ããŠã¯ãDDDã®åºæ¬ååãäž»èŠãªæŠå¿µã®èª¬æããå§ãŸããã©ã®ããã«ã¢ãŒããã¯ãã£ã®ãã¿ãŒã³ã«åœ±é¿ãäžãããããŸãDDDãéçºã®å¹çåãšå質åäžã«ã©ã®ããã«å¯äžããããåŠã³ãŸããã ãã®åŸã®çµç¹ãã¿ãŒã³ã«ã€ããŠã¯ãã©ã®ããã«ãã¡ã€ã³èšèšãšçžäºäœçšããéçºå¹çã®åäžã«å¯äžãããã詳ããã話ãããã ããŸããã DDDã®ã話ã®éã«ã¯ããŠãŒã¶åŽã«ãšã£ãŠéèŠãªéšåã¯å¿
ãããã³ã¢ãã¡ã€ã³ã«è©²åœããªããšãã£ããã£ãŠããŠãäºæ¥åŽãšãŠãŒã¶ã®äŸ¡å€ã¯å¥ã§ããããšã«æ°ãã€ããªããã°ãªããªããšæããŸããã å
容ã«ã€ããŠã®ææ³ è¬æŒã®çµç€ã§ã¯å®éã®éçºçŸå Žã§ãã©ã®ããã«é©çšããŠå
·äœçãªææãåºãããŸã§èª¬æããŠããã ããDDD ãšçµç¹ãã¿ãŒã³ã®çè§£ãæ·±ããéçºå¹çãšå質ã®åäžã«åœ¹ç«ãŠãããããªææçŸ©ãªå
容ã§ããã å è€ãããããã¯ãªãŒãããããŠããChatworkã§ã®åãçµã¿äºäŸãŸã§ç¥ãããšãã§ããå
·äœçã«ã€ã¡ãŒãžããããšãã§ããŸããã ããã¯ããã« æŠèŠ ããã¯ããã«ãšã¯ ããã¯ããã«ã«ã€ããŠã¯äžæãã話ãããŠãããŸãã ããã¯ããã«ãšã¯ããšã³ãžãã¢ãããŒã ã«åãããŠå
±éã®èª²é¡ã«åãçµã¿ããã®ã¹ã³ã¢ã§ç«¶ãåãã€ãã³ãã§ããããã¯ããã«ã¯ä»¥äžãç®çãšããŠå®æœããŸãã æ¥œããããš ããŒããæèããæ¥åæ¹åã«æŽ»ããããš ããŒã ã¯ãŒã¯ã®åŒ·å èå°èšå® ä»åã¯ããå質ããããŒããšããŠèª²é¡ãäœæããå®åã§ãããåŸãããªä»¥äžã®èå°èšå®ã«ããŸããã â çããã¯SFAéçºããŒã ã®ãšã³ãžãã¢ã§ãã æµå
¥æ±è·è
ã®æ
å ±ãã·ã¹ãã ãžã€ã³ããŒããããã§ãã ãããããã®ãŸãŸã§ã¯ã€ã³ããŒãã§ããã倿ãå¿
èŠã§ãã â å¿
èŠãªå€æåŠçãä»éšçœ²ã®APIã§å®è£
ãããŠããããã ä»éšçœ²ã®APIãå©çšããŠå€æããããšã«ããŸããã â ããããAPIã«ã¯ãã°ããããŸããã ãã°ã«ããåºåããŒã¿ãæå³ããªãçµæãšãªãããã æ£ãã圢ã«å€æããããã°ã©ã ãäœãããšã«ãªããŸããã â ãŸããAPIã«ãã°ãå€ãä»éšçœ²ã¡ã³ããŒãå°ã£ãŠããã®ã§ã ãããããªå
¥åå€ã§ãããã°ããŠååããããšã«ãªããŸããã 課é¡ã®è©³çް 以äžã§ãä»ååãçµãã 課é¡ã玹ä»ãããŠããã ããŸãã åãæ±ãAPIã¯2çš®é¡ååšããŠãããããããã®åºåçµæã«èª€ãããããŸãã åå è
ããããããã®APIåºåãæ£ããä¿®æ£ããããã°ã©ã ãäœæããŠåŠçã®äžã«å·®ã蟌ã¿ãä¿®æ£æžã¿åºåçµæãåçãšããŠæåºããŸãã ãŸããããããã®APIã«å¯ŸããŠç¹å®ã®å
¥åå€ãäžãããšããããããçšæãããäŸå€ã³ãŒããè¿åŽãããŸãããããã§ããã ãèŠã€ãåºãã®ã課é¡ã®ç®çã«ãªããŸãã éå¶åŽãçšæããŠããªãäŸå€ãèŠã€ããå Žåã«ã¯ãå ±åããããšã§ããŒãã¹ç¹ãå
¥ããŸãã äžèšã®ã«ãŒã«ã§ã1ããŒã 3ã4人ã®å¶éæé2æéã§éå¬ããŸããã ããã«äžã®æ§å åããŒã ãæŽ»çºã«ã³ãã¥ãã±ãŒã·ã§ã³ããšãã€ã€ã圹å²åæ
ãããŠèª²é¡ã«åãçµãã§ããŸãããä¿®æ£ããã°ã©ã ã®å®è£
ãšãšã©ãŒèª¿æ»ã§åããŠããããŒã ãå€ããå
šäœçµ±æ¬ã«äººå¡ãå²ããŠããããŒã ããããŸããã äžäœã®ããŒã ã¯ãäœæ¥å
容ã®èªèåãããäžå¯§ã«è¡ãã€ã€çŽ æ©ã圹å²åæ
ãããããšã§ã¿ã€ã ãã¹ãåæžããŠããŸãããããã¯å®åã§ã掻ããããåãã§ããã ã»ãã·ã§ã³ ã»ãã·ã§ã³ã«ã€ããŠã¯å æ¬ãã話ãããŠãããŸãã ä»åã®ã»ãã·ã§ã³ã§ã¯3åã®æ¹ããå¹
åºãåéã®çºè¡šãããŸããã speakerdeck.com speakerdeck.com speakerdeck.com æåªç§ã®çºè¡šã«ã€ã㊠æåªç§ã®çºè¡šã¯ Nalysysã°ã«ãŒãã®æ¡çããã®ããã®åŠçãæ¬åœã«é
ãã§ããïŒ ~ç¡é§ãçãé人ã«ãªãã~ãã§ãããåããããããé¡åããèå³ãæ¹ãããŸãã çºè¡šå
容 åŠçé«éåã®ã¢ãããŒããäžèš4段éã«åããŠèª¬æããŸããã ãç¡é§ãã®ããªã€ãæãåã åŠçã®é
ãåå ãç¹å®ããïŒèšæž¬ïŒ é«éåã®ããã®ææ®µãèããå®è£
ãã å®è£
ããé«éåã®å¹æã枬å®ãã ææ³ åŠçãé«éåããæ¹æ³ã¯åå ãç¶æ³ã«å¿ããŠç°ãªãããæ³¥èããã£ãŠããå¿
èŠããããšããäžã§ãå®éã«æ¡çãããé¢ãã£ãé«éåã®äºäŸã玹ä»ããŠãããŸãããçºè¡šã§ç¹ã«å°è±¡ã«æ®ã£ãã®ã¯ãç¡é§ãæãåãããã«ã¯åŠçæéã®äºæž¬ç²ŸåºŠãäžããããšãå¿
èŠã§ãèšç®éã«ã€ããŠåŠã¶ã®ãšããã现ããå
éšã®ä»çµã¿ãåŠãã§äºæž¬ããã»ã³ã¹ã磚ãããšã§ããããã¡ãããã®åŸã«äºæž¬ã ãã§çµããã®ã§ã¯ãªããèšæž¬ãŸã§ããããã«ãšãã£ããã£ãŠããŸããããã®2ã€ãå匷ããŠããŸãã¯ç¡é§ãæãåãå
èŠã磚ããŠãããããšæããŸãã LT LTã«ã€ããŠã¯äžæãã話ãããŠãããŸãã çºè¡šäžèЧ ä»åã®LTã§ã¯6äººã®æ¹ããå¹
åºãåéã®çºè¡šãããŸããã speakerdeck.com speakerdeck.com speakerdeck.com speakerdeck.com speakerdeck.com speakerdeck.com æåªç§ã®çºè¡šã«ã€ã㊠å質ãããªãªãŒã¹åªå
ããæ«è·¯ (å±±å çŽèŒãã) æŠèŠ ãã¡ãã®çºè¡šã§ã¯ãå質ãããªãªãŒã¹ãåªå
ããŠå®è£
ãããšäœãèµ·ããã®ã3ã€ã®ã±ãŒã¹ã§ç޹ä»ããã ããŸãããå
·äœçã«ç޹ä»ãããŠããã±ãŒã¹ã¯ã以äžã®éãã§ãã äžå
·åä¿®æ£ã®ããã«æ¬çªç°å¢ã®ã³ãŒããçŽæ¥ããã éå»ã«ä¿®æ£ããäžå
·åãåçºãã ã€ã³ãã©ç°å¢æ§ç¯ãIaC䜿ããã«GUIã§äœæ æé ãæ®ããŠãªããããç°å¢ãå£ããŠãåçŸã§ããªã ãšã©ãŒã¬ãã«ãèããã«ãšã©ãŒéç¥ãèšå® éç¥ãå€ãããŠéèŠãšã©ãŒã«æ°ã¥ããªã å®éã«ãã£ãŠããŸã£ããèŠãããããšããã£ãããšã身ã«èŠãã®ãããšã³ãžãã¢ã¯å€ãã£ãããã§ãã åŠãã /èããããš åããŠäœ¿çšããã€ã³ãã©ãªãœãŒã¹ã ãšããŸãGUIã§äœã£ãŠã¿ãŠããIaCã§åçŸãããšããæé ãèžãããšããããšæããŸããã§ããããšãªãäžããIaCã§é 匵ãããGUIã§ã®èšå®ã䞊è¡ããŠIaCã§æžããŠããã®ãäžã€ã®å¯Ÿçã«ãªããšèããŸãããå
šäœãéããŠã ãäžæŠããããšãããããããåŸã§ããã¯å°å°ããªããã°ãªããªããšæããŸããã DRYååã誀ã£ãçµæçãŸããæè¡çè² åµ (éäž æãã) æŠèŠ ãã¡ãã®çºè¡šã§ã¯ããteratailãã§ã®äºäŸãå
ã«ãåäžè²¬åãèæ
®ããã«èª€ã£ãDRYååã«åŸã£ãŠå®è£
ããéã®åé¡ç¹ãšæ¹åæ¹æ³ã玹ä»ããã ããŸããã å
·äœçã«ã¯ãäžã€ã®ã³ã³ããŒãã³ãã« <a> ã¿ã°ãš <button> ã¿ã°ãåºãåããããŠããäºäŸã§ãããããã«ãã以äžã®åé¡ç¹ãçããŸãã å
éšã³ã³ããŒãã³ãå¶åŸ¡çšã®Propsãééãªã远å ããã å¶åŸ¡å€æ°ãå€ããªããããŠå
éšå®è£
ãè€éã«ãªã ä»ã®ã©ã€ãã©ãªã®çµã¿èŸŒã¿ããã¥ãããªã åŠãã /èããã㚠以åAtomic Designã§å®è£
ããŠãããããžã§ã¯ãåç»æã«ã倧éã®Propsãæã£ãŠãããã¿ã³ã«ééããŸãããã©ããåå©çšãããéšåãªã®ãåããã¥ãããPropsã§ã®å¶åŸ¡éãå€ãããŠäžããå®çŸ©ããŠãå€ãããªãã®ã§ã¯ã»ã»ã»ãšæããã»ã©ã§ãããä»åã®çºè¡šã«ç
§ãããŠèããŠã¿ããšã å®ã¯ <a> ã¿ã°ãªã©ã®å¥ã¿ã°ãšããŠåãåºãã¹ãæ©èœãæã£ãŠãã ãã¿ã³ãšããŠãåäžè²¬åãèæ
®ããŠã³ã³ããŒãã³ãåå²ã§ãã ãšããå¯èœæ§ããããŸããDRYãšåäžè²¬åã¯ãããããšããã«ã€ããŠåãã®ã§ã泚æããŠå®è£
ãé²ããå¿
èŠæ§ãæããŸããã æèŠªäŒ ããã¯ãã§ã¹çµäºåŸã¯ãæèŠªäŒãéå¬ããã¶ãã寿åžãã±ãŒããé£ã¹ãªããçºè¡šè
ãžè©±ãèãã«è¡ã£ãããä»ããŒã ã®æ¹ãšäº€æµãæ·±ããŠããæ§åãèŠãããŸããã æåŸã« ä»åã®èšäºã§ã¯ãããã¯ãã§ã¹ããåŠãã ããšãææ³ãæžãããŠããã ããŸãããå è€æœ€äžããã®è²Žéãªã話ãèãããã瀟å
ã®ãšã³ãžãã¢ããæ®æ®µã¯èããªã話ãèããŠéåžžã«é¢çœãã£ãã§ãã 瀟å
ã§æè¡ããŠããŠã®å
±æãè¡ãªãã€ãã³ãããã£ãããå€éšããèåãªæ¹ããåŒã³ããŠè²Žéãªè©±ãèããç°å¢ã®ã¬ãã¬ãžãŒãºã§çãããäžç·ã«åããŠã¿ãŸãããïŒ ã¬ãã¬ãžãŒãºã«å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯ããã¡ããããšã³ããªãŒããé¡ãããŸãïŒ
ã¯ããã« æ¬èšäºãã芧ããã ãããããšãããããŸããã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ ã¬ãããã¯éçºéšã®äžæµŠã§ãã 4æäžæ¬ã6ææ«ãŸã§ã®2ã¶æåã«ãããŠãåŒç€Ÿã¬ãããã¯éçºéšã«ãŠãããã³ããšã³ããšã³ãžãã¢è²æPJããšé¡ããŠããã³ããšã³ãããªãŒãã§ãã人æãè²æãããããžã§ã¯ãã«åç»ããŸããã®ã§ããã®å
容ã«ã€ããŠã玹ä»ããŸãã èæ¯ çŸåšãã¬ãããã¯ã§ã¯çæ³ã®ã·ã¹ãã ãç®æããŠå€§èŠæš¡ãªãã¥ãŒã¢ã«ãèšç»çã«é²ããŠãããããã³ããšã³ãããªãŒãã§ãã人æãå¢ããããšã§ããããªãã¥ãŒã¢ã«ã®å éãå³ãããšããŠããŸãã ããã§ãããã³ããšã³ããšã³ãžãã¢è²æPJã§ã¯2ã¶æåãšããæéã§ãã£ã€ãè²æã«ã³ããããããŸãã¯èªèµ°ãã€ã€äžå®ã®å質ã§ã¢ãŠããããã§ãããšãããŸã§è²æå¯Ÿè±¡è
ã®ã¬ãã«åŒãäžããããšããŽãŒã«ãšããŸããã æ¹éãšããŠã¯ä»¥äžã®é åïŒèµ€ç·éšåïŒã®ããŒã¹ãšãªãç¥èãåŸãããã«åºãæµ
ã䌞ã°ããŠããã€ã¡ãŒãžã§ãã â»ã ã¢ãã³ããã³ããšã³ãéçºè
ã«æ±ããããã¹ãã«ãšã¯ ãããåŒçš å®éã«ã¯ãTypeScript + React + Next.js + MUI ã§å®éã«éçºãã€ã€ãäžèšã®é åãåŠç¿ããã€ã€ç€Ÿå
ã«çºä¿¡ãããšããããšããã£ãŠããŸãããå
·äœçãªå
容ã«ã€ããŠã¯åŸè¿°ããŸãã ãããžã§ã¯ãã«åç»ããè²æå¯Ÿè±¡ã®ã¡ã³ããŒã¯ç§å«ã4åã§ãããããããããã³ããšã³ãã®çµéšãæµ
ãã¡ã³ããŒã§ãã¬ã¬ã·ãŒãªç°å¢ã§éçºãããŠããã¡ã³ããŒããå¶æ¥ããç°åããŠããã¡ã³ããŒãŸã§ããã¯ããŒã³ã¯æ§ã
ã§ãã ç§ã¯äººããæè¬ãããä»äºãããããšèããŠãããããæ¥åãšããŠãã人ã«è¿ããããžã¡ã³ãæ¥åãã¡ã€ã³ã§ãããŸã§æ
åœããŠããŸããããã ããããžã¡ã³ãæ¥åãçµéšããŠããäžã§ããšã³ãžãã¢ãšããŠäººããæè¬ããã䟡å€ã®ããä»äºãããããã«ã¯ããã£ãããšããæè¡çãªããã¯ããŒã³ãç¡ããŠã¯ãããªãã®ã§ã¯ãšèããããã«ãªããŸããã ãã®äžã§ãäžé·ãããã®ãããžã§ã¯ããžã®æšèŠãããã ããããšããã£ããã«åç»ã«è³ããŸãããã¡ãªã¿ã«ãããã³ããšã³ãã®çµéšãšããŠã¯HTMLïŒCSSïŒjQueryãå€å°ããã£ãããšãããçšåºŠã§ããã ã«ã®ãšãªã£ãã®ã¯å§åçã¢ãŠããããé ãã®ãããžã§ã¯ãã§ç¹çãã¹ãã¯ãšã«ããã¢ãŠããããã«ã³ããããåã£ããšããç¹ã§ãã ãã£ãã2ã¶æåã§ã®ã¢ãŠããããã䞊ã¹ããšä»¥äžã®éãã§ãã GitHubãšé£æºããéçºçç£æ§å¯èŠåã¢ããªã±ãŒã·ã§ã³ã®æ°èŠéçºïŒ1ã¶æïŒ æ¢åã§çšŒåããŠããå¶æ¥æ¯æŽããŒã«ã®ãªãã¬ã€ã¹ïŒ1ã¶æïŒ 4åã®æžç±ãštype-challengesã®å
容ã§QiitaèšäºãäœæïŒèš48èšäºïŒ 4åã®æžç±ãštype-challengesã®å
容ã§ç€Ÿå
å匷äŒãéå¬ é±1åã®ã¬ãã¥ãŒäŒã§ã®ææç©ã®ãã¬ãŒã³ éçºçç£æ§å¯èŠåã¢ããªã±ãŒã·ã§ã³ã®æ°èŠéçº ãŸãæåã®1ã¶æã§ä»¥äžã®ãããªéçºçç£æ§ãå¯èŠåããã¢ããªã±ãŒã·ã§ã³ãéçºããŸããã ããæè¿ã§åŒç€Ÿã®éçºçµç¹ã§ã¯éçºçç£æ§ãå¯èŠåããããšããæ°éãé«ãŸã£ãŠããŠããããã®æµããæ±²ãã§ç€Ÿå
åãã«TypeScript + React + Next.js + MUIã§æ§ç¯ããŸããã ãã®ã¢ããªã±ãŒã·ã§ã³ã¯GitHubãšé£æºããŠãããGitHubããååŸããããŒã¿ãããšã«Four Keys Metricsããã®ä»PRæ°ãªã©ã®çç£æ§ã«é¢ããææšãã°ã©ãã§å¯èŠåã§ããããã«ããŠããŸãã å¶æ¥æ¯æŽã·ã¹ãã ã®ãªãã¬ã€ã¹ éçºçç£æ§å¯èŠåã¢ããªã±ãŒã·ã§ã³ã瀟å
ãªãªãŒã¹ããåŸã®1ã¶æã§ã以äžã®ãããªæ¢ã«çšŒåããŠããå¶æ¥æ¯æŽã·ã¹ãã ã®ãªãã¬ã€ã¹ãè¡ããŸããã ãã¡ãã¯ã¬ãããã¯ãã£ãªã¢ã«ç»é²ããæ±è·è
ããæ±äººã«å¿åããããšãŒãžã§ã³ãããæ±äººã®ææ¡ãåãããããããšãã§ããã·ã¹ãã ã§ããããã¡ããTypeScript + React + Next.js + MUIã®æ§æã§ãªãã¬ã€ã¹ããŸããã åè¿°ããéçºçç£æ§å¯èŠåã¢ããªã±ãŒã·ã§ã³ã§ã¯ç€Ÿå
åããšããããšãããæ¯èŒçã·ã³ãã«ãªä»æ§ã§ãããããã¡ãã¯å®éã«ãµãŒãã¹ãšããŠé·ããæ¬çªçšŒåããŠããã·ã¹ãã ã§ãã£ãããããããã¯ã·ã§ã³ã³ãŒãç¹æã®è€éãªããžãã¯ã®å®è£
ãçµéšããããšãã§ããŸããã Qiitaèšäºã®äœæ äžè¿°ãã2ã€ã®ã·ã¹ãã éçºãšäžŠè¡ããŠã type-challenges ãšä»¥äžã®4åã®æžç±ãåŠç¿ããã®å
容ãQiitaã®èšäºãšããŠãŸãšããŸããã ãããç®æã人ã®ããã®TypeScriptå
¥é ïŒéç§° ãã«ãŒããªãŒæ¬ïŒ TypeScriptãšReact/Next.jsã§ã€ããå®è·µWebã¢ããªã±ãŒã·ã§ã³éçº ããã³ããšã³ãéçºã®ããã®ãã¹ãå
¥é ããã³ããšã³ãéçºã®ããã®ã»ãã¥ãªãã£å
¥é äœæããèšäºã¯èš48èšäºã§ãåã
人ã1ã¶æã«6èšäºãéçºãšäžŠè¡ããŠäœæããèšç®ã«ãªããŸããäœæãããèšäºã¯ç€Ÿå
ã«å
¬éãããŠãããReact ã Next.js ãæ¡çšããŠããéçºããŒã ã§ãæè¡ã®ãã£ããã¢ããã§å©çšãããŠããŸãã 瀟å
å匷äŒã®éå¬ åŠç¿ããå
容ãããšã«ã瀟å
ã§å匷äŒãéå¬ããŸãããè²æã¡ã³ããŒã¯å
šå¡ç»å£ããåã
ã§åŠç¿ããå
容ããã¬ãŒã³ããŸããã speakerdeck.com ãã®ãããªã¹ã©ã€ããããšã«çºè¡šããŸããããåŒç€Ÿã§ã¯TypeScriptãæ¡çšããŠããéçºãå€ããããç¹ã«type-challengesã®å
容ãåé¿ãããã£ãã§ãã é±1åã®ã¬ãã¥ãŒäŒã§ã®ãã¬ãŒã³ ãããŸã§è¿°ã¹ãéçºãšåŠç¿ã«é¢ããŠãèšäºã®äœæãå匷äŒãšã¯å¥ã«é±1ã§ææç©ã®ã¬ãã¥ãŒäŒã宿œããŸããã ãã¡ãã¯å®éã®æ§åãåççã§ãèŠãã§ããæ®å¿µã§ãããçµç¹ã®ãããŒãžã£ãŒãšããã¯ãªãŒããæãéçºããæ©èœããã¢ã§èŠããããåŠç¿ããå
容ã«ã€ããŠã®åŠã³ãæ°ã¥ããå
±æããã¢ããã€ã¹ããããããšã宿œããŸããã è²æããŒã ã®ææç©ã鱿¬¡ã§ç€Ÿå
ã«Slackã§å
¬éããã¢ãŠããããããææãå
±æããŸããã åŒç€Ÿã¯ææŠãã人ãåŠå®ããè®ããæåãæµžéããŠãããSlackãªã©ã§å€ãã®ããžãã£ããªãªã¢ã¯ã·ã§ã³ããããããšãã§ãããããæåŸãŸã§ã¢ãããŒã·ã§ã³é«ãããåãããšãã§ããŸããã ãããžã§ã¯ããéããŠèŠããå¯èœæ§ ç§èªèº«ããã®ãããžã§ã¯ãã«åç»ããåã¯ãéçºã§ããã³ããšã³ãã«çµ¡ã課é¡ãèŠæ±ãçºçããéã¯è§£æ±ºçããããããçŸå Žã®æ¥åå§èšãä»ããŒã ã®æèè
ã«æè¡çãªã¢ããã€ã¹ããã«ããããæ±ããŠããŸããã ãããå®éã«ãããžã§ã¯ããçµããŠã¿ãŠãããã³ããšã³ãã«å¯Ÿããèªå·±å¹åæãæããã«ã€ãã倧æµã®ããšã¯èªèµ°ããŠè§£æ±ºã§ããããã«ãªã£ã宿ããããŸããããã¯ã2ã¶æéããã³ããšã³ãéçºã«ã©ã£ã·ã浞ããããšã«ããå€ãã®ã¢ãŠãããããåºããŸãã£ãããšããçãŸããèªä¿¡ãæé·ã«ãããã®ã ãšèããŠããŸãã çŸåšã¯æ°ãããããžã§ã¯ãã«åç»ããããŒã ã¡ã³ããŒãšæ¥ã
èšèšã«é¢ããè°è«ã亀ããã€ã€ãNext.jsã®App Routerãå©çšããéçºã«åãçµãã§ããŸãã ããã³ããšã³ããšã³ãžãã¢è²æPJãéããŠåŸãçµéšã¯ãããŸã§ããã£ããã§ãããªããšæã£ãŠããŸããçµç¹ã®ããã³ããšã³ãéçºã®å
é ã«ç«ã¡ããã£ãšãšã³ãžãã¢ãªã³ã°ã®ã¢ããçµç¹ã«ããŠãããããçãäžããŠãããŸãã ãããã« ã芧ããã ãããããšãããããŸãããåŒç€Ÿã§ã¯ä»çµç¹ãšããŠãšã³ãžãã¢ãªã³ã°ãžã®ç©æ¥µæè³ãé²ããŠãããããã³ããšã³ããšã³ãžãã¢è²æPJããã®æèã«ããåãçµã¿ã§ãã åè¿°ã®éãææŠãåŠå®ããè³è³ããæåãããããããããšããé¢ã§ãããžãã£ãã«ãã£ã¬ã³ãžã§ããç°å¢ããããŸãã ãã®èšäºãéããŠå°ãã§ãåŒç€Ÿã«èå³ãæã£ãŠäžãã£ãæ¹ã¯ãã² æ¡çšãµã€ã ãã芧ãã ããïŒ
ã¯ããã« ãããã«ã¡ã¯ãã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿãã¯ãããžãŒæŠç¥å®€å®€é·ã®ç«¹äžçŸ©æã§ãã ãšã³ãžãã¢ã®çç£æ§ãé«ããããããµãŒãã¹ãæäŸããããã«ããšã³ãžãã¢å
šå¡ã«GitHub Copilotãå°å
¥ããŸãããä»åã¯å°å
¥éçšã§ããã£ãGitHub Copilotã䜿ãããªãããã®ç¥èŠã赀裞ã
ã«å
¬éããŠãããããšæããŸãã GitHub Copilotå
šãšã³ãžãã¢å°å
¥èæ¯ äŒç€Ÿã®æ¹é ãã¬ãã¬ãžãŒãºã§ã¯äž»èŠãµãŒãã¹ã§ãã ã¬ããã㯠ã ã¬ããŠã§ã« ã CareerTicket ã WeXpats ãªã©ã®äººæãµãŒãã¹ãã¯ãããæè¿ã§ã¯ãªã³ã©ã€ã³èšºçãµãŒãã¹ã® ã¬ãã¯ãª ããªãªãŒã¹ãããªã©åœãæ¥çã«é¢ãããäºæ¥æ¡å€§ãé²ããç念ã§ããã顧客ã®åµé ãéããŠãé¢ä¿è
å
šå¡ã®å¹žçŠã远æ±ããååäººã®æé·ãä¿ããã远æ±ããŠããŸãããã®ããã«ãéçºçµç¹ã匷åããããæ©ãããè¯ããµãŒãã¹ã®å®çŸãç®æããŠããŸãã ãè¿å¹Žã GitHub Copilot ãå§ãã OpenAI ChatGPT ã Google Bard ãªã©æ§ã
ãªGenerative AIãç»å ŽããŠãããAIãæ¥åã«åãå
¥ããããšã§ãæ¥åã®å¹çåãæ§ã
ãªåéã§é²ãã§ãããšèããããŸããæã
ã¯çŸåšãã©ãã€ã ã·ããã®çã£åªäžã«ãããšèããŠããããã®æ°ããæè¡ãããã«äœ¿ãããªããŠããããä»åŸã®æåã®éµãæ¡ã£ãŠãããšèããŠããŸãããã®ããããŸã è©äŸ¡ã®åºãŸã£ãŠããªãæè¡ã§ã¯ãããã®ã®ã瀟å
ã§AIã¬ã€ãã©ã€ã³ãçå®ããæå€§éAIãæŽ»çšããŠãããããšèããŠããŸãã GitHub Copilotã®éžå® ãGitHub Copilotãéžå®ããã®ã¯ãGenerative AIã®äžã§çŸæç¹ã§æããšã³ãžãã¢ãªã³ã°ã®å¹çåã«å¹æãé«ããšèããããã§ãã äž»ãªçç±ã¯ä»¥äžã®4ç¹ã§ãã ãããŒãç¶æã§ãããããæ¥åå¹çãäžãããéçºè
äœéšã®åäžã«ã€ãªãã (ãããã)ã³ãŒãçæAIãšããŠæãæ§èœãè¯ã GitHubãåºãã調æ»çµæããè¯å¥œãªçµæ å人ã§ã䜿ã£ãŠããããšãŠãäŸ¿å© ãããŒãç¶æã§ãã ãå°å
¥ããçµææ¥åå¹çã®äœäžãèµ·ããŠããŸããšæå³ããããŸãããGitHub Copilotã¯åçš®IDEã®ãã©ã°ã€ã³ãæäŸãããŠãããåŒç€Ÿã§å©çšããŠããVS CodeãIntteliJãPHP Stormãå§ãäž»èŠãªIDEãããã¹ããšãã£ã¿ã«å¯Ÿå¿ããŠããŸãããã®ãããIDEã®äžã ãã§å®çµããããããšã³ãžãã¢ã®ãããŒã劚ããŸãããCopilotäžæ
£ããªå Žåã§ããæ®éã«äœ¿ãã ãã§åŒ·åãªè£å®æ©èœãšããŠå©çšéå§ã§ãããããæ¥åå¹çãäžããå¯èœæ§ã¯äœãã§ãã ããŸããChatGPTãªã©ã®WebãµãŒãã¹åã®Generative AIã®å Žåã¯ããã©ãŠã¶ãšèšã£ããæ¥ãããããããããŒã厩ããŠããŸããæ¥åå¹çãäœäžãããŠããŸãå¯èœæ§ããããŸããããã«ãé©åãªã¿ã€ãã³ã°ã§é©åãªããã³ãããèšè¿°ããŠè³ªåãæããã¹ãã«ãå¿
èŠãªãããããçšåºŠã®AIãªãã©ã·ãŒãç¡ããšå¹çãäžãããããªãå¯èœæ§ããããŸãã ã³ãŒãçæAIãšããŠæãæ§èœãè¯ã ãã³ãŒãçæAIãšããŠã¯ãä»ã«ã¯ Amazon CodeWhisper ãæåã§ããæ§èœæ¯èŒã¯ããŠããªãã®ã§ããã ãã¡ãã®èšäº ã ãšæ¥æ¬èªãæªããã£ããã åãããã£ãã ã ã£ããããããã§ãã¢ã«ãŽãªãºã ãChatGPTã§ãåŠç¿ããŒã¿ãšããŠãGitHubã®ããŒã¿ããã¡ãŒã¹ãããŒãã£ãŒãšããŠäœ¿ããGitHub Copilotãæãæ§èœãè¯ããšå€æããŸããã GitHubãåºãã調æ»çµæ ãããŒã¿ãšããŠãã GitHubã®èª¿æ»çµæ ãå
¬éãããŠãããããã§ãéçºå¹çãäžãã£ããšã¬ããŒããããŠããŸãã å人ã§ã䜿ã£ãŠãã ãGitHub CopilotãåºãçŽåŸããå人ã§è¶£å³ã®å®è£
æã«äœ¿ã£ãŠããŸãããäœæå€ãšããŠãGitHubã®èª¿æ»ãšä¹é¢ããªããããªãã³ãŒãã£ã³ã°ã®å¹çãäžãã£ã宿ããããŸããã å°å
¥éçš ããšã¯ãããã¬ããŒããå€éšã®æ
å ±ãããªãããããªãå
šãšã³ãžãã¢ã«å±éããã®ã¯é£ããã£ãããããŸãã¯äžéšã®ããŒã ã«ã ãæäŸãå¹ææž¬å®ãè¡ããŸãããããŒã åäœã§ããã€ãã®ããŒã ã«å°å
¥ãã3é±éã»ã©è©ŠçšããŠããã£ãäžã§å®æ§è©äŸ¡ã®ããã®ã¢ã³ã±ãŒãã®å®æœãè¡ããŸããããã®çµæãéçºå¹çãäžãã£ããšãã人ã¯ãããã9å²ä»¥äžã®äººãéçºå¹çãäžãã£ããšåçãããããå
šãšã³ãžãã¢ãžã®å°å
¥ã«èžã¿åãããšã«ããŸããã ã¢ã³ã±ãŒãããèŠããéçºå¹çãé«ããæ¹æ³ åæææ³ ãåæã®ããã«ã詊çšããŠããã£ãããŒã ã¡ã³ããŒãžã¢ã³ã±ãŒãããšããŸãããã¢ã³ã±ãŒãé
ç®ã¯ãå¹çåãããã©ãããããé«ãå¹çåã«æåãã人ãã©ã®ãããªäœ¿ãæ¹ãããŠãããããŸãã¯ã©ã®ãããªç°å¢ãç¶æ³ã§äœ¿çšããŠããããèŠã€ããããšã«çŠç¹ãåœãŠãŠäœæããŸããã ãã¢ã³ã±ãŒãã§ã¯ä»¥äžã®é
ç®ãèããŸããã items ãã¢ã³ã±ãŒãçµæã¯ãpython+pandasã䜿çšãæ°å€åãšãone-hot encoding(ãããŒå)åŠçãè¡ã£ãåŸãGoogleã¹ãã¬ããã·ãŒãã§ãå¹³åå€çã®çµ±èšåæããåã¢ã³ã±ãŒãé
ç®å士ã®çžé¢å€ããããäœæããŸããã(pandasã§ã¯ ãããªæãã®åŠçããŠãŸã ) çµæ çµ±èšå€ ãCopilotã®ç¶ç¶å©çšã¯è©äŸ¡1~5ã§ãå¹³å4.51ã§ããããŸããã³ãŒãã£ã³ã°å¹çãäžãã£ããã©ããã¯ãäžãã£ããšçãã人ã¯0人ã1,2å²ä»¥äžäžãã£ããšçãã人ã¯å
šäœã®70%ã«éããŸããã rating coding_efficiency ã«ã©ã éçžé¢å€ããã corel-map èµ€æ ã§å²ã£ãåããã³ãŒãã£ã³ã°å¹çãšã®çžé¢ã瀺ããŠããŸããé»è²ãå²ã£ãããããçžé¢å€ãé«ãåºãŠãã çæã³ãŒãããã¬ãã¥ãŒã¯ãããä¿®æ£ã¯ããã«å©çš ãã¹ãã³ãŒãã®äœæã§ã®å¹çãäžãã£ã人 ããããã0.5ã0.4çšåºŠã®çžé¢å€ã«ãªã£ãŠããŸãã ãã®ãããæ¬¡ã®ããšãèšãããšèããŠããŸãã GitHub Copilotã®çæã³ãŒãããã®ãŸãŸäœ¿ã£ãŠãã人ã»ã©ã³ãŒãã£ã³ã°å¹çãåäžãã ãã¹ãã³ãŒãçæã«äœ¿ã£ã人ãã³ãŒãã£ã³ã°å¹çãåäžãã ããªãŒããã¹ãããã®èå¯ ãé«ãå¹çåãã§ãããšæããŠãã人ã®ã³ã¡ã³ãã ããæãåºããå
±éé
ãæ¢ããŸããããããããšãããã³ã¡ã³ããæžããŠã³ãŒããçæããŸãã¯ãã³ãŒãããã³ã¡ã³ããçæããŠãã人ãå€ãããŸããã çµè« çµæãç®æ¡æžãã«ãããš 9å²ã®äººãå°å
¥ã«æºè¶³ããŠãã GitHub Copilotå°å
¥ã«ããéçºå¹çã¯äžãã£ã人ã¯ããªã 7å²ä»¥äžã¯äœæã§ãããããã³ãŒãã£ã³ã°å¹çãé«ãŸã£ã GitHub Copilotã®çæã³ãŒãããã®ãŸãŸäœ¿ããŠãã人ã»ã©ã³ãŒãã£ã³ã°å¹çãåäžãã ãã¹ãã³ãŒãçæã«äœ¿ã£ã人ãããã³ãŒãã£ã³ã°å¹çãåäžããŠãã å¹çã倧å¹
ã«äžãã£ã人ã¯ãã³ã¡ã³ããæžããŠã³ãŒããçæããŸãã¯ãã³ãŒãããã³ã¡ã³ããçæã«å©çšããŠãã ãçŸæç¹ã§GitHub Copilotãäžæã䜿ãã³ããšããŠã¯ããã¹ãã³ãŒãã®çæããã³ã¡ã³ãããã®ã³ãŒãçæãã³ãŒãããã®ã³ã¡ã³ãçæãªã©ãäžå¿ã«ã人ãä¿®æ£ããªããŠãè¯ãã³ãŒããäžæãGitHub Copilotã«çæãããããã°ãé«ãã³ãŒãã£ã³ã°å¹çã®åäžãèŠèŸŒãããšããããšãèšããããšæããŸãã äœè« GitHubã®Activityã¯ãŸã åæã§ããŠããªã ãGitHubã®Activityãåéãåæãé²ããŠããŸããããŸã å®éçãªçµæãŸã§ã¯åºããŠããŸãããä»åŸãç¶ç¶ããŠããŒã¿åéããŠãããããšèããŠããŸããäžå¿ããCopilotã䜿ãããŒã ã®åºãPullRequestæ°ããCopilotã䜿ã£ãŠããªãããŒã ããå€ããªã£ããããšã«ææå·®ã¯åºãŠããŸãããå®éçãªçµæãšã¯èšãããããŒã¿ã®æ£ç¢ºæ§ãæ€èšŒããããŠããªãã®ã§ãåèãŸã§ã«ãé¡ãããŸãã è²»çšå¯Ÿå¹æ(ã¯ãœéæŠç®) ãGitHub Copilot for Businessã¯æé¡$18ã§å¹Žé$216ãå·çæç¹ã®çºæ¿1ãã«142.46åã§ã¯æ¥æ¬åã«ããŠ30771.36åã§ãã ãäžæ¹ãæ¥æ¬ã®ITãšã³ãžãã¢ã®å¹³å幎åã¯442äžåãšãªãããããã®å¹³åããç®åºããã幎é3äžååã®å¹çåéæã«ã¯ã 3 / 442 = 0.006 = 0.6%ãšãªãã0.6%以äžå¹çãäžãããªãGitHub Copilotã䜿ãã»ãããåŸãšãªããŸããå®éè©äŸ¡ã¯é£ãããã®ã®ã0.6%以äžã®äœæ¥å¹çã¯äžãããšç¢ºä¿¡ããŠããŸãã ããGitHub Copilotã䜿ãããªãããã®ãã¯ã¹ãã¢ã¯ã·ã§ã³ å
šãšã³ãžãã¢ã§ã®ããŠããŠã®å
±æã®åãçµã¿ ãåã
ã§èŠã€ããã³ããäœ¿ãæ¹ãå
±æããæè¯ããŠãããã°ãšèãããã€ãã®æœçãç¶ç¶äºå®ã§ãã åžžèšã¢ã³ã±ãŒããšããã¯ãããžãŒæŠç¥å®€ã«ããäœ¿ãæ¹ã®ã³ãã®ãµããªãŒå
±æ ãåžžã«GitHub Copilotãäžæã䜿ãã³ããåéããã¢ã³ã±ãŒããçšæããããã«æçš¿ãããå
å®¹ãæ¯æãµããªãŒããŠå
±æããŠããäºå®ã§ãã ããŠããŠå
±æLTã®éå¬ ããŸããããŠããŠå
±æã®åŒ·åãšããŠLT倧äŒãéå¬ãèããŠããŸããã©ã€ãã³ãŒãã£ã³ã°ãªã©ãéããŠãæç« ã ãã§ã¯äŒããã¥ããäœ¿ãæ¹ãå
±æããŠãããã°ãšèããŠããŸãã 远å åæ ã å
šãšã³ãžãã¢æ¡å€§åŸã«å床ã¢ã³ã±ãŒã宿œ ã ãå
šãšã³ãžãã¢å±éåŸã«å床ã¢ã³ã±ãŒãã¯å®æœäºå®ã§ãã GitHubã§ã®Activityã®åæã®ç¶ç¶ ãå®éçãªåæãåŒãç¶ãè¡ã£ãŠãããããšèããŠããŸããã¢ã³ã±ãŒãããã ãã§ã¯åæã§ãã«ãããèšèªããã¡ã€ã³é åãªã©æ§ã
ãªèгç¹ããã®åæããã¢ã³ã±ãŒãçµæã®è£ä»ããè¡ã£ãŠãããã°ãšèããŠããŸãã ãããã« ãGitHub Copilotã®å
šãšã³ãžãã¢å°å
¥ã«ããããŠãŒã¶ãŒã«ããæ©ããããè¯ããµãŒãã¹ãæäŸã§ããããã«ãªãã ãã§ãªãããšã³ãžãã¢ã«ãšã£ãŠããéçºè
äœéšã®åäžã«ãã£ãŠããæ¥œãããµãŒãã¹éçºããŠãããããšè¯ããªããšæã£ãŠããŸãã ãä»åã¯GitHub Copilotã®æ¡çšãšã¯ãªããŸããããä»ã«ãæ§ã
ãªAIãµãŒãã¹ãç»å ŽããŠããŸãããŸãã瀟å
çŸåšã®AIãåãå·»ãç°å¢ã¯ã©ãã©ãé²åãç¶ããŠããããã£ãšè¯ããµãŒãã¹ãåºãŠãããããããŸããããªã®ã§ãä»åŸããã¬ã³ãã远ãã€ã€(远ãæããã)ãã©ã®ããã«AIãæŽ»çšããã°ããããæ¢æ±ãç¶ããããšæã£ãŠããŸãã We Are Hiring! ãã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã§ã¯ãšã³ãžãã¢ãåéäžã§ããAIãæŽ»çšããªããã®éçºããAIã®æŽ»çšæ¹æ³ãèããããšã«èå³ããæ¹ã¯ãæ¯é ãã¡ã ã®ããŒãžãããå¿åãã ããã
ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ ã·ã¹ãã æ¬éšã®ç°äžã§ãã 2023/7/11ã«ãã³ã³ãã©ããããããã£ãããšãããã³ããšã³ããããŒãã«ååå匷äŒãéå¬ããŸããã 以åã« ãšã€ããŒã ãããšéå¬ããååååŒ·äŒ ã«ç¶ãããŠä»åã connpassã§äžè¬å
¬é ããã³ã³ãã©ããããããã£ãããåŒç€Ÿã®æžè°·æ¬ç€Ÿã«ãæãããŠãªãã©ã€ã³ã§ã®éå¬ã§ããïŒ ãã®èšäºã§ã¯ãåŒç€Ÿã®ãšã³ãžãã¢ã®çºè¡šå
容ãç°¡åã«ã玹ä»ããããšæããŸãã çºè¡šå
容 åŒç€Ÿããã¯ãç§ãå«ããŠ3人ãçºè¡šããŸããã speakerdeck.com ããã³ããšã³ãããªãŒããããšã³ãžãã¢ã®è²æãç®çãšããPJã§åãçµãã ããšã«ã€ããŠã®çºè¡šã§ãã speakerdeck.com AWS CognitoãšAmplify SDKã䜿ã£ãŠããã³ããšã³ãã®èªèšŒåŠçãçéã§å®è£
ãããšããçºè¡šã§ãã speakerdeck.com Next3ãTypeScriptãurqlã䜿ã£ãŠmonorepoæ§æã§æ°èŠãããã¯ãã®éçºã«åãçµãã ããšã«ã€ããŠã®çºè¡šã§ãã We are hiring ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã§ã¯ããã³ããšã³ããšã³ãžãã¢ãããã以å€ã®ãšã³ãžãã¢ãå¹
åºãåéäžã§ãã ããä»åã®å匷äŒã®çºè¡šãèŠãŠãèå³ãæã£ãŠããã ãããªãã ãã¡ãã®ããŒãž ãããå¿åãã ããã å匷äŒã®éå¬ãéæåãä»ãäžã§ã ä»åã¯ããã³ããšã³ããããŒãã«ååå匷äŒãéå¬ããŸããããã¬ãã¬ãžãŒãºã¯ãªãŒã«ã€ã³ããŠã¹ã§éçºããŠããããã³ããšã³ããããã¯ãšã³ããã€ã³ãã©ãæ©æ¢°åŠç¿ãšå¹
åºãé åãã«ããŒããŠããã®ã§ãããã³ããšã³ãã«éããæ§ã
ãªããŒãã§ååå匷äŒãéå¬ããŠãããäŒæ¥ããŸãåéäžã§ãããèå³ããäŒæ¥ããŸãããã£ããããŸããã ãã¡ã ãŸã§ãé£çµ¡ããã ãããšå¬ããã§ãã
ã¯ããã« ããã«ã¡ã¯ã2022幎æ°åã®æ²³åã§ãã çªç¶ã§ãããçããã¯ä»ãŸã§ã©ã®ãããªéçºäœéšããããŠããŸãããïŒ åŠçæä»£ãããŽãªãŽãªã«éçºããŠãã人ãããã°ãå
šãéãè·çš®ããç¬åŠãããã°ã©ãã³ã°ã¹ã¯ãŒã«ã§åŠãã§ãšã³ãžãã¢ãªã³ã°ã«æºãã£ãŠãã人ãªã©ã人ã«ãã£ãŠãã£ãªã¢ã¯å€çš®å€æ§ã ãšæããŸãã ç§ã®å Žåã¯ãããŸã§ãåŠçã»ã€ã³ã¿ãŒã³ã»æ£ç€Ÿå¡ãšããŠã·ã¹ãã ã®éçºã«æºãã£ãŠããŸããããŸã 瀟äŒäººã«ãªã£ãŠãã1幎ãšå°ãããçµã£ãŠããããåŠçæä»£ã®çµéšãããçšåºŠã¯æ°é®®ã«èŠããŠããŸãã ãã®èšäºã§ã¯ããããªç§ãåŠçã»ã€ã³ã¿ãŒã³ã»æ£ç€Ÿå¡ã§ã®ãšã³ãžãã¢ãªã³ã°ãéããŠçæãã ãéçºäœéšã®å·®ã ãšãä»åŸã«æŽ»ãããã ã3ã€ã®åŠã³ã ãã玹ä»ããããšæããŸãã æ¥ã
ã®æ¥åã«è¿œãããéå»ãæ¯ãè¿ãããšãå¿ããã¡ã«ãªã£ãŠããæ¹ã
ããç§ããããªçµéšããã£ããªããåã¯ã©ãæé·ããŠããã ãããããšæãåºãã»èããŠã¿ããã£ããã«ãªããããªèšäºã«ãªãã°å¬ããæããŸãã èªå·±çŽ¹ä» ãŸãã¯ããã«ãèªåã®çµæŽã軜ã玹ä»ãããŠããã ããŸãã åŠçæä»£ãé«å°ã§ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ãåºãæµ
ãåŠã³ãæ
å ±ç³»ã®å€§åŠã»å€§åŠé¢ãžé²åŠããŠæ
å ±ç³»ã«ç¹åããããšãåŠãã§ããŸããã ç ç©¶ã¯ãèªç¶èšèªãšé³å£°ãšãã£ãè€æ°ã®æèŠæ¬¡å
ãæ©æ¢°åŠç¿ããããã«ãã¢ãŒãã«ææ
èªèãé¡ç®ãšããŠæ±ã£ãŠããŸãããåœæã¯ãŸã æè¿è©±é¡ã®GPTã®ãGPT-2ããè«æãšããŠçºè¡šãããæ§ã
ãªãã³ãããŒã¯ãæŽæ°ããGeneralãªLLMã®å°é ã«ã¯ã¯ã¯ã¯ããŠããæãåºããããŸãã ãã®åŸã¬ãã¬ãžãŒãºã«å
å®ãããæ©ããã瀟äŒã§éçšããæ¬æ Œçãªéçºçµéšãç©ã¿ããããšæãã2021幎ã®8æãããšã³ãžãã¢ãšããŠæ©æã®ã€ã³ã¿ãŒã³ãå§ããŸãã ã€ã³ã¿ãŒã³ã§ã¯ãæªçµéšã®ãšã³ãžãã¢ãäžå¿ã§æ§æãããæè²ç®çã®ããŒã ã«ãŠãå°ããã®ç€Ÿå
ã·ã¹ãã ãèŠä»¶å®çŸ©ã»æè¡éžå®ããèšèšã»éçºãŸã§äžéãçµéšãããŠããããŸããã ãããŠãå»å¹Ž4æã«æ£ç€Ÿå¡ãšããŠå
¥ç€ŸããçŸåšã¯æ£ç€Ÿå¡ãšããŠãè¥å¹Žå±€é åã®äºæ¥ãå±éããããã¿ã©ã¯ãã£ãããããã£ãªã¢ãã±ããããšãããµãŒãã¹ã§ãå¶æ¥è·ã䜿çšããSFAïŒSales Force AutomationïŒéçºã«æºãã£ãŠããŸãã ä»ã®ããŒã ã«ç§»åããŠããŠ1幎ã»ã©çµã£ãç¶æ
ã§ãã åŠçãšç€ŸäŒäººã®éã éçºã®ãç®çã ç§ãåŠçãšç€ŸäŒäººïŒã€ã³ã¿ãŒã³ã»æ£ç€Ÿå¡å«ãïŒã§æããéçºäœéšã®æã倧ããªéãã¯ãéçºã® ãç®çã ã§ãã ã©ã®ããã«ç®çãéãã®ã§ããããïŒç§ã®çµéšãšåãããŠãå
·äœçã«èª¬æããŠãããããšæããŸãã ç§ã®åŠçæä»£ã¯è¶£å³ãåŠæ¥ã®äžç°ã§ãç°¡å㪠2Dã²ãŒã çµã¿èŸŒã¿ã·ã¹ãã Webã·ã¹ãã AIã¢ãã«æ§ç¯ ãªã©æ§ã
ãªéçºãããŠããŸããã ãããã¯ãåŠæ¥ã§å¿
èŠã«ãªã£ãããèå³é¢å¿ã沞ãã°ãéçºããŠã¿ãïŒããšãã£ãå
·åã§ãç¹ã«å€§ããªç®æšã¯ãªã ãéçºã楜ããç®çã ã§ããããªéçºãããŠã¿ãŠããŸããã ããããã©ãããã·ã¹ãã ã宿ããŠç®çãéæããã°ãéçºãçµãããã®ãããªæ¡åŒµæ§ããªããã¢ãããŒã·ã§ã³é Œãã®åçºãªéçºã§ããã çµæãšããŠã äœãäžããã·ã¹ãã ãšããŠã®å質ã¯é«ããšã¯èšãã ã æè¡çãªæ·±æããããŸãã§ããŠããã ããŸã èªèº«ã®èœåçãæé·ãã宿ãããŸããããŸããã§ãã ã ããã«å¯ŸããŠã瀟äŒäººã§ã®éçºç®ç㯠ãå©çãçã¿åºãç®çã ãžãšå€ãããŸããã 瀟äŒäººã¯å
šå¡ãããžãã¹çãªèŠç¹ããæã€å¿
èŠããããŸãã ããã¯ãšã³ãžãã¢ãäŸå€ã§ã¯ãªããéçºããã·ã¹ãã ãå«ããŠãæçµçã«ã¯ åžå Žã«ãããŠç«¶ååªäœæ§ã確ä¿ããããµãŒãã¹ã ãäœãäžããŠãå©çãçã¿åºãç®çãã«åèŽããã·ã¹ãã ãéçºããŠããå¿
èŠããããŸãã 芳ç¹ã®å€ããšè²¬ä»»ç¯å² ç®çã«ä»éããŠã責任ããã芳ç¹ãã«ãéããçãŸããŠããŸããã åŠçæä»£ã®éçºèгç¹ã¯ãã·ã¹ãã ã®æ©èœæ§ã°ããã«æ³šç®ãã ããšããããåãã°OKïŒã ã®ãããªèããå
è¡ããŠããèšæ¶ã§ãã 察ããŠã瀟äŒäººã§ã¯å©çãçã¿åºãããã« æ£ç¢ºã§å®å
šãªã·ã¹ãã ãã è¿
éã«ãªãªãŒã¹ããã å¿
èŠããããŸãã ãã®ãããéçºèгç¹ã¯ããã«å€è§çã«ãªãã ã³ãŒãã®å¯èªæ§ ä¿å®æ§ ã¹ã±ãŒã©ããªã㣠ã¢ãžãªã㣠ã»ãã¥ãªã㣠ãªã©ã®åè³ªãæºãããéçºãå¿
èŠã«ãªããŸããã 責任ã®å€åãªã©ãå ããŠãæããç¹åŸŽã®éãããŸãšãããšä»¥äžã«ãªããŸãã åŠç 瀟äŒäºº ç®ç éçºã楜ãããã å©çãçã¿åºããã éçºç© ãããã Webã·ã¹ãã éçºèŠ³ç¹ ã»æ©èœæ§ ã»æ£ç¢ºæ§ ïŒäžèšãå質ã¯äœãïŒ ã»æ©èœæ§ ã»æ£ç¢ºæ§ ã»ä¿å®æ§ ã»ã¹ã±ãŒã©ããªã㣠ã»ã¢ãžãªã㣠ã»ã»ãã¥ãªã㣠ãªã©ãªã©âŠ ç®çã»èŠä»¶ ã·ã³ãã« è€éã§å€çš®å€æ§ æ©èœ å°ãªã å€ã æè¡ ã¢ãã³ãªãã®ãäžå¿ æ°æ§æ··åš éçº FEã»BEã»ã€ã³ãã©å
šãŠ BEäžå¿ <td style="padding: 5px; font-weight: bold; border-right: double;""> éçºäœå¶ ãŠã©ãŒã¿ãŒãã©ãŒã« ã¹ã¯ã©ã ã·ã¹ãã ã®ã圹å²ãã®çè§£ã®æ·±ã ç¹åŸŽãèŠæš¡ãèšèªã»æè¡ãå
šãéã2ã€ã§ãããããã§æããããšã¯ãã·ã¹ãã ã®åœ¹å²ãçè§£ããå¿
èŠãããããšããããšã§ãã ã€ã³ã¿ãŒã³æä»£ã¯ã ãæ°èŠç€Ÿå
åãã·ã¹ãã ã ãšããããšããããçŽç²ã«ãšã³ãžãã¢ãšããŠéçºã«å¿
èŠãªç¥èãçµéšãå¹ããWebã·ã¹ãã ã®éçºãã«æ³šåããããšãã§ããŸããã ããã¯åœæããããŒã ã®ç®çã ãæãåãããªããåŠç¿ããŠãPDCAãåããã·ã¹ãã éçºã«å¿
èŠãªåºç€ã身ã«ã€ããã ããšã«ãã£ãããã§ãã äœæããŠããã·ã¹ãã ãæ¯ãè¿ããšãæªçµéšäžå¿ã®ããŒã ã§ãã£ãããšããããæ±ºããŠå質ãé«ããšã¯èšããŸããã§ããããããŒã ã®ç®çãéæããããã®åœ¹å²ã¯æãããŠãããšæã£ãŠããŸãã ç§å人ãšããŠããåœææªçµéšã§ãããªãããå
æ¬çãªéçºäœéšããããŠããã ããããšã¯ãšãŠãè¯ããã¡ãŒã¹ããã£ãªã¢ã«ãªã£ããšæã£ãŠããŸãããã®æã® æ¥åã§ç¥èäžè¶³ãçæãã ç¥èäžè¶³ãšæããããšãåŠç¿ãã åŠç¿ããå
å®¹ãæ¥åã«æŽ»ãã ãšãããšã³ãžãã¢ã«ãšã£ãŠã¯åœããåã®ãµã€ã¯ã«ããéçºäœéšäžå€§ããªæé·å®æããããŸããã 察ããŠãçŸåšã® ãSFAéçºã ã¯ããµãŒãã¹ã®æ ¹å¹¹ãæ¯ããåºå¹¹ã·ã¹ãã ã§ããã¡ãªããã§ããæ©èœã®å€ããããŒã¿ã®äžå
åã®å¯ŸäŸ¡ãšããŠã ãã¡ãªãã ã¯ã 8幎åããååšããå€ãã³ãŒããšæ°èŠã®ã³ãŒããæ··åšããããš è€éãªèŠä»¶ã»é¢ä¿è
ãå€ããšãã£ãç¹åŸŽã«ããéçºã®éå ãªã©ãæããããŸãã ããã¯ãäŸãã°ãæ°èŠæ©èœéçºã«ãŠããŒãã«æ§é ãå€ããã°ããã®ããŒãã«ãåæã«å©çšããŠããããŒã±ãã£ã³ã°è·ã®æ¥åã«åœ±é¿ãçãããããŸãã ãããªSFAã®åœ¹å²ã¯äœã«åœããã§ããããïŒ ããã¯æç¢ºã§ãSFAã®å©ç¹ãäžãããããšæããŸããéçºããæ©èœãèç©ããããŒã¿æŽ»çšã«ãã£ãŠããžãã¹çãªå©çã«çµã³ã€ããŠããããã§ãã ãã®ããã ãæ©èœæ§ã»æ¡åŒµæ§ã»ä¿å®æ§ã»ã»ãã¥ãªãã£ãæ¯ééãã«éèŠèŠãããã åé¢ãçžå¯Ÿçã« ãUI/UXãšãã£ãäœ¿çšæ§ã¯è»œèŠãããåŸåã«ãªãã ããšã¯ãããŸãã ã·ã¹ãã ã®åœ¹å²ãæç¢ºã§ãéçºã«è»žãããããšã§ãæ°ã
ã®éçºã¿ã¹ã¯ã®åªå
床ãéèŠåºŠãæ¯ãåãããµãŒãã¹ãçµç¹å
šäœã«ãšã£ãŠããè¯ãéçºãé²ããããšãã§ããŠããŸãã ã·ã¹ãã åè³ªç¹æ§ã¯æ§ã
ãªèгç¹ããããŸãããåªå
ã»éèŠèŠããã芳ç¹ã¯ãã·ã¹ãã ã®åœ¹å²ãã«ãã£ãŠå€é¢çã«å€ãããšæããŸããçãããæºããã·ã¹ãã ã¯ã©ããªç¹æ§ãéèŠèŠãããŠããŸãã§ããããïŒ 3ã€ã®åŠã³ ãããŸã§ã§åŠçæä»£ãããã€ã³ã¿ãŒã³ãæ£ç€Ÿå¡ã§ã®éçºäœéšã®éãã説æããŠããŸããã éçºã®ããŒããã©ãªãªãç®çãæè¡ãããããéããŸãããããããéããŠçæããã以äžã®3ã€ã®åŠã³ããããŸãã æ°ããæè¡ãæé©ãšã¯éããªã è² åµãçãå¯èœæ§ãåžžã«èæ
®ãã åºç€ãå€§äº æ°ããæè¡ãæé©ãšã¯éããªã ã€ã³ã¿ãŒã³æä»£ã¯ãfrourioãšåŒã°ãããã«ã¹ã¿ãã¯ãã¬ãŒã ã¯ãŒã¯ã§çšæããTypeScriptã»Next.jsã»Material-UIãªã©ãçšããéçºãè¡ã£ãŠããŸããã 察ããŠSFAã¯ãBEã¯phpã®ãã¬ãŒã ã¯ãŒã¯ã§ããCakePHPã»LaravelãFEã¯scssãjQueryãšReactã»Graph-qlïŒJavaScriptãšTypeScriptïŒãæ··åšããŠããŸãã ã€ã³ã¿ãŒã³æä»£ã¯æ°ããã®æè¡ãäžå¿ã§ããããåœæã¯èªåãããŒã ã®ã¡ã³ããŒå«ããŠãWebã·ã¹ãã éçºã®ç¥èãçµéšãæµ
ãã£ãããšãããã以äžã®ãããªããšãèµ·ããŠããŸããã ã€ã³ã¿ãŒãããäžã«åèãšãªãäºäŸãå°ãªãããšã«ããéçºã®ã€ãŸã¥ã çºå±éäžã®æè¡ã¯ãã«ããŒãããŠãªãç®æãããããš æ±ã人ã®ç¥èäžè¶³ã§åæè¡ã®å©ç¹ã掻ãããããŠããªãããš ããããã ãšæãã人ãå€ãã®ã§ã¯ãªãããšæããŸãããç¹ã«3ã€ç®ã¯ãšã³ãžãã¢ã«ãšã£ãŠç¡ãããŠããããããšã ãšæã£ãŠããŸãã 察ããŠãSFAéçºã§ã¯ã©ãã§ããããã çŸåšäž»ã«ãã¬ãŒã ã¯ãŒã¯ç§»è¡äžã§ããLaravelã¯ãéåžžã«é«æ©èœã§ãéçºè
ãšããŠã®äœ¿ãåæã®è¯ãããã FEã§å©çšããŠããjQueryã¯çŸä»£ã®äž»æµãšã¯èšããªãã§ãããè€éãªæ¥åçãªèŠä»¶ãæºããæ©èœã¯æãããŠãããŠããŸã ããããéããŠåãæããããšã¯ã æ°ããæè¡ã®ã¿ãäžèœã§ã¯ãªã ãšããããšã§ãã ãå€ãæè¡ã®æ¹ãè¯ãïŒããšããããã§ã¯ãããŸããããã©ããªæè¡ã æ±ãéçºè
ã®ã¹ãã« ã·ã¹ãã ïŒâãµãŒãã¹ïŒã®æ§è³ª ã«ãã£ãŠãã®äŸ¡å€ã¯å€ãããšæã£ãŠããŸãã äŸãã°ããšã³ãžãã¢ãšããŠãçŸåšã®SFAã®FEãjQueryããReactãªã©ã®ã¢ãã³ãªãã¬ãŒã ã¯ãŒã¯ãžãªãã¬ã€ã¹ãããããªãšããæ°æã¡ã¯ãããŸãã ããããçŸåšã®SFAã®ç¹åŸŽãšããŠã ã·ã¹ãã ã倿©èœãªããšããããªãã¬ã€ã¹ã«èŠããæéã¯å€å€§ãªããš ãã®ä»ã®èгç¹ãšæ¯ã¹ããšãUI/UXãšãã£ãäœ¿çšæ§ã軜èŠãããåŸåã«ããããš ããããŸãã ãããªã·ã¹ãã ã«ãããŠã FEã³ãŒãã®ãªãã¬ã€ã¹ãè¡ãããžãã¹çãªäŸ¡å€ã¯æãããŠã©ã®ãããããã®ã§ããããïŒ ããã¯ãšãŠãé£ãã倿ã ãšæããŸãã ãã®çåã¯ãå¶æ¥è·ãããŒã±ãã£ã³ã°è·ãæ°å€ãæ ¹æ ã«ä»®èª¬ãç«ãŠãŠæ¥åãè¡ãè·çš®ã®åãæ¹ãéè¿ã§æããããã¬ãã¬ãžãŒãºã§å¹ãããèŠç¹ãããããŸããã ãšã³ãžãã¢ã¯ãã°ãã°ææ®µãšç®çãéã«ããŠããŸãããšïŒããã®æè¡ã䜿ããããããããããããïŒããªã©ïŒããããŸããããã®è¡åã®äŸ¡å€ã蚌æããæ ¹æ ãæ£ããçå®ããªããã°ããã®åŸã«æžããè² åµãã«ã€ãªãããšæããŸãã è² åµãçãå¯èœæ§ãåžžã«èæ
®ãã 1幎åã®èªåãæžããã³ãŒããèŠããšæ¥ããããæ°æã¡ã«ãªãæ¹ã¯ãçµéšãæµ
ãæ¹ã§ããã°èª°ã§ããããšæããŸãã ç§èªèº«ãããã¯çæããŠãããããã¯èªèº«ãæé·ããŠãããšããå®çžŸã§ããããšèšããŸããã æå³ããªãå°æ¥çãªæè¡çè² åµãæ®ããŠãããšããäºå® ã«ãç¹ãããŸãã çŸåšã®SFAã¯å€ãã®ã·ã¹ãã ã§ããããã èšèšææ³ãä»ãšåããªããªã£ãŠãã æ©èœæ¡åŒµãç¹°ãè¿ãã ããšãèŠå ã§ãã³ãŒãå質ãäœäžããŠããŸããããŸããæ¥åèŠä»¶ãè€éã§ç¶ºéºãªèšèšãé£ããå Žåãå€ãã§ãã å€ãã®ãã¹ãé§åéçºãéçºã¢ãŒããã¯ãã£ã®æç®ã§ãããè¿°ã¹ãããŠããéããå°æ¥çãªæè¡çè² åµã軜æžãããããšã¯éèŠã§ãããããã·ã¹ãã ã®ä¿å®æ§ãæ¡åŒµæ§ã«å€§ããé¢ãã£ãŠããããšã¯ããã¬ãŒã ã¯ãŒã¯ç§»è¡ã»æ°èŠæ©èœæ¡åŒµã®æ¥åãéããŠçæããŠããŸãã èªåã®ã³ãŒãã®å質ãé«ããã©ããã®å€æã¯é£ããã§ãããå質åäžã®ããã®åŠç¿ãä»çµã¿ã«ããè§£æ¶ãé©åãªææãè¡ããããŒã ãã«ãã£ã³ã°ã»ã³ãã¥ãã±ãŒã·ã§ã³ãæ ããªãããšãå¿
èŠã ãšæããŠããŸãã ãŸãè² åµãšã¯ã ç¹ã«æè¡ã ãã§ã¯ãããŸãã ãããã¯ãäŸãã°ããã¥ã¡ã³ããŒã·ã§ã³ãéçºã«ãŒã«ãäŒè°ãªã©æ§ã
ã§ãã äœæããã¯ãããã®ã®ãä¿å®ãããŠããªããŠçµå±äœ¿ãããŠããªãè³æ ãªããããªã£ãŠããã®ãããããªããã©ãã¿ããªã§å®ã£ãŠããéçšã»éçºã«ãŒã« ã©ã®ç«å ŽãšããŠåå ã¯ããŠããããããããæèŠã®ãŸãšãŸããªãäŒè° éçºã ãã§ãªããä»äºãããäžã§ã¯æ§ã
ãªå°æ¥çãªè² åµãçºçããŠããå¯èœæ§ã¯ãããããã¯èªåã ãã§ãªããããŒã ãçµç¹ã«ãåœãŠã¯ãŸããŸãã æ¬åœã«è§£æ±ºããã課é¡ã¯äœãªã®ãïŒ ãã®æ©èœã¯ã¹ã±ãŒã«ã§ããã®ãïŒã¢ãžãªãã£ã¯é«ãã®ãïŒ å質ã®ã¹ã³ãŒãã¯ã©ããŸã§ãªã®ãïŒãŸããããã¯ãªããªã®ãïŒ ãšãã£ãç®çãšææ®µã®æŽåæ§ã广ãæç¢ºã«ããããšãéèŠã§ããããããæ£ããè¡ãããã«ã¯ãè³åãšåçšåºŠã«å»ºèšçãªæ¹å€ãã§ããããŒã ãçµç¹ãçæ³ã§ãããšæã£ãŠããŸãã ããã¯éçºè·ä»¥å€ãšé¢ããããšãå€ãèªç€ŸéçºäŒæ¥ã«ãããã¡ãªããã§ãããšãæããŸããä»è·çš®ã«ãããŠãã仮説ç«ãŠãããžã«ã«ã·ã³ãã³ã°ãçšããŠæœçãææ¡ããŠããŸãã ãã®å§¿å¢ããåŠã¹ãããšããããããããŸãã åºç€ãå€§äº å
šãŠã®äœéšã§å
±éããŠæããããšã§ãããçµå± åºç€ãæãå€§äº ã ãªãšçæããŸãã çŸä»£ã¯äŸ¿å©ãªãã¬ãŒã ã¯ãŒã¯ãã€ã³ãã©ãµãŒãã¹ãè±å¯ãªæä»£ã§ã¯ãããŸãããæçµçã«ã¯HTMLãCSSãJavaScriptãSQLãªã©åºç€çãªWebã·ã¹ãã ã®æè¡ã«åž°çµãããšæããŸãã ã€ã³ã¿ãŒã³ãSFAéçºãã©ã®éçºæ®µéã«ãããŠããåºç€ãšãªãéšåã®ç¥èäžè¶³ã®å£ã«ã¶ã€ããããã°ãé害çºçã®åé¡ã®æ ¹æ¬ãæŽãããé©åãªå¯Ÿå¿ãã§ããªãã»å¯Ÿå¿ãé
ããããšããããŸãããã§ãããéã«åºç€ãçè§£ããŠãããšãæ°ãããã¬ãŒã ã¯ãŒã¯ãæè¡ã«å¯Ÿããçè§£ã®ããŒãã«ãäžãããŸããã ã€ãŸãã¯ãæ°ããæè¡ã®ç¿åŸãèå³ãæã€ããšããšãŠã倧äºã§ããããã以äžã«åºç€çãªã¹ãã«ãå¿
èŠäžå¯æ¬ ã ãšæããŸããåŠçæä»£ã®å匷ãéçºãããã®åºç€ã®åŠç¿ã«ãããŠåœ¹ç«ã£ãŠããããšã¯èšããŸã§ããããŸããã ç§ã®å Žåãæè¿ã¯BEåšãã«æºããããšãå€ããããããŒã¿ããŒã¹ãã®ãã®ã®ä»çµã¿ããSQLã»ããŒã¿æåã®ã¢ããªã±ãŒã·ã§ã³ã®ãããªBEã«é¢ããããšã é人ã«åŠã¶DBèšèš åŸ¹åºæåæž åçŽè
ã§çµãããããªãããªããž é人ã«åŠã¶SQLåŸ¹åºæåæž 第2ç åçŽè
ã§çµãããããªãããªããž ããŒã¿æåã¢ããªã±ãŒã·ã§ã³ãã¶ã€ã³ - ä¿¡é Œæ§ãæ¡åŒµæ§ãä¿å®æ§ã®é«ã忣ã·ã¹ãã èšèšã®åç çã®æžç±ãWebäžã®äºäŸãçšããŠãåºç€ããåŠã³ãªãããŠå¿çšãŸã§åŠç¿ã®ç¯å²ãåºããŠã¿ãŠããŸããããŒã¿æåã¢ããªã±ãŒã·ã§ã³ãã¶ã€ã³ã¯ãŸã èªæžäžã§ã¯ãããŸããããã®3åã¯éåžžã«æçã§ãã£ãã®ã§ãBEã«é¢ããæ¹ã«ãããããããæžç±ã§ãã æåŸã« åŠçã»ã€ã³ã¿ãŒã³ã»æ£ç€Ÿå¡ã§ã®éçºäœéšã®éããšä»åŸã«æŽ»ãããã3ã€ã®åŠã³ãã玹ä»ãããŠããã ããŸããã ä»åã®èšäºã§ãèªåã®äœéšãå¿ããªãããã®åå¿é²ãšãä»åŸãæèãããåŠã³ãæžãçããããšã«ãããå°æ¥ã®èªåãéå»ãæ¯ãè¿ããã£ããã«ãªã£ããšæããŸãã ä»åŸãåŠãã ããšãããŒã ãçµç¹ã«æŽ»ããã瀟äŒäººã«ãªãããã«ãBEãäžå¿ãšããŠãŸã ãŸã ã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ãæ·±ãåŠãã§ãããããšæããŸãã èªè
ã®çæ§ããæ¥ã
ã®æ¥åã«è¿œãããæ°ããããšãç«ãŠç¶ãã«åŠãã§ããæ¥åžžã§ãããšæããŸãã ãããªæ¥ã
ã§ãéå»ãæ¯ãè¿ãæ©äŒãæžã£ãŠããŸã£ãŠã¯ããªãã§ããããïŒ èªåã®éå»ãçŸåšã®éçºçµéšã®ãµãããããåŸãããåŠã³ããŸãšããŠã¿ãããšã§æ°ãã«èŠããŠãããã®ãèªåã®ç®æãæ¹åæ§ãå確èªãããã£ããã«ãªããšæã£ãŠããŸãã ã¬ãã¬ãžãŒãºã§ã¯ãæ§ã
ãªäœéšãã§ããã·ã¹ãã éçºãè¡ã£ãŠããŸãããã²ãã¿ãªãããäžç·ã«ãµãŒãã¹ãäœã£ãŠãããŸãããïŒã¬ãã¬ãžãŒãºã«å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯ãæ¯éäžèšãªã³ã¯ãèŠããŠã¿ãŠãã ããïŒ ïŒè©³ãã㯠ãã¡ã ïŒ
ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ ãã¯ãããžãŒæŠç¥å®€å®€é·ã®ç«¹äžã§ãã 2023/3/24ã«ããšã€ããŒã ãããšãããã³ããšã³ããããŒãã«ååå匷äŒãéå¬ããŸããã 以åããã¬ã€ããã ãšååå匷äŒãéå¬ããããšãããã®ã§ãããååã¯2瀟ã¯ããŒãºã ã£ããšãããä»å㯠connpassã§äžè¬å
¬é ããŠéå¬ããŸããïŒ ãŸããåŒç€Ÿã®éçºæ ç¹ãæ±äº¬ã®æžè°·ã§ããšã€ããŒã ããã®éçºæ ç¹ãåå€å±ãªã®ã§ããªã¢ãŒãã§ã®éå¬ã§ããã ãã®èšäºã§ã¯ãåŒç€Ÿã®ãšã³ãžãã¢ã®çºè¡šå
容ãç°¡åã«ã玹ä»ããããšæããŸãã çºè¡šå
容 åŒç€Ÿããã¯ã4人ãçºè¡šããŸããã speakerdeck.com AWS Amplify Studioãš Figmaãçµã¿åãããŠãHTML,CSS + Reactãèªåçæããã©ã³ãã£ã³ã°ããŒãžã®éçºå¹çãçäžããããšããçºè¡šã§ãã speakerdeck.com 代æ°çããŒã¿å(Algebraic data type, ADT)ãšGraphQLã®çµã¿åãããŠãTypeScriptã®Union TypeãGraphQLã®ã³ãŒãçæã䜿çšãããšã©ãŒãã³ããªã³ã°ã®å®çŸ©æ¹æ³ã®ã玹ä»ã§ãã speakerdeck.com Nuxt2ããNuxt-bridgeãçµãŠNuxt3ãžã®ç§»è¡ãå®äºãã奮éèšã§ãã speakerdeck.com React + Vercelãçµã¿åãããŠãMarkdownã®èšè¿°ãè£å©ããããŒã«ãçæéã§äœã£ãŠã¿ãïŒãšããçºè¡šã§ãã We are hiring ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã§ã¯ããã³ããšã³ããšã³ãžãã¢ãããã以å€ã®ãšã³ãžãã¢ãå¹
åºãåéäžã§ãã ããä»åã®å匷äŒã®çºè¡šãèŠãŠãèå³ãæã£ãŠããã ãããªãã ãã¡ãã®ããŒãž ãããå¿åãã ããã å匷äŒã®éå¬ãéæåãä»ãäžã§ã ä»åã¯ããã³ããšã³ããããŒãã«ååå匷äŒãéå¬ããŸããããã¬ãã¬ãžãŒãºã¯ãªãŒã«ã€ã³ããŠã¹ã§éçºããŠããããã³ããšã³ããããã¯ãšã³ããã€ã³ãã©ãæ©æ¢°åŠç¿ãšå¹
åºãé åãã«ããŒããŠããã®ã§ãããã³ããšã³ãã«éããæ§ã
ãªããŒãã§ååå匷äŒãéå¬ããŠãããäŒæ¥ããŸãåéäžã§ãããèå³ããäŒæ¥ããŸãããã£ããããŸããã ãã¡ã ãŸã§ãé£çµ¡ããã ãããšå¬ããã§ãã
ã¯ããã« ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã§ããã³ããšã³ããšã³ãžãã¢ãšããŠå€ããŠããæ£®å±±ã§ãã ä»åã¯æ¯ãèãé§åéçºïŒBehavior Driven Developmentãéç§°BDDïŒãã玹ä»ããŸãã ããã§ã®æ¯ãèãé§åéçºãšã¯Dan Northæ°ãæå±ããŠããBDDã®èŠç¹ãæŽã¿ãèªããŒã æµã«æè¯ããããã®ã§ãã æ¯ãèãé§åéçºãå°å
¥ããŠæãè¯ãã£ãããšã¯ãã¢ãžã£ã€ã«ã«ãããŠãéçºã¹ããŒããä¿ã¡ã€ã€äžå®ã®å質ãæ
ä¿ã§ããããšã§ãã äžå®ã®å質ãšããã®ã¯æ©èœé©åæ§ãæ
ä¿ãããŠãããšããããšã§ãã ãŸãæ¯ãèãé§åéçºãããããŠããäžã§å¯æ¬¡çã«éçºè
ã®ãããã¯ããžã®ç解床ãèŠåº§ãé«ãŸããããè¯ããããã¯ããäœãããšããææãäžäººã²ãšãã«èœçãããšæããŠããŸãã æŠèŠ æ¯ãèãé§åéçºã®ç®çã¯ä»¥äžã§ãã éçºã¹ããŒããç¶æããªããäžå®ã®å質æ
ä¿ æ¯ãèãé§åéçºã®æé ã¯ä»¥äžã«ãªããŸãã ãŠããã¿ã¹èšèªã®å®çŸ© ãŠãŒã¶ãŒã¹ããŒãªãŒã®å®çŸ© ãŠãŒã¹ã±ãŒã¹ã®å®çŸ© ãã¹ãã±ãŒã¹ã®å®çŸ© ãããã¯ãå®è£
ãã¹ãå®è£
æ¯ãèãé§åéçºã£ãŠãªã«ïŒ ããããç§ãæ¯ãèãé§åéçºãã©ãå®çŸ©ããŠããã®ã説æããŸãã 芳ç¹ãšããŠã¯ä»¥äžã«ãªããŸãã ç®çã¯ãªã«ïŒ æ¯ãèãé§åéçºã£ãŠãªã«ïŒ ãã¹ãé§åéçºãšã¯äœãéãã®ïŒ æ¯ãèãã£ãŠãªã«ïŒ ç®çã¯ãªã«ïŒ éçºã¹ããŒããç¶æããªããäžå®ã®å質æ
ä¿ã§ãã æ¯ãèãé§åéçºã£ãŠãªã«ïŒ 端çã«èšããšãã·ã¹ãã ã®æ¯ãèãã«çŠç¹ãåœãŠããã¹ãé§åéçºãã§ãã äžè¬çã«æ¯ãèãé§åéçºã¯ãã¹ãé§åéçºã®1ã€ã®æµæŽŸãšããŠæããããŠããŸãã ãã¹ãé§åéçºãšã¯äœãéãã®ïŒ ãã¹ãã®å¯Ÿè±¡ãç°ãªããŸãã ã€ã¡ãŒãžãšããŠã¯ããã¹ãé§åéçºãããæ¯ãèãé§åéçºã®æ¹ããã¹ãç²åºŠãèããç¶²çŸ
æ§ãäœãã§ãã æ¯ãèãé§åéçºã¯ãã®åã®éãã·ã¹ãã ã®ãæ¯ãèããã®ã¿ããã¹ãã®å¯Ÿè±¡ãšããŠããŸãã äžæ¹ããã¹ã察象以å€ã¯ãã¹ãé§åéçºãšæ¯ãèãé§åéçºããã¹ããã¡ãŒã¹ããªéçºææ³ãšããŠã¯åãã§ãã ãã¹ããã¡ãŒã¹ããšããéããã¹ãã³ãŒããå
ã«æžããŠããã ãã®ãã¹ãã³ãŒãããã¹ãããããªå®è£
ãšãªãã¡ã¯ã¿ãªã³ã°ãç¹°ãè¿ããŸãã ãã¹ããã¡ãŒã¹ãã¯ä»¥äžã®ã¡ãªããããããŸãã èŽåœçãªæ¬ é¥ãéçºçµç€ã«æã¡è¶ããªãã éçºè
ãã·ã¹ãã èŠä»¶ãæ·±ãçè§£ã§ããã ãã°ã¬ãŒããæãããªãã¡ã¯ã¿ãªã³ã°ãã§ããã ãã ãã¹ããã¡ãŒã¹ããªéçºã¯ã¡ãªããã ãã§ã¯ãªããšæã£ãŠããŸãã 以äžã®ãããªé£ç¹ãååšããŸãã ãããã¯ãã³ãŒãã®ã¿ãæžãå Žåãããéçºãé
ãã ãã¹ããã¹ãå
容ãç²åºŠãã©ã®ããã«å€æããã®ãé£ããã 仿§ã倿Žãããæã®åœ±é¿ã倧ããã äžèšã¯ãŠã©ãŒã¿ãŒãã©ãŒã«éçºã§ããã°ãã»ã©ç®ç«ã¡ãŸããã ããããçæéã§ææãåºãããšã¯æ±ããããŠããªãã§ããã ãã¹ãã§æ
ä¿ãããåºæºãæåã«æ±ºå®ããã¯ãã§ãã ãŸãææ»ãããããšããŠãèŠå ã¯èæ
®æŒããããã§ãå€çèŠå ã«ãã仿§ã®å€æŽãå°ãªãã¯ãã§ãã ã€ãŸããã¹ãé§åéçºã®æ©æµãååã«äº«åã§ããŸãã ãããäžèšã®é£ç¹ã¯ãã¢ãžã£ã€ã«ãªéçºã ãšé¡èã«ãªããŸãã ç¹ã«èª²é¡ã«äžããã®ã¯ä»¥äžã§ãã ã¹ããªã³ãæéå
ã§ã¢ãŠãããããåºãé£æåºŠãé«ãã æ©èœæ¯ã«ãã¹ãã®ç²åºŠã倿ããã³ã¹ããé«ãã 仿§å€æŽã«ããææ»ãã®åœ±é¿ç¯å²ã倧ããã ãããã¯ãã³ãŒããšåãããŠãã¹ãã³ãŒããæžãå¿
èŠãããã®ã§ãçæçã«èŠããšéçºã¹ããŒãã¯èœã¡ãŸãã ãã®ããã¹ããªã³ãæéå
ã«åããã®ãã¢ãŠããããããé£æåºŠãäžãããŸãã ãŸããã¹ãã¯ã©ã®ç²åºŠã§å®çŸ©ããã®ããšããè¿·ããçããŸãã æåã«æ±ºããããšãã§ããã°ããã§ããããããé£ããã¯ãã§ãã ãªããªããã·ã¹ãã ã®æçµãŽãŒã«ãåãããªãããã§ãã ããããéçºåœåã«ã·ã¹ãã ã®æçµãŽãŒã«ãèŠããªãããã«ãã¢ãžã£ã€ã«ãªçµç¹äœå¶ã§åžå Žã®å€åçã«é©å¿ããŠããææ®µãéžæããŠãããããã®ããªãšæããŸãã ãã¹ãç²åºŠã®ç·åŒãå®ç§ã«ã§ããªãã®ã§ãæ©èœæ¯ã«éœåºŠã©ããŸã§ç¶²çŸ
çã«ãã¹ããããã®ã倿ããŠããããšã«ãªããŸãã äŸãã°ããããŒã¿ãæç»ããã ããªããã®çšåºŠã§è¯ããããããæ±ºæžæ©èœã¯é倧ãªã€ã³ã·ãã³ãã«ç¹ããããã«ãã¬ããžãã§ããéãé«ãããããªã©ã§ãã ãŸãéå»ã«å®è£
ããæã¯é©åãªå³å¯ãã§ãã¹ããã§ããŠããããæ©èœæ¡åŒµã§ååºŠå€æãå¿
èŠã«ãªãããšããããŸãã ã¹ããªã³ãã®äžã§éœåºŠãã¹ãã®å³å¯ããé©åã«å€æããŠãããšããã®ã¯ã³ã¹ããé«ãã§ãã ããã«ææ»ããçºçããæã®åœ±é¿ç¯å²ã倧ããã§ãã æ¹ä¿®ç¯å²ããããã¯ãã³ãŒã + ãã¹ãã³ãŒãã«ãªãã®ã§åœç¶ã§ã¯ãããŸãããææ»ãã®æ¹ä¿®ãããã©ããªãã®ã¯ã¢ãžã£ã€ã«ã®è¯ãã倱ãããŠããŸããŸãã ãšã¯ãããã¹ããã¡ãŒã¹ãã§äžå®ã®å質ãä¿ã¡ã€ã€éçºè
ã®ã·ã¹ãã èŠä»¶ã®ç解床ãäžããŠããããã®ã§ãã¢ãžã£ã€ã«ã§éçºãã€ã€ããã¹ãé§åéçºã®æšå³ã享åããããã«ãã¹ã察象ãšããŠãæ¯ãèããã«çç®ããŸãã æ¯ãèãã£ãŠãªã«ïŒ æ¯ãèããšã¯ããŠãŒã¶ã«äŸ¡å€ãæäŸã§ããã·ã¹ãã ã®åãã§ãã æ¥µç«¯ãªäŸã§ããECãµã€ããèããŸãã ãŠãŒã¶ãŒãå®çŸãããããšã¯ãªã³ã©ã€ã³ã§æ¬²ããç©ã賌å
¥ã§ããããšã§ãã ãã®éçšãšããŠããååãã«ãŒãã«å
¥ãããã¯ãŠãŒã¶ãå®çŸãããããšãå¶ããããã®ã·ã¹ãã ã®åãã§ãã ãããããã¿ã³ã飿ã§ããªãå¶åŸ¡ããæœãããŠãããšããŠãããã¯ãŠãŒã¶ãŒãå®çŸãããããšã«å¯æ¥ã«ã¯çŽä»ããŸããã ãååãã«ãŒãã«å
¥ãããããšãã§ããã°ããã¿ã³ã®é£æå¶åŸ¡ã¯ç¡ããŠãããã§ãã ããã°å¬ãããªãããã§ãã 端çã«èšãã°æ©èœèŠä»¶ãããéæ©èœèŠä»¶ãéèŠããããšããããšã«ãªããŸãã ãŸãããã¯ç§ã®æè«ã§ãããå°ãããšã解決ã§ããææ®µãããã°å€å°äœ¿ãåæãæªããŠãå¬ããã§ãã 確ãã«å
¥å¿µãªãã¹ãããã¹ãããœãããŠã§ã¢ã¯å®å¿æããããŸãã ãããå€å°ã¬ã€ã¢ãŠãã厩ããŠãããããã©ãŒã ã«ããªããŒã·ã§ã³ããªãç¶æ
ã«ãªã£ãŠãããšããŠã課é¡ã解決ã§ããææ®µãããããšã®æ¹ãå§åçã«å¬ããã§ãã ãœãããŠã§ã¢ãæäŸãã䟡å€ã®çš®é¡ã«ãããã®ã§äžæŠã«ãèšããŸããããã¢ãžã£ã€ã«ãªéçºã§æ±ãããããœãããŠã§ã¢ã¯äžèšãã»ãŒåœãŠã¯ãŸãã®ããªãšæã£ãŠããŸãã ã€ãŸããã¹ããããéã«ããŸãã¯åãããšãæ
ä¿ãããã¹ããåªå
ãããããšããããšã§ãã ãã åçŽã«ãã¹ããšããèšèã«åŒã£åŒµããããšå€§æµãxxxã§ããã¹ãããšããæèšã䜿ã£ãŠçæ³ç¶æ
ãå®çŸ©ããŸãã ãããŠãããæºãããŠããããã¹ãã³ãŒããæžããŠãããŸãã ãxxxã§ããã¹ãããšãªããšåãã¹ãé
ç®ã¯ããžãã¹ã€ã³ãã¯ãã«é¢ããããã©ããçããæºãããŠããå¿
èŠãããããã«èŠããŸãã ãããŠãã¹ããæžããŠããäžã§ããxxãã§ããŠããªãããããyyã¯æ
ä¿ããªããŠããã®ãïŒããšäžå®ã«ãé§ãããŸãã éçºè
ãšããŠããã·ã¹ãã ãšããŠããã¹ãç¶æ
ãæ
ä¿ãããã¹ããæžãããšèšããããšééããªãããã«æããŸãã ãããããŠãŒã¶ãå®çŸãããããšïŒæ¯ãèãïŒãæ
ä¿ãããã¹ããæžãããšèšããããšèªç¶ãšæ©èœèŠä»¶ã«çç®ããã以äžãéé²ã«ç®æãããšã¯ç¡ãã¯ãã§ãã ããäžåºŠããã®ç« ã®åé ã®èšèãåŒçšãããšãæ¯ãèããšã¯ããŠãŒã¶ã«äŸ¡å€ãæäŸã§ããã·ã¹ãã ã®åããã§ãã ãã®æ¯ãèãã«ãã©ãŒã«ã¹ããããšã§ãã¢ãžã£ã€ã«ã§éçºããŠããäžã§ãç¹ã«å¿
èŠãªæ©èœããã¹ã察象ãšããŠéžå®ã§ããŸãã ãŸããæ¯ãèããã¯ã³ãŒãäžã§ã¯ã·ã¹ããããã¯ã«å®çŸ©ãããŸãã æ¯ãèãã²ãšã€ã®æ§æã¯ä»¥äžã§ãã Given: ã·ã¹ãã ããã®ç¶æ
ã®æã« When: ãã®åäœããããš Then: ã·ã¹ãã ã¯ããæ¯ãèã 詳ããã¯åŸè¿°ããŸãããæ¯ãèãã¯1ã€ã®ãŠãŒã¶ãŒã®1ã€ã®ã¢ã¯ã·ã§ã³ã«å¯ŸããŠã·ã¹ãã ãã©ãåãã®ããå®çŸ©ããŸãã ãããŠãã®æ¯ãèããè€æ°éãŸãããšã§ãŠãŒã¶ãŒãã©ã®é çªã§ãäœãæãéãããã®ããèŠããŠããŸãã æ¯ãèãé§åéçºã®æé æ¯ãèãé§åéçºã®æé ã¯ä»¥äžã«ãªããŸãã ãŠããã¿ã¹èšèªã®å®çŸ© ãŠãŒã¶ãŒã¹ããŒãªãŒã®å®çŸ© ãŠãŒã¹ã±ãŒã¹ã®å®çŸ© ãã¹ãã±ãŒã¹ã®å®çŸ© ãããã¯ãå®è£
ãã¹ãå®è£
äžèšã®æé ãçãŸããèæ¯ã»æèããã»ã¹ã¯ãã£ãã以äžã§ãã äžå®ã®å質ãä¿ã¡ãªããéçºãããããããã«ãã¹ããã¡ãŒã¹ããªéçºãããããªã ãã¹ããã¡ãŒã¹ããªéçºãããããã«ã¯ãäœããã¹ããã¹ããæ±ºãŸã£ãŠããå¿
èŠããããªã äœããã¹ããã¹ããæ±ºããã«ã¯ã·ã¹ãã ããŠãŒã¶ãŒã«æäŸããã䟡å€ãææ®µãæç¢ºã«ããå¿
èŠããããªã ãŠãŒã¶ãŒã«æäŸããã䟡å€ãæç¢ºã«ããããã«ã¯ãŠãŒã¶ãŒã¹ããŒãªãŒããŠãŒã¹ã±ãŒã¹ã®å®çŸ©ãå¿
èŠã ãªã ãŠãŒã¶ã¹ããŒãªãŒããŠãŒã¹ã±ãŒã¹ãéçºè
ãPDMçã誰ãèªãã§ãäžåŸåãè§£éãã§ããããã«ã¯ãŠããã¿ã¹èšèªã®å®çŸ©ãå¿
èŠã ã äžèšã®èæ¯ã»æèããã»ã¹ãé転ãããŠæ¯ãèãé§åéçºã®æé ãšãªã£ãŠããŸãã æ¬¡ç« ããåæé ã§ã©ããªããšãããŠããã®ã説æããŸãã ãŠããã¿ã¹èšèªã®å®çŸ© ãŠããã¿ã¹èšèªãšã¯ éçºè
ãPDMãå«ãããŒã å
šäœã®å
±éèšèªã®ããšã§ãã äŸãã°ãäŒç€Ÿã衚çŸããæã«ãã®ãŸãŸãäŒç€Ÿããšãã衚çŸã䜿ãã®ãããäŒæ¥ããšãã衚çŸã䜿ãã®ããããŒã ã®äžã§æ±ºããŠãããšããããšã§ãã ãŸããããžã§ã¯ãç¬èªã®æŠå¿µãé èªãå«ãŸããŸãã ãŠããã¿ã¹èšèªãå®çŸ©ããç®ç ç®çã¯ä»¥äžã®3ã€ã§ãã ã³ãŒããããã¥ã¡ã³ãã誰ãèªãã§ãäžåŸåãè§£éãã§ããç¶æ
ã«ããããš ã·ã¹ãã äžã§ã®è¡šèšæºããç¡ããããš æ°èŠåå
¥è
ã®ãªã³ããŒãã£ã³ã° ãŠããã¿ã¹èšèªã®å®çŸ©æ¹æ³ å®çŸ©æ¹æ³ã¯ç°¡åã§ãããŒãã«åœ¢åŒã§èšèŒããŠããŸãã 以äžããã®äžäŸã§ãã ããã¥ã¡ã³ã é¡çŸ©èª ããã°ã©ã åæ° ããã°ã©ã è€æ° æå³ äŒæ¥ äŒç€Ÿãçµç¹ corporation corporations å©çãåŸãããšãç®çã«ããŠäºæ¥ãè¡ãçµç¹äœã®ããšã åŒãçŽã åç»é² paymentReload - ãµãã¹ã¯ãªãã·ã§ã³ãµãŒãã¹ãè§£çŽããŠãã人ãåå¥çŽããæã«æ±ºæžäºå®ãèšé²ãããããšã åã«ã©ã ã«ã€ããŠèª¬æããŸãã ããã¥ã¡ã³ã éçºè
ãPdMãäŒè©±äžãããã¥ã¡ã³ãäžã§æŽ»çšããŠãã衚çŸã§ãã é¡çŸ©èª 端çã«èšããšNGã¯ãŒãã®ãããªæ±ãã§ãã å®çŸ©ããããŠããã¿ã¹èšèªãã衚èšãããèµ·ãããšããããããªè¡šçŸã ããããšããèšèãé¡çŸ©èªãšããã«ã©ã ã«èšé²ãããŸãã ãªã®ã§é¡çŸ©èªãèŠã€ãããéçºè
ãPdMéã§ææãåããŸãã ããã°ã©ã ïŒåæ°/è€æ°ïŒ ã³ãŒãäžã§å€æ°åãããŒãã«ã®ã«ã©ã åãšããŠæŽ»çšãããŸãã ããã°ã©ã äžã§ããŠããã¿ã¹èšèªãç¡ããšäŒæ¥idãããã³ããšã³ãã§ã¯corporationIdãšå®çŸ©ããŠããã®ã«ã ããã¯ãšã³ãã§ã¯companyIdãšããåœåã§å®çŸ©ããŠãããšããããšãèµ·ããŠããŸããããŸããã 念ã®çºè€æ°åœ¢ãå®çŸ©ããŠãããšè¯ãã§ãã åºæ¬çã«ã¯è±èªã®è€æ°åœ¢ã®ã«ãŒã«ã«åŸãã°OKã§ããããããžã§ã¯ãç¬èªã®æŠå¿µãé èªããããšãã¬ããã«ãªãå Žé¢ããããŸãã æŠå¿µãšããŠè€æ°åœ¢ãååšããªãæã¯ãã€ãã³ãå
¥ããŠããŸãã æå³ ãã®åèªã®æå³ã§ãã ãŠããã¿ã¹èšèªã®æ©æµ ãŠããã¿ã¹èšèªã®æ©æµãšããŠã¯ãã³ãŒããããã¥ã¡ã³ãäžã§é¡èã«çºæ®ãããŠããŸãã ç¹ã«ã³ãŒãäžã§ãäŒæ¥idãããã³ããšã³ãã§ã¯corporationIdãšå®çŸ©ããŠããã®ã«ãããã¯ãšã³ãã§ã¯companyIdãšããåœåã§å®çŸ©ããŠãããšãããããªå Žé¢ãçšã«èŠãããŸãã ããã®æªããšããã¯ã倿°åã倿Žãããšããæ¹ä¿®ã顧客ã«å¯ŸããŠäŸ¡å€ãçã¿åºããªããšããã§ãã ããžãã¹ã€ã³ãã¯ãã匱ããããšããçç±ã§ä¿®æ£ãåŸåãã«ãããŠããããšãå€ãã§ãã ãããå人çã«ããã¯å€§ããªæè¡çè² åµã§ãã èŠããã³ã«è³å
ã§corporationId = companyIdãšãã倿ã§ã¡ã¢ãªãé£ãããŠæ¬åœã«èãããããšã«100%ã®ãªãœãŒã¹ãé¿ããªãããšãæ°žé ã«ç¶ããŸãã ãã£ã1ã€ã§ããã°åé¡ãªããšèããŠãããšã©ãã©ãå¢ããã®ã§èŠããããå³çŽããŠãŠããã¿ã¹èšèªãæŽæ°ããæ¹ãè¯ããšæã£ãŠããŸãã ãŠããã¿ã¹èšèªã¯æ°èŠéçºè
ã®ãªã³ããŒãã£ã³ã°ã§ã圹ã«ç«ã¡ãŸãã ãŠããã¿ã¹èšèªã®äžèŠ§è¡šãçºããã ãã§ãã®ã·ã¹ãã ãäœããããã·ã¹ãã ãªã®ãé°å²æ°ããã£ãšæŽãããšãã§ããŸãã ãŠãŒã¶ãŒã¹ããŒãªãŒã®å®çŸ© ãŠãŒã¶ãŒã¹ããŒãªãŒãšã¯ ãŠãŒã¶ãŒã¹ããŒãªãŒãšã¯ããŠãŒã¶ãŒãã§ããããã«ãªãããããšããŸãšãããã®ã§ãã ã·ã¹ãã ãäœãæäŸãã¹ããã§ã¯ãªãããŠãŒã¶ãŒãäœãããããã«çŠç¹ãåœãŠãŸãã ãŠãŒã¶ãŒã¹ããŒãªãŒã®ç®ç ãŠãŒã¶ãŒã¹ããŒãªãŒã®ç®çã¯éçºããã·ã¹ãã ã«åŒã£åŒµãããã«ãŠãŒã¶ãŒã«æäŸããã䟡å€ãèŠããåããããšã§ãã ãŠãŒã¶ãŒã¹ããŒãªãŒãããããšã§éçºè
ã¯ãæ¯ãèãããå®è£
ã»ãã¹ãããéã«ãããããã®æ¯ãèãã¯äœãå®çŸãããã®ãïŒãèŠæ¥µãèªåèªèº«ã§ã·ã¹ãã ãšããŠé©åãªæ©èœãªã®ãæå¹ãªãã¹ããªã®ã倿ã§ããŸãã ãŠãŒã¶ãŒã¹ããŒãªãŒã®æ§æ ãŠãŒã¶ãŒã¹ããŒãªãŒã¯ä»¥äžã®èŠçŽ ããæ§æãããŠããŸãã ã¢ã¯ã¿ãŒ ãšãã㯠ãŠãŒã¶ãŒã¹ããŒãªãŒ ããããäœãæå³ããã®ã説æããŸãã ã¢ã¯ã¿ãŒ ãŠãŒã¶ãŒã¹ããŒãªãŒã«ç»å Žãã人ç©ã®åæãšå人ã®èª¬æã§ãã ãšãã㯠ãŠãŒã¶ãŒã¹ããŒãªãŒã®éªšåã§ãã ãšããã¯ã¯ãŠãŒã¶ãŒã¹ããŒãªãŒããã1段æœè±¡åºŠãé«ãæŠå¿µã§ãã è€æ°ã®ãŠãŒã¶ãŒã¹ããŒãªãŒã®ãŸãšãŸãããšããã¯ã§ãã ãŠãŒã¶ãŒã¹ããŒãªãŒ ãŠãŒã¶ãŒã®ããŒãºãšèæ¯ã2ã€ã»ããã§è¡šçŸãããŸãã ãŠãŒã¶ãŒã¹ããŒãªãŒã¯ç®æ¡æžãã§èšèŒããŠããŸãã ãŠãŒã¶ãŒã¹ããŒãªãŒã®å
·äœäŸ äŸãšããŠããªããµã€ãã®ãŠãŒã¶ãŒã¹ããŒãªãŒãæžããŠã¿ãŸãã ã¢ã¯ã¿ãŒ åºåè
ååã®åºåè
賌å
¥è
ååã®è³Œå
¥è
ãšãã㯠åºåè
ã¯ãååãåºåããã 賌å
¥è
ã¯ãååãæ€çŽ¢ããã 賌å
¥è
ã¯ãååã®è©³çްã確èªããã 賌å
¥è
ã¯ãååããæ°ã«å
¥ãç»é²ããã 賌å
¥è
ã¯ãååã賌å
¥ããã ãŠãŒã¶ãŒã¹ããŒãªãŒ åºåè
ã¯ãååãåºåããã åºåè
ã¯ãåºåããååã®ç»åãã¢ããããŒãããã ãªããªããååãã©ããªååãªã®ã賌å
¥è
ã«ç»åã§ç¥ããããããã åºåè
ã¯ãåºåããååã®äŸ¡æ Œãèšå®ããã ãªããªããååããã®äŸ¡æ Œã§è²©å£²ãããããã åºåè
ã¯ãåºåããååã®è©³çްæ
å ±ãèšå®ããã ãªããªããååã®ç»åã§äŒãããªãååã®æ
å ±ã賌å
¥è
ã«äŒãããããã åºåè
ã¯ãååã®åºåãå®äºããã ãªããªããèšå®ããå
容ã§ååãåºåãããããã åºåè
ã¯ãèªèº«ã®åºåãªã¹ãã確èªããã ãªããªããå
ã»ã©åºåããååãåºåã§ããŠããã確èªãããããã ãªããªããåºåããååã®èšå®å
容ã«èª€ããç¡ããå確èªãããããã 賌å
¥è
ã¯ãååãæ€çŽ¢ããã 賌å
¥è
ã¯ã âŠetc äžèšã®ããã«ç®æ¡æžãã§çŸ
åãã圢åŒã§ãŠãŒã¶ãŒã¹ããŒãªãŒãæžããŠããŸãã ãŠãŒã¶ãŒã¹ããŒãªãŒã®å®çŸ©æ¹æ³ å®çŸ©æ¹æ³ã®èŠç¹ã¯3ç¹ãããŸãã ãã©ãŒããã è¡åã¯ã·ã¹ãã ãä»ããªããŠãŒã¶ãŒèŠç¹ ãããªããŠãŒã¶ãŒã¹ããŒãªãŒãæžããªã 1.ãã©ãŒããã ãã©ãŒããããšããŠã¯ã以äžã®äœè£ãå®ã£ãŠããŸãã [ã¢ã¯ã¿ãŒ]ã¯ãxxxããã ãªããªããyyyãããããã ãŠãŒã¶ãŒã®ããŒãºãšèæ¯ãå¿
ãäžå¯Ÿäžãããã¯äžå¯Ÿå€ã§çŽä»ã圢åŒã«ããããã§ãã 2.è¡åã¯ã·ã¹ãã ãä»ããªããŠãŒã¶ãŒèŠç¹ ååã®åºåå®äºã«é¢ããŠã¯ãååã®åºåãã¿ã³ãã¯ãªãã¯ããããã§ã¯ãªããããšãååã®åºåãå®äºããããã®ããã«ããæœè±¡åºŠã®é«ã衚çŸã«ãªã£ãŠããŸãã äºçްãªéãã§ããããåºåãã¿ã³ãã¯ãªãã¯ããããã«ãªã£ãŠãããšãã®æç¹ã§åºåãã¿ã³ãããåæã®UIãèšèšãããŸãã ãå®äºããããã«ããŠUI決å®ã®äœå°ãæ®ããŠããããšã§ãããããããäžã«ã¹ã¯ã€ãããããšã§ãªãããªã¢ãã¡ãŒã·ã§ã³ãšå
±ã«åºåãå®äºãããããªUIã«ãªãããç¥ããŸããã ãŸãå Žåã«ãã£ãŠã¯ã·ã¹ãã ãä»å
¥ããªããŠãŒã¶ãŒã¹ããŒãªãŒãååšãããŸãã äŸãã°ã·ã¹ãã äžã®ããŒã¿ãããªã³ã¿ãŒã§ããªã³ãã¢ãŠããããçã§ãã åŽåç³»ã®æ¥åã·ã¹ãã ã§ããã°åž³ç¥šãå°å·ããŠè¡æ¿ã«æåºãããããªã¢ããã°ãªåããæ¥åã®äžã«å«ãŸããããšãããåŸãŸãã 3.ãããªããŠãŒã¶ãŒã¹ããŒãªãŒãæžããªã ãŠãŒã¶ãŒã¹ããŒãªãŒããããªãç®æ¡æžãã§åæãããšãŠãŒã¶ãŒã«ã¯ãã®ããŒãºä»¥å€ãæºããäœå°ãäžããªãã¿ã¹ã¯æåã®ã·ã¹ãã ã«ãªã£ãŠããŸããããã§ãã äºåã«ãŠãŒã¶ãŒã¹ããŒãªãŒãããã³ã°ããªããžã§ã¯ãæèUIã絡ããŠå®çŸ©ããŠããã®ãè¯ãã§ãã ãŠãŒã¹ã±ãŒã¹ã®å®çŸ© ãŠãŒã¹ã±ãŒã¹ãšã¯ ãŠãŒã¹ã±ãŒã¹ãšã¯ã端çã«èšããšãŠãŒã¶ãŒã¹ããŒãªãŒãå
·äœåãããã®ã§ãã ãŠãŒã¶ãŒã¹ããŒãªãŒãå®çŸããããã®ãŠãŒã¶ãŒãšã·ã¹ãã ã®ã€ã³ã¿ã©ã¯ãã£ããªåãã衚çŸãããã®ã§ãã ãŠãŒã¶ãŒã¹ããŒãªãŒãšã®éãã¯ãã·ã¹ãã ãä»å
¥ãããã©ããã§ãã ãŠãŒã¹ã±ãŒã¹ã®ç®ç ãŠãŒã¹ã±ãŒã¹ã®ç®çã¯ããŠãŒã¶ã¹ããŒãªãŒãå®çŸããããã®ç»é¢äžã§ã®é·ç§»ãæäœã衚çŸããããšã§ãã åã«ã·ã¹ãã ãã©ãæ¯ãèããã®ããã¥ã¡ã³ãã§ã¯ãªããããŠãŒã¶ãŒã¹ããŒãªãŒãå®çŸããããã®ããšãããšãããéèŠã§ãã ã·ã¹ãã ã®æ¯ãèã1ã€1ã€ããŠãŒã¶ãŒã¹ããŒãªãŒãå®çŸããããã«é©åãªåããªã®ããé©åãªå°ç·èšèšãªã®ããéçºè
ãããæ·±ãŒã£ãŠç¢ºèªããããšãã§ããŸãã ãŠãŒã¹ã±ãŒã¹ã®æ§æ ãŠãŒã¹ã±ãŒã¹ã¯ä»¥äžã®èŠçŽ ããæ§æãããŠããŸãã ã¢ã¯ã¿ãŒ ãšãã㯠ãŠãŒã¹ã±ãŒã¹ ããããäœãæå³ããã®ã説æããŸãã ã¢ã¯ã¿ãŒ ãŠãŒã¹ã±ãŒã¹ã«ç»å Žãã人ç©ã®åæãšå人ã®èª¬æã§ãã ãšãã㯠ãŠãŒã¹ã±ãŒã¹ã®éªšåã§ãã ãšããã¯ã¯ãŠãŒã¹ã±ãŒã¹ããã1æ®µãæœè±¡åºŠãé«ãæŠå¿µã§ãã è€æ°ã®ãŠãŒã¹ã±ãŒã¹ã®ãŸãšãŸãããšããã¯ã§ãã ãŠãŒã¹ã±ãŒã¹ ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãšã·ã¹ãã æåã2ã€ã»ããã§è¡šçŸãããŸãã ãŠãŒã¹ã±ãŒã¹ã¯ç®æ¡æžãã§èšèŒããŠããŸãã ãŠãŒã¹ã±ãŒã¹ã®å
·äœäŸ äŸãšããŠããªããµã€ãã®ãŠãŒã¹ã±ãŒã¹ãæžããŠã¿ãŸãã ã¢ã¯ã¿ãŒ åºåè
ååã®åºåè
賌å
¥è
ååã®è³Œå
¥è
ã·ã¹ãã ãšãã㯠åºåè
ã¯ãååãåºåããã 賌å
¥è
ã¯ãååãæ€çŽ¢ããã 賌å
¥è
ã¯ãååã®è©³çްã確èªããã 賌å
¥è
ã¯ãååããæ°ã«å
¥ãç»é²ããã 賌å
¥è
ã¯ãååã賌å
¥ããã ãŠãŒã¹ã±ãŒã¹ åºåè
ã¯ãååãåºåããã åºåè
ã¯ãããªãã¢ããªã«ã¢ã¯ã»ã¹ããã ã·ã¹ãã ã¯ããã°ã€ã³ç»é¢ã衚瀺ããã åºåè
ã¯ããã°ã€ã³æ
å ±ãå
¥åããã ã·ã¹ãã ã¯ããããããŒãžã衚瀺ããã åºåè
ã¯ããåºåãã¿ã³ããã¯ãªãã¯ããã ã·ã¹ãã ã¯ãåºåç»é¢ã«é·ç§»ããã åºåè
ã¯ããååã®ç»åã¢ããããŒããã¿ã³ããã¯ãªãã¯ããã ã·ã¹ãã ã¯ãOSã®ãã¡ã€ã«ã·ã¹ãã ãèµ·åããã åºåè
ã¯ãåºåãããç»åãéžæããã ã·ã¹ãã ã¯ãã¢ããããŒããããç»åã衚瀺ããã åºåè
ã¯ãååã®äŸ¡æ Œã«3000ãšå
¥åããã ã·ã¹ãã ã¯ãååã®äŸ¡æ Œã3000ãšè¡šç€ºããã ã·ã¹ãã ã¯ãååã®ææ°æã300ãšè¡šç€ºããã âŠetc 賌å
¥è
ã¯ãååãæ€çŽ¢ããã 賌å
¥è
ã¯ã âŠetc äžèšã®ããã«ç®æ¡æžãã§çŸ
åãã圢åŒã§ãŠãŒã¹ã±ãŒã¹ãæžããŠããŸãã ãŠãŒã¹ã±ãŒã¹ã®å®çŸ©æ¹æ³ å®çŸ©æ¹æ³ã®èŠç¹ã¯3ç¹ãããŸãã ãã©ãŒããã ãŠãŒã¶ãŒã¹ããŒãªãŒãšçŽã€ããŠããããš ã±ãŒã¹ã®ç¶²çŸ
ã¯äžèŠ 1.ãã©ãŒããã ãã©ãŒããããšããŠã¯ã以äžã®äœè£ãå®ã£ãŠããŸãã [ã¢ã¯ã¿ãŒ]ã¯ãxxxãããã ã·ã¹ãã ã¯ãyyyããã 2.ãŠãŒã¶ãŒã¹ããŒãªãŒãšçŽã€ããŠããããš åºæ¬çã«ãŠãŒã¹ã±ãŒã¹ã¯äœãããã®ãŠãŒã¶ãŒã¹ããŒãªãŒãšäžå¯Ÿäžã§çŽã€ããŠããŸãã ãŸãããšããã¯ãåæ§ã§ãã ãŠãŒã¶ãŒã¹ããŒãªãŒã§å®çŸ©ããããšããã¯ã¯ããŠãŒã¹ã±ãŒã¹äžã«ãååšããŸãã 3.ã±ãŒã¹ã®ç¶²çŸ
ã¯äžèŠ åºæ¬çã«ãŠãŒã¶ãŒã¹ããŒãªãŒãå®çŸããææ®µã¯çްããèŠããšè€æ°ååšããŸãã äŸãã°ããåºåè
ã¯ãç»åãã¢ããããŒãããããšãããŠãŒã¶ãŒã¹ããŒãªãŒã§ã以äžã®3çš®é¡ã®ã¢ã¯ã·ã§ã³ãèããããŸãã ããã€ã¹ã®ã«ã¡ã©ãèµ·åããŠæ®åœ±ããŠã¢ããããŒã OSã®ãã¡ã€ã«ã·ã¹ãã ãèµ·åããŠã¢ããããŒã ãã©ãã°&ããããã§ã¢ããããŒã ãŠãŒã¹ã±ãŒã¹ã¯ãŠãŒã¶ãŒã¹ããŒãªãŒãå®çŸããããã®è©³çŽ°ãªæåãªã®ã§3ãã¿ãŒã³ã®ãŠãŒã¹ã±ãŒã¹ãæ³å®ã§ããŸããã åºæ¬çã«ã¯æãçºçé »åºŠãé«ãããªã±ãŒã¹ã§1ãã¿ãŒã³æžãããŠããã°è¯ãã§ãã ãŠãŒã¹ã±ãŒã¹ã®äž»ããç®çãšããŠãŠãŒã¶ãŒã¹ããŒãªãŒãšãã1ã€ã®ãããŒãå®çŸããããã®å€§ãŸããªåãã確èªããããšã ããã§ãã ãã¹ãã®å®çŸ© ãã¹ãã±ãŒã¹ãšã¯ ããã§ã®ãã¹ãã±ãŒã¹ãšã¯ãæ¯ãèããã·ã¹ããããã¯ã«ãã¹ãã±ãŒã¹åãããã®ã§ãã æ¯ãèãã¯ãŠãŒã¹ã±ãŒã¹ã®äžã€äžã€ãã以äžã®ãããªãã©ãŒãããã§äœæãããŸãã Given: ã·ã¹ãã ããã®ç¶æ
ã®æã« When: ãã®åäœããããš Then: ã·ã¹ãã ã¯ããæ¯ãèã äžèšã®æ§ã«Gherkinèšæ³ãšåŒã°ããæžãæ¹ã§èšèŒããŸãã Given = åææ¡ä»¶ When = ãŠãŒã¶ãŒã®ã·ã¹ãã ã«å¯Ÿããåäœ Then = ãŠãŒã¶ãŒã®åäœã«å¯Ÿããã·ã¹ãã ã®æå GivenãWhenãThenã®ãããããStepãšåŒã³ãŸãã ãŸããããã®Stepã®å¡ãScenarioãšåŒã³ãŸãã ãããŠ1ã€ã®ãŠãŒã¹ã±ãŒã¹ã1ã€ã®ScenarioãšããŠãã¹ãã±ãŒã¹åãããŸãã ãã¹ãã±ãŒã¹ã®å
·äœäŸ ãã¹ãã±ãŒã¹ã®å
·äœäŸãšããŠã¯ä»¥äžã«ãªããŸãã Feature: ååã®åºå Background: åææ¡ä»¶ Given ãã°ã€ã³ããŠããããš Scenario: åºåã®éå§ Given ãããããŒãžã«ã¢ã¯ã»ã¹ããŠããããš When ãåºåããã¿ã³ãã¯ãªã㯠Then ååã®åºåç»é¢ã«é·ç§»ããŠããããš Scenario: ååäŸ¡æ Œã®å
¥å Given ååã®åºåç»é¢ã«ã¢ã¯ã»ã¹ããŠããããš When ååã®äŸ¡æ Œãã©ãŒã ã«3000ãšå
¥å Then ååã®äŸ¡æ Œã3000ãšè¡šç€ºãããŠããããš * ååã®ææ°æã300ãšè¡šç€ºãããŠããããš Scenario: åå詳现ã®å
¥å... Gherkinã§ã¯ãŸãäžèšã®æ§ã«FeatureãšããŠãŠãŒã¹ã±ãŒã¹ã®ãšããã¯ã«è©²åœãã倧é
ç®ãèšèŒããŸãã ãã®åŸãåScenarioã«å
±éããåŠçãããã°Backgroundã«è¡šçŸããŸãã ïŒBackgroundã¯Jestã§èšããšããã®BeforeEachã®ãããªåœ¹å²ã§ããïŒ ããããåScenarioãåæããŠãããŸãã æ¯ãèãã®ãã¹ãã±ãŒã¹ã§ã¯1ã¢ã¯ã·ã§ã³nã¬ã¹ãã³ã¹ã®åœ¢åŒã«ãªã£ãŠããŸãã ãªã®ã§åScenarioã«ãããWhenã¯1ã€ã«ãªãã®ãäžè¬çã§ãã 1ã€ã®ã¢ã¯ã·ã§ã³ã«å¯ŸããŠè€æ°ã®åäœãçºçããããšã¯ããããã®ã§Thenã¯è€æ°ã«ãªãããšããããŸãã ãã¹ãã®å®è£
Gherkinèšæ³ã§å®çŸ©ãããã¹ãã±ãŒã¹ã«çŽä»ããã¹ããå®è£
ããŠãããŸãã ãã¹ãã£ã³ã°ã©ã€ãã©ãªãšããŠCypressãæŽ»çšããŠããã®ã§cypress-cucumber-preprocessorïŒä»¥äžãCCPïŒãšããã©ã€ãã©ãªãçšããŠããŸãã ãã¹ãã®å®è£
èªäœã¯Cypressãçšããå®è£
ã«ãªããŸãããCCPã®é¢æ°ãéã«æãããšã§ãã¹ãã±ãŒã¹ãšçŽä»ããã¹ããååšããŠããããšãæ©æ¢°çã«æ
ä¿ã§ããããã«ãªããŸãã äŸãšããŠãå
ã»ã©ã®ãŠãŒã¹ã±ãŒã¹ã«çŽä»ããã¹ããæžããšä»¥äžã«ãªããŸãã import { Given ,When, Then } from '@badeball/cypress-cucumber-preprocessor' ; Given( "ãã°ã€ã³ããŠããããš" ,()=> { cy.login(); } ); // åºåã®éå§ Given( "ãããããŒãžã«ã¢ã¯ã»ã¹ããŠããããš" ,()=> { cy.visit( "http://toppage" ) } ); When( "ãåºåããã¿ã³ãã¯ãªãã¯" ,()=> { cy.get( '[data-cy="ExhabitButton"]' ).click(); } ); Then( "ååã®åºåç»é¢ã«é·ç§»ããŠããããš" ,()=> { cy.url().should( "equal" , "http://exhabit" ); } ); CCPã¯ãåStepïŒGivenãWhenãThenïŒã®é¢æ°ãæäŸããŠãããŠããŸãã ãã¹ããã¡ã€ã«ã®äžã§ã¯Gherkinèšæ³ã§æžããåStepã®æé¢ã第äžåŒæ°ã«åã£ãŠCCPã®Step颿°ãåŒã³åºããŸãã åStep颿°ã®äžã§ã¯ãCypressã®ãã¹ã颿°ããã®ãŸãŸäœ¿ããã®ã§å¯Ÿå¿ãããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãå®çŸ©ããŠãããŸãã ã€ã¡ãŒãžãšããŠã¯Cypressã®E2Eãã¹ããCCPã®Stepã§ã©ããããŠã«ããŽã©ã€ãºããŠãããããªæèŠã§ãã ãã¹ããã¡ã€ã«å
ã§ã®åStep颿°ã®ç¬¬äžåŒæ°ã¯Gherkinãã¡ã€ã«ã§å®çŸ©ããåStepã®å
容ãšå®å
šäžèŽããŠããå¿
èŠããããŸãã CCPã®ã¢ã«ãŽãªãºã ãšããŠã¯ããŸããã¹ãã±ãŒã¹ã®äžèº«ãäžããé çªã«èªã¿èŸŒã¿ãŸãã ãã®äžã§StepïŒGivenãWhenãThenïŒãããã°ãã®Stepã«çŽä»ãæé¢ããã¹ããã¡ã€ã«ã®äžããæ¢ãã«è¡ããŸãã ãã¹ããã¡ã€ã«ã®äžã§Step颿°ã®ç¬¬äžåŒæ°ãå®å
šäžèŽããStepã®äžèº«ãå®è¡ããŸãã å®å
šäžèŽããæé¢ãååšããªããã°ãšã©ãŒãè¿ããŸãã 以äžã¯ãååã®åºåç»é¢ã«é·ç§»ããŠããããšããšãããã¹ããååšããªãã£ãæã®errorã§ãã ãããããã¹ããååšããªããšãã«ã¯ãçŽä»ããã¹ããå®çŸ©ããããã«ãµãžã§ã¹ããããŸãã Gherkinèšæ³ã§èšèŒãããã¹ãã±ãŒã¹ãšããã«å¯Ÿå¿ãããã¹ããå®è£
ãããŠããªãå Žåã¯äžèšã®æ§ã«ãã¹ããfailããã®ã§æ
ä¿ãããæ¯ãèãããã¹ãã§ããŠããããšãæ©æ¢°çã«æ€ç¥ã§ããŸãã ãµãžã§ã¹ãã«ããããã«âpendingâãšããæååãStep颿°ã§è¿åŽãããšãã¹ããã¹ãããããããšãã§ããŸãã Then(( "ååã®åºåç»é¢ã«é·ç§»ããŠããããš" )=> { return "pending" ; } ); ãã¹ãçµæã§ã¯Pendingã®ä»¶æ°ã衚瀺ãããŸãã ãªã®ã§ãããã¯ãã³ãŒãå®è£
åã«åäœãæ
ä¿ãããæ¯ãèãã¯ãã¹ãã®äžèº«ãPendingã§å
šãŠä»®å®çŸ©ããŸãã ãããã¯ãã³ãŒãã®å®è£
ãé²ããšåæã«ãã¹ãã®äžèº«ãå®è£
ãPendingã®ãã¹ããæœ°ããŠãããŸãã å®è£
çµæã«Pendingã®ä»¶æ°ã衚瀺ãããã®ã§æ
ä¿ãããæ¯ãèãã®ãã¹ããæªå®è£
ã®ãŸãŸæŸçœ®ãããŠããŸãããšãç¡ãã¯ãã§ãã æ¯ãèãé§åéçºã®æ©æµ æã宿ããããã£ãæ©æµã¯å®è£
ã¹ããŒããèœãšããã«äžå®ã®å質ãæ
ä¿ã§ããŠãããšããã§ãã å
ã
ã¯ãéçºè
ãšPdMã®ç®ç·ããã£ãŠããªãããšãåå ã§ææ»ããçºçããŠããŸããã ããã以äžãã·ã¹ããããã¯ã«ç®¡çãããããšã§ãã®ææ»ãã¯æ¿æžããŸããã ã·ã¹ãã ã¯ã©ãæ¯ãèãã¹ããïŒ ãã®æ¯ãèãã¯ãŠãŒã¶ãŒã«ã©ããªäŸ¡å€ãæäŸããã®ãïŒ ãŸããã¹ãã®å®è£
æŒããå°ãªããªããå®è£
段éããå質ãæ
ä¿ããããšãã§ããããã«ãªããŸããã ãããŠéçºè
ãæ©èœã®èæ¯ãçè§£ããŠããããšã§ããŠãŒã¶ãŒããã®ããŒãºãæºããããã®ã§ããã°xxã®æ©èœããã£ãã»ããè¯ãã®ã§ã¯ïŒãçã®æ°ããªææ¡ãçãŸãããããªããŸããã æ¯ãèãé§åéçºã®å¯æ¬¡çãªæ©æµãšããŠéçºè
ãããããä»äºã§å®è£
ããã®ã§ã¯ãªããèŠåº§ãé«ããã£ãŠéçºã«åãçµãããšãå®çŸã§ããããšãè¯ãç¹ã§ããã çµããã« ãããã§ããã§ããããã ç§ã®æå±ããäºæ¥éšã¯çºè¶³ããŠãŸã ãŸã æé·æ®µéã§ãããã¯ãã®ç¶æ³ã0-1ãã§ãŒãºã«ãããŸãããªã®ã§ãããã£ãã©ãããæ§æã§éçºãé²ããã¹ãããªã©ãæ€èšã»æ±ºå®ããŠãããæ©äŒãå€ãã§ãããã®èšäºãã芧ã«ãªãããã®äºæ¥éšãäžç·ã«çãäžããŠã¿ãããªãšæãæ¹ã1人ã§ãå¢ããã°å¬ããæããŸãïŒïŒè©³ãã㯠ãã¡ã ïŒ
ã¯ããã« ããã«ã¡ã¯ãã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã®é«æ©ã§ãã2020å¹Žã«æ°åãšã³ãžãã¢ãšããŠå
¥ç€ŸããŠä»¥éããšã³ãžãã¢åãQïŒAãµã€ããteratailãã®ã¡ã³ããŒãšããŠåããŠããŸããæåã®2幎匱ãäŒç»ã¡ã³ããŒãšããŠéãããåŸã«ãéçºã¡ã³ããŒãšããŠã®ãã£ãªã¢ã仿¥ãŸã§é²ããŠããŸããã æ¬èšäºã§ã¯ãæ°åãã2幎匱ãéçºããã«éãããçµæã ã©ã®ãããªçµéšããã ã©ã®ãããªèœåã身ã«ã€ãã ã©ã®ãããªãšã³ãžãã¢ãžãšæé·ããŠè¡ã£ãã®ã ããæç³»åã«æ²¿ã£ãŠä»¥äžã®7ç« ç¶Žãã§ãéãããããŸãã å
¥ç€Ÿåããå€ãããªããç§ã®ãã£ãªã¢ç®æš ãšã³ãžãã¢ã®èª²é¡è§£æ±ºãä¿é²ããŠãããããããã®teratailãèãã æ±ããèŠæ©ãåæã®æé·ãšãã¯ãã«ã®éãèªå å€§èŠæš¡ãªãããžã§ã¯ããåãåºã ãããŠãšã³ãžãã¢ãž èªåã§äŒç»ããèŠä»¶ãå®çŸ©ããéçºã§ãããšã³ãžã㢠ã¬ãã¬ãžãŒãºã§æ©ãããŠãŒã¶ãŒãã¡ãŒã¹ããªãšã³ãžãã¢ãšããŠã®ãã£ãªã¢ïŒãŸãšãïŒ æ¬èšäºïŒç§ã®ãã£ãªã¢ãã¹ïŒãéããŠããªããªãç¥ãæ©äŒã®ãªãã¬ãã¬ãžãŒãºã§ã®ãšã³ãžãã¢ãã£ãªã¢ããäŒãããå°ãã§ãã¬ãã¬ãžãŒãºã®é
åããäŒãã§ããã°ãšæããŸãã ãŸããæ¬èšäºã§ã¯ç§ããã£ãªã¢ãæ©ãäžã§æ±ããèŠæ©ã玹ä»ããŠããŸãã ãšã³ãžãã¢ã§ãããªãããéçºãããã«éããäžã§ãæ¬èšäºã§ç޹ä»ãããããªèŠæ©ã¯ã€ããã®ãšæã£ãŠãããŸããå
šãŠãè¯ãããšã ãã§æ©ãããã£ãªã¢ã§ã¯ãªãã£ããããåããã£ãªã¢ãæ©ãŸããŠããæ¹ã«åããŠãåãæ©ã¿ãæ±ããç§ãç¥ã£ãŠãããããšã§ãšãŒã«ãå±ããããããšæã£ãŠãããŸãã â» ãå¿ããæ¹ã¯ãåŸå2ç« ãã芧ãã ãããçŸåšã®å§¿ã¯ããã«è©°ãŸã£ãŠããŸãã 察象èªè
察象èªè
ã¯ä»¥äžã«ãªããŸãã ã¬ãã¬ãžãŒãºã§ã®ãšã³ãžãã¢ãã£ãªã¢ã«èå³ãããæ¹ ãšã³ãžãã¢ãšããŠã®ä»äºã«èå³ãããæ¹ ãšã³ãžãã¢çµéšãæµ
ããä»åŸã®ãšã³ãžãã¢ãšããŠã®ãã£ãªã¢ãã¹ãå®ãŸã£ãŠããªãæ¹ããããã¯ãæ©ãã§ããæ¹ å
¥ç€Ÿåããå€ãããªããç§ã®ãã£ãªã¢ç®æš ç§ã®ãã£ãªã¢ã®ç®æšã¯ ããã£ãããããªããå®çŸã§ãããšã³ãžãã¢ãšãªãå®çŸããŠããããš ã§ããããã£ãããããªããšã¯ãèªåã ãã§ãªãåšå²ã®ããŸããŸãªäººãæ±ããŠããæ©ã¿ãè§£æ¶ãããã®ã§ãã£ããããããã¯ã倢ã空æ³äžã®æ¬²ãããšæããã®ããµãŒãã¹ã®ããšã§ããç§ããã®ãã£ãªã¢ã®ç®æšãç«ãŠããšãã¯ããœãŒãã¢ãŒããªã³ã©ã€ã³ãšããäœåã®ããŒãŽã®ã¢ãšããã²ãŒã æ©ã«æ§ãããããããããæ§ããå®çŸã§ãããããªäººã«ãªããããšæã£ãŠããŸããããã®ããã«ã¯ãèªåãå«ãã人ãæã€ããã£ãããããªããåæããã·ã¹ãã ãšããŠè¡šçŸã§ããèœåãã€ããå¿
èŠããããŸããã ããããŠããšã³ãžãã¢ãšããŠã®å°±æŽ»ãã¯ãããã¬ãã¬ãžãŒãºã®ãšã³ãžãã¢ãšãªãããã£ãªã¢ãã¹ã¿ãŒããããŠãããŸãã ãšã³ãžãã¢ã®èª²é¡è§£æ±ºãä¿é²ããŠãããããããã®teratailãèãã å
¥ç€ŸåŸã®ç ä¿®ãçµãŠ2020幎7æã«ãšã³ãžãã¢ãšããŠteratailããŒã ã«é
å±ãããŸãããæåã¯ãteratailã®ãµãŒãã¹ãšã·ã¹ãã ã®çè§£ãæ·±ããããã«ãéå»ã®ããã¥ã¡ã³ãã®ç¢ºèªãç°¡åãªãã°ã®ä¿®æ£ãéããŠãªã³ããŒãã£ã³ã°ãé²ããŸããã åœæã®teratailã¯éçºãšäŒç»ã®2ããŒã ããããéçºã¯ãµãŒãã¹ã®éçšãæ©èœè¿œå ã»ä¿®æ£ãªã©ãæ
åœããäŒç»ã¯teratailã®ãŠãŒã¶ãŒãåæããã©ã®ããã«ãµãŒãã¹ãæ¡å€§ããããäŒç»ããããšãã¡ã€ã³ã§è¡ã£ãŠããŸããã ãšã³ãžãã¢ãšããŠé
å±ãããç§ã¯åœåããšã³ãžãã¢ãšããŠéçºã¹ãã«ã䌞ã°ãããã«éçºããã¹ãã§ãããšèããŠããŸãããããŠãŒã¶ãŒãåæããµãŒãã¹ãæ¹åã»æ¡å€§ãããšããäŒç»ããŒã ã®æ¥åå
容ãç¥ã£ãããšããã£ããã«ãèªåã®ç®æããšã³ãžãã¢ã«ãªãããã«ã¯äŒç»ã§ã®çµéšå€ãç©ãã æ¹ãè¯ãã®ã§ã¯ïŒ ãšæãå§ããteratailã§ã®äŒç»ã«èå³ãæã€ããã«ãªããŸããã ããŠããªããšã³ãžãã¢ã§ããç§ããéçºã§ã¯ãªãäŒç»ã«èå³ãæã£ãã®ã§ããããã çç±ã¯å€§ããäºã€ãããŸãã äžã€ã¯ãèªèº«ã®ãã£ãªã¢ç®æšãèžãŸããæã«ããŠãŒã¶ãŒã®ç®ç·ã«ç«ã£ãŠäŒç»ãé²ããçµéšã¯éèŠã§ãå¿
èŠãªèœåã§ãããšèããããã§ããããã£ãããããªããèããããã«ã¯ã 誰ã ã¿ãŒã²ãããšã㊠ã©ã®ãããªããš ã«æ©ãã§ã㊠äœã å¿
èŠãšããŠã㊠ãªã ãããå¿
èŠãšããŠããã®ã ãšãã£ãèŠç¹ã§èå¯ã§ããå¿
èŠããããšèããŠããããã®ãããªèŠç¹ã§èå¯ããèœåãé€ãããã§ãäŒç»ããããšã¯åŠã³ãåŸãããå Žã§ãããšèããŸããã ããäžã€ã¯ãteratailã§ã®äŒç»ã®ä»äºã¯ãããããŠããªããªãã§ããªãä»äºã ãšèããããã§ããteratailã§ã®äŒç»ã¯ãæ©èœã®æ¹åã®ããã®äŒç»ã ãã§ãªãããµãŒãã¹ã®ä»åŸãèããã©ã®ããã«æ¡å€§ããŠããã®ããæ±ºããããšãŸã§æ
ã£ãŠããŸãããããããã¿ã¹ã¯ïŒç¹ã«åŸè
ïŒã«å
¥ç€ŸãŸããªããã¡ããçæãçµéšãç©ããããšããèªèº«ã®ãã£ãªã¢ã«ãšã£ãŠãã©ã¹ã«ãªããšèããŸããã ãããŠãäŒç»ã®ã¿ã¹ã¯ã«æãæããteratailãå©çšãããŠãŒã¶ãŒã®èª²é¡è§£æ±ºã«åããäŒç»ãé²ããããšã«ãªããŸãã æ±ããèŠæ©ãåæã®æé·ãšãã¯ãã«ãéãèªå äŒç»ã®ä»äºã«æºããããã«ãªããã°ããããé ã§ããã æ°åã®ãšã³ãžãã¢ãšããŠå
¥ç€Ÿããåæãçãããããã®é
å±å
ã§ãšã³ãžãã¢ãšããŠã®ææãåºãããã«ãªããŸãããåæãšã®äº€æµãçãã ã£ãããšããããäºããä»ã©ã®ãããªéçºãããŠããã®ããè©±ãæ©äŒãå€ããåæã®æŽ»èºãèªç¶ãšè³ã«å
¥ã£ãŠããŸãã æåã¯ãããã話ãå¬ããæã£ãŠããã®ã§ãããæ¬¡ç¬¬ã«ããäžå®ãæ±ããããã«ãªããŸãã ããã¯ãåæãšæ¯èŒããæã®èªèº«ã®ã éçºåã®äœã ããšã ææã宿ãã«ãã ãããšã§ãã é
å±ãããŠéããªãé ããäŒç»ã«åãçµãã§ããŠãããããéçºã¯ã»ãšãã©ã§ããŠããŸããã§ãããåæãæ¥åãéããŠéçºåã䌞ã°ãäžæ¹ã§ãç§ã®éçºåã¯åæ»ãããŸãŸã§ããããšã³ãžãã¢ã§ããã®ã«éçºåã䌞ã³ãŠããªãç¶æ³ã¯ããšã³ãžãã¢ãšããŠã®èªä¿¡ããªããèŠå ãšãªããŸããã ãããŠãäŒç»ãéããŠå®æã§ããææã®ãªãããããã«èªä¿¡ãç¡ããããããšã«ãªããŸãããéçºã§ã¯ãäœã£ããã®ããªãªãŒã¹ããããšã§ããã«ãšã³ããŠãŒã¶ãŒã«å±ããå©çšããŠãããããããç®ã«èŠããææã宿ããããã§ããäžæ¹ã§äŒç»ã®ä»äºã¯ããã äŒç»ãããã ãã§ã¯ç®ã«èŠããææãšãçŸãããããããèŠä»¶å®çŸ©ãéçºãéããŠåããŠåœ¢ãšãªããŸãããŸããäŒç»ãšããŠã®å®æåºŠãé«ããªããã°éçºã«åãåºãããšãã§ãããäœåºŠãäŒç»ãããçŽããçµããã®èŠããªãä»äºã«ææã宿ããããšã¯ãããŸããã§ããã ããããŠãåæãšã®éçºåã®å·®ã®åºããã宿ã§ããææã®å°ãªããããèªåã®ä»äºã«èªä¿¡ããªãããŠãããŸããã å€§èŠæš¡ãªãããžã§ã¯ããåãåºã äŒç»ãããŠããé ãéçºããŒã ã§ã¯ãCakePHPãTypeScriptã䜿çšãããã€ã¯ããµãŒãã¹ãžãšãªãã¬ã€ã¹ãããããžã§ã¯ããå§ãŸããŸãã â» æ¬èšäºã§ã¯æè¡çãªå
容ã¯èšèŒããŸãããããèå³ããããŸããããããã«é¢ããèšäºãå
¬éããŠãããŸãã®ã§ã以äžããã芧ãã ããã tech.leverages.jp tech.leverages.jp 1幎以äžããããŠãªãã¬ã€ã¹ãè¡ãããšã«ãªãã®ã§ãããç§ã¯ãªãã¬ã€ã¹ãããžã§ã¯ããžã¯ã»ãšãã©åç»ããŸããããããŸã§éãäŒç»ã«åŸäºãã€ã€ãéçºã¡ã³ããŒãè¡ã£ãŠããä¿å®éçšã®ä»äºãåŒãåããããšã«ãªããŸããããã§ãããããéçºã«å°ããã€çæããããšã«ãªããŸããã ãããŠããªãã¬ã€ã¹ãããžã§ã¯ããçµç€ã«å·®ãæãã£ãé ã«ããµã€ãã®åäœãã¹ããæ
åœããããšã«ãªããŸãã æ¯èŒçèŠæš¡ã®å€§ãããµã€ãã§ããã£ããããäžæçãªãã¹ãããŒã ãçµãããšã«ãªãã®ã§ããããšã³ãžãã¢ã¯ç§ã®ã¿ã§ãããéãããæéã§ãã¹ããå®äºããã«ã¯ãéãšã³ãžãã¢ã®æ¹ã§ãã¹ã ãŒãºã«ãã¹ããé²ãããããã¹ãé
ç®æžãäœæããå¿
èŠããããŸããã ãã®ãã¹ãé
ç®æžã®äœæã®éã«ãäŒç»ã§å¹ã£ããŠãŒã¶ãŒããµãŒãã¹ãèŠãåãæŽ»ããããšãšãªããŸããããã¯ã ãµãŒãã¹ãå©çšãã ã«ã¹ã¿ã㌠ãã¹ãé
ç®æžãå©çšãã ãã¹ãããŒã ã®ã¡ã³ã㌠ã®2è
ã®ãŠãŒã¶ãŒãèããŠãã¹ãé
ç®æžãäœæããããšã§ãã ãµãŒãã¹ãå©çšããã«ã¹ã¿ããŒããæ®æ®µãteratailãã©ã®ããã«å©çšããŠããã®ããèããããšã§ããµãŒãã¹ãšããŠããã¹ãå§¿ããã¹ãé
ç®ãšããŠæœåºãã ãã¹ãé
ç®æžãå©çšãããããã°ããŒã ã®ã¡ã³ããŒããã©ã®ãããªå±æ§ãæã£ãŠããã®ãïŒã©ããããITãªãã©ã·ãŒãããããªã©ïŒãèããããšã§ããã¹ãæé ãæžãéã«çè§£ãããã衚çŸããããšãèªç¶ãšã§ããããã«ãªã£ãŠããŸããã ãã®ãããªåœ¢ã§äŒç»ã®æã«å¹ã£ãèœåãçºæ®ã§ããŠããããšã§ãéå»ã«æããããªãã£ãæé·ãæããããšãã§ããŸããã ããããŠãããã°ãçµãããªãã¬ã€ã¹ã®ãããžã§ã¯ããäžæ®µèœããŸããã ã ãããŠãšã³ãžãã¢ãž å€§èŠæš¡ãªãªãã¬ã€ã¹ãããžã§ã¯ããäžæ®µèœããããã«ãæ¬æ Œçã«éçºãããããšã«ãªããŸããããã¯ãšã³ãéçºã«å§ãŸããæ¬¡ç¬¬ã«ããã³ããšã³ãã«å¯ã£ãŠãããçŸåšã«è³ããŸã§ãããã³ããšã³ãéçºã«æºãã£ãŠããŸãã éçºãããäžã§ã äŒç»ã®çµéšã掻ãã ç¬éãããããŸããéå»ã«æããŠãã äžå®ãææãå§ããŸã ã éçºã¡ã³ããŒãšããŠéçºãå§ãããŠã®é ã¯ãèšèšãèšèªä»æ§ãžã®çè§£ãæµ
ãäžã€äžã€ã®ã¿ã¹ã¯ãããªãã ãã§ç²Ÿäžæ¯ãªããšãå€ãããšãŠããšã³ãžãã¢ãšã¯ãããªãã¬ãã«ã§ãããããã§ããå®è£
ãããã®ãããã«ãŠãŒã¶ãŒã«å©çšããŠããããTwitterããµãŒãã¹ã®ãåãåãããéããŠå€ãã®ãã£ãŒãããã¯ãåããããããã«ãªã£ããããææã宿ãããããªããŸãããéçºãéãããã®äœéšããéå»ã«æ±ããŠããäžå®ã次第ã«è§£æ¶ããŠãããŸããã ãããŠãéçºã«æ
£ããŠããã¯ãååããã¡ã³ããŒãèªã¿ãããã³ãŒããšãªãããã«æèããããäœæ¥æéã®ççž®ã«ããæéçãªäœè£ãçãŸããæ©èœè¿œå ãšäœµããŠãªãã¡ã¯ã¿ãªã³ã°ã§ããç®æã䜵ããŠä¿®æ£ããããç°¡åã«çŽãããã°ãæ©èœè¿œå ã§ããã°å¯Ÿå¿ããããšãã§ããããã«ãªã£ãŠããŸãã ãããŸã§ã®éçºçµéšãéããŠãããçšåºŠèªèµ°ãããšã³ãžãã¢ãšããŠããŒã ã«è²¢ç®ãã§ããããã«ãªããšã³ãžãã¢ãšããŠèªä¿¡ãæãŠãããã«ãªã£ãŠãããŸããã èªåã§äŒç»ããèŠä»¶ãå®çŸ©ããéçºã§ãããšã³ãžã㢠ããã¯ãšã³ãã»ããã³ããšã³ãäž¡æ¹ã®éçºã«æ
£ããéçºã«èªä¿¡ãã€ãå§ãããããå°èŠæš¡ãªæ©èœè¿œå ãããžã§ã¯ããç«ã¡äžããããšã«ãªããŸããããã®ãããžã§ã¯ãã§ã¯ãäŒç»ãèŠä»¶å®çŸ©ããããžã§ã¯ããããžã¡ã³ããéçºå
šãŠã«æºãã圢ã§ããããŸã§ã«åŸãèœåãæãåãããŠéè¡ããŸããã äŒç»ãéçºã§ã¯ãããŸã§ã«äœéšãåŸãèœåããã®ãŸãŸæŽ»ãããèŠä»¶å®çŸ©ããããžã§ã¯ããããžã¡ã³ãã§ã¯ãäŒç»ãéçºãéããŠåŸããŠãŒã¶ãŒãã¡ãŒã¹ããªæèããã ãã®æ©èœãéããŠãµãŒãã¹ã®ãŠãŒã¶ãŒã«ã©ã®ãããªäœéšãçã¿åºããå®çŸããã ãããžã§ã¯ããéè¡ããäžã§ãããã«ããŠã¡ã³ããŒã®åãããããå®çŸããã ãèªç¶ãšæèããŠåãçµãããšãã§ããããã«ãªããŸããã ãŸããã äŒç»ãèŠä»¶å®çŸ©ããããžã§ã¯ããããžã¡ã³ããéçºå
šãŠã«æºãããªãããããžã§ã¯ããéè¡ãã ãããšã¯ãç§ã®ãã£ãªã¢ç®æšã§ããã ããã£ãããããªããå®çŸã§ãããšã³ãžãã¢ãšãªãå®çŸãã ãããšã§ããããŸããã 3幎ç®ã«ããŠãå¿
èŠãªåºç€èœåãäžéãæããããšãã§ããããããŠäžã€ã®æ©èœãšããŠå®çŸã§ããããšã§ãããã£ãããããªããå®çŸã§ãããšã³ãžãã¢ãšããŠã®ãã£ãªã¢ãå§ããããæ°ãããŸãã ã¬ãã¬ãžãŒãºã§æ©ãããŠãŒã¶ãŒãã¡ãŒã¹ããªãšã³ãžãã¢ãšããŠã®ãã£ãªã¢ïŒãŸãšãïŒ ãããŸã§ã®ãŸãšãã§ãããããŸã§ãèªã¿ããã ããæ¹ãæ¬åœã«ããããšãããããŸãããæãé·ãæç« ã§èªã¿ã«ããã£ãããšãšæããŸãããããšå°ãã ããä»ãåããã ããã 仿¥ã«è³ããŸã§ãå€ãã®ããšã«ææŠãããŠããã ããŸããããµãŒãã¹ã®äŒç»ãéããŠãŠãŒã¶ãŒå¿åã身ã«ã€ããèšèšãéçºã®éã«å¿çšããããšã§ããµãŒãã¹ã®ãŠãŒã¶ãŒãååããã¡ã³ããŒã«äŸ¡å€ãæäŸããããšãã§ããããã«ãªããŸãããïŒéäžã§èŠæ©ããããŸãããããã ãšã¯ããããŸã ãŸã è³ãã¬éšåãå€ãæé·ã§ããäœå°ãå€ããããä»åŸãããã£ãããããªããå®çŸãããšã³ãžãã¢ãšããŠãããå€ãã®äŸ¡å€ãæäŸããŠãããããã«åªããŠåããŸãã æ°åããã®3幎éããã®ããã«æ©ã¿ãããã£ãããããªããå®çŸãããšã³ãžãã¢ãã¹ã¿ãŒããããããšãã§ããã®ã¯ãããšã³ãžã㢠= ã·ã¹ãã éçºããã人ããšããæ ã«ãšããããã«ãããŸããŸãªè·åã«ææŠã§ããã¬ãã¬ãžãŒãºã®æåã倧ããé¢ãã£ãŠããŸããã¬ãã¬ãžãŒãºã«ã¯ãããããææŠãããã¡ã³ããŒãæ¯ããŠãããäžåžãã¡ã³ããŒãå€ãããŸããç§ã®ä»ã«ãéçºä»¥å€ã®è·åãçµéšããŠãããšã³ãžãã¢ã¯å€ãããããããéã£ãã¹ãã«ãæã¡ãé¢ããåãããšã§ãã倧ããªäŸ¡å€ãçã¿åºããŠããŸãã æ¬èšäºãèªãã§ãã¬ãã¬ãžãŒãºã®ãšã³ãžãã¢ãšããŠã®ãã£ãªã¢ã«èå³ãæã£ãŠãã ãã£ãæ¹ã¯ããã²ã æ¡çšãã©ãŒã ãããå¿åãã ããã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸããã https://recruit.jobcan.jp/leverages recruit.jobcan.jp
ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿ ãã¯ãããžãŒæŠç¥å®€å®€é· å
Œ ãã©ãã€ã«ããŒã ãªãŒããŒã®ç«¹äžã§ãã Architect New World on AWS 2022 ã®ã€ãã³ãã§çºè¡šããéã®ã¹ã©ã€ãã§ãã teratailã®ãªãã¬ã€ã¹ã®ã€ã³ãã©é¢ã«æ³šç®ããçºè¡šã«ãªã£ãŠããŸãã çŸåšã¬ãã¬ãžãŒãºã§ã¯äžç·ã«åããŠããã仲éãåéããŠããŸãããèå³ã®ããæ¹ã¯ã以äžã®ãªã³ã¯ãããå¿åãã ããã https://recruit.jobcan.jp/leverages/