ã¯ããã« ã¯ãããŸããŠã®äººã¯ã¯ãããŸããŠãããã«ã¡ã¯ïŒBASE BANK Divisionã®ããã³ããšã³ããšã³ãžãã¢ã®ãã£ã¡ããïŒÂ @gatchan0807  ïŒã§ãã ãããã·ã§ããäœæãµãŒãã¹ãBASEãã®éçºããŒã ããBASE BANKããŒã 㫠瀟å
ç°åãã㊠ãããŒã ã®äººæ°ãåå以äžã®ããŒã ã«ãªã£ãŠããçŽå幎ãçµã¡ãŸããã ãããªããŒã ç°å¢ã®å€åãšå
±ã«ãç§ãã©ããªããšãèããããã«ãªã£ãã®ããBASE BANKããŒã ãšã¯ããã³ããšã³ããšã³ãžãã¢ç®ç·ã§ã©ã®ãããªããŒã ãªã®ããããå°ããªããŒã ã§ããã³ããšã³ããšã³ãžãã¢ãšããè·çš®ã§åãããšã®é¢çœãããšåãããŠç޹ä»ãããŠãã ããïŒ å人çã«ã¯ãä»å玹ä»ãããããªæŽ»åãããããšã§ãããã¯ããåã«é²ããŠãŠãŒã¶ãŒã«äŸ¡å€æäŸããããšãã§ããããããžãã¹ã®æé·ã«ãå¯äžããããšãåºæ¥ãã ãããšèããŠããã®ã§ãèªãã§ãã ãã£ãçããŸã®åèã«ãªãã°å¬ããã§ãïŒ ããŒã ã®é¢çœãã®ç޹ä»ã®åã«âŠ ããŒã ã®ç޹ä»ãããåã«ãŸããã¡ãã£ãšã ãç§ã®èªå·±ç޹ä»ãããã«ç§ããããã³ããšã³ãããšããæ¥åé åãã©ãæããŠããã®ãã«ã€ããŠå
±æãããŠãã ããã ã²ãšããšã§èšããšãç§ã¯ããã³ããšã³ãããããŒã¿ïŒã·ã¹ãã ïŒãšãŠãŒã¶ãŒã® å¢çé¢ ã§ããããšèããŠããŸããã ããããããšãŠãé¢çœããŠå€§å¥œããªé åãªã®ã§ãã ããå°ãå
·äœçãªã話ããããšããµãŒãã¹ã»ãããã¯ããå©çšããŠãããŠãŒã¶ãŒã¯ç»é¢ã«è¡šç€ºãããŠããããŒã¿ããç¥ãåŸãŸãããããã¯ã瀟å
çšã®ç®¡çç»é¢ã§ãã£ãŠãBASEãPay IDãæäŸããŠãããµãŒãã¹ã§ãã£ãŠãåãã§ãã ãã®åæã«ç«ã€ãšã UIãå®è£
ããããã³ããšã³ããšã³ãžãã¢ãæ£ããUIã«è¡šç€ºãããäºãã§ããªããšããŠãŒã¶ãŒã«å¯ŸããŠæ£ããäŸ¡å€æäŸãåºæ¥ãªã ãšããããšã«ãªããŸãã ããã«ããã®å®è£
è
ã§ãããããã«ããã¶ã€ããŒããã ãã®ãããã¯ãã®ãæåãã«å¯ŸããŠã®æ·±ãç¥èããã ãšãèšããŸãã å
·äœçã«ã¯ãAPIãDBãDOMäžã«ã®ã¿è¡šç€ºãããŠãããç»é¢ã«ã¯èŠããªãããŒã¿ã®æ±ãæ¹ãšãã®ããŒã¿ã«åºã¥ããUIã®ãã¿ãŒã³ã«ãæ·±ãç¥èãããããããããã¹ããšèšããŸãã ã€ãŸããããã³ããšã³ããå¢çé¢ã«ãªãããããã ãŠãŒã¶ãŒãžã®äŸ¡å€æäŸãšUIã®ãã¿ãŒã³ã®ç®¡çã«è²¬ä»»ãæã€ããšãéèŠãªè·å ã ãšç§ã¯æããŠããŸãã ããã³ããšã³ããšã³ãžãã¢ã®è²¬åãå
šãããããã«ã¢ã³ããã匵ãå Žæ äžè¿°ã®ãšãããããã³ããšã³ããšã³ãžãã¢ã¯ç»é¢ã«äœãã©ã衚瀺ãããŠããã®ãã«è²¬åãæã€ãšèããŠããã®ã§ãç§ã¯ ããŠãŒã¶ãŒããã®ãåãåããããšãçŽ æ©ãç®ã«èŠããUIãäœãææ®µãã«æåºŠé«ãããããšãéèŠ ã ãšèããŠåžžã
ããã«ã¢ã³ããã匵ãããã«ãªããŸããã åæãšããŠããåãåããã¯ããŠãŒã¶ãŒãå®éã«ç»é¢ã§èŠããã®ããå
ã«è¡ãããŠããŸãã ããã«é¢ããŠãããå°ãå
·äœçã«è§£èª¬ããŠãããŸãã ããåãåãããã¯UIæ¹åã®èµ·ç¹ã«ãªããããããæ©äŒ ãããããå°ãæœè±¡çã«æžããšããŠãŒã¶ãŒãããšãããã¿ãŒã³ã®UIã§è¡šç€ºãããæ
å ±ãèŠãŠ å°ã£ãã»è¿·ã£ããã€ã³ãã®ãã¡ããµãŒãã¹ãå©çšããäžã§ã¯ãªãã£ã«ã«ã§ç±éãé«ããªãéšåã®äžå ã ãæããŠãã ãã£ãŠãã ç¶æ
ã§ãã ããã¯ãããã³ããšã³ããšã³ãžãã¢ã«ãšã£ãŠã¯ãã©ã®ãã¿ãŒã³ã®UIãã¿ããšãã®ãããªåãåãããçãŸããã®ãïŒãããã®èª²é¡ãã©ã解決ããã¹ããïŒããèããããšã«äœ¿ãããã²ãããããã«ãããããããã«ã±ã ãšæããŠããŸãïŒããã«ãåçš®ãã¹ãã±ãŒã¹ã®æ¡å
ãæ°æ©èœã®ä»æ§èæ
®æã®å©ãã«ããªããŸãïŒ å°ã話ã¯ãããŸãããçŸåšBASE BANKããŒã ã§ã¯ããåãåããå
容ã®ç®¡ççšããŒã«ZendeskãšSlackã®é£æºãè¡ã£ãŠããããåãåããã®å
·äœçãªå
容ãããŒã å
ã§ç¢ºèªã§ããSlackãã£ã³ãã«ã«ãæµããŠããŸãããã®ãããããŒã ã¡ã³ããŒã¯èª°ã§ãçŽè¿é »çºããŠããåãåããå
容ãå¯ç¥ããããäžæ¬¡å¯Ÿå¿ã®å
å®¹ãæ€èšããŠããã¹ã¬ããå
ã§ãšã³ãžãã¢ãPdMãåŒãã§æ¥ãŠä»æ§é¢ãæè¡é¢ã§ã®ç¢ºèªã調æ»ãè¡ãããã«ãªã£ãŠããŸãã Slackäžã«æµããŠãããåãåããã®ã€ã¡ãŒãž ããã«ã2é±éã«1床ã®MTGã§åããŒã ããã®å
±ææéãããã®ã§ãæ®æ®µãåãåãã察å¿ãè¡ã£ãŠããOperationããŒã ããããåãåãã察å¿ã®äžã§ã®ãããã¯ãã«å¯Ÿããå°ãäºãããããåãåãããå€ãã£ãããšããæ
å ±å
±æããããããšããããŸãã 以äžã®ããã«ãOperationããŒã å
ã§Lookerããã·ã¥ããŒãã䜿ã£ãŠå¯èŠåãè¡ã£ãŠãããããæ°ã®å¢æžãå²åãªã©ãçè§£ããããå
±æããŠããã£ãŠããŸãã OperationããŒã ã®çºè¡šæã«äœ¿ã£ãŠããNotionã®ãã£ãã㣠OperationããŒã ã®Looker掻çšäºäŸã«é¢ããŠã¯ããã²ä»¥äžã®PodcastãåãããŠãèããã ããã https://open.spotify.com/episode/7wD9QCv6imYPOGsGIuvSTU?si=eA8ENSswQBWoGrOFkaz7fg ãã®ãããªåœ¢ã§BASE BANKããŒã ã®ããã³ããšã³ããšã³ãžãã¢ã¯OperationããŒã ã®ã¡ã³ããŒãšãã¶ã€ããŒããŒã ã®ã¡ã³ããŒãšäžç·ã«ãåãåãããåºã«UIã®æ¹åã«åãçµãã§ããŸãã 課é¡è§£æ±ºã®ããã®ææ®µãšããŠChrome DevToolsãæŽ»çšããã 2ã€ç®ã®ã¢ã³ããã匵ã£ãŠããããšã¯ã ãšã³ãžãã¢ãšä»è·çš®ã®ããŒã ã¡ã³ããŒã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããäžããããã®ææ³ã«ã€ã㊠ã§ãã äžè¿°ã®ããåãåãããããã£ãéã®UIæ¹åããããã¯ãã®æ©èœéçºããµã¯ãµã¯ã§ããããã«ãã¡ã³ããŒéã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããäžããããšã§ãæææ±ºå®ã®ç²ŸåºŠãšã¹ããŒããäžããããæ©ããŠãŒã¶ãŒã«äŸ¡å€æäŸãããããšãåºæ¥ãããã«ãªããŸãã ãããå®çŸããããã®å
·äœçãªææ®µãšã㊠Chrome DevToolsã®æŽ»çš ãæšããŠããŠãã¹ããŒãžã³ã°ç°å¢ãªã©ã§å®éã®UIã衚瀺ããChrome DevToolsã§HTMLãCSSããµã¯ããšå€æŽããŠç»é¢ãã£ããã£ããã ãã§äºè¶³ããããšãå€ã
ãããŸãã å®éã«ãã£ãããåãã ãšã以äžã®ãããªãã®ããããŸãã ãã®äºäŸã®ä»ã«ãGoogle Meetã«ãã¶ã€ããŒãšPdMã®æ¹ã«éãŸã£ãŠããããç»é¢å
±æãããªããChrome DevToolsäžã§HTMLãCSSã®ã¹ã¿ã€ã«ã倿ŽããŠå®è£
æ¹éãããã§ããªãããã§ããªãããšãã話ãããããšããããŸãã ãã®ä»ãã¡ãã£ãšããæèšã®ä¿®æ£ã®å Žå㯠document.designMode = âonâ ïŒ è©³ãã解説ã¯ãã¡ãã®W3Schoolã§å®éã«è§Šã£ãŠã¿ã ã®ãããããããã§ãïŒããããšèšå®ããŠç»é¢ãã£ããã£ããããšããããããŸãã ãããã£ãUIã®æ€èšæã«æç« ã§ã¯ãªãèŠèŠçã«çè§£ãããããã®ãäœãããã«ãããã³ããšã³ããšã³ãžãã¢ããFigmaã䜿ãããªããŠãã¶ã€ã³ãã¡ã€ã«èªäœããµããšå€æŽããŠãã£ããã£ãäœãããšããéžæè¢ããããŸãã ãã ãå人çã«ã¯Chrome DevToolsãããã³ããšã³ããšã³ãžãã¢ã«ãšã£ãŠã®æé«ã®IDEã ãšæã£ãŠããŸããããã«ãåŸã®DOMæ§é ãã©ããªã£ãŠããã®ãææ¡ããŠããããšã§åŸãããã¡ãªããããããšæã£ãŠããã®ã§ããã®æ¹æ³ã掻çšããããšãããããããŠããŸãã Chrome DevToolsã«ã€ããŠãã詳ããç¥ããããªã£ãæ¹ã¯ãã²ã å
¬åŒDocs ãçºããŠã¿ãŠããããã°ãšæããŸãã æã
ã æ°æ©èœãã¥ãŒã¹ããŒãž ãçºãããšãããããªäŸ¿å©ãªæ©èœå¢ããŠãã®ïŒããšãå®ãèŠã€ãããããªæ°åã«ãªããã®ã§ãšã£ãŠãããããã§ãã ããã㫠以äžãBASE BANKããŒã ã«ç°åããŠèããããã«ãªã£ããããã³ããšã³ããšã³ãžãã¢ãšããŠåºæ¥ãããšã»ãããšãããšæã£ãããšã®ã玹ä»ã§ããã OperationããŒã ãšã®åæ¥ã®ä»æ¹ã¯BASE BANKããŒã ã«ç°åããŠãã倧ããå€ãã£ããªãšæããŸãããBASE BANKããŒã ãæ
åœããŠããã®ã¯ãŸã ãŸã æ¢çŽ¢ãã§ãŒãºã®æ©èœã»ãããã¯ãããããããªã®ã§ãã©ãã©ããªãªãŒã¹ããŠã©ãã©ããã£ãŒãããã¯ãåãåã£ãŠæ¹åãé²ããŠããæèŠã匷ãã§ãã ããããããªããšãèããŠããç§ãBASE BANKããŒã ã«èå³ãæãããããã²æ¡çšããŒãžããã声ãããã ããïŒïŒâã®ããŒãžã®åéè·çš®äžèЧãããBASE BANKããŒã ã§ãã£ã«ã¿ãªã³ã°ããŠããããšç©æ¥µæ¡çšäžã§ããããšãäŒããããšæããŸãïŒïŒ binc.jp ãŸãããããªãä»°ã
ããã«ãžã¥é¢ã¯ã¡ãã£ãšã¢ã¬ã ãããã£ã¡ãããšã¯å人çã«è©±ããŠã¿ãããïŒãšããæ¹ã¯PittaãXïŒæ§TwitterïŒã®ãªãã»DMãªã©ã§ã声ãããã ããð https://pitta.me/matches/PDWMyhvOjUOy https://x.com/gatchan0807
ããã«ã¡ã¯ïŒ BASE BANK Divisionã® æŸéª ã§ãã 8/5ã« Welcome Fintech Community #2ãéå¬ããŸããã ãçãæãã§ãã¿ãã¿ããŠããã3é±éã»ã©çµã£ãŠããŸããŸããããä»åãå€§çæ³ã ã£ãã®ã§ãã®æ§åããå±ãããŸãïŒ Welcome Fintech Communityã«ã€ã㊠ã³ãã¥ããã£ç«ã¡äžãã®çµç·¯ã¯ãã¡ãã«èšèŒããŠããã®ã§ãã²ã芧ãã ããã devblog.thebase.in 6/20ã«éå¬ãã第1åããããããããšã«å€§åé¿ã ã£ããããéã¯ç±ããã¡ã«æãŠ!ãšããããšã§1ã¶æåã»ã©ã§ç¬¬2åãéå¬ããŸããã ä»åã¯ç¬¬1åã®æèŠªäŒã§æ¯é次ãããã°è©±ããã! ãšææè¡šæããŠãã ãã£ãŠããSTORESãããšMIXIããã«ã声ããããå
¬åLTãšåãããŠ5人ã«ãç»å£ããã ããŸããã ãŸãä»åã¯åã®è©Šã¿ãšããŠããšã³ãžãã¢è»¢è·ãµãŒãã¹Forkwellãéå¶ããGroovesããã«é£²é£ã¹ãã³ãµãŒãããŠããã ããŸãã! ãã®å ŽãåããŠæ¹ããŠã瀌ç³ãäžããŸããããããšãããããŸãã! åœæ¥ã®æ§å ä»åã¯LTåŸã®æèŠªäŒãžã¹ã ãŒãºã«ç§»è¡ã§ãããããã¢ã€ã©ã³ã圢åŒã®ããŒãã«é
眮ã«ã 第1åã«åŒãç¶ãåžäŒã®BASE æ³å·ãã Forkwell ã®ããããããïŒé£²é£ãµããŒã¿ãŒããããšãããããŸããïŒïŒ LT LTäžçºç®ã¯ æ ªåŒäŒç€ŸMIXI ããæµ
èŠããã ãŠã©ã¬ãããµãŒãã¹ãšããŠã®MIXI Mã¯ç¥ã£ãŠããŸããããIDãèªèšŒåºç€ãšããŠãå±éããŠããã®ã¯å人çã«ã¯åè³ã§ããã 確ãã«æ±ºæžãµãŒãã¹ã¯æ¬äººç¢ºèªãªã©ãŠãŒã¶ãŒãšåŒ·ãçŽã¥ããŠããã®ã§ããããèªèšŒåºç€ãšããŠåãåºããŠæäŸãããšããã®ã¯æå€ãšæãã€ããªãã£ããªããšæ°ããªçºèŠããããŸããã ç¶ã㊠STORESæ ªåŒäŒç€Ÿ ããSTORES æ±ºæž ã«é¢ãã£ãŠããã£ããã西æããã æ±ºæžæã®åºæ¬çãªåº§çµã®è©±ããSTORES決æžã䜿ã£ãæ±ºæžæã®é»æã®çµè·¯ã«ã€ããŠã話ãããã ããŸããã 黿ã®çµè·¯ã¯äžè¬çãªã«ãŒã決æžãšã¯å°ãéãçµè·¯ã§åãåãããè¡ãããŠãããã«ãŒã決æžãªã©ã«è©³ããåå è
ããã¯âãããªããšã§ããã®??âãšãã声ãäžãã£ãŠããŸããã 3人ç®ã¯ ã¯ã©ã¹ã¡ãœããæ ªåŒäŒç€Ÿ ã®åç°ããã DevelopersIOã«ã¯ãã€ãå©ããããŠããŸãããããšãããããŸãã AWSãš PCI DSS ã«ã€ããŠã®ã話ã§ã責任å
±æã¢ãã«ããReserved InstancesãSavings PlansãŸã§ã決æžã ãã§ãªãAWSäžã§äºæ¥ãè¡ããã¹ãŠã®æ¹ã«å¿
èŠãªæ
å ±ãããããå
±æããã ããŸããã 4人ç®ã¯ æ ªåŒäŒç€Ÿdinii ã®è§ç°ããã diniiããã¯ã¢ãã€ã«ãªãŒããŒã ãã§ãªãPOSããªã³ã©ã€ã³æ±ºæžæ©èœããããããæ±ºæžãµãŒããPOSãµãŒãéã§ã©ã®ããã«ããŒã¿ã®æŽåæ§ãä¿ã¡ãªããæ±ºæžãå®çŸããããªã©ã飲é£åºã§ã®ãªãã¬ãŒã·ã§ã³ãªãã§ã¯ã®èŠåŽãããã€ã³ããªã©ããããããããã ãªãšãšãŠãå匷ã«ãªããŸããã æåŸã« æ ªåŒäŒç€ŸLayerX ããken5scalããã éèåºãâéèåéã«ããããµã€ããŒã»ãã¥ãªãã£ã«é¢ãã ã¬ã€ãã©ã€ã³ïŒæ¡ïŒ âãšãããã®ãå
¬éããŠããããã§ããã®äžããææãæã
fintechã«é¢ãã人éã«ãé¢ä¿ããããããªå
容ãããã¯ã¢ããããŠãã ãããŸããã ã«ãŒã«ã«åŸãã ãã§ãªãã«ãŒã«ãäžç·ã«äœã£ãŠããããã«ããããªãã¯ã³ã¡ã³ãã§æèŠãåºããïŒãšããã¡ãã»ãŒãžãåå è
ã®çããã«ããšãŠãåºãã£ãŠããããã§ãã æèŠªäŒ æèŠªäŒãååã«åŒãç¶ãå€§çæ³ïŒ (çãäžãããããŠåçæ®åœ±ãå®å
šã«å¿ããŠããŸããã»ã»ã») äºåã«æèŠªäŒã«ç§»è¡ãããããããªããŒãã«é
眮ã«ããããããª?ãšæãã€ã€ããã£ãšããé
眮ãé²ãæ¹ã¯ããããã ãªãšæããå Žé¢ããã£ãã®ã§ããã®ãããã¯ãããããè²ã
ãšè©Šè¡é¯èª€ããªããåå è
ã®ã¿ãªãããçãäžãããããå Žã®èšèšãããŠãããŸãïŒ ãããã« æ¹ããŠãä»åãåå ããã ããçæ§ããããšãããããŸããïŒ ãããŠïŒïŒïŒïŒç¬¬3åã®éå¬ã決å®ããŸããïŒ10~11æãããäºå®ããŠããŸãã ãŸã远ã£ãŠé嬿¥ãconnpassã®å
¬éãªã©è¡ã£ãŠãããŸãã®ã§ããã²ã³ãã¥ããã£ã¡ã³ããŒã«ãªã£ãŠãããŠãã ããïŒ https://welcome-fintech.connpass.com ã§ã¯ãŸãã第3åã§ååå ãããæ¹ããªããŒã¿ãŒã®æ¹ããåŸ
ã¡ããŠãããŸãïŒïŒ
ã¯ããã« ããã«ã¡ã¯ãProductDev FeatureDev3 ã§ãšã³ãžãã¢ãããŠããŸãã endu ã§ãã å
æ¥ãèªåãæå±ããããŒã ã§ãè¯ãã³ãŒãïŒæªãã³ãŒãã§åŠã¶èšèšå
¥éããšããæ¬ã顿ã«èŒªèªäŒãéå¬ããŸããã gihyo.jp ãã®èšäºã§ã¯ããè¯ãã³ãŒã/æªãã³ãŒãã§åŠã¶èšèšå
¥éããèªãããšæã£ãèæ¯ããããŒã ã§å®éã«è¡ã£ã茪èªäŒã®é²ãæ¹ã茪èªäŒãéããŠåŸãåŠã³ã«ã€ããŠå
±æã§ããã°ãšæããŸãã 茪èªäŒãéå¬ããèæ¯ã«ã€ã㊠BASEã§ã¯ã·ã§ãããç¬èªã«ã«ã¹ã¿ãã€ãºããæ¡åŒµæ©èœãšããŠãAppsããæäŸããŠããŸãã èªåãæå±ããããŒã ã§ã¯ç¹ã«ã Googleåå飿ºã»åºå App ããã InstagramåºåApp ããã Instagram 販売App ããã TikTokåå飿ºã»åºå ããªã©ãäž»ã«SNS Appsåšãã®ä¿å®ãæ©èœæ¹åãè¡ã£ãŠãããŸãã åœç¶GoogleãMetaåŽããæäŸããŠããAPIã®ã¢ããããŒããããã®ã§ãã¢ããããŒãã®å¯Ÿå¿ããããªã£ããããåãåããèµ·å ã§ã®çްããä¿®æ£ãçºçããŸãã ãããã®SNS Appsã¯BASEã§ãæŽå²ãé·ããããŒã ã«é
å±ããã°ããã®é ã¯å
šäœã®ä»æ§ãææ¡ã§ããŠãªãäºããããæ¢ã«æžãããŠããã³ãŒããåèã«ããŠè¿œå ãããã®ã®ãããŸãã¡è¯ãã³ãŒãããããŠãããã®èªä¿¡ããããŸããã§ããã ããããããŠããå
ã«ãããŒã å
ã§èŒªèªäŒãéå¬ãã話ãäžãã£ãã®ãšãèªåãæžããã³ãŒãã«å¯ŸããŠã¢ã€ã¢ã€ããã£ãã®ã§ããè¯ãã³ãŒããšã¯ãªã«ã? æªãã³ãŒãã¯ãªã«ã?ããèããæ©äŒãäœãçºã«ãã¡ãã®æ¬ãææ¡ãã茪èªäŒãéå¬ããäºã«ãªããŸããã 茪èªäŒã®é²ãæ¹ã«ã€ã㊠ä»åãç§éã®ããŒã ã§ã¯ä»¥äžã®ãã©ãŒãããã«æ²¿ã£ãŠé²ããŸããã ç« ãé
ãªã©ãæžç±ãææžã®æ§æåäœæ¯ã«æ
åœè
ãå²ãæ¯ãåããã æ
åœè
ã¯æ
åœåã®ããŒãžãèªã¿ãå¿
èŠã«å¿ããŠèª¿æ»ãªã©ããŠçè§£ããäžã§èŠçŽã»ææ³ãNotionã«èšè¿°ããã 茪èªäŒã®é嬿¥ã«æ
åœè
ã¯èªåãèªãã åã®èŠçŽã»ææ³ãªã©ãçºè¡šããã 茪èªäŒåå è
ã¯æ
åœè
ã®çºè¡šãèãã質åãæããããæ
åœè
ãšèªèº«ã®è§£éã®å·®ãè¿°ã¹ããªã©ããŠè°è«ããçè§£ãæ·±ãã æ¬¡åã®äºå®ãšæ
åœè
ã®ç¢ºèªãããŠçµäºã ãªããæ
åœè
以å€ã®æ¹ã®äºç¿ã¯ä»»æã§ãåºæ¬çã«ã¯æ
åœè
ã®æ¹ãèšäºãèªãã§èŠçŽããŠçºè¡šããã¹ã¿ã€ã«ã§èŒªèªäŒã¯éå¬ããŸããã 茪èªäŒãéããåŠã³ã«ã€ã㊠ãŸããã®æ¬ãäœãç®çã«æžãããã?ã«ã€ããŠã¯ã15ç« èšèšã®æçŸ©ãšèšèšã®åãåãæ¹ãã§ä»¥äžã®ããã«èè
ã¯æžããŠããŸãã æ¬æžã¯ãœãããŠã§ã¢éçºäžã®æªéãéæ²»ããèšè𿹿³ãèšè¿°ãããã®ã§ããæªéã¯ããŸããŸãªæªäºãåããŸãããããã°æã仿§å€æŽæãã©ã®ããžãã¯ã圱é¿ããŠããã®ã圱é¿ã®ææ¡ãå°é£ã«ãããŸãããŸãã仿§å€æŽæã«ä¿®æ£æŒããèµ·ãããããããã°ãçºçãããªã©ãæ£ç¢ºãªåäœãã§ããããã«ãªããŸã§æéãæµªè²»ãããŸããããããæªéã®æ§è³ªãšæãé¢ä¿ããããããªåè³ªç¹æ§ã¯ã©ãã§ãããããä¿å®æ§ãã¿ãŠãã ããããã·ã¹ãã ãä¿®æ£ããæå¹æ§ãå¹ç床åãããšãããŸãããããã§ããæ¬æžã§åãæ±ã£ãŠããã®ã¯ä¿å®æ§ã«é¢ä¿ããèšèšã§ãã ãã®ããã«1ç« ãã~17ç« ãŸã§ã¯ã»ãŒäžç°ããŠããã®ä¿å®æ§ã«é¢é£ããææ³ã玹ä»ãããŠããŸã 第1ç« ã®ãæªããæ§é ã®åŒå®³ãç¥èŠããããšç¬¬2ç« ã®ãèšèšã®åæ©ãã¯ãã®æ¬ã®å°å
¥éšãšããŠèªã¿ãããã§ããè¯ãèšèšãè¡ãã«ã¯ãŸããæªãèšèšãšã¯ãªã«ã?ãèããŠèªåã®äžã§åºæºãæã€å¿
èŠããããŸãã ãããã£ãæå³ã§æåã«1ç« ã§æªãã³ãŒããšã¯ãªã«ãã®äºäŸãåŠã³ã2ç« ã§ã¯ãèšèšã®åæ©ããšããŠãæå³ããååä»ãã䜿ããçè§£ãå°é£ã«ããæ¡ä»¶åå²ã®ãã¹ãã¯é¿ãããªã©ãåºæ¬çãªææ³ã玹ä»ãããŠããŸãã 第3ç« ã ã¯ã©ã¹èšèš âãã¹ãŠã«ã€ãªããèšèšã®åºç€âãããã¯ã©ã¹èšèšã®è©±ãå§ãŸãã®ã§ãããããã®ç« ããå°ãã¥ã€ãèªåéã®ã³ãŒãã©ããªã®ã?ããšãã話é¡ãããŒã ã¡ã³ããŒå
ã§åºãŠããŸãããå®éã«ããã§æžãããŠããã³ãŒãéãã«ã§ããŠããã®ã?ã ã£ãããä»ã®ããŒã ãéå»ã®çµéšè«ãªã©ã®è©±é¡ãªã©ãåºããªããããŒã å
ã§èšèšã«ã€ããŠãè°è«ãã§ããŠè¯ãã£ãã§ãã ãŸãå人çã«ã¯ç¬¬6ç« ãæ¡ä»¶åå² âè¿·å®®åããåå²åŠçãè§£ãã»ããææ³âãã§ã¯ãswitch caseã䜿ããã«interfaceã䜿ããã¹ãã©ããžãŒãã¿ãŒã³ã§åŠçãåããæ¹æ³ã«ã€ããŠã¯ãµã³ãã«ã³ãŒããæç€ºãããŠããŠããããããã£ãã§ãã 6ç« ä»¥éã«ã€ããŠããããå®è·µçãªãã¯ããã¯ããèšèšã®åãåãæ¹ã«ã€ããŠãæžãããŠããŸããæ°ã«ãªãæ¹ã¯ãã²æ¬èªãæã«åã£ãŠèªãã§ã¿ãã ãã! 茪èªäŒåŸã«åŸãè¯ãäœéšãšããŠã¯ãå®éã«æ¥åã®äŒè©±ã§ãããã£ãŠæ¬ã®äŸã§æžãããŠããæªããã¿ãŒã³ã§ã¯?ããšãã話ãããã£ãŠãå®è£
ã倿Žããæ©äŒããããŸããã ãè¯ãã³ãŒã/æªãã³ãŒãã§åŠã¶èšèšå
¥éãã®èŒªèªäŒãéå¬ããäºã§ãå°ãã¥ã¥ã§ããè¯ãã³ãŒããæžãèªä¿¡ãæãŠããšæããŸãã 茪èªäŒã«åå ããã¡ã³ããŒããã®ã³ã¡ã³ã 茪èªäŒã«åå ã¡ã³ããŒãããææ³ãããã ããã®ã§ã玹ä»ããŸã! ä¿å®ã芳ç¹ã«å®äŸã亀ããªããå®è·µçãªåœ¢ã§ãŸãšããããŠããã®ã§ãéçºãã¬ãã¥ãŒã«ã€ããŠèŠçŽãããæ©äŒãšãªããŸãããã¡ã³ããŒãšãäœéšè«ã亀ããªãã話ãåãããšãã§ããã®ã§ææçŸ©ãªæéã ã£ãšæããŸããã ããã£ãŠãã âã€ããâ ã«ãªã£ãŠãããããªããšãå€ãåºãŠããŠãèªã¿ãªããåèªèïŒãšå°ãåçããïŒã§ããŠãšãŠãããã£ãã§ããããŒã ã¡ã³ããŒãšèšèšã®è¯ãæªãã®ç®ç·ãæããããç¹ã§ããšãŠãæçšã ã£ããšæã£ãŠããŸããåå ã§ããŠããã£ãã§ãã ãµã³ãã«ã³ãŒããå
·äœçãªäºäŸãè±å¯ã§ã身ã®èŠãã®ãããã®ãå€ããåŠã³ããããŸãããåã¡ã³ããŒã®ç¥èŠãåŸããããè¯ãæ©äŒã«ããªããŸããã ãã®æ¬ã®èŒªèªäŒã¯éç®2åç®ã§ããã1床ç®ã§åžåããããªãã£ãéšåããã®ä»æãåºãããæ©äŒã«ãªã£ãããæŽã«ç¥èãæ·±ãŸããŸããããŸããéå»ã®äºäŸãããã®å Žåã©ãããïŒãã¿ãããªè°è«ãæ¯åæãããã®ã§ææçŸ©ãªæéã§ãã ãããã« ãè¯ãã³ãŒããæªãã³ãŒãã§åŠã¶èšèšå
¥éãã®èŒªèªäŒãéããããŒã å
ã§è°è«ããªããèšèšã«ã€ããŠåŠã¹ãæ©äŒãã§ããŸããã ãã®æ¬ãèªãã§ããã¯èªåã®äžã§è¯ãèšèšãæªãèšèšãšã¯äœã?ã®åºæºãæãŠãããã«ãªãããªãã¡ã¯ã¿ãªã³ã°ããéãéžæè¢ãå¢ããŸããã ä»åŸã®æ¥åã§ããã®æ¬ã«ããããŠããå
容ãå
ã«è¯ãèšèšãäœã£ãŠãããããšæããŸã! æåŸã«å®£äŒã§ãããBASE ã§ã¯ãšã³ãžãã¢ãæ¡çšäžã§ã! ä»åã®ãããªèŒªèªäŒã®ä»ã«ã瀟å
LTäŒãªã©éå¬ãããŠããã®ã§èå³ãããæ¹ã¯äžèšã®ç޹ä»è³æããæ¡çšæ
å ±ãããã²ã芧ãã ãã! speakerdeck.com binc.jp
ã¯ããã« Data StrategyããŒã ïŒä»¥äžãDSããŒã ïŒã§DWHãBIããŒã«ã®éçšãããŠãã@shota.imazekiãšäžæ£æ€ç¥ãAWSåºç€éçšãããŠãã @tawamura ã§ãã Aurora MySQL v2ïŒMySQL5.7äºæïŒã2024/10/31ã«æšæºãµããŒãçµäºãšãªããããDSããŒã ã§ã¯2024幎6æã«Aurora MySQL v3ïŒMySQL8.0äºæïŒãžã®ã¢ããã°ã¬ãŒãã宿œããŸããã ãã®éã«åŸããã課é¡ãç¥èŠã«ã€ããŠç޹ä»ããŠãããŸãã䞻㫠AWS DMS ã Amazon RDS ãã«ãŒ/ã°ãªãŒã³ããã〠ãçšããã¢ããã°ã¬ãŒãæ¹æ³ã®è©±ã«ãªããŸãã DSããŒã ã®ã€ã³ãã©æ§æ DSããŒã ã¯BASEã®æ©æ¢°åŠç¿åºç€ãæ§ç¯ã»éçšããŠãããAPIãªã©ãä»ããŠãããã¯ãåŽãžæ©æ¢°åŠç¿ã¢ãã«ã®æšè«çµæãªã©ãè¿ããŠããŸããåŠç¿ã»æšè«ã®ããã«äœ¿ããããã¯ãåŽã®ããŒã¿ã¯DMSãçšããŠãDSç°å¢ã«ã¬ããªã±ãŒã·ã§ã³ããŠããŸãã å
·äœçã«ã¯ãæ¬çªç°å¢ã«ããã¬ããªã«DBãDMSã¿ã¹ã¯ã®ãœãŒã¹ã«æå®ããDSç°å¢ã§äœ¿çšããDBãžãšåæãè¡ã£ãŠããŸãã ãŸããDMSã§åæããDBãããã«ãœãŒã¹ãšããŠæå®ããDMSã®å€æŽæ€ç¥ïŒCDCïŒã«ãã£ãŠååŸããå·®åãAmaon MSKã«æµããŠããŸããããã«ãã£ãŠç¹å®ã®ããŒãã«ã«ããŒã¿ãæ¿å
¥/æŽæ°ããããšããã€ãã³ããååŸããããšãã§ãããããããªã¬ãŒã«workerã§ä»ã®åŠçãè¡ã£ãŠããŸãããããã£ãworkerãã宿å®è¡ããããããã«ããåŠççµæãä¿åããŠããããã®DBãåãDBã¯ã©ã¹ã¿ãŒå
ã«ååšããŠããŸãã ä»åã¢ããã°ã¬ãŒã察象ãšãªã£ãã®ã¯ãå³ã§èµ€æ ã§ç€ºãããDS DBã¯ã©ã¹ã¿ãéšåã«ãªããŸãã äºåæ€èšŒ DSããŒã ã®DBïŒä»¥äžãDS DBïŒã§ã¯äžè¿°ããéããDMSãçšããŠãããã¯ãåŽã®ããŒã¿ãã¬ããªã±ãŒã·ã§ã³ãããŠããŸããDSããŒã ã®æ¹ãã¢ããã°ã¬ãŒããæ©ãã«å®æœããã¹ã±ãžã¥ãŒã«ã§åããŠãããããã¡ãžã£ãŒããŒãžã§ã³åäœã§ã®ããŒãžã§ã³å·®ç°ããã£ãŠãDMSã«ããåæãå¯èœãªã®ããäºåã«æ€èšŒããŸãããã§ããªãå Žåã¯ã¢ããã°ã¬ãŒãã®ã¿ã€ãã³ã°ããããã¯ãåŽãšåãããå¿
èŠãããããã§ãã æ€èšŒæ¹æ³ãšããŠã¯3ã€ã®DBã¯ã©ã¹ã¿ãŒAïŒMySQL5.7ïŒ, BïŒMySQL5.7ïŒ, CïŒMySQL8.0ïŒãçšæãã以äžã®ãããªåœ¢ã§DMS飿ºãè¡ããŸããã ãã®åŸãBãMySQL8.0ã«ã¢ããã°ã¬ãŒããããããšã§2ã€ã®äºè±¡ãåæã«èŠãããšãã§ããŸãã AïŒMySQL5.7ïŒâBïŒMySQL8.0ïŒ: DMS飿ºå
ïŒDS DBïŒãã¢ããã°ã¬ãŒãããæã®æå ããã«ã€ããŠã¯ç¹ã«åé¡ã¯çºçããŸããã§ãã BïŒMySQL5.7ïŒâCïŒMySQL8.0ïŒ: DMS飿ºå
ïŒãããã¯ãåŽã®DBïŒãã¢ããã°ã¬ãŒãããæã®æå BãMySQL8.0ã«ã¢ããã°ã¬ãŒãããããšãBâCãžã®DMSã¿ã¹ã¯ã倱æããŠããŸããã DMS飿ºã®éã«ONã«ããŠããå¿
èŠã®ããã·ã¹ãã 倿°log_binãOFFã«ãªã£ãŠããããã§ããã ãã¡ã ãåèã«åèµ·åãããšããããšã©ãŒã¯è§£æ¶ãããŸããã äžéšãšã©ãŒã¯çºçããŸããããã¡ãžã£ãŒããŒãžã§ã³åäœã§ã®ããŒãžã§ã³å·®ç°ããã£ãŠãDMS飿ºã¯åé¡ãªããšå€æããŸããããŸãDMS飿ºå
ïŒãããã¯ãåŽã®DBïŒãã¢ããã°ã¬ãŒãããéã«ã¯log_binã®å€ã«æ³šæããå¿
èŠãããããšãåãããŸããã ã¢ããã°ã¬ãŒãæ¹æ³ã®æ€èš Amazon Aurora MySQL ããŒãžã§ã³ 3ïŒMySQL 8.0 äºæïŒãžã®ã¢ããã°ã¬ãŒã ãåèã«ä»¥äž3ã€ã®éžæè¢ããã¢ããã°ã¬ãŒãæ¹æ³ãæ€èšããŸããã ã€ã³ãã¬ãŒã¹ã¢ããã°ã¬ãŒã ãã«ãŒ/ã°ãªãŒã³ããã〠ã¹ãããã·ã§ããããã®åŸ©å
ã¢ããã°ã¬ãŒãåŸã«åé¡ãçºçããŠããæ§ããŒãžã§ã³ã«æ»ãå€ãã¯ã©ã¹ã¿ãŒã«åãæ¿ããããšãå¯èœãªç¹ãããŠã³ã¿ã€ã ãæå°éã«æããããç¹ãããã«ãŒ/ã°ãªãŒã³ãããã€ãéžæããŸããã ãã«ãŒ/ã°ãªãŒã³ãããã€ã¯ããã«ãŒç°å¢ïŒçšŒåäžã®DBïŒãšã¯å¥ã§ã°ãªãŒã³ç°å¢ïŒMySQL8.0ã«ã¢ããã°ã¬ãŒããããDBïŒãæ§ç¯ããŠãããä»»æã®ã¿ã€ãã³ã°ã§æ¬çªç°å¢ããã«ãŒç°å¢ããã°ãªãŒã³ç°å¢ã«åãæ¿ãããã®ã§ããããŒã¿ã¯ãã«ãŒç°å¢ããã°ãªãŒã³ç°å¢ã«ã¬ããªã±ãŒã·ã§ã³ãããŠãããããå·®åãçããããšã¯ãããŸããã æ¬¡ã«AWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã䜿ãããã°ãªãŒã³ç°å¢ãDMSãçšããŠèªåã§æ§ç¯ãããã®æ€èšãè¡ããŸãããåŸè
ã¯æºåã«æéããããã®ã§ãããAWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã§ããŒã«ããã¯ãè¡ãããããªã©äžæãªç¹ãåœåããã€ããããåé¢DMSã®ç°å¢æ§ç¯ã«é¢ããŠã¯æ¢ã«ç¥èŠãããããŸãå°ãããšããªãããã ã£ãã®ã§èªåã§æ§ç¯ããããšã«ããŸããã DMSãçšããã°ãªãŒã³ç°å¢ã®æ§ç¯ DMSãçšããŠãã«ãŒç°å¢ã®ããŒã¿ãã¬ããªã±ãŒã·ã§ã³ããæºåãããŠããŸãããããã®äœæ¥ãè¡ãªã£ãŠãããã¡ã«äžã€ã®èª²é¡ã«ã¶ã€ãããŸããã ã«ã©ã ã®ããŒã¿ãµã€ãºã倧ãããããšDMSã¿ã¹ã¯ãã¿ã€ã ã¢ãŠãã«ãªã ãŸããDMSã§DS DBã®ããŒã¿ãã°ãªãŒã³ç°å¢ã«åæããŠãå
šãåãç¶æ
ã®DBãæ§ç¯ããããšã«ããŸããã DS DBã«ã¯ããããã¯ãããDMSã§åæããŠããããŒãã«ã«å ããŠãDSããŒã ã§åãããŠãããªãœãŒã¹ãæ°èŠä¿åã»æŽæ°ãè¡ãªã£ãŠããDBãããŒãã«ãå«ãŸããŠããŸãããã®ããŒãã«ã®äžéšã§ã MEDIUMTEXT ãªã©å€§ããã®ããŒã¿ïŒLOB: ã©ãŒãžãã€ããªãªããžã§ã¯ãïŒãä¿åããŠããã«ã©ã ãååšããŠããŸãã DMSã§ãããã®LOBåãå«ãããŒãã«ã®ã¬ããªã±ãŒã·ã§ã³ãè¡ãéãéåžžã®ãã€ããªãã°ã«ããåæã§ã¯ãªããéžæå¯èœãªLOBã¢ãŒãã«ããåŠçæ¹æ³ãé©çšããããšã«ãªããŸãã AWS DMS ã¿ã¹ã¯ã§ã®ãœãŒã¹ããŒã¿ããŒã¹ã® LOB ãµããŒãã®èšå® ã°ãªãŒã³ç°å¢ãžã¬ããªã±ãŒã·ã§ã³ãè¡ãDMSã¿ã¹ã¯ãå®è¡ããŠãããšã以äžã®ãããªãšã©ãŒãçºçããŸããã Table ' db_test ' . ' table_test ' was errored/suspended (subtask 1 thread 1 ). Failed (retcode -1 ) to execute statement; RetCode: SQL_ERROR SqlState: HY000 NativeError: 3024 Message: [MySQL][ODBC 8.0 (w) Driver][mysqld -5.7 . 12 - log ]Query execution was interrupted, maximum statement execution time exceeded (replicationtask.c: 3066 ) LOBåã«å¯ŸããŠã¯ãã¹ããŒãã¡ã³ããçºè¡ããŠå¥éããŒã¿ãååŸãããããªã®ã§ãããããã§ã¿ã€ã ã¢ãŠããçºçãããã®ããšæãããŸãã AWSã«ãŠãµããŒãã±ãŒã¹ãäœæããç¶æ³ãå
±æãã€ã€ä»¥äžã®ãããªé
ç®ã宿œããŸããã èªäž»çã«æ€èšŒïŒDMSã¿ã¹ã¯èšå®ïŒ CommitRate ã1000ãã100ã« TransactionConsistencyTimeout ã60ãã600ã« HistoryTimeslotInMinutes ã5ãã60ã« ãµããŒãããå
±æãåã宿œïŒDMSãšã³ããã€ã³ãèšå®ïŒ ExecuteTimeout ã60ãã3600ã« ããããããã®å€æŽãè¡ãªã£ãŠãæ¹åãã¿ãããŸããã§ããã ç¶ããŠããã€ãã®å¯Ÿå¿æ¹éãæäŸããŠããã ããã®ã§ãããããä»¥äžæéããããŠå¯Ÿçãé²ãããããAWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã詊ããæ¹ãè¯ããããšæãç¹ãããã€ãçºçããŠããŸããã DS DBã®ããŒã¿ã¯å°ãããªãã®ã§ãDMSã«ããåæãããªãæéããããããšãæ³å®ããã èªåã§ãã«ãŒ/ã°ãªãŒã³ãããã€ãè¡ããšããŠããæžã蟌ã¿ãè¡ãªã£ãŠãããªãœãŒã¹ãããããã«ãããŒã¿ã®äžæŽåãªãããŒã«ããã¯ãè¡ãããšã¯ã»ãŒäžå¯èœ ä»åŸãã¢ããã°ã¬ãŒãã®æ©äŒã¯ããã®ã§ãå
¬åŒæ©èœã§æ¥œã«å¯Ÿå¿ã§ããããšãããã£ãŠããã°ããã«è¶ããããšã¯ãªã ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã§ãæ³å®ããŠãããã¹ããåãæ»ããã§ããã 以äžããDMSãçšãããã«ãŒ/ã°ãªãŒã³ãããã€ã¯æå¿µããAWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœãäœ¿ãæ¹éã«å€æŽããŸããã AWSãã«ãŒ/ã°ãªãŒã³ããã〠äºåç¢ºèª æºåã«ã€ããŠã¯ ãã«ãŒ/ã°ãªãŒã³ãããã€ã®äœæ ãåèã«é²ããŠãããŸããããã«ãŒ/ã°ãªãŒã³ãããã€äœææã«èæ
®ãã¹ãç¹ãåæããŠãããŸãã ãã«ãŒ/ã°ãªãŒã³ãããã€ã§ãµããŒããããŠããªãæ©èœãå©çšããŠããã 以äžã®æ©èœã¯ãã«ãŒ/ã°ãªãŒã³ãããã€ã§ãµããŒããããŠããªããããå©çšããŠããå Žåã¯äžæçã«æ¥ç¶ãåããªã©ã®æ€èšãå¿
èŠã«ãªããŸããDS DBã§ã¯å©çšããŠããªãã£ãããç¹ã«å°ãããšã¯ãããŸããã§ããã Amazon RDS Proxy ã«ã¹ã±ãŒããªãŒãã¬ããªã« ã¯ãã¹ãªãŒãžã§ã³ãªãŒãã¬ããªã« AWS CloudFormation ãã«ã AZ DB ã¯ã©ã¹ã¿ãŒã®ããã〠ãã«ãŒç°å¢ã®DBã¯ã©ã¹ã¿ãŒã®binary loggingãONã«ãªã£ãŠããã ãã«ãŒç°å¢ããã°ãªãŒã³ç°å¢ãžã®ã¬ããªã±ãŒã·ã§ã³ãè¡ãããã«ãã€ããªãã°ãå¿
èŠã«ãªãããããã©ã¡ãŒã¿ã°ã«ãŒãã® binlog_format ã確èªããå¿
èŠããããŸãããã©ãŒãããã¯è€æ°ãããã©ãã§ãã¬ããªã±ãŒã·ã§ã³ã§ããããã§ããæšå¥šã¯ ROW ã§ãããDS DBã§ã¯å
ã
ãDMSãå©çšããŠããç¹ããå
ã
ã ROW ã«èšå®ããŠããã®ã§ãã¡ããç¹ã«åé¡ãªãã£ãã§ãã ãã«ãŒ/ã°ãªãŒã³ãããã€ã®äœæ äœæèªäœã¯ã°ãªãŒã³ç°å¢ã®ãšã³ãžã³ããŒãžã§ã³ã®èšå®ãäºåã«äœæããŠããããã©ã¡ãŒã¿ã°ã«ãŒããæå®ããã ãã ã£ãã®ã§ç°¡åã§ããã https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-creating.html#blue-green-deployments-creating-preparing-mysql äœæéå§åŸããŸããã«ãŒç°å¢ã®DBã¯ã©ã¹ã¿ãŒãè€è£œåŸã«ã¢ããã°ã¬ãŒããããŠã°ãªãŒã³ç°å¢ãæ§ç¯ããŸããè€è£œèªäœã¯æ°ååçšåºŠã§çµãã£ãã®ã§ãããã¢ããã°ã¬ãŒãæã«ãšã©ãŒã«ãªããŸããã Database cluster is in a state that cannot be upgraded: Upgrade prechecks failed. For more details, see the upgrade-prechecks.log file upgrade-prechecks.log ãã¡ã€ã«ã確èªãããšããããšããããŒãã«ã®ããŒãã£ã·ã§ã³ãã¢ããã°ã¬ãŒãããå¿
èŠãããããã§ãã Partitioning upgrade required. Please dump /reload to fix it or do: ALTER TABLE `database`.` table ` UPGRADE PARTITIONING " 察象ã®ããŒãã«ã¯DSããŒã ã§çŸåšå©çšããŠããªããã®ã ã£ããããä»åã¯åé€ããããšã«ããŸãããå¿
èŠãªå Žåã¯ãšã©ãŒã®æ¡å
ã«åŸã£ãп޿°ããããããšã§è§£æ¶ã§ãããšæããŸãã ååºŠäœæäœæ¥ãè¡ããã°ãªãŒã³ç°å¢ã®æ§ç¯ãå®äºããŸãããæ§ç¯ããæéã¯å€§äœ1æéçšåºŠã§ããã æ€èšŒ ã°ãªãŒã³ç°å¢ã®æ§ç¯ãçµãã£ããããDS DBåšãã§åããŠããããããAPIãåãããŠã¿ãŠãåäœã«åé¡ããªããã§ããéã確èªãè¡ããŸããã ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã§ã¯ãã°ãªãŒã³ç°å¢æ§ç¯åŸã«ã°ãªãŒã³ç°å¢ã«æ¥ç¶ãè¡ãããšã³ããã€ã³ããäœæãããŸãïŒããŒã¿ã¯ãã«ãŒç°å¢ã®ãã®ãè«çã¬ããªã±ãŒã·ã§ã³ãããŠãããåºæ¬çã«åããã®ãæ±ããïŒãããã«ããããã¹ãããããªãœãŒã¹ã®åãå
ãã°ãªãŒã³ã®ãšã³ããã€ã³ãã«åããŠå®è¡ããŠã¿ãããšã§ãåãæ¿ãåŸã®åé¡ãçºçããªãããäºåã«ç¢ºèªããããšãã§ããŸãã https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-overview.html 確èªã®äžã§ãæžã蟌ã¿åŠçã®ãã¹ããè¡ãããšãããšããããã©ã¡ãŒã¿ã°ã«ãŒãã®read_onlyã¯0ã«ãªã£ãŠããããã°ãªãŒã³ç°å¢åŽã§ã¯ONã®ç¶æ
ã«ãªã£ãŠããããšã«æ°ã¥ããŸããã ãã©ã¡ãŒã¿ã°ã«ãŒã MySQL MySQL [(none)]> show variables like ' read_only ' ; + ---------------+-------+ | Variable_name | Value | + ---------------+-------+ | read_only | ON | + ---------------+-------+ AWSã®ããã¥ã¡ã³ã ã§ãã°ãªãŒã³ç°å¢ã¯èªã¿åãå°çšã«ä¿ã€ããšãå§ããŠããããããã®ãããªå·®ç°ãçãŸããŠããã®ããšæšæž¬ããŠããŸãããªããã¹ã€ãããªãŒããŒããéã«ã¯read_onlyãã©ã¡ãŒã¿ã¯OFFã«ãªã£ãŠããŸããã®ã§ãæ°ã«ããå¿
èŠãããã®ã¯ãã¹ãæã®ã¿ã§ããã ãã¹ãäžã¯ãã°ãªãŒã³ç°å¢ã®ããŒã¿ããŒã¹ãèªã¿åãå°çšã«ä¿ã€ããšããå§ãããŸããã°ãªãŒã³ç°å¢ã§ã¯ã¬ããªã±ãŒã·ã§ã³ã®ç«¶åãçºçããå¯èœæ§ããããããæžãèŸŒã¿æäœãæå¹ã«ããå Žåã¯æ³šæããŠãã ããããŸããã¹ã€ãããªãŒããŒåŸã«æ¬çšŒåããŒã¿ããŒã¹ã«æå³ããªãããŒã¿ãçºçããå¯èœæ§ããããŸããAurora MySQL ã®æžãèŸŒã¿æäœãæå¹ã«ããã«ã¯ã read_only  ãã©ã¡ãŒã¿ã 0  ã«èšå®ããDB ã€ã³ã¹ã¿ã³ã¹ãåèµ·åããŸãã 宿œ ã¡ã³ããã³ã¹åœæ¥ãDMS, CDCã¿ã¹ã¯ã忢åŸã«ã°ãªãŒã³ç°å¢ãžã®åãæ¿ãã宿œããŸãããããŠã³ã¿ã€ã ã¯3åçšåºŠã§çµããããã®åãæ¿ãèªäœã¯ç¹ã«åé¡ãçºçããŸããã§ããã ãã ãDMSãCDCã¿ã¹ã¯ãåéããåŸãDS DBâAmazon MSKãžã®CDCã¿ã¹ã¯ããšã©ãŒãšãªã£ãŠããŸããã確èªãããšãããlog_binãOFFã«ãªã£ãŠããããšãããããŸããã show global variables like " log_bin " ; + ---------------+-------+ | Variable_name | Value | + ---------------+-------+ | log_bin | OFF | + ---------------+-------+ DMSã®äºåæ€èšŒã®æç¹ã§åæ§ã®çŸè±¡ãèµ·ããŠãããããã©ã€ã¿ãŒã€ã³ã¹ã¿ã³ã¹ãåèµ·åããŠã¿ããšãããã©ã€ã¿ãŒã€ã³ã¹ã¿ã³ã¹ã§log_bin=ONã«ãªã£ãŠCDCã¿ã¹ã¯ãåãããã«ãªããŸãããåèµ·åèªäœã¯1åçšåºŠã§å®äºããŸããã ãããã« AWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã¯ããã©ã¡ãŒã¿åšãã«ã¯å°ãæ©ãŸãããŸããã倧ããåé¡ã«ã¯ãªããªãã£ãã§ãããç°¡åã«å©çšã§ããŠå®æœãããã«çµããããã®ã§éåžžã«ããã£ãã§ããä»åŸã®DS DBé¢é£ã®ã¡ã³ããã³ã¹æ¹æ³ã«ãããŠæåãªåè£ã«ãªããšæããŸããã æåŸãšãªããŸãããåŒç€Ÿã§ã¯ããŒã¿ãšã³ãžãã¢ãåéããŠããŸãããèå³ã®ããæ¹ã¯æ°è»œã«ãå¿åãã ããïŒ open.talentio.com
welcome fintech communityã®ãããŒããã£ãããïŒ ããã«ã¡ã¯ïŒ BASE BANK Divisionã®æŸéªã§ãã ä»åãéèæ±ºæžã®æè¡é åãäžå¿ãšããã³ãã¥ããã£ãç«ã¡äžãã6æ20æ¥ã«ã€ãã³ããåéå¬ããŸããã ãã®æš¡æ§ããå±ãããŸãã Welcome Fintech Communityãšã¯? ç¹å®ã®æè¡ãè·èœã«é¢ããã³ãã¥ããã£ã¯æ°å€ããããŸããfintechã«é¢ããã³ãã¥ããã£ã¯å°ãªããfinteché åãçãäžããŠããããã«ç¥èŠããæ©ã¿ã®å
±æãã§ãããããã£ãšãªãŒãã³ãªã³ãã¥ããã£ãã»ãããªãšæããŠããŸããã ãããªãšããEMããããŒãã¢ããã§ã¹ããŒããã³ã¯ç€Ÿã® äžè°·ãã ãšåºäŒãããfintechçéã§éãŸã£ãŠãã£ãšè²ããªè©±ãããããïŒïŒïŒããšçãäžãã£ãçµæãã®ã³ãã¥ããã£ãç«ã¡äžããããšã«ããŸããã welcome-fintech.connpass.com åœæ¥ã®æ§å LT åžäŒã®æ³å·ããããããçãäžãäžæã ç³ã蟌ã¿ã«ã€ããŠã¯ããããããããšã«40人æ ãäžæãã£ã±ãã«ãªãã»ã©ã®çæ³ïŒ ããããã€ãã³ãã¯ç³èŸŒã¿äººæ°ã«å¯ŸããŠ6~70%ãããæ¥å ŽããŠãã ããã°åŸ¡ã®åãšèšãããŠããŸããã80%è¿ãæ¹ã«ãæ¥å Žããã ããç±éã®é«ããæããŸããã æåã¯BASE BANKãããæ ¹æ¬ããã® âBASEã«ãŒãããèŠã決æžãµãŒãã¹"ã ã«ãŒã決æžã®åºæ¬çãªä»çµã¿ããããå®çŸããããã®ãBASEã«ãŒãã ã®ã·ã¹ãã æ§æãããã«ã¯ãã£ã³ããŒã³ãªã©ã®æœçãã©ãå®çŸããã?ãªã©å
·äœçãªè©±ãŸã§ããŠããããŸããã æ±ºæžãã¿ãŒã³ãæ¬åœã«å€æ§ã§å®éã«ãªã¯ãšã¹ããæ¥ããŸã§ååšèªäœç¥ããªããã®ãããŸã«çºçãããšãã話ã«ãã«ãŒã決æžã«é¢ãã£ãŠããã£ãããåå è
ã®æ¹ã
ãæ·±ãé ·ããŠãããçããèŠåŽãããŠãããã ãªã»ã»ã»ãšæããŸããã BASE BANKã®æ ¹æ¬ãã speakerdeck.com æ¬¡ã«æ ªåŒäŒç€Ÿã¹ããŒããã³ã¯ã®CTO å äºãã ããâã«ãŒãçºè¡äŒç€Ÿ(ã€ã·ã¥ã¢)ãæ¯ããã·ã¹ãã 解説âãšããã¿ã€ãã«ã§ãB/43ãã®ã¢ãŒããã¯ãã£ã«ã€ããŠçºè¡šããã ããŸããã ã€ã·ã¥ã¢ãšããç«å Žã§ã¯ãBASEã«ãŒãããšåãã§ãããããæ·±ãVISAã®æ±ºæžãããã¯ãŒã¯ãšæ¥ç¶ããŠããããPCI DSSãšããã»ãã¥ãªãã£åºæºãã¯ãªã¢ããå¿
èŠãããããã®ããã«ã©ã®ãããªæè¡éžå®ãã¢ãŒããã¯ãã£æ§ç¯ãè¡ã£ãŠããã赀裞ã
ã«çºè¡šããŠãã ãããŸãããããªãã€ãã«ãŒãã®ãããã¯ããç«ã¡äžããæ©äŒãããããã°å¿
èªã®è³æã§ãïŒïŒ ã¹ããŒããã³ã¯ã®å äºãã speakerdeck.com æåŸã«PAYæ ªåŒäŒç€Ÿããã¯ãªã¹ããã PAY瀟ã§ãPCI DSSã®åºæºãã¯ãªã¢ããããã®æ§ã
ãªå¯Ÿå¿ãè¡ã£ãŠããã®ã§ãããä»å¹Žå®éã«çºçãã察å¿äºæ¡ã«ã€ããŠãµã¹ãã³ã¹ã®ããšã远äœéšããŠãããããªçºè¡šãããŠããããŸããã è©³çŽ°ã¯æ¯éè³æãèŠãŠã¿ãªããã远äœéšããŠããã ãããã§ãããåé¡ãç¹å®ããç¡äºè§£æ±ºãããšãã«ã¯äŒå Žãããããšæå£°ãäžãã£ãŠãããäŒå Žãäžäœæã«å
ãŸããŠããŸããã PAYã®ã¯ãªã¹ãã speakerdeck.com ããã«ãã£ã¹ã«ãã·ã§ã³ ããã«ãã£ã¹ã«ãã·ã§ã³ã§ã¯ãäºåã«çšæããŠããããŒããšXã«æçš¿ããã ãã質åãæŸããªããé²ããŠãããŸããã æ±ºæžã®ç¢ºå®ããã£ã³ã»ã«ãèæ
®ãããã£ã³ããŒã³äºç®èšå®ã®è³ªåããPCI DSSãèæ
®ããã·ã¹ãã åå²ã«ä»ããŠã®èå¯ãªã©ãæããã«fintechçµéšè
ããã®è³ªåã ïŒãšããå
容ãããã倧ãã«çãäžãããèŠããŸããã ããã«ãã£ã¹ã«ãã·ã§ã³ã®æ§å æèŠªäŒ LTãããã«ãã£ã¹ã«ãã·ã§ã³ã®æéãè¶³ããªãã£ãã®ããæèŠªäŒã§ãåæ¹ããæ±ºæžãééãPCI DSSãªã©æ§ã
ãªæ±ºæžè«çŸ©ãèãããéåžžã«çãäžãã£ãŠããŸããã æ¬¡ããããããŒãã§è©±ãããïŒãšããå£°ãæ¬¡åã¯ãã€ãããã§ããïŒïŒïŒãªã©æ©é次åéå¬ã®èŠæãããã ããªã©åå ããŠãã ãã£ãçããã®ç±éãæåããæåŸãŸã§é«ãããã®ã³ãã¥ããã£ãç«ã¡äžããæå³ããã£ããªããšéåžžã«ãããããã£ãã§ãã æèŠªäŒã®æ§å ãããã« æ£çŽããçšåºŠéèŠã¯ããã ãããªãšã¯æã£ãŠãããã®ã®ãæ³å®ä»¥äžã®çãäžãããèŠããä»åŸãç¶ç¶ããŠãã®ã³ãã¥ããã£ãè²ãŠãŠããããïŒãšæããã€ãã³ãã«ãªããŸããã åœæ¥ã®æ§åãXã®ããã·ã¥ã¿ã°ã远ããšããã«ããããããããšæããŸããæ¯éã芧ã«ãªã£ãŠã¿ãŠãã ããã https://x.com/hashtag/welcome_fintech æåŸã«ããã®å ŽãåããŠå
±æžããŠãã ãã£ãã¹ããŒããã³ã¯ããããããŠãåå ã®çããåæ¹ã«æè¬ç³ãäžããŸããæ¬åœã«ããããšãããããŸããïŒ ãŸã æªå®ã§ããã第2å以éãéå¬ããããšæã£ãŠããã®ã§ããã²ãåå ãã ããïŒ
ããã«ã¡ã¯ãBASE BANKã§ãã å
é±BASE BANKã¡ã³ããŒã®ç»å£ãã€ãã³ãåå ãå¶ç¶éãªã£ããããä»é±ã¯å®è³ªã€ãã³ãã¬ããŠã£ãŒã¯ãšãªã£ãŠãããŸãã ä»åã¯å»ã6æ21, 22æ¥ã«éå¬ãããã¹ã¯ã©ã ãã§ã¹å€§éª2024ã§ã®ç»å£ã«ã€ããŠã³ã¡ã³ãããå±ãããŸãïŒ ã¹ã¯ã©ã ãã§ã¹å€§éª2024 ä»ååå ããã¹ã¯ã©ã ãã§ã¹å€§éªã¯ããªã³ã©ã€ã³éå¬ã§ã¯ãããŸãã倧éªãã¯ãããšããåãµãã©ã€ãäŒå Žãååšãããã©ãã¯ããšã«åäŒå Žã®ååãã€ããããŠããŸããã ãã®ãããã¹ã¯ã©ã ãã§ã¹â倧éªâã®âä»å°âãã©ãã¯ã ãâèãéâäŒå Žããç»å£ãªã©ããªããªããã€ã³ã³ããã¹ããªç¶æ
ã«ãªã£ãŠãã人ãããããŠããŒã¯ã§ããããŸã話ã®çš®ãšãªã£ãŠããŸããã âãºãŒã ã€ã³âãšéæã£ãŠåäŒå Žã®æš¡æ§ãäžç¶ããããšãªã³ã©ã€ã³ãªãã§ã¯ã®äº€æµãããã€ã€ãåäŒå Žããšã«ãã¯ãŒã¯ã·ã§ãããæèŠªäŒã倧ãã«çãäžãããªã©ããªã³ã©ã€ã³ãšãªãã©ã€ã³ã®äž¡æ¹ã®ã¡ãªãããæå€§é掻ãããå Žã€ããããããŠããŸããã ã¹ã¯ã©ã ãã§ã¹ã«é¢ããã¿ãªããã®ã€ãã³ãéå¶ã¹ãã«ã®é«ããèã§æããããšãã§ãããšãŠãåŠã³ãå€ã楜ããã£ãã§ãã ä»åã®ã»ãã·ã§ã³ BASE BANKããã¯æŸéª( @applepine1125 )ãšæ³å·( @gimupop )ã®2åãç»å£ããŸãããã¡ãªã¿ã«2人ãšãä»åã®ç»å£ãã¹ã¯ã©ã ãã§ã¹ååå ã§ããïŒ æ³å· -ãã¢ãžã£ã€ã«ãœãããŠã§ã¢éçºå®£èšããå®è·µããããã«äºæ¥è²¬ä»»è
ã«ãªã話 Scrum Fest Osaka 2024 - 「アジャイルソフトウェア開発宣言」を実践するために事業責任者になる話 | ConfEngine - Conference Platform ç»å£è
ã³ã¡ã³ã XPç¥ããžã®åå çµéšã¯ãããŸããããã¢ãžã£ã€ã«ã³ãã¥ããã£ãžã®åå ã¯ä»åãã»ãŒåããŠã§ããã ãªã¢ãŒãé
ä¿¡ã®ä»çµã¿ãæŽã£ãŠãããµãã©ã€ãäŒå Žãšãªã³ã©ã€ã³ãåæã«ç¹ãã£ãŠããŸããã人ã®é¡ãèŠããå ŽæãçšæããŠããã ããã®ã§ãéåžžã«çºè¡šããããã£ãã§ããç©ºæ°æããšãŠãæž©ããã45åéè空ã«åãã£ãŠçºè¡šãç¶ããã®ã¯èŸããªãŒãšæã£ãŠããäžã§éåžžã«å©ãããŸããããªã³ã©ã€ã³ãªã®ã«éãŸããŠãçµäºåŸé£²ã¿äŒãã§ããäœéšãæé«ã§ãããåå·è食ãã©ãã¯ã©ãã ä»åã®ç§ã®çºè¡šã¯WebãµãŒãã¹ãäœããªããããã¯ããããŒãžã£ãŒã¯äºæ¥è²¬ä»»è
ã«ãªããšãããè³ççãªå§åŒ·ãã¡ãã»ãŒãžãªãã§ãããè³æèªãã§ããã ãããšçŽåŸããã ããã»ã»ã»ã¯ãïŒ BASE BANKã®ããŒã äœãã®èæ¯ãèŠããçºè¡šã§ããããšæããŸãã åç»ãåŸæ¥åºããããªã®ã§ã楜ãã¿ã«ãåŸ
ã¡ããã ããŸããšã æŸéª - æ°èŠäºæ¥ç«ã¡äžããã°ããŒã¹ã§ãã¡ããš"ãã£ã¹ã«ããªãŒ"ãç¶ããããã¢ãžã£ã€ã«çµç¹ã®äœãæ¹ Scrum Fest Osaka 2024 - 新規事業立ち上げ、グロースできちんと"ディスカバリー"し続けられるアジャイル組織の作り方 | ConfEngine - Conference Platform speakerdeck.com ç»å£è
ã³ã¡ã³ã ä»åã¹ã¯ã©ã ãã§ã¹å€§éªã«ãŠã¹ã¯ã©ã ãã§ã¹èªäœã«ååå ãåç»å£ãããŠããã ããŸããã ã¯ããã¯ã©ããã£ãé°å²æ°ãããããªãã£ãã®ã§ãããä»ã®æ¹ã
ã®çºè¡šããåŸããã®ãéåžžã«å€ãã£ãã®ã¯ãã¡ãããç»å£è
ã ãã§ãªãåå è
å士ã§ãçžäºã«ã³ãã¥ãã±ãŒã·ã§ã³ããšãå ŽãèšããããŠããããšãåŠã³ãæå€§åããããã®å·¥å€«ãéæã«æœãããŠããéåžžã«åšã®å€§ããã³ãã¥ããã£ã ãªããšæããŸããã èªåã¯æéã®éœåã§æèŠªäŒã«ã¯åå ã§ããªãã£ãã®ã§ãããåå è
çšã®Discordã«åå°ã®æèŠªäŒã®æ¥œããããªåçãäžãã£ãŠãããæ¬¡ã¯çµ¶å¯ŸæèŠªäŒãŸã§åå ãããã»ã»ã»ïŒãšå¿ã«æ±ºããŸããã çºè¡šã§ã¯ããã ã¹ããŒãã£ã«ã¢ãŠããããããã ãã§ãªããã¡ãããšä»®èª¬æ€èšŒã®ãµã€ã¯ã«ãåãç¶ãããããããªçµç¹ã¥ããã倧äºã ãïŒãšãã話ãããŸããã æ°èŠäºæ¥ç«ã¡äžããã°ããŒã¹ææã¯ã©ãããŠãã¢ãŠããããã«ã°ããç®ãè¡ããã¡ãããããŸããããããããç¶æ³ããäžå¯§ãã€çŽ æ©ããã£ã¹ã«ããªãŒãµã€ã¯ã«ãåããâæ£ããâãããã¯ããäœãç¶ããããšãäœãã倧äºã ãšæã£ãŠããã®ã§ãåããããªç¶æ³ã®æ¹ãããã£ãããã°ãã²äžäºäŸãšããŠåèã«ããŠããã ããã°ãšæã£ãŠããŸãã ãããã« ã©ããããªã³ã©ã€ã³ãšãªãã©ã€ã³ã®ãã€ããªãã圢åŒã§ã®éå¬ã¯ä»åãæåŸã ã£ãããã§ã次å以éã¯ãªãã©ã€ã³éå¬ã«ãªãããã§ãã åäŒå Žã®ç±éãé«ããããããªå°æ¹ã§ããããªä»²éãšåºäŒã£ãŠã¿ãããšæã£ãã®ã§ãä»åŸããŸãåå ããŠããããã§ãïŒ æåŸã«å®£äŒã§ãããBASE BANKã§ã¯ä»åçºè¡šãããããªäºæ¥ã¥ãããçµç¹ã¥ãããäžç·ã«ãã£ãŠãã£ãŠããã仲éãåéããŠããŸãïŒ æè¡ãçµç¹ãäºæ¥ããªãã§ãããã®ã§ããBASE BANKã«èå³ãæã£ãŠãã ãã£ãæ¹ãããããã²ã話ããŸãããïŒãåŸ
ã¡ããŠããŸãïŒ open.talentio.com
ã¯ããã« BASE BANK Division ã§ ãã«ãµã€ã¯ã«ãšã³ãžã㢠ãããŠãã02 ïŒ @cocoeyes02 ïŒã§ãã 2024/06/22ïŒåïŒã«éå¬ãããPHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ 2024ã«ç»å£ããŸãããä»åã®èšäºã§ã¯ç»å£ã«ã€ããŠã®ã³ã¡ã³ããšãäŒå Žã®æ§åã«ã€ããŠãå±ãããŸãïŒ ä»åã®ã»ãã·ã§ã³ ä»åã¯15åæ ã§ã®ç»å£ã§ãã speakerdeck.com 02 @cocoeyes02 ããã®ããŒã¯ãã¯ããŸã£ãŠããŸãâ£ïž #phpconfuk #hall_hz https://t.co/AFxNus3Zay pic.twitter.com/DyCkj3fD8D — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ æéãèš±ãéããPHPUnit 11ã®ã¢ããããŒãã«ã€ããŠè©±ããŸããïŒ Ask the Speakerã§èããŠãããšãååã®PHPUnit 10ãå«ãPHPUnitã®ããŒãžã§ã³ã¢ããã«èŠåŽããŠããæ¹ãå€ãããã«æããŸããã æåã¯èå³ãç»å£ã®ãã¿ã«ãªããšããçç±ããå§ããPHPUnitã®åŠç¿ã§ããããçŸåšã¯å°æ¥ã®å¿
èŠæ§ãæããŠåãçµãã§ããŸããä»åŸããç¿å¹Žã«ãªãªãŒã¹ãããPHPUnit 12ã«ã€ããŠãããŸã 話ããŠããªãPHPUnit 10 / 11 ã®å€æŽç¹ãªã©ãããã°ãç»å£ã§è©±ããã°ãšæã£ãŠããŸãã çŸå°ã®æ§å ããããã¯ãçŸå°ã®æ§åãäžéšãå±ãããŸãïŒ ãªãŒããã³ã° ãªãŒããã³ã°ã¯å®è¡å§å¡é·ã®å
æ°æº¢ããæšæ¶ããã¹ã¿ãŒãããŸããã æã«ãé¢ãããå€ãã®äººãåå ããŠããããªãŒããã³ã°ã®æç¹ã§ã¹ã¿ãããåå è
ã®ç±éã®é«ããæããŸããã #phpconfuk 2024ãéå¹ã§ãð å®è¡å§å¡é· @BkNkbot ã®ãªãŒããã³ã°ããã¹ã¿ãŒãâ£ïž pic.twitter.com/WE182JzXOW — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ èªç±ã«è¡šçŸã§ããããŒã ã«ãŒã åå è
ã®ããŒã ã«ãŒãã¯ãèªåã§æžãããã屿§ã·ãŒã«ïŒæ®æ®µè§Šã£ãŠããæè¡ããããŒã«ãç緎床ãªã©ïŒã貌ã£ãããšãèªç±ã«è¡šçŸã§ããããã«ãªã£ãŠããŸããã ã©ããªããã¯ã°ã©ãŠã³ãããã£ã©ã¯ã¿ãŒã®äººãåå ããŠããã®ããã²ãšç®ã§ãããããã«ãªã£ãŠããŠæåã®è©±é¡ãåºããããã£ãã§ãã ããŒã ã«ãŒããæžãããã·ãŒã«ã貌ãå Žæã®æ§å 察ããã§ãïŒç æ°ã§åããã¡ãã£ãŠãïŒ #phpconfuk pic.twitter.com/evxBil9LEl — 02 (@cocoeyes02) 2024幎6æ22æ¥ ã¹ãã³ãµãŒããŒã¹ã®æ§å ã©ã®ã¹ãã³ãµãŒããŒã¹ãè³ãã£ãŠãããåå è
å士ã®ã³ãã¥ãã±ãŒã·ã§ã³ã§æº¢ãããã£ãŠããŸããã ãŸããã³ãŒããŒã¹ãã³ãµãŒã«ããã³ãŒããŒé£²ã¿æŸé¡ããçŠå²¡ãªãã§ã¯ã®ãèåãããã€ããããŠãããçŠå²¡ãæºå«ã§ãããããªãã¹ãã¿ãªãã£ãæããŸããã ã¹ãã³ãµãŒããŒã¹åšèŸºã®æ§å æ©éæ±äº¬è¿èŸºã«éäžããŠã #phpconfuk pic.twitter.com/Sc8I3xetr9 — 02 (@cocoeyes02) 2024幎6æ22æ¥ ã³ãŒããŒã¹ãã³ãµãŒãæäŸããŠããã³ãŒããŒãšçŠå²¡ãªãã§ã¯ã®ãèå ãŸããAsk the Speakerããã®ã¹ãã³ãµãŒããŒã¹è¿èŸºã§éå¬ãããŸããïŒ ïŒŒCããŒã«ã«ãŠAsk the speaker éå¬äžðïŒ ããããããã @okashoi ãšã02ãã @tadsan ãšããã£ã³ãã @zosokh ãšãsora ãã @_fs0414 ãšããšãã ãã @picopico_dev ãšãKanon ãã @samurai_se ã«è³ªåãããæ¹ã¯CããŒã«ãžð çç²çæã«ããæ°è»œã«ãè¶ããã ããâ #phpconfuk pic.twitter.com/KFEBskbbqZ — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ã«ãŒã ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ãè³ãã£ãŠããŸãããæåŸã®æéã®ãRound Tablle Session ããŒãïŒåŠç¿ã©ãããŠããïŒãã«åå ããŸãããã ãã©ã®ãããæè¡æžãèªãã§ãïŒã ãã©ãããç®çã§æè¡æžãèªãã§ããïŒã ãã©ãããåºæºã§æè¡æžãéžãã§ããïŒã ãšãã£ãæè¡æžã«é¢ãã質åã«ã€ããŠãåPHPerãšèªåã®åºæºãå
±æããããè°è«ããããšãé¢çœãã£ãã§ãã ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ã«ãŒã ã®ã¿ã€ã ã¹ã±ãžã¥ãŒã« ã¯ããŒãžã³ã° ã¯ããŒãžã³ã°ãå§ãŸããåæ
å ±ã®å
±æãè¡ãããŸãããPHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ 2024ã®åå è
ã¯çŽ300人ã§ãæ¥æ¬ã§éå¬ãããPHPã«ã³ãã¡ã¬ã³ã¹ã®äžã§ã人æ°ãå€ãã«ã³ãã¡ã¬ã³ã¹ã ãšå確èªããŸããã ããã«ãå§å¡é·ããåå è
ã®PHPã«ã³ãã¡ã¬ã³ã¹åå æŽïŒäŸãã°ãPHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ã«åããŠåå ãã人ãªã©ïŒã«ã€ããŠå°ããå Žé¢ããããŸããããåããŠPHPã«ã³ãã¡ã¬ã³ã¹ã«åå ãã人ããæè¡ã«ã³ãã¡ã¬ã³ã¹èªäœã«åããŠåå ãã人ãå°ãªãããããããšãå°è±¡çã§ããã #phpconfuk 2024 ããã£ãšããéã«ã¯ããŒãžã³ã°ð å®è¡å§å¡é· @BkNkbot ã®ã¯ããŒãžã³ã°ãã¹ã¿ãŒãããŸããâ£ïž pic.twitter.com/no8lPwYsYm — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ ã¯ããŒãžã³ã°çµäºåŸã«ã¯æèŠªäŒãå§ãŸããè²ããªPHPerãšã飯ãé£ã¹ãŠããé
ã飲ã¿ãªãã亀æµããŸããã ãããã« ã¹ã¿ããã®æ¹ã
ã«ã¯ãå¿ããã«ãé¢ããããå€ãã®æéãæºåã«è²»ãããŠããã ãããšæããŸãããã®å ŽãåããŠåŸ¡ç€Œç³ãäžããŸãã åä¹å· / åçŠå²¡ / åé£è¡æ©ã䜿ã£ãŠé ããžåºãããæè¡ã«ã³ãã¡ã¬ã³ã¹ã ã£ãã®ã§äžå®ããããŸãããããšãŠã楜ãããçŽ æµãªã«ã³ãã¡ã¬ã³ã¹ã§ããããŸãéå¬ããããæ¯éåå ãããã§ããã BASE / BASE BANKã§ã¯ãçµ¶è³PHPerãæ¡çšäžã§ããäžèšã®æ¡çšæ
å ±ãã«ãžã¥ã¢ã«é¢è«ãªã³ã¯ãããã²ã芧ãã ããïŒ binc.jp open.talentio.com
ã¯ããã« BASE BANK Division ã§ ãã«ãµã€ã¯ã«ãšã³ãžã㢠ãããŠãã02ïŒ @cocoeyes02 ïŒã§ãã AWS Summit Japan 2024ã®Day 1ã«ãªã³ãµã€ãã§åå ããŠããã®ã§ãçŸå°ã®æ§åããå±ãããŸãïŒ AWS Summit Japan 2024ãšã¯ïŒ AWS Summit Japan 2024ãšã¯ã2024/06/20ã2024/06/21ã«éå¬ãããAmazon Web ServicesïŒä»¥äžAWSïŒãåŠã¶ã€ãã³ãã§ãã åå ç»é²äººæ°ã¯5äžäººãè¶
ãããªã©ãæåéãæ¥æ¬æå€§ã®AWSãåŠã¶ã€ãã³ãã«ãªããŸãã aws.amazon.com äŒå ŽãŸã§ AWS Summit Japan 2024ã®äŒå Žã¯å¹åŒµã¡ãã»ã§ãã ãæŒåã«ãããããããå
¥å ŽãŸã§äººã䞊ãã§ããŸãããæ¥æ¬æå€§ã®AWSåŠç¿ã€ãã³ããšãã衚çŸã¯å®ã«ãµããããããšããã»ã©ã®å€§çæ³ã§ããã ãããã #AWSSummit pic.twitter.com/Aabz8OmdXd — 02 (@cocoeyes02) 2024幎6æ20æ¥ AWS Summit Japan 2024äŒå Žãžã®å
¥å ŽãåŸ
ã€é·èã®å AWS Summit Japan 2024äŒå Žå
¥å£ã®æ§å äŒå Žå
šäœã®æ§å å
¥å ŽããŠã¿ããšãããããã®å±ç€ºããŒã¹ãã»ãã·ã§ã³äŒå Žãç®ã®åã«åºãã£ãŠããŸããã ãšã³ã¿ãŒãã©ã€ãºãµããŒãã§ããåãã®ãã£ãAWS SAã®æ¹ã
ããæ®æ®µããæ¥ç¹ã®ããæ¹ã
ã«ãæšæ¶ããããã«ãããŒã¹ãå·¡ããŸãããäŒå Žã¯éåžžã«åºããå°ãè¿·ã£ãŠããŸã£ãã®ã¯å
ç·ã§ãã å
¥å ŽããŠããã®ãšãªã¢ã俯ç°ããŠæ®ã£ãæ§å ããã€ãã®ã»ãã·ã§ã³ãèŽè¬ããŸãããããã®èŽè¬ç°å¢ãæŽã£ãŠãããšæããŸãããäŸãã°ãåã»ãã·ã§ã³äŒå Žã¯å€§äººæ°ãå容ã§ããå
šåžã«ã¯ç»å£è
ã®ãã€ã¯é³å£°ãã€ã€ãã³ã§èãããã®ã¬ã·ãŒããŒãçšæãããŠããŸããã åã»ãã·ã§ã³ã®äŒå Žã暪ããæ®ã£ãæ§å é
åçãªã³ã³ãã³ããçãã ããã å
šãŠã¯ç޹ä»ããããªãã§ãããçŸå°ã§äœéšããã³ã³ãã³ããäžéšç޹ä»ããŸãã AWS Snowball Edgeããã€ã¹ãæã¡äžããŠã¿ã AWS Snowball Edgeããã€ã¹ ã®å®ç©ãå±ç€ºãããŠããã®ã§ãæã¡äžããããŠããã ããŸãããAWS Snowball Edgeããã€ã¹ã¯çŽ20kgã»ã©ãããäž¡æã§ãªããšæã¡äžããããªãã»ã©éãã£ãã§ãã AWS Snowballã«ã€ããŠã¯AWSèªå®è©Šéšã§åŠãã çšåºŠã®ç¥èããæã£ãŠããªãã£ãã®ã§ãå®éã«è§Šããããšãã§ããã®ã¯è¯ãçµéšã«ãªããŸããã snowballæã¡äžããããŠããã£ã #AWSSummit pic.twitter.com/oZRG9rHNvC — 02 (@cocoeyes02) 2024幎6æ20æ¥ Chaos Kitty ã²ãŒã 圢åŒã§ã«ãªã¹ãšã³ãžãã¢ãªã³ã°ãšå¯èŠåãåŠã¹ã Chaos Kitty ãå±ç€ºãããŠããŸãããã²ãŒã ã¢ãŒãã¯ã¬ãžãªãšã³ã¹ãšã»ãã¥ãªãã£ãé£æåºŠã¯EasyãšHardããããããããã®åŸ©æ§ã¿ã€ã ã©ã³ãã³ã°ãªã¹ãããããŸããã ç§ã¯ã¬ãžãªãšã³ã¹ã¢ãŒãã®Easyããã¬ã€ãããŠããããŸããããæ¬äŒŒçã«é害èšç·ŽãããŠãããããªæèŠã§ãããèªç€Ÿåãã®ãã¢ç°å¢ããã£ãããæ¥œãã¿ãªããã€ã³ã·ãã³ã察å¿ååäžãããã£ããã«ãªãããã ãšæããŸããã ã²ãŒã 圢åŒã§ã«ãªã¹ãšã³ãžãã¢ãªã³ã°ãšå¯èŠåãåŠã¹ãchaos kitty é¢çœãã£ãïŒ #AWSSummit pic.twitter.com/Gv1y7KfhsX — 02 (@cocoeyes02) 2024幎6æ20æ¥ Industry Zone ãã®ãšãªã¢ã§ã¯ã忥çããšã®ææ°ã® AWS ãœãªã¥ãŒã·ã§ã³ã®ç޹ä»ããã¢ãè¡ãããŠããŸãããç§ã¯æµéå°å£²æ¶è²»è²¡ã€ã³ãã¹ããªãŒã«èšªããECäœéšã®åäžç®æããæ§ã
ãªæè¡ãæ©èœãèŠãŠããŸããã äŸãã°ãçæAIã䜿ã£ãåå説ææãååèæ¯ç»åã®çæããååã®çްéšã確èªã§ãã3D ããã°ã©ã ãã£ã¹ãã¬ã€ãªã©ããããŸããã Industry ZoneïŒæµéå°å£²æ¶è²»è²¡ã€ã³ãã¹ããªãŒã®æ§å AWSã§åŠæ³ããŠã¿ã QuizKnock ãããšã®ã³ã©ãäŒç»ã«ããããã«å±ç€ºã§ããããããªããšãã§ãããè¯ãã®ã«ããšããåŠæ³ãšããããå®çŸããããã®ä»çµã¿ããããŠAWSã¢ãŒããã¯ãã£å³ãæãããŠããŸããã å人çã«ã¯ãSAã®äœè€ãããåŠæ³ãããéå»ã®èªåãžçžè«ãããããå身ãšäŒè©±ã§ããããã«ãããããšãŠããšã¢ããŠè©ŠããŠã¿ãããšæããè¯ãã¢ã€ãã£ã¢ã ãšæããŸããã ãAWSã§åŠæ³ããŠã¿ããã®ããã«å±ç€ºã®æ§å SAã®äœè€ããã®åŠæ³ããŠã¿ãããã« AWS èªå®è
ã©ãŠã³ãž AWS èªå®è©Šéš ã«åæ Œãã人å°çšã®ã©ãŠã³ãžã§ããã©ãŠã³ãžå°çšã®Wi-Fi SSIDãšãã¹ã¯ãŒãã飲ã¿ç©ã黿ºãæäŸãããŠãããæ©ãç²ãããäœæ¥ããããæ¹ã«æé©ãªå Žæãšãªã£ãŠããŸããã ç¹å
žãšããŠãåæ Œãã詊éšããšã«ã¹ããã«ãŒãããããŸããç§ã¯ AWS Solution Architect Associate ã®ã¹ããã«ãŒãããããŸããã AWS èªå®è
ã©ãŠã³ãžã®æ§å AWS Solution Architect Associateã®ã¹ããã«ãŒ ä»ã«ã玹ä»ããããªãã»ã©ããããã®é
åçãªã³ã³ãã³ã ä»ã«ããAWSã®ãµãŒãã¬ã¹ãµãŒãã¹ã§äœããã Serverlesspresso ãã AWS DeepRacer Japan Championship Cup ã®ã¬ãŒã¹äŒå Žãªã©ããããŸããïŒ AWSã®ãµãŒãã¬ã¹ãµãŒãã¹ã§äœãããServerlesspresso AWS DeepRacer Japan Championship Cupã®ã¬ãŒã¹äŒå Ž AWS DeepRacer Japan Championship Cupã®ãµãã©ã€ããã£ã¹ãã¬ã€ ãããã« ã¹ã¿ãããç»å£è
ã®æ¹ã
ã«ã¯ãå¿ããã«ãé¢ããããå€ãã®æéãæºåã«è²»ãããŠããã ãããšæããŸãããã®å ŽãåããŠåŸ¡ç€Œç³ãäžããŸãã ã»ãã·ã§ã³ã¯2024/07/05ãŸã§èŠãããšã®ããšãªã®ã§ãäŒå Žã«çŽæ¥è¡ããªãã£ãæ¹ããã²ã芧ãã ããã aws.amazon.com BASEã§ã¯ãããŒã«ãæå±ã«é¢ãããAWSã䜿ã£ãŠããžãã¹ããªãŒãããããã¯ããžãã¹ãå®ããšã³ãžãã¢ãåéããŠãããŸãããèå³ãããæ¹ã¯ããã²äžèšã®æ¡çšæ
å ±ã®ãªã³ã¯ãã芧ãã ããïŒ binc.jp
ã¯ããã« Platform Group ã®ä¹
ä¿ç°ïŒ @ykbt13 ïŒã§ãïŒ BASEã§ã¯ãªã¢ãŒããã¯ãã£ãšããŠããã¯ãšã³ãã®æ¢åæ©èœãæ§ãªããžããªããæ°ãªããžããªãžç§»è¡ããäœæ¥ãæ¥ã
è¡ã£ãŠããŸãã詳ããç¥ãããæ¹ã¯ãã²ãã¡ããåç
§ããŠãã ããã www.youtube.com ãããªãªããBASEã«ãããã³ã¢æ©èœã®1ã€ã§ããååã®çºéæ©èœã®ç§»è¡ãè¡ãããŸãããããããªãããã³ã¢æ©èœã§ãããããã«æ§ã
ãªæ¹ä¿®ãç¹°ãè¿ãããŠè€éåããŠããŸã£ãçºéæ©èœã§ã¯ç§»è¡åã®åäœãä¿èšŒããè¡ããã¹ãã®ã¿ã§ã¯äžå®ããããŸãã ããã§ããªã¢ãŒããã¯ãã£ãåæ»ã«é²ããã¹ãã æ¬çªç°å¢äžã§ ç§»è¡ååŸã®åŠçãåæå®è¡ãããŒã¿ããŒã¹ã®çµæãæ¯èŒããããšã§åäœã®ä¿èšŒãè¡ãããŒã«ãéçºããŸããã ãã®èšäºã§ã¯ãåæ§ã«ãªã¢ãŒããã¯ãã£ãé²ããŠããæ¹ã
ã察象ã«ããã®ããŒã«ïŒBASEå
ã§ã¯éç§°DryRunãšåŒãã§ããŸãã®ã§ä»¥éDryRunãšèšèŒãããŠããã ããŸãïŒã«ã€ããŠãèšèŒããŠãããŸãã TL;DR ãªã¢ãŒããã¯ãã£ãæå©ãããããŒã« DryRunãéçºããŸãã å®éçšã§ã¯éšåçã«æ¬çªç°å¢ã䜿ã£ãDryRunãè¡ããŸãã DryRunãäœã£ãŠããã«ããã£ãŠãããã«å€éšåœ±é¿ãå°ãªããµã³ãããã¯ã¹ãäœãäžããããšãéèŠãªã®ããšããããšã«æ°ã¥ããŸãã ãªãã¡ã¯ã¿ãšãªã©ã€ã å°ãæ¬èšäºã®å
容ããåããŸãããèæ¯ã«ã€ãªãããŸãã®ã§ããªãã¡ã¯ã¿ãšãªã©ã€ãã«ã€ããŠè§ŠããŠãããŸãã ã ã¬ã¬ã·ãŒãœãããŠã§ã¢æ¹åã¬ã€ã ãã«ãããŠãã¬ã¬ã·ãŒãªãœãããŠã§ã¢ãæ¹åããŠããæ¹æ³ãšã㊠ãªãã¡ã¯ã¿ ãš ãªã©ã€ã ã«ã€ããŠè§ŠããããŠããŸãã www.shoeisha.co.jp ãªãã¡ã¯ã¿ãªã³ã°ã¯ å€éšããèŠãéã«å
éšã®æåãå€ããã«ãœãããŠã§ã¢ãæ¹åããŠããäœæ¥ ã§ããããªã©ã€ã㯠åäžæ©èœãäžããäœãçŽãäœæ¥ ã«åœãããã®ã§ãããã®ããã§ãªã©ã€ãã¯ãªã¹ã¯ãšã³ã¹ãã®ããããã®ã§ããã ã§ããã ããªãã¡ã¯ã¿ãªã³ã°ã®ã¿ã§æ¹åãã§ããªãã®ã ãæ€èšããããã§ãªã©ã€ããéžæãã¹ãã§ãããšããŠããŸãããã é説çã«èšããšããã® ãªã¹ã¯ã®ä¿èšŒãã³ã¹ãé¢ã®è§£æ±ºãã§ããã° ããªãã¡ã¯ã¿ãªã³ã°ã§ã¯åŸãããªãã£ãã¡ãªããã享åããããã§æ¹åãã§ããã®ã§ã¯ãªãããšãèšããã§ã¯ãªãããšæã£ãŠããŸãã ãªã¢ãŒããã¯ãã£ããæäŒãããããŒã« DryRun ããŠBASEã«ãããŠã¯ãã¬ã¬ã·ãŒãœãããŠã§ã¢ã®æ¹åãšããŠãªã¢ãŒããã¯ãã£ãè¡ãããŠããŸããçŽè¿ã§ã¯BASEã«ãããã³ã¢æ©èœã§ããååã®çºéæ©èœã® ãªã©ã€ã ã«ãããªã¢ãŒããã¯ãã£ãè¡ãããŸããã ãªããªãã¡ã¯ã¿ã§ã¯ãªããªã©ã€ãã«ããç§»è¡ãªã®ããšãããšãæ§ãªããžããªã§ã¯ MVC ãã¬ãŒã ã¯ãŒã¯ã§ã®å¯çµåãåæãšããã¢ããªã¹ã§ãããæ°ãªããžããªã§ã¯DDDãšã¯ãªãŒã³ã¢ãŒããã¯ãã£ãããŒã¹ãšããççµåãªã¢ãžã¥ã©ãŒã¢ããªã¹ã§ãããããã¢ãŒããã¯ãã£ã®ãã©ãã€ã ã·ãããèµ·ããŠããããŒã ãšããŠãªã©ã€ãã«ããç§»è¡ãéžæããããã§ãã ãªã©ã€ãã«ãã倧ããªãªã¹ã¯ã®1ã€ãšããŠã ç§»è¡ååŸã§ã®ãªã°ã¬ãã·ã§ã³ãªã¹ã¯ ãšãããã®ããããŸããããã¯ãã¡ãããã¹ããéããŠä¿èšŒããããšã«ãªããŸããã ç§»è¡åã®æåãšå矩ã§ãã ãšããã®ãä¿èšŒããã®ã«ãã¹ãã®ã¿ã§ã¯éçããããšæã£ãŠããŸããããã§ãç§»è¡åãšç§»è¡åŸã®æŽæ°åŠçã«çç®ããŠã ããŒã¿ããŒã¹ã«å¯Ÿããæ°žç¶åãåããã®ã§ãããã©ãã ãšãããã®ã確èªããããšã§ãã®ä¿èšŒãè¡ããã®ã§ã¯ãªãããšèããŸããããããå®çŸããããŒã«ãäœæããŠããŸãã DryRunã®æŠèŠå³ æ°žç¶åãè¡ã£ãŠããç®æããã皮㮠ãµã³ãããã¯ã¹ ãšããŠæäŸããŠãç§»è¡åã®æ§æ©èœãšåæå®è¡ã ååŠçã§æŽæ°ãããããŒãã«ãæ¯èŒããããš ã§ãããŒã¿ããŒã¹ã«å¯Ÿããæ°žç¶åãåããã®ã§ãããã©ãããæ¯èŒãããã®ãšãªã£ãŠããŸããç§»è¡åŸã®ãªã©ã€ããããã³ãŒãèŠç¹ã§ã¯ãµã³ãããã¯ã¹ã§ãããã®åºå¥ã¯ã§ããã ããããæ¬æ¥è¡ãã¹ãæ°žç¶ååŠçãè¡ã£ãŠãããã®ããã«æ¯ãèã£ãŠãã ãããDryRunãšããåœåãããŸããã ããªãåçŽåããããã®ã«ã¯ãªããŸãããæ¬äŒŒçãªPHPã®ã³ãŒãã§DryRunã®æåã瀺ããŸããš ç§»è¡å
ã®æ¬äŒŒã³ãŒã // ç§»è¡å
ã®æ©èœãžã®ãªã¯ãšã¹ã function requestNewFeature(): NewResult { } // æŽæ°ãããåããŒã¿ããŒã¹ã®æ¯èŒ function compareDatabase(NewResult $newResult, OriginResult $originResult): CompareResult { } // æ¬æ¥å®è¡ãããç§»è¡å
ã®åŠç function executeOrigin(): void { if ($isDryRun === true) { $newResult = requestNewFeature(); } // ç§»è¡å
ã®åŠçã®å®è¡ // DryRunã§ãã£ãŠããªããŠãå¿
ãå®è¡ãããŸã if ($isDryRun === true) { compareDatabase($newResult, $originResult) } } ç§»è¡å
ã®æ¬äŒŒã³ãŒã // ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããæ ¹æ¬ã®interface interface DatabaseAccess { } // DryRunäžã®ããŒã¿ããŒã¹ã¢ã¯ã»ã¹ class DryRunDatabaseAccess implements DatabaseAccess { } // éåžžã®ããŒã¿ããŒã¹ã¢ã¯ã»ã¹ class OriginDatabaseAccess implements DatabaseAccess { } function getDatabaseAccess(): DatabaseAccess { return $isDryRun == true ? new DryRunDatabaseAccess() : new OriginDatabaseAccess(); } // DryRunåãã®åŠççµæãäœæãã function createDryRunResult(): DryRunResult { } // æ¬æ¥å®è¡ãããç§»è¡å
ã®åŠç function executeNewFeature(): void { $databaseAccess = getDatabaseAccess(); // ç§»è¡å
ã®åŠç // DryRunäžã ãšããŠããããããªããšããŠãæåã¯å€ãããŸããã return $isDryRun == true ? createDryRunResult() : $result } ãšãªããŸããå®éã«ã¯ç§»è¡å
ç°å¢ã§ã¯DoctrineãšããORMãå©çšããŠãããDoctrineã®DBã³ãã¯ã¿ããªãŒãã©ã€ãããŠããã®ãšãRay.DiãšããDIãã¬ãŒã ã¯ãŒã¯ãå©çšããŠãæ¬äŒŒã³ãŒãã®ãããªåœ¢ã§ããŒã¿ããŒã¹ã®åãå
ã倿ŽããŠãããŸãã ä»çµã¿äžããçšåºŠéšååãããã³ãŒããæºåãããŠãããã®ã®ãç§»è¡å¯Ÿè±¡ã®æ©èœããšã«ãµã³ãããã¯ã¹ãäžã€äžã€äœãäžããå¿
èŠããããããé »ç¹ã«äœ¿ããããŒã«ã§ã¯ãããŸãããããããªãããæºåã§ãããããã°åçš®ç°å¢ã§åäœãããããšãå¯èœã§ãããç§»è¡å
ã®ã³ãŒããå¿
ãå®è¡ãããããã«ãªãããã æ¬çªç°å¢ã§ãã ãåäœãããããšãã§ããŸãã çºéåŠçã«ãããDryRunã®å®éçš çºéåŠçã®ãªã¢ãŒããã¯ãã£ã¯å®åéšéãå¥éãããŸããŠãDryRunã¯PlatformããŒã ã«ãŠéçºãããããŸãããDryRunã®éçºãçµãã£ãã¿ã€ãã³ã°ã§ããªã¢ãŒããã¯ãã£ãããçºéåŠçã«å¯ŸããŠçްããåäœïŒå
·äœçã«ã¯ãæ¯æãæ¹æ³å¥ïŒã«åå²ããŠé 次DryRunãé©å¿ããŠãããæ¬çªç°å¢ãžã®DryRunãå®è¡ããŠãããŸããã æ¬çªç°å¢ã§åäœããããšããããšã§å®å
šã«åãããã«æ§ã
ãªã¬ãŒãåŠçãå ããŠããã®ã§ãããæå€ã«ãã¹ã ãŒãºã«åããŠããŸããå®å¿ãããšãšãã«ããããã®ãäœãåºããŠããŸã£ããªããšéçºåœæã«æã£ãŠããèšæ¶ããããŸãã ãŸãç¹ã«èŠåŽããç¹ãªãã§ãããBASEã®ãããã¯ãã®å¶éã§å人æ
å ±ãä¿åã§ããç°å¢ã«å¶éããããæ¯èŒçµæã®ãã°ã®åºãæ¹ããµã³ãããã¯ã¹ã«ä¿åããéã®ãã¹ã¯åŠçãªã©ã现ããåäœã§ã®å¯Ÿå¿ãå¿
èŠãªãšããã«èŠåŽããããŸãããæ¯ãè¿ããš1ã€ã®å
±éåããããŒããäœã蟌ãã§ãããšãããããã¯ãæ³¥èã现ãããµã³ãããã¯ã¹ãäœã蟌ãã§ãããšããäœæ¥ãã¡ã€ã³ã ã£ããªãšæããŸãã ããããŠé 次DryRunã皌åããŠããäžã§ãå®éã«éçºããŠããã ããŠãããšã³ãžãã¢ãšååããŠãèŠã€ãã£ãŠãã£ããã°ãªã©ã®ä¿®æ£ãå ããŠããããŸããã DryRunãå©çšããç®çãšããŠã ããŒã¿ããŒã¹ã«å¯Ÿããæ°žç¶åãåããã®ã§ãããã©ãã ãšãããã®ããããŸããããå®éçšããŠããããã§å¯æ¬¡çã«ãã®ãããªã¡ãªãããèŠã€ãã£ãŠããŸãã å®éã«æ¬çªã§éçšãããŠããããŒã¿ãšããèšå€§ãªãã¿ãŒã³ã®ããããŒã¿ã䜿ã£ãŠãªãªãŒã¹åã«ã³ãŒããèµ°ãããããšãã§ãã ãªã©ã€ãäžã«æ§æ©èœãžã®æ°èŠéçºãè¡ãããŠããŠãã®è¿œåŸããã¡ããšè¡ãããŠããã®ãã確èªã§ãã ããã«ãã£ãŠã现ãããã°ãªã©ããªãªãŒã¹ãŸã§ã«è§£æ¶ã§ãããŸãæ¬æ¥ã®ç®çã§ãããªã°ã¬ãã·ã§ã³ãžã®å¯Ÿå¿ãè¡ããŸãããBASEå
éšã®è©±ã«ãªã£ãŠããŸããŸããå®éã«éçºãè¡ã£ããšã³ãžãã¢ã®æ¹ã
ãç²ãæ§ã§ããã åçç¹ã課é¡ç¹ å®éã«éçšããŠã¿ãããã§ã¡ãªããã ãã¯ãªãããã¡ãªãããããã€ãåºãŠããŠããŸã£ãã®ã§ããããæ¯ãè¿ã£ãŠãããŸãã å°ã现ããç¹ãšãªã£ãŠããŸããŸããããããã£ã課é¡ããããŸããã ç§»è¡ååŸã§åæã«å®è¡ããããšã«ããããã©ãŒãã³ã¹ãžã®åœ±é¿ããã£ã ããŒã¿ããŒã¹ãžã®æžèŸŒã¯å®éã®RDBMSã«æžã蟌ãã§ããããšã«ãããä»ã®DryRunåŠçãžã®åœ±é¿ãå®å
šã«ã¯åé¢ã§ããŠããªãã£ã ããã« ä»ãžã®åœ±é¿ãå°ãªããµã³ãããã¯ã¹ãäœã蟌ãã§ããã¹ãã ãšããç¹ãéèŠã ã£ããã ãªãšäœã£ãŠã¿ãŠæ¹ããŠæããŸããã ç¹ã«ä»åãä»çµã¿ã¥ããã«äœ¿ãã人å¡ã³ã¹ããå å³ããŠãPHPã³ãŒãäžïŒã€ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã¬ã€ã€ãŒïŒã§ãµã³ãããã¯ã¹ãäœã蟌ãã§ããã®ã§ãããããããããŒã¿ããŒã¹ããåããããšãã¢ãã¯èªäœãHTTPãµãŒãåããŠPHPã³ãŒãå€ã§è¡ããªã©ãåãµã³ãããã¯ã¹ãåŸæãªéšåã§åå²ããŠäœã蟌ãã§ãããšããã®ãè¯ãã£ãã®ãããããªããšæã£ãŠããŸãããŸããä»ã®DryRunåŠçãžã®åœ±é¿ãšããæå³ã§ã¯ããŒãžã§ãã³ã°ããªããã圢ã§ããŒã¿ããŒã¹ãžã®æžèŸŒã¿ãè¡ãããšã§åé¿ã§ãããªãšããåçç¹ããããŸãã ãã®ãããã¯ãªã¢ãŒããã¯ãã£ãç¶ããŠããäžã§ããŸãDryRunæ©èœãäœ¿ãæ©äŒã¯ãããšæã£ãŠããã®ã§ãæ¹åããŠãããã°ãªãšæã£ãŠããŸãã ãããã« æ¬èšäºã§ã¯ããªã¢ãŒããã¯ãã£ããæäŒãããDryRunãšããããŒã«ã«ã€ããŠç޹ä»ãããŠããããŸããã ããäœã£ãŠåãããŠã¿ããšãã«æ³åããŠããããããã¡ããšåäœããŠããŸããæ¬çªç°å¢ã§ãããã°ããããšãããšãã§ããªããã®ãçã¿åºããŠããŸã£ããªãšããæèŠããããŸãããå人çã«ã¯äœã£ãŠãã£ãäžã§ãããããšåŠã³ããããŸããã BASEãšããç°å¢ã«ãããŠäœããããã®ã«ãªãã®ã§ãã©ããŸã§å€éšã®æ¹ã
ã«åèã«ãªãã®ãã¯ããããŸãããããããã£ããªã¢ãŒããã¯ãã£ã®æ¹æ³ããããã ãªãšããäžäŸãšããŠæ²ç€ºãããŠããã ããŸãã ã©ããã§ãããªæ¹æ³ã§ç§»è¡äœæ¥ãè¡ã£ãŠããã®ã ãªãšåèã«ãªããšããæ¥ãã°å¹žãã§ãã binc.jp
ã¯ããã« BASE Feature Dev1 Group ã® cureseven ã§ãã Google ãšç±³Yahoo ãå®ãã ãã¡ãŒã«éä¿¡è
ã®ã¬ã€ãã©ã€ã³ã ãã2024/06/01ã«å¯Ÿå¿ã®æçµç· ãåããè¿ããŸããã BASE ããéä¿¡ããŠããããã¢ãŒã·ã§ã³ã¡ãŒã«ã察å¿ãå®äºããŸããã®ã§ã察å¿ããéçšã§èµ·ãã£ããããã¯ã玹ä»ããŸãã ãã¡ãŒã«éä¿¡è
ã®ã¬ã€ãã©ã€ã³ããšã¯ãªã«ãç°¡åã«èª¬æ 1åã§ãæããã 5,000件以äžå人ã¡ãŒã«ã«ã¡ãŒã«ãéä¿¡ããããšããããã¡ã€ã³ãæã€ãäžæ¬éä¿¡è
ãã¯ã以äžã®èŠå®ã«åã£ãŠã¡ãŒã«ãéä¿¡ããå¿
èŠããããŸãã DMARC ã®å¯Ÿå¿ ããã¢ãŒã·ã§ã³ã¡ãŒã«ã«ã¯ã賌èªè§£é€ããããŒãæ¿å
¥ãããŠããããš è¿·æã¡ãŒã«çã 0.3%ãè¶
ããªãããš AWS ãåºããŠãã ãã¡ã ã®èšäºãã¹ãããªããŠããŠèªã¿ãããã§ãã ã¢ããªã±ãŒã·ã§ã³éçºããŒã ã®ç§ã¯ã賌èªè§£é€ããããŒã®æ¿å
¥ãäž»ã«æ
åœããŸããã è¿·æã¡ãŒã«çã¯å¹žéãªããšã« 0.3%æªæºã ã£ãã®ã§ãæžããããã®æœçãè¡ãããšã¯ãããŸããã§ããã ãµãŒãã¹é¢é£ã®ã¡ãŒã«ãå
šãŠæŽãåºã BASE ã§ã¯ã·ã¹ãã ããã¡ãŒã«ãéä¿¡ãã以å€ã«ããä»ç€ŸãµãŒãã¹ã䜿ã£ãŠããŸãã ãã€ãæ±ã£ãŠãããµãŒãã¹ã®ã³ãŒããèŠãã ãã§ã¯èŠèœãšããŠããŸããããªã¡ãŒã«ããã£ããããèªåã§ç»é²ããŠãã BASE ã¢ã«ãŠã³ãã«å¯ŸããŠæ¥ãã¡ãŒã«ãèŠãããããŸããŸãªããŒã ã«åãåããããããŠãå
šäœåãææ¡ããŠãããŸããã BASE ã«ã¯ã以äžã®çš®é¡ã®ããã¢ãŒã·ã§ã³ã¡ãŒã«ããããŸããã ãããã§éä¿¡ããŠãããªãŒããŒåãããã¢ãŒã·ã§ã³ã¡ãŒã« 賌å
¥è
ãã·ã§ããããåãåãã¡ã«ãã¬ãåå
¥è·èªåéç¥ãæé販売éç¥ã¡ãŒã« å¶æ¥ããŒã ã䜿ã£ãŠããã¡ãŒã«ãµãŒãã¹ïŒSendGrid, kintoneïŒããéä¿¡ããã¡ãŒã« æ©æ¢°åŠç¿ããŒã ãã·ã§ããéèšããæé©ãªã¿ã€ãã³ã°ã§éä¿¡ãããªãŒããŒåãæ©èœç޹ä»ã¡ãŒã«ïŒAmazon PinpointïŒ ãããã¢ãŒã·ã§ã³ã¡ãŒã«ããªã®ãããã©ã³ã¶ã¯ã·ã§ã³ã¡ãŒã«ããªã®ã ããã¢ãŒã·ã§ã³ ã¡ãŒã«ãšãã©ã³ã¶ã¯ã·ã§ã³ ã¡ãŒã«ã®åºå¥ã¯ãæ¥çãé©çšãããèŠå¶ã«ãã£ãŠç°ãªããŸããã¡ãŒã«ã®æ§è³ªã¯ãGoogle ã§ã¯ãªãåä¿¡è
ã倿ããŸããè¿·æã¡ãŒã«çãé«ããªãããšãé²ãããã«ãããŒã±ãã£ã³ã°ãããã¢ãŒã·ã§ã³é¢é£ã®ã¡ãŒã«é
ä¿¡ã®ç»é²ããŠãŒã¶ãŒãç°¡åã«è§£é€ã§ããããã«ããããšãæ€èšããŸãããããŸããã¡ãŒã«ãèšèšããéã¯ããŠãŒã¶ãŒã念é ã«çœ®ãããã«ããŠãã ããã ã¡ãŒã«éä¿¡è
ã®ã¬ã€ãã©ã€ã³ã«é¢ãããããã質å ããåŒçš ãšããããã«ããããã¢ãŒã·ã§ã³ã¡ãŒã«ãããæ¥çã«ãã£ãŠç°ãªãå®çŸ©ã§ããããšã倿ããã®ã¯ã¡ãŒã«ã®åãåãæã ãšããèšèŒããããŸãã ããŒã ã¡ã³ããŒã«æèŠãèããªãããéä¿¡ããŠããã¡ãŒã«ããããã¢ãŒã·ã§ã³ã¡ãŒã«ããªã®ãããã©ã³ã¶ã¯ã·ã§ã³ã¡ãŒã«ããªã®ãã倿ãåé¡ããŠãããŸããã AWSãšã³ãã¥ãã±ãŒã·ã§ã³ãåããªããã®å®è£
äºçŽããæå»ã«ã¡ãŒã«ãäžæ¬éä¿¡ããæ©èœã«ã¯ãAmazon SES ãæ¡çšããŠããŸããAmazon SESã® sendBulkEmailã¡ãœãã ã䜿ãã°è€æ°ã®ã¡ãŒã«ãäžæ¬ã§éä¿¡ã§ããŸãã AWS SDK for PHP 3.x ã®ããã¥ã¡ã³ãã«åŸã£ãŠå®è£
ããŸããããsendBulkEMailã®ä»æ§éãã«å®è£
ããŠãããããŒãé©å¿ããããå°ã£ããããAWS ã«åãåãããªããé²ããŸããã åãåããããšãã sendBulkEmail ããéä¿¡å
ããšã®ããããŒæ¿å
¥ã«å¯Ÿå¿ããã®ã¯ 3.305.9 以éãšã®ããšã§ãããŒãžã§ã³ã¢ãããããããšã§è§£æ±ºããŸãããAWS SDK for PHP 3ç³»ããã¥ã¡ã³ãã«æžããŠãã£ãããã3ç³»ã ã倧äžå€«ã ãããšæã£ãŠããŸããã 3.305.9 ããªãªãŒã¹ãããã®ã¯ãã¡ãŒã«ã®èŠå®ãéå§ãã2é±éåã§ããã List-Unsubscribeã§æå®ããURLã®èŠä»¶ãå³ãã ã¯ã³ã¯ãªãã¯è³Œèªè§£é€API㯠RFC8058 ã«ãããã£ãŠå®è£
ããå¿
èŠãããã以äžããã£ãããšã§ãå·¥æ°ãèšãã¿ãŸããã ãªã¯ãšã¹ããã©ã¡ãŒã¿ã䜿ã£ãŠããŒã¿ãéä¿¡ããªããã°ãªããªã å人ãç¹å®ã§ãããããªããŒã¿ãéä¿¡ããŠã¯ãªãããæå·åãããŠããªããã°ãªããªã æ¢åã®APIãå©çšããã°è³Œèªè§£é€ãã§ããªãããšæã£ãŠããŸããããã¡ãŒã«ã¯ã©ã€ã¢ã³ãããã¯ã³ã¯ãªãã¯ã§è³Œèªè§£é€ãè¡ãããã«äœ¿ã API ã¯ãªã¯ãšã¹ãããã£ã䜿ããªãã£ããããæ¢åã®API ãä¿®æ£ããå¿
èŠããããŸããã ãŸãããªã¯ãšã¹ããã©ã¡ãŒã¿ã«å«ããããã·ã¥å€ã®æå·åãšã埩å·åã®åŠçãæ°èŠã§äœæããããšã«ãªããŸããã AWS ã®ã¢ã«ãŠã³ãããŸããã§ãåãæ¹æ³ã§æå·åããããã·ã¥å€ã䜿ã£ãŠè³Œèªè§£é€APIã«ãªã¯ãšã¹ãããçºã AWS KMSã䜿ã£ãæ¹æ³ ãæ¡çšããŸããã AWS KMS ãå©çšããŠæå·åã埩å·åãã§ããããã«ã€ã³ãã©ããŒã ãšçžè«ããªããé²ããŸããã éçºç°å¢ã§è³Œèªè§£é€ãªã³ã¯ã衚瀺ãããªãããšããã éçºç°å¢ã§å©çšããŠãããã¡ã€ã³ããã®ã¡ãŒã«ã«ã¯ã賌èªè§£é€ããããŒãé©åã«è²ŒãããŠããŠã賌èªè§£é€ãªã³ã¯ãåºçŸããªãäºè±¡ããããŸããã ãã®ã«ãŒã«ãæç¢ºã«æç€ºãããŠãããã調æ»ã«å·¥æ°ãåãããŠããŸããŸããããã®ãã API ãçŽæ¥å©ãã賌èªè§£é€ã§ããã㚠賌èªè§£é€ããããŒãé©åã«è²ŒãããŠããããš ã確èªããäžã§ãªãªãŒã¹ããŸãããéçºç°å¢ã§è³Œèªè§£é€ãªã³ã¯ã衚瀺ãããŠããªããšããæ¬çªã§ã¯å
šãŠã®è³Œèªè§£é€ããããŒãæ¿å
¥ãããŠããã¡ãŒã«ã«è³Œèªè§£é€ãªã³ã¯ã衚瀺ãããŠããŸããã ä»åŸã察å¿ãããããã«ç€Ÿå
ãžåšç¥ ãšã³ãžãã¢å
šäœã«ãå¯Ÿå¿æ¹æ³ãåšç¥ããŸãããç°¡åã«å®è£
ããŠããããããã«ã以äžã工倫ããŸããã æå·åã埩å·åã®ãµãŒãã¹ãäœãããããå©çšããã ãã§ API ã®ãã©ã¡ãŒã¿ã«å©çšãã hash ãäœæã§ããããã«ããŸãã åã¡ãŒã«éä¿¡æ¹æ³ã«å¯Ÿå¿ããããã«ã賌èªè§£é€ããããŒã®æ¿å
¥æ¹æ³ãèšèŒããŸãã BASE以å€ã«ããBASE BANK, PayID ããŒã ãªã©ããããŸããåºãåšç¥ããŸãã äžèšã®è©°ãŸã£ãããšãããã¥ã¡ã³ãã«ããéçºè
ã®å¯Ÿå¿ãè©°ãŸããªãããã«ããŸãã ãããã« ããã¢ãŒã·ã§ã³ã¡ãŒã«ã®ã¯ã³ã¯ãªãã¯è³Œèªè§£é€ã¯ãã¡ãŒã«ã®åãåãæãããããšã䟿å©ã§ããæ©èœã§ããã ç§ã®ã¡ãŒã«ããã¯ã¹ããããã¢ãŒã·ã§ã³ã¡ãŒã«ã§ãã£ã±ãã«ãªã£ãŠããã®ã§ãããããè§£é€ããŠã¹ãããªãããããšãã§ãããã§ãã èŠå®ã®é©å¿ã¯éå§ãããŠããŸãããæããã 5,000 件以äžå人ã¡ãŒã«ã«éä¿¡ããŠããªããã¡ã€ã³ã¯è¿·æã¡ãŒã«ã«å
¥ããªã©ã®åŠçœ®ãåãããªããããæªå¯Ÿå¿ã®ã·ã¹ãã ããæã¡ã®æ¹ãããã£ããããšæããŸãã ä»åŸå¯Ÿå¿ããããšã«ãªã£ãéåèã«ããŠããã ãããšå¬ããã§ãã binc.jp
ã¯ããã« ããã«ã¡ã¯ãããã¯ãšã³ããšã³ãžãã¢ã®Sakiã§ãïŒããã¯ãšã³ãã§PHPãæžããããPHPãšããèšèªãã®ãã®ã®ã¡ã³ãããŒãããŠããŸãã ãã®åºŠã泚æããŒã¿ããŠã³ããŒãAppã®ããã©ãŒãã³ã¹ãã¢ãããããããããšãŠãå
¥å¿µã«ããŒã¿ããŒã¹ãŸããã®åŠçãèŠçŽããŸããããã®äžã§ãç¹ã«é床ã«é¢ãã£ãŠãããindexãã«ã€ããŠã®èãæ¹ããŸãšããããšæããŸãã ãã®èšäºã¯MySQLïŒInnoDBïŒã«ã€ããŠã®èšäºã§ãããä»ã®RDBã«ã€ããŠã¯åœãŠã¯ãŸããªãå Žåããããšããããšã«ã泚æãã ããã indexãšã¯äœãããããã ãåç¥ã®æ¹ããã¡ããå€ããšæããŸãããindexã«ã€ããŠãããããããŠãã ããã indexãšã¯èŸæžã§ãããšããã®ç®æ¬¡ã«çžåœãããã®ã§ãç®çã®ããŒã¿ããã¡æ©ãæ€çŽ¢ããããã«éèŠãªãã®ã§ããããèŸæžã«ç®æ¬¡ãååšããªãã£ãå Žåãç®çã®æ
å ±ãæ¢ãã®ã«ãšãŠãèŠåŽããã ãããšããã®ã¯æ³åãããããšæããŸãã ç¹å¥ãªindexããã©ã€ããªããŒindex DBããŒãã«ã«ã¯ã倧æµãã©ã€ããªããŒindexãšãããã®ãååšããŸããããã¯MySQLã§ã¯åããŒãã«ã«1ã€ãã€ããæã€ããšãã§ããªãç¹å¥ãªindexã§ãã ãã©ã€ããªããŒã®ã«ã©ã ã§æ§æãããããã¯ããŒãã«ã§å¿
ããŠããŒã¯ïŒäžæïŒã«ãªããŸãã å¿
èŠã«å¿ããŠè¿œå ããã»ã«ã³ããªindex æ€çŽ¢å¹çãäžãããã«ã©ã ã«å¯Ÿããå¶çŽã远å ãããªã©ãããŸããŸãªç®çã§å¿
èŠã«å¿ããŠè¿œå ããã®ãã»ã«ã³ããªindexã§ããèšãæãããšããã©ã€ããªããŒindexã§ã¯ãªãindexã¯ãå
šãŠã»ã«ã³ããªindexã§ããããã¯1ã«ã©ã ã®ã¿ã§æ§æãããããšãããã°ãè€æ°ã®ã«ã©ã ã®è€åã§æ§æãããããšããããããŸãããŸãããŠããŒã¯ãªindexã«ããããšããéè€ãèš±ãããšãã§ããŸãã è€åindexã䜿ããã·ãŒã³ã䜿ããªãã·ãŒã³ 次ã®ãããªindexããããšããŸãã åäžã«ã©ã ã®indexã§ããã°ãã©ã€ããªããŒindexãšäœ¿çšæã¯å€ãããªãã®ã§ãè€åindexã«ã€ããŠå°ã詳ããããããããŸãã // test table UNIQUE KEY `test_prefecture_city` (`prefecture`, `city`) // éœéåºçãšåžã®çµã¿åãã ãã®æãæ¬¡ã®2ã€ã®ã¯ãšãªãèããŠã¿ãŸãã SELECT * FROM test WHERE prefecture = ' Tokyo ' // äŸ 1 SELECT * FROM test WHERE city = ' Chiyoda ' // äŸ 2 ãåç¥ã®æ¹ã¯ãã¡ããå€ããšæããŸããããã®å ŽåãäŸ1ã§ã¯indexãå¹ããŸãããäŸ2ã§ã¯indexãå¹ããŸããïŒäœ¿ããŸããïŒã ãªããããªãã®ãã¯ãæ¬ã®ç®æ¬¡ãäŸã«ãããšããããããã§ãã倧ã«ããŽãªãšããŠéœéåºçã®äžŠã³ããããããããã®éœéåºçã®é
ç®ã®äžã§åžã䞊ãã§ãããšããŸãããã æ±äº¬ - è¶³ç«åº - èå·åº ...ïŒç¥ïŒ åè - åèåž ...ïŒç¥ïŒ ããŠããã®ãããªæ§æã®ç®æ¬¡ãããéœéåºçãç¡èŠããŠïŒçŽç²ã«åžã ãã§äžŠã¹ãå Žåã®ïŒäŸãã°ãããããããé ã§åžãæ¢ãããšã¯çã«ããªã£ãŠããã§ããããïŒç¡çãããããšããããããšæããŸãã ãããã£ãŠãè€åindexã䜿çšããå Žåãå¿
ãå·ŠåŽã®ã«ã©ã ããé ã«çµã蟌ãã§ãããã¯ãšãªã§ããå¿
èŠããããŸãã å¿
ãããã¡ãªããã°ããã§ã¯ãªã ã»ã«ã³ããªindexã¯ããã°ããã»ã©æ€çŽ¢å¹çã®åäžã«ç¹ãããŸãããåé¢ãããŒã¿ã®insertãupdateæã«å
šãŠã®indexãæŽæ°ããå¿
èŠããããããindexãå€ããã°å€ãã»ã©æžã蟌ã¿åŠçã®è² è·ãäžãããšãããã¬ãŒããªãã®é¢ä¿ã§ããããŸãã ã¯ãšãªã®åŠ¥åœæ§ã¯explainã§è©äŸ¡ãã å®éã«æ¥åã§äœ¿çšããã¯ãšãªã¯ãäŸã§ããèŠãã¯ãšãªã»ã©åçŽã§ã¯ãªãããšãå€ãã§ããå®éã«ã¯ãšãªãããã¡ããšindexã䜿ããããã©ããã¯ã explain ãšããæ©èœã䜿ã£ãŠè©äŸ¡ããŸãã explain ã®å®è¡æ¹æ³ãšçµæã®èŠæ¹ã¯èšäºãããããããã®ã§ãããã§ã¯å²æããŸãã æ¬é¡: explainã ãããããããªãããšããã ããããããã®èšäºã®æ¬é¡ã§ãã å®ã¯ã explain ã®çµæããšãŠãè¯ãã®ã«ããªããé
ããã¯ãšãªãšãããã®ãååšããŸããããã¯ãäž»ã«æ¬¡ã®ãããªç¶æ³ãé¢ä¿ããŸãïŒ Profile ãèŠãŠãããããŒã¿è»¢éãé
ãããšãããã£ããããããšããããããªãã£ããããïŒã ããŒãã«ã巚倧ïŒã¬ã³ãŒãæ°ãå€ãïŒ INå¥ã§å€§éã®æ¡ä»¶ãæå®ããŠããïŒåãããããŒã¿ã®å¯Ÿè±¡ãå€ãïŒ SELECTã§åãããã«ã©ã ã®ããŒã¿ååŸã³ã¹ããããã£ãŠãã ã©ãããããšãªã®ãããªãé
ããªãã®ãã詳ããèŠãŠã¿ãŸãããã INå¥ã¯é
ããªãããã äžçå·ã®ç¯å²æå®ãšéããINå¥ïŒç䟡ç¯å²ïŒæ€çŽ¢ã¯ãINå¥ã«æž¡ãå€ãå¢ããã°å¢ããã»ã©é
ããªããããåŸåããããŸãã äŸãšããŠã次ã®ãããªã¯ãšãªãèããŠã¿ãŸãããã // shipping_number = é
éçªå· // shipping_numberã®ãŠããŒã¯indexããããšãã SELECT * FROM test WHERE shipping_number IN ( ' 0000-0000-0000 ' , ' 0000-0000-0002 ' , ...ïŒç¥ïŒ ); ç䟡ç¯å²æ€çŽ¢ã®æ§è³ªäžãåã«ããããããããŸã§ããšããäžçå·çãªæ€çŽ¢æ¹æ³ã§ã¯ãªããINå¥ã®å€ã²ãšã€ã²ãšã€ã«ã€ããŠæ€çŽ¢ããå¿
èŠããããŸããäŸã®å Žåã 0000-0000-0000 ã 0000-0000-0002 ãšããäžçå·çãªç¯å²ã®æ€çŽ¢ã§ã¯éã® 0000-0000-0001 ãå«ãŸããŠããŸããŸãã ããŒãã«ã巚倧ã§ããã°ããã»ã©ãæ€çŽ¢ã³ã¹ãã倧ãããªããããããšãããããŸãã ãã ãããã®ãããªã¯ãšãªã§ãã£ããšããŠããindexãé©åã«äœ¿çšã§ããŠãããããexplainäžã§ã¯ããªãããçµæã«èŠããã¯ãã§ãããã®ã¯ãšãªã®åé¡ç¹ã¯ãindexã䜿çšããããšãã®ãã®ã«ã³ã¹ããããã£ãŠããããšããç¹ã§ãã ååŸãããã«ã©ã ã®ããŒã¿ååŸã³ã¹ããããã æ¬¡ã®ã¯ãšãªãã芧ãã ããã // prefecture = éœéåºç // city = åž // zip_code = éµäŸ¿çªå· // prefecture, cityã®è€åindexãæã€ãšãã SELECT prefecture, city, zip_code FROM test WHERE prefecture = ' Tokyo ' ; ãã®ã¯ãšãªããŸããindexãé©åã«äœ¿çšã§ãããããexplainã§ã¯è¯ãçµæãšãªããŸããããããããŒãã«èªäœã巚倧ã§ãã£ããååŸä»¶æ°ãå€ããšããªããé
ãããšããããšã«ãªããããã¯ãšãªã§ãã èããŒããšããæŠå¿µãèãã ããã§éèŠã«ãªãã®ã¯èããŒããšããæŠå¿µã§ããMySQLã®äœ¿çšããŠããindexã®æ§é ã¯æšã«äŸããããã®ã§ãããããããçããŠããããŒã¿ãªã®ã§ãèããšããããã§ããã èããŒãã«ã¯ãã«ã©ã ã®ããŒã¿ãå«ãŸããŠããŸããåé ã®ãããã§äœ¿çšãããéœéåºçãšåžã®ç®æ¬¡ã®äŸãèŠãŠã¿ãŸãããã æ±äº¬ - è¶³ç«åº - èå·åº ...ïŒç¥ïŒ åè - åèåž ...ïŒç¥ïŒ ãã®äŸã§ã¯ãç®æ¬¡ïŒindexïŒã§æå®ãããŠããæ¬ã®ããŒãžïŒããŒãã«ããŒã¿ïŒã«ã¢ã¯ã»ã¹ãããšããéœéåºçãšåžã®æ
å ±ã¯ç®æ¬¡ã®æç¹ã§æã«å
¥ãããšãããããŸããæ±äº¬ - è¶³ç«åºãšããããŒã¿ãååšããããšã¯ç®æ¬¡ãèŠãã ãã§ãããããšããããšã§ãã ãã®æ
å ±ããããªãã¡èããŒãã«å«ãŸããããŒã¿ã ãšèããŠãã ããã indexã¯ããã®indexã«äœ¿çšããã«ã©ã ã®ããŒã¿ãèããŒãã«æã£ãŠããŸãããã ããã©ã€ããªããŒindexã ãã¯äŸå€ã§ãå
šãŠã®ã«ã©ã ã®ããŒã¿ãæã£ãŠããŸãïŒãªã®ã§ç¹å¥ãªindexãªã®ã§ãïŒã ããã§è¿œå ã§ãéµäŸ¿çªå·ãã®ããŒã¿ãååŸãããšããŸãããã®å Žåç®æ¬¡ã«ã¯éµäŸ¿çªå·ã®æ
å ±ãæžãããŠããªããããå®éã«ç®æ¬¡ã®ç€ºãããŒãžãéããããããéµäŸ¿çªå·ãååŸããå¿
èŠããããŸãã ã»ã«ã³ããªindexã®äœ¿çšæã¯ãindexã«å«ãŸããªãã«ã©ã ã®ããŒã¿ãååŸããéã«ããŒãã«ããŒã¿ãžã®ã¢ã¯ã»ã¹ãçºçãããããã³ã¹ãã«ãªãããšèããããšãã§ããŸãïŒãã®ã³ã¹ãã¯1ä»¶ååŸçšåºŠã§ã¯èª€å·®ã§ãããæ°äžä»¶ååŸããšãããããªèŠæš¡ã«ãªã£ãŠãããšå€§ããªå·®ãšãªããŸãïŒã è§£æ±ºæ¹æ³ 倧éã®INå¥åé¡ãšååŸã«ã©ã åé¡ã2ã€ã®åé¡ãæç€ºããŸããããããã®è§£æ±ºçãèããŠã¿ãŸãããã INå¥åé¡: INå¥ã®çµã蟌ã¿ã®åã«ãçµããã ãçµã 次ã®ã¯ãšãªãã芧ãã ããã // shipping_number = é
éçªå· // prefecture = éœéåºç // prefecture, shipping_numberã®è€åãŠããŒã¯indexããããšãã SELECT * FROM test WHERE prefecture = ' Tokyo ' AND shipping_number IN ( ' 0000-0000-0000 ' , ' 0000-0000-0001 ' , ...ïŒç¥ïŒ ); åé¡ã®æç€ºã«äœ¿çšããã¯ãšãªãšã®å·®ã¯ãindexãšæ€çŽ¢æ¡ä»¶ã«éœéåºçãå ããŠããããšã§ããããããããšã§ãINå¥ã®çµã蟌ã¿ã®åã«éœéåºçã§çµã蟌ãã§ãããã®ã§ããããŒãã«ã®å
šãŠã®ã¬ã³ãŒããã«å¯ŸããŠINå¥ã®çµã蟌ã¿ãè¡ãã³ã¹ããããéœéåºçåã®ã¬ã³ãŒãã«å¯ŸããŠãã®èŠæš¡ãŸã§å°ãããªããŸãã å¯èœã§ããã°ããéœéåºç, é
éçªå·ããããéœéåºç, åž, é
éçªå·ãããšããindexã«ããŠãéœéåºçãŸã§çµã蟌ãã§ããé
éçªå·ãIN奿€çŽ¢ãã§ã¯ãªããåžãŸã§çµã蟌ãã§ããIN奿€çŽ¢ã«ãããšããã£ãšæ©ããªããŸãã ããªãããŒãªäŸ // prefecture, ordered, shipping_numberã®è€åãŠããŒã¯indexããããšãã // ãããããéœéåºçãæ³šææ¥æãé
éçªå· SELECT * FROM test WHERE prefecture = ' Tokyo ' AND ordered < {ã¯ãšãªå®è¡æãããååã«æªæ¥ã®æ¥æ} AND shipping_number IN ( ' 0000-0000-0000 ' , ' 0000-0000-0001 ' , ...ïŒç¥ïŒ ); æ®éã«èããŠãæªæ¥ã«æ³šæãããæ³šæããšãããã®ã¯ååšããã¯ãããããŸããïŒå°ãªããšããã®ããŒãã«ã®éçšã§ã¯ååšããªããšããŸãïŒã ãããªããŒã¿ããããããªãã®ã§ããããWHEREå¥ã«å«ããæå³ãªã©ãªãããã«æããŸãããäŸç€ºããindexã䜿çšããããã«ã¯ãå®ã¯ãã®æ¡ä»¶æå®ã¯æå¹ã§ãã ORDER BY å¥ã§æ¥æã«ã©ã ã䜿çšãããå Žåãªã©ãæ¥æç³»ã®å
¥ã£ãindexã䜿çšããããããããæ€çŽ¢æ¡ä»¶ãã®ãã®ã«æ¥æããŒã¿ã¯äžèŠâŠãšããã·ãŒã³ã¯ãããšæããŸãããã®ãããªå Žåã«æçšãªãå°ãããªãããŒãªæ¹æ³ã§ãã ååŸã«ã©ã åé¡: ååŸããã«ã©ã ãæ¬åœã«å¿
èŠããããèãã䜿çšããindexãããèãã ãŸããç¹ã«çç±ã®ãªã SELECT * ã¯é¿ããã¹ãã§ããããã¯ããã ããŒã¿ååŸã³ã¹ããå¢ããããšã«ç¹ãããŸãã åŠçã«å¿
èŠãªã«ã©ã ãäœã§ããã®ãããã£ããèããŠãæäœéã®ã«ã©ã ã ããååŸããããšãããã©ãŒãã³ã¹é¢ã§ã¯éèŠã§ãã ãããŠã䜿çšããindexãåå³ããããšããšãŠãéèŠã§ããã¯ãšãªã«äœ¿çšå¯èœãªindexãè€æ°ååšããã®ã¯ããããããšãªã®ã§ã䜿çšã§ããindexã®äžã§ãindexãžã®ã¢ã¯ã»ã¹ã®ã¿ã§å¿
èŠãªããŒã¿ãå
šãŠååŸã§ããªãããæ€èšããŸãã ãŸãããã®åŠçãã¢ããªã±ãŒã·ã§ã³ã®äžã§ãšãŠãéèŠã§ãindexã远å ããŠã§ãããã©ãŒãã³ã¹ãäžãããå Žåãindexãæ°ãã远å ããããšã¯ååã«äŸ¡å€ã®ããããšã§ãã äœè«ã§ãããç§ã®è©Šããäžã§ã¯ãindexã远å ããããšã§30ç§ãªãŒããŒã®ã¯ãšãªã1.6ç§ãŸã§ççž®ã§ããŸãããããã ãã®é床差ããã£ãŠããexplainã®çµæã«å·®ã¯ãããŸããã ãããŠã¯ãšãªãåå²ãããšããéžæè¢ æ¬¡ã®ã¯ãšãªãã芧äžããã // idã¯ãã©ã€ããªã㌠// shipping_number = é
éçªå· // prefecture = éœéåºç // zip_code = éµäŸ¿çªå· // name = 泚æãã人ã®åå // prefecture, shipping_number, zip_codeã®è€åãŠããŒã¯indexããããšãã // å¥ã§ãprefecture, shipping_number, nameã®è€åãŠããŒã¯indexããããšãã SELECT id, shipping_number, prefecture, zip_code, name FROM test USE INDEX (`test_prefecture_shipping_number_zip_code`) WHERE prefecture = ' Tokyo ' AND shipping_number IN ( ' 0000-0000-0000 ' , ' 0000-0000-0001 ' , ...ïŒç¥ïŒ ); USE INDEX ã䜿çšããŠã䜿çšããindexãåºå®ããŠããŸãã ãã®äŸã§ã¯ã name ã«ã©ã ã«ã€ããŠãããŒãã«ã¢ã¯ã»ã¹ããŠããŒã¿ãååŸããã³ã¹ããçºçããŸãïŒ id ã¯ã³ã¹ããããããŸãããInnoDBã§ã¯ãæé»çã«ã»ã«ã³ããªindexã®æåŸã«ãã©ã€ããªããŒãåæã«å
¥ããããèããŒãã« id ã¯åžžã«å«ãŸããŸãïŒã äžæ¹ã§ã䜿çšããindexã test_prefecture_shipping_number_name ã«ãããšãä»åºŠã¯éµäŸ¿çªå·ã®ååŸã³ã¹ããããããŸãã å®éã«ãã£ãŠã¿ãŠèšæž¬ããŠå€æããå¿
èŠããããŸãããããã¯ã次ã®ãããªæ¹æ³ã§è§£æ±ºã§ããå ŽåããããŸãã // ã¯ãšãª 1 SELECT id, shipping_number, prefecture, zip_code FROM test USE INDEX (`test_prefecture_shipping_number_zip_code`) WHERE prefecture = ' Tokyo ' AND shipping_number IN ( ' 0000-0000-0000 ' , ' 0000-0000-0001 ' , ...ïŒç¥ïŒ ); // ã¯ãšãª 2 SELECT id, name FROM test USE INDEX (`test_prefecture_shipping_number_name`) WHERE prefecture = ' Tokyo ' AND shipping_number IN ( ' 0000-0000-0000 ' , ' 0000-0000-0001 ' , ...ïŒç¥ïŒ ); ãã®ããã«ãindexã®ã¿ã§ããŒã¿ååŸãå®çµããããã«ã¯ãšãªãåå²ããåŸããã¢ããªã±ãŒã·ã§ã³åŽã§ id ã䜿çšããŠããŒã¿ãããŒãžããããšããæ¹æ³ã§ãã USE INDEX ã䜿çšããããšã§ãMySQLã®ãªããã£ãã€ã¶ã«ããèªåçãªindexéžæã«ä»»ããã䜿çšããindexãåžžã«åºå®ããããšãã§ããŸãã ç¹°ãè¿ãã«ãªããŸãããããã¯å®éã«éåºŠèšæž¬ãè¡ãªã£ãŠæ€èšããå¿
èŠããããŸããã«ã©ã ã®åããµã€ãºã«ãã£ãŠãçµæãç°ãªã£ãŠããããã§ãã äœè«ã«ãªããŸãããç§ãè²ã
ãšè©Šããäžã§ã¯10ç§ããã£ãŠãããã®ã1ç§æªæºãŸã§ççž®ãããšãããããªäŸããã£ãããã詊ããŠã¿ã䟡å€ã¯ååã«ãããŸãã ãããã« ãã¯ãšãªã§ã¡ãããšindexã䜿çšã§ãããããããã«äžæ©èžã¿åºããŠãããã©ãŒãã³ã¹ã®åºãã¯ãšãªãšindexã®çµã¿åãããæ€èšãããããšã§ãããé床ãåºãããšã§ããŸããã ã©ãããŠãè€éã«èŠããindexã§ãããèªã¿è§£ããŠãããšæå€ãšåçŽãªåŽé¢ããããåºæ¬ã«ç«ã¡è¿ã£ãŠãèŸæžã®ç®æ¬¡ãã®äŸã§èããŠã¿ããšçè§£ããããã£ãã§ãã ãããã®èšäºãèªãã§èå³ãæããããªãããã²ãã©ã€ããŠã¿ãŠãã ããïŒ
BASE BANKã§PdMãããŠãã岡ã§ãã å
æ¥ããããããã¯ãã®æ©èœéçºã«ããã£ãŠãã¶ã€ã³ã¹ããªã³ãã宿œããŸããã ãããšã ããã¶ã€ã³ã¹ããªã³ãã¯ããŒã ãã«ããšããŠãè¯ã广ãããã ãšããæå€ãªçºèŠããããŸããã ä»åã®èšäºã§ã¯ããã®ãã¶ã€ã³ã¹ããªã³ãã®æå€ãªå¹æã«ã€ããŠæžããŸãã ãã®èšäºã§è¿°ã¹ãããšã®ãŸãšã ãã¶ã€ã³ã¹ããªã³ãã¯ããŒã ãã«ããšããŠãè¯ã广ããã è¯ã广1ïŒé·æçãªããã·ã§ã³ã»ããžã§ã³ã«ç«ã¡è¿ã è¯ã广2ïŒäžç¢ºå®æ§ãã€ã¬ã®ã¥ã©ãŒã±ãŒã¹ãæŽãåºãã è¯ã广3ïŒæ©èœèŠä»¶ãã¢ã¯ãã£ãã©ãŒãã³ã°ã§ãã è¯ã广4ïŒã¡ã³ããŒã®ãããã¯ããžã®ãšã³ã²ãŒãžã¡ã³ããé«ãã ãã¶ã€ã³ã¹ããªã³ããšã¯ ãã¶ã€ã³ã¹ããªã³ããšã¯ãæ°ãããããã¯ããæ©èœã®ã¢ã€ãã¢ãè¿
éã«æ€èšŒããããã® 5æ¥éã®éäžã¯ãŒã¯ã·ã§ãã圢åŒã®ããã»ã¹ã§ãã å
·äœçã«ã¯æ¬¡ã®ãããªããã»ã¹ã§è¡ãããŸãã åããã»ã¹ã®è©³çްã¯ã次ã®èšäºãåèã«ããŠãã ãããBASE BANKããŒã ã§ã¯ä»¥åã«ããã¶ã€ã³ã¹ããªã³ããè¡ã£ãŠããããã®ãšãã®å
容ã詳ãããŸãšããèšäºã§ãã note.com 以åã®ãã¶ã€ã³ã¹ããªã³ãã§ã¯ãåå 人æ°ãéå€ã«ãªãããã ã£ããããPdMãšãã¶ã€ããŒã ãã§å®æœããŸããã ãããä»åã¯ãPdMã»ãã¶ã€ããŒã»ãšã³ãžãã¢ã»CSãšå€æ§ãªã¡ã³ããŒãå«ããŠå®æœããŸããã ãã®ããã«å€æ§ãªã¡ã³ããŒãå«ããŠå®æœããããšã§ãã¢ã€ãã¢ã®é«éæ€èšŒãšããå¹çšã ãã§ãªããããŒã ãã«ããšããŠãè¯ã广ãçãŸããŸããã ãããŒã ãã«ããšããŠã®è¯ã广ãã¯ãç¹ã« day1ïŒçè§£ ãš day2ïŒçºæ£ ã®ããã»ã¹ã§å®æããã®ã§ãããããé ã远ã£ãŠæžããŸãã day1ïŒçè§£ïŒç¥èãå
±æããŽãŒã«ãèšå®ããïŒ ãã£ãããš day1ã¯ããããžã§ã¯ãã«é¢ããç¥èãå
±æãããããžã§ã¯ãã®ãŽãŒã«ãèšå®ããããã»ã¹ã§ãã å
·äœçã«ã¯æ¬¡ã®4ã€ã®ã¯ãŒã¯ãè¡ããŸããã ãããžã§ã¯ãèæ¯ã®å
±æ æžå¿µç¹ã®æŽãåºã ãããžã§ã¯ãã®æåã®å®çŸ© ã³ã³ã»ããã·ãŒãã®äœæ æåŸã®ã³ã³ã»ããã·ãŒãã¯ã次ã®ãããªãã©ãŒãããã§äœæããŸãã {ã¿ãŒã²ãããŠãŒã¶ãŒ} ã¯ã {å
·äœçãªãã€ã³ã»ããŒãº} ãšããèŠæãæã£ãŠãããã {ç¹å®ã®ããŒãã«} ãšããçç±ã§æºããããŠããªãã ããã§ã{æ°ãããœãªã¥ãŒã·ã§ã³ã»ã¢ã€ãã¢} ã«ãã£ãŠã ãŠãŒã¶ãŒã«{çæ³ã®äœéš}ãšãã䟡å€ãå±ãããã è¯ã广1ïŒé·æçãªããã·ã§ã³ã»ããžã§ã³ã«ç«ã¡è¿ã day1ã®ããããžã§ã¯ãèæ¯ã®å
±æãããã³ã³ã»ããã·ãŒãã®äœæããšããããã»ã¹ãéããŠã é·æçãªããã·ã§ã³ã»ããžã§ã³ã«ç«ã¡è¿ã ããšãã§ããŸããã ç¹å®ã®æ©èœã®éçºãããžã§ã¯ãã§ã¯ãã©ãããŠãæ©èœåäœã®ããªãããããã«çŠç¹ããããŠããŸããŸãã ãããããã¶ã€ã³ã¹ããªã³ãã®day1 ã§ã¯ ãããããã©ã®ãŠãŒã¶ãŒã®äœã®ãã€ã³ã解決ããŠãã©ããã£ãããžã§ã³ãç®æããã ãšãã£ããåç¹ãæãåºãããŠãããåããçšæãããŠããŸãã å®éã«ããã®åãã«çããã«ããã£ãŠã äŒç€Ÿã®ããã·ã§ã³ â ããŒã ã®ããã·ã§ã³ â ãããã¯ãã®ããã·ã§ã³âãããžã§ã¯ãã®ç®ç ãšãã£ãé çªã§ã æ¬æ¥ã®ç®çãããããžã§ã¯ãã®ç®çãŸã§ãã¬ã€ã¯ããŠã³ããªãã詳现ã«äŒããããã«å·¥å€«ããŸããã å
šäœããåå¥ã®ããã·ã§ã³ã®ç¹ãããçè§£ããããšã¯ããã¬ãªãçµç¹ãäœãäžã§éèŠã§ãPdMãšããŠã¯äœåºŠã§ãã¡ã³ããŒã«äŒãããå
容ã§ãã ãããã£ãå
容ã¯ãã©ãããŠãã¡ã³ããŒã«è©±ãæ©äŒãéãããŠããããã«æããŸããã¡ã³ããŒãšã®æ¥ã
ã®äŒè©±ã§ã¯ãç®ã®åã®ä»äºãé²ããããã®ããã£ãšå
·äœçã§å·®ãè¿«ã£ã話é¡ãå€ããªããã¡ãªã®ã§ã ãã®ããã«ããã¶ã€ã³ã¹ããªã³ãã®day1ã¯ãæã
ã®åç¹ãã¡ã³ããŒã«å
±æã§ãããããªä»çµã¿ã«ãªã£ãŠããŸãã è¯ã广2ïŒäžç¢ºå®æ§ãã€ã¬ã®ã¥ã©ãŒãæŽãåºãã day1ã®ãæžå¿µç¹ã®æŽãåºãããšããããã»ã¹ãéããŠã PdMã ãã§ã¯æ³å®ããããªãã£ãäžç¢ºå®æ§ãã€ã¬ã®ã¥ã©ãŒ ãæŽãåºããŸããã ãæžå¿µç¹ã®æŽãåºããã¯ãPdMããäžéãå®çŸãããæ©èœã«ã€ããŠè©³çްãŸã§äŒããåŸã§ãã©ã®ãããªæžå¿µãããããã¡ã³ããŒããè¿°ã¹ãŠãããããã»ã¹ã§ãã ãã®ããã»ã¹ã§ã¯ãPdMããã¶ã€ããŒã ãã§ã¯ãªãããšã³ãžãã¢ã»CSãšå€æ§ãªè·èœã®ã¡ã³ããŒã§å®æœããããããã ããã®ãããªãŠãŒã¶ãŒããã®åãåãããæã«XXä»¶ãããããã ããã®æ©èœãå®çŸããã«ããã£ãŠããããšãããšããžã±ãŒã¹ãæ³å®ããå®è£
ãå¿
èŠã ã ãªã©ãæ³å®ããŠããªãã£ããŠãŒã¹ã±ãŒã¹ãæè¡å¶çŽãçºèŠã§ããŸãããã¡ã³ããŒå士ã察話ããªããéçºãé²ãããšãããã¢ãžã£ã€ã«ã«è¿ãããã»ã¹ãšãèšããŸãã 坿¬¡çãªå¹çšãšããŠãèªåãšã¯ç°ãªãèŠç¹ã®ææãç¥èŠã®å
±æãéããŠãã¡ã³ããŒå士ã®ãªã¹ãã¯ããé«ãŸã£ãããã«æããŸãã day2ïŒçºæ£ã»æ±ºå®ïŒã¢ã€ãã¢ãçºæ£ããŠæ±ºããïŒ ãã£ãããš day2ã§ã¯ãday1ã§å
±æããç¥èãèæ¯ãèžãŸããåã
ã®ã¡ã³ããŒãã¢ã€ãã¢ãåºãåããŸããã åã
ã®ã¢ã€ãã¢ãèŠã€ã€ãæçµçã«ã©ã®ãããªãœãªã¥ãŒã·ã§ã³ãè¯ããæ±ºå®ãããšãããŸã§é²ããŸããã å
·äœçã«ã¯ãå¶éæéãã€ããªãããåå¡ã次ã®4ã€ã®ã¯ãŒã¯ãéããŠé«éã«ã¢ã€ãã¢ãçºæ£âåæãŸã§è¡ããŸããã ã©ã€ããã³ã°ãã¢ïŒ æ
å ±åéïŒ ã¢ã€ãã£ã¢ããŒãïŒã¢ã€ãã¢çºæ£ïŒ ã¯ã¬ã€ãžãŒ8ïŒã¢ã€ãã¢çºæ£ïŒ ãœãªã¥ãŒã·ã§ã³ã¹ã±ããïŒã¢ã€ãã¢åæïŒ ãœãªã¥ãŒã·ã§ã³ã¹ã±ããã®å±ç€ºã®æ§åâ æåŸã«ãäžäººäžäººã®ãœãªã¥ãŒã·ã§ã³ã¹ã±ããããäºãã«èŠã€ã€ãã©ã®ãœãªã¥ãŒã·ã§ã³ã§é²ããã®ããæ±ºå®ããŸãã è¯ã广3ïŒæ©èœèŠä»¶ãã¢ã¯ãã£ãã©ãŒãã³ã°ã§ãã day2ã®ã¯ãŒã¯ã¯ãday1ã§ã€ã³ããããããããžã§ã¯ãèæ¯ããæè¡å¶çŽããŠãŒã¹ã±ãŒã¹ãæãåºãã€ã€ãèªåãªãã®ã¢ã€ãã¢ãé»ã
ãšèãã¹ã±ããããŠããæéã§ãã ãã®ããã«ããã¶ã€ã³ã¹ããªã³ãã¯ã ç¥èã®ã€ã³ãããâã¢ãŠãããããé«éã§è¡ãããšã§ã现ãã仿§ããŠãŒã¹ã±ãŒã¹ãŸã§èšæ¶ã«å®çã§ãã ã¢ã¯ãã£ãã©ãŒãã³ã°ã®ãããªä»çµã¿ã«ãªã£ãŠããŸãã è¯ã广4ïŒã¡ã³ããŒã®ãããã¯ããžã®ãšã³ã²ãŒãžã¡ã³ããé«ãã day1ã§é·æçãªããã·ã§ã³ãå確èªãããããããããããããŠèªåã¯ã©ããã£ããããã¯ããè²ãŠãŠããã®ããããã£ãŠãã¢ãããŒã·ã§ã³ãããããŸããããšãã£ãã¡ã³ããŒã®å£°ããããŸããã ãŸããday2ã¯å
šå¡ã®ã¢ã€ãã¢ãèžãŸããŠãœãªã¥ãŒã·ã§ã³ã決å®ããŠããããã»ã¹ã§ããããã ãšã³ãžãã¢ãCSãäžç·ã«UIUXãäœããšããããããã¯ãäœãã®äžæµããé¢ããç°å¢ãäœãåºããŸããã ãã®ããããããã¯ããžã®æçãšãããããšã³ã²ãŒãžã¡ã³ããåäžã§ããããã«æããŸãã ã¡ã³ããŒã®ãããã¯ããžã®ãšã³ã²ãŒãžã¡ã³ã匷åã¯ãè¯ããããã¯ããäœãããã®å€§äºãªæ¡ä»¶ã ãšèããŠããŸãã Figma, Incã®CPOã§ããå±±äžç¥æš¹ããã¯ããããã¯ããžã®ãçå±ãè¶
ããæ
ç±ãããéæ³ã®ãããªãããã¯ãããçã¿åºãããšãã£ãããšãè¿°ã¹ãããŠããŸãã blog.recruit-productdesign.jp ãã¶ã€ã³ã¹ããªã³ãã¯ãã¡ã³ããŒã®ãããã¯ããžã®ãšã³ã²ãŒãžã¡ã³ããåäžããããçå±ãè¶
ããæ
ç±ããçã¿åºãè£
眮ã«ããªããšæåŸ
ã§ããŸãã BASE BANKã®ã¡ã³ããŒåé 倿§ãªã¡ã³ããŒã亀ããŠå®æœãããã¶ã€ã³ã¹ããªã³ãã¯ãè¯ããããã¯ããäœãããã ãã§ãªããããŒã ãã«ãã«ãè¯ã广ããããŸããã ãã®ããã«BASE BANKã§ã¯ãè·èœã暪æãã察話ãäžå¿ãšãããããã¯ãäœãã倧äºã«ããŠããŸãã ãã®ããŒã ã§äžç·ã«åãããïŒãšæã£ãæ¹ã¯ãã²æ±äººãããå¿åãã ããã open.talentio.com
ã¯ããã« ããã«ã¡ã¯ãBASE BANK Division ã§è³é調éãµãŒãã¹ã YELL BANK ãã®éçºãæ
åœããŠãã Doarakko ã§ãã ä»åã¯åè·ã§ããŒã ãªãŒããŒãåããåŸã«ã¡ã³ããŒãšã㊠BASE ã«å
¥ç€Ÿããå床ããŒã ãªãŒããŒãåããŠæããŠãã圹å²ã®å€åã«ã€ããŠè©±ããããšæããŸãã åè·ã§ã®åœ¹å² åè·ã§ã¯ PdM 1åããã¶ã€ããŒ1åããšã³ãžãã¢5~6åã®ããŒã ã§ãšã³ãžãã¢ãªãŒããŒãåããŠããŸããã ãªãŒããŒã«ãªã£ãéã®ããŒã ç¶æ³ãšããŠã¯ãã€ãã¬ãŒã·ã§ã³éçºã¯ããŠããã PdM ãšãšã³ãžãã¢ã®éã«ç§ãå
¥ããã¡ã³ããŒã®ã¿ã¹ã¯ç¶æ³ãèŠãŠè³å
ããºã«ã§ã¿ã¹ã¯ã«ã¡ã³ããŒãã¢ãµã€ã³ãã圢ã§éçºãé²ããŠããŸããã ãšã³ãžãã¢ã®äººæ°ã5~6åã§ãã®ããæ¹ãããŠãããšãã©ãããŠããªãŒããŒã®è² è·ïŒãªãŒããŒãããã«ããã¯ã«ãªãïŒãããŒã ã®å±äººæ§ãé«ããªã£ãŠããŸããã ããã§ç§ãéçºããããããã¯ãéçºããã»ã¹ã®æ¹åã«æ¯éã眮ããæ¹ããäžé·æçã«èŠãŠããŒã ã®ã¢ãŠãããããæå€§åã§ãããšå€æããŠãªãŒããŒãšããŠã®åœ¹å²ãå€åãããŸããã SCRUM BOOT CAMP THE BOOK ã«å€§å€ãäžè©±ã«ãªããªãããã¹ã¯ã©ã ã®ã¢ãããŒããæ®µéçã«ããŒã ã«å°å
¥ããããšãèŠããŠããŸãã æçµçã«ã¯ãããã¯ãéçºããã»ã¹ã®æ¹åãš PdM ã®ãµããŒããäž»ãªåœ¹å²ã§ããšã³ãžãã¢ãªãŒããŒãšèšãã€ã€ã»ãŒã¹ã¯ã©ã ãã¹ã¿ãŒã«ãªã£ãŠããŸããã ã¹ã¯ã©ã ã«ã€ããŠã¯ãèªè²»ã§èªå®ã¹ã¯ã©ã ãã¹ã¿ãŒã®ç ä¿®ãåãã«è¡ã£ãŠããŸãããã奜ãã«ãªããŸããã çŸåšã®åœ¹å² çŸåšã¯ PdM 1åããã¶ã€ããŒ2åãPMM 1åãã¢ããªã¹ã2åããšã³ãžãã¢ã2åã®ããŒã ã§ Engineering Program ManagerïŒãšã³ãžãã¢ãªãŒããŒïŒãåããŠããŸãã BASE BANK ã«ããã Engineering Program ManagerïŒä»¥é EPMïŒã®è©³çްã«ã€ããŠã¯ã以äžã®èšäºãèªãã§ããã ããã°ãšæããŸãã äžèšã§èšããšããããã¯ãã®ããªããªãŒãšã¯ãªãªãã£ã«è²¬ä»»ãæã£ãŠããŸãã åèïŒ ãããã¯ãã®ããªããªãŒãã¯ãªãªãã£ã«è²¬ä»»ãæã€Engineering Program Managerãšããåœ¹å² YELL BANK ããŒã ã§ã¯ãã¹ã¯ã©ã ã®ã¢ãããŒããããŒã ã®ç¶æ
ã«åãããŠåãå
¥ããªããã€ãã¬ãŒã·ã§ã³éçºãè¡ã£ãŠããŸãã å
¥ç€Ÿããåœåã¯åè·ã§ã®çµéšã掻ãããŠãããã¯ãéçºããã»ã¹ã®æ¹åã«æ¯éã眮ããŠããææããããŸããããçŸåšã¯éçºæ¥åãã¡ã€ã³ãšãªã£ãŠããŸãã å€ãã£ãããšãå€ãããªãããš BASE ã«å
¥ç€ŸããŠããã³ãŒããæžãæéã¯å§åçã«å€ããªããŸããïŒã³ãããæ°ã ãã§æ¯èŒããŠãåè·ã®3åãããïŒã ããã¯ãªãŒããŒã«ãªã£ãä»ãå€ãããŸããã èªç¶ãšãããªã£ãéšåããã¡ãããããŸãããæèçã«å€ããããšã§ããããŸãã ãããã¯ãéçºã®è€éæ§ã¯ããŒã ã®ã¡ã³ããŒæ°ã«æ¯äŸããŠé«ããªããããã«åãããŠããã»ã¹ãæ¹åããŠåŸããããã®ãå€ããªããŸãã å®éã« ã¹ã¯ã©ã ã¬ã€ã ã«ããã¹ã¯ã©ã ãšã¯ãè€éãªåé¡ã«å¯Ÿå¿ããé©å¿åã®ãœãªã¥ãŒã·ã§ã³ãã ãšèšãããŠããŸãã YELL BANK ããŒã ã§ã¯ãšã³ãžãã¢æ°ãå°ãªãããšãšããããã¯ãã®æææ±ºå®ãåºæ¬çã«ã¯ããŒã å
ã§å®çµã§ãããšããããšãããããããã¯ãéçºã®è€éæ§ã¯ãŸã ãããŸã§é«ããããŸããã å®éã«ãåã®ããŒã ã§ãã£ãŠãããã©ããã¯ããå¿
èŠãªãããããã®èŸºã¯ã©ã€ãã«ãããããªã©ãšèããããšããããããŸãã äŸã㰠现ããèšæž¬ã¯ããã«ãã¹ããªã³ãå
ã«å·®ã蟌ã¿ã¿ã¹ã¯ãã©ãããããã£ããã ããããããã«ãã ã¹ããŒãªãŒãã€ã³ãã¯äœ¿ããã« T ã·ã£ããµã€ãºã§èŠç©ããããã äžéšå±äººåã蚱容ãã ããçšåºŠããã»ã¹ãæŽããåŸã«ãããããã¯ç§å人ã§åºããã¢ãããããã倧ããããæ¹ãããŒã ã®ã¢ãŠããããã倧ãããªããšå€æããŠãéçºæ¥åãžã®æ¯éã倧ããããŸããã ããŒã ããããã¯ãã®ãã§ãŒãºãå€ããã°ãªãŒããŒã«æ±ãããããã®ãå€ãããšããã®ã¯ãèããŠã¿ãã°åœããåã®è©±ã§ãããå®éã«äœéšããŠãã®å€åãèº«ã«æ²ã¿ãŠå®æããŠããŸãã ãã ããŒã¹ã«ããããªãŒããŒãšããŠããŒã ã®ã¢ãŠãããããæå€§åãããŠäºæ¥äŸ¡å€ã®åµåºã«è²¢ç®ãããšèšãèãæ¹ã¯å€ãããŸããã ããããå¥ã®ããŒã ã§ãªãŒããŒãåããããšã«ãªã£ãŠãããã®èãæ¹ã¯å€ãããªãã®ããªãšæã£ãŠããŸãã æé£ãããšã«ãããã£ãããã°ãæžããŠãããã¡ã«ãæ°ããã¡ã³ããŒã2人å
¥ç€Ÿããããšã決ãŸããŸããã ã¡ã³ããŒæ°ãå¢ããããšã§ãŸãèªåã«æ±ãããã圹å²ãå€ãã£ãããããããŒã ã®åé¡ããããŒã ã§ã解決ããŠããããšãå¿
èŠã«ãªã£ãŠãããŸãã ãã®å€åãæ¥œãã¿ãªããããããããããã¯ãéçºãããŠããããšæããŸãã
ã¯ããã« ããã«ã¡ã¯ãBASEã®ããŒã¿åæããŒã ïŒData Strategy TeamïŒã§äžæ£å¯Ÿçãè¡ã£ãããæ©æ¢°åŠç¿ã¢ãã«ãè§Šã£ããããŠãã竹å
ã§ãã å
æ¥ããŒã å
ã®è«æèªã¿äŒã§ãã¥ãŒã©ã«ããããçšããç»ååæã«ããããŒãã£ã«è©Šçæè¡ãšãããããã¯ã«è§Šããæ©äŒããã£ãã®ã§ããã®æè¿ã®ãã¬ã³ãã«ã€ããŠæ¹ããŠããã°ãšãã圢ã§ãŸãšããŠã¿ãŸããã ããŒãã£ã«è©Šçã¯ç»åçæã¢ãã«ã®å®çšçãªãŠãŒã¹ã±ãŒã¹ã®äžã€ãšããŠä»çŸåšããŒã¿ã»ããã®æ¡å
ãã¢ãŒããã¯ãã£ã®æ€èšŒãé²ãã§ããåéã®äžã€ã§ãããå人çã«ã¯éåžžã«ã¢ãããããã¯ã ãšæããŠããŸãã ããŒãã£ã«è©Šçãšã¯ ããŒãã£ã«è©ŠçïŒVirtual Try OnïŒãšã¯ããã人ç©ãããè¡£æãççšããç¶æ
ãç»åã3Dã¢ãã«ãªã©ã®æ
å ±ãããšã«ä»®æ³çã«å®çŸããã©ã®ããã«èŠãããå¯èŠåããæè¡ã®ããšã§ãã ãããã·ã§ããã®æ®åã«ãããåºé ã«åºåãããšãPCãã¹ããŒããã©ã³ããç°¡åã«å€çš®å€æ§ãªãã¡ãã·ã§ã³ååã賌å
¥ããããšãã§ããããã«ãªã£ãŠä¹
ããæšä»ã§ããããã®äžæ¹ã§ãªã³ã©ã€ã³ã§ã¯ã©ãããŠã賌å
¥åã«è©Šçããããšã§èŠãç®ããµã€ãºæã確ãããããšãã§ããªããšãã課é¡ãæ±ããŠããŸããããŒãã£ã«è©Šçãå©çšããããšã§ãçŽæ¥åºé ãžåºåããã«ççšããéã®ã€ã¡ãŒãžãåŸãããšãã§ããããã賌å
¥è
ã«ãããŠã¯èª€ã£ãŠè³Œå
¥ããŠããŸããªã¹ã¯ããã·ã§ããã«ãããŠã¯è¿åã®ãªã¹ã¯ãæžããããšãå¯èœã«ãªããŸãã ãŸãããããã·ã§ããã®ååããŒãžã«ãããŠã¯ãæ±ã£ãŠããåååäœã®ç»åã ãã§ãªãããã¡ãã·ã§ã³ã¢ãã«ããããççšããéã®ã€ã¡ãŒãžç»åãããå©çšãããŠããŸããããããªãããæ¥ã
å€åãããã¬ã³ãã®äžã§ãååãå€çš®å€æ§åããã·ã§ããã®èŠæš¡ãããŸããŸããäžã§ããã¹ãŠã®ååã«ãããŠãã¡ãã·ã§ã³ã¢ãã«ãå©çšããã€ã¡ãŒãžç»åãçšæããããšã¯é£ããå ŽåããããŸããããã«ã€ããŠãããŒãã£ã«è©ŠçãæŽ»çšããããšã§ã倿§ãªãã¡ãã·ã§ã³ã¢ãã«ãããŸããŸãªããŒãºã§ççšããã€ã¡ãŒãžç»åãç°¡åã«çšæããããšãå¯èœãšãªããŸãã ãã¥ãŒã©ã«ããããçšããããŒãã£ã«è©Šçæè¡ ããŒãã£ã«è©Šçã®å®çŸã«ãããŠã¯3Dã¢ãã«ã®å©çšãARæè¡ã身äœèšæž¬å°çšã®ã¹ãŒãã®å©çšãªã©ãããŸããŸãªææ³ãæ€èšŒãããŠããŸãããäžã§ãæšä»ã®ãã¥ãŒã©ã«ããããæŽ»çšããæ¡ä»¶ä»ãç»åçææè¡ã®é²æ©ã«ãããå
¥åºåã«ç»åã䜿çšããåéã«ãããŠã¯ç®èŠãŸãã鲿©ãéããŠããŸãã ARãããã£ã¹ãŒããªã©ãšæ¯èŒããŠå
¥åºåã«ç»åã䜿çšããå Žåã¯ãã«ã¡ã©ãªã©ã®ããã€ã¹ã®æäœãã¹ãŒãã®ççšãšãã£ãæéããªãããŸãããŸããŸãªããŒãºã«å¯ŸããŠèªç¶ãªèŠãæ¹ãæ€èšŒã§ãããšããå©ç¹ããããŸãã ãã¥ãŒã©ã«ããããå©çšããããŒãã£ã«è©Šçã¢ãã«ã®ã€ã¡ãŒãžïŒ 1 ããäœæïŒ ç»åçæã¢ãã«ã«ããããŒãã£ã«è©Šçã®ç»å Ž ãã¥ãŒã©ã«ãããã«ããç»åçæææ³ãšããŠã¯ãé·ããGANãVAEãå©çšãããã®ãäž»æµã§ãããããŒãã£ã«è©Šçãžã®å¿çšã«ã€ããŠãåœåã¯ãããã®æè¡ãããŒã¹ãšãããã®ãèããããŠããŸããã 2017幎ã«çºè¡šãããCAGAN 2 ãšããææ³ã¯ãã®äžã®1ã€ã§ããããã®åã®éãGANãããŒã¹ãšããææ³ã§ãã Generatorã¯äººç©ç»åãšãã®äººç©ãççšããŠããæç»åãåæå¯Ÿè±¡ã®æç»åã®3ã€ãå
¥åãšããŠåæç»åãåºåããDiscriminatorã¯äžããããç»åãããŒã¿ã»ããããã®ãµã³ãã«ãªã®ãããããã¯Generatorã®åºåãªã®ããèå¥ããŸãã ãã®æGeneratorã¯Discriminatorã«åœãŠãããªãããã«åºåããDiscriminatorã¯åºåãæ£ããèå¥ã§ããããã«åŠç¿ãè¡ããŸãã CAGANã§ã¯Generatorã®åºåãå®å®ãããããã«2ã€ã®æç»åãã¹ã¯ãããããªãã2åGeneratorã«éãããšã§å
ã®äººç©ç»åãã©ãã ã埩å
ã§ããããLossã«å«ããŠããç¹ãç¹åŸŽçã§ãããäžè¬çãªæ¡ä»¶ä»ãç»åçæãšæ¯èŒããŠåºåã®å®å®æ§ã远æ±ããŠããç¹ã䌺ããŸãã ã¹ã¯ãããå©çšããGeneratorã®åºåïŒ[^2]ããïŒ Discriminatorã¯æ£äŸãšè² äŸãæ£ããèå¥ã§ããããã«åŠç¿ãã GANããæ¡æ£ã¢ãã«ãž 2021幎ãããããåŸæ¥ã®GANãVAEã§ã¯ãªãæ¡æ£ã¢ãã«ãããŒã¹ãšããææ³ãå°é ãã¯ããããã以éãæ¡ä»¶ä»ãç»åçæã¢ãã«ã®åŠç¿ã®å®å®æ§ãåºåã®ã¯ãªãªãã£ã¯æ Œæ®µã«äžãããŸããã ããŒãã£ã«è©Šçã«ãããŠããã®æ©æµã¯å€§ãããæ¡æ£ã¢ãã«ãæ¡çšããããšã«ãã£ãŠæ Œæ®µã«æ£ç¢ºãªç»åãé«ãè§£å床ã§çæã§ããããã«ãªã£ãŠããŸãã æ¡æ£ã¢ãã«ã䜿çšããããŒãã£ã«æè¡ã«é¢ããè«æã¯ããã€ããããŸãããä»åã¯ãã®äžã§ãç¹åŸŽçãªTryOnDiffusion 3 ãšOOTDiffusion[^1]ã®2ã€ãåãäžããããšæããŸãã å
ã«CAGANãTryOnDiffusionãOOTDiffusionã«ããåºåäŸãããããã®è«æå
ããæç²ããæ¯èŒããŠãããŸãã åŸè
2ã€ãæ¡æ£ã¢ãã«ããŒã¹ã®åºåãšãªããŸãããåçŸåºŠãè§£å床ã®é¢ã§å€§ããªæ¹åãèŠãããŠããããšãããããŸãã CAGANã«ããåºåäŸïŒå
¥åç»åïŒ CAGANã«ããåºåäŸïŒåºåç»åïŒ TryOnDiffusionã«ããåºåäŸ OOTDiffusionã«ããåºåäŸ TryOnDiffusion ã¿ã€ãã«: TryOnDiffusion: A Tale of Two UNets arxivãªã³ã¯: https://arxiv.org/abs/2306.08276 2023幎ã«ã¯ã·ã³ãã³å€§åŠãšGoogle Researchã®ã¡ã³ããŒã«ãã£ãŠçºè¡šãããè«æã§ãã TryOnDiffusionã¯Parallel-UNetãšåŒã°ãã2ã€ã®UNetã䜿çšããäžæ¹ãžã¯ã¿ãŒã²ãããªã人ç©ã«ãã€ãºãä»äžããç»åãšå
ç»åã®æéšåããã¹ã¯ããç»åãconcatãããã®ãããäžæ¹ãžã¯è©Šçå¯Ÿè±¡ã®æç»åãå
¥åãããã€ãºãé€å»ããããã»ã¹ãç¹°ãè¿ãããšã§ãåºåç»åã1024Ã1024ãšããé«ãè§£å床ã§çæããããšã«æåããŠããŸãã æã®ç»ååäœã§ã¯ãªããã¿ãŒã²ãããšãªã人ç©ã®ç»åãšã詊çå¯Ÿè±¡ã®æãçãå¥ã®äººç©ã®ç»åã®2ã€ãå
¥åãšããŠäœ¿çšããŠããç¹ãç¹åŸŽçã§ãã TryOnDiffusionã®ãããã¯ãŒã¯ã®å
šäœå³ïŒ[^3]ããïŒ TryOnDiffusionã§ã¯2ã€ã®UNetã®åºåãcross-attentionã䜿çšããããšã§çµã¿åãããŠããŸããïŒå³ã®é»ç·è²ã®ãããã¯ïŒ 1ã€ã®UNetã«ãã€ãºç»åãšæç»åãconcatãããã®ãå
¥åãšããæ¹æ³ããšã£ãŠããªãçç±ãšããŠãæç»åã人ç©ç»åã«ãã£ãããããé圢ç¶ã倧ããæªããè€éãªå€åœ¢ãå¿
èŠãšãªããŸãããUNetã§æ¡çšãããŠããç³ã¿èŸŒã¿ãšself-attentionã®ãããªãã¯ã»ã«åäœã§ã®åŒ·ããã€ã¢ã¹ããããæ©æ§ã¯ããã«é©ããªããšèšåãããŠããŸããããã«ã€ããŠã¯ablation studyãšããŠ2ã€ã®ã¢ãŒããã¯ãã£ãæ¯èŒããæ€èšŒããªãããŠããŸãããåçŽãªconcatãšæ¯èŒããŠçްéšã®ãã¯ã¹ãã£ã«ãããŠéããåºãŠããããšãããããŸãã cross-attentionãšconcatãšã®æ¯èŒïŒ[^3]ããïŒ 1ã€ã®Diffusionã¢ãã«ã®åŠç¿ã«ã¯32åºã®TPU-v4ã䜿çšããŠãããããŒã¿ã»ãããšããŠã¯åã人ç©ãåãæãå¥ã®ããŒãºã§çãç»åãã¢ã400äžãã¢äœ¿çšããŠããŸãã ããããµã€ãº256ã§50äžã¹ãããåãã®ã«ã ããã3æ¥ããããšèšèŒãããŠãããããªã倧æãããªã¢ãã«ã§ããããšãããããŸãã ã¡ãªã¿ã«ãã®TryOnDiffusionã䜿çšããããŒãã£ã«è©Šçã·ã¹ãã ã¯2023幎ã®6æãããããã¯ããšããŠãªãªãŒã¹ãããŠããã Googleâs Shopping Graph ãšåŒã°ããGoogleã®ä¿æããŠããååããŒã¿ã»ããã®äžéšãã¡ãã·ã§ã³ååã察象ã«ãã¹ãã³ããŒã³ãäœåã®ç°ãªãããŸããŸãªãã¡ãã·ã§ã³ã¢ãã«ãççšããã€ã¡ãŒãžãååŸãã賌å
¥ã®åèã«ããããšãã§ããŸããïŒçŸåšã¯ç±³åœéå®ã®ããã§ããïŒ https://blog.google/products/shopping/ai-virtual-try-on-google-shopping/ ãŸãããã®ã¢ãã«ã«ã€ããŠã¯ããŒã¿ã»ãããã¢ãã«ãã©ã¡ãŒã¿ã¯å
¬éãããŠããŸããã OOTDiffusion ã¿ã€ãã«: OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on arxivãªã³ã¯: https://arxiv.org/abs/2403.01779 OOTDiffusionã¯äžåœã®å€§æAIäŒæ¥Xiao-iã®ãªãµãŒãããŒã ã«ãã£ãŠæ¯èŒçæè¿å
¬éãããããŒãã£ã«è©Šçã¢ãã«ã§ãããLDMã䜿çšããããšã§èšç®ã³ã¹ããåæžããªããåºåã®ã¯ãªãªãã£ã®é«ããç¶æãã€ã€ããããã¹ã ãã§ãªããããã ã¹ãã¯ã³ããŒã¹ãªã©ãããŸããŸãªã«ããŽãªã«å¯Ÿå¿ããŠããç¹ãç¹åŸŽã§ãã ãããã¯ãŒã¯ã®ã¢ãŒããã¯ãã£ã«ã€ããŠã¯TryOnDiffusionãšåæ§ã«è¡£æéšåããã¹ã¯ãã人ç©ç»åãå
¥åãšããUNetãšæç»åãå
¥åãšããUNetã®2ã€ã䜿çšããUNetå
ã®self-attentionå±€ã®åã§concatããOutfitting fusionãšåŒã°ããææ³ã§2ã€ã®UNetãç¹ããŠããŸãã OOTDiffusionã®ã¢ãŒããã¯ãã£ïŒ[^1]ããïŒ å
ã»ã©ã®TryOnDiffusionãšå€§ããç°ãªãç¹ãšããŠãStable Diffusionãªã©ã§ãæ¡çšãããŠããVAE encoderã䜿çšããŠæœåšç©ºéäžã§ãã€ãºé€å»ãè¡ãLatent DiffusionããŒã¹ã®ã¢ãŒããã¯ãã£ãæ¡çšããŠããããã®ããäžè¬çãªGPUäžåºã§æšè«ãåããããšãã§ããŸããïŒããªããTryOnDiffusionã®LDMããŒãžã§ã³ãšãã£ãæãã§ãããããïŒåŠç¿æã®UNetã®éã¿ã®åæå€ãšããŠãStable Diffusion v1.5ã®ãã®ããã®ãŸãŸäœ¿çšããŠãããšèšèŒãããŠããŸãã ãŸããå
šèº«ã«å¯Ÿå¿ããããŒãžã§ã³ã«ãããŠã¯CLIPã䜿çšããŠããã詊çãè¡ãéšäœã«é¢ããŠïŒâupper bodyâãªã©ïŒããã¹ãã§ã®ã¬ã€ããå
¥ããããšã§ãåºåãå®å®åãã工倫ãå
¥ããããŠããŸãã OOTDiffusionã«ã€ããŠã¯Githubã§ãœãŒã¹ã³ãŒãããHugging Face Hubã§ã¢ãã«ãã©ã¡ãŒã¿ãå
¬éãããŠãããããèšç®ç°å¢ãããã°ããã«æå
ã§æ€èšŒããããšãã§ããŸããïŒã©ã€ã»ã³ã¹ã¯cc-by-nc-sa-4.0ãªã®ã§ããã®ãŸãŸåçšå©çšã¯ã§ããªãç¹ã¯æ³šæãå¿
èŠã§ããïŒ https://huggingface.co/levihsu/OOTDiffusion/tree/main/checkpoints åŠç¿ã«ãããŠã¯äžå身éå®ã®ã¢ãã«ã«ã¯ãªãŒãã³ããŒã¿ã»ããã®VITON-HDããå
šèº«ã«å¯Ÿå¿ããã¢ãã«ã«ã¯ãªãŒãã³ããŒã¿ã»ããã®Dress Codeã䜿çšããããããµã€ãº64ïŒé«è§£å床ã®ãã®ã¯16ïŒã§36000ã¹ãããã®åŠç¿ãA100äžåºã§è¡ã£ãŠããŸãã TryOnDiffusionãšæ¯èŒããŠãããªã軜éãªã¢ãã«ã§ããããšãããããŸãã ã¡ãªã¿ã«ãTryOnDiffusionãšOOTDiffusionãå«ããæè¿ã®ãã¥ãŒã©ã«ãããããŒã¹ã®ããŒãã£ã«è©Šçã¢ãã«ã§ã¯ãã¿ãŒã²ãããšãªã人ç©ã®ç»åã®æã®éšåããã¹ã¯ããååŠçãè¡ãããšãã»ãŒã¹ã¿ã³ããŒãåããŠãããOOTDiffsuionã§ã¯å§¿å¢æšå®ã¢ãã«ã® openpose ãšã»ã°ã¡ã³ããŒã·ã§ã³ã¢ãã«ã® humanparsing ã®2ã€ãçµã¿åããããã€ãã©ã€ã³ãå©çšãããŠããŸãã ããŒãã£ã«è©Šçã¢ãã«ã«çšãããããªãŒãã³ããŒã¿ã»ãã å°ãèéã«éžããŸãããããããããŒãã£ã«è©Šçã¢ãã«ã®åŠç¿ããã¹ãã«ãã䜿çšãããŠãããªãŒãã³ããŒã¿ã»ããã«ã€ããŠãè§ŠããŠãããŸãã ããŒãã£ã«è©Šçã¢ãã«ã®æ§èœã®åäžã«ã€ããŠã¯ãã¢ãã«ã¢ãŒããã¯ãã£ãã¢ã«ãŽãªãºã ã®æ¹åãšäžŠè¡ããŠé«å質ãã€ãµã€ãºã®å€§ããªããŒã¿ã»ããã®æ¡å
ãåŸæŒãããŠããŸããïŒãããŸã§ã¡ãžã£ãŒãšã¯èšããªãã¿ã¹ã¯ã®å²ã«ã¯å©çšããããããŒã¿ã»ãããè€æ°ååšãããããç ç©¶ãæ€èšŒã®ããŒããšããŠã¯æ¡å€åãçµã¿ãããå°è±¡ã§ããïŒ ãŸãããããã®ããŒã¿ã»ããã«ã€ããŠã¯åºæ¬çã«ã¯ç ç©¶çšéã§ã®ã¿äœ¿çšã§ããã©ã€ã»ã³ã¹ãèšå®ãããŠããŸãã VITON-HD KAISTã«ãã£ãŠå
¬éãããŠããããŒã¿ã»ããã§ãè€æ°ã®è«æã§ãã³ãããŒã¯ãšããŠããã䜿çšãããŠããå°è±¡ã§ãã 1024 x 768ã®é«ç»è³ªãªäººç©ç»åãšæç»åã®ãã¢ããåŠç¿çšã11647ã»ããããã¹ãçšã2032ã»ããå«ãŸããŠããŸãã ãŸããããããã®äººç©ç»åã«å¯ŸããŠposeæšå®ãdenseæšå®ãªã©åŠçæžã¿ã®ããŒã¿ãå«ãŸããŠããŸãã https://github.com/shadow2496/VITON-HD FashionTryOn å±±æ±å€§åŠã«ãã£ãŠå
¬éãããŠããããŒã¿ã»ããã§ãããVITON-HDããå€§èŠæš¡ãªããŒã¿ã»ããã«ãªããŸãã æç»åãšç°ãªãããŒãºã®äººç©ç»å2ããŒãºåã®3ç¹ã1ã»ãããšããŠ28714ã»ããå«ãŸããŠããŸãã https://fashiontryon.wixsite.com/fashiontryon DressCode ã€ã¿ãªã¢ã®ã¢ããã»ã¬ããžã§ã»ãšããªã¢å€§åŠãšã€ã¿ãªã¢ã®å€§æECäŒæ¥YOOX瀟ã«ãã£ãŠå
¬éãããŠããããŒã¿ã»ããã§ãããããŒãã£ã«è©Šçã¢ãã«ã®ããŒã¿ã»ãããšããŠã¯æå€§èŠæš¡ã®ãµã€ãºã®ãã®ãšãªããŸãããŸããããŒã¿ã»ããã«å«ãŸãããã¡ãã·ã§ã³ç»åã¯ãããã¹ã ãã«ãšã©ãŸãããããã ã¹ãã¢ã¯ã»ãµãªãªã©ãããŸããŸãªã«ããŽãªãŒã®ãã®ãå«ãŸããŠããç¹ãç¹åŸŽã§ãã OOTDiffusionã®å
šèº«ã¢ãã«ã®åŠç¿ã«ã䜿çšãããŠããŸãã https://github.com/aimagelab/dress-code ããŒã¿ã»ããã®èŠæš¡ã®æ¯èŒïŒ 4 ããïŒ èª²é¡ äžèšã®è«æä»¥å€ã«ãæ¡æ£ã¢ãã«ãå©çšããããŒãã£ã«è©Šçãæ€èšŒããè«æã¯ããã€ãããããããã«ãããŠãåŸæ¥ã®ã¢ãã«ãšæ¯èŒããŠKIDãªã©ã®ææšã«ãããŠé«ãæ°å€ãåºãããšã«æåããŠããã宿§çã«ãã¯ãªãªãã£ã®é«ãåºåãåŸãããšãã§ããŠããŸããããŸã æ¹åã®äœå°ããããŸãã äžèšã®è«æã§èª²é¡ãšããŠæããããŠããç¹ãšããŠã¯ã å
¥åç»åã®èæ¯ãè€éãªå Žåã«åºåã«ã©ã®ãããªåœ±é¿ããããäžæã§ããã 人ç©ç»åãšæã®ç»åã®ã«ããŽãªãç°ãªãå ŽåãäŸãã°Tã·ã£ããçãŠãã人ç©ã«ã¯ã³ããŒã¹ãããºãã³ãå±¥ããŠãã人ã«ã¹ã«ãŒããåãããå Žåã¯æåŸ
ããåºåãåŸãããªãå Žåãããã æéšåããã¹ã¯ããéã«äººç©ã®èã®æ
å ±ïŒçèã®ç¶æ
ãã¿ãã¥ãŒãªã©ã®ç¹åŸŽïŒãæ¬ æããã ãšãã£ããã®ããããŸãã 1ã€ç®ã«é¢ããŠã¯ã人ç©ãšèæ¯ãåããã»ã°ã¡ã³ããŒã·ã§ã³ãååŠçã«æãããšã§èæ¯ã«å¯ŸããŠããçšåºŠèæ¯ã«é å¥ãªãã€ãã©ã€ã³ãçµãããšèªäœã¯å¯èœã«æããŸãã 2ã€ç®ã«é¢ããŠã¯ãããŒã¿ã»ããã«ãããã£ããµã³ãã«ããªãããã§ãããšèããããããŒã¿ã»ããã®ããªãšãŒã·ã§ã³ãå¢ããããšã«ãã£ãŠããçšåºŠæ¹åã§ããå¯èœæ§ããããšè¿°ã¹ãããŠããŸãã 3ã€ç®ã«ã€ããŠã¯ã2ã€ã®è«æã§å
±éããŠæããããŠãã課é¡ã§ããããã¡ããååŠçã§ã»ã°ã¡ã³ããŒã·ã§ã³ãè¡ãç¯å²ãããéå®ããããšãã§ããã°ãããçšåºŠæ¹åã§ãããã§ããããããªããé·è¢âåè¢ã®ãããªå
¥åºåãèããå Žåã¯æ
å ±ãè¶³ããªãããããã®å Žåã¯ãããè£ããããªå
¥åã远å ããå¿
èŠãããããã§ãã ãŸããããããå
¥åºåã«ç»åãå©çšããŠãã以äžããªãŒããŒãµã€ãºãã¿ã€ãããªã©ãšãã£ããµã€ãºæãã·ã«ãšããã«ã€ããŠã¯æ£ç¢ºãªæ
å ±ãåæ ãã¥ãããšããç¹ããããšããã®ã¯å®éã«åãããŠã¿ãŠç§ã宿ãã課é¡ã§ãã ãŸãšã ãã¥ãŒã©ã«ãããã䜿çšããããŒãã£ã«è©Šçæè¡ã«ã€ããŠç޹ä»ããŸããã ç»åçæã«ãããŠããŒãã£ã«è©ŠçãšãããŠãŒã¹ã±ãŒã¹ã«ã€ããŠã¯ãStableDiffusionãªã©ã§ããã³ãããããªãªãžãã«ã®ç»åãçæããçšéãªã©ãšç°ãªããã¯ãšãªãšãªãç»åããæåŸ
ãããåºåãéåžžã«éå®ããããããå°ãã§ãæªãã§ããŸã£ããæã®æãå€ãã£ãŠããŸãã ãã§å©çšäŸ¡å€ã倧ããæãªãããããšã«ãªããŸãã éã«èšãã°ãã¢ãã«ã®æ§èœãããŒã¿ã»ããã®ããªãšãŒã·ã§ã³ã®åäžã«åãããŠäžæ°ã«ãã®å®çšæ§ãé«ãŸã£ãŠãããããªåéã§ããããããä»åŸã®æè¡çãªé²æ©ãå®éã®ãµãŒãã¹ãžå°å
¥ãªã©ãžã®æåŸ
ãé«ãŸããŸãã æåŸãšãªããŸãããåŒç€Ÿã§ã¯äžç·ã«åããŠãã ããæ¹ãåºãåéããŠãããŸãïŒãèå³ã®ããæ¹ã¯äžèšã®ãªã³ã¯ãããæ°è»œã«ãå¿åãã ããïŒ https://binc.jp/jobs Xu, Yuhao, et al. "Ootdiffusion: Outfitting fusion based latent diffusion for controllable virtual try-on." arXiv preprint arXiv:2403.01779  (2024). https://arxiv.org/abs/2403.01779 ↩ Jetchev, Nikolay, and Urs Bergmann. "The conditional analogy gan: Swapping fashion articles on people images." Proceedings of the IEEE international conference on computer vision workshops . 2017. https://arxiv.org/abs/1709.04695 ↩ Zhu, Luyang, et al. "Tryondiffusion: A tale of two unets." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition . 2023. https://arxiv.org/abs/2306.08276 ↩ https://github.com/aimagelab/dress-code ↩
ãããã〠ã¯ãããŸããŠã®äººã¯ã¯ãããŸããŠãããã«ã¡ã¯ïŒBASE BANK Divisionã®ããã³ããšã³ããšã³ãžãã¢ã®ãã£ã¡ããïŒÂ @gatchan0807  ïŒã§ãã ä»åã¯ãããæ°ã¶æã®éã«OIDCïŒOpenID ConnectïŒãšããæè¡ã䜿ã£ãéçºãè€æ°è¡ãããã®æè¡ã®æŠèгãçè§£ããããšãã§ããã®ã§ãOIDCã®æè¡æŠèŠã«è§Šãã€ã€BASE BANKã®äžã§ã©ã®ããã«äœ¿ã£ãã®ããã玹ä»ããããšæããŸãã OIDCãšã¯äœãªã®ã ãã®ããŒãã§ã¯ããŸãOIDCãšããæè¡ã«ã€ããŠæŠèŠã玹ä»ããŸããããã€ãã®WebããŒãžã«èšèŒãããŠããå
容ãåèã«ããŠãŸãšããããŠé ããŠããã®ã§ãèšäºã®æåŸã«åç
§å
ã®ãªã³ã¯ãèšèŒããŠãããŸãã ãŸããOIDCãã¯ãããšããèªèšŒã»èªå¯ã®ä»çµã¿ã«ã¯æ§ã
ãªçšèªããããèªåèªèº«ãã調ã¹ãã°èª¿ã¹ãã»ã©ç¥ããªãçšèªãå¢ããŠãã©ãã©ãããããªããªã£ãŠããâŠããšããçµéšãããã®ã§ãããããå
·äœäŸã亀ããŠç®æ¡æžããªã©ãçšããªãããŸãšããŠããŸãããããæããã«ééã£ãããšãæžããŠããå Žåã¯XïŒæ§TwitterïŒãªã©ã§é©å®ãææããã ããŸããšå¹žãã§ãïŒ OIDCïŒOpenID ConnectïŒãšã¯ïŒ OIDCïŒOpenID ConnectïŒã¯ OpenID Foundation ãçå®ãããŠãããã¢ã€ãã³ãã£ãã£æ
å ±ã飿ºããããã®ãããã³ã«ã®äžçš®ã§ãã ãã®ãããã³ã«ã¯ãWebã¢ããªã±ãŒã·ã§ã³çã§å©çšããå Žåã¯OAuth 2.0ïŒGoogleãã°ã€ã³ãªã©ã§äœ¿ãããŠãããèªå¯ããããã³ã«ïŒãããŒã¹ã«ãã¢ã€ãã³ãã£ãã£æ
å ±ãæã€ãµãŒããŒïŒIDãããã€ãïŒãšãµãŒãã¹ãæäŸããã¢ããªãWebãµãŒããŒïŒãµãŒãã¹ãããã€ãïŒã§ããåãããå€ã®äžèº«ãŸã§å®çŸ©ããŠããããèªèšŒãã«äœ¿ãããããã³ã«ãšããŠå®çŸ©ãããŠããŸãã ãã®ãèªèšŒããããã³ã«ã䜿ã£ãŠSSOïŒã·ã³ã°ã«ãµã€ã³ãªã³ïŒã®æ©èœãå®çŸããããšãå€ãã2024幎çŸåšã§ã¯æ§ã
ãªãšããã§OIDCãããã³ã«ã«å¯Ÿå¿ããèªèšŒæ©æ§ãçšæãããŠããŸãã ãããŸã§ã§ãèªèšŒãšèªå¯ãããSSOïŒã·ã³ã°ã«ãµã€ã³ãªã³ïŒããªã©ãããã€ãå°éçšèªãåºãŠããŠããã®ã§ãããããã©ããããã®ãªã®ãããããããŠãããŸãããã èªèšŒãšèªå¯ã®éã èªå¯ : ãŠãŒã¶ãŒãŸãã¯ãµãŒãã¹ã«ã ããŒã¿ãžã®ã¢ã¯ã»ã¹ãŸãã¯ç¹å®ã®åŠçã®å®è¡ãèš±å¯ãã ããš èªèšŒ : 誰ããŸãã¯äœããã 䞻匵ããéãã®äººç©ãŸãã¯ç©ã§ãããã©ãããæ€èšŒããç¹å®ãã ããš åºå
ž: https://www.onelogin.com/learn/authentication-vs-authorization OAuth2.0ã§ã¯ãèªå¯ããè¡ãããã®ä»çµã¿ïŒèªèšŒãå®è£
ããããšæãã°åºæ¥ãããæè¡ä»æ§äžã¯æ
ä¿åºæ¥ãªãã®ã§éæšå¥šïŒãå®çŸ©ããŠããŸãã äŸãã°ãOAuth2.0ã䜿ã£ãGoogleãã°ã€ã³ãªã©ã§ã¯ãGoogleã®ç»é¢ã§ãã°ã€ã³âGoogleã®èªå¯ãµãŒããŒããã¢ã¯ã»ã¹ããŒã¯ã³çºè¡âGoogleã®ãªãœãŒã¹ãµãŒããŒã«ã¢ã¯ã»ã¹ããŒã¯ã³ãæž¡ããŠããŒã¿ãååŸããšãããããŒã§ããŒã¿ã®ããåããè¡ãããŠããŸãã ãã ãçºè¡ãããã¢ã¯ã»ã¹ããŒã¯ã³ã«ã¯ã誰ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããŠãããïŒããšããæ
å ±ãããªãïŒãã®ã¢ã¯ã»ã¹ããŒã¯ã³ãéã£ãŠããã®ã誰ãªã®ãã¯ããããªãïŒãããäœããã®æ¹æ³ã§ã¢ã¯ã»ã¹ããŒã¯ã³ãçãŸãããšãèªå¯ãµãŒããŒåŽã§èªå¯ãã人以å€ã«ãªãœãŒã¹ã奪åãããŠããŸãããšã«ãªããŸãã OIDCã§ã¯ãããé²ãããã«ããIDããŒã¯ã³ããšãã圢ã®ïŒæå·åã»åŸ©å·åã®ä»æ§ãŸã§å®çŸ©ãããïŒããŒã¯ã³ãããåãããããšã§ãããåããããŠããçžæã誰ïŒäœïŒã§ãããããèå¥ãããããå
ã«é©åãªæš©éä»äžãè¡ããããã«æè¡ä»æ§ãå®çŸ©ããŠããŸãã [远èš: 2024-05-02] åŸæ¥ãXäžã«ãŠ @pinzolo æ§ãããé£çµ¡ãããã ããå³ã®äžã®èª€ã£ãŠããéšåïŒã†IDããŒã¯ã³ãéä¿¡ããšèšèŒããŠããéšåïŒãã†ã¢ã¯ã»ã¹ããŒã¯ã³ãéä¿¡ããšãã圢ã«ä¿®æ£ããŸããïŒ ãææããã ãèª ã«ããããšãããããŸããïŒ èšäºå
ã®å³ã®è©±ã§ãããOIDC ã§ UserInfo endpoint ãããŠãŒã¶ãŒæ
å ±ãååŸãããšãã access token ã䜿ããŸããID Token ã¯åãåã£ãŠæ€èšŒããã ãã§éä¿¡ããªãã§ãã https://t.co/Wz7sAxtFeZ — pinzolo (@pinzolo) 2024幎5æ2æ¥ èŠæ±ããã End-User ã® Claim ãååŸãããã, Client㯠OpenID Connect Authentication ãéããŠåŸããã Access Token ãçšã㊠UserInfo Endpoint ã«èŠæ±ãã. åŒçšå
: https://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#UserInfo SSOãšã¯ SSOïŒã·ã³ã°ã«ãµã€ã³ãªã³ïŒãšã¯ã1ã€ã®ã¢ã«ãŠã³ãã«ãã°ã€ã³ããããšã§è€æ°ã®ãµãŒãã¹ã®ãã°ã€ã³ãå¯èœã«ãªãæ©èœãã®ããšã§ãããã®æ©èœãå®çŸããããã«ãOIDCãSAMLïŒåŸè¿°ïŒãšããæè¡ã»ãããã³ã«ãå©çšãããšããé¢ä¿æ§ã§ãã BASEå
ã§ã¯ OneLogin ïŒã¯ã©ãŠãåID管çãµãŒãã¹ã®äžã€ïŒã䜿ã£ãSSOç°å¢ãå©çšããŠãããGoogle Wokrspaceãªã©åçš®ã¢ã«ãŠã³ããžã®ãã°ã€ã³ãã»ãã¥ã¢ã«äŸ¿å©ã«å©çšã§ããããã«ç°å¢ãæ§ç¯ãããŠããŸãã SAMLãšã¯ SAMLïŒSecurity Assertion Markup LanguageïŒã¯ãXMLããŒã¹ã®èªèšŒæ
å ±ã衚çŸããæ¹æ³ã®èŠæ Œã®ããšã§ããçŸåšã§ã¯ããã®SAMLïŒXMLæ
å ±ïŒãéåä¿¡ããŠèªèšŒãè¡ãã«ãŒã«ã»ãããã³ã«ãŸã§å«ããŠSAMLãšè¡šçŸãããããšãå€ãã§ãã SAMLèªèšŒã§ã¯ããµãŒãã¹ãããã€ãåŽããIDãããã€ãã«å¯ŸããŠSAML圢åŒã®XMLãã¡ã€ã«ããããããç»é²ããIDæ
å ±ããã©ãããå
¥æããã®ãã»ã©ãã«æäŸããã®ããã®é£æºãäºåã«åã£ãŠãã圢ã§èªèšŒãå®çŸãããŠããŸã çŸåšäž»æµã®SAML 2.0ã¯2005幎ã«ä»æ§ãçå®ãããSSOã®æ©èœãäœãéã®ããã¡ã¯ãã¹ã¿ã³ããŒããªä»æ§ãšããŠäœ¿ãç¶ããããŠãããããäžã®äžã«éåžžã«å€ãã®æç®ã»å©çšäºäŸãªã©ããããŸãã ãããããããã XMLã®ããŒã¹ããã®ããŒã¹åŸã®ããŒã¿ãå©çšããéä¿¡ãããŒã®äœæãXMLèªäœã®è匱æ§ã®å¯Ÿå¿ãå¿
èŠã ã£ããããŠãå
šäœãšããŠé£è§£ã«ãªããã¡ ã§ã仿§ãçæ³éãå®è£
ã§ããã°å
šãåé¡ãªãèªèšŒæ¹åŒã ãã çŸå®ã¯å®è£
ã«åé¡ããã£ãŠè匱ã«ãªã£ãŠããŸããšããããšãèµ·ãããã¡ ãªãã®ã§ããã ãã®ãããSAMLã代æ¿ã§ããããã«OIDCãçãŸãã婿޻çšãããŠããŠããããšããèæ¯ããããŸãã SAMLãšOIDCã®éããšãã 以äžã®ããã«ãSAMLãšOIDC㯠ã©ã¡ããSSOã«äœ¿ãããæè¡ã§ãããèªèšŒãå®çŸããããã®æè¡ã§ãããã©ã¡ããIDãããã€ããšãµãŒãã¹ãããã€ããšã¯ã©ã€ã¢ã³ãïŒãŠãŒã¶ãŒã®ç«¯æ«ïŒã決ããããæé ã§éä¿¡ãè¡ã£ãŠèªèšŒããæè¡ ã§ãã éã«ãå·®åãšããŠä»¥äžã®2ç¹ããããä»åBASE BANKã§ã¯ããµãŒãã¹ãããã€ãåŽã®å®è£
ãç°¡åã«ãªãããšããã¡ãªããã享åããããã«OIDCã䜿ã£ãèªèšŒã»é£æºåŠçãäœæããŸãã OIDCã¯HTTPSéä¿¡ã§ããŒã¿ãããåãããJWTãšããïŒXMLãããïŒåçŽãªæååãããåãããããããµãŒãã¹ãããã€ãåŽã®å®è£
ãç°¡åã«ãªãããã OIDCã§ã¯ããµãŒãã¹ãããã€ãåŽããIDãããã€ãã«å¯ŸããŠåžæãã ããŒã¿ã®ã¹ã³ãŒãïŒç¯å²ïŒããªã¯ãšã¹ãã§ããããšã仿§ãšããŠååš ããŠãããã¯ã©ã€ã¢ã³ãïŒãŠãŒã¶ãŒã®ç«¯æ«ïŒã«å¯ŸããŠãµãŒãã¹ãããã€ãã«ã©ã®ããŒã¿ãäžããããããäŒããããšã容æã«å®çŸã§ãã ä»åBASE BANKã§äœ¿ã£ããšãã ãããŸã§ãOIDCãšããã«é¢é£ããæè¡ã»ããŒã¯ãŒãã«ã€ããŠç޹ä»ãããŠããŸããããããããã¯ãã®æè¡ãå®éã©ãã§äœ¿ã£ãã®ïŒãšãããšããã玹ä»ããŠãããŸãã GitHub ActionsããAWSãªãœãŒã¹ã«ã¢ã¯ã»ã¹ãããããã€ãã 1ã€ç®ã®ãŠãŒã¹ã±ãŒã¹ã¯ã GitHub Actionsã䜿ã£ãŠãAWSäžã«ããéçºç°å¢ïŒã¹ããŒãžã³ã°ç°å¢ãšã¯å¥ã«ãéãšã³ãžãã¢ãåäœç¢ºèªããéãQAãè¡ãæã«å©çšããç°å¢ïŒã«å¯ŸããŠã¢ããªã±ãŒã·ã§ã³ããããã€ãã ã¯ãŒã¯ãããŒãäœæããéã«OIDCã§ã®èªèšŒãå©çšããŸããã BASE BANKããŒã ãäž»ã«éçºãè¡ã£ãŠãã YELL BANK ïŒBASEã®ã·ã§ãããªãŒããŒããåãã®è³éèª¿éæ©èœïŒã®ããã¯ãšã³ãã«ã¯ãAPIãšããŠå©çšããã¢ããªã±ãŒã·ã§ã³ãè€æ°ãããŸãã ãã£ãããšããæè¡æ§æã«é¢ããŠã¯ã BASE BANKããŒã ã®ç޹ä»è³æ ãã芧ãã ããã ãããŸã§ã¯ã¹ããŒãžã³ã°ç°å¢ã§ã®ç¢ºèªã§äºè¶³ããŠããããéçºç°å¢ãäœ¿ãæ©äŒãå°ãªããæ¬çªãžã®ãããã€ãšåæã«ïŒæ¬çªãšã®å·®åããªããããã®ãããã€ãïŒCIäžã§è¡ãã ãã§åé¡ãªãã£ãã®ã§ããããã®ç°å¢ããã£ãšæŽ»çšããŠããããã«éçºç°å¢ãžã®ãããã€ãèªç±ãªã¿ã€ãã³ã°ã§ãã£ãšæè»œã«è¡ããããã«ãããïŒãšããã¢ãããŒã·ã§ã³ãããã®å¯Ÿå¿ãè¡ããŸããã å
šäœã®äœæ¥ã®æµããšããŠã¯ã以äžã®ããã«å€§ãã3ã€ã®ã¹ãããã§å®çŸã§ããŸããã AWS IAMã§OIDC ProviderãäœæããïŒãã®Providerã«ããŒã«ãæå®ããAWS ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹èš±å¯ãè¡ãïŒ https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers_create_oidc.html GitHub Actionsã®ã¹ãããã§ aws-actions/configure-aws-credentials ã䜿ããäžèšã§äœæããOIDC Providerãæå®ãã https://github.com/aws-actions/configure-aws-credentials?tab=readme-ov-file#oidc GitHub Actionsã®ã¯ãŒã¯ãããŒã workflow_dispatch ããå©çšã§ããããã«ããGitHubäžã®Actionsã¿ãããå©çšããïŒå®æïŒïŒ ãã詳ãã解説ã¯GitHub Actionså
¬åŒã®è§£èª¬ããŒãžãã芧ãã ããã docs.github.com AWS IAMã§OIDC Providerãäœæãã ä»åã¯ãããŒãžã¡ã³ãã³ã³ãœãŒã«ããOIDC Provideräœæããæ¹æ³ã解説ããŸããïŒ AWS CLIçµç±ãªã©ä»ã®äœææ¹æ³ã¯AWSå
¬åŒããã¥ã¡ã³ã ãã確èªãã ããïŒ ä»¥äžã®ããã«ã GitHubå
¬åŒã®è§£èª¬ããŒãž ã«èšèŒãããŠãããããã€ãã®URLïŒAWS â GitHubãžã®ãªã¯ãšã¹ãå
ãªã®ã§ãåºæ¬çã«ããã¯ãŠãŒã¶ãŒåå¥ã§ã¯ãªãïŒãèšå®ãããµã ããªã³ãã®ååŸã®äžID ProviderãäœæããŠãã ããã ID Providerã®äœæåŸãIAMããŒã«ãå²ãåœãŠãããšã§AWSãªãœãŒã¹ã«ã¢ã¯ã»ã¹å¯èœãªOIDC Providerãåºæ¥äžãããŸãã æ³šæç¹ãšããŠã¯ãAWS IAMã®ç®¡çåäœãšããŠäžè¿°ã®ããããã€ãã®URLãã«èšå®ããURLåäœã§1ã€ã®IAMãŠãŒã¶ãŒãšããŠæ±ãããã1ã€ã®AWSç°å¢ã«å¯ŸããŠã®GitHub Actionsããã®OIDCçµç±ã¢ã¯ã»ã¹ã¯1ã€ã«éçŽãããŠããŸããGitHub Actionsã®ã¯ãŒã¯ãã㌠/ ãªããžããªããšã«ããã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©éã ãäžããããšããããšã¯åºæ¥ãªãç¹ã ããæ³šæãã ããã GitHub Actionsã®ã¯ãŒã¯ãããŒã®äœæ ä»åã¯å°æ¥çãªæ¡åŒµãèŠæ®ããŠã以äžã®ãããªåœ¢ã§ workflow_dispatch ã® input ãšããŠç°å¢åãåãåããããã«ããŠããŸãããåºæ¬çã«ã¯ GitHubå
¬åŒã®è§£èª¬ããŒãž ã®GitHub Actionsã®ã¯ãŒã¯ãããŒèšå®ãèžè¥²ããŠå®è£
ããŠããŸã env : dev_id : 123456789012 on : workflow_dispatch : inputs : env : description : "deploy envïŒçŸæç¹ã¯ dev ã®ã¿ïŒ" required : true type : choice default : "dev" options : - "dev" jobs : deploy : name : deploy runs-on : ubuntu-latest permissions : id-token : write contents : read actions : read steps : - uses : actions/checkout@v4 - name : Configure AWS Credentials uses : aws-actions/configure-aws-credentials@v4 with : # äœæããIAM Roleåãæå®ãã # see: https://github.com/aws-actions/configure-aws-credentials # äŸ) devæå®ã®ãšãã«ãenv[format('{0}_id', inputs.env)] => dev_idãåãåºã role-to-assume : arn:aws:iam::${{ env[format('{ 0 }_id', inputs.env)] }}:role/${{ inputs.env }}-oidc-provider aws-region : ap-northeast-1 ïŒä»¥éã¯ãåã¹ãããã§ãããã€ã«å¿
èŠãªAWS ECRãžã®ã³ã³ããã®PushãAWS ECSã¯ã©ã¹ã¿ãŒãžã®ããããžã§ãã³ã°ã³ãã³ããaws cliçµç±ã§å®è¡ããŠããïŒ GitHubäžã®Actionsã¿ãããå©çšåºæ¥ãããã« äžè¿°ã®YAMLãã¡ã€ã«ãããã©ã«ããã©ã³ãã«ããŒãžããããšã§ãActionsã¿ããã以äžã®ããã«å®è¡ããããšãå¯èœã«ãªããŸãã ç»é¢å³äžã®Run workflowããå®è¡æã«å©çšãããã©ã³ããšç°å¢æ
å ±ãéžæã§ããã®ã§ãããã§ããã©ã«ããã©ã³ã以å€ã®ãã©ã³ããéçºç°å¢ã«é©çšããããšãGUIããããããã«ã§ããããã«ãªããŸããã 瀟å
åã管çç»é¢ã§NextAuthãå©çšããOneLoginã䜿ã£ãSSOãå®è£
ãã 2ã€ç®ã®ãŠãŒã¹ã±ãŒã¹ã¯ã æ°ãã«äœæãã瀟å
åã管çç»é¢ã®ãã°ã€ã³æ©æ§ã«OneLoginã䜿ã£ãSSOã§ã®èªèšŒæ©æ§ãçšæããããã«ãNextAuthã§OIDCãå©çš ããŸããã NextAuth ãšã¯ãè€éãªèªèšŒã»èªå¯ã®åŠçãã©ããããŠæäŸããŠãããJavaScriptåãã©ã€ãã©ãªã®Auth.jsã®æŽŸçã©ã€ãã©ãªã§ãäžã§ãNext.jsçšã«ãã¥ãŒãã³ã°ããããã®ã®ååã§ãã ãã®NextAuthã䜿ã£ã瀟å
åã管çç»é¢èªäœã¯ãŸã 宿ããŠããªãç¶æ
ã§ã¯ãããŸãããPoCã®æ®µéã§OIDCã§ã®OneLoginãšNext.js補ã¢ããªã±ãŒã·ã§ã³ãšã®é£æºãåé¡ãªãè¡ããããšã確èªã§ããŠããã®ãŸãŸæ¬çªæå
¥ãè¡ãäºå®ã®ãããäž»ã«ãªããã®æææ±ºå®ãããããã玹ä»ããŸãã ä»åã®OneLoginãšç€Ÿå
åã管çç»é¢ã®ãã°ã€ã³æ©æ§ã§ã¯ãOneLoginãæäŸããŠããAppã® ãOpenID Connect (OIDC) Custom Connectorããå©çšããŠClient ID / Client Secrets / Issueræ
å ±ãçºè¡ ãããããã®æ
å ±ã NextAuthã®OneLogin Providerã®åœ¢åŒ ã«åãããŠå©çšãã圢ãåã£ãŠããŸãã ãã®ã¢ãŒããã¯ãã£ã§ã®å®è£
ïŒIDaaSããã¬ãŒã ã¯ãŒã¯éžå®ïŒããªãéžæããã®ãïŒããŸãšããADRïŒArchitecture Decision RecordsïŒãããã®ã§ãããããå
容ããµãã©ã€ãºãç®æ¡æžããããã®ã以äžã«èšèŒããŠãããŸã ãªãã¯ã©ãŠãåID管çãµãŒãã¹ïŒèªèšŒIDaaSïŒã¯OneLoginãå©çšããã®ãïŒ BASEå
ã®SSOç°å¢ã§OneLoginã䜿ã£ãŠããäºäŸãè€æ°ããããããããšåãããSSOç°å¢ãå©çšãããšèªèšŒãèªå¯æ
å ±ã®ç®¡çãå¹ççã«è¡ãããšèãããã ãªãOIDCã®å®è£
ã§NextAuthãå©çšããã®ãïŒ ä»åã管çç»é¢ãäœæãããããã¯ãã®ãããã¯ã·ã§ã³ã³ãŒãåŽã¯æ¢ã«Next.jsã§å®è£
ãããŠãããïŒããã³ããšã³ãã¡ã³ããŒã®äººæ°ãããŒã ã«å°ãªãäºããã£ãŠïŒåŠç¿ãã¹ãæè¡ã忣ãããªãããã«Next.jsãå©çšããããšã«ãããã Next.jsãå©çšããå Žåããã©ãŠã¶äžã§ã®å®è¡ãªã®ããµãŒããŒäžã§ã®å®è¡ãªã®ããã³ãŒãäžããå€å¥ãã¥ãããOAuth 2.0ïŒOIDCïŒã®éä¿¡ã¹ããããããçšåºŠé èœããŠãNextAuthã®APIçµç±ã§èªèšŒããŒã¿ãååŸããæ¹ãå
šäœåã®çè§£ããããããšèãããã ãªãOneLoginãšã®æ¥ç¶æ¹æ³ã¯SAMLã§ã¯ãªããOIDCãå©çšããã®ãïŒ åè¿°ã®è§£èª¬ããŒãã®éããOIDCã¯SAMLã®ä»£æ¿ã«ãªãããOAuth 2.0ã®ä»æ§ãæ¡åŒµããŠå®çŸ©ãããèªèšŒæ¹æ³ãSAMLã«æ¯ã¹ããšãŸã ãŸã å°å
¥äºäŸã¯å°ãªãããçŽè¿ã¯AWSãGitHubãAzureãGCPçæ§ã
ãªç®æã®èªèšŒæ¹åŒãšããŠå©çšãããŠããŠã2024幎æç¹ã§SAMLã§ã¯ãªãOIDCã§ã®å°å
¥ã«èžã¿åã£ãŠããåé¡ãªããšå€æã§ãããã OneLoginããOIDCèªèšŒçµç±ã§ååŸã§ããããŒã¿ïŒclaimïŒã®çš®é¡ãå¿
èŠååã§ããããšãããããååŸå¯èœãªããŒã¿ãšèšãé¢ã§ãOIDCã§åé¡ãªããšå€æã§ãããã ãã®URL ãã確èªã§ããJSONã® claims_supported ã®å€ ãã®ä»ãæ€èšãããéžæããªãã£ãããš SDKã«Auth0ã䜿ããã¿ãŒã³ OneLoginãšäœµçšããå ŽåãèªèšŒIDaaSïŒSSOæäŸãµãŒãã¹ïŒãäºéïŒ Auth0 â OneLogin ïŒã«ãªããAuth0ãšOneLoginãSAMLã§é£æºãããªããšãããªããã 瀟å
ã§ã®Auth0ã®å©çšäºäŸã¯ãªããŒãããæ¢çŽ¢ããã圢ã«ãªãããã®ã³ã¹ããæããããOneLoginãäœ¿ãæ¹ãå¹ççã ãšèãããã Auth0ã®SDKã«Next.jsãšExpress以å€ã®ãã®ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã®å®è£
ãã¬ãŒã ã¯ãŒã¯ãNext.jsã«ããéžæè¢ïŒNext.jsãžã®ããã¯ã€ã³ãé¿ããæ¹åïŒãšããŠããç¹ã«NextAuthãšæ¯ã¹ãå·®åããªãã£ããã NextAuthã䜿ãããOIDCã®éä¿¡ã¹ãããããã«ã¹ã¯ã©ãããããã¿ãŒã³ Next.jsäžã§ãã«ã¹ã¯ã©ããã§OIDCïŒOAuth 2.0 + IDããŒã¯ã³ïŒã®èªèšŒãããŒãå®è£
ããã®ã¯ãNext.jsãSSRãšCSRã©ã¡ããæŽ»çšããŠã¢ããªã±ãŒã·ã§ã³ãäœæãããã¬ãŒã ã¯ãŒã¯ã§ãã以äžãã³ãŒãã®è€éæ§ãé«ãŸããããããã®ããããã«ã¹ã¯ã©ããå®è£
+ ãã®ã¡ã³ããã³ã¹ãšãNextAuthã©ã€ãã©ãªã®ããŒãžã§ã³ã¢ããçã®ã¡ã³ããã³ã¹ã³ã¹ããæ¯èŒãããšãã«åŸè
ã®ã»ããã³ã¹ããäœããšèãããã èªèšŒãID/Passwordã§ãã«ã¹ã¯ã©ãããããã¿ãŒã³ å
¥éè·è
管çãã»ãã¥ãªãã£è匱æ§ãç£ãŸãªãå®è£
ãé©åãªã¢ã¯ã»ã¹ã³ã³ãããŒã«ãå®çŸããããã«ãOneLoginã®SSOåºç€ã®äžã«ä¹ããåœ¢ã«æ¯ã¹ãŠã³ã¹ãããããããããšå€æãããã ãããã« ãããŸã§ãOIDCãšããæè¡ã«ã€ããŠé¢é£ããŒã¯ãŒããå«ãã玹ä»ãšBASE BANKããŒã ã®äžã§ã©ã®ããã«å©çšããã®ãã玹ä»ãããŠããã ããŸããã ä»åãŒãããOIDCãšããæè¡ãåŠã³ã€ã€ãå°å
¥ã®ã¡ãªããã»ãã¡ãªãããªã©ãæŽçããŠããŸããããéåžžã«äŸ¿å©ãªæè¡ã§é©å®æŽ»çšããŠãããããªãšæããŸããã ãã®ããã«ãæ°æ©èœéçºãæ°èŠäºæ¥ãªã©ã¯ãã¡ããã®ããšããã«ãµã€ã¯ã«ãšã³ãžãã¢ãšããŠèšæž¬åºç€ãç€ç³ã«ããããã®éçºãéçºäœéšã®åäžã®ããã®éçºãªã©ãªã©âŠæ§ã
ãªéçºãå°äººæ°ã§æŽ»çºã«è¡ãããŠãããæ
ã«ãé©åã«èª¿æ»ã»èšèªåããããšã§æè¡éžå®ãä»»ããŠããããã£ã³ã¹ãå€ãBASE BANKããŒã ã«ããèå³ãæ¹§ããæ¹ã¯ãã²ã«ãžã¥ã¢ã«é¢è«ãªã©ã«ãå¿åããã ãããšå¬ããã§ãïŒ gatchan0807ãšããŠã¯ãäžç·ã«BASE BANKããŒã ã®ããã³ããšã³ããçãäžããŠãããæ¹ããšã£ãŠãæ±ããŠããŸãïŒ XïŒæ§ TwitterïŒ ã®DMããªãã©ã€ãªã©ã§ãåé¡ãªãã®ã§ããæ°è»œã«ã声ãããã ãããïŒ åç
§ããWebããŒãž æåŸã«ããã®èšäºãæžãã«ããã£ãŠåç
§ãããŠé ããããŒãžã玹ä»ããŠãã®èšäºãç· ããããããšæããŸããç¥èãå
¬éæ
å ±ã«ããŠãã ãã£ãå
人ãã¡ã«æå€§éã®æè¬ããã®å Žã§ãäŒãåºæ¥ãã°ãšæããŸããããããšãããããŸããïŒ https://www.openid.or.jp/document/ https://openid.net/developers/how-connect-works/ https://www.onelogin.com/jp-ja/learn/oidc-vs-saml https://www.cloudgate.jp/glossary/saml.html https://boxil.jp/mag/a2950 https://admina.moneyforward.com/jp/blog/saml-sso https://solution.kamome-e.com/blog/archive/blog-auth-20221108/ https://logmi.jp/tech/articles/322829 https://img.logmi.jp/article_images/JCf94mRZseDVe6Dq2CiBU8.jpg https://www.slideshare.net/tkudo/openid-connect-devlove https://qiita.com/TakahikoKawasaki/items/8f0e422c7edd2d220e06
ã¯ããã« ããã«ã¡ã¯ãããã¯ãšã³ããšã³ãžãã¢ã®@zawaã§ãã ç§ã¯å
¥ç€Ÿä»¥æ¥ã1幎ã»ã©ã·ã§ãããªãªãžãã«ã®ãã¡ã³ããŒã·ãããïŒäŒå¡å¶åºŠïŒãéèšã§ãããã¡ã³ããŒã·ããAppãã®éçºã«æºãã£ãŠããŸããã å°ãåã«ãªããŸããã2024幎2ææ«ã«ã¡ã³ããŒã·ããAppã®ç¹å
žäº€ææ©èœããªãªãŒã¹ããŸããã ãªãªãŒã¹å
容ã®è©³çްã¯ãã²ãã¡ããã芧ãã ããïŒ baseu.jp ã¡ã³ããŒã·ããAppã¯ãã¢ãžã¥ã©ãŒã¢ããªã¹ã®ã¢ãŒããã¯ãã£äžã«æ§ç¯ããŠãããã¢ãžã¥ãŒã«å
éšã§ã¯ãã¡ã€ã³é§åèšèšïŒä»¥äžãDDDïŒãæ¡çšããŠããŸãã å
æ¥å
¬éãããåç»ã®äžã§ã玹ä»ããŠããŸãã®ã§ããèå³ãããæ¹ã¯æ¯éã芧ãã ããã 【前編】クリーンアーキテクチャの柔軟性を生かしたメンバーシップAppの開発の道筋 - YouTube 【後編】クリーンアーキテクチャの柔軟性を生かしたメンバーシップAppの開発の道筋 - YouTube æ¬èšäºã§ã¯ãåããŠDDDãæ¡çšããããŒã ãçŽé¢ãã課é¡ãšããŸãããããã©ã®ããã«å
æããŠãã£ãã®ãããäŒãããããšæããŸããäœãåèã«ãªãããšãããã°å¹žãã§ãïŒ ãããžã§ã¯ãã®æŠèŠ ã¡ã³ããŒã·ããAppã®éçºã¯ã次ã®3段éã§ãªãªãŒã¹ãã1st~3rdãŸã§ã®ç·æéã¯1.5幎ã»ã©ããããŸããã 1stïŒã¡ã³ããŒã·ãããéèšã§ããæ©èœ 2ndïŒã·ã§ãããªãªãžãã«ã®ãã€ã³ãã貯ããããæ©èœ 3rdïŒè³Œå
¥æã«è²¯ãŸããªãªãžãã«ãã€ã³ããšãã·ã§ããã§èšå®ããç¹å
žã亀æã§ããæ©èœ é åãåããŠã³ã³ããªã¯ãããªãããã«ãã€ã€ã2ããŒã äœå¶ã§éçºãè¡ã£ãŠããŸããã ãšã³ãžãã¢ã ãã§ã15人ååŸã¯é¢ãã£ãŠãããããªãå€ãã®äººãé¢ãã£ãŠãããããžã§ã¯ãã§ããã ç§ã¯1stã®éäžããããŒã ã«åå ããäž»ã«ã·ã§ãããªãŒããŒããåãã®æ©èœéçºãæ
åœããŠããŸããã 1stã2ndã§åŸãåŠã³ åãã®ãã¡ã¯ãããŒã ã§ã®èŒªèªäŒãçµç¹å
ã®æèè
ãžã®çžè«ãéããŠãåŸã
ã«DDDã«é¢ããçè§£ãæ·±ããŠãããŸããã 2ndã®ãªãªãŒã¹åŸã®æ¯ãè¿ãã®äžã§ãã©ãããã°ããã«æ¹åã§ãããã«ã€ããŠãå
·äœçãªæ¯ãè¿ããè¡ããŸããã ããŒã¿ã¢ããªã³ã°ãšãã¡ã€ã³ã¢ããªã³ã°ã®èª€è§£ãšãã®åœ±é¿ ãŸãã1stã2ndã§ã¯ãããŒã¿ã¢ããªã³ã°ãšãã¡ã€ã³ã¢ããªã³ã°ã®ããããã®ç®çãæ£ããçè§£ã§ããŠããªãã£ããããšãã話é¡ãåºãŸããã ãã¡ã€ã³ã¢ããªã³ã°ã§ã¯ãã¡ã€ã³é åã«çŠç¹ãåœãŠãŠäŒè©±ãããã¡ã€ã³é åãžã®çè§£ãæ·±ããããšãéèŠã§ãããç§ãã¡ã®ããŒã ã¯ããŒã¿ã®æ°žç¶åãå
·äœçãªããŒã¿æ§é ã«é¢ããè°è«ã«åã£ãŠããŸããã äºåã«ããŒã¿ã¢ããªã³ã°ã®å匷äŒãè¡ããããŒãã«æ§é ãäºåã«æ€èšãã圱é¿ããã£ãŠãããšã³ãã£ãã£ãå€ãªããžã§ã¯ããç¹å®ããåŸããããã®ãšã³ãã£ãã£ã®æ°žç¶åãå¿
èŠãããã©ã®ã¿ã€ãã³ã°ã§æ°žç¶åãã¹ããããã©ã®ãããªããŒã¿æ§é ãé©åãããšããæ°žç¶åã®èгç¹ãè°è«ã®äžå¿ã«ãªã£ãŠããŸãããã¡ã€ã³ã®æ¯ãèããã«ãŒã«ã«ã€ããŠååãªæ€èšãè¡ãåã«ãã¡ã€ã³ã¢ãã«ã®å®è£
ã«é²ãã§ããŸããŸãããåŸã«ãªã£ãŠãããæ°žç¶åãšãã¡ã€ã³ã¢ãã«ã¯å¥ã
ã«èããã¹ãã ã£ãããšããããšã«æ°ã¥ããŸããã ããã«ãã£ãŠã次ã®ãããªå®è£
ã«ãªã£ãŠããŸãããªããžã§ã¯ãã®æŽåæ§ãä¿ã¡ã¥ãããä¿å®æ§ãäœãäžã«çè§£ãã¥ããå®è£
ã«ãªã£ãŠããŸããŸããâŠð¢ ãã¡ã€ã³ã«ãŒã«ãæ¯ãèãã«ã€ããŠæ·±ãèããããšãã§ããªãã£ãçµæãæ¬æ¥ãã¡ã€ã³ã¢ãã«ã«ããã¹ãå®è£
ãã¢ããªã±ãŒã·ã§ã³å±€ããã¡ã€ã³ãµãŒãã¹ã«æŒããŠããŸãããšããã£ãã éçŽã«ã€ããŠè°è«ããŠããªãã£ãçµæãããŒãã«ãšRepositoryã1察1ã«ãªã£ãŠããããããžãã¯ã®çœ®ãå Žæã«å°ãããšããã£ãã äŸãšããŠãã¡ã³ããŒã·ããã®ç·šéãããéã®ã¡ã€ã³ç»åã®ç»é²/åé€ããžãã¯ã¯ãã¢ããªã±ãŒã·ã§ã³å±€ã«æ¬¡ã®ããã«å®è£
ããŠããŸãããïŒâ ïžãµã³ãã«ã³ãŒããªã®ã§å®éã®å®è£
ãšã¯å€§ããç°ãªããŸãïŒ åœæã¯ææ¢ãã®äžãã¹ããŒãæãæã£ãŠå®è£
ããŠããã®ã§èŽãæ¹ãªãã®ã§ãããæ¬æ¥ãã¡ã€ã³ã¢ãã«æ¯ãèãã®äžã§å®è¡ãããã¹ãããžãã¯ããã¢ããªã±ãŒã·ã§ã³å±€ã«æŒãåºãŠããŸã£ãããšã§ããã¹ãã®ãããããä¿å®æ§ãæãªãããŠããŸããã /** * ãªã¯ãšã¹ãã«ç»åURLãååšããŠããªããšã * ã» æ¢ã«ç»åãä¿åãããŠããå Žåã¯åé€ãã * ã» ç»åãä¿åãããŠãããŠããªãå Žåãäœãããªã * * ãªã¯ãšã¹ãã«ç»åURLãååšããŠãããšã * ã» æ¢ã«ä¿åãããŠããç»åããããšã * ã» åãå Žåãäœãããªã * ã» ç°ãªãå Žåãå€ãç»åãåé€ããŠæ°ããç»åãä¿åãã * ã» ç»åãä¿åãããŠããªããšããæ°ããç»åãä¿åãã */ // ãªã¯ãšã¹ãã®ç»åURLãååŸ $requestImageUrl = $request- > getImageUrl(); // ããŒã¿ã¹ãã¢ãããã¡ã³ããŒã·ãããååŸ $membership = $this- > membershipRepository- > find($membershipId); // ããŒã¿ã¹ãã¢ãããç»é²æžã¿ã®ã¡ã€ã³ç»åURLãååŸ $savedImageUrl = $this- > mainImageRepository- > find($membership- > getId()); if (is_null($requestImageUrl)) { if (!is_null($savedImageUrl)) { // ç»åãä¿åãããŠããå Žåãåé€ $this- > s3ImageRepository- > delete($savedImageUrl); } // ç»åãä¿åãããŠããªãå Žåãäœãããªã } else { if (!is_null($savedImageUrl)) { if (!$requestImageUrl- > equals($savedImageUrl)) { // ä¿åãããŠããç»åãç°ãªãå Žåãå€ãç»åãåé€ããŠæ°ããç»åãä¿å $this- > s3ImageRepository- > delete($savedImageUrl); $this- > s3ImageRepository- > save($requestImageUrl); $this- > mainImageRepository- > save($requestImageUrl); } // åãå Žåãäœãããªã } else { // ç»åãä¿åãããŠããªãå Žåãæ°ããç»åãä¿å $this- > s3ImageRepository- > save($requestImageUrl); $this- > mainImageRepository- > save($requestImageUrl); } } // ã¡ã³ããŒã·ãããä¿å $this- > membershipRepository- > save($membership); ã¢ããªã³ã°ãžã®ãã£ãŒããã㯠å®è£
ãããã¡ã€ã³ã¢ãã«ã«ã€ããŠã䜿ãã¥ãããä¿å®æ§ã®èгç¹ã§ã®éåæãæãã€ã€ããä¿®æ£ããããšãã§ããªãã£ãããšã«é¢ããŠããéäžã§ç«ã¡æ¢ãŸãæéãæ¬²ããã£ãããšãã話é¡ãåºãŸããã ãã¡ã€ã³ã¢ãã«ãå®è£
ããå®éã«ãŠãŒã¹ã±ãŒã¹ãã䜿ã£ãŠã¿ãŠããã®çµæãã¢ããªã³ã°ã«ãã£ãŒãããã¯ãããµã€ã¯ã«åãããšãéèŠãªã®ã¯çè§£ããªããããå®åã®äžã§åãã¡ã€ã³ã¢ããªã³ã°ãããããšèšãåºãããšã¯äžå®ã®ããŒãã«ãããããšãæ¯ãè¿ãã®äžã§ããããŸããã ãã¡ã€ã³ã¢ãã«ã¯è²ã
ãªãŠãŒã¹ã±ãŒã¹ãã䜿ãããã®ã§ãåã¢ããªã³ã°ãããå Žåãèªèãåãããããæ¹ä¿®ããã³ã¹ããé«ããªãã®ã§ã¯ãšæããŠããŸããçµæãšããŠä¿®æ£ããã¢ã¯ã·ã§ã³ãã§ããªãã£ãã®ã§ã¯ãªãããšæãããŸãã 3rdã§ã¯ã©ããªã£ãã 2ndãªãªãŒã¹åŸã®å
šäœæ¯ãè¿ãã§ããŸããããªãã£ãéšåã«ã€ããŠæ¯ãè¿ãããšãã§ãã3rdã§ã¯æ¹åããããšãã§ããŸããïŒ 3rdã§ã¯ããŒã¿ã¢ããªã³ã°ãšãã¡ã€ã³ã¢ããªã³ã°ãåããŠèããæåãããã¡ã€ã³é åã«çŠç¹ãåœãŠãèšèšãããåããã§ããŸããããŠãŒã¹ã±ãŒã¹ãããšã«ããšã³ãã£ãã£ãå€ãªããžã§ã¯ããæ¢ãåºãäœæ¥ããããŠãã¡ã€ã³ã«ãŒã«ãæ¯ãèããéçŽã«ã€ããŠãæ·±ãèããããšãã§ãããšæããŸãã ãããŸã§ã¯ããã¡ã€ã³ã¢ããªã³ã°å³ã¯ãã¯ã€ãããŒãããŒã«ã§äœæãããŠããŸããããäœæããã¢ããªã³ã°å³ã¯æç¢ºãªç®¡çæ¹æ³ã決ãŸã£ãŠããããã§ã¯ãªããã³ãŒãã«èœãšã蟌ãã åŸã¯äœ¿ãæšãŠããããªã±ãŒã¹ããããŸããããã®ãããè°è«ã«åå ããŠããªããšãã©ã®ãããªçç±ã§ã©ã倿ŽããããããšãŠã远ãã¥ããç¶æ³ã§ããã åã¢ããªã³ã°ãæ°è»œã«ãããããããããã«ã3rdã§ã¯mermaidã§æžããŠGit管çããããã«ããŸãããGit管çããããšã§ã倿Žå±¥æŽã远ãããããªãã倧ããªå€æŽã§ãªããã°å
±æã¯PRã§æžãããã«ãªãããã¡ã€ã³ã¢ãã«ã®ä¿®æ£äœæ¥ã以åãããæ°è»œã«è¡ããããã«ãªããŸããã ã¡ã³ããŒã·ããç¹å
žç»é²ã§ã¯ãç¹å
žç»åãç»é²ããããšãã§ããŸããç»åç»é²ã¯1stã§å®è£
ããã¡ã³ããŒã·ããã®ã¡ã€ã³ç»åã®ãã¡ã€ã³ã¢ãã«ãæµçšã§ããã°è¯ãã£ãã®ã§ãããå
ã»ã©ã®äŸã®ãšãããããžãã¯ãã¢ããªã±ãŒã·ã§ã³å±€ã«æŒãåºããŠãããæµçšããã®ãé£ããç¶æ
ã§ãããããã§ãåã¢ããªã³ã°ããçŽããŠããªãã¡ã¯ã¿ãããŸããã ã¡ã³ããŒã·ããã®ã¡ã€ã³ç»åã¯ã¡ã³ããŒã·ãããšåãã©ã€ããµã€ã¯ã«ããã€ãããã¡ã³ããŒã·ããéçŽã«ãŒããšããã¡ã€ã³ç»åã¯ãã®éçŽã®äžã«å«ããããšã«ããŸããã ããã«ãããã¡ã³ããŒã·ããã®ç·šéããžãã¯å
ã«ãç»åã®ç»é²/åé€ã®ããžãã¯ãéã蟌ããããšãã§ããã¢ããªã±ãŒã·ã§ã³å±€ããšãŠãã·ã³ãã«ã«ãªããŸããð // ãªã¯ãšã¹ãã®ç»åãã¡ã€ã«åãååŸ $requestImageFileName = $request- > getImageFileName(); // ããŒã¿ã¹ãã¢ãããã¡ã³ããŒã·ããéçŽãååŸ $membership = $this- > membershipRepository- > find($membershipId); // ã¡ã³ããŒã·ããéçŽãæã€ãç»åãã¡ã€ã«æ
å ±ãååŸ $savedImageFileName = $membership- > getMainImageFileName(); $membership- > edit( $request- > getName(), $request- > getDescription(), $requestImageFileName, ); if (!$membership- > isSameMainImageFileName($savedImageFileName)) { $this- > s3ImageRepository- > save($shopId, $savedImageFileName, $requestImageFileName); } // ã¡ã³ããŒã·ããéçŽãä¿å $this- > membershipRepository- > save($membership); ããã¢ããªã³ã°ãã§ãããšãè€éããªããžãã¯ããã¡ã€ã³ã¢ãã«ã«éã蟌ããããšãã§ããã®ã§ãã¢ããªã±ãŒã·ã§ã³å±€ã§ã¯æ¯ãèããåŒã³åºãã°ããããšãŠãã·ã³ãã«ã«ãªãäžã«ã責任ãæç¢ºãªã®ã§ããšãŠããã¹ãããããããªããŸããã詊è¡é¯èª€ããŠããã¢ãã«ãã§ããŠããã¯å®è£
é床ãäžãã£ãŠãã£ãããã«æããŸãïŒ äžæ¹ã§æ£è§£ã®ãªããã¡ã€ã³ã¢ããªã³ã°ã«ãã ãããããŠããŸããæéãããéããŠããŸã£ãŠããããïŒãšããæèŠããããŸãããã©ããŸã§äœã蟌ãã¹ããªã®ãããã®èŸºãã¯ãšãŠãå¡©æ¢
ãé£ãããšããã ãªãšæããŸããã æåŸã« ç§èªèº«ããããŸã§ã®çµéšã§ãèšèšã«ã€ããŠãããŸã§æ·±ãèããããšã¯ãªãã£ãã®ã§ããããã®ãããžã§ã¯ããéããŠãããŒã å
šäœã§DDDãOOPã«å¯Ÿããçè§£ãæ·±ãŸããä¿å®æ§ã®é«ãã·ã¹ãã ã®éçºãã§ããã®ã§ã¯ãªãããšæããŸãã é£ããææŠã§ã¯ãããŸããããã¢ãããŒã·ã§ã³ã®é«ãã¡ã³ããŒãšäžç·ã«çè§£ãæ·±ããªããéçºãã§ããããšããšãŠãè¯ãçµéšãšãªããŸããïŒ ãŸããã¹ã¯ã©ã éçºãæ¡çšããæ¯ãè¿ããéèŠããããšã§ã1.5幎ã«ãããé·æãããžã§ã¯ãã®äžã§ãã1stã2ndã3rdãšå段éã§ä»¥åã®æ¬ ç¹ãæ¹åããªããåã«é²ãããšãã§ãããšæã£ãŠããŸãã æåŸã«ãªããŸãããBASEã§ã¯äžç·ã«åããšã³ãžãã¢ãç©æ¥µæ¡çšäžã§ãïŒ ä»å玹ä»ãããããªã¢ãžã¥ã©ã¢ããªã¹ããã¡ã€ã³é§åèšèšã«å°ãã§ãèå³ãæã£ãŠããã ããæ¹ããããããã²ãé£çµ¡ãã ããïŒ open.talentio.com
ããã«ã¡ã¯ãBASE BANKã®02 ( @cocoeyes02 )ã§ãã 2024/04/13ïŒåïŒã«éå¬ãããPHPã«ã³ãã¡ã¬ã³ã¹å°ç°å 2024ã«ç»å£ããŠããŸãããä»åã®èšäºã§ã¯ç»å£ã«ã€ããŠã®ã³ã¡ã³ããšãäŒå Žã®æ§åã«ã€ããŠãå±ãããŸãïŒ ä»åã®ã»ãã·ã§ã³ LTæåŸã®ããªãåããŸããïŒããšããšå°å
ãå°ç°åã«è¿ããä»åã®ã«ã³ãã¡ã¬ã³ã¹ã§ã¯ ãå°ç°åã£ããæ ã§ã®ç»å£ãšãªããŸããïŒ speakerdeck.com PHP8.2 / 8.3ã®æ°æ©èœã§ãã Random\Randomizer ã¯ã©ã¹ã«ã€ããŠãæéããããéãã³ãŒããå®è¡çµæãšããããŠãã²ããããŠãŒã¹ã±ãŒã¹ã話ããŸããïŒ ä»åã®ããŒã¯ã§ãããªã Random\Randomizer ã¯ã©ã¹ãžã®çè§£ãæ·±ãŸããŸããããããã¯ãã³ãŒããOSSã©ã€ãã©ãªã§äœ¿çšããŠããPHPã®ããŒãžã§ã³ã«ãã£ãŠã¯ãRandom\Randomizer ã¯ã©ã¹ã䜿ã£ãåŠçãžãšæžãæãã§ããªãããæ©äŒã䌺ã£ãŠã¿ãŠããããªãšæããŸããïŒ ãŸããä»åã®LTã§ã¯ãçè§£ãããããçŽåŸãããããåªå
ãããããæ¥åžžçãªãŠãŒã¹ã±ãŒã¹ãã¡ã€ã³ã«æ±ããŸããã æ±ã£ãŠããæ¥åæ¬¡ç¬¬ã§ã¯ããããã¯ãã³ãŒãäžã§ä¹±æ°åŠçã䜿çšããæ©äŒã¯ãããããããšæããŸãããã²ã¹ã©ã€ãã«èŒã£ãŠããä»å䜿çšãããªããžããªãã PHP Playground ã®URLãããæãåãããŠçè§£ãæ·±ããŠã¿ãŠãã ããïŒ äŒå Žã®æ§å äŒå Žã¯å°ç°åãªãã§ã¯ã®äœéšãå€ãã£ãã§ãïŒ åããŒã¹ã³ãŒããŒã«èšªãããšãå°ç°åãå°ç°åè¿èŸºã®ãèåãããããŸããã ãŸããPHPã«ã³ãã¡ã¬ã³ã¹å°ç°åã®ã¹ãã³ãµãŒããŒã¹ä»¥å€ã«ããå°ç°ååžç§»äœçžè«ããŒã¹ããããŸããã å°ç°ååžåœ¹æã®æ¹ã
ããå°ç°ååžã«äœãäžã§åèãšãªãæ
å ±ãæ§ã
ãªèгç¹ã§æããŠãããããŒã¹ã§ããïŒãªãŒããã³ã°ãèããŠãããäžçªæåã«å°ç°ååžç§»äœçžè«ããŒã¹ã«é§ã蟌ã¿ãŸããã å°ç°ååžã®ããŒã¹ã«ã¯é€æ²¹ããã¹ãã眮ããŠãããŸãð #phpcon_odawara pic.twitter.com/2yEF2AApBU — PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å (@phpcon_odawara) 2024幎4æ13æ¥ ãã£ã¡ãåèã«ãªã£ãïŒã»ãã»ãïŒ #phpcon_odawara https://t.co/RABzGlur4b — 02 (@cocoeyes02) 2024幎4æ13æ¥ ãŸããã¹ãã·ã£ã«ã²ã¹ããšããŠã å°ç°ååžèгå
PRãã£ã©ã¯ã¿ãŒã®ãããŸã ãç»å ŽããŸããïŒ LTã§æéåãã«é³Žã£ãããã©ãå©ãããããŠãããŸããïŒLTäžã®02ãšãããŸããšã®ããŒã·ã§ããã§ãïŒãã®ããšç¡äºïŒïŒïŒæéåãã§ãã©ããªããŸããïŒã 02ããã®æ¹ãã§ããã #phpcon_odawara pic.twitter.com/Kv9A4mdPjb — ããã/Kaga (@TAKA_0411) 2024幎4æ13æ¥ æåŸã« ã¹ã¿ããã®æ¹ã
ã«ã¯æ¥åã§ãå¿ããã«ãé¢ããããå€ãã®æéãã«ã³ãã¡ã¬ã³ã¹æºåãžæ³šãã§ããã ããããšæããŸãããã®å ŽãåããŠåŸ¡ç€Œç³ãäžããŸãã å°ç°åæã®æº¢ãããŠããŒã¯ã§ãšãŠãçŽ æµãªã«ã³ãã¡ã¬ã³ã¹ã§ããïŒãŸãæ¥å¹Žãéå¬ãããããã²åå ãããã§ãïŒããããšãããããŸããïŒ æåŸã«ãBASE ã§ã¯çµ¶è³æ¡çšäžã§ãïŒäžèšãªã³ã¯ãããã²ã芧ãã ããïŒ binc.jp
ããã«ã¡ã¯ãBASEæ ªåŒäŒç€Ÿã®éçºæ
åœåœ¹å¡ããã€ãåäŒç€Ÿã§PAY.JPãæäŸããPAYæ ªåŒäŒç€Ÿã®åç· åœ¹ãããŠããè€å·ã§ãã JTCïŒJapanese Traditional CompanyïŒãªã©ãšåŒã°ãããããäž»ã«æ¥æ¬ã®æŽå²ããå€§äŒæ¥ã®DXåã®æèã«ãããŠããã€ã¢ãŒãã«ITãšããèãæ¹ããããŸããJTCããæ¢åã®å€§äŒæ¥ã¯ãSIerãæ§ç¯ããåºå¹¹ã·ã¹ãã ãITã®æ ¹å¹¹ãšããŠäºæ¥ãéå¶ããŠããŸããããæšä»å«ã°ããDXã®åãçµã¿ã«ãããŠãæ¬æ¥ã«ããã顧客æ¥ç¹ä»¥å€ã«ITã·ã¹ãã ã§ã顧客æ¥ç¹ãå®çŸããŠããããã®çµç¹ãæŽçããææ®µãšããŠãã€ã¢ãŒãã«ITãšããèãæ¹ã䜿ãããšãã§ããŸãã èãæ¹ãšããŠã SoR ïŒSystem of RecordïŒãšåŒã°ããããŒã¿ãèšé²ããããšã«éããçœ®ãæ¢åã®åºå¹¹ã·ã¹ãã ãšã SoE ïŒSystem of EngagementïŒãšåŒã°ãããšã³ããŠãŒã¶ãšã®çµã³ã€ããå®çŸããããã®ã·ã¹ãã ã«åé¡ããåè
ãããã·ã§ã³ã¯ãªãã£ã«ã«æ§ãæåªå
ã«ãåŸè
ãã¢ãžã£ã€ã«ããã»ã¹ãªã©ã䜿ã£ãŠã¹ããŒãéèŠã«ãããšããåé¡ã§ãã ãã®ïŒã€ã®ã·ã¹ãã åé¡ãèŠæ¥µããäžã§ãããããã«èŠåã£ãéçºææ³ãçµç¹ãèããã¹ããšããã®ããã€ã¢ãŒãã«ITã§èªãããŠããéšåã§ãDXãéã㊠SoE ã®ã·ã¹ãã ãå®çŸããããã«å
補åçµç¹ãäœãããšãç®æãå Žåã¯ããã®ããšãžã®æ·±ãçè§£ãäžå¯æ¬ ã§ãã ãã§ã«ã€ã³ã¿ãŒãããã«å¯Ÿããæ·±ãç¥èŠãæã£ãŠãã人ãã¡ã¯æŽ»èºãããŠããŠãäŸãã°ã¯ã¬ãã£ã»ãŸã³ã§CTOãããããŠããå°éããããŸãã€ãªã³ã°ã«ãŒãã«ãããŠãæ¬äœã®CTOã§ããå±±åŽããããã€ãªã³ãã¯ã¹ãã®æšœç³ãããæŽ»èºãããŠãã代衚çãªäºäŸãšããŠæãããããšèããŠããŸãã note.com zenn.dev æŽã«ãæè¿ã¯SoIïŒSystem of InsightïŒãšããèšèããããäž»ã«ããŒã¿åæã«ããã¢ãããŒãã®ããšã瀺ãããã§ãããçæAIãæŽ»çšãå«ããŠAIãã€ãã£ããªã·ã¹ãã åé¡ããã£ãŠããããããããŸãããã BASE瀟ã«ããã SoE , SoR ã®èãæ¹ ããŠæã
ãBASEã°ã«ãŒãã¯æãç«ã¡ãBASEãšããç°¡åã«ãããã·ã§ãããäœãããšãããµãŒãã¹ããå§ãŸããŸãããã·ã³ãã«ãã€ã¹ããŒããã©ã³ãã€ãã£ããç»é²ããã°ããã«æ±ºæžã䜿ãããšãããµãŒãã¹æ§æã§ãéå§æç¹ãã奜è©ãããã ãã¹ã ãŒãºãªãµãŒãã¹æé·ãéå§ããŸããã 代衚ã®é¶Žå²¡ã¯èµ·æ¥åœæãäŒåŠããŠãã倧åŠçã§ããããããã£ãè¥ãã¹ã¿ãŒãã¢ããã«ãããåã¡çã¯ãåºæ¬çã« SoE ã®ãããã§ãã·ã§ãã«ã«ãªããªããšæç«ããŸãããBASEãè¥ãçµç¹ãè¥ãéçºã¡ã³ããŒã®ããŒã ã§å€ãã®ã·ã§ãããªãŒããŒããã«ãåºãäœã£ãŠããã ãããšã§ããµãŒãã¹ã®ãã¬ãŒã³ã¹ãäžãã£ãŠãããJTCã§ãã倧æäŒæ¥ã®ããŒãããŒã·ããã®å®çŸãããªã¥ãŒã ã¡ãªããã«ããã³ã¹ãç«¶äºåãªã©ã«ç¹ãã£ãŠããããšã«ãªããŸãã ãããŠãæè¿ãBASEã®æµéç·é¡ãè¶
ããŠäŒžã³çãã«ãªã£ãŠããåœç€Ÿã°ã«ãŒãPAY瀟ãæäŸããPAY.JPã§ããããã¡ãã¯ã¯ã¬ãžããã«ãŒãã®æ±ºæžãµãŒãã¹ãšãªããŸããã¯ã¬ãžããã«ãŒãçªå·ãåãæ±ãããã®ã»ãã¥ãªãã£èªèšŒèŠæ Œã§ããPCIDSS ver4.0ã«ãã«æºæ ãã圢ã§ããµãŒãã¹æäŸãããŠããŸããPAY瀟ã®ä»£è¡šã®é«éãèµ·æ¥åœæã¯å€§åŠçã§ãBASE瀟ã«äžåºŠãžã§ã€ã³ããŠPAY.JPãç«ã¡äžããåŸã«å瀟åãã圢ã§åäŒç€ŸãšããŠç¬ç«ããŠããŸãã å
±ã«ã¹ã¿ãŒãã¢ãããšããŠèµ·æ¥ããŠãã¯ã©ãŠãããã€ãã£ãã«äœ¿ãããã³ãã£ãŒäŒæ¥ãšããŠã¹ããŒãã£ãªéçºãé²ããïŒç€Ÿã§ãããæ¹ããŠèããŠã¿ããšãçµç¹æ§æã ã£ãããµãŒãã¹ã®æ§é ãéããŸãã çŸåšã¯ãBASE瀟ã§éçºãé²ããŠãã賌å
¥è
åãã·ã§ããã³ã°ãµãŒãã¹ã®Pay IDããæåã¯PAY瀟ãæäŸããID決æžãµãŒãã¹ã§ãããã2021幎ã«ãªãã©ã³ãããŠä»¥éã¯ãBASE瀟ã«ãŠPay IDã¢ããªã®ããã¯ãšã³ãæ§é ãäœãçŽããŠããŸãããããªã£ãçµç·¯ãåœç€Ÿã«ãããæŽå²çãªæµããšããŠèããæã«ãå®ã¯èšèªåããããŠããªãäœããçç±ãšããŠããããããªãããšèããŠã¿ãŠãããã SoE ãš SoR ãšããåé¡ã§èããã¹ããªã®ã§ã¯ãªãããšæ°ãä»ããŸããã BASEãPay IDã¢ããªãšèšã£ãããšã³ããŠãŒã¶ã®ããã³ãã®æ¥ç¹ãæã€ãããã¯ãã SoE ãšããã·ã¹ãã ãããã¯ã©ã¡ãããšãããšBASE瀟ãåŸæãšããé åã§ããäžæ¹ã§ãã¯ã¬ãžããã«ãŒã決æžAPIã軞ã«ãµãŒãã¹å±éããPAY.JPã¯ããªã«ãããã·ã¹ãã ã®å®å®æ§ãæ±ããããããšããã¯ã¬ãžããã«ãŒãçªå·ã®ç¹çްãªåãæ±ãããããã¡ãŒã¹ããã©ã€ãªãªãã£ã ãšèãããšã SoR ã®ã·ã¹ãã åé¡ã«æŽçããæ¹ããã£ãããããŸãã BASEãšPAY.JPã¯ãã¯ã¬ãžããã«ãŒã決æžã«ããããã€ã¯ããµãŒãã¹ã®é¢ä¿æ§ã§ãããPAY.JPããèŠãBASEã¯ãPAY.JP APIã䜿ãäžå çåºãšããäœçœ®ä»ãã«ãªãããšããããæç¢ºã«ã¬ã€ã€ãŒãéãããšã¯èªèããŠããã®ã§ããã SoE ãš SoR ãšããåé¡ã§æŽçããããšãå¯èœã§ãã Pay IDããŒã ã§éçºããŠãããããšæãïŒPay IDïŒããšããBNPLãµãŒãã¹ã SoR ã®ã·ã¹ãã ãªã®ã ããããYELL BANKãšãããµãŒãã¹ã§ãBASEã®å©çšè
ã«è³éæäŸããããŠããã ããŠãBASE BANKããŒã ã SoR ã®ãµãŒãã¹ãšèšããã®ãããããŸããã BASEã°ã«ãŒãã¯ãPayment to the people, Power to the people.ããšããããã·ã§ã³ã§ããžãã¹ãèããŠããŸãããã·ã¹ãã ãšããé¢ããã SoE ãšããŠç«ã¡äžãã£ãBASEãšãããµãŒãã¹ã«å¯ŸããŠãããäºæ¥ã«æ·±ã¿ãåºããŠãããšããã®ãPAY.JP以éã«å§ãã SoR ã®ãµãŒãã¹ãæ°èŠäºæ¥ã ãšèãããšãJTCãšã¯ãŸãã§éã®ãã¯ãã«ã§ããã€ã¢ãŒãã«ITãšããèãæ¹ã«ã¢ãããŒãããŠãããšãèããããŸãã ããããJTCã«ããããã€ã¢ãŒãã«ITã¯ããŠã©ãŒã¿ãŒãã©ãŒã«éçºçã®æ¢åéçºããã»ã¹ã«æ°ã䜿ããããåŸãªãåé¡ã§ããã®ã«å¯ŸããŠãæã
ã¯ãã¯ã©ãŠããã€ãã£ãããªãã¶ãŒãããªãã£ãç¶ç¶çãããã€ã¡ã³ããã¢ãžã£ã€ã«éçºãªã©ããããç³»ãã³ãã£ãŒãšããŠã®æšæºçãªéçºç°å¢ãéçºããã»ã¹ãåããªãããã¹ããŒãã£ãã€ããã·ã§ã³ã¯ãªãã£ã«ã«ã«ãµãŒãã¹æäŸãããŠããããšãç¹åŸŽãšèšããŸããBASEãPAY.JPã倧äœãåããããªç°å¢ã§ä»äºãããŠããã®ã§ãããŸããã®æŽçãã§ããŠããŸããã§ããã ä»åŸããã®æ§é ã¯éç«ã£ãŠãã ãããå
·äœçã«éçºçµç¹ã«å¯ŸããŠã©ã圱é¿ããããšãããšããããã.... SoR ãš SoE ãé©åã«æèããŠããããšã§ãäœãéèŠããããšãããã©ã€ãªãªãã£ãå€ããããšãšçµç¹æ§é ã«åœ±é¿ããŠããããããªãããšæããŸãã äºæ¥ãšããåºåãã§çµç¹ãåãããã ãã§ãªããéçºãéçšã¹ããŒãã«ã圱é¿ãããšã³ãžãã¢ãéèŠããã¡ã³ã¿ãªãã£ã§çµç¹ãåããããšã«ãªãå¯èœæ§ã¯ååã«ãããšæã£ãŠããŸããããã«ã¯ãéçºãåŒã£åŒµãéçºçµç¹ãšãªãŒããŒãå¿
èŠã§ãããã«åããŠèª°ãã©ã掻èºããŠåã
ã®äºæ¥ãã¡ã€ã³ã®ããããšã³ãžãã¢ã«ãªã£ãŠããã®ãããšããããšã«ãªããšæããŸãã ã¿ããªã®ã絊æãäžããããã«ã¯ãäºæ¥ãéããŠäŒç€Ÿãæé·ãããããã®çµç¹æ§é ãããã€å¢ãããããšããã®ããšãŠãéèŠã§ããã®æŽçãããããšã§ãããã«åããŠé 匵ã£ãŠããæ§é ãäœãããšæããŸãã ãŸããå
šç¶éã話ãšããŠãäŸãã°è»¢è·ãã©ãããªã©ããã£ãŠãããšãéèç³»ã«ã¯è¡ããããªãããšæžãããŠããããšãããã®ã§ãããããã§èšãéèç³»ãšã¯ãããããJTCã«ãããåºå¹¹ã·ã¹ãã ãäœã£ãŠãSIerã§è¡ãããŠããã¬ã¬ã·ãŒãª SoR ã·ã¹ãã ã«ã¯æºãããããªããšããããšãªã®ã ãšæããŸãã æã
ã¯ãã¹ã¿ãŒãã¢ããããã³ãã£ãŒãšããŠã SoE ãšå€ããã¬éçºç°å¢ãããã»ã¹ã§ãããã·ã§ã³ã¯ãªãã£ã«ã«ãª SoR ã®ãã£ã³ããã¯ã¹ã·ã¹ãã ãäœã£ãŠãããšèãããšããã®ãéèç³»ã«ã¯è¡ããããªãããšããæ¢åã®äŸ¡å€èгãèŠããŠãããªããšãæ¡çšã«èŠåŽãç¶ãããšããããšã«ãªããŸããããããã«æã
ã¯å€ãã¡ãããšç ããäŒç€Ÿã§ãããïŒãšããããšããã£ãšãã£ãšã¢ããŒã«ããŠãããã°ãªããŸããã ã¡ãªã¿ã«å®éã®ãšããBASEã¯ã SoE ãš SoR ã®äž¡æ¹ã®èŠçŽ ãæã£ãŠããŠã倧éã®ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçããæ±ºæžã·ã¹ãã ãã·ã§ããã®å£²äžç®¡çã顧客管çã·ã¹ãã ãªã©ã® SoR çãªåŽé¢ãšãã¹ãã¢ããã³ããšããŠãŠãŒã¶ããªãã£éèŠã® SoE èŠç¹ã®äž¡æ¹ãæ
ã£ãŠããã®ãçŸå®ãªã®ã§ãBASEã¯BASEã§èããã¹ãå¹
ãåºããŠå€§å€ãªãã§ããã©ãã ããããITå
éšçµ±å¶ã§æ±ããããŠããããã·ã§ã³ã¯ãªãã£ã«ã«æ§ãšããŠãŒã¶ããªãã£éèŠã®ã¹ããŒãåã§åæ¹ã«æ±ããããéšåããéçºè
ãšããŠã®ãæ°æã¡çã«ã³ã³ããªã¯ãããã®ã¯ã SoE ãš SoR ã®äž¡æ¹ãæ±ããŠããã·ã¹ãã ã ããã ãšä»æ°ãä»ããŸãããããæ
ã«ããµãŒãã¹ã®å®å®éçšã«ã¯æè¡åãæ±ããããé¢çœã¿ããããšããã·ã¹ãã ã§ããã£ããããŸãã åœç€Ÿã§æŽ»èºãããšã³ãžãã¢ããéèãECåºèº«ã®äººãããã°ããœãŒã·ã£ã«ã²ãŒã åºèº«ã®äººããããšããã®ã¯ããã®äž¡é¢ããããããªãã ãšæããŸãããããªå¹
åºãããŒããã©ãªãªãæã€BASEã°ã«ãŒãã§ããããããèå³ãæã£ãŠããã ããæ¹ãããã£ããã£ããæ¯éãã話ããŸãããã open.talentio.com
ã¯ããã« ããã«ã¡ã¯ãBASEã§ããã¯ãšã³ããšã³ãžãã¢ãšããŠåããŠãããªãªã( @toshi-oliver )ãšç³ããŸãã æ®æ®µã¯ãBASEã®çºéãç°¡ç¥ã§ããããããçºéAppã®æ©èœæ¡åŒµã«åŸäºããŠãããŸãã BASEã«å
¥ç€ŸããŠããã¯ãšã³ããšã³ãžãã¢ã«è»¢åããŠããçŽ1幎3ã¶æã»ã©çµã¡ãPHPããªããžã§ã¯ãæåãDDDãã¯ãªãŒã³ã¢ãŒããã¯ãã£ãªã©æ§ã
ãªåéãåŠãã§ããŸãã ãããã®åéã«å€§ããé¢ããã€ãã³ãã Object-Oriented Conference 2024 ããã2024幎3æ24æ¥ïŒæ¥ïŒã«ã³ããçŠãçµãŠçŽ4幎ã¶ãã«ãè¶ã®æ°Žå¥³å倧åŠã«ãŠéå¬ãããŸããã4幎åã«åå ãããã£ãã®ã§ããéœåãæªãåå ã§ãããä»åæºãæããŠåå ããããšãã§ããŸããã Object-Oriented Conference 2024ãšã¯ ããã°ã©ãã³ã°èšèªã®çžããè¶
ããŠããªããžã§ã¯ãæåã«é¢é£ããã»ãã·ã§ã³ãéãŸã£ãã€ãã³ãã§ãã ooc.dev ãœãããŠã§ã¢èšèšã§æåãªå¢ç°äºšãããç°äžã²ããŠããããæç¬ å
宣ãããããé§åãããªã©ã人æ°ã®ããæè¡æžã®èè
ãç»å£ããã貎éãªã€ãã³ãã§ããã åå ããã»ãã·ã§ã³ 1. ãªããžã§ã¯ãæåã®ãªã»ãªãªãšã³ããŒã·ã§ã³ãïœæŽå²ãæ¯ãè¿ããAIæä»£ã«åããªãã è±èµã®çŸœçç°ããã®åºèª¿è¬æŒã§ããã è¬æŒã®çµç€ã§äŒå Žå
¥ãããã®ã§ãå
šãŠã¯èŽè¬ã§ããŸããã§ããã 倧åŠã®è¬çŸ©ã®ãããªåœ¢åŒã§ããªããžã§ã¯ãæåã®æŽå²ãããªããžã§ã¯ãæåã®æŠå¿µã段éã«ã€ããŠèª¬æãããŸããã äžã§ãå°è±¡ã«æ®ã£ãã®ããä»¥äžæ·»ä»ç»åã®OOP5段éã§ãã ïŒæ®µéç®ä»¥éãéèŠã§ããããŸã§ã¡ãããšã§ããŠããªãå ŽåãïŒæ®µéç®ã®DDDã«ææŠããŠãæå³ããªããšã®ããšã§ããã ç§ã¯ãBASEã«å
¥ç€ŸããŠæ¬æ Œçã«ãªããžã§ã¯ãæåãDDDã«å
¥éããããããã®5段éãäžæ°ã«ãŸãšããŠåŠã³ããªããªãèŠåŽããŸããã çµç€ã®ä»¥äžã®ã¡ãã»ãŒãžã«æéãåããŸããã ãªããžã§ã¯ãæåã¯ææ®µã«ãããªãã§ãããç®æãå
ã¯ã æ°ãããµãŒãã¹ããããŠæªæ¥ãåµé ããããšã§ããã ã§ãã åããšãããæ³åããŠã¿ãã ãã®ãªããžã§ã¯ãã®è£ã§äœãåãã¯ãããããèããã°è¯ãã ãã®ãªããžã§ã¯ãã®ç®çãçè§£ããŠçŸå Žã»çŸç©ã§åŠã³èããã **ããã¯ãæ°ãããµãŒãã¹ããããŠæªæ¥ãåµé ããããšã§ãã** 2. çæAIã®äžç¢ºå®æ§ãšåãåãããã®ãªããžã§ã¯ãæåèšè𠿬ã€ãã³ãã®ã¹ãã³ãµãŒã§ããæ ªåŒäŒç€ŸAlgomaticããã®ã©ã³ãã»ãã·ã§ã³ã§ãã ãã®ã»ãã·ã§ã³ã«åå ãããšã©ã³ããã±ãããããããŸãã çæAIã¯äœã«äœ¿ããã®ã ãŠãŒã¹ã±ãŒã¹ æ±ãã«ããããŒã¿ãæ±ãããããã èŠæãªåéã®ç¥èãè£å®ããã«ã¯äœ¿ãã AAAAã¢ãã« çæAIããµãŒãã¹ã«å°å
¥ãã䜿ãéã¯ã以äžã®AAAAã¢ãã«ã軞ã«èãããšè¯ãããã§ããïŒ åè ïŒ automation agent advice augment çæAIãå°å
¥ããéã®é£ããç¹ ã¬ã¹ãã³ã¹ãé
ãããé«é¡ãªAPIãã©ãæ±ãã 䜿çšããAIããŒã«ãå€ããããšæã£ãæã«ããã€ã§ãåãé¢ããèšèšã«ããŠããããš 3. æŠç¥çDDDãåŸå€©çã«å®è·µããããã®è·³èºå speakerdeck.com DDDãšã¯ãã£ãããããšãŠããã¿ã¹èšèªã䜿ã£ãŠããã¡ã€ã³ãšãã¹ããŒããšäŒè©±ããŠããããã¯ããã³ãŒãã«èœãšã蟌ããµã€ã¯ã«ã DDDã«ã¯æŠç¥çDDDãšæŠè¡çDDDãšããåãæ¹ãããã æŠç¥ ãã¡ã€ã³çè§£ããã¡ã€ã³ã¢ããªã³ã° æŠè¡ ãã¡ã€ã³ã¢ããªã³ã°ãå®è£
ïŒæŠè¡çDDD = 軜éDDDïŒ DDDãåµã«äŸãããšãé»èº«ã¯æŠè¡ïŒçœèº«ã¯æŠç¥ïŒïŒ çãã¯ãããŸããããç§ãšããŠã¯ãé»èº«ã¯æŠç¥ãçœèº«ãæŠè¡ã§ãããšæããŸããã ãŽãªãŽãªæãåãããŠéçºããããšããè¡çºããããã£ãã«ããŒãã¿ã³ãã¯è³ªæåã®ããã«åµã®çœèº«ã ã飲ã¿ãŸããè¡çºã«äŒŒãŠããã®ã§ãæŠè¡çDDDã¯åµã®çœèº«âæå³äžæ æŠç¥çDDDã¯ãªãé£ããã®ã ãã¡ã€ã³ãšãã¹ããŒããããªã ããã¯ãã ããŠãé£ããããšããã ã©ããŸã§å·»ã蟌ãããããäºãã«é æ
®ãã ãã¡ã€ã³ãšãã¹ããŒããäžåš ãã¡ã€ã³ãšãã¹ããŒããäžåšã§ã©ãããã ãã¡ã€ã³ãšãã¹ããŒããããªããªãèªåããªãã°è¯ã ã©ããã£ãŠãã¡ã€ã³ãšãã¹ããŒãã«ãªãã ãšã«ããbizåŽãšã³ãã¥ãã±ãŒã·ã§ã³ããšã å§åçãªã€ã³ããã ã¢ãŠããããããŠããŒã ã«å
±æ ããã¥ã³ã¡ã³ããæ®ã ååããªãæ¥åãããããããããšãããã è·³èºåãšã¯ è·åãè¶
ããŠãããããªãããšãããããŸã§è¿œããããå ä»äºã ãããããªããšãã§ã¯ãªã奜å¥å¿ãå¿
èŠ ããããæŠç¥ãå¿
èŠããšã¯ããã軜éDDDã§ãã¡ãããšéçºãã§ããŠããã°ãããããã ãã¡ã€ã³ãšãã¹ããŒãã«èªåããªããšããçºæ³ãç®ããé±ã§ããã以åãèªåãæºãã£ãŠããã¡ã³ããŒã·ããAppã®éçºã§ãDDDãå®è·µããŠããŸããããæŠè¡DDDã«åŸåããŠãããããªæ°ãããŸãããããããçºæ³Appã§ã¯æŠç¥DDDãæèããŠããã¡ã€ã³ãšãã¹ããŒãã«ãªããããã®åãæ¹ã«ãã£ã¬ã³ãžããŠã¿ãããšæããŸãã 4. ã€ãã³ãã¹ããŒãã³ã°ã«ãããªããžã§ã¯ãã¢ããªã³ã°: ãªããžã§ã¯ãæåããã°ã©ãã³ã°ãžã®é©çš/éçºããã»ã¹ã®å€é·/ã¢ãŒããã¯ãã£ã®å€é© speakerdeck.com æè¡æžã ãã¡ã€ã³é§åèšèšå
¥é ããã ã¢ããã§ããã! ãã¡ã€ã³é§åèšèšã®åºæ¬ ãã®èè
ã§æåãªæç¬ å
宣ããã®ã»ãã·ã§ã³ã§ããã ã€ãã³ãã¹ããŒãã³ã°ãšã¯ ãã¡ã€ã³ã®çè§£ãæ·±ããããã®ã¯ãŒã¯ã·ã§ããææ³ã®ïŒã€ã§ãã ãã¡ã€ã³é§åèšèšã®æŠç¥çèšèšã®1éšã§ã 3. æŠç¥çDDDãåŸå€©çã«å®è·µããããã®è·³èºå ã§è°é¡ã«äžãã£ãæŠç¥çDDDãšæŠè¡çDDDã®æ©æž¡ããããã®ãã€ãã³ãã¹ããŒãã³ã°ã§ãã ããæ¹ãšããŠã¯ä»¥äžã§ãã ã€ãã³ããä»ç®ã«æžãåºã ã¢ããªã±ãŒã·ã§ã³ã䜿çšããéã«çºçããã€ãã³ããæžãåºããŸã ã€ãã³ããäžŠã³æ¿ã äžèšã®ã€ãã³ããäžŠã³æ¿ããŸã ã³ãã³ããéçŽãå€éšã·ã¹ãã ã远å ã³ãã³ããšã¯ãå®è£
ã§ãããšã¡ãœããã«çžåœããŸã éçŽãã€ãã³ãã¯ã¯ã©ã¹ã«çžåœããŸãã ããªã·ãŒãè¿œå æ³šæâ決æžã®éã§å®çŸ©ãããã«ãŒã«ã®ãããªãã®ãããªã·ãŒ äžèšã®æé ã«åŸã£ãŠãDevãšBizãéãŸã£ãŠãã£ã¹ã«ãã·ã§ã³ããŠãããŸãã ã€ãã³ããäžå¿ãšããŠæ¥åãããŒãæç¢ºåããããšã«ãã£ãŠã以äžã®ã¡ãªããã享åã§ããŸãã ãã¡ã€ã³ç¥èååšã®è§£æ¶ ã³ãã¥ãã±ãŒã·ã§ã³äžè¶³ã®è§£æ¶ å±äººåãé²ã 倿Žå®¹ææ§ã®äœäžãé²ã ã€ãã³ãã¹ããŒãã³ã°ãå°å
¥âãã¡ã€ã³ãçè§£ããããã«ã¯ãŒã¯ã·ã§ãããæŽ»çºâå
šäœåã®å¯èŠåâ仿§æžãèšèšæžã®èªçâå±äººåã®è§£æ¶âã¢ãžãªãã£åäžâä¿®æ£åã«ã€ãã³ãã¹ããŒãã³ã°ããããšããæåã®éžæ ãã ããçæç¹ãšããŠããã¡ã·ãªããŒã·ã§ã³åãšããã¡ã€ã³ãšãã¹ããŒãã«åå ããŠãããããšãå¿
èŠãšãªããŸãã ã¢ãŒããã¯ãã£éžå® ã€ãã³ãã¹ããŒãã³ã°ã广çã«åæ ããã¢ãŒããã¯ãã£ãšããŠãCQRS/Event SourcingããããŸãã æéã®é¢ä¿äžãã¢ãŒããã¯ãã£ã®è©³çްã«ã¯è§ŠããããŸããã§ããããCQRSã¯BASEã§ãäžéšåãå
¥ããŠããã®ã§ãEvent Sourcingãã¿ãŒã³ã¯éåžžã«è峿·±ãã£ãã§ãã å人çã«ã¯ãããããçºéAppã®ããã©ã«ãåãæ¥æ¬éµäŸ¿å¯Ÿå¿ã®èŠä»¶ããŸã å®ãŸã£ãŠããªãã®ã§ããã®ã€ãã³ãã¹ããŒãã³ã°ãåãå
¥ããŠã¿ãããšæããŸãããã©ããã®ã¿ã€ãã³ã°ã§æç¬ããã®ã¯ãŒã¯ã·ã§ããåå ããŠã¿ãããšããæãã匷ããªããŸããã 5. CQRS/Event Sourcingã·ã¹ãã å®è£
å
¥é 4. ã€ãã³ãã¹ããŒãã³ã°ã«ãããªããžã§ã¯ãã¢ããªã³ã° ã§ã話é¡ã«äžãã£ããCQRS/Event Sourcingã®ãã³ãºãªã³ã€ãã³ããšQ&Aã宿œãããŸãããç»å£è
ã¯ãããšãã
ãããã§ãã README ã«æ²¿ã£ãŠããã³ãºãªã³ãè¡ãªã£ãŠãããŸããã å人çã«æ°ã«ãªã£ãã®ããAWS Lambdaã§åããŠããReal Model Udapterã®éšåã§ãããã®åŠçã倱æãããšDynamoDBãšRDSã®ããŒã¿ã®æŽåæ§ã倱ãããã®ã§ãReal Model UdapteãåŠçã倱æããæã®ãªã«ããªãŒã«ã€ããŠãã¡ãããšèšèšããå¿
èŠããããšæããŸããã ãããç°å¢ãè¯ããªãã£ãããšãšçšæãããDockerfileãããŸãç«ã¡äžãããªãã£ããããéäžã§ãã³ãºãªã³ãæç¶ããŸãããããŸãã©ããã®ã¿ã€ãã³ã°ã§ãã£ã¬ã³ãžããããšæããŸãã 6. ã©ãŠã³ãããŒãã«ïŒOOPå¯èªæ§ãã¯ãã㯠ãªããžã§ã¯ãæåã«ã€ããŠãåå è
å
šå¡ã§ã©ãŠã³ãããŒãã«ãšããææ³ãçšããŠããã£ã¹ã«ãã·ã§ã³ãè¡ããŸããããã¡ã·ãªãŒã¿ãŒã¯æç¬ãããåããããŸããã ïŒâ» ã©ãŠã³ãããŒãã« ãšã¯ïŒ ã©ãŠã³ãããŒãã«ãšã¯ãç°¡åã«ãããšã¿ããªã§åé£ãçµãã§ãã£ã¹ã«ãã·ã§ã³ãè¡ããŸã äž»ã«äžãã£ãè°é¡ãšããŠã¯ã ã¡ãœããåã®ä»ãæ¹ã§æèããŠããããš ã³ãŒãäžã§æ¥æ¬èªã®äœ¿çšã¯ã©ããŸã§èš±ãããã åŸæ¥ã®ããæ¹ãééã£ãŠããå Žåãèžè¥²ããã倿ŽãèŠæ±ããã ãªã©ãçŸå Žã§ããããæ©ã¿äºãçŽ50人ã»ã©ã§ãã£ã¹ã«ãã·ã§ã³ããŸããã 以äžã¯ãè°äºé²ã§ãã 7. æåŸã« æãã倿¹ãŸã§ã¶ã£éãã§åå ããã®ã§ãæåŸã®æ¹ã¯ããããã§ãããããã1æ¥äžãœãããŠã§ã¢èšèšã«ã€ããŠèããããã€ãã³ãã«åå ã§ããŠãéåžžã«æºè¶³æãé«ãããŸãæ¹ããŠãœãããŠã§ã¢èšèšãèªåã®äžã§èå³ã®ããåéã§ããããšãå確èªã§ããŸããã åç©«ãšããŠã¯ã ã€ãã³ãã¹ããŒãã³ã° ã«ãããªããžã§ã¯ãã¢ããªã³ã°ãšããã¯ãŒã¯ã·ã§ãããããã¡ã€ã³ç¥èãã€ã³ãããããããã«å¹æçã§ããããšãšã CQRS/Event Sourcingãã¿ãŒã³ ãã¢ãŒããã¯ãã£ã®ãã¬ã³ãã§ããããšãããããŸããã ã€ãã³ãã¹ããŒãã³ã° ã¯ããã²BASEã®pjã§åãå
¥ããããšæããŸããããŸãã¯ãã¯ã¹ãã¢ã¯ã·ã§ã³ãšããŠã€ãã³ããœãŒã·ã³ã°ã®ããæ¹ã«ã€ããŠèª¿æ»ããããã¥ã¡ã³ãã«ãŸãšããããšæããŸã ðª æåŸã«ãBASE ã§ã¯çµ¶è³æ¡çšæŽ»åäžã§ãã BASEã§ã¯DDDãã¯ãªãŒã³ã¢ãŒããã¯ãã£ãªã©ç©æ¥µçã«å°å
¥ããŠããããŸã 1éšMVCã§åããŠããã¢ããªã±ãŒã·ã§ã³ãã¯ãªãŒã³ã¢ãŒããã¯ãã£ã«ãªã¢ãŒããããã£ã³ã¹ããããŸãã ã«ãžã¥ã¢ã«é¢è«ããã§ã倧æè¿ã§ãã®ã§ãäžç·ã« BASE ã®æªæ¥ãäœã£ãŠãã ãã仲éãåéäžã§ãïŒ open.talentio.com
ã¯ããã« ããã«ã¡ã¯ã Feature Dev1 ã°ã«ãŒãã§ãããŒãžã£ãŒãããŠããé«å¶ã§ãã çªç¶ã§ããããµãŒãã¹éå¶ããããã§ãŠãŒã¶ãŒããã®ãåãåãã察å¿ãç¡èŠããããšã¯ã§ããŸããã ãããŠããã«è¿
éãã€é©åãªå
容ã§åçã§ãããã©ããã¯ãã©ããŸã§ãã£ãŠããŽãŒã«ã®ãªãæ°žé ã®èª²é¡ãšèšãããã®ã§ãããã ãããã·ã§ããäœæãµãŒãã¹ BASE ã«é¢ãããåãåãã察å¿ã«ã€ããŠã®éçšã«çŽè¿å€åããã£ãããããã®çµç·¯ãšå¹æïŒã¯ããæå³ããããã§ããããŸããïŒãå
±æãããŠããã ããããšæããŸãã ãµããªãšããŠã¯ãæŠã以äžã®ãããªå
容ãšãªããŸãã ãåãåãã察å¿ã®ãã¡ãæè¡çãªèгç¹ãèŠæ±ããããã®ã¯ãšã³ãžãã¢ã«å¯ŸããŠèª¿æ»äŸé ŒãããŸã BASE ã§ã¯ç¹å®ã®éšçœ²ã察å¿ãã圢ã§ã¯ãªããéçºçµç¹æšªæã§å¯Ÿå¿ã«ããã£ãŠããŸã å
·äœçã«ã¯éç§° cs_q ãšãããã£ã³ãã«ã«èª¿æ»äŸé Œãããã®ã§ãåºæ¬çã«ã¯äŸé Œããªãããé ã«å¯Ÿå¿ããŠããŸã æ
åœãããžã§ã¯ããªã©ãåã
æ±ããäžã§ãcs_q 察å¿ãç¹å®ã®ããŒã ãªããå人ã«åã£ãŠããŸãç¶æ³ãé¿ããããã«ããããŸã§ã¯é±æ¬¡ã§åœçªãåããŒã ããã¢ãµã€ã³ãã茪çªå¶ã®éçšãšããŠããŸãã ãã®åºŠãäžéšéçºçµç¹ã®æ¹ç·šãçžãŸã£ãŠããåãåãããããã€ãã®ã«ããŽãªïŒãããã¯ãé åïŒã«åå²ãããããåããŒã ã«ã¢ãµã€ã³ããŠå¯Ÿå¿ããéçšã«å€æŽããŸãã ããã«äŒŽã£ãŠéçšå
šäœãšããŠã®èŒªçªå¶ã¯å»æ¢ããå
·äœçãªéçšæ¹æ³ã«ã€ããŠã¯åããŒã ã«äžä»»ããããšã«ããŸãã å
ã
ã¯çµç¹ããããã¯ãã倧ãããªã£ãŠããããšããã£ãŠèŒªçªå¶ãå°å
¥ãããšããèæ¯ããã£ãã¯ããããããããããªãæé·ãéãããä»åºŠã¯ããããããããšã«ãªã£ãã®ãå人çã«ã¯è峿·±ããšæããŠããŸã 茪çªå¶å°å
¥ã®èæ¯ãšæ ¹åºã«ããèãæ¹ 以äžã¯èŒªçªå¶ããªãã¡åœçªãšããèãæ¹ã«åºã¥ãéçšãå°å
¥ãããåœæã®èšäºã§ããããã®èæ¯ãªã©ãèšèŒãããŠããŸãã åé ã§è¿°ã¹ããããªèª²é¡æãå«ããŠãåœæã®ç¶æ³ããã詳现ã«ããããç¥ãããšãã§ããã®ã§ã¯ãªãããšæããŸãã devblog.thebase.in ããããæ°å¹Žãçµéãããã¡ããæ¹åãéããŠããéšåã¯ããã€ã€ãããŒã¹ã«ãã茪çªå¶ãšããéçšèªäœã¯2023幎æ«ãŸã§ç¶æãããŠããŸããã ãŸãå¥ã®èšäºã«ãªããŸããããããã¯ããžã®åãåãæ¹ãšãã芳ç¹ã«ãããŠã cs_q ã«è§Šãããã®ããããŸãã devblog.thebase.in ãããã®èšäºãèžãŸããŠå€§èã«ãŸãšãããªããBASE ã«ã¯ãããã¯ãã¥ããã«ãšã³ãžãã¢å
šå¡ã§åãåãããšããè¯ãæåããããšèããŠããŸãã æ®æ®µã®éçºæ¥åã«ãããŠã¯ãã¡ã€ã³åå²ããŠå¯Ÿå¿ã«ãããããšãçŸå®çãªè§£ãšããŠãšã£ãŠããŸãããããã§ãçµå±ã¯äžã€ã®ãããã¯ããå
šå¡ã§äœã£ãŠãããšããæèãæã€ãšããèãæ¹ãæ ¹åºã«ãããŸãã ãããŠãªãªãŒã¹ããããçµãã§ã¯ãªããããå§ãŸãã§ãããåºæ¬çã«ã¯ãªãªãŒã¹ããŠåããŠãŠãŒã¶ãŒããã®ãã£ãŒãããã¯ãåŸãããããã«ãªããŸãã ãŠãŒã¶ãŒããã®ãåãåããããã®äžã€ãšèšããã§ãããã å¹çæ§ãèããã®ã§ããã°ãåãåãã察å¿ãªã©ãå°å±ã§è¡ããããªçµç¹ãäœãéžæè¢ãããäžã§ãããããªãããšã«ã¯éçºçµç¹ãšããŠã®æå¿ããããšæã£ãŠããŸãã 茪çªå¶ã®èª²é¡ãšéçºçµç¹ãšããŠã®èª²é¡ ããã§ãã£ããç§èªèº«ã«ã€ããŠè£è¶³ãããŠããã ããšããã®2å¹Žçš cs_q 察å¿ã§ãšã³ãžãã¢ã«èª¿æ»äŸé ŒããªãããŠããã®éçšå
šè¬ã«ã€ããŠããã®åããŸãšãããããããªåœ¹å²ãæ
ã£ãŠããŸããã ãã®äžã§æ¹åããŠããããšããããããããŸãã ããã¯ãã°ãå°å
¥ããŠç¶æ³ãå¯èŠåã§ããããã«ãããã調æ»ã«è¡ãè©°ãŸã£ãéã®çžè«å
ãªã¹ããäœæããããã¯ããŸãéçšãããŒãæŽåããããããªã©ããã®ãšãã©ãã®èª²é¡ã«åãåã£ãŠä»è
ã®ååãåŸãªããæ¹åãå³ã£ãŠããŸããã çå®ã«ããããæŽåã¯é²ãã§ãããšããæå¿ããããäžæ¹ã§ã茪çªå¶ã念é ã«çœ®ããéçšã®éçãæããŠããã®ããŸã確ãã§ãã äžäŸãšããŠãåœçªæã ã察å¿ããã°ãããšããæãæ¹ãã§ãããããåœçªã調æ»ã«è¡ãè©°ãŸã£ãŠããªããªãéåœçªã¡ã³ããŒãšã®ååäœå¶ãæ·ãã®ãç¶æ³çã«é£ããã£ãããšãã£ãããšãæããããŸãã ãŸãåœçªã®äžã§ã察å¿ãŸã§ã®ã¹ããŒããæ°ã«ã³ã³ãã©ã¹ããã€ããŠããŸãã茪çªå¶ã«ããããšã§æåŸ
ããŠããã¯ãã®å¹³æºåãå
¬å¹³æãšããã¡ãªãããããŸãæããããªããªã£ãŠããŸã£ãããšãã£ãããšããããŸãã ãããŠéçºçµç¹ã®å€åã«ã€ããŠã®è©±ãé¿ããŠã¯éããŸããã ãã®3幎çšã¯ããããç®çå¥çµç¹ãšããããŒã¯ãŒãã®å
ãç¹ã« BASE ãšãããããã¯ãéçºã«é¢ããéçºçµç¹ã¯äžå®ã®ç®çãªããé åã§åºåããããããªçµç¹èšèšããªãããŠããŸããã ããèªäœã¯ããŒã éå¶ãéçºããã»ã¹ãæçããããŸãããããã®é åã«å¯Ÿããåã¡ã³ããŒã®çè§£ãæ·±ããããšã«ç¹ããããã®çµæãšããŠãããžã§ã¯ãã®å®å®çãªããªããªãŒãå®çŸã§ãããšãã£ãã¡ãªããããããŸããã ããããªããããŒã ã®æ
åœé åã«å¯ŸããŠã¯æé©åãããŠããäžæ¹ããã®è£è¿ããšããŠãã³ããªåãé²ãã ãå€åã«å¯ŸããããŒãã«ãããã£ãŠèŠéãå
åãã«ãªã£ãããšãã課é¡ãç®ç«ã£ãŠããããã«ãªããŸããã ãããã£ãçµç¹ã®ç¡¬çŽåãé£ãæ¢ããŠçµç¹ãšåäººã®æé·ãããäžåºŠå éãããããã«ãéçºããŒã ã«ãããé åãšããèãæ¹ã¯æ€å»ããè¶å¢ã»æé·ã»æç¶çãªéçºçµç¹ãšããã³ã³ã»ããã®ããšã«ãããŠåãæ§è³ªãæã£ããã£ãŒãã£ãŒããŒã ãè€æ°äœããããªçµç¹æ§é ã«ãªããŸããã ãã®èãæ¹ã«åºã¥ããªã cs_q ããããã¯ãé åãå
šããŒã ãåãéãŠãªãã¿ãŠããããšããããšãã§ããŸããããããã«ããã¯èªç¥è² è·ãé«ãããŠå¹çæ§ãšã®ãã©ã³ã¹ãæªãçµæãšããŠãŠãŒã¶ãŒã«è¿·æããããããšã«ãªããããcs_q ã«ã€ããŠã¯åããŒã ã®å®åç¯å²ã決ããŠå¯Ÿå¿ã«ãããããšã«ããŸããã ãã®å®åç¯å²ã¯ãããã¯ãé åãããã€ãã®ã«ããŽãªã«åå²ãããã®ã§ã¯ãããŸããããã®ã«ããŽãªèªäœã«å€§ããªæå³ãæãããããšã¯ããããããŸã§ãå
šäœã®ãã©ã³ã¹ãªã©ãèæ
®ããå²ãæ¯ãã«ãªã£ãŠããŸãã ã€ãŸãåéçºããŒã ã«å¯ŸããŠã«ããŽãªãã¢ãµã€ã³ãããããªæ Œå¥œã«ã¯ãªããŸãããããããã£ãšåãçµã¿åããã§ãã£ãŠããããšãåæã«ã¯ããŠããããä»åã®çµç¹æ¹ç·šã®ã³ã³ã»ããã«æ²¿ã£ããã®ãšãªãããä»åŸã¯ã«ããŽãªãããŒããŒã·ã§ã³ããŠãããããªæ¡ãæ€èšããŠããŸãã éã«ããŒã ã®äžã«ããã¡ã³ããŒãã°ã«ãŒãéãåãããšã§ç¥èãäŒæããŠãããããªãã¿ãŒã³ãããã§ãããã æ¹ã㊠cs_q ã®éçšãçŸç¶ã©ããªã£ããããŸãšãããšã倧æ 以äžã®ããã«ãªããŸãã ãšã³ãžãã¢ãžã®èª¿æ»äŸé Œã¯ããã¯ãã°ïŒNotionïŒã«èµ·ç¥šããã«ã³ãã³åœ¢åŒã§ã¹ããŒã¿ã¹ç®¡çãã 起祚ããããšèª¿æ»äŸé Œå
容ã®ãããã¯ãé åïŒã«ããŽãªïŒã«å¿ã㊠Notion ã®ãªãŒãã¡ãŒã·ã§ã³æ©èœã§çŽä»ãæ
åœããŒã ãèšå®ãããSlack ã§ãã®ã¡ã³ã·ã§ã³ãå人ãªããããŒã ã«é£ã¶ cs_q ãã£ã³ãã«ã«èª¿æ»äŸé Œå
容ãèªåã§éç¥ãããæ
åœããŒã ã®ãšã³ãžãã¢ã¯ãã®å¯Ÿå¿ã«ããã å
šäœã®éçšãšããŠã®æ±ºãäºã¯æ¥µè«ããã ãã§ããããã®ããã«ã§ããéãã·ã³ãã«ãªç¶æ
ãŸã§åãèœãšããããããã茪çªå¶ãšãã座çµã¿ã廿¢ããŠå
·äœã®éçšã¯åããŒã ã«ä»»ããæææ±ºå®ãã§ããŸããã 茪çªå¶ããããŠã©ããªã£ãã çµè«ã茪çªå¶ããšãããŒã ãããã°ããããªãããŒã ããããŸãã ãã ãããã¯åããŒã ã®ç¶æ³ãèžãŸããŠé©å®å€æãããŠããããšã§ããããããŸã§ã®ããã«å
šäœã§å®æœããŠãããšããšã¯å°ãæå³åããéããšæã£ãŠããŸãã äžåŸã®ã«ãŒã«ãå®ããŠåŸ¹åºããããšã«ããå
šäœæé©ãéèŠããã®ãããããŠäœçœãæ®ãããšã§åããŒã ã®æ³ååã«ããæ°ããäœããçãŸããã®ãæåŸ
ããã®ããããããã®ã¡ãªãã¡ãããããšã¯çè§£ãã€ã€ãä»åã®å
šäœæ¹éãšããŠã¯çµç¹æ¹ç·šã«èŸŒããããææãèžãŸããããã§åŸè
ã«åãã圢ã«ãªããŸãã ã¡ãªã¿ã«ç§ã Feature Dev1 ã°ã«ãŒããšããéçºçµç¹ãé ããç«å Žã§ãããã°ã«ãŒãæ¹éãšããŠèŒªçªå¶ã¯æ·ããªããšããæææ±ºå®ãããŸããã äžè¿°ããéããç§èªèº«ãå
ã
茪çªå¶ã«å¯Ÿããèª²é¡æãæã£ãŠãããšããèæ¯ããããŸããããããæãã«ããŠãããŒã ã¡ã³ããŒã«äž»äœæ§ãæåŸ
ãã圢ã§ã®éçšã«åããŠã¿ããã©ããªããããæåããã«ãã倱æããã«ããã¡ãããšæ€èšŒãããã£ããšããããšããããŸãã éçšéå§ãã3ã¶æçšãçµéããŠã©ããªã£ããã§èšããšãçŸç¶æåŸ
éãããããã¯æåŸ
以äžã®ç¶æ³ã«ãªã£ãŠãããŠãããšæããŸãã åœçªã眮ããªãããããããŒã ã¡ã³ããŒã®èª°ããäž»äœçãã€ã¹ããŒãã£ãŒã«èª¿æ»äŸé Œã«åå¿ããåããå€ããªããããã¯çµæçã«å°ã£ãŠãããŠãŒã¶ãŒãããæ©ãå©ããããšã«ãç¹ãã£ãŠããŸãã è¯ãæå³ã§èª¿æ»äŸé Œã«å¯Ÿå¿ããæ°ã«ãã³ã³ãã©ã¹ããã€ããç©æ¥µçã«å¯Ÿå¿ããŠãããã¡ã³ããŒãçŽ çŽã«è©äŸ¡ã§ããç¶æ
ã«ããªããŸããã ãŸãããã¯ç§ã®ããŒã ã«éã£ã話ã§ã¯ãããŸããããçµç¹æ¹ç·šã®åœ±é¿ããã£ãŠã¡ã³ããŒåå£«ã§æã£ãŠããç¥èã亀æãåããªãã察å¿ã«ããã£ããããããæ
åœã«ããŽãªã®ããŒããŒã·ã§ã³ã«åããŠãããããã¥ã¡ã³ãã«ç¥èŠãæŽçããŠåŒãç¶ãã§ããããããªã ãŒãã¡ã³ããèµ·ããã€ã€ãããŸãã ãŸãšã çŸæç¹ã§ã¯å€§ããªæ··ä¹±ããªãããžãã£ãã«ãã®çµéãèŠãŠããŸãããäžæ¹ã§ããæ¬è³ªçãªèª²é¡ãåºãŠããã®ã¯ããããã ãšèããŠããŸãã ããã«æªæ¥æ°žå«ãã£ãšãã®éçšã貫ããšããããšã¯ãããããªããä»åããã£ãšéçšæ¹æ³ãå€ããããã«ããŸãæ°ããªèª²é¡ãåºãŠãããã©ãããããšããããšãèãç¶ããŠãããã ãããšæããŸãã æ¬èšäºã§ã¯åŒç€Ÿã«ãããäºäŸç޹ä»ããããŠããã ããŸãããããŠãã§ã¯ãããã£ãåãçµã¿æ¹ãããŠããŸããšãã£ãäºäŸãããã°ãã²æããŠããã ããããšæã£ãŠããŸãã æåŸã«ãBASE ã§ã¯çµ¶è³æ¡çšæŽ»åäžã§ãã æ¬èšäºã§ã玹ä»ãããŠããã ããããã«ãã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãšããŠããã æ©èœéçºãããã ãã§ã¯ãªãããããã¯ããããŠçµç¹ã®æé·ãæ¯ããŠããããã«è£éãæã£ãŠã§ããããšãããããããã®ã BASE ã§éçºããééå³ã§ãã ã«ãžã¥ã¢ã«é¢è«ããã§ã倧æè¿ã§ãã®ã§ãäžç·ã« BASE ã®æªæ¥ãäœã£ãŠããæ¹ããåŸ
ã¡ããŠããŸãïŒ open.talentio.com