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
ããã«ã¡ã¯ãNEW Dept/Pay ID Dev/Web Backendãšã³ãžãã¢ãããŠããéåã§ããæ®æ®µã¯Pay IDã«é¢ããããã¯ãšã³ãåšãã®éçºãããŠããŸãã 3/14, 3/15ã®2æ¥éã«æž¡ã£ãŠéå¬ããã AWS JumpStart 2024 ã«BASEãã4åã®ãšã³ãžãã¢ãåå ããŸãããæ®æ®µã¯ããã¯ãšã³ããäžå¿ã«æ¥åããŠãããšã³ãžãã¢ããAWSã®äž»èŠãµãŒãã¹ãåŠã³ãã¢ãŒããã¯ãã£ã®æ€èšããã貎éãªçµéšãã§ããŸããã®ã§ãææ³ã亀ãã€ã€ã¬ããŒãããŠãããŸãã AWS JumpStartãšã¯ AWS JumpStartã¯ãæ°åãå«ãAWSååŠè
ã®ãšã³ãžãã¢ã察象ãšãããã¯ã©ãŠããã€ãã£ããªããã¯ãªãŒã人æãè²æããããã®ç¬¬äžæ©ãšãªãå®è·µçãªç ä¿®ããã°ã©ã ã§ããäºååŠç¿çšåç»ãš2æ¥éã®éäžçãªã¯ãŒã¯ã·ã§ãããéããŠãçæ§ãèªèµ°ã§ããç¶æ
ãŸã§ã·ã¹ãã ã¢ãŒããã¯ãã£èšèšãAWSã®ç解床ãäžæ°ã«åŒãäžããããšãç®çãšããŠããŸãã https://aws.amazon.com/jp/blogs/news/aws-jumpstart-2024/ AWSãéå¬ããå®è·µçãªç ä¿®ããã°ã©ã ã§ãBASEã§ã¯ä»å¹Žã ã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ã®ã€ã³ãã©ç¥èã®åºäžãã®ãã ã«åžæè
ãåå ããAWSãµãŒãã¹ãã¢ãŒããã¯ãã£ã«ã€ããŠ2æ¥éåŠãã§ããŸããã 䜿çšããããŒã« Zoom ä»å¹Žã¯Zoomã§ã®éå¬ã§ãã Slack ä»ã®åå è
ãAWSã®éå¶ã¡ã³ããŒãšã³ãã¥ãã±ãŒã·ã§ã³ãåãéã«äœ¿çšããŸã Miro ãªã³ã©ã€ã³ãã¯ã€ãããŒãã§ã¢ãŒããã¯ãã£æ€èšæã«äœ¿çšããŸã ã¹ã±ãžã¥ãŒã« 2æ¥é 9:00~18:00ã§åŠç¿+ã¢ãŠããããããå
å®ããå
容ã«ãªã£ãŠããŸããã äºååŠç¿ åå åã«äºååŠç¿åç»ãšè³æã®æ¡å
ãããã AWSã®åºç€ãåŠã¶ã®ã«éåžžã«åããããããŸãšãŸã£ãŠããå
容 ã§ãããããã ãã§ãåå䟡å€ã®ããå
容ã§ãèªåã®å Žåã¯ä»ãŸã§äœç³»çã«åŠã¹ãŠãªãã£ãéšåãããããããšè
ã«èœã¡ãŠããæèŠã§ãšãŠããããããã£ãã§ãã ã¢ãŒããã¯ãã£ã³ã°åºç€ïŒ1æéïŒ ã¯ã©ãŠãã«ãããèšèšååãã¢ãŒããã¯ãã£ã³ã° AWS å
¥éïŒ3æéïŒ AWSã®åºæ¬çãªç¥è WebãµãŒãã¹è¶
å
¥éïŒpdfè³æïŒ Webã¢ããªã±ãŒã·ã§ã³ã®ä»çµã¿ã«ã€ã㊠1æ¥ç® 1æ¥ç®ã¯è¬çŸ©+ãã³ãºãªã³äžå¿ã§ããã è¬çŸ©å
šäœã®èª¬æãèªå·±çŽ¹ä» ã¯ããã«å
šäœã¹ã±ãžã¥ãŒã«ãæ¬ããã°ã©ã ã®ãŽãŒã«ã«ã€ããŠã®èª¬æãSlackäžã§ã®èªå·±ç޹ä»ã®æéããããŸãããŸããããã°ã©ã å
šäœãéããŠSlackäžã§èªç±ã«è³ªåãã§ããã®ã§ãæ°ã«ãªã£ãç®æãããã°æ°è»œã«æžã蟌ã¿ããã®è³ªçå¿çãèŠãã ãã§ãå匷ã«ãªãå
容ãçãã ãããã§ããã è¬çŸ© WEBã¢ããªã±ãŒã·ã§ã³ã®èª¬æããHigh-Levelãªã¢ãŒããã¯ãã£å³ã«ã€ããŠçãäžå¯§ã«èª¬æãé²ã¿ãŸãã ãã§ãŒãºãç®çã«ãã£ãŠç®æãã¹ãã¢ãŒããã¯ãã£ã¯ç°ãªã ã®ã§ããããã«åãããŠæé©ãªã¢ãŒããã¯ãã£ãæ€èšããå¿
èŠãããããã§ãããåã«ã¹ããã¯ã®è¯ããµãŒããŒã倧éã«çšæããã ãã§ã¯ããããã§ãã³ã¹ããããã£ãŠããŸãã®ã§ããµãŒãã¹ã®èŠæš¡ãèŠä»¶ã«å¿ããé©åãªã¢ãŒããã¯ãã£ã®æ€èšã¯éåžžã«å€§åã§ãã ãã³ãºãªã³ ã¯ãŒã¯ã·ã§ããçšã®ãã¢ã¢ã«ãŠã³ãã䜿ã£ãŠå®éã«ç°å¢ãæ§ç¯ããŸãããã®ãã¢ã¢ã«ãŠã³ãã¯ã¯ãŒã¯ã·ã§ããäžã¯èªç±ã«äœ¿çšããŠè¯ãã®ã§ãç°å¢ãç Žå£ããŠåæ§ç¯ãç¹°ãè¿ãã§ããŸããåŸããããçŽããŠåŸ©ç¿ãã§ããã®ã§å¬ããã§ããïŒ EC2ã®æ§æ çŽ æŽãªæ§æã§ãããVPCãã»ãã¥ãªãã£ã°ã«ãŒãã®èšå®ãªã©åºç€çãªãµãŒãã¹ã䜿çšããŸãã ALB+ECS+RDSã®æ§æ å
ã»ã©ã®EC2ãããã¹ã±ãŒã©ãã«ã§åé·åãããæ§æã§ããç§èªèº«ã¯EC2ã®æ§ç¯çµéšãããªããECSã¯åããŠã®äœéšã§å匷ã«ãªããŸããã æåç¢ºèª ECSã®ã¿ã¹ã¯ãAurora MySQLã€ã³ã¹ã¿ã³ã¹ã«åé¡ãçããéã®æå確èªãè¡ããŸããã å人çã«ã¯1æ¥ç®ã®äžçªæ¥œãã¿ã«ããŠãããšããã§ã宿çãªãªã¯ãšã¹ããéãã€ã€ECSã®ã¿ã¹ã¯ã1ã€åæ¢ããããDBããã§ã€ã«ãªãŒããŒãããŠæåã確èªããŸãããäœè£ãæã¡ãªããç£èŠããã®ã¯æ¬çªç°å¢ã§ã¯ã§ããªãããšã§ããïŒ CloudWatchã®åçš®ã¡ããªã¯ã¹ç¢ºèª CloudWatchäžã§ãå
ã»ã©ãŸã§åãããŠãããµãŒãã¹ã®ãªã¯ãšã¹ãæ°ã®å€åãCPU䜿çšçãã¡ã¢ãªäœ¿çšçã®ç¢ºèªãè¡ããŸããã ALBã®ãªã¯ãšã¹ãæ° Auroraã®CPU䜿çšç ïŒæ¥ç® 2æ¥ç®ã¯ã¢ãŒããã¯ãã£ã®å人æ€èšãšã°ã«ãŒãã¯ãŒã¯ãäžå¿ã§ããã Daily Check-in, ã¯ã€ãº 2æ¥ç®ã®ã¹ã±ãžã¥ãŒã«ã®ç¢ºèªãã¯ã€ãºãè¡ãã忥ã®åŸ©ç¿ãããŸãã ã¢ãŒããã¯ãã£æ€èšïŒå人ã¯ãŒã¯ã»ã°ã«ãŒãã¯ãŒã¯ïŒ ããããã¯ããå®è·µçãªèª²é¡ãããŠãããŸããæ¢åã®ããŒã ã¡ã³ããŒãå
šå¡éè·ããŠããŸã ãã©ãã¯ äŒæ¥ã®ç€Ÿå¡ã«ãªã1æ¥ã§ã¢ãŒããã¯ãã£ãæ€èšããŸãããã®äŒç€Ÿãæããªããã°ïŒãšããäœ¿åœæããä¿ç¶ããæ°ãåºãŠããŸãã å人ã¯ãŒã¯ ãŸãã¯å人æ€èšã§ãæäŸèŠæš¡ã»ã·ã¹ãã èŠä»¶ã»å¿
é æ©èœããé©åãªã¢ãŒããã¯ãã£ãMiroã䜿ã£ãŠäœæããŸããå®éã«å³ã«èœãšã蟌ãã®ã¯ã詳现ãçè§£ããŠããªããšãªããªãé£ããå
容ã§ããã ã°ã«ãŒãã¯ãŒã¯ Zoomã§åããŒã 3~5åã»ã©ã«åãããŠã¢ãŒããã¯ãã£ããã©ãã·ã¥ã¢ããããŠãããŸããä»ã®åå è
ãšæèŠäº€æãããªããæ€èšããããšã§æŽã«çè§£ãæ·±ãŸããŸããã ææçºè¡šãšè§£èª¬ 代衚ããŠ3ããŒã ããæçµææã®çºè¡šããããŸãããåããŒã ãã ããããããããããéã£ãã¢ãŒããã¯ãã£å³ã«ãªã£ãŠããã®ãé¢çœãã£ãã§ãã ãããŠæåŸã«AWSã®Solutions Architectã«ãã解説ããããã¯ããŒãžã³ã°ãšãªããŸããã ææ³ åå ã¡ã³ããŒããææ³ãããã ããã®ã§ç޹ä»ããŸãïŒ AWSãçšããŠ0ããäœããäœã£ãŠããæ©äŒãé·ãããšç¡ãã£ãã®ã§ãè¯ãã¿ã€ãã³ã°ãšæããŠåå ããŸããïŒ ååã®åºç€ç¥èã®åŠç¿ããã³ãºãªã³ã¯ãé²ã¿æ¹ããšãŠã確å®ãã€äžå¯§ã§ãååŠè
ã®æ¹ã«ã¯ãã²ãããããããå
å®¹ãšæããŸããïŒ åŸåã¯ååã§åŠãã ããšãçšããŠã¢ãŒããã¯ãã£ã®èšèšãå®éã«è¡ãæŒç¿åœ¢åŒã§ããããç¥èã®å確èªãšããŠã®è¯ãã ãã§ãªããä»ã®äººãšäœæããã¢ãŒããã¯ãã£ã«ã€ããŠæèŠäº€æãè°è«ããæ©äŒããã£ãããšã§ãèããŠããªãã£ãèŠç¹ãç¥ãããå
±åã§ãã©ãã·ã¥ã¢ããããŠããçµéšãã§ããããšããšãŠãåºæ¿çã§ããïŒ ä»åŸæ¥åã®ãªãã§ãã£ã³ã¹ããã£ããšãã¯ãã€ãã³ããéããŠåŸããã®ã掻ãããããªãšæããŸãïŒ Pay IDã§ããã¯ãšã³ããšã³ãžãã¢ãããŠãã ç«å£ ã§ãã ä»ååå ããç®çã¯ãã€ã³ãã©ã«é¢ããçµéšãç¥èãäžè¶³ããŠããããšã§ã©ãããŠãéçºã®ã¢ãããŒããå°ãªããšæããããšãããã€ã³ãã©ã®çè§£ãæ·±ããããšã§ãããå¹
åºãã¢ãããŒããã§ããã°ãšæãåå ããŸããã ã€ãã³ãã§ã¯ãã€ã³ãã©ã®åºç€ããå®éã«æ§ç¯ããéçšãäœéšããå
šäœåã®çè§£ãæ·±ããããšãã§ããŸããã ããã«ã課é¡ã«åãçµãäžã§çããçåç¹ããAWSã®ä»çµã¿ã«ã€ããŠã®è©³çްãªèª¬æãåããããšãã§ããã®ããšãŠãããã£ãã§ãã ãŸããSlackã§ä»ã®åå è
ã®è峿·±ã質åãšãã®åçãã¿ããã®ã¯æ¥œããã£ãããããçè§£ãæ·±ãŸããŸããã ã€ãã³ãåŸã«èªç€Ÿã®ã³ã³ãœãŒã«ãèŠãŠãä»ãŸã§ä»¥äžã«èªç€Ÿã®æ§æã®è§£å床ãäžãã£ãã®ãæããããŠå¬ããã£ãã§ãïŒ ä»åã®çµéšãããŸãã¹ãããã¢ããããŠä»åŸã®éçºã«æŽ»ãããŠããããã§ãïŒ BASEã§ããã¯ãšã³ããšã³ãžãã¢ãããŠããŸãã Futoshi Endo ã§ãã åå ããããšæã£ããã£ããã¯ãçŽè¿ã®æ¥åã§AWSãæäŸããŠããäžéšãµãŒãã¹ã«è§ŠããŠã¿ãŠãã¡ãããšäœç³»çã«çè§£ããããšæã£ãã®ãçç±ã§ããããã®åã«ãAWSã®è³æ Œè©Šéšã®å¯Ÿçã§åé¡éãè§£ããŠã¿ããããäºã¯ãã£ãã®ã§ãããåãµãŒãã¹ã®ç¹åŸŽã ã£ããããªããã®æ§æã§äœãã®ãã®èæ¯ã«ã€ããŠäžéå端ã«åŠãã§çµãã£ãŠããŸããã AWS JumpStart2024ã«åå ããŠè¯ãã£ãã®ã¯ããŸãã«ããã®çè§£ãäžååãªãŸãŸã§çµãã£ãŠããç®æããå®éã«ã¢ãŒããã¯ãã£å³ãããäœæ¥ãéããŠãçè§£ã§ããäºã§ããã ãŸããä»ã®åå è
ã®æ¹ãèããã¢ãŒããã¯ãã£å³ãèŠãªãããAWSã®éå¶ã¡ã³ããŒãšã®è°è«ãããŠããå
容ãè¯ãã£ãã§ãã èªåèªèº«ãåå ããåã¯AWSã«ã€ããŠã¯èŠæãªåŸåããã£ãã®ã§ãããå°ãã ãèªä¿¡ãã€ããã®ã§ãæ¥åã§è§Šããæ©äŒãããã°ç©æ¥µçã«ææŠããããšããããŸããïŒ ãŸãšã BASEã§ã¯tmpãã£ã³ãã«ïŒã¯ãŒã¯ã·ã§ããçšã®äžæçãªãã£ã³ãã«ïŒãäœã£ãŠãããã®æ§æã¯BASEã ãšã©ããªã£ãŠãããã ããããªã©å
éšã§ãã¯ã€ã¯ã€ããªããè¬çŸ©ãåããŸãããèªç€Ÿã®ãµãŒãã¹ã«èœãšã蟌ãã å Žåã®ã¢ãŒããã¯ãã£ãã©ããªãããæ³åããªããé²ããããã®ããæ®æ®µã®æ¥åã§ã¯ããŸãèããããšã®ãªãéšåãªã®ã§ææçŸ©ã§é¢çœãã£ãã§ãã AWSã®èŠææèãææã§ããã¡ã³ããŒãããããšãç·ããŠéåžžã«å匷ã«ãªã貎éãªäœéšã§ãããä»åŸããã¯ãšã³ããšã³ãžãã¢ãšããŠä»äºããããã§ããwebã®éçºèгç¹ã ãã§ãªãã€ã³ãã©èгç¹ãAWSãµãŒãã¹ãžã®çè§£ãæ·±ãã€ã€ãããè¯ããµãŒãã¹ã®æäŸã«ç¹ããŠãããã°ãšæããŸãïŒ æåŸã«ãBASE ã§ã¯çµ¶è³æ¡çšæŽ»åãããŠããŸãã èå³ãããæ¹ã¯ä»¥äžã®ãªã³ã¯ããã芧ãªã£ãŠããã ãããšå¹žãã§ãïŒ binc.jp
ã¯ããã« ããã«ã¡ã¯ïŒData PlatformããŒã ã§ããŒã¿ãšã³ãžãã¢ãšããŠåããŠãã @shota.imazeki ã§ãã åæåºç€ã®æ§ç¯ã»éçšãªã©ã®åŽé¢ãã瀟å
ã®ããŒã¿æŽ»çšã®ä¿é²ãè¡ã£ãŠããŸãã BASEã§ã¯Aurora MySQLã«ããããŒã¿ãEmbulkãçšããŠBigQueryã«é£æºããŠããŸããBigQueryãžé£æºãããããŒã¿ã¯åæåºç€ãšããŠLookerãªã©ãéããŠç€Ÿå
å©çšãããŠããŸãã ãã®ããŒã¿é£æºåŠçã«ã¯ããã€ãã®èª²é¡ããããããã解決ããããã«EmbulkããAurora S3 Exportæ©èœãçšãã飿ºåŠçã«åãæ¿ããããšã«ããŸããã®ã§ãããã«ã€ããŠç޹ä»ããŠãããããšæããŸãã â»ãã®åãæ¿ãã«ã€ããŠã¯çŸç¶ã詊éšçã«äžéšã®DBã®ã¿ã®åãæ¿ããšãªã£ãŠããŸãããéçšäžã®å€§ããªèª²é¡ãåºãŠããªããã°åŸã
ã«åãæ¿ããŠããäºå®ã§ãã åæ¿åã®ããŒã¿é£æºåŠç å
è¿°ããéããBASEã§ã¯äž»ã«Embulkãå©çšããŠAurora MySQLã«ããããŒã¿ãBigQueryã«é£æºããŠããŸãã以äžã®ãããªã¢ãŒããã¯ãã£ã§ãã æ¬çªDBããã¬ããªã±ãŒã·ã§ã³ãããåæçšDBã«å¯ŸããŠãEmbulkããSQLãDailyå®è¡ãã圢ã§ããŒã¿é£æºãè¡ãªã£ãŠããŸããã¯ãŒã¯ãããŒç®¡çã«ã¯Airflowãå©çšããŠããŸãã Embulkã«ããäž»ãªé£æºãã¿ãŒã³ EmbulkããBigQueryã«ããŒã¿ã飿ºããéã¯ãããŒãã«ã®ä»æ§ãããŒã¿éã«å¿ããŠäž»ã«3ãã¿ãŒã³ã«åããŠããŸãã DELETE INSERT BigQueryåŽã§å¯Ÿè±¡æ¥ä»åãåé€ãããã®åŸã«å¯Ÿè±¡æ¥ä»åãINSERTãããã¿ãŒã³ã§ããäºåã«åé€ãè¡ãã®ã¯åŠçã®åå®è¡ãªã©ã«ãã£ãŠåãããŒã¿ãå
¥ã蟌ãŸãªãããã«ããããã§ããäž»ã«ãã°ããŒã¿ãªã©ã®æŽæ°ãããªãããŒã¿ãããã«åœãŠã¯ãŸããŸãã REPLACE ããŒãã«ã®å
šéæŽãæ¿ãã§ããæŽæ°ãç©çåé€ãè¡ãããããŒãã«ã¯åºæ¬çã«ãã®æ¹åŒã«ãªããŸããäŸãã°ãŠãŒã¶ãŒæ
å ±ãªã©ã§ãã MERGE 察象æ¥ä»ä»¥åŸã«æŽæ°ã®ãã£ãããŒã¿ã察象ã«å·®åæŽæ°ãè¡ããã¿ãŒã³ã§ããåºæ¬çã«ã¯REPLACEãDELETE INSERTã§å¯Ÿå¿ãããã§ãããããŒãã«ã®ããŒã¿éã倧ããå Žåã«ãã¡ããéžæããŸããäŸãã°æ³šæãçºéé¢é£ã®ããŒãã«ã該åœããŸãã èª²é¡ EmbulkãçšããããŒã¿é£æºåŠçã®èª²é¡ã«ã€ããŠè§ŠããŠãããŸãã ã¬ããªã±ãŒã·ã§ã³é
å»¶ã«ããããŒã¿ã®äžæŽå 飿ºå
ã®ããŒã¿ãšããŠæ¬çªDBããã¬ããªã±ãŒã·ã§ã³ãããŠããåæçšDBã®ããŒã¿ã䜿çšããŠããŸãããã®åæçšDBã¯å¥ã®åŠçãšããŠã䜿ãããŠããããšãããããã®è² è·ãªã©ã«ãã£ãŠãææã¬ããªã±ãŒã·ã§ã³é
å»¶ãçºçããŸãããã®é
å»¶ã飿ºåŠçã®Dailyå®è¡æã«çºçããŠãããšãæ¬æ¥æŽæ°ãããã¹ãã¯ãã®ããŒã¿ãæŽæ°ãããªããªããŸããããã«ãã£ãŠäžéšããŒã¿ã®äžæŽåãçºçããããšããããŸããã ç©çåé€ãæ€ç¥ã§ããªã Embulkã§ã¯é£æºããããŒã¿ãSQLã§åãåºããããã¬ã³ãŒããç©çåé€ãããŠãããšããŠãããããæ€ç¥ããããšãã§ããŸããããªã®ã§åºæ¬çã«ã¯ç©çåé€ãçºçããããŒãã«ã«ã€ããŠã¯REPLACEã§å¯Ÿå¿ããããšã«ãªããŸãããã ã飿ºå
ã®ããŒãã«ã®ããŒã¿éã倧ããããå ŽåãEmbulkãµãŒããŒã®ãã£ã¹ã¯å®¹éãå§è¿«ããŠããŸããŸãããã®ãããç©çåé€ãçºçããäžã€ããŒãã«ã®ããŒã¿éã倧ãããã®ã«é¢ããŠã¯é£æºãå³ããç¶æ
ã§ã(MERGEã«ãã£ãŠé£æºããããšèªäœã¯å¯èœã ãä¿¡é Œã§ããããŒã¿ã§ã¯ãªããªã£ãŠããŸã)ã select column1, column2, column3 from table where modified >= TARGET_DATE -- æŽæ°æ¥æã察象æ¥ä»¥é æ°ããããŒã¿é£æºåŠç äžèšã®ãããªèª²é¡ãèžãŸããŠãæ°ãã«æ§ç¯ããããŒã¿é£æºåŠçã以äžã§ããAurora S3 Exportæ©èœãå©çšããparquet圢åŒã§S3ã«ã¹ãããã·ã§ãããåºåããã®ã¡ã«ãBigQuery Data Transfer ServiceãçšããŠS3ããçŽæ¥BigQueryãžããŒã¿ãã€ã³ããŒãããŠããŸãã ããããã¯ãã®åŠçãæ¡çšããåã«èª¿æ»ããããšã«ã€ããŠè§ŠããŠãããŸãã 調æ»ã»æ€èšŒå
容 Aurora S3 Exportæ©èœãæ¡çšããã«ããã£ãŠã調æ»ãæ€èšŒããããšã«ã€ããŠè§ŠããŠãããŸãã åºåå
DBãžã®è² è· ã¹ãããã·ã§ãããšããŠåºåããDBåŽãžã®è² è·ãã©ãã ãããã®ãããŸãã¯ç¢ºèªããŸãããAWSã§å
¬éãããŠãã ããã¥ã¡ã³ã ã«ãŠã以äžã®èšè¿°ãããããã«ãDBã¯ã©ã¹ã¿ãŒãã¯ããŒã³ããããšã§åºåå
DBãžã®è² è·ã¯èµ·ããªãããã§ãã Amazon Aurora 㯠DB ã¯ã©ã¹ã¿ãŒãã¯ããŒã³ããŠãã¯ããŒã³ããããŒã¿ãæœåºãããã®ããŒã¿ã Amazon S3 ãã±ããã«ä¿åããŸãã ããã«ã€ããŠã¯AWS SAã®æ¹ã«äŒºããèªèã®éœéœ¬ããªããã確èªãããŠé ããŸããã 飿ºåŠçã«ãããæé ããŒã¿é£æºåŠçãæ·±å€ã«éå§ããŠãç¿æã®9æä»¥éã«ãŸã§ããã£ãŠããŸãå Žåã¯æ°ããããŒã¿é£æºåŠçã«åãæ¿ããããšã¯ã§ããŸãããéã«åããã©ããã確èªããããã«ãå®éã®åæçšDBãšåãã€ã³ã¹ã¿ã³ã¹ã¿ã€ããåãããŒã¿éã®ããŒãã«ã2ã€çšæããæ€èšŒãè¡ããŸãããéžãã ããŒãã«ã¯Embulkã ãšé£æºã«1ã€ç®ãçŽ15åã2ã€ç®ãçŽ30åçšåºŠãããéããããŒãã«ã«ãªããŸããååŠçã«ããã£ãæéã¯ä»¥äžã®éãã§ãåèšã§30åçšåºŠã§ãã æåã«ã€ã³ã¹ã¿ã³ã¹ãèµ·åããæéã20åãšé·ãã§ãããããã¯DB Clusteråäœã§å¿
ãæåã«è¡ããããã®ã«ãªã£ãŠããŸãããã®åŸç¶ã®åŠçã¯ããããæ°åã§çµãã£ãŠãããå
šäœãšããŠ30åçšåºŠã§Embulkãçšããæãšå€§å·®ãªãæéã§ããæåã®èµ·åæéãèæ
®ããªããŠããã®ã§ããã°Embulkãããçãæéã§ããŒã¿é£æºãå¯èœã«ãªãããã§ã(ExportããããŒãã«æ°ãEmbulkåŽã§ã®äžŠåå®è¡æ°æ¬¡ç¬¬)ããã®çµæããæ°ããããŒã¿é£æºåŠçã«åãæ¿ããŠãæéãããããããããšã¯ãªãã ãããšå€æããŸããã ã³ã¹ã ã³ã¹ãã«ã€ããŠã念ã®çºç¢ºèªããŠãããŸãããã倧ãããããããããšããããšã¯ãªãã ãããšãã倿ã«è³ããŸããã Aurora S3 Export : 100GBã§$1.2~1.3çšåºŠ S3ããã®ããŒã¿è»¢é (ã¢ãŠã): 100GBã§$11.4çšåºŠ parquet圢åŒã§ããŒã¿å§çž®ããããããæã£ãã»ã©ã®ã³ã¹ãã«ã¯ãªããªããšèããŠãŸã BigQuery Data Transfer Service : $0 å®è£
æã®ãã€ã³ã ããããã¯æ°ããããŒã¿é£æºåŠçãå®è£
ããŠããã«ããã£ãŠèæ
®ãå¿
èŠã ã£ãç¹ã«ã€ããŠè§ŠããŠãããŸãã Aurora S3 Export ä»åã¯boto3ãçšããŠS3 Exportã®åŠçãããã¯ããããšã«ããŸããã ã¿ã¹ã¯èå¥å(ExportTaskIdentifier)ã«æ¥ä»ãå
¥ãã S3 ExportåŠçãããã¯ããã«ã¯ä»¥äžã®parameterãæå®ã㊠start_export_task ãå®è¡ããŸãã response = client.start_export_task( ExportTaskIdentifier= 'string' , SourceArn= 'string' , S3BucketName= 'string' , IamRoleArn= 'string' , KmsKeyId= 'string' , S3Prefix= 'string' , ExportOnly=[ 'string' , ] ) ExportTaskIdentifierã«ã¯ä»»æã®task idãæå®ããå¿
èŠãããã®ã§ããã以åå®è¡ããæãšåãå€ãæå®ããããšã¯ã§ããŸããããŸããã®ExportTaskIdentifier(åã³S3Prefix)ã¯S3 Bucketå
ã®URIã«ããªããŸãããã®ãããExportTaskIdentifierã®å€ã®æ«å°Ÿã«yyyymmdd圢åŒã§æ¥ä»ãå
¥ããããšã«ããŸãããã€ã¡ãŒãžã¯ä»¥äžã§ãã # çæ³ã¯ãã¡ãã s3://S3BucketName/table_name/.../*.parquet # å®éã¯ãã¡ããS3 URIãæ¥ä»ã§ç°ãªãã s3://S3BucketName/ExportTaskIdentifier_yyyymmdd/table_name/.../*.parquet ããèªäœã¯å€§ãããã€ã³ãã§ã¯ãªãã®ã§ãããåŸç¶ã®BigQuery Data Transfer Serviceã«ãããŠèæ
®ãã¹ãç¹ã«ãªããŸãã S3 ExportåŠçã®å®äºã宿çã«ç¢ºèªãã start_export_task颿°ãå®è¡ãããšå®è¡æä»€ãé£ãã çŽåŸã«responseãè¿ã£ãŠãããããExportåŠçãå®äºãããã©ãããåãããŸãããå®äºã確èªããããã«ã¯ describe_export_tasks ãæ°åããã«å®è¡ããŸãã response = client.describe_export_tasks( ExportTaskIdentifier= 'string' , SourceArn= 'string' ) ä»åãdescribe_export_tasksã宿çã«å®è¡ããã®ã«Airflowã® Sensorã¯ã©ã¹ ã䜿ãããšã«ããŸããã以äžã«å®è£
äŸã瀺ããŠãããŸãããã®ããã«å®çŸ©ããããšã§5åéé(poke_interval)ã§10å(timeout)ãpython_callableã«æž¡ãã颿°ãå®è¡ãããŸãããã®é¢æ°ã§describe_s3_export_taskãå®è¡ãããtrueãè¿ã£ãŠæ¥ãã°åŸç¶ã®åŠçã«é²ããšãã圢ã§ãã def poke_describe_s3_export_task (**kwargs): # describe_s3_export_taskãå®è¡ # å®äºãããã©ããã§true, falseã§è¿ã return true poke_describe_s3_export_task = PythonSensor( task_id= "poke_describe_s3_export_task" , mode= 'poke' , poke_interval= 300 , timeout= 300 * 10 , soft_fail= False , python_callable=poke_describe_s3_export_task, provide_context= True , dag=dag ) BigQuery Data Transfer Service S3ã«parquet圢åŒã§ããŒã¿ãåºåãããã°ã次ã«S3ããBigQueryã«ã€ã³ããŒãããåŠçãè¡ããŸããä»åã¯Google Cloud CLI ã³ãã³ãã§ã®å®è£
ãšããŸããã䞻㫠[bq mk](https://cloud.google.com/bigquery/docs/reference/bq-cli-reference?hl=ja#bq_mk) ã³ãã³ãã䜿ã£ãŠããŸãã --transfer_run ****ãæå®ããããšã§BigQuery Data Transfer Serviceãå®è¡ããããšãã§ããŸãã bq mk --transfer_run [--run_time=RUN_TIME | --start_time=START_TIME --end_time=END_TIME] CONFIG runtime parameterã«ããS3 URIã®æ¥ä»æå® BigQuery Data Transfer Serviceã®è»¢éèšå®ãå®çŸ©ããæã«S3 URIãæå®ããã®ã§ãããäžè¿°ããéããS3 URIã¯æ¥ä»å¥ã«ç°ãªãç¹ãèæ
®ããªããã°ãªããŸããããã®æã«äœ¿ãã®ã runtime parameter ã§ããããã䜿ãããšã§æ¥ä»éšåãåçã«å€æŽããããšãã§ããŸãã{run_time-9h|"%Y%m%d"}ã®ããã«å®è¡æå»ããæéããããããããã©ãŒãããã倿Žããããšãã§ããŸããäŸãã°runtimeã 2024-04-01 05:00:00 ã®å Žåã« {run_time-9h|"%Y%m%d"} ãæå®ãããš 20240331 ãšããå€ã«ãªããŸãã # å®çŸ©ããéã®S3 URI s3://S3BucketName/ExportTaskIdentifier_{run_time-9h|"%Y%m%d"}/table_name/*.parquet # å®éã«åç
§ãããS3 URI(2024-04-01 05:00:00ã«å®è¡ãããå Žå) s3://S3BucketName/ExportTaskIdentifier_20240331/table_name/*.parquet ä»åŸã®èª²é¡ 詊éšçãªéçšããã®è±åŽ è² è·ãã³ã¹ãã飿ºã«ãããæéã詊ç®ã§ããã§ããªãã®ã§ãäžéšã®DB(ãããã¯ããžã®åœ±é¿ã極åäœãDBãéžå®)ã«éå®ããŠã®éçšã«ãªã£ãŠããŸããä»åŸã¯ä»ã®DBãžã®å±éãè¡ã£ãŠãããããšæã£ãŠããŸãã Airflowã®ããŒãžã§ã³ã¢ãã çŸç¶ãboto3ãGoogle Cloud CLI ã³ãã³ãã§ã®å®è£
ãšãªã£ãŠããŸããå®ã¯Airflowã«ã¯ä»¥äžã®ãããªãªãã¬ãŒã¿ãŒããããboto3ãªã©ã䜿ãããšãå®è£
ãå¯èœã§ãã RdsStartExportTaskOperator BigQueryCreateDataTransferOperator ä»å䜿ããªãã£ãçç±ã¯BASEã®AirflowãµãŒããŒã®ããŒãžã§ã³ãäœããŠå©çšãã§ããªãã£ãããã§ãããããŒãžã( Amazon Managed Workflows for Apache Airflow )ãžã®ç§»è¡ãèããŠããããããŒãžã§ã³ãäžããããã®ä»ã¯ãŒã¯ãããŒãžã®åœ±é¿ç¯å²ã確èªã§ããŠããªããããäžæŠã¯ä»åã®åŠçã®å®è£
ãåªå
ããŸãããä»åŸã¯ããå®è£
ãã·ã³ãã«ã«ããããã«Airflowã®ããŒãžã§ã³äžããè¡ããäžèšãªãã¬ãŒã¿ãŒã«åãæ¿ããŠãããããšæã£ãŠããŸãã æåŸã« 詊éšéçšã§ã¯ãããŸãããããŒã¿é£æºåŠçã®åãæ¿ããè¡ãããšãã§ããŸãããããã«ãã£ãŠããå€ãã®ããŒã¿ãåæåºç€ã«éããŠããããšãå¯èœã«ãªã£ããšæã£ãŠããŸãããŸãEmbulkãžã®è² è·ãäžãã£ããããã§å
šäœãšããŠã®é£æºæéãæ©ãŸã£ãŠããŸãã æåŸãšãªããŸãããåŒç€Ÿã§ã¯ããŒã¿ãšã³ãžãã¢ãåéããŠããŸããäžèšã§è¿°ã¹ã課é¡ä»¥å€ã«ãBASEã®åæåºç€ã«ã¯å€ãã®èª²é¡ããã£ãŠããšãŠãããããã®ããä»äºããªãšæã£ãŠãããŸãããèå³ã®ããæ¹ã¯æ°è»œã«ãå¿åãã ããïŒ https://open.talentio.com/r/1/c/binc/pages/94358
2024/03/07(æš)~2024/03/09(å)ã«éå¬ããã PHPerKaigi 2024 ã«ãŠãBASEæ ªåŒäŒç€Ÿãã2åã®ã¡ã³ããŒãç»å£ããŸãã! ç»å£è
2 åããã³ã¡ã³ããšãäŒå Žã®æ§åãã»ãã·ã§ã³ã«ã€ããŠãå±ãããŸã! ç»å£è
ã®ã³ã¡ã³ã Futoshi Endo ( @Fendo181 ) speakerdeck.com BASEã§ããã¯ãšã³ããšã³ãžãã¢ãããŠããŸããé è€ã§ãã 2æ¥ç®ã«ãPHP8ã®æ©èœã䜿ã£ãŠå
ç¢ã«ã³ãŒãããæžãããšããã¿ã€ãã«ã§çºè¡šãããŠé ããŸããã æ¥åã§ãPHPãæžããŠããã®ã§ãããPHP8ã§æäŸãããŠããæ©èœã¯äœ¿ã£ãŠããå
ç¢ã«æžãã«ã¯ã©ãããã°ããã®ã? ãæ°ã«ãªã£ãŠããããå®éã«æ¥åãéããŠåŸãçµéšã ã£ãããèªåã§èª¿ã¹ãå
容ããŸãšããŠçºè¡šããŸããã å人çã«ã¯ãå
ç¢ããšãã壮倧ãªããŒããéžãã§ããŸã£ãäºã«è¥å¹²åŸæãããã®ã§ãããè³æãäœãã«ããã£ãŠã t_wada ããã®åç» ã ã£ãããæžç±ãèªã¿æŒã£ã圱é¿ã§ãèªåãªãã«æŽçã§ãããã€ã³ããå€ãå匷ã«ãªããŸããã ç»å£åŸã®è³ªåã§ã¯ãå®éã«PHP8.2ããå°å
¥ããããèªã¿åãå°çšã¯ã©ã¹ïŒreadonly classïŒãã®æŽ»çšæ¹æ³ã®è³ªåã ã£ãããå®éã«å
ç¢ãªã³ãŒããæžãäžã§èããŠããäºã®ãã€ã³ããèãããŠãåå è
ã®æ¹ãšæèŠå¹æãåºæ¥ãŠè¯ãã£ãã§ãã ä»åçºè¡šããŠæã£ãã®ã¯ããŸã ãŸã èªåã®äžã§PHP8ã䜿ã£ãŠå
ç¢ãªã³ãŒããæžãäžã§ã®çµéšãæµ
ãéšåããããšèªèŠããã®ã§ãä»åŸã沢山ã³ãŒããæžããŠåŠãã§è¡ãããšæããŸããã 02 ( @cocoeyes02 ) fortee.jp BASE BANKããŒã ã§ãã«ãµã€ã¯ã«ãšã³ãžãã¢ãããŠãã倧接ã§ãã ä»åã¯ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ã³ãŒããŒã§ãPHPç³»ã«ã³ãã¡ã¬ã³ã¹åçäŒ&壮è¡äŒããšããã2024幎ã«è¡ããã/è¡ãããPHPç³»ã«ã³ãã¡ã¬ã³ã¹ïŒåæµ·éãé¢è¥¿ãPHPerKaigiãå°ç°åãéŠå·ãçŠå²¡ãæ±äº¬ïŒã®å®è¡å§å¡é·ã«ããããã«ãã£ã¹ã«ãã·ã§ã³ã«åå ãããŠããã ããŸããã 話ããŠããããŒãã«ã¯ ãã©ãããã³ã³ãã³ãã®ã¢ã€ãã£ã¢ãæãã€ããŠãããïŒã ãéå¬ã決ããç¬éã®ããšãæããŠïŒã ãæ°èŠã³ãã¥ããã£åå
¥è
ãå¢ããããã®å·¥å€«ãããã°èãããïŒã ãªã©ããããŸããã ã©ã®ã«ã³ãã¡ã¬ã³ã¹ã嵿工倫ããããããã£ãã®ãããã§ããããéå¬å Žæã®å°åãçãäžããããšããç±æãåå§å¡é·ã®ãã¯ãŒãã²ãã²ããšæããããã¯è² ããŠãããªããã»ã»ã»ïŒãšããæ°æã¡ã«ãããŠãããŸããã ä»åç»å£ããå§å¡é·ã®ã«ã³ãã¡ã¬ã³ã¹ä»¥å€ã«ãæ²çžãããã2024幎ã¯PHPç³»ã«ã³ãã¡ã¬ã³ã¹ãããããéå¬ããã幎ã§ãããã²åPHPç³»ã«ã³ãã¡ã¬ã³ã¹ãžã®åå ãåŸ
ã¡ããŠãããŸãïŒ çŸå°ã§èŠãã»ãã·ã§ã³ãäžéšçŽ¹ä» privateã¡ãœããã®ãã¹ãã£ãŠæžããªãæ¹ããããã ã£ãïŒ speakerdeck.com asumikan ããã«ããçºè¡šã§ããã¹ãã³ãŒãã§ãprivateã¡ãœããã§æžãããåŠçãæžããªãçç±ã«ã€ããŠã®çºè¡šã§ããã privateã¡ãœããã¯æžããªãæ¹ãããâŠãšããã®ã¯ããèããã©ãã®çç±ãããèªèº«ã®éçºã§ã®äœéšè«ã蟌ããŠèª¬æããããŠããè¯ãã£ãã§ãã ããããžãã®ã話㯠t_wada ããã®ããã° ã§ã以å玹ä»ãããŠããã®ã§ãããasumikan ããã®çºè¡šã§ã¯ECãµãŒãã¹ã®çºæ³šåŠçã顿ã«èª¬æãããŠããŠãããããè¯ããã¹ããæžãããã®éçãæžãããŠããŠã€ã¡ãŒãžãæ¹§ããããã£ãã§ãã åŸãäœè«ãšããŠã¯çºè¡šãæçŸ€ã«ããŸãããã®ã§ãç»å£ããéã«ã¯ãã²åèã«ãããæ°æã¡ã«ãªããŸããã ã©ããã£ãŠWebãµãŒãã¹ã®ããŒãžè¡šç€ºé床ã1/3ã«ããã / how-to-reduce-display-speed speakerdeck.com ãŽãããã²ãã ããã«ããçºè¡šã§ããWebãµãŒãã¹ã®ããŒãžè¡šç€ºéåºŠãæ¹åãã話ã§ããŸãå°å
¥ããããªãããŒãžè¡šç€ºé床ã¯å€§äºãªã®ã?ãã®äžå¯§ãªèª¬æããããã®åŸã®æ¹åæ¹æ³ãŸã§çްããæžãããŠããããããããã£ãã§ãã å人çã«ã¯ããããžãããã©ãŒãã³ã¹æ¹åç³»ã ãšäºåã«æž¬å®ã§Devtoolã䜿ãã®ã¯èãã®ã§ããããããã¡ã€ã©ã§Xdebugã䜿ããã®ã¯ç¥ããªãã£ãã§ãã åŸåã§ã¯å®éã«ããã©ãŒãã³ã¹æ¹åã§ã¯ãšãªã®ãã¥ãŒãã³ã°ãè¡ã£ãããphp.inc ã® opcacheã®èšå®ãæå¹ãããã§ãã©ãã©ãæ¹åãããŠããã®ãèŠãŠãããïŒããšãªããŸããã ã¯ãããŠã®ã¡ã³ããŒè²æããããŒãžã£ãŒãšã¡ã³ããŒèŠç¹ã§æ¯ãè¿ã1幎é speakerdeck.com æ°žäºçŸæ³¢ ãã ã«ããçºè¡šã§ããã¯ãããŠã®EMãšãªããã¡ã³ããŒè²æãè¡ãã«ããã£ãŠãèªèº«ãçµéšã説æãããŠããŸãã æåã®ãç¥ãåãæãããã®ãæ¢ãåãæããããããããæããšãåæéæ¯ã§EMãšããŠã¡ã³ããŒãšãã£ããã«åãçµãã å
容ãå€ãã£ãŠããŠå匷ã«ãªããŸããããã®çºè¡šã¯çŸå°ã§èããŠããã®ã§ãããã¡ã³ããŒãšåãç®ç·ã«ãã£ãŠäžç·ã«èµ°ã£ãŠããæãäŒãã£ãŠããŠè¯ãã£ãã§ããè²æããåŽãšãè²æãããåŽã§ã¡ãããšèªèãåãããã®ã倧äºã ãšæã£ãçºè¡šã§ããã ãŸãšã PHPerKaigi 2024 ã®äŒå Žããäžéã»ã³ãã©ã«ããŒã¯ã«ã³ãã¡ã¬ã³ã¹ãã«å€ãã£ãã®ã§ãããã¹ã¿ããã®æ¹ã
ã®çŽ æŽããããªãã¬ãŒã·ã§ã³ã§ä»åãæ¥œããåå ãã§ããŸãããã¹ã¿ããã®æ¹ã
ã«ã¯æ¥åã§ãå¿ããã«ãé¢ããããå€ãã®æéãã«ã³ãã¡ã¬ã³ã¹æºåãžæ³šãã§ããã ããããšæããŸãã ãã®å ŽãåããŠåŸ¡ç€Œç³ãäžããŸãã ãŸãæ¥å¹Žã® PHPerKaigi ã§ãç©æ¥µçã«åå ããŠè¡ãããšæããŸã! ããããšãããããŸãã! æåŸã«ãBASE ã§ã¯çµ¶è³æ¡çšæŽ»åãããŠããŸã! èå³ãããæ¹ã¯ä»¥äžã®ãªã³ã¯ããã芧ãªã£ãŠããã ãããšå¹žãã§ã! binc.jp
ããã«ã¡ã¯ãBASE BANK Divisionã§äºæ¥è²¬ä»»è
ãããŠããæ³å·ãšç³ããŸãã ä»åã¯ROSCAããäž»å¬ã®ROSCAFE TECH NIGHT #5ã§ç»å£ãããŠããã ããŸããã ãã®ç»å£èšé²ãšã¬ããŒãã§ãã rosca.connpass.com æ³å·ã®ç»å£å
容 ã€ãã³ãã¿ã€ãã«ã«åããåã¯CTOã§ã¯ãªãã®ã«ç»å£ãããŠããããšããè¥å¹²ã®åºãªãæã®ããç»å Žã§ããããå
æ°ã«çºè¡šãããŠããã ããŸããã å
容çã«è¥å¹²æµ®ãããªãšããã£ããã§ãããä»ååå è
ã®éžå®ããããããã®ããæå€ã«ãå系統ã®çºè¡šã䞊ã³ãŸããã çºè¡šã¹ã©ã€ãã¯ä»¥äžã«ãªããŸãã speakerdeck.com çºè¡šã®è¶£æšã¯ããšã³ãžãã¢ã®ãã£ãªã¢ãã¹ã«ã¯äºæ¥è²¬ä»»è
ãããããšãã話ã§ãã åã®ãã£ãªã¢ãã¹ãšããŠã¯ãšã³ãžãã¢âPdMâäºæ¥è²¬ä»»è
ãªã®ã§ããã ãªãã§ãã®ãããªãã£ãªã¢ãã¹ã蟿ã£ãã®ã ããããšèããŠããæã«ä»¥äžã®ãããªã€ã¶ãããããŸããã 1人ã§100人åã®ä»äºãããšã³ãžãã¢ã¿ãããªãã®ã«æ§ãããã£ãŠãèªåãªãã«ãããäœçŸããããšããçµæããããã¯ãããäºæ¥ãŸã§èŠããããã«èªåã®é¢ããç¯å²ãåºããã£ãŠæããªãã ããªãæ°è³ªçã«çªãè©°ããããç¹ããã¿ãããªã»ãããã£ãŠããšãããã — æ³å·æ
¶å€ª@BASE BANK (@gimupop) 2024幎2æ22æ¥ (ããããã ãã) ãã®ã1人ã§100人åã®ä»äºãããšã³ãžãã¢ã¿ãããªãã®ã«æ§ãããšããèšèãåºãŠããæã«ãæãç©ãåãããããªæ°æã¡ã«ãªãããã®éšåãèšããŸããŠè©±ããŠã¿ãããšããããšã§äœã£ãè³æã«ãªããŸãã èªåãå®éã«äºæ¥è²¬ä»»è
ã«ãªã£ãçµç·¯ãšããŠã¯ãè¶³ããªãã¹ããŒã¹ãåããŠãã£ãããããªã£ãããšãã衚çŸãæ£ããã§ãã ãã åŸããèããæã«ããèªåã®ãã¯ãŒãæå€§éäºæ¥ã®ããã«ãªãããšã«äœ¿ããããšæã£ããããããªã£ããã ãªãšããããšã«æ°ãã€ããŸããã ãšã³ãžãã¢ã ããããã§ããã¢ãããŒããã ããããã®äºæ¥ã®äŒžã°ãæ¹ãšããéšåãä¿¡ããŠããã®ã ãšæããŸãã çºè¡šã®äžã§åºãŠããäºæ¥èšç»ãåŒããŠã¿ãã¯ããžã§ããããã§ãããã®èšç»ã®äžã§èªåã«ã§ããããšã¯ãªããªãã ãããšèããŠã¿ããšãã¡ããã¡ãèŠçãã¯ãªã¢ã«ãªããšæããŸãã åçç¹ãšããŠã¯ããªãã§äºæ¥è²¬ä»»è
ã«ãªãããšãã1人ã§100人åã®ä»äºããããšãã«ç¹ããã®ããšããæãäžããçãã£ããªãšããã®ãããã®ã§ã次åã¯ãããè£è¶³ããçºè¡šã«ããããªãšèããŠããŸãã ãã®ããŒãæŠãæ°æºã
ã§ãã ãããã¯ãã§åè² ããäŒç€Ÿã«ãšã£ãŠãäºæ¥èšç»ããäŒç»ããéçºããå
šãŠäžè²«ããŠã¿ãããšããããšã¯ãã®ããã匷ã¿ã«ãªããŸãããã®ç¹ã ãã§6æéèªããŸããæ³£ãæ³£ãã«ããããŸããã ãã®çºè¡šã§äžçªäŒãããã£ãããšãšããŠã¯ãã誰ããæŠãæ¹ãèããã°æåç·ã§æŠããããšããããšã§ããèªåã®åŒ·ã¿ãèãç¶ããŠããããããŸãåãçµãããšã«çŽä»ããããšããšãŠã倧åãªããšã ãšèããŠããŸãã BASEã¯ãèªåã®å¥œããªããšãããŠãããä»äºã«ãããçµæžæŽ»åãè¡ã£ãŠããã人ã
ãå¿æŽãããµãŒãã¹ã§ãã ã ããããããã®ãµãŒãã¹ãäœã£ãŠããæã
ããããããã®äººãæã€å¯èœæ§ãä¿¡ããŠãæ¥ã
æ¥ã
ã¬ãã«ã¢ããããªããä»äºããããã ãšããçæãäŒããã°ãšããçºè¡šã§ããã å人ããã°ã«ãè£è¶³èšäºãæžããŸããã®ã§ããæéããæ¹ã¯ãã²ã note.com åçºè¡šãžã®ææ³ æ ªåŒäŒç€Ÿã¿ã€ã㌠å·è¡åœ¹å¡CTO äºç° åœãã çºè¡šã¿ã€ãã«ã¯ãã¿ã€ããŒã®æŽå²ã«èµ·ããããšãããããæœè±¡åããŠCTOã«æ±ããããããšãã§ããã çåæ§ãã€ã¢ã¹ãšããããŒã¯ãŒãããããŸãããã赀裞ã
ãªå®äœéšãç¶ŽãããŠãããäºæ¥ãäœã£ãŠæé·ãããŠããã£ãŠããããããšã ããªãšæ·±ãéŠè¯ããŠããŸããŸããã CTOãšããŠå¿
èŠãªèŠçŽ ã« èŠçŽ â å€åã奜ãããš èŠçŽ â¡ è«Šããªãããš èŠçŽ â¢ ãã®ã¥ãããšäºæ¥ãžã®ç±ãããŒã ãæããŠãããããžã§å
šéšããããªãšæããŸãããç¹ã«è«Šããªãããšãåã®ããŒãã«ãå
¥ã£ãŠããŠãã³ã·ã§ã³ãäžãããŸããã äºæ¥ãäœã£ãŠããã£ãŠç·åæ Œéæã§ããããšããèšèã§åæã«çŽåŸããŸããã æ ªåŒäŒç€Ÿtacoms CTO äºäž å°æãã çºè¡šã¿ã€ãã«ã¯ãCTOãšããŠã©ã®ããã«åœ¹å²ãå€ããŠããã / 4幎éãæ¯ãè¿ã£ãŠã¿ããã§ããã speakerdeck.com å®éã®ããŒãã·ã³ã°ã¹ã«å¯Ÿããä¹ãè¶ãæ¹ã赀裞ã
ã«æžãããŠãããè奮ããŸããã ãããŠãã¿ã®äžã§ããŸããã®äºæ¥èšç»è¢«ããšããããšã§å€§å€å€±ç€ŒããŸããã çºè¡šå
å®¹ã«æ·±ãåæ°ã¥ããããŸãã ãšãŒãã³ã©ãæ ªåŒäŒç€Ÿ å
±å嵿¥è
ïŒåç· åœ¹CTO å±±å£ ä¿¡è¡ãã çºè¡šã¿ã€ãã«ã¯ãæç¶çæé·ã®ããã®ãããã¯ããšçµç¹ã¥ãããã§ããã speakerdeck.com çºè¡šã®äžã§äŒç€Ÿã®è¡åæéãäœã£ããããããã¯ããéæãã¹ãããã·ã§ã³ãšå
±éããŠãããšããããšãçºè¡šã®äžã§ä»°ã£ãŠãããããããã話ã ãªãšæããŸããã ãšãŠãããã·ã§ã³ãã¡ãŒã¹ããªäŒç€Ÿã ãªãšæãåèã«ãªããŸããã ç·æ¬ ãäºæ¥ãæ»ãªãªãããã«ã§ããããšãããåãããšãã芳ç¹ã«ãããŠãCTOãäºæ¥è²¬ä»»è
ãå
±éé
ããããªãšããããšã匷ãèªèã§ããäŒã«ãªããŸããã åããã¡ãããšãšã³ãžãã¢ãšããŠé²åããçµæã®äºæ¥è²¬ä»»è
ãªãã ãããšããããšãåæã«èªãã€ããã§ããããã¯ããããã¿ããªåããªãã ãšæãããšã¢ãæ°æã¡ã«ãªã£ããããè¯ãäŒã§ããã çãæ®ã£ãŠããããšããæããæãåããŠæé«ã§ãããæ°èŠäºæ¥ãšãã¹ã¿ãŒãã¢ããã£ãŠããã ããªãšæãããã¡ããã¡ããã¯ãŒãããããŸããã äž»å¬ããã ããŸããROSCAãããããããšãããããŸããã æåŸã«ãBASE BANKäºæ¥éšã¯çµ¶è³æ¡çšæŽ»åããããŠããã ããŠããŸãã æ¡çšè³æãæè¿æ°ããããŠèªã¿ããããªã£ããšæãã®ã§ããã²ãæ°è»œã«ã«ãžã¥ã¢ã«é¢è«ãããã声ãããé¡ãèŽããŸãã 人ã®ãã£ã¬ã³ãžãæ¯æŽããå¯èœæ§ãåºããæŽ»åããã²ãäžç·ã«ïŒãããããé¡ãããŸãïŒ speakerdeck.com
ããã«ã¡ã¯ã BASEã® ProductDevã§ãšã³ãžãã¢ãããŠããŸããé è€( @Fendo181 )ã§ãã ä»åã2024幎2æ11æ¥ã«éå¬ããããPHPã«ã³ãã¡ã¬ã³ã¹é¢è¥¿2024ãã«ã³ã¢ã¹ã¿ãããšããŠåå ããŠããŸãã! 2024.kphpug.jp 2018幎ãã6幎è¶ãã«éå¬ããããPHPã«ã³ãã¡ã¬ã³ã¹é¢è¥¿2024ãã§ãããç¡äºã«éå¬ã§ããŸãããèãéããŠã¿ãã°431åãšããå€ãã®æ¹ãåå ããã倧ããªã€ãã³ãã ã£ããšæããŸãã ãã®èšäºã§ã¯ãããªãPHPã«ã³ãã¡ã¬ã³ã¹é¢è¥¿2024ãã«ã³ã¢ã¹ã¿ãããšããŠåå ããèæ¯ããèªåã®åœ¹å²ããã³ã¢ã¹ã¿ãããçµéšããŠæã£ãããšãªã©ããŸãšããŠã¿ãããšæããŸãã ãŸãããã®èšäºããã£ããã«ã³ã¢ã¹ã¿ããã§ãªããŠãããªãããã®æè¡ã³ãã¥ããã£ã«åå ãããã£ããã«ãªãã°å¹žãã§ãã ã³ã¢ã¹ã¿ããã«åå ããããšæã£ããã£ããã«ã€ã㊠ãPHPã«ã³ãã¡ã¬ã³ã¹é¢è¥¿2024ãã®ã³ã¢ã¹ã¿ããã®åéãå§ãŸã£ãã®ãå»å¹Žã®8æé ã§ããã å
ã
PHPã«é¢ãããããªãããã®æè¡ã€ãã³ãã«åå ããã®ã奜ãã§åœæ¥ã¹ã¿ãããçµéšããäºã¯ãããŸããã ãã ãæ°å¹Žã¶ãã«ãPHPã«ã³ãã¡ã¬ã³ã¹é¢è¥¿ããéå¬ãããšããããšã§ãã³ãã¥ããã£ãžã®è²¢ç®ãå«ãããªã«ãå°ãã§ããæäŒããã§ããã°!ããšæã£ãã®ãåå ãããã£ããã®1ã€ã§ãã ãŸãé¢è¥¿ã§ã®PHPã³ãã¥ããã£ã®æ¹ãšã¯ç¥ãåããå°ãªãã®ã§ããã£ãããªãçŸå°ã§äº€æµãã§ããã°ãšèããŠã³ã¢ã¹ã¿ãããšããŠåå ããŠã¿ãŸããã ã³ã¢ã¹ã¿ããã§ã®èªåã®åœ¹å²ã«ã€ã㊠èªåã¯ãäžè¬åå è
察å¿ããŒã ãã«é
å±ãšãªããŸããã ãã®ããŒã ã§ã¯äžè¬åå è
ãžåãããã±ãã販売ã®éçšãåœæ¥ã®äŒå Žéå¶ãã¹ã¿ããã®ç®¡çãæèŠªäŒã§ã®ã±ãŒã¿ãªã³ã°åšãã®æºåãäŒå Žé£æºãªã©ãæ
åœããããŒã ã§ãèªåã¯äž»ã«ã±ãŒã¿ãªã³ã°åšããšäŒå Žé£æºãè¡ã£ãŠããŸããã ä»ã®ã³ã¢ã¹ã¿ããã®åœ¹å²ã«ã€ããŠã¯ä»¥äžã®noteèšäºã§ããŸãšãŸã£ãŠããŸãã®ã§èå³ãããã°ã芧ãã ããã note.com å
·äœçã«èªåã察å¿ããäºãæŽãåºããšä»¥äžã®äœæ¥ããã£ãŠããŸããã æèŠªäŒã¹ãã³ãµãŒäŒç»ã®æºå æèŠªäŒã§ã®ã±ãŒã¿ãªã³ã°ã®æé
äŒå Žã§åå è
ã«é
åžããããªã³ã¯ã®æé
åœæ¥ã¹ã¿ããåãã®ãåŒåœã®æé
ã«ã³ãã¡ã¬ã³ã¹äŒå ŽãæäŸããäŒæ¥æ§ã®é£æº ã«ã³ãã¡ã¬ã³ã¹äŒå Žãšã®é£æºã«ã€ããŠã¯ãWifiãç
§æãªã©äŒå Žããã¬ã³ã¿ã«ããæ©æããäºåã«ã¹ãã³ãµãŒåŽããéãããŠããè·ç©ãç¡äºã«åãåããããæžé¡ãçšæãããªã©åããŠãŸããã ã«ã³ãã¡ã¬ã³ã¹äŒå Žãçšæããäžã§ãåœæ¥åé¡ãªã宿œããããã«æäŸå
äŒæ¥æ§ãšã®é£æºãéèŠã§ãããéå¬åæ¥ãŸã§ã«ãäŒå Žã®èšåã®äœ¿çšã«ã€ããŠã¯äœåºŠãé£çµ¡ããšããªããæºåãããããŸããã åœæ¥ã®åãã«ã€ããŠ åœæ¥ã¯äž»ã«äŒå ŽåŽã§ã®èšåã®é
眮ãããªã«ãåé¡ãèµ·ãããšãã«åããŠèŠåããããŠãŸããã éå¬åã«ãã¡ãŒã«ã§ã®ãããšãã§ã«ã³ãã¡ã¬ã³ã¹äŒå Žã®è³æã«ã¯äœåºŠãç®ãéããŠãŸããããèªåãæ±äº¬ã«åšäœããŠãããããå®éã®äŒå Žã¯èŠããŠãªããçŸå°ã«ããã¹ã¿ãããæ®åœ±ããŠãã ãã£ãäŒå Žã®åçãèŠãªããé
眮ãªã©ãã€ã¡ãŒãžãã¬ãŒãã³ã°ãããŠãŸããã ãããã£ãŠãåœæ¥ã®æäžçªã«äŒå Žã«å
¥ã£ãŠãããããããŸéšå±ã®é
çœ®ã®ææ¡ããã¡ãããšã¡ãŒã«ã§ç³è«ããéãã«ã¬ã³ã¿ã«æ©æãè·ç©ãå±ããŠãããã確èªããŠãããšããã®ãèŠããŠããŸãã ãã®åŸã¯äŒå Žã§ã®äºæãã¬ãã©ãã«ãèµ·ãããšãã«åããŠãé©å®ã«ã³ãã¡ã¬ã³ã¹äŒå ŽãæäŸããäŒæ¥æ§ãšé£çµ¡ãããªãããäŒå ŽãèŠåãããŠãŸãããæ°å¹Žã¶ãã®éå¬ã§éå»ã®ãã¬ããžãå°ãªããåœæ¥ã®äºæãã¬ãã©ãã«ãäžçªã®å¿é
ã§ããã ããããç¹ã«å€§ããªãã©ãã«ããªãæåŸãŸã§é²è¡ã§ããã®ã¯æ¬åœã«è¯ãã£ããšæããŸãã æ¯ãè¿ã£ãŠã¿ãŠ ãPHPã«ã³ãã¡ã¬ã³ã¹é¢è¥¿2024ããç¡äºã«éå¬ã§ããããšãããã§ããã6幎ã¶ãã®éå¬ã«ãé¢ããããæ²¢å±±ã®äººãåå ããŠé ãã亀æµããå ŽãæäŸã§ããããšããªã«ãããã¹ã¿ãããšããŠå¬ããã£ãã§ãã ãŸãããããŸã§éå¶ã«é¢ãã£ãŠããã³ã¢ã¹ã¿ããããåœæ¥ã¹ã¿ããã®çãããšããçµãã£ãŠããã®æèŠªäŒã§äº€æµã§ããããšãè¯ãæãåºã«ãªããŸããã ãŸãšã ã³ã¢ã¹ã¿ãããšããŠåå ãããšããæ
åœããä»äºãç¡äºã«ã§ãããäžå®ã ã£ãã®ã§ãããç¡äºã«ãããããŠããã£ãã§ãã ãããŸã§ã¯äžäººã®ãšã³ãžãã¢ãšããŠã¢ãŠãããããããããã«ã«ã³ãã¡ã¬ã³ã¹ã§ç»å£ããããå匷äŒçã§çºè¡šãããŠãŸããããã³ã¢ã¹ã¿ãããšããŠåå ããŠã¿ããš ãã®å ŽæãæäŸããã«ããã£ãŠæ²¢å±±ã®æå¿ã®æ
ç±ã«ãã£ãŠæ¯ããããŠããããšãããããŸãã ãã®äžå¡ãšããŠãä»åãPHPã«ã³ãã¡ã¬ã³ã¹é¢è¥¿2024ã®éå¬ããæäŒãã§ããããšãå¿ããèªãã«æããŸãã ä»åŸãPHPã«é¢ããããã«ã³ãã¡ã¬ã³ã¹ã¯éå¬ãããã®ã§ãããã³ãã¥ããã£ãçãäžããŠã¿ãããšæã£ãæ¹ã¯ã¹ã¿ããã«å¿åããŠã¿ãŠãã ãã!
ããã«ã¡ã¯ïŒBASEã§ãšã³ãžãã¢ãããŠãã竹æ¬ã§ãã 2/10(å)ã«åºå³¶åœéäŒè°å Žã§éå¬ããã YAPC::Hiroshima 2024 ã«åå ããŠããã®ã§ãåœæ¥èãããšãã§ããã»ãã·ã§ã³ã®ææ³ãã€ãã³ãã¬ããŒããšããŠãå±ãããŸãã äŒå Žã®æ§å BASE ã¯YAPC:Hiroshima 2024ã«ãã©ããã¹ãã³ãµãŒãšããŠåè³ããŠããŸããã åè³ã®èæ¯ã«ã€ããŠã¯ä»¥äžã®èšäºãã芧ãã ããã YAPC::Hiroshima 2024ã«BASE ãPlatinumã¹ãã³ãµãŒãšããŠåè³ããŸã å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ çµå¶ã»æå¿ã»ãšã³ãžãã¢ãªã³ã° ãã£ãªã¢ã®åããã12幎éCTOãšãã圹å²ãæ
ã£ãŠããæŸæ¬ãããããœãããŠã§ã¢éçºã®å»¶é·ã«ããçµå¶ãšããããŒãã§çºè¡šãããŠããŸããã çµå¶è
ãšããtech lead ãšã Engineering Managerãšãåãã®éã圹å²ã®ããæ¹ãšããããšã³ãžãã¢ãªã³ã°ãšã©ãç¹ãã£ãŠããããšãã話ã§ã倧å€è峿·±ãèãããŠããã ããŸããã 以äžã¯èªåã®èŠçŽmemoã«ãªããŸãã çµå¶ã¯3ã€ã®å€æ°(äºæ¥ã»çµç¹ã»æè¡)ãšïŒã€ã®å¶çŽ(ã客æ§, 瀟å¡ãæè³å®¶ã瀟äŒ)ãããã 倧åãªåæãšããŠãã¿ããªã®æ¥œãããããã æ¥œãããå®çŸããããã«3ã€ã®å€æ°(ã¢ãŒããã¯ãã£)ãåæã«æç«ããã4ã€ã®å¶çŽ(ã¹ããŒã¯ãã«ããŒ)ãæºè¶³ãããããšãæè¡çµå¶è
ã¯èããŠããã æè¡ã ãããšã³ãžãã¢ãªã³ã°ã®å¯Ÿè±¡ã§ã¯ãªããäºæ¥ã»æè¡ã»çµç¹ããœãããŠã§ã¢çã«èšèšã»éçšã§ãã é·æçã§ããã»ã©æ¥œãã æ ¹å¹¹ã¯æå¿ å¹³æã®ãšã³ãžãã¢ãã什åã®ãšã³ãžãã¢ãžã®éºèšãæè¡æ
å ±ãäŒéããææ®µã®å€é·ã çºè¡šè
: - æ«äº åªä»( @941 )ãã - äŒè€ çŽä¹( @naoya_ito )ãã - åç° è£ä»( @yusukebe )ãã - åç° å人( @t_wada )ãã - 銮 å¯ä¹
( @tomihisa )ãã ãã®çºè¡šã¯ã©ã³ãåŸã®ããã«ãã£ã¹ã«ãã·ã§ã³ã§ããã 941ãããšããæ¹ããã¡ã·ãªãããªããäºåã«çšæããŠããããŒãã ã£ãããäŒå Žå
ã§åºãããŒãã«ã€ããŠãã£ã¹ã«ãã·ã§ã³ãããŠããŸããã ãã¡ã·ãªã®941ããã®è©±éã³ãç§éžã§ãåžžã«è©±ãéåããäŒå Žãç¬ãã«å
ãŸããŠããŸããã ãã³ãŒããæžããªãCTOã¯èªããªãããå人éçºãæè¿ãã¡ãã·ã§ã³ã«ãªã£ãŠããŠãããã䜿ã£ãŠãããšãã£ã¿ãšãã®ãã»ããã®ãã©ã¡ãã奜ãïŒãã¿ãããªããæ»ããçºèšãé£ã³äº€ããéåžžã«æ¥œããèãããšãã§ããŸããã ããšã»ã»ã®WWWå
¥éãã奜㿠ããããŸè©± è³æ: https://www.tohoho-web.com/ot/yapc-2024-tohoho.pdf çºè¡šè
: æç«ã
ãã ããšã»ã»ã®WWWå
¥éããéå¶ããŠããæç«ã
ããã«ããçºè¡šã§ããããšã»ã»ã®WWWå
¥éã¯1996幎ããçŸåšã«è³ããŸã§æŽæ°ãç¶ããããŠãããµã€ãã§ãåœæ¥ã®äŒå Žã»Twitterã¯å€§çãäžããã§ãããé·ãã«ããã£ãŠWebãµã€ããéå¶ãããŠãããšã»ã»ããããèŠãçŸåšã®Webéçºã«ã€ããŠæããšããããšã»ã»ããã®äººãšãªããããããšããœãŒããèãããšãã§ããŠãææ¿ã§ããã ã«ã³ãã¡ã¬ã³ã¹ã¹ãã³ãµãŒã®ã¹ã¹ã¡ çºè¡šè
: å·å£ ( id:dmnlk ) ãã åŒç€ŸCTOã®å·å£ããã®ã¹ãã³ãµãŒLTã¯ãã«ã³ãã¡ã¬ã³ã¹ã«ã¹ãã³ãµãŒãããã«ã¯ã©ããããããšããããŒãã§ããã ãããçãã§ãã æ±ºè£æš©ã欲ããïŒ ãã®ã¹ã©ã€ãã§ã²ãšç¬ããšã£ãåŸã«ãçšè°ãåºããŠåã¡åãã瀟ã®å
šäœäºç®ã確èªããã仲éãéãããªã©å
·äœçãªææ³ã玹ä»ãããŠããŸãããBASEãä»åYAPCã«ã¹ãã³ãµãŒãããã®ã¯äž»å¬ã®æ¹ã®ç±æã«è§ŠããããšïŒããŒããŒããæç«ã
ããã ã£ãããã ããã§ããèªåãæå±ããäŒç€Ÿãæè¡ã³ãã¥ããã£ã«è²¢ç®ã§ããæåãããããšãæ¹ããŠãããªããšæããŸããã çµããã« YAPCãã¡ããã¡ã楜ããã£ãã§ãïŒ åœæ¥ã¯äŒå Žã§ç¥ãåãã«ã°ã£ããäŒã£ãããæèŠªäŒã§å
šç¶ç¥ããªã人ãšè©±ãããšãã§ããããšããšãŠã楜ããæéãéãããŸããã éå¶ã»åå è
ã®çæ§ãæ¹ããŠãç²ãæ§ã§ããã
CTOã®å·å£ ( id:dmnlk ) ã§ãã ããã¯BASE Advent Calendar25æ¥ç®ã®èšäºã§ãã ä»å¹Žãåã¯ç«åè£ããŠãªãã®ã«åæã«æ¥çšãçµã¿èŸŒãŸããŠãŸãããæ¯å¹ŽæžããŠãããã¡ã³ããŒãå¢ããŠãã£ãŠãããŠããã®ã«ãªãã CTOã«ã€ã㊠èªåã¯2019幎ããBASEæ ªåŒäŒç€Ÿã®CTOããã£ãŠããŸãã æ°ã¥ããã4幎è¿ããã£ãŠããããšã«ãªã£ãŠããŠé©ããŠããŸãã ããŸã«ç€Ÿå€ã®ãšã³ãžãã¢ã®æ¹ãšãäŒããããšCTOã«ãªãã«ã¯ã©ãããã°ããããšããããšãèãããããšããããŸãã åå人ã®ãµã³ãã«ã§ã¯ãããŸãããå°ãæžããŠã¿ããããšæããŸãã ãªãCTOãå¿
èŠãªã®ã å¿
ãããCTOãå¿
èŠãªã®ã§ããããã ããã«é¢ããŠã¯åã¯å¿
èŠã§ãããšèããŸãã èªåãWebäŒæ¥ã«ãããšããåææ¡ä»¶ã¯ãããŸãããã·ã¹ãã ããã¯ãããžãŒãéåžžã«éèŠãªåžå Žåªäœæ§ãšãªããŸãã ãã ãããã¯ãéçºãããã ãã§ãªãææ°ã®æè¡ãã¬ã³ããææ¡ããããããäŒæ¥ã®ããžãã¹ã¢ãã«ã«çµ±åããããšãéèŠã§ããCTOã¯ãäŒæ¥ãåžå Žã§ç«¶äºåãä¿ã¡ã驿°çãªè£œåããµãŒãã¹ãæäŸã§ããããã«ããããã®éµãšãªã圹å²ãæãããŸãã CTOã¯ãæè¡ãšããžãã¹ã®äž¡æ¹ã®èšèªãçè§£ããäž¡è
ã®éã®ã³ãã¥ãã±ãŒã·ã§ã³ãšååãä¿é²ããŸããããã«ãããæè¡çãªæŽå¯ãããžãã¹æŠç¥ã«çµ±åããããã广çãªæææ±ºå®ãå¯èœã«ãªããŸãã æè¡ã¯åžžã«é²åããŠãããããCTOã¯ææ°ã®ç¥èãšã¹ãã«ãç¶æããçµç¹ãé©å¿ãããå¿
èŠããããŸããããã«ãããäŒæ¥ã¯å€åããåžå Žç°å¢ã«æè»ã«å¯Ÿå¿ããæç¶å¯èœãªæé·ãéæã§ããŸãã CTOã®åœ¹å²ã¯ãåã«æè¡çãªå°éç¥èãè¶
ããæŠç¥çãªæèããªãŒããŒã·ããããããŠããžãã¹ãšæè¡ã®çµ±åãéããŠãäŒæ¥ã®æåãšé©æ°ãæšé²ããéèŠãªèŠçŽ ã§ãã ããæžããšèªåããããã¡ãããšå®è¡ã§ããŠããããšãããšå€§åçåã«ãªããŸããã責åãšããŠã¯ãããããããããã§ãããã 圹å²ãšè²¬ä»»ã«ã€ã㊠äŒç€Ÿã®ãã§ãŒãºã«ãã£ãŠããã¯å€§ããå€ãããšæããŸãã åæã¹ã¿ãŒãã¢ããã®CTOã¯çµå¶è²¬ä»»ãšãããããããã¯ãªãŒãã«è¿ãããžã·ã§ã³ã«ãªãã§ãããã ã²ãããã«æ©èœå®è£
ãããããšã責åãšãªãå Žåã«ãã£ãŠã¯æ
ã·ã¹çãªããžã·ã§ã³ãå
Œä»»ããããšæããŸãã 嵿¥æ°å¹Žçµã¡ããã§ãŒãºãå€ãã£ãŠããäžã§æ¹ããŠCTOãšãããã®ã®éèŠæ§ãé«ãŸã£ãŠããã§ãããã äºæ¥æŠç¥ãšæè¡æŠç¥ãçµ±åããäžé·æçèŠç¹ã§æè¡éçºãé²ããŠããããšã«ãªããŸãã ãããã¯ãã¯ãŸã ãŸã ã°ããŒã¹ãããŠããã®ã§ã¡ã³ããŒã¯éçºã«æäžæ¯ã§ãããã ãã®äžã§CTOã¯æ¬¡ã®æªæ¥ã®éçºã®ããã®ããã«ããã¯ãèŠã€ããããæ¹åããŠããããã®æè¡æ€èšŒãããŒãããããæããŠããå¿
èŠããããŸãã çµç¹ã«é¢ããŠãçç®ããªããã°ãªããŸããã æè¡ããŒã ã®ãªãŒããŒãšããŠãCTOã¯ããŒã ã®è²æãã¹ãã«ã®åäžããããŠçç£æ§ã®æå€§åãæ
ããŸãããŸããçµç¹å
šäœã®æè¡çããžã§ã³ãå
±æããç°ãªãéšééã§ã®ååãä¿é²ããããšã§ãäŒæ¥ã®ç®æšéæã«è²¢ç®ããŸãã VPoEã®ãããªååšããããšåæ¥ãããããããããŸããã ã¹ãã«ã»ããã«ã€ã㊠ãããäžçªããèãããã®ã§ãããã©ã®ãããªæè¡ãæã£ãŠãããšCTOã«ãªããŸãããšããããŸãã å人çã«ã¯ãç¹å®ã®æè¡ã®å°éæ§ãšããããã¯äžéãã®æè¡ã«60ç¹ãããã®ç解床ãããããšã®æ¹ãéèŠã§ãã ç¹å®æè¡ã®æ·±æãã¯çŸå Žã®ã¡ã³ããŒã«ä»»ããåžå Žã®æè¡ååãšèªåéã®ãããã¯ããã·ã¹ãã ã«äœãå¿
èŠããèããããã«åéã«å¯ããªãèå³é¢å¿ããããšããã§ãããã ã€ã³ãã©ãã»ãã¥ãªãã£ã«ã€ããŠã®ç¥èã¯ã©ã¡ãããšãããšéèŠèŠããããšæããŸãã ã€ã³ãã©ã«é¢ããŠã¯ãµãŒãã¹ãã£ãã·ãã£ã®ãã©ã³ãã³ã°ãã³ã¹ã管çæèãæã€ã®ã«éèŠã§ãããã»ãã¥ãªãã£ã¯ã©ãããŠããµãŒãã¹ã°ããŒã¹ã®äžã§åŸåãã«ãããã¡ãªã®ã§å
èŠæ§ãæã£ãŠå顿èãæã€ã®ã«å¿
èŠãšãªããŸãã frontendæè¡ã«å°éæ§ãæã£ãŠãã人ãCTOã«å€ããªãã®ã¯ãAWSãGCPã®ãããªã¯ã©ãŠãã€ã³ãã©ãµãŒãã¹ã®rootæš©éãæž¡ãã¥ããããã§ã¯ãšæã£ãŠãããšããã¯ãããŸããæèŠå€ã§ãããããŸãããã çµå¶ã¹ãã«ã«ã€ããŠã¯æåããæã£ãŠãã人ã¯å°ãªãã§ããããåãåœåå
šãæã¡åãããŠããªãã£ããšæããŸãã é·æçãªããžã§ã³ãæã¡äŒæ¥æŠç¥ãå®è¡ããããã®æŠç¥çæèãã³ã¹ãå¹çã®é«ããœãªã¥ãŒã·ã§ã³ãéçºããŠããããã®è²¡å管çãæ§ã
䞊è¡ã§è¡ãããéçºã管çããããã®ãããžã§ã¯ã管çãªã©ãæ±ããããŠãããŸãã ãšã¯ãããã®ãããã¯ããã£ãŠããäžã§åŠãã§ãããããªãããã«æããŸããä»ã®äŒæ¥ã®å
茩CTOã®æ¹ãšè©±ããŠåŠãã§ããã®ããªã¹ã¹ã¡ã§ãã ãœããã¹ãã«ã«é¢ããŠãéèŠã§ãã æè¡ããŒã ãçœåŒãã¡ã³ããŒã®ã¢ãããŒã·ã§ã³ãé«ãçç£æ§ãåäžãããèœåãšããŠã®ãªãŒããŒã·ãããæè¡çãªæŠå¿µãéæè¡è
ã«ãããããããäŒããç°ãªãã¹ããŒã¯ãã«ããŒãšå¹æçã«ã³ãã¥ãã±ãŒã·ã§ã³ãåããããã«ãããªã©ã§ãã ç¹ã«ã³ãã¥ãã±ãŒã·ã§ã³ã«ã€ããŠã¯ããšã³ãžãã¢ã«ãšã£ãŠã¯éèŠã ãããšããæŠå¿µããã£ãããšéæè¡è
ã«äŒããäºãå¿
èŠã§ãã ããã§ãªãå Žåããªãã¡ã¯ã¿ãªã³ã°ãã¢ãŒããã¯ãã£å€æŽãªã©ã«ã€ããŠçµå¶é£ã«äŒãããã·ã¹ãã ã«åé¡ãèµ·ããŠãããã¯ãã®æé·ãé»å®³ããã¿ã€ãã³ã°ã«ãªã£ãŠãããã察å¿ãèš±ãããªããšãã£ãããšã«ãªããã¡ã§ãã身ã«èŠãããã人ãçµæ§ããã®ã§ã¯ãªãã§ããããã CTOã«ãªãããã«ã¯ããããã®ã¹ãã«ãšçµéšããã©ã³ã¹è¯ãæã¡åãããåžžã«ææ°ã®æè¡ãã¬ã³ãã«ææã§ããããšãæ±ããããŸãããŸããããžãã¹ãšæè¡ã®äž¡é¢ã§äŒæ¥ããªãŒãããããã®å¹
åºãç¥èãšæŽå¯ãäžå¯æ¬ ã§ãã ãã£ãªã¢ãã¹ã®ééç¹ãšããŠã®CTO CTOã®åœ¹å²ã¯ãåãªãçµçç¹ã§ã¯ãããŸããã ããã¯ããããç§ã®ãã£ãªã¢ãã¹ã«ãããéèŠãªééç¹ã§ãããæé·ãšçºå±ã®æ
ã®äžç°ã§ãããã®ããžã·ã§ã³ã¯ãç§ããããŸã§ã«ç©ã¿éããŠããçµéšãšç¥èãæŽ»ãããããã«æ¡åŒµããæ©äŒãæäŸããŠãããŸãã æ£çŽãªè©±ãããã°ã ICïŒIndividual Contributor )ãšããŠåããŠãããšããããèŠæãªããšãããå¿
èŠãããã¹ãã¬ã¹ãæããé¢ãäžå®ãããŸãã ã§ãããã£ãŠã¿ãŠ4幎ç¶ããŠã¿ãŠãèªåããã åããŠããã ãã§ã¯ç¥ãåŸãªãã£ãäžçãèãæ¹ã«å€ãè§Šãæ©ã¿èªåã®åŸæäžåŸæãæ¹ããŠå®æã§ããŠãããšæããŠããŸãã ãªã£ãŠããæ©ãã ãšãã®äžã€ã¢ããã€ã¹ããããšããã°ããšããããCTOãéãŸããããªã€ãã³ã(å祥寺ã«p2bhausãšããè¯ããåºããããŸã)ãªã©ã«é¡ãåºããŠæ§ã
ãªãã§ãŒãºã®CTOã«äŒããã£ãã°ããã«æ©ã¿ã話ããŠã¿ããšè¯ãã§ããããã©ãããŠããã®ãããªããžã·ã§ã³ã®æ©ã¿ã¯ãªãŒãã³ã«ãªããªãããšãå€ããå€ç¬ãªæŠãã«ãªããã¡ã§ããäŒç€Ÿã®ä»ã®ã¡ã³ããŒã«æ©ãã§ãããšãããå€ãèŠããããã«ããããªãã§ãããã ãã®æã«åããããªæ©ã¿ãæã¡ãçŸåšé²è¡ç³»ã§æ©ãã§ããäººãæ¢ã«è§£æ±ºããŠæ¬¡ã®ãã§ãŒãºãèŠæ®ããŠãã人ãã¡ã®è©±ãèãããšã¯å€§ããªãã©ã¹ã«ãªãã§ãããã ãŸãšã ãCTOã«ãªãããšããç®æšã¯ããã ã®è·æ¥çãªå°éç¹ã§ã¯ãªããæè¡ãšããžãã¹ã®äžçã§èªå·±ãå®çŸããæ
ã®äžéšã§ãããã®åœ¹å²ã§ã¯ãææ°ã®æè¡ãã¬ã³ããé§äœ¿ãã驿°çãªè§£æ±ºçãçã¿åºããããŒã ãã€ã³ã¹ãã€ã¢ããããšãæ±ããããŸããããã¯ãããªãã®æè¡ãã£ãªã¢ã«ãããŠãæ°ããªèŠéãéãã圱é¿åãæ¡å€§ããçµ¶å¥œã®æ©äŒã§ãã ãªããã£ã³ã¹ã¯å€ããªããããããŸããããããCTOã«ãªã£ãŠãããããšããæ¹ã¯èªåã®æå¿ã§æŽã¿åã£ãŠéããªãããã«ããŠãã ããã ãªã«ããéèŠãªã®ã¯ãèªåããã®äŒç€Ÿã®äžéšãšããŠå€§ããªæéãè³ããããã ãæ°ã«å
¥ã£ãäŒç€Ÿããããã¯ãããããšããããšããšæããŸããéåžžã«å°é£ãªç¶æ³ã«ãªã£ãŠããäŒç€Ÿããããã¯ããããã°å²ããšãªããšããªããŸãã ãšããããã§ãããªèªåãCTOããã£ãŠãã䟡å€ããããšæã£ãŠããBASEã§ã¯ã¡ã³ããŒã®åéãããŠããŸãã äžèšãããå¿åããåŸ
ã¡ããŠãããŸãã open.talentio.com
ãã®èšäºã¯ BASE ã¢ããã³ãã«ã¬ã³ã㌠2023 ã®24æ¥ç®ã®èšäºã§ãã åºç€ã°ã«ãŒã ãšã³ãžãã¢ã®ç°äž ( @tenkoma ) ã§ãã 2023幎5æãã8æã«ãããŠãæžç±ãåäœãã¹ãã®èãæ¹/äœ¿ãæ¹ãã®èªæžäŒã瀟å
æå¿ã§ããŸããã èªæžäŒã®æ§åãææ³ããŸãšããŸãã æžç±ãåäœãã¹ãã®èãæ¹/äœ¿ãæ¹ãã«ã€ã㊠åäœãã¹ãã®èãæ¹/äœ¿ãæ¹ ãããžã§ã¯ãã®æç¶å¯èœãªæé·ãå®çŸããããã®æŠç¥ | ãã€ããããã¯ã¹ åäœãã¹ãã®èãæ¹/äœ¿ãæ¹ ãããžã§ã¯ãã®æç¶å¯èœãªæé·ãå®çŸããããã®æŠç¥ | é人åºçäŒ 2022幎12æã«åºçãããŸããã 2020幎1æã«åºçããã Unit Testing Principles, Practices, and Patterns (Manning) ã®ç¿»èš³æžã§ãã åäœãã¹ãã«ã€ããŠå®çŸ©ãããã®äŸ¡å€ãæå€§éã«é«ããããã®æ¹æ³ã«ã€ããŠè§£èª¬ãããŠããŸãã æžç±ãžã®æåŸ
ãã¹ãã³ãŒããæ§æããæŠå¿µããããæžããã¯ããã¯ããŸãšããããŠãããšãããæ°ã«ãªããŸãããã1.2 ãªãã åäœãã¹ããè¡ãã®ãïŒ(7ããŒãž)ã§ç޹ä»ãããã æç¶å¯èœ ããšããèšèã«æ¹ãããŸããã ããã§ã¯ãåäœãã¹ããããããšã§äœãæãéãããã®ã§ããããïŒãã®çãã¯ããœãããŠã§ã¢éçºãããžã§ã¯ãã®æé·ãæç¶å¯èœãªãã®ã«ããããšããããšã§ãããããŠããã® ã æç¶å¯èœ ããšããèšèãéµãšãªããŸãããšèšãã®ãããããžã§ã¯ãã¯ç°¡åã«å€§ãããªã£ãŠããŸããã®ã§ãããç¹ã«ããããžã§ã¯ãããŒãããäœãå§ããå Žåããã®åŸåã匷ããªããŸãã ããããªããããã®æé·ãé·ãããã æç¶ãããããšã¯ç°¡åãªããšã§ã¯ãããŸããã äŸãã°ããã¹ãã³ãŒããéãå¢ããŠãããšããŸããŸãªåé¡ãèµ·ããããšããããŸãããã¹ãå®è¡ãé
ããªã(Slow Tests)ããã¹ãçµæãäžå®å®ã«ãªã(Flaky Test / Erratic Test)ãªã©ã¯ä»£è¡šçããšæããŸãã ãããã®å
åãçºçãã«ãããããããžã§ã¯ãã®æç¶å¯èœæ§ãé«ãããã¹ãã«ãããããã®ããã®ç¥èŠãåŸããããã ãšæåŸ
ããŸããã èªæžäŒã®çµç·¯ãšé²ãæ¹ 4æäžæ¬ãããã«å人ãšããŠãã¹ãã³ãŒãã®æžãæ¹ãã¬ãã«ã¢ããããæ¹æ³ãããç¥èãããŸãä»äººã«èª¬æã§ããããã«ãªããããšæã äœãåèã«ãªããããªè³æã¯ãªããæ€çŽ¢ãããšãããã®æžç±ãèŠã€ããŸããã å
容ãã¿ãŠã¿ããšãæªã æ¥æ¬èªèš³ãåºçãããŠããªã xUnit Test Patterns ã®ç¥èãå€ãåã蟌ãŸããŠãããšæããŸããã 話é¡å
±æã§ããSlackãã£ã³ãã«ãäœã£ããšãããèå³ãããæ¹ãç©èªããŠãæ¹ãªã©ãéãŸã£ããããèªæžäŒãè¡ãããšã«ããŸããã æžç±ã®å
容ã§åãããªãç®æã話ããããããã¯ãNotionã«æžããŠããã(äºåã«èªãŸãªããŠãåå OK) äºåã«èªãã§ãããã®ã¯å°ãããŒãã«ãé«ããããããŸããããã°ã«ãŒã暪æã§ã¡ã³ããŒãéãŸã£ãã®ã§ãã¹ã ãŒãºã«é²è¡ããããã«å¯èœãªãèªãã§ãããæãã«ããŸãã æ¯é±æææ¥9:30ãã1æéãSlack Huddleã§è©±ãæéãçšæãã 1ç« åã®ããŒãã«ã€ããŠãã®æéã§è©±ã ç« æ«ã«æžãããŠãã2ã3ããŒãžã®ãŸãšããé³èª ãã®åŸãNotionã«æžããããããã¯ã«ã€ããŠè©±ã æå°å®æœäººæ°ã¯3åã§éãŸããªãã£ããã¹ããããç¥æ¥ã®å Žåãã¹ããã 1ç« ãèªã¿å§ããåã«ãé²ãæ¹ã«ã€ããŠè©±ãåãçšæããŠå€§æ ãæ±ºããŸããã èªæžäŒã®çµæ åå è
ã¯æ¥é ãããããã¯ã·ã§ã³ã³ãŒããšãã¹ãã³ãŒãã®äž¡æ¹ãæžãéçºè
ãå€ãã£ãã§ããããã®ããŠããŠã課é¡ãããŒã ããŸããã§å
±æãããè¯ãå Žã«ãªã£ããšæããŸãã ãŸãããããžã§ã¯ãã®ãããã¯ã·ã§ã³ã³ãŒãã»ãã¹ãã³ãŒãæ¹åã«ãã®æžç±ã®å
容ããSlackãã£ã³ãã«ã玹ä»ãããããšãããããã£ãŠããã£ããªãšæããŸããã æžç±ã«ã€ããŠã®ææ³ ãŸãã¯ãæžç±ã®äžã§å®çŸ©ãããŠããæ§ã
ãªçšèªãæ®æ®µãã¹ãã³ãŒããæžãããã³ãŒãã¬ãã¥ãŒãããšãã«æŽ»çšã§ãããã®ãå¢ãããšæããŸãã äŸãã°ã以äžã®ãããªçšèªãã¡ã§ãã ãã¹ã察象ã·ã¹ãã (System Under Test: SUT) ãã¹ãã»ããã«(ã¢ãã¯ã»ã¹ã¿ãã»ã¹ãã€ãªã©) AAAãã¿ãŒã³( 3Aãã¿ãŒã³ ãšã) çšèªèªäœã¯ç¥ã£ãŠã¯ããã®ã§ããããããããã¹ãã³ãŒãã«äœ¿ã£ãããã³ãŒãã¬ãã¥ãŒã§çšããªããŠããã¹ãã³ãŒãéçšã«æ¯éãªãã説æããã³ã¹ããå¿
èŠãªã®ã§ã䜿ããªããŠããã®ã§ã¯ïŒãšæã£ãŠããŸããã ããããçšèªã®æå³ãçè§£ãããã¹ãã³ãŒãäžã®å€æ°åã« sut ã stub ã䜿ã£ãŠã¿ããšã广ããããšæãçŽããŸããã ãã¹ãã¡ãœããäžã§å€æ°åã $sut ãªããããããã¹ã察象ã§ããã $**Stub ãªãããã¹ã察象ã«éæ¥çã«å
¥åãäžããäŸåã§ãããšããããŸãã $**Spy ãªããã¡ãœããåŒã³åºããèšé²ããŠãããšã§ã¢ãµãŒã·ã§ã³ãããã ãããªããšæšæž¬ã§ããŸãããã¹ãã³ãŒããçè§£ããã³ã¹ããäžãã广ãããããã§ãã æ¬¡ã«ä»¥äžã®ãããªãããã¯ã«ã€ããŠäžå¯§ãªè§£èª¬ããããèªã¿é²ããŠãããšãã¯ããéå°ããæããŠããŸããã ç¶²çŸ
ç(coverage) åäœãã¹ãã«ãããå€å
žåŠæŽŸãšãã³ãã³åŠæŽŸ ãã®åŸã®ç« ãèªãããã«å¿
èŠãªåºç€ç¥èã§ãããšããããŸãã å€å
žåŠæŽŸãšãã³ãã³åŠæŽŸã«ã€ããŠã¯ã ãã¹ãé§åéçº - ãªãŒã 瀟 ã§ç޹ä»ãããŠããŸããããæ£çŽç¥èãèå³ããªãã£ãã§ããããããã¹ãããã«ã®äœ¿ãæ¹ã®éãããã¹ãã³ãŒãã®æžãæ¹ã«ã倧ããªåœ±é¿ãäžããããšãçè§£ã§ãããã¹ãæŠç¥ãèããäžã§å¿
èŠãªè§£èª¬ãªã®ãããšæãçŽããŸããã 第4ç« ããã¯ãè¯ãåäœãã¹ããæ§æãã4æ¬ã®æ±ããšããŠä»¥äžã軞ã«è©³çްãªè°è«ãé²ããŠãããŸãã éè¡(regression)ã«å¯Ÿããä¿è· ãªãã¡ã¯ã¿ãªã³ã°ãžã®èæ§ è¿
éãªãã£ãŒããã㯠ä¿å®ã®ãããã ã¢ãã¯ã®äœ¿ãæ¹ãçµ±åãã¹ãã®ç« ãé »ç¹ã«ãã®è»žã䜿ã£ãŠèª¬æãé²ããããçè§£ãããããšæããŸãã äŸåãåœéœæ§ã»åœé°æ§ããã¹ãããã«ãªã©ãå³ãå€ã䜿ã£ãŠè§£èª¬ãããããããããããã§ãã 以äžã®ãã¹ãã玹ä»ããŸãã åäœãã¹ãã®èãæ¹ãèªãã§ãããã©ãèè
ã¯ç¥èã®æŽçããã¡ããã¡ãäžæããã¹ã¿ããšã¢ãã¯ãã³ãã³ãã¯ãšãªåé¢ã®ååãšçµã³ã€ããããè¯ããã¹ããåããæ§è³ªã®ãã¬ãŒããªããããããããå³è§£ããŠããããããšãŠã€ããªããããããããå¿
èªã®äžåã«ãªãæ°ãããã https://t.co/Y3bhkSrp7x — ã²ããŸã€ïŒ Linux200æ¬ããã¯ðçºå£²äžäžšã²ããŸã€ãããããã (@hiramatsuu) April 28, 2023 ãããŸã§ç¹é·ãè¯ãç¹ã«ã€ããŠæžããŸããããäžæ¹ã§éµåã¿ã«ã§ããªãç¹ã¯ããããã§ãã 颿°åã¢ãŒããã¯ãã£ã«ã€ããŠã¯åã«ãã®ç¥èãã»ãŒãªããæŽ»çšã§ãããåãããªãã£ãããšã玹ä»ããããµã³ãã«ã®å€ããããã¯ãšã³ãã®ããžãã¯ã§ããã ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã«é©çšã§ãããã«ã€ããŠãç¶²çŸ
çã§ã¯ãªããããããŸããã 以äžããã®æžç±ã ãã§ãã¹ãã«ã€ããŠç¶²çŸ
ã§ããããã§ã¯ãªãéšåã¯ããããã§ãããæ¥åžžçãªãã¹ãã®æžãæ¹ãã³ãŒãã¬ãã¥ãŒããããã¹ãæŠç¥ãçµã¿ç«ãŠãäžã§åèã«ã§ããéšåãå€ããè¯æžã ãšæããŸããã ææ¥ã¯ãå·å£ ( id:dmnlk ) ããã®çµç¹ã®è©±ã§ãããæ¥œãã¿ã«ïŒ ããŸã github.com/tenkoma/utppp-php ããã€ãã®ç« ã«ã€ããŠPHPã§åçµããŸãã
ã¯ããã« ãã®èšäºã¯ BASE Advent Calendar 2023 ã®23æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ãBASEæ ªåŒäŒç€Ÿã®BASE BANK DivisionãšããããŒã ã§ãšã³ãžãã¢ãããŠãã倧å£( @re_yuzuy )ã§ãïŒ ä»æ¥ã§20æ³ã«ãªããŸããã ä»å¹Žã¯ã€ã³ã¿ãŒã³ããæ£ç€Ÿå¡ã«ãªã£ããã1人æ®ãããå§ããŠã¿ãããè²ã
ãšæ°ããããšãå§ãããã1幎ã ã£ãããªãšæã£ãŠããŸãã ãã®äžã§ãå°è±¡ã«æ®ã£ãŠããã®ã¯ãBASEã®ãšã³ãžãã¢ã€ã³ã¿ãŒã³æ¡çšãåéã§ããããšã§ãã ãã®èšäºã§ã¯ã€ã³ã¿ãŒã³æ¡çšãåéããããšæã£ãçç±ãã€ã³ã¿ãŒã³ã®æŠèŠãªã©ã«ã€ããŠæžããŠãããŸãã ã€ã³ã¿ãŒã³æ¡çšãåéããããšæã£ãçç± åæãšããŠBASEã«ããããšã³ãžãã¢ã€ã³ã¿ãŒã³æ¡çšã¯åãå
¥ç€Ÿãã2021幎2æããããéããããŠãããèšæ¶ã®éãã§ã¯åãæåŸã®ãšã³ãžãã¢ã€ã³ã¿ãŒã³ã§ããã åãæ£ç€Ÿå¡ã«ãªã£ãçŸåšãBASEã«ã¯ãšã³ãžãã¢ã€ã³ã¿ãŒã³ãšããŠåããŠããæ¹ã¯0人ã§ãã å人çã«ã€ã³ã¿ãŒã³ã§ã®çµéšããšãŠã楜ããããã«ãªã£ããšæã£ãŠããã ä»ã®äººãã¡ã«ãåããããªäœéšãããŠã»ãã ãšæã£ãã®ãã€ã³ã¿ãŒã³æ¡çšãåéããããšæã£ã1çªã®çç±ã§ãã åã¯é«æ ¡çã®ãšããããšã³ãžãã¢ã€ã³ã¿ãŒã³ãšããŠåãå§ããŸãããããã¯å®å
šã«éãããã£ããšããèšãããããªããä»ããå€ãã®äººã«ãããã£ãæ©äŒã蚪ããããã«ãªãã°ãšæã£ãŠããŸãã èªåã®ã€ã³ã¿ãŒã³äœéšè« å®éã€ã³ã¿ãŒã³ã§ã©ããªããšãã§ããã®ããšãããšããã§ãå°ãåãŸã§ã€ã³ã¿ãŒã³ã ã£ãåã®äœéšè«ã1äŸãšããŠè»œã玹ä»ããããšæããŸãã åã¯2021幎2æã«ã€ã³ã¿ãŒã³ãšããŠå
¥ç€Ÿãããªã³ããŒãã£ã³ã°ã¿ã¹ã¯ãçµããŠããããã«BASEã«ãŒãã®éçºããŒã ã«ã¢ãµã€ã³ãããŸããã BASEã«ãŒãã«ã€ããŠã®è©³ãã説æã¯ ãã¡ãã®ããŒãž ãåç
§ããŠããã ãããã®ã§ãããBASEã§äœã£ãã·ã§ããã®å£²äžãããããã«ãŒãã®ãããªäœéšã§ã«ãŒãçµç±ã§äœ¿ããæ©èœã§ãã åœæã¯BASEã«ãŒãã®ãªãªãŒã¹åã§ãããŸããŸå
¥ã£ãã¿ã€ãã³ã°çã«æ°èŠãããã¯ããã€ã«ãŒã決æžãšããã¡ãã£ãšããããªãã¡ã€ã³ã®éçºã«é¢ãããããšã¯ãšãŠãéãè¯ãã£ããšæã£ãŠããŸãã BASEã«ãŒãã®ç«ã¡äžãã§ã¯æ±ºæžã³ã¢æ©èœã®å®è£
ããã£ãã·ã¥ããã¯ã®èšèšãªã©ãçµæ§éèŠãªéšåãä»»ããŠããããŸããã BASEã«ãŒãDay1ãªãªãŒã¹åŸã¯ãªã¢ã«ã«ãŒãæ©èœã«åããéçºãDay1ãªãªãŒã¹ã®åŸçä»ããæœçã«åããéçºãªã©è²ã
ãã£ãŠããŸããã æãæããã°å€§æµããããŠãããç°å¢ã§ãããæå³ã§ã€ã³ã¿ãŒã³ã ãã~ãšç¹å¥æ±ããããªããŠãšãŠããããããã£ããªãšæã£ãŠããŸãã ãŸãæ°æã¡çã«ããã¿ããªãšäžç·ã®ç®ç·ã§BASEã«ãŒããšãããããã¯ãã«åãåããŠãããšæããŠããŸãã æ¹ããŠã€ã³ã¿ãŒã³æä»£ãæ¯ããŠãã ãã£ãã¿ãªããã«æè¬ãã ã€ã³ã¿ãŒã³ã®æŠèŠ open.talentio.com ä»ååéããŠããã®ã¯åã®æå±ããBASE BANK Divisionã§ã®é·æã€ã³ã¿ãŒã³ã§ãã BASE BANKã¯BASEã®äžã§ãéèãã¡ã€ã³ã®éçºãæ
åœããŠãããäž»ã«ãYELL BANKããBASEã«ãŒãããæ¯èŸŒç³è«ãã®3ã€ã®æ©èœã»ãããã¯ããéçºããŠããŸãã ã€ã³ã¿ãŒã³ã§ã¯ããããã®éçºããŒã ã«1ã¡ã³ããŒãšããŠåç»ããŠããã ããæ§ã
ãªèª²é¡è§£æ±ºã«åããéçºã«æºãã£ãŠããã ããŸãã ãããã¯ãéçºãžã®é¢ããæ¹ã«ã€ã㊠BASE BANKã®ãšã³ãžãã¢ã¯å
šå¡ããã«ãµã€ã¯ã«ãšã³ãžãã¢ãšããŠåããŠããŸãã ãã«ãµã€ã¯ã«ãšã³ãžãã¢ãšããèšèã«èãèŠãããªãæ¹ãå€ããšæããŸããã1æã§èª¬æãããªããèšèšã»éçºã»ä¿å®ã»éçšãªã©éçºãµã€ã¯ã«ãã¹ãŠã«äž»äœçã«åãçµããšã³ãžãã¢ãããªãšæããŸãã åã¯ãã«ãµã€ã¯ã«ãªéçºãã§ããããšãBASE BANKã§éçºããäžã§æã倧ããé
åã®1ã€ã ãšæã£ãŠããŸãïŒ ãã¡ããã€ã³ã¿ãŒã³ã®æ¹ãåæ§ã«ããã«ãµã€ã¯ã«ãšã³ãžãã¢ãšããŠç¹å®ã®éçºãµã€ã¯ã«ãåéã«åºå·ããªããããªåãæ¹ãããŠããã ãããšã«ãªããŸãã 仿§ã決ãŸã£ãŠãããã®ãå®è£
ããŠãããïŒã§ã¯ãªãããããã¯ãã®ä»æ§æ€èšãã·ã¹ãã ã®èšèšããå®è£
ããªãªãŒã¹åŸã®ãã°ãåãåãã察å¿ãŸã§å¹
åºãè¡ããŸãã ãã«ãµã€ã¯ã«ãšã³ãžãã¢ã«ã€ããŠã®è©³ããç¥ãããæ¹ã¯ãæšå¹Žã®ã¢ããã³ãã«ã¬ã³ããŒã§åããBASE BANKã®æŸéªãããããã°ãæžããŠããã®ã§ãããèªãã®ãããããã§ã: Real World Full Cycle Developers å¿åæ¡ä»¶ã«ã€ã㊠åè¿°ããéããããå€ãã®äººã«æ©äŒã蚪ããŠã»ãããšããææ³ã®ããšãä»åã®ã€ã³ã¿ãŒã³ã¯å®åæªçµéšã§ãå¿åå¯èœã«ããŠããŸãã ãšã¯ããç¿ç床ãšç°å¢ã«ããŸãã«ä¹é¢ããããšãäºãã«äžå¹žã«ãªã£ãŠããŸãã®ã§äžå®ã®åºæºãèšããŠããŸãã æè¡çãªåºæºã«ã€ããŠã®è©³çްã¯åéèŠé
ãåç
§ããŠãã ããã ãŸãåºå€é »åºŠçã«ã€ããŠã§ãããçŸç¶é±3æ¥ä»¥äžãã€é±15æé以äžãšããæ¡ä»¶ã«ããŠããŸãã ããã¯èœåçã§èªç«ããéçºãä»»ããããæäœéã®é »åºŠãã€æéãšããããšã§å®ããŠããŸãã ãããã« BASE BANKã§ã®ã€ã³ã¿ãŒã³ã«å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯ããã²åéããŒãžããå¿åããŠããã ãããã§ãïŒ ãããªã颿¥è¥å¹²ããŒãã«é«ããããšããæ¹ã¯ @re_yuzuy ã«DMããŠããã ããã°ãšæããŸãïŒãã²ã«ãžã¥ã¢ã«ã«è©±ããŸãããïŒ open.talentio.com ææ¥ã¯ @tenkoma ããã®ç€Ÿå
èªæžäŒã«ã€ããŠã®è©±ã§ãããæ¥œãã¿ã«ïŒ
ã¯ããã« ãã®èšäºã¯ BASE ã¢ããã³ãã«ã¬ã³ã㌠2023 ã®22æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ã Communication Design Groupãã¶ã€ããŒã®è€äºã§ãã ãããã¯ããã¯ãããLPãã¡ãŒã«ããŸãã€ãã³ããå¶æ¥è³æãªã©ãçŽæ¥éæ¥ãåããBASEã®ããã¹ãã³ãã¥ãã±ãŒã·ã§ã³å
šè¬ã®ãŠãŒã¶ãŒäœéšãåäžããããUXã©ã€ãã£ã³ã°ïŒã³ããŒã©ã€ãã£ã³ã°ãæ
åœããŠããŸãã ãããã¹ãã³ãã¥ãã±ãŒã·ã§ã³ããã¶ã€ã³ããããããŒã¯ãŒãã«ãããã¹ãçãã¶ã€ã³ã·ã¹ãã ãæ§ç¯ã»éçšããããããã¿ãããã€ã³ãã«ãããŠãã¿ãŒã²ããã»ç®çã»ãŽãŒã«ã«ãã£ãšãæé©åãããããã¹ãäœéšãèšèšããã¶ã€ã³ããŠããŸãã ããã¹ãå質æ
ä¿æœçã®å®æœããèŠããŠãããæ¬¡ã®èª²é¡ ãããŸã§ãããŒã³ãªããã€ã¹ãçå®ããããã¬ã€ãã©ã€ã³ãæ§ç¯ããããããã¹ãå
¥åæ¯æŽããŒã«ãéçºããããšãããã¹ãã®å質ãæ
ä¿ããããã®ããŸããŸãªåãçµã¿ããããªã£ãŠããŸããã ãã®ãªãã§èŠããŠããã®ã¯ããããªèª²é¡ã§ããã çµç¹ã®æ¡å€§ã«ãšããªãPJã®å¢å ã«ãããããã¹ãã¬ãã¥ãŒïŒUXã©ã€ãã£ã³ã°ã®åèšæéã¯ããã»ã©å€ãããªã ããã¹ãäœéšã®èšèšãã¬ããžã®å
±æã«ããããããã¯ãããŒã å
šäœã®ããã¹ãã³ãã¥ãã±ãŒã·ã§ã³åã®ããã ã¢ãããå¿
èŠ ããã¹ãå
¥åæ¯æŽããŒã«ã»textlintã®å°å
¥ãéçšéå§ã«ããããããã«æ¬è³ªçãªäœéšã®ãã¶ã€ã³ã«å€ãã®ãªãœãŒã¹ããããããããã«ãªããé£èºçã«BASEã®ããã¹ãã³ãã¥ãã±ãŒã·ã§ã³ã¯åäžããŸããã äžæ¹ãBASEã®ãããã¯ãããªãŒããŒæ°ããŸãçµç¹ãæ¥æ¡å€§ãããªããããã¹ãã¬ãã¥ãŒæ
åœè
ã®ãªãœãŒã¹èªäœã¯æ¥ã«å¢ããããã§ã¯ãªããçµæãšããŠãŸã ãŸã ã¬ãã¥ã¢ãŒã®å±äººæ§ã«æ ã£ãŠããã®ããŸãçŸå®ãªã®ã§ãã UXã©ã€ãã£ã³ã°åã®çµç¹å
šäœã«ãããããã ã¢ãããå¿
èŠ ã§ã¯ããã®èª²é¡ã«å¯ŸããŠã©ã®ãããªã¢ãããŒããæå¹ãªã®ã§ããããïŒ ç§ãã¡ã¯ãããã¹ããã³ãã¥ãã±ãŒã·ã§ã³ã«çšããBASEã®ãã¹ãŠã®ã¡ã³ããŒã«ãUXã©ã€ãã£ã³ã°ã®ãã£ãšãæ¬è³ªçãªéšåããçžæã«ããšã°ãå±ããããã®ã³ãããã·ã§ã¢ã掻çšããŠãããããšã«ãããå
šäœçãªããã ã¢ãããå³ãããšããšèããŸããã ãããŠããã¯ãã¿ãŒã²ããã»ç®çã»ãŽãŒã«ã«ãã£ãšãæé©åãããããã¹ãäœéšã®èšèšã»ãã¶ã€ã³ã®ããã®ã¡ãœããïŒæ¹æ³è«ïŒãã€ãŸãUXã©ã€ãã£ã³ã°ã®æ¬äžžã«ã»ããªããŸããã ããããŠ2023幎ã¯ã瀟å
LTãžã®ç»å£ãã¯ãŒã¯ã·ã§ããã®å®æœãã©ã€ãã£ã³ã°é§ã蟌ã¿å¯ºãšãã®ãŸãšãã¡ãœããã®å
±æãªã©ããšã«ããã·ã§ã¢ã«æãæ®ãã1幎ã§ããã åãçµãã ã3ã€ã®ææ³ ä»åã¯ããã®åãçµã¿ã®äžéšãã玹ä»ããŠã¿ãŸãã 1. 瀟å
LTãžã®ç»å£ ãŸãã¯ãããã¯ãããŒã ã«éãããäŒç€Ÿå
šäœã«åããŠå®æœãããŠããã ããLTããBASEãUXã©ã€ãã£ã³ã°ã®æµåãã ãããããŠãŒã¶ãŒäœéšã®ããæ¥æ¬èªãšã¯ã æå³ããããããã¢ã€ã¢ã€ãããªã äžæå¿«ãªæãããããªã ã©ãããã°ããããããããã ã€ãŸããçžæãæãããæ°æã¡ããããšã°ã«èŸŒããããšã§ãããæ°æã¡ããã³ãã¥ãã±ãŒã·ã§ã³ããããã®äœæ³ã§ãããšããããšãããã¯ãããã¯ãã®ã¿ãããã€ã³ãã«éãããçããŠãããªãã§èª°ã«ãšã£ãŠãåºæ¬ãšãªããããªã¿ãã§ããããšãçºä¿¡ã ãã®äžã§ãBASEã®ããšã°ãããã©ãããšããŠãã3ã€ã®ä¿¡å¿µïŒPrincipleïŒã ã·ã³ãã«ïŒãããã§ãã·ã§ãã«ãâ誰ã§ããããïŒèª°ã§ãæºè¶³ã§ãã ãªãŒããŒã·ãããâèªåããããŸãŸèªä¿¡ãæãŠã å
šå¡ã䜿ãããâãªãã©ã·ãŒããªãŒ ãå
±æããã ããããèªåããšåããŠãããããè¡åããŠããããããšããããšããäŒãããŸããã 2. ã¯ãŒã¯ã·ã§ããã®å®æœ ãããªä¿¡å¿µãå®éã«ããã¹ãã«èœãšã蟌ãããã®ã¡ãœããããã¯ãŒã¯ã·ã§ããã§å®è·µã æžãæ¹ã®åºæ¬5ãæ¡ã ãšã«ããçããç°¡æœã«ïŒäžæäžçŸ©ïŒ èªããããããã« äœãã§ããããã«ãªãã®ããäŒãã ããæãã®ããå æžã®äžå¯§ã äœãèµ·ããã®ããäœããããããã®ããäŒãã ãã·ã§ã¢ããŠãããããã¹ãã¬ãã¥ãŒæ
åœè
ããããªã£ãŠããããã¹ãã¬ãã¥ãŒã«ãå®éã«ææŠã ãé¡ã®ããã¹ãã®ã¿ãŒã²ããïŒç®çïŒãŽãŒã«ãæžãåºãããã®ã¿ãŒã²ããã«åããèšè䜿ãã§ãã©ãããã°ãã¡ããæãããŽãŒã«ã«ã€ãªãããèããæç« ãæŽããäœæ¥ãäœéšããŠããããŸããã 3. ãªãŒãã³ããã¹ãã¬ãã¥ãŒã»ã©ã€ãã£ã³ã°é§ã蟌ã¿å¯ºã®éå¬ ãŸããæ¯æ¥14:00ã14:30ã«ã¯ãªãŒãã³ã»ããã¹ãã¬ãã¥ãŒïŒã©ã€ãã£ã³ã°é§ã蟌ã¿å¯ºãéå¬ããããã«ã ããŸããŸãªããŒã ãPJããæ¥ã
äŸé Œããã ããŠããããã¹ãã¬ãã¥ãŒããç»é¢ãå
±æããŠã©ã€ãŽã§å®æœãã€ã€ããå²ã蟌ã¿ã§æ¥ãã®ã¬ãã¥ãŒãäŸé Œãããããã©ããã£ãŠæžãã°ããŸããŸãšãŸãã®ãããããªãããã€ãããæžããŠã»ããããªã©ã®ãããã¹ãã«ãŸã€ãããæ©ã¿ã解決ãããé§ã蟌ã¿å¯ºããªãŒãã³ã ããšãã°ã ãããã¡ããã®çŠæ¢ããâããã¡ããã§ã¯ãäœãæãã®ãããããªããèªã¿æã®è¡åã«éœéœ¬ããªããããé·ç§»å
ããŒãžã¿ã€ãã«ããããã¹ããªã³ã¯ããã ãå¥èªç¹ããªãºã ãäœãããâ人ã¯ã¢ã¿ãã§é³èªããŠãããæ¯ç¶ãã§ããããå¥èªç¹ã掻çšãããšãèªã¿å¿å°ãäžãã ãç·éãæç€ºããâå
ã«ãâ¯ã€ã®ã³ãããšèšããããšããããããããªãèªããããªããšããå¿çã«ãªã£ãŠåãåã£ãŠãããããããªãããªã¹ã¹ã¡ã¯äººéã®è³ã®ç¹æ§äžã3ããããšèšããã ãªã©ãããã¹ãã¬ã€ãã©ã€ã³ã§ã¯ããããªãã¬ãã¥ã¯ãŒã®èŠç¹ã»ã¡ãœããããå®éã®ããã¹ãã®ããã©ãŒã¢ãã¿ãŒãèŠãªãã詳ããã«ããããšã§ãããäœæããŠããããããã«ããŠããŸãã ãããã« 2023幎11æã«11åšå¹Žãè¿ããBASEã¯ããããããããšã«ã200äžãè¶
ããã·ã§ãããªãŒããŒã®çæ§ã«ã䜿ãããã ããŠãããã©ãããã©ãŒã ã«æé·ããããŸããã BASEã®ããã¹ãã³ãã¥ãã±ãŒã·ã§ã³ããã¶ã€ã³ããåãçµã¿ã¯ããã®å¹ææž¬å®ãã¢ããããŒããæé©åã¯ãã¡ããã®ããšãã³ããŒã©ã€ãã£ã³ã°ã®åéã§ãæé«ã®ãŠãŒã¶ãŒäœéšããã¶ã€ã³ã§ããçµç¹ãžãšé²åããŠãŸãããŸãã ãã¹ãŠã¯ããæå°ã®åã§ãæå€§ã®ææãåºãããããã·ã§ããäœæãµãŒãã¹ãã§ããã€ã¥ããããã«ã ãããŠããå€ãã®é²åãšæ¹åã§ãã·ã§ãããªãŒããŒã®çæ§ã®æåãåŸæŒããããããã«ã 2024幎ã®BASEã«ããã©ãããæåŸ
ãã ããã ããŠãææ¥ã®ã¢ããã³ãã«ã¬ã³ããŒã¯ @Ren Ogaki ããã§ãïŒããæ¥œãã¿ã«ã
ã¯ããã« æ¬èšäºã¯ BASE ã¢ããã³ãã«ã¬ã³ã㌠2023 ã®22æ¥ç®ã®èšäºã§ãã ãã¯ããããããŸããããã«ã¡ã¯ãããã°ãã¯ã BASE BANK Divisionã§PMMïŒProduct Marketing ManagerïŒãåãã@usui_daisukeãšç³ããŸãã èšäºã¿ã€ãã«ã¯ã ãŒãããæ
ã«åºãçç± ãããªããŒãžã¥ããŸãããæãšãé
ãšé³æ¥œã奜ããªäººéã§ãã ç§ãæå±ããŠããBASE BANKãšã¯ãBASEã®äžã§ãã·ã§ãããªãŒããŒããåãã®éèç³»ãããã¯ããæ
åœããããŒã ã§ãç§ã¯ãæ¯èŸŒç³è«ããšããã·ã§ããã®å£²äžéãåŒãåºãæ©èœãæ
åœããŠããŸãã ä»åã¯ãã ãã¶äžã®äžã«æµžéããŠããæ°ã¯ãã€ã€*1ããŸã ãŸã ã€ã¡ãŒãžãä»ãã¥ããã§ãããPMMãšããè·çš®ãäœããã£ãŠããã®ãïŒç§ããªã«ãé¢çœããšæã£ãŠPMMããã£ãŠããã®ãïŒãã話ã§ããã°ãšæããŸãã *1 éå»5幎éã®ãPMMãã«å¯Ÿããæ€çŽ¢ãã¬ã³ãæšç§»ãåç
§ïŒèªèº«ã®èæã宿çã«æ³¢ãæ¥ãŠããããã«æãã https://trends.google.co.jp/trends/explore?hl=ja&tz=-540&date=today+5-y&geo=JP&hl=ja&q=PMM&sni=3 BASE BANKã«PMMãå¿
èŠãªçç± åŒç€Ÿã¯ã°ã«ãŒãããã·ã§ã³ãšããŠãPayment to the People,Power to the People.ããæ²ããŠãããæ±ºæžã®ç°¡æåãéããŠã人ã
ããšã³ãã¯ãŒã¡ã³ãããããšãç®æããŠããŸãã ãããè£å®ããææ®µã®ã²ãšã€ãšããŠããéèã®ç°¡æåããå¿
èŠã§ãããšãã仮説ãæã¡ãã·ã§ããäœæãµãŒãã¹ãBASEããéå¶ããããŒã ãšã¯å¥ã«ãBASE BANKãšããéèã«ç¹åããããŒã ãåãããã¯ããåºæ¥äžãããŸããã BASE BANKããŒã ã®ããã·ã§ã³ãåŒç€Ÿæ¡çšè³æããåŒçš https://speakerdeck.com/base/basebank çŸåšãBASEã䜿ã£ãŠãã ããã·ã§ãããªãŒããŒããã¯ã70%以äžãåäººäºæ¥äž»ã§ããã4å以äžã§éå¶ãããŠããã·ã§ãããã»ãŒ100ïŒ
ãå ããŠããŸã*2ã *2 åŒç€Ÿ ãªãŒããŒãºèª¿æ»2023 ãã å人ãã¹ã¢ãŒã«ããŒã ã®äžã§ãéèç¥èã«æããæ¹ãšããã®ã¯å€ãã¯ãªãããããã£ãç¥èããããã©ãããããããã®ãäœãããïŒããã©ãããããã£ãšååã売ãããïŒããšããéšåã«ãã©ãŒã«ã¹ãããæ¹ãå€ããšãéå»ã®ãªãµãŒãããæããã«ãªããŸããã 仿¹ã§ãå売ãããäžã§ãéãŸãããšããã®ã¯åã£ãŠãåããªãé¢ä¿ã§ãåŠãå¿ã§ãèããããããäºæã§ãã BASE BANKããŒã ã¯ãå人ãã¹ã¢ãŒã«ããŒã ã«ãšã£ãŠãããã¥ãããéèããšãããã¡ã€ã³ã«ãããŠãããã¯ãéçºãè¡ã£ãŠããããããã«ãããããããå©çšäŸ¡å€ãæ¹æ³ãäŒãããããïŒããšããç¹ãããããã¯ããã®ãã®ãšåããããéèŠã ãã®ãããããŠãŒã¶ãŒãšãããã¯ãã®ãæ©æž¡ã圹ãããšããŠãPMMãšããè·çš®ãå¿
èŠãšãããŠããŸãã BASE BANKã«ãããPMMãšã¯ ãPMMããšæ€çŽ¢ãããšãããŸããŸãªåªäœã»äººã®èšäºãåºãŠããŸãããBASE BANKã§ã¯PMMã«å¯ŸããŠä»¥äžã®3ã€ãæ±ããããŠããŸãã ããŒã å
ã§æããŠãŒã¶ãŒãžã®æ·±ãçè§£ã»ã€ã³ãµã€ããæã€ ãããã¯ãããŒã±ãã£ã³ã°ã«ãããæœçå®è¡ããã³æ°åã«è²¬ä»»ãæã€ ãããã¯ãããŒã±ãã£ã³ã°ã§åŸãã€ã³ãµã€ããåºã«ãPdMãäžå¿ã«åã¹ããŒã¯ãã«ããŒãšååãããããã¯ããžåæ ããã BASE BANKã§ã¯ãã²ãšã€ã®ãããã¯ãã«å¯ŸããŠPdMãšPMMãã²ãšããã€çŽã¥ããŠãããæ
åœãããã¯ããã©ã䌞ã°ããïŒãäºäººäžèã§èããŠããŸãã æ
åœã«ãã£ãŠç°ãªãéšåããããŸãããPMMãã©ããªããšããã£ãŠãããïŒã3ã€ã»ã©ã玹ä»ã ãŠãŒã¶ãŒçè§£ã®ããã®ãªãµãŒã ãŠãŒã¶ãŒã®ããšãçè§£ããŠããªããšãããŠãŒã¶ãŒã«ãšã£ãŠã®ããããããããããããŸããã ãã®ãããã¢ã³ã±ãŒãããŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã宿çã«å®æœããããšã§ãŠãŒã¶ãŒçè§£ã«åªããåŸè¿°ãããã£ã³ããŒã³ã®äŒç»ã广æ€èšŒããããã¯ãããŒãºã®æš¡çŽ¢ãæ°æ©èœæ€èšã®äžå©ãšããŠããŸãã äŸãã°ãããã£ã³ããŒã³ãè¡ã£ãŠãåå çã䌞ã³ãªãããšããåé¡ã«å¯ŸããŠããã£ã³ããŒã³åç¥åªäœããšã®èªç¥çãããã£ã³ããŒã³å
å®¹ã®æ¯éã«ã€ããŠã¢ã³ã±ãŒãããšã£ãŠã¿ãããããããã¯ãå©çšé »åºŠã®é«ããŠãŒã¶ãŒããéå»ãšæ¯ã¹ãŠæžã£ãŠããŠããããšããåé¡ã«å¯ŸããŠãé »åºŠãèœã¡ãã»ãŸã£ãã䜿ããªããªã£ããŠãŒã¶ãŒã«ãã®çç±ãã䜿ããªããªã£ãããšã®ç§»è¡å
ã«ã€ããŠã€ã³ã¿ãã¥ãŒããŠã¿ããã ãã®ãããªåœ¢ã§ãåãããã¯ããæ±ããŠããåé¡ãããŒã¹ã«ãã¢ã³ã±ãŒããã€ã³ã¿ãã¥ãŒã宿œããŠããŸãã 宿œããã€ã³ã¿ãã¥ãŒã¯ãã·ã§ãããªãŒããŒããã®èš±è«Ÿãããã ãèšäºåããããšã https://baseu.jp/26724 ãããã¯ãããŒã±ãã£ã³ã° ãŠãŒã¶ãŒã«ãããã¯ãã®äŸ¡å€ãå±ããææ®µã®ã²ãšã€ãšããŠãããããªãã®ããã£ã³ããŒã³ãBASE BANKã®PMMã¯äŒç»ã®ç«æ¡ããé²è¡ãåæãŸã§ãäžæ°é貫ã§è¡ããŸãã äŒç»ãã§ãŒãºã§ã¯ãåè¿°ã®ã¢ã³ã±ãŒãããŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã Looker ããæœåºããå®çžŸå€ãããšã«ã仮説ã»ããŒã¿ãåºã«äŒç»ãç«ãŠãPdMãšå£æã¡ããªããäŒç»ããŸãšããé²è¡ãžãšç§»ã£ãŠãããŸãã é²è¡ãã§ãŒãºã§ã¯ãã¢ããªã¹ãã»ãšã³ãžãã¢ã»ãã¶ã€ããŒã»ãªãã¬ãŒã·ã§ã³ãšãã£ãPdMãPMM以å€ã®è·çš®ãBASE BANK以å€ã®ã¡ã³ããŒãå·»ã蟌ã¿ãªããé²ããŸããçŽè¿ç§ãæ
åœããŠãããã£ã³ããŒã³ã ãšã12éšçœ²ã»30人ååŸã®ã¡ã³ããŒãšååã PMMã¯ããããžã§ã¯ããªãŒããŒãšããŠå
šäœã®é²è¡ç®¡çããã€ã€ããã®ãã§ãŒãºã§ã¯ãã£ã³ããŒã³ã®æ
å ±ãå±ããããã«ããããã¯ãã®ç®¡çç»é¢äžã®æèšããLPãã¡ãŒã«ãSNSãªã©ã®å€éšã«çºä¿¡ããæç« ãæ€èšã»äœæãããŠãŒã¶ãŒã³ãã¥ãã±ãŒã·ã§ã³ããªãŒãããŠãããŸãã åæãã§ãŒãºã§ã¯ãæ°å€ç®æšã®éææç¡ã ãã§ã¯ãªãã宿œç®çã«å³ããŠãŠãŒã¶ãŒã«å©çšããŠãããããïŒäžæ¯ãã»äžæ¯ãèŠå ã¯ãªããªã®ãïŒãæããã«ããæ¬¡å以éã®ãã£ã³ããŒã³ã«åœ¹ç«ãŠãPDCAãåããŠãããŸãã ãããã¯ãäŒç» ãŠãŒã¶ãŒãªãµãŒãããããã¯ãããŒã±ãã£ã³ã°ã§åŸãã€ã³ãµã€ããåºã«ãPdMãäžå¿ã«åã¹ããŒã¯ãã«ããŒãšååãããããã¯ããžåæ ãããã®ãPMMã®æ¥åã äŸãã°å
æ¥ã BASEã«ãŒã ïŒBASEã®å£²äžéãå
šåœã®VISAå çåºã§å³æã«äœ¿ããã«ãŒãïŒããŒã ã§è¡ã£ããBASEã«ãŒãã®æŽ»çšäºäŸããããŒããšãããŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã®äžã§ãçºçããŠãã売äžã«å¯ŸããŠãã«ãŒãã®é床é¡ãå°ãªãã䜿ãããæã«äœ¿ããªãå Žé¢ãããïŒèŠçŽïŒããšãã£ããæèŠãããã ããŸããã 話ãçŽè§£ããçŸç¶ã®ãããã¯ãäœéšã«ç
§ãããŠã¿ããšãããŸãšãŸã£ãä»å
¥ããè¡ãããæã«é床é¡ã«éããŠããŸããšã売äžéã¯æ®ã£ãŠããã®ã«ä»ã®ã«ãŒãã䜿ããããåŸãªãããšãããããªãäœéšãšãªã£ãŠããããšãããããŸããã ãã®åŸãã€ã³ã¿ãã¥ãŒã§åŸãã€ã³ãµã€ããèžãŸããæ³å®ãããããŒãºãäœéšå€æŽã«ãããŠå¿
èŠãªèŠçŽ ãæ
åœPMMãæŽçãçµæãšããŠãã€ã³ã¿ãã¥ãŒãã2ã¶æã§é床é¡ã®åŒãäžãããªãªãŒã¹ããã«è³ããŸããã baseu.jp ç§ãæãPMMã®é¢çœã ãããžãã¹ç·åæ ŒéæããšããåŽé¢ ç§ã®ãã£ãªã¢ã®ã¹ã¿ãŒãã¯ãWebã¡ãã£ã¢ã®åºåå¶æ¥ã§ããããããããªãµãŒãã£ãŒããã£ãããåºåãã©ã³ããŒããã£ãããã€ã³ãµã€ãã»ãŒã«ã¹ã®ç«ã¡äžãããã£ãããã«ã¹ã¿ããŒãµã¯ã»ã¹ã®ç«ã¡äžãããã£ãããPdMã ã£ããšããããã°ãBiZDevã ã£ããšãããããUXã³ã³ãµã«ã ã£ããšãããããBASEã«å
¥ããŸã§3瀟10è·çš®ä»¥äžã®æ¥åãè¡ã£ãŠããŸãããããã®çµéšäœ¿ããªããªïœãšãããã®ãäžåãããŸããã ãŠãŒã¶ãŒçè§£ã«ãããŠã¯ããªãµãŒãã£ãŒãUXã³ã³ãµã«ã®çµéšã掻ããŠãããããããã¯ãããŒã±ãã£ã³ã°ããããã¯ãäŒç»ã«ãããŠã¯ãPdMãBizDevã®çµéšã掻ããŠããŸãã现ããªæ¥åãå«ãããšããããŸã§å¹ã£ãŠããã¹ãã«ãååã«æŽ»ãããŠãããšæããŠããŸãã 仿¹ã§ãæ°åé¢ã§ã¯ãªãµãŒãã£ãŒæä»£ãå«ããŠãå®éåæã«ãããŠã¯ãããããªã¯ãã¹éèšçšåºŠããè¡ã£ãŠããªãã£ãã®ã§ãæ°åãŸããã¯å
¥ç€Ÿåœåã¡ãã£ãšèŠåŽããŸããããã ããããŒãžã£ãŒãããŒã ã¡ã³ããŒãé Œããªããæ¥åãé²ããŠãããã¡ã«ãä»ã§ã¯äžå®ããªããããã«ãªã£ãŠããŸãã éå»èº«ã«ã€ããã¹ãã«ãæ°ãã«èº«ã«ã€ããã»äŒžã°ããã¹ãã«ããã¹ãŠã䜿ã£ãŠä»äºã§ããã®ããPMMãšããŠã®ããããã«ç¹ãã£ãŠããŸãã ã¹ããŒã¯ãã«ããŒã®å€ã åè¿°éããPMMã¯ããŸããŸã¡ã³ããŒãšé£æºããªããä»äºãé²ããè·çš®ã§ããç§èªèº«ãåæã»éåæåãã人ãšã³ãã¥ãã±ãŒã·ã§ã³ãåãã®ã奜ãã§ããã²ãšãã§ã¯ã§ããªãããšã§ããè€æ°äººãªãã§ãããããšã«å°ããæããŠããŸãã æœè±¡çãªè©±ã«ãªããŸãããæ¥ã
è°è«ããããã圢ã«ããŠã¢ãŠããããããç®ã«èŠããçµæãšããŠè¿ã£ãŠãããšããã®ã¯ãããçš®ã®åµäœè¡çºã ãšç§ã¯æã£ãŠããŸãã ããã«å¯ŸããŠç£ã¿ã®èŠãã¿ã»åã³ã¿ãããªãã®ããã²ãšãã§ãªã«ããããšãããã倧ããæãããããšããããã¹ããŒã¯ãã«ããŒã®å€ãã«é¢çœããèŠãããã€ã³ããªã®ãããããŸããã ãããã£ãé¢çœããããŒãïŒãïŒãPMMãããçç±ã§ãã ãããã« ãããŸã§ããç§å人ã®ããBASE BANKã«ãããPMMãã®è©±ã§ã¯ãããŸãããPMMããã£ãŠããã»ãããããšæã£ãŠããæ¹ãPMMãšåããŠããä»è·çš®ã®æ¹ãªã©ã«ãšã£ãŠãPMMãšããè·çš®ã®çè§£ãå°ãã§ãé²ãã§ãããå¬ããã§ãã æšå¹Žã®ã¢ããã³ãã«ã¬ã³ããŒã§ã¯ãç§ä»¥å€ã®PMMããŠãŒã¶ãŒãªãµãŒããšABãã¹ãã宿œããŠCVRãåäžããã話ãèªã£ãããæ
åœãããã¯ãã«ã€ããŠèªã£ããããŠããã®ã§ããã²ä»å¹Žã®ã¢ããã³ãã«ã¬ã³ããŒãšããããŠãäžèªãã ãããŸãã devblog.thebase.in devblog.thebase.in ãŸããçŸåšBASE BANKã§ã¯ããšã³ãžãã¢ãäºæ¥äŒç»ãšãã£ãè·çš®ã®æ¡çšãè¡ã£ãŠããŸãããã®èšäºãèªãã§é¢çœããã ãªãšæã£ãŠããã ããæ¹ã¯ããã²ãæ°è»œã«ãå¿åããã ãããå¬ããã§ãã open.talentio.com ææ¥ã¯ãç§ãšåããBASE BANK Divisionã«æå±ããŠãã 倧å£ãã ã®èšäºãå
¬éäºå®ã§ãïŒã楜ãã¿ã«ã