æ¬èšäºã¯ BASEã¢ããã³ãã«ã¬ã³ããŒ2024 ã®11æ¥ç®ã®èšäºã§ãã ã¯ããã« ã¯ãããŸããŠã®äººã¯ã¯ãããŸããŠãããã«ã¡ã¯ïŒBASE BANK DivisionïŒä»¥äžãBANKããŒã ïŒã®ããã³ããšã³ããšã³ãžãã¢ã®ãã£ã¡ããïŒÂ @gatchan0807  ïŒã§ãã ä»åã¯ç§ãæ
åœããŠããPAY.JP YELL BANKãšãããµãŒãã¹ã«ã€ããŠã話ãããŸãïŒ ãšã³ãžãã¢ãšããŠãã®ãããã¯ããæ
åœããŠããŠæããããããããšãããããããããã®ã§ããã²äžç·ã«éçºããŸããïŒïŒãšãããèªãèšäºã§ããããŸãïŒïŒ å
šéšèªãã§ããã ãããšãšã£ãŠãå¬ããã§ãããç±ãããããããŠãšãŠãé·ãèšäºã«ãªã£ãŠããŸããŸããã®ã§ãèšäºäžéšã«ããããŸãšãã ããèªãã§ããã ã圢ã§ãããã§ãïŒ ãããããé¡ãããŸãïŒ ãã®èšäºãèªãäžã§ã®ããŒã¯ãŒã: ãšã³ãããããã¡ã€ãã³ã¹ PoCãã§ãŒãºãã°ããŒã¹ãã§ãŒãº åæ / ãã«ãµã€ã¯ã«ãšã³ãžãã¢ æ©æ¢°åŠç¿ FinTech PAY.JP YELL BANKã«ã€ã㊠ãŸãã¯PAY.JP YELL BANKã«ã€ããŠè»œãã玹ä»ãããŠãã ããã ãµãŒãã¹ãµã€ã: https://pay.jp/yellbank 2024幎6æã«æ£åŒå
¬éãããéã®ãã¬ã¹ãªãªãŒã¹: https://prtimes.jp/main/html/rd/p/000000224.000030814.html PAY.JP YELL BANKèªäœã¯ãå°æ¥åµæš©ãã¡ã¯ã¿ãªã³ã°ããšããä»çµã¿ã®éèãµãŒãã¹ã«ãªããŸããããšããšãããã·ã§ããäœæãµãŒãã¹BASEïŒä»¥äžãBASEïŒåãã«åæ§ã®ãµãŒãã¹ãšããŠæäŸããŠãããYELL BANKããå
ã«ãªã£ãŠããããªã³ã©ã€ã³æ±ºæžãµãŒãã¹PAY.JPãå©çšããŠãããŠãŒã¶ãŒïŒä»¥äžãPAY.JPå çåºïŒã«å°æ¥ã®å£²ãäžããããã¡ã¯ã¿ãªã³ã°ããšããã¹ããŒã ã§ããã«äœ¿ãããéã«ä»£ãããµãŒãã¹ã«ãªããŸãã [è£è¶³]YELL BANKã®ãµãŒãã¹ãµã€ã: https://yellbank-lp.thebase.com/ äžèšYELL BANKã®ãµãŒãã¹ãµã€ãããåŒçš BANKããŒã ãPAY.JP YELL BANKã®ä»åŸã«ã€ã㊠BANKããŒã ã¯å
ã
ãBASEã®ã·ã§ãããªãŒããŒã®éè課é¡ã解決ããæ©èœãæäŸããããŒã ãšããŠç«ã¡äžãããBASEåãYELL BANKã軞ã«ãBASE Cardããæ¥ãæ¯ãèŸŒã¿æ©èœãšãã·ã§ãããªãŒããŒã®éè課é¡ã解決ããããã®æ©èœãæ¡å
ãã圢ã§å±éããŠããŸããã ããã¯ä»åŸãå€ãããã«é²ããŠããäºå®ã§ãå®éã«2024幎ãè«æ±æžã«ãŒãæãã®æäŸéå§ãªã©åŒãç¶ãBASEã®ã·ã§ãããªãŒããŒã®éè課é¡ã解決ããããã«æ°é åã«ãå±éãããŠãããŸãã BASE BANKããŒã ã®ç޹ä»è³æããåŒçš ïŒåŒçšå
: BASE株式会社 BASE BANKチーム紹介資料 - Speaker Deck ïŒ ãããŠãäžé·æç®ç·ã§ã¯ãYELL BANKæ©èœã®å±éãç®åãã«BANKããŒã ã§éçºã»éçšããŠããåæ©èœã®æäŸãã©ãããã©ãŒã ãæ¡å€§ããŠãããåºããŠãŒã¶ãŒã«äŸ¡å€ãæäŸã§ããããã«ããããšããŠããŸãã å
ã
ãBANKããŒã ãéçºã»éçšããŠããYELL BANKãã¯ãããšããåæ©èœã¯ã ãšã³ãããããã¡ã€ãã³ã¹ïŒçµã¿èŸŒã¿åéèïŒãšåŒã°ãããµãŒãã¹åœ¢æ
ã®ãã®ã§ãã ããã¯ãéè以å€ã®ãµãŒãã¹æäŸäŒæ¥ïŒééèäŒæ¥ïŒããæ¢åãµãŒãã¹ã«éèãµãŒãã¹ãçµã¿èŸŒãã§éèãµãŒãã¹ãæäŸããããšãã圢ã®ãµãŒãã¹æäŸæ¹æ³ã«ååãã€ãããã®ã§ãããããã·ã§ããäœæãµãŒãã¹BASEïŒééèãµãŒãã¹ïŒãšå°æ¥åµæš©ãã¡ã¯ã¿ãªã³ã°ã®YELL BANKãã®ãããªé¢ä¿ã®ããšãèšããŸãã 詳ãã㯠ãã¡ãã®è§£èª¬ããŒãž ããã ãšã³ããããã»ãã¡ã€ãã³ã¹ã®è¡æâãã¹ãŠã®äŒæ¥ã¯éèãµãŒãã¹äŒæ¥ã«ãªã ããšããæžç±ã«è²ããŸãã ãããã®éèé¢é£ã®åæ©èœãBASE以å€ã®ãã©ãããã©ãŒã ã«æäŸãå§ããããšã§ãBANKããŒã ãé¢ãããããã¯ãèªäœã¯ãããšã³ãããããã¡ã€ãã³ã¹ã£ãœã圢ã«ãªãã¯ãããŠããŠããŸãã ãã®ç¬¬1匟ãšããŠãBASEã°ã«ãŒãã®PAYæ ªåŒäŒç€ŸãæäŸããŠããããªã³ã©ã€ã³æ±ºæžãµãŒãã¹PAY.JPãåãã«æäŸãå§ãããPAY.JP YELL BANKãã¯BANKããŒã ã§2018幎ããéçºã»éçšããŠãããYELL BANKãã®BASE以å€ã®ãã©ãããã©ãŒã ãžã®å±éãšãããšããã§ãäžè¿°ã®ä»å äŸ¡å€æ¡å€§ã®æ¹éã®è©Šéç³ã«ããªããããã¯ãã«ãªã£ãŠããŸãã PAY.JP YELL BANKã®æè¡æ§æã«ã€ã㊠PoCæéããçŸåšãŸã§ã¯ã以äžãããªåœ¢ã®æè¡æ§æã«ãªã£ãŠããŸãã ããã¯ãšã³ãã¯Goã§æžãããPAY.JPå çåºããšã®åµæš©ç®¡çãªã©ã®ã·ã¹ãã å
šäœã®åŠçã®è²¬åãæ
ãAPIãšãPythonã§æžãããæ©æ¢°åŠç¿ã䜿ã£ãPAY.JPå çåºããšã®å£²äžäºæž¬ãæäŸãã責åãæ
ãAPIã®2ã€ãAWS ECS Fargateäžã«çœ®ããããã³ããšã³ãã¯Next.jsãAWS Amplifyã§åãããŠããŒãžãiframeã§PAY.JPã®ç»é¢ã«åã蟌ãããã«ããŠããŸãã ããã¯ãYELL BANKã®ã·ã¹ãã ã¢ãŒããã¯ãã£ãåèã«å®è£
ããŠãããåå©çšã§ããéšåãåå©çšããŠã¢ãžãªãã£é«ãPAY.JP YELL BANKã®æ©èœæäŸãéå§ã§ããããã«å®è£
ããŠããŸããã ãŸããããã³ããšã³ãã¯PoC段éã®æ©èœã®æäŸéåºŠãæ©ããããã«BANKããŒã 管èœã§Next.jsã¢ããªã±ãŒã·ã§ã³ãäœæãããããPAY.JPã®ç®¡çç»é¢ã«åã蟌ãã§ããã圢ããšããŸããã æè¡æ§æã®ãããã ãã®åŸãPoCæéãçµããã6æã«æ£åŒæäŸãéå§ãããŠããçŽ5ã¶æãçµã£ãä»ã¯ãã¹ããŒãéèŠã§äœã£ãŠããæè¡æ§æãäžé·æçã«éçšããããããããã«ã°ããŒã¹ããããã«å¿
èŠãªæ©èœã远å ããããããã«äžéšå€ããããšããŠãããšããã§ãã ããã³ããšã³ãã¯iframeã§ç»é¢äžžããšåã蟌ã圢ããããPAY.JPã®ç®¡çç»é¢ã«çŽæ¥æ©èœãå®è£
ããŠãNext.jsã®ããã³ããšã³ãã»BFFããã§ã¯ãªãPAY.JPã®ããã¯ãšã³ãããGoã®APIãå©çšãã圢ã«å€ããŠããããšãå§ããŠããŸãã ããã¯ãPAY.JPå çåºãŠãŒã¶ãŒã®åç·äžã«é©åã«è¡šç€ºããããã·ãŒã ã¬ã¹ãªè³é調éäœéšãäœãããšãšããã®å
ã®èª¿éããè³éã䜿ã£ãå çåºæé·ã«ç¹ããŠãããããã®ã¢ããããŒãã§ãã ãã ãPAY.JPã¯ã¯ã¬ãžããã«ãŒãçªå·ãçŽæ¥åãæ±ããããã¯ãã§ãããããéçºããã¡ã³ããŒã¯ PCI DSS æºæ ã®ãªãªãŒã¹ãããŒã»éçºã«ãŒã«ã«åã£ãŠå®è£
ãé²ããå¿
èŠããããŸããã ãã®ããã®BANKããŒã ã¡ã³ããŒã®PCI DSSãç解床ãäžãããã¬ãŒãã³ã°ãäºåæºåãé²ãããããŠããã®ã§ãæºãæããŠPAY.JPãžã®çŽæ¥å®è£
ãããŠãããïŒãšããã¿ã€ãã³ã°ãä»ã ã£ããããŸãã ä»ã«ããã°ããŒã¹ãããŠãããã§ãŒãºã«å
¥ã£ããããæ°ãã«å¿
èŠã«ãªã£ãæ©èœãéçºããäžã§ã®åããã¯ãšã³ãAPIæ¹ä¿®ãåæåºç€ãšã®é£åã®ããã®ãããã®è¿œå ãªã©ãä»åŸãé²ããŠããäºå®ã§ãã PAY.JP YELL BANKã®éçºã®ããããããšãã ããŠããããªPAY.JP YELL BANKãéçºããäžã§ã®ç¹åŸŽã§ãããå人çã«æ
åœããŠããŠãšãŠãããããããšæããŠããããšãçããŸã«ãå°ãç¥ã£ãŠããããã°ãšæããŸãã 倧ããåããŠã3ã€ãããŸã BASE / YELL BANKã®ãªãœãŒã¹ã掻çšããéçºã¹ããŒãã®éãã»ææ°ã®å€ã ãšã³ãããããã¡ã€ãã³ã¹ãšããå°ãç¹æ®ãªãããã¯ãã§ããããš éèã®ãã¡ã€ã³ç¥èãšæ©æ¢°åŠç¿ã»éè¡APIãªã©ã®ãã¯ãããžãŒãçµã¿åãããŠèª²é¡è§£æ±ºããŠããããš BASE / YELL BANKã®ãªãœãŒã¹ã掻çšããéçºã¹ããŒãã®éãã»ææ°ã®å€ã ããªãœãŒã¹ã掻çšããšæžããšãããããã¿ãä¹ãããŠãããããªãã¥ã¢ã³ã¹ãå«ãã§ããŸããŸãããã©ã¡ãããšãã㚠䌎走ããŠãããããŒã ããããã¯ãããšãŠãè¿ããšããã«ããŠãäžç·ã«éçºã§ããŠããç¶æ
ã§ãããããšãŠã䟡å€ããã ãã®ã ãšæã£ãŠããŸãã ããå
·äœçã«ã¯ãå
人ã®ç¥èŠãããŒã¹ã«åèšèšãããæ€èšããäžã§PAY.JP YELL BANKã«åã蟌ãã ããæ°ããæ©èœãäœãéã«ã¯èª¿æ»ãå
±ã«é²ããŠåæ
ãããããããã£ãç¥ã®é«ééè·¯ã«ä¹ããªããBANKããŒã ã»BASEã°ã«ãŒãå
šäœã§åããã¹ãæªæ¥ãç®æããŠéçºãããŠããç¹ã§ãã ãŸããåŸè¿°ã®ãšã³ãããããã¡ã€ãã³ã¹ãšãããããã¯ãã§ããç¹åŸŽã®è©±ã«ãéãªããŸãããBASEã»PAY.JPãšããæ¢åãã©ãããã©ãŒã ããããããã«ç°ãªãè§åºŠããã®æ°ããæ©èœã远å ãããšããçµéšã¯ãããã¯ããå®å
šã«ãŒãããæš¡çŽ¢ããããããããçšåºŠã¿ãŒã²ãããçµããŠããåãé«éã«éçºãå§ããããšãã§ããŸãã ããã«ãæ¢åãã©ãããã©ãŒã ã§åŸãè³éãæè³ããããšã§ããããã€ãããã¯ã«æ©èœãäœãããšãåºæ¥ããšãããé
åã§ãã ä»ã«ãã æ®æ®µã®éçºãçµç¹èŠæš¡ããã§ãŒãºãå
ã«é²ãã§ãããããã¯ããšæ·±ãé¢ãããåãäŒç€Ÿå
ã§åãæ¹åãåããŠåãã®ã¯ãšãŠã楜ãã ã§ãã BANKããŒã ã®ç޹ä»è³æã«ãèšèŒããããŸããããã«ãµã€ã¯ã«ãšã³ãžãã¢ãç®æããšã³ãžãã¢ããŒã 颚åã§ããããããšã³ãžãã¢ã¯ã¢ããªã±ãŒã·ã§ã³ã¯ãã¡ãããã€ã³ãã©ãåæåºç€ãäŒç»ã«ãæºãã£ãŠããããšãå€ã
ãããŸãã GoãPythonã®è©±ãBANKããŒã ã®ã¡ã³ããŒã«èããããAWSã®ç¥èãæ·±ãBASEå
ã®å¥ã®ããŒã ã«èããããããã³ããšã³ãã®è©±ãèãããŠçããããšãããããæã£ãŠãã圹å²ãåŸæãªé åãäºãã«çµã¿åãããŠãããã¯ãäœããé²ããããŠããã®ã¯ãšã³ãžãã¢çµç¹ãšããŠããããããšããã ãªãšåžžæ¥é ããæããŠããŸãã ãšã³ãããããã¡ã€ãã³ã¹ãšããå°ãç¹æ®ãªãããã¯ãã§ããããš ãšã³ãããããã¡ã€ãã³ã¹ã®ç¹åŸŽãšããŠãBtoBtoCïŒBASE BANK to BASE to BASEãŠãŒã¶ãŒïŒãšããæµãã§ãµãŒãã¹ãæäŸãã圢ã«ãªãã®ã§ã BASE BANKç®ç·ã ãšæäŸå
ã«ãã£ãŠãŠãŒã¶ãŒã®ã¿ã€ããããªãå€ãããšããç¹åŸŽ ããããŸãã PAY.JP YELL BANKã®åææäŸæã¯ãBASEåãã«æäŸããŠããYELL BANKã®ç¥èãããŒã¹ã«äœãå§ããŠããã®ã§ããã幎å§ãããããã¯PAY.JPã®å çåºã®ç¹æ§ãLookerãªã©ã䜿ã£ãŠåæããããé©ãããµãŒãã¹æäŸæ¹æ³ã暡玢ããŠããŸãã ãšã³ãžãã¢ç®ç·ã§ã¯ããšã³ã¹ããããã¡ã€ãã³ã¹ãšãããµãŒãã¹åœ¢æ
ã¯ãïŒå€éšå±éãèŠæ®ããŠãïŒç€Ÿå€ã®äººã䜿ãAPIãšããŠã©ãèšèšããã¹ããïŒæè¡æ§æã¯ã©ãããã¹ããïŒããäžç·ã«èããå¿
èŠããããŸãã ããã¯ä»ã®ãµãŒãã¹åœ¢æ
ã ãšãªããªãæ·±ãèããããšããªããã€ã³ãã§ãèªåã®æè¡åãèšèšåã䌞ã°ãäžã§å¿
èŠãªèгç¹ã§ããããããã磚ãããšã§ãµãŒãã¹ãšããŠã®äŸ¡å€ãé«ãŸãããšã«ç¹ããã®ã§ãšãŠããããããããéçºã«ãªããŸãã PAY.JP YELL BANKã«ãããŠã¯ããããŸã§ã¯Next.js補ã®ã¢ããªã±ãŒã·ã§ã³ãBANKããŒã ãæäŸããAPIã®ã¯ãã·ã§ã³ãšç»é¢å®è£
ãæ
ã£ãŠããŸããããä»åŸã¯PAY.JPã®ããã¯ãšã³ãåãAPIãçŽæ¥æäŸãã圢ã«å·®ãæ¿ããŠããã®ã§ãããAPIã¹ããŒããéèŠããæ¹åã§åãå§ããŠããŸãã éèã®ãã¡ã€ã³ã«æ©æ¢°åŠç¿ã»éè¡APIãªã©ã®ãã¯ãããžãŒãçµã¿åãããŠèª²é¡è§£æ±ºããŠããããš PAY.JP YELL BANKã§ã¯ãPAY.JPå çåºã®å°æ¥ã®å£²äžäºæž¬ãããµãŒãã¹ã®ã³ã¢ã«ããããã®æ©èœãå®çŸããããã«æ©æ¢°åŠç¿ã䜿ã£ãŠããŸãã ãã®PAY.JP YELL BANKã«ããã売äžäºæž¬ã®éçºã«ã¯ â PAY.JPå çåºã®å£²äžããã粟緻ã«äºæž¬ããé©åãªé¡ãè³éæäŸããŠååãŸã§æ»ããªãå®çŸããããšã§ã BASE BANKãšããŠã®äºæ¥ç¶ç¶æ§ãé«ããããã®ãå®ãã®å£²äžäºæž¬ç²ŸåºŠåäžã â¡ ãªã¹ã¯ã³ã³ãããŒã«ãå¯èœãªç¯å²ã§è³éæäŸå¯èœãªéé¡ãäžããããã«ã©ã®ãããªããŒã¿ã远å ã§æäŸããŠããã£ãŠæ©æ¢°åŠç¿ã¢ãã«ã«åã蟌ãã¹ããèããŠã ããå€ãã®PAY.JPå çåºã«äœ¿ã£ãŠããããããã«ããããã®ãæ»ãã®å£²äžäºæž¬ç²ŸåºŠåäžã ã®2çš®é¡ããããä»åŸããã®èŸºãã¯æ¹åãé²ããŠããããšèããŠããããããŸãã ãã®ä»ã«ãããéã«é¢ãããããã¯ãã§ãããããé«ã責任æãæ±ããããé¢ãšããããã¯ãããžãŒã䜿ã£ãŠè§£æ±ºã§ããããšãPAY.JP YELL BANKéçºãã²ããŠã¯BANKããŒã ã§éçºãè¡ãããšã®ãããããã§ãããšæã£ãŠããŸãã äžäŸãšããŠã¯ãéè¡APIãªã©ã䜿ã£ãæ¯èŸŒå
¥éã«ããããŠãŒã¶ãŒäœéšã®æ¹åãªã©ãæããããŸãã ãŸããå®éã«è³éæäŸãè¡ãããšãå çåºã®éå¶ã»æé·ã«ã€ãªããäžæã«ãªãããããšãBANKããŒã ã§ç©æ¥µçã«è¡ãªã£ãŠãããŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒããæ§ã
ãªãŠãŒã¶ãŒã®å£°ãèããŠç¥ãããšãã§ããèªåãã¡ã®ããããã«ã€ãªãã£ãŠãããŸãã ãŸãšã ãããŸã§é·ã
ãšèªåãæ
åœããŠããPAY.JP YELL BANKãšãããããã¯ãã®ããããããšãããæå±ããŠããããŒã ã®ãããšãããããããèªãããŠããã ããŸããããã¶ããšãŸãšãããšä»¥äžã®éãã§ãïŒ ããããã¯ãå
容ã»ãã§ãŒãºçãªããããããšããã ããããã°ããŒã¹ããŠãããã§ãŒãºãªã®ã§ãæ°æ©èœãæè¡æ§æã®ã¢ããããŒããªã©ãã€ãããã¯ãããããšãã ãšã³ãããããã¡ã€ãã³ã¹ã¯çŽæ¥éèãµãŒãã¹ãæäŸããããã¯BtoBtoCãšãã圢ã§è€éã ããæ¢åã®ãŠãŒã¶ãŒã®èª²é¡ã«ããé©ãã圢ã§ãµãŒãã¹äŸ¡å€ãæäŸããããšãã§ãããšãã ãçµç¹çãªããããããšããã BASE / PAY.JPãšäŒŽèµ°ããŠãããã¯ãã®ã°ããŒã¹ãéçºãé²ããŠãããšãã ãã«ãµã€ã¯ã«ãšã³ãžãã¢ãç®æã颚åãªã®ã§äŒç»ãéçºãéçšãåæãå«ããŠå
šãŠã®ã¹ãããã«æ·±ãé¢ãããšãã ãæè¡çãªããããããšããã ãããã¯ãã®ã³ã¢äœéšã«ã€ãªãã売äžäºæž¬ã«æ©æ¢°åŠç¿ã䜿ã£ãŠããã®ã§ãããŒã¿ã®éãæ¹ãããŒã¿é£æºã®å¥çŽã®çµã¿æ¹ãèããäœå°ããŸã ãŸã ãããšãã éèïŒç¹ã«è³é調éãšæ±ºæžïŒã®ãã¡ã€ã³ç¥èãæ·±ããããšãã§ããããš å€éšåãAPIãšããŠã®èšèšããã®ããã®ã¯ãŒã¯ãããŒæ§ç¯ãã§ããã»å¿
èŠãªããš ç§èªèº«ã¯ããã®ç°å¢ã§éçºãè¡ãªã£ãŠããããšã§èªåã®æè¡åããšã³ãžãã¢ãšããŠã®æé·ã«ç¹ãããããªãšæããŠããã®ã§ãä»åŸãPAY.JP YELL BANKã®éçºã«æ·±ãæºãã£ãŠãã©ãã©ããšãµãŒãã¹ã®äŸ¡å€ãé«ããŠãããããã«éçºãããŠããäºå®ã§ãïŒð ãããã« ãããŸã§PAY.JP YELL BANKãBANKããŒã ã«ã€ããŠã®ç޹ä»ããèªã¿ããã ãããããšãããããŸããïŒ BASE BANKããŒã ïŒæ±äººåªäœã§ã®èšèŒã¯YELL BANKïŒã§ã¯ãšã³ãžãã¢ã倧åéäžã§ãã®ã§ãå°ãã§ãæ°ã«ãªããªðÂ ãšæã£ãŠããã ããã®ã§ããã°ããã²ãã²ã«ãžã¥ã¢ã«é¢è«ãXïŒ @gatchan0807 ïŒãªã©ã§ã声ããããã ãããšå¬ããã§ãïŒ binc.jp ææ¥ã¯ kitamuran ãããš pigooosuke ããã®èšäº2æ¬ç«ãŠã§ãïŒã楜ãã¿ã«ãïŒ
ãã®èšäºã¯ BASE ã¢ããã³ãã«ã¬ã³ããŒ10æ¥ç®ã®èšäºã§ãã ã¯ããã« ã¯ãããŸããŠïŒ BASEã®ã«ãŒãããŒã ã§ããã¯ãšã³ããšã³ãžãã¢ãããŠãã @ykagano ã§ãïŒ ã«ãŒãããŒã ã¯äž»ã«BASEã®ã·ã§ããã³ã°ã«ãŒãæ©èœã®éçºãæ
åœããŠããããŒã ã§ãã ãããªã«ãŒãããŒã ã§ã®ããã¥ã¡ã³ã管çè¡ãã玹ä»ããããšæããŸãïŒ ããã¥ã¡ã³ã管çã®èª²é¡ BASEã§ã¯Notionã瀟å
WikiãšããŠäœ¿çšããŠããŸãïŒ ç€Ÿå
è³æã¯ãNotionã®ããŒãžãããŒã¿ããŒã¹ã§äžå
管çããŠããŸãïŒ ã«ãŒãããŒã ã§ãããã¥ã¡ã³ãã¯Notionã®äžã€ã®éå±€æ§é ã§ç®¡çããŠããŸããã䜿çšããŠããäžã§ä»¥äžã®èª²é¡ããããŸããã 倧æµã®ããŒãžã¯æåã«æžãããåŸã ããŒãžãæŽæ°ãããªã ããŒãžäœæè
以å€ã¯æŽæ°ãã¥ããå¿ççãªå£ããããã æ¯åæ°ããããŒãžãäœã£ãŠããããã æ°ããæ
å ±ãšå€ãæ
å ±ãæ··åšããŠãã å€ãããŒãžã«åæãšãªãæ
å ±ãæžããŠããããšã 課é¡ã解決ããããã« Notion AIã䜿çšããŠããŸãïŒ AIã«å°ããã°åããŒãžã®æ
å ±ãå
ã«æ
å ±ãåºãŠããã®ã§ããã䟿å©ã§ãïŒ ã§ãæ£ããæ
å ±ãäžçºã§åºãŠãããšã¯éããŸããã 鮮床ãå€ãæ
å ±ãæŸã£ãŠããããšããããŸãã æ¯ååãããšãAIã«å°ããŠããããšãâŠâŠã ããã§ããã䜿ãæ
å ±ã¯ããŒã ã®å
±æããŒãžã«ãŸãšããŠããããšããå§ãããŸãã ããã«ããã以äžã®å©ç¹ããããŸãã å¿
èŠãªæ
å ±ã«ããã«ã¢ã¯ã»ã¹ã§ããŸã ããŒã ã¡ã³ããŒå
šå¡ãåãæ
å ±ãå
±æã§ããŸã ããŒã å
šäœã®éçºå¹çãåäžããŸã ããã«ããŸãšããããŒãžã¯ãNotion AIãšçµã¿åãããããšã§ã ããå¹ççã«æ
å ±ãæ€çŽ¢ã§ãã ããã«ãªããŸãã ã«ãŒãããŒã ã®ããã¥ã¡ã³ã管ç ã§ã¯Notionã䜿ã£ãå
·äœçãªç®¡çæ¹æ³ãèŠãŠãããŸãïŒ ã«ãŒãããŒã ã§ã¯äžã€ã®NotionããŒã¿ããŒã¹ã«ãã¬ããžãéçŽããŠããŸãïŒ ãã æŽæ°ãããªããŸãŸã«ãªã£ãŠããããŒãžãå€ãã§ãã æéãçµã€ãšããŒãžãå¢ããŠããã®ã§ãå
šãŠã®ããŒãžãææ°åããã®ãå°é£ãªç¶æ³ã§ãã ãã®ãããã«ãŒãããŒã ã§ã¯ãããŒã¿ã«ããŒãžã§ ä¿å®ããããã¥ã¡ã³ããšä¿å®ããªãããã¥ã¡ã³ããåãã ããšã«ããŸããã ã«ãŒãããŒã ã®ããŒã¿ã«ããŒãž äžå³ã¯ã«ãŒãããŒã ã®ããŒã¿ã«ããŒãžã®ãããã§ãïŒ æåã«ä¿å®å¯Ÿè±¡ã®ããŒãžã衚瀺ããŠããã¢ã¯ã»ã¹ã§ããããã«ãŸãšããŠããŸãã ä¿å®å¯Ÿè±¡ã®ããŒãžã¯ ããŒã ã¡ã³ããŒå
šå¡ã§æŽæ°ããŠããããŒãž ãšãªããŸãã å
ã»ã©ã®ããŒã¿ããŒã¹ã®äžãã以äžã®ã©ãã«ã®ä»ããããŒãžãä¿å®å¯Ÿè±¡ãšããŠãã¥ãŒã«è¡šç€ºããŠããŸãã ããŒã éå¶ ä¿å®ïŒéçšïŒ ä¿å®ïŒæè¡ïŒ ä¿å®ïŒã¡ã³ããã³ã¹ïŒ 次ã«ä¿å®å¯Ÿè±¡å€ã®ããŒãžã§ãã å·ŠåŽã¯ããŒã¿ããŒã¹ã®äžèŠ§ã«æ°èŠè¿œå ãããè³æã衚瀺ããŠããŸãã å³åŽã¯ä¿å®å¯Ÿè±¡å€ã®ã©ãã«ã§è³æã«ã¢ã¯ã»ã¹ã§ããããã«ããŠããŸãã æåã¯å·¥äºäžã®ããŒãžãè³æãè²ãŠã°ãã©ãã«ãä»ããŠä¿å®å¯Ÿè±¡ã«ããŠããŸãã è³æã¯ããŒã å
šå¡ã§è²ãŠããã® ã§ãïŒ ãã®ææ°ã«ãªã£ãããšãäžè¡ã ãæžãããããŒãžã§ããåŸããæ°ä»ããåŸãŠãæžããæ¹ããããšæã£ãããšã¯ã©ãã©ã远èšããŠããŸãïŒ ã«ãŒãããŒã ã¯BASEã®æ±ºæžåç·ãå®ãããŒã ãããŸã§ã¯äž»ã«æ¥åèŠç¹ã®ããã¥ã¡ã³ã管çè¡ã§ããã ã«ãŒãããŒã ã¯BASEã®æ±ºæžåç·ãå®ãããŒã ã§ãïŒ ãã®ã¡ã€ã³ã®ä»æ§æžã¯ã©ããã£ãŠç®¡çããŠããã®ããã話ãããããšæããŸãïŒ ä»æ§æžãåžžã«ã¡ã³ããã³ã¹ããããšã¯éåžžã«å°é£ã§ãã æ¡ä»¶ããšã«NotionãFigJamã䜿ã£ãŠè³æã¯äœã£ãŠããŸãããä¿å®å¯Ÿè±¡ãšããŠãã仿§æžã¯äžã€ã«çµã£ãŠããŸãã ããã¯ã·ãŒã±ã³ã¹å³ã§ãã æ±ºæžææ®µããšã«å€éšé£æºå
ïŒäž»ã«æ±ºæžäŒç€ŸïŒãç°ãªãã°ãéåæåŠçã«ãªã£ãŠããç®æããããŸãã ç£èŠã§ã¯ã©ããé害ãã€ã³ãã«ãªãã®ã確èªããæ¹ä¿®æã¯ã©ãã倿Žããããšã«ãªãã®ãæ€èšãå¿
èŠã«ãªããŸãã ããããæã«çŽ æ©ãå
±éèªèãæãŠãããã«ã åŠçå
šäœã俯ç°ã§ããã·ãŒã±ã³ã¹å³ãæŽæ° ããŠããŸãã ã·ãŒã±ã³ã¹å³ãGitHubã§ç®¡çãã ã·ãŒã±ã³ã¹ã以äžã®ããã«GItHubã§ç®¡çããŠããŸãïŒè¡šç€ºéšåã¯äžéšã§ãïŒã GitHubã¯Mermaid圢åŒã®ãã¬ãã¥ãŒã«å¯Ÿå¿ããŠããŸãã®ã§ãMermaid圢åŒã§æžããmdãã¡ã€ã«ãæ ŒçŽããŠããŸãã ã«ãŒãããŒã ã®æ±ºæžåç·ã®ã·ãŒã±ã³ã¹ã¯äž»ã«ä»¥äžã®éå±€æ§é ã«ãªã£ãŠããŸãïŒãããŸã§ã€ã¡ãŒãžã®ãããäžè¬çãªæŠå¿µå³ãŸã§ç°¡ç¥åããŠããŸãïŒã import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true }); sequenceDiagram participant User as ãŠãŒã¶ãŒ participant Front as ããã³ããšã³ã participant Back as ããã¯ãšã³ã participant Payment as 決æžäŒç€Ÿ User->>Front: ååéžæã»è³Œå
¥ãã¿ã³æŒäž Front->>Back: 賌å
¥ãªã¯ãšã¹ãéä¿¡ Back->>Back: åšåº«ç¢ºèª Back->>Payment: 決æžå®è¡ Payment->>Back: 決æžçµæéç¥ Back->>Back: 泚ææ
å ±ä¿å Back-->>Front: 決æžå®äºéç¥ Front-->>User: å®äºç»é¢è¡šç€º ã·ãŒã±ã³ã¹å³ã¯ããã¯ãšã³ãã®GitHubãªããžããªã«æ ŒçŽããŠããŸãã æ±ºæžåç·ã®åŠçã倿Žã«ãªããšãã¯å¿
ãããã¯ãšã³ããæŽæ°ãããããã§ãã æ±ºæžã®åŠçãããŒã«å€æŽãçºçããå Žåã ã³ãŒãä¿®æ£ãšåãããŠãã·ãŒã±ã³ã¹å³ãä¿®æ£ ããããã«ããŠããŸãã ãããã« å®ã¯ã«ãŒãããŒã ã«äžèšã®ããã¥ã¡ã³ã管çã«ãŒã«ãäœã£ãã®ã¯æè¿ã®è©±ã«ãªããŸãã ä»åŸãã«ãŒãããŒã ã«æåãšããŠæ ¹ä»ããŠãããã°ãšæããŸãïŒ BASEã¯æ±ºæžã«èå³ããããšã³ãžãã¢ãç©æ¥µæ¡çšäžã§ãïŒ ãèå³ããããŸãããæ¡çšæ
å ±ããã²ã芧ãã ããïŒ binc.jp ææ¥ã¯ãgatchan0807ããã®èšäºã§ãããæ¥œãã¿ã«ïŒ
æ¬èšäºã¯ BASEã¢ããã³ãã«ã¬ã³ããŒ2024 ã®9æ¥ç®ã®èšäºã§ãã ã¯ããã« åããŸããŠãBASEã§ããã³ããšã³ããšããã¯ãšã³ãã®éçºãæ
åœããŠãã kondo ãšç³ããŸãããã®èšäºã§ã¯ãç§èªèº«ãéçºãšã³ãžãã¢ãšããŠãããžã§ã¯ããæåãããããã«å¿æããŠããããšã玹ä»ããŸããæ¥ã
ãããžã§ã¯ããé²ããäžã§ã©ã®ãããªåãçµã¿ãè¡ãªã£ãŠããã®ããåèã«ãªãäºäŸç޹ä»ãšãªãã°å¹žãã§ããåæãšããŠãç§ã¯BASEã§ã¯ã¹ã¯ã©ã éçºã»ã»ãŒãã«ãªã¢ãŒãã§åããŠãããŸãã ãããžã§ã¯ããæåãããããã®å·¥å€« ã¹ã¯ã©ã éçºã§ããã·ãã£ãèšæž¬ããŠãã¹ããŒãªãŒãã€ã³ãããéç®ããŠãªãªãŒã¹æ¥ããã€ãå¯èŠåãã ã¹ã¯ã©ã éçºã§ããŒã ãã¹ããªã³ãã§ãããããã·ãã£ãæ¶è²»ã§ããã®ãèšæž¬ããŠãæ®ãã®ã¹ããŒãªãŒãã€ã³ããäœã¹ããªã³ãã§çµããã®ãèšæž¬ããåãçµã¿ãããŠããŸãããªãªãŒã¹ææãäºæž¬ããŠããããšã§ãèªåãã¡ã¯ãã¡ããããããŒãžã£ãŒãããžãã¹ãµã€ããšãäŒè©±ãããããªããŸãããŸãããã·ãã£ãåäžããããŒã ãæé·ã§ããŠããããªã©ã®ææšãèšæž¬ããããšãã§ããŸãã æ¯ãè¿ãã§è¯ãã£ãããšãæ¹åãããããšããã®ã¢ã¯ã·ã§ã³ã決ãã æ¯ãè¿ãã®å Žã§ã¯ãããŒã å
šå¡ã§ã¹ããªã³ãäžã«è¯ãã£ãããšãæ¹åãã¹ãç¹ãå
±æãããããåºã«å
·äœçãªã¢ã¯ã·ã§ã³ã決ããŸããäŸãã°ãè¯ãã£ãããšãšããŠãã¢ããã®å®æœãæããããå Žåã¯ãã¢ãããç¶ç¶ããŠãæ¹åãã¹ãç¹ã§çްãã仿§ãäžéæã§ãããšæãããããã仿§æžããã詳现ã«èšèŒããŠãããŸãããã®ããã»ã¹ãç¹°ãè¿ãããšã§ãæ¹åç¹ã¯åŸã
ã«æ¹åãããŠãè¯ãã£ãããšãç¶ç¶ãããŠãããŸãã ããŒã ã¡ã³ããŒå
šå¡ãããã³ããšã³ãã»ããã¯ãšã³ãã»ã€ã³ãã©ã®å¯Ÿå¿ãã§ããããã«ãã ããŒã ã¡ã³ããŒå
šå¡ãã§ããé åãå¢ãããŠããããšã§ãã¿ã¹ã¯ãå人ã«äŸåããªã匷ãããŒã ã«ãªã£ãŠãããšèããŠããŸããèªåãã¡ã®ããŒã ã§ã¯ããã¯ãšã³ããšã³ãžãã¢ãReactãTypescriptã«åãçµãã ããããã³ããšã³ããæžããSQLãæžããšã³ãžãã¢ããããªã©ãåã
ãé 忡倧ã«åãçµãã§ããŸãããã¢ãããªã©ãéããŠãµããŒãããããšã§ãç¡çãªãã§ããããšãå¢ããããšãã§ããŠããŸãã ã³ãŒãã¬ãã¥ãŒããèªåã®ã¿ã¹ã¯ãåªå
ããªã ã³ãŒãã¬ãã¥ãŒã¯ãæ©èœããªãªãŒã¹ããããã«ã¯å¿
é äºé
ã§ããããŒã ãæ©èœãçŽ æ©ããªãªãŒã¹ããããšã¯ã顧客ãžã®äŸ¡å€æäŸãæ©ãããšèããŠããŸãããã®ãããèªåãçµãããããã¿ã¹ã¯ããããã³ãŒãã¬ãã¥ãŒãå
å»¶ã°ãã«ããŠããŸããšããã®åããŒã ãæ©èœããªãªãŒã¹ã§ããæéã䌞ã³ãŠããŸããŸãããããã£ãŠãã³ãŒãã¬ãã¥ãŒã¯åªå
ããŠèŠãããã«ããŠããŸãã åæã®èããç¥èãç«ã¡äœçœ®ã®ã®ã£ãããåãããããåæçã³ãã¥ãã±ãŒã·ã§ã³ã掻çšãã ç§ã®ããŒã ã§ã¯ããã«ãªã¢ãŒãç°å¢ã§SlackãGitHubã䜿ããéåæã§éçºãé²ããŠããŸããããããéåæã®ããåãã§ã¯ãåæç¥èãçµéšåãåé¡ã«å¯Ÿããæž©åºŠæãäŒããã«ãããè°è«ãå¹³è¡ç·ã«ãªãããšããããŸãããã®èª²é¡ãè§£æ¶ããããã«ãåæçãªã³ãã¥ãã±ãŒã·ã§ã³ãåãå
¥ããŠããŸããäŸãã°ãAããã¯å¹çæ§ãéèŠããBããã¯åããããããåªå
ããŠããå ŽåãæèŠãããéãããšããããŸãããã®ãããªæããªã³ã©ã€ã³ããŒãã£ã³ã°ã§ãäºãã®æèããã»ã¹ãèæ¯ãå
±æããããšã§ãèªèã®ã®ã£ãããåãŸããæ°ããªè§£æ±ºçãèŠã€ããããšãã§ããŸãããã®ããã»ã¹ãéããŠãçžäºçè§£ãæ·±ãŸãã ãã§ãªããè°è«ãéããŠã¡ã³ããŒåå£«ã®æ°ããèŠç¹ã®ç²åŸã«ãã€ãªãã£ãŠããŸãã äžç¢ºå®æ§ã®é«ãã¿ã¹ã¯ããåãçµãã§ãPJã®äžç¢ºå®èŠçŽ ãæžãããŠãã ãããžã§ã¯ãã®åºç€ã§ãäžç¢ºå®æ§ã®é«ã仿§ãæè¡èª²é¡ããåªå
çã«åãçµãããšã§ããªã¹ã¯ãæ©æã«çºèŠããè§£æ¶ããããã«ããŠããŸããç¹ã«å€éšAPIãšã®é£æºããä»ãŸã§æŽ»çšããããšã®ãªãæè¡ãªã©ã¯ãå®éã«ãããå¿
èŠã«ãªãããåã«èª¿æ»ããŠãäžç¢ºå®æ§ãåãé€ãããã«ããŠããŸããåŸåã«ãªãã»ã©äžæž¬ã®äºæ
ã®å¯Ÿå¿ã¯å€§ãããªã£ãŠããŸãã®ã§ãæ©ãã®å¯Ÿå¿ãèå¿ãšèããŠããŸãã ã¹ããŒãªãŒã»ã¿ã¹ã¯ã®åªå
床ãæç¢ºåãã å
šãŠã®ã¿ã¹ã¯ã«æç¢ºãªåªå
床ãèšå®ããããšã§ãããŒã ãä»ã©ã®ã¿ã¹ã¯ãæåªå
ã§åãçµãã¹ããæç¢ºã«ããŠããŸããããããããšã§éèŠãªã¿ã¹ã¯ã®æãæŒããé²ãã ããåªå
床ã®é«ãã¿ã¹ã¯ãããªãªãŒã¹ãããããšãã§ããŸãã 仿§æžãæç¢ºã«èšèŒãã 仿§æžã詳现ã«èšèŒããããšã§ããããžã§ã¯ãå
šäœã®éææ§ãé«ããããŒã ã¡ã³ããŒãå°æ¥ã®é¢ä¿è
ãè¿·ãããšãªãäœæ¥ãé²ããããããã«ããŸãããŸãããã¹ãã±ãŒã¹ã仿§æžããæç¢ºã«å°ãåºããããã«ãªãããããã¹ãã®å¹çåããã°ã®æ©æçºèŠã«ãã€ãªãããŸãããããæ ã£ãŠããŸããšãSlackã®ã©ããã§äŒè©±ããèšæ¶ããããšããã©ããã®ããŒãã£ã³ã°ã§ãããªã£ãæ°ãããããšãã£ãæ
å ±ãæµããŠããŸãäºè±¡ãçºçããŠããŸããŸãã仿§æžãæžãæéããæ
å ±ãæãèµ·ãããŠããæéã®æ¹ãé«ãå Žåãå€ãããããªãã¹ãæžãããã«ããŠããŸãã ãããã« æ¬èšäºã§ã¯ããããžã§ã¯ããæåãããããã«å·¥å€«ããŠããããšã玹ä»ããããŸããããããžã§ã¯ãéå¶ã®åèã«ãªãã°å¹žãã§ããææ¥ã¯ykaganoããã®èšäºãå
¬éäºå®ã§ãããæ¥œãã¿ã«ïŒ binc.jp
æ¬èšäºã¯ BASEã¢ããã³ãã«ã¬ã³ããŒ2024 ã®8æ¥ç®ã®èšäºã§ãã ã¯ããã« BASE Feature Dev1 Group ã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ã® @yuna_miyaa ã§ãã å®ã¯ãç§ãBASEã«è»¢è·ããŠãããã3幎ã§ãããåè·ã¯ãªããšããã£ã·ãšã§ããïŒ (åèšäŒç€ŸãçµãŠçŸåšå
¥ç€ŸããŠãããŸã) å°ãå€ãã£ãçµæŽãªã®ã§ãªãã§ãšã³ãžãã¢ã«ïŒã¯ãã100å以äžã¯èãããŠããŸãã çŸåšã坿¥ã§ããã£ã·ãšãç¶ããããŠããã®ã§ããã€ããããã£ã·ãšãšãšã³ãžãã¢ã®å
±éç¹ããšããããŒãã§èšäºãæžããŠã¿ãããšæã£ãŠããŸãã ããŠãä»åã¯ãšã³ãžãã¢ãšããŠã®è©±é¡ã ç§ã¯çŸåšã ã¹ã¯ãšã¢é£æºApp éçºã®ãªãŒããŒãåããŠããŸãã ãã®å幎éã§ããŒã ã¯2床ã倧ããªå€åãçµéšããŸããããã®äžã§ãç§ããªãŒããŒãšããŠå¿ãããŠããããšããããŒã éçºãåæ»ã«é²ããããã®å·¥å€«ã«ã€ããŠã話ãããããšæããŸãã ããŒã éçºãé²ããããã«æèããŠããã㚠倧ããªç®æšãã¿ããªã§å
±æãã ãšã³ãžãã¢ãªã³ã°ã¯ã¿ã¹ã¯ã®é£ç¶ã ããããããã ãã«è¿œããããšèŠéãçããªããã¡ã§ããããªããã®ä»äºãããã®ããããããã©ããªäŸ¡å€ãçãã®ãããšããå
šäœåãå
±æããããšããã¢ãããŒã·ã§ã³ã¢ãããšããŒã ã®äžäœæã«çŽçµãããšèããŠããŸãã ããšãã°ããããžã§ã¯ãåæã®æ®µéã§ã¯ãã¿ã¹ã¯ã®å®äºæ¡ä»¶ãé²ãæ¹ã现ããèšèŒããŠãæéããããŠèªèåãããè¡ããŸããã åœæã¯ããããŸã§ããå¿
èŠããïŒããšæãã»ã©å€§å€ã§ããããçµæãšããŠã¡ã³ããŒãã¿ã¹ã¯ãé²ããäžã§å
šäœåãã€ããããã«ãªãããããžã§ã¯ããžã®çè§£ãæ·±ãŸã£ãŠãããŸããã å°ã£ãŠããããšãçŽ çŽã«å
±æãã ããªãŒããŒã ããå
šéšè§£æ±ºããªããïŒããšæã£ãŠãããããããæéããã£ãŠãè¶³ããŸããã ãããããå®ã¯ãããããããªããŠâŠããšèªåã®åŒ±ã¿ããªãŒãã³ã«ããããšã§ãèªåã®åŒ±ã¿ãå°ã£ãŠããããšããªãŒãã³ã«ããããšã§ããå©ãåããããŒã ããšããå®å¿æãçãŸãããã§ãã å®éã«ãç· åçŽåã«ãã©ãã«ãèµ·ãããšããæ©ãã«ãããã解決ã§ããªãâŠå©ããŠã»ããããšå£°ãäžããããšã§ãã¡ã³ããŒãç©æ¥µçã«ååããŠãããŠç¡äºã«ä¹ãè¶ããããšãã§ããŸããã äžäººã§æ±ã蟌ãã®ã§ã¯ãªããããŒã ãä¿¡ããããšã®å€§åããçæããç¬éã§ãããã ã¡ã³ããŒã®å°ãããšããã¡æ©ãå¯ç¥ãã ãªãŒããŒã®åœ¹å²ã®äžã€ã¯ãã¡ã³ããŒãææãåºããç°å¢ãæŽããããšãã ãããããã¡ã³ããŒãå°ã£ãŠããªãããçŽ æ©ãå¯ç¥ããããã«å¿ãããŠããŸãã ç¹ã«æ°äººã¡ã³ããŒãå
¥ã£ããšãã¯æ³šææ·±ã芳å¯ããŸãã åããŠã®ç°å¢ã«æ
£ãããŸã§æéãããããŸãããã ããšãã°ãéè«äžã«ãæè¿ã©ãïŒå°ã£ãããšãªãïŒããšäœæ°ãªãèããŠã¿ãããããŒãã£ã³ã°åŸã«åå¥ã§å£°ããããããããŒã ã®ä¿¡é Œé¢ä¿ãäœã倧ããªäžæ©ã«ãªããšä¿¡ããŠããŸãã ãŠãŒã¢ã¢ãå¿ããªã ä»äºã«çå£ãã¯å¿
èŠãã§ããçå£ãã°ããã ãšç©ºæ°ãéããªãããšããããŸãããããããªãšãããŠãŒã¢ã¢ãå ŽãåãŸããŠãããŸãã ããšãã°ãæ¯é±1åã®éè«ãã€ãªãŒãšç§°ããŠãã€ãªãŒã®åŸã«ãéè«ã¿ã€ã ãèšããŠããŸãããæè¿ããã£ãŠãã©ã³ãã®è©±ãããã¡ãã£ãšããè¶£å³ã®è©±ããªã©ã話é¡ã¯äœã§ãOKã ä»äºã¯çå£ã«åãçµãã¹ãã§ãããæ¥œããé°å²æ°ã倧äºã§ãïŒããŒã ã®ç©ºæ°ãåãããããã«ãæã
ãŠãŒã¢ã¢ã亀ããéè«ãå¿ãããŠããŸãã ç¬é¡ãå¢ãããšãäžæè°ãšã¢ã€ãã¢ãåºããããªããŸãããããŒã å
šäœã®é°å²æ°ãæãããªããŸãã ãããã« ããŒã ã¯çãç©ã®ããã«åžžã«å€åããŠããŸããå€åã®äžã§äœã倧äºã«ããããã©ããªã¢ãããŒãã§é²ããããèããããšã¯ãšãŠãããããããããŸãã ä»åã®èšäºãå°ãã§ã誰ãã®åèã«ãªãã°å¬ããã§ãããããŠãã€ãããšã³ãžãã¢Ãããã£ã·ãšãšããç°è²ã®ãã£ãªã¢ã«ã€ããŠãã話ãã§ããæ©äŒãããã°ãšæã£ãŠããŸãïŒ ææ¥ã¯PayIDããŒã ã®kitagawaããã§ãïŒã楜ãã¿ã«ïŒ æ¡çšæ
å ± | BASE, Inc. - BASE, Inc.
ãã®èšäºã¯BASE ã¢ããã³ãã«ã¬ã³ããŒ7æ¥ç®ã®èšäºã§ãã 6æ¥ç®ã®æšæ¥ã¯asakoyaããïŒåŠåš ãã埩垰ãŸã§ã®äœéšèšããšãŠãåèã«ãªãã®ã§èå³ããæ¹ã¯æ¯éã芧ãã ããã ã¯ããã« ããã«ã¡ã¯BASEã®Product Dev / Feature Dev1 Groupã§ã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãããŠããTorataã§ãã çªç¶ã§ãããã¿ãªãããããã幎æ«ã§å€§æé€ã®ææã§ããæŽçæŽé ãã£ãŠãŸããïŒ ãã©ãã¯ãã©ã€ããŒã§è²·ããããŠç¡çããåçŽããŠããã®ããªããªãæšãŠãèžãåããã€ããå®¶ã«æ®ã£ãŠããŸã£ãŠãããã®ã¯ãããŸãããïŒ ãããªå€§æé€ã§ãããã§ãããæŽçæŽé ã§ãããããã«ã¯çéã®ã¹ãããããããŸãã å
šéšåºã äžèŠãªãã®ãåãé€ã ã°ã«ãŒãã³ã°ãã åªå
é åºãã€ããŠäžŠã³æ¿ãã å®äœçœ®ã決ããŠåçŽãã ããã¯ç§ã®æå±ããããŒã ã®ãããŒãžã£ãŒã®takashimaããããæããŠããã£ããã®ã§ãã takashimaããã¯å®¶ã®äžã ãã§ãªããæ¥ã
ã®æ¥åã«ããã課é¡ã®æŽçã«ããã®ã¡ãœãããå¿çšããŠãããšèããã®ã§èªåãç䌌ããŠã¿ãããšæããŸããã ä»åã¯ãã®æŽçæŽé ã®ã¡ãœãããçšããŠããåãåããã®å¯Ÿå¿æéãççž®ããããšããè©±ãæžããŠããããšæããŸã BASEã«ããããåãåããå¯Ÿå¿ ãããã·ã§ããã®äœæãµãŒãã¹ã§ããBASEã«ã¯æ¥ã
ã·ã§ããã®ãªãŒããŒæ§ããã®ã·ã§ãããå©çšãããŠãŒã¶ãŒæ§ããæ©èœã®ä»æ§ã«é¢ãã質åãäžå
·åã®ãåãåãããããã ããŸãã æè¡çãªèª¿æ»ãå¿
èŠãªãã®ã«é¢ããŠã¯ãšã³ãžãã¢ã«èª¿æ»äŸé Œãæ¥ãã®ã§ããããšã³ãžãã¢ãæ
åœãããžã§ã¯ããšäžŠè¡ããªããã°ãªããŸããã ããšãã£ãŠãåãåãã察å¿ã®åªå
床ãäžããããšã¯ã§ããªãã®ã§ãåãåããã«äœ¿ãæéãå¢ããããšã¯ããã ãæ
åœãããžã§ã¯ãã«å²ããæéãçããªãããšãæå³ããŸãã æ¹ååã®èª²é¡ çŸåšBASEã§ã¯æ©èœãããã€ãã«ã«ããŽãªåãããŠãããŒã ããšã«æ
åœãå²ãæ¯ãããŠããŸãã ããã«ãã®æ
åœãäžå®æéã§ããŒããŒã·ã§ã³ãããããšã§å±äººåãæé€ããããšããæ¹éã§éçšããããŠããŸãã ä»å¹Žã®9æã«ãæ
åœã«ããŽãªã®ããŒããŒã·ã§ã³ãããã Instagram販売App ãš InstagramåºåApp ãç§ã®ããŒã ãæ
åœããããšã«ãªããŸããã ãããã®Appã¯InstagramãšBASEã飿ºãããšããæ©èœã§åãåãã察å¿ã®éã«ä»¥äžã®èª²é¡ããããŸãã 飿ºããã®ã«è€æ°ã¹ããããå¿
èŠãªæ©èœã§çè§£ãé£ãã éçºã«æºãã£ãã¡ã³ããŒããã§ã«ç€Ÿå
ã«ããªãã仿§ãå®å
šã«ææ¡ããŠãã人éãããªã æ
åœã«ããŽãªã®ããŒããŒã·ã§ã³ãããã°ããã§ããŒã å
ã«ç¥èŠããªã äžèšã®èŠå ãšå€éšé£æºã®æ©èœãšããç¹æ§äžãåå ãBASEã«ããã®ããInstagramåŽã«ããã®ãã®åãåããé£ãã ãããã®çç±ã§9æ10æã¯ãåãåãã察å¿ã«æéãåãããŠããŸããæ
åœãããžã§ã¯ãã«åœ±é¿ãåºãŠããŸããŸããã ãã£ãããš å®éã«æ¹åã«åããŠæŽçæŽé ã®ã¡ãœããã«åã£ãŠä»¥äžã®ããã«é²ããŸããã å
šéšåºã ä»ãŸã§ããŒã ã§å¯Ÿå¿ããåãåãããå
šãŠFigJamã«åºããŸããã ãã®æããã°ã«ãŒãã³ã°ãããã®æã®ææšã«äœ¿ããããã«ãåãåããå
容ããåãåããã®åçããããã£ãæéããFigJamã«äžŠã¹ãŸããã äžèŠãªãã®ãåãé€ã ã°ã«ãŒãã³ã°ã®æã«ãã€ãºã«ãªã£ãŠããŸããããªåãåããããã®æã«FigJamããåé€ããŸããã ïŒå
·äœçã«ã¯Instagramé¢é£ã®åãåããã§ã¯ããããé¢é£ããå¥ã®æ©èœã«é¢ããåãåããïŒ ã°ã«ãŒãã³ã°ãã ã1.å
šéšåºãã ã§FigJamã«åºããå
容ãããšã«ä»¥äžã®4ã°ã«ãŒãã«åããŸããã 瀟å
管çç»é¢ãã解決ã§ããã°ã«ãŒã BASE / Instagram ã®ä»æ§ã詳ããç¥ããªããšåçã§ããªãã°ã«ãŒã BASEåŽã§ã®èª¿æ»ãé£ãããInstagramåŽã«å床åãåããããé¡ãããã°ã«ãŒã ãã®ä»ã°ã«ãŒã åªå
é äœãã€ããŠäžŠã³æ¿ãã åãåãã察å¿ã®æéãççž®ããããšãç®çã«æ¹åãããŠããã®ã§æ¹å掻åèªäœã«æéãããã£ãŠããŠã¯æå³ããããŸããã ä»åã®æ¹åã¯ã³ã¹ãããæéççž®ãç®æšã«ããŠããã®ã§ãä»¶æ°èªäœãäžçªå€ãã察å¿èªäœãã·ã³ãã«ã«ã§ããããªã瀟å
管çç»é¢ãã解決ã§ããã°ã«ãŒãããäžçªåªå
床é«ãããã®ã°ã«ãŒãã®åãåããå¯Ÿå¿æéãæžããæœçãèããããšã«ããŸããã å®äœçœ®ã決ããŠåçŽãã 課é¡è§£æ±ºã«ãããåçŽã¯ã¿ã¹ã¯åã«ãªããŸãã ä»åãã©ãŒã«ã¹ãããšæ±ºããã°ã«ãŒãã®å¯Ÿå¿æéãæžããããã«ã åãåãã察å¿ã§æåã«èŠãã¹ããããŒå³ãäœãããš ãã¿ã¹ã¯ãšããŸããã ãŸãããã®ãããŒå³ãåãåãããäžæåãããŠããCSã®æ¹ã«ãå
±æããããšã§ãšã³ãžãã¢ã«æ¥ãä»¶æ°ãæžãããæ¥ããšããŠããã³ãã¬çã«è§£æ±ºã§ããããã«ããããšãçããšããŸããã ãããã« çä»ããä»äºãäœããããæ±ºãŸã£ãŠããªãæã«è
°ãéããªããã¡ã§ãã ããããã³ãã¬ã«ãªã£ãŠæ¬¡ããããšãæç¢ºã ãšæåã®äžæ©ãèžã¿åºãããããªãããããªãããªãšæããŸããã ä»åŸããåãåããã«éããããŒã ãçµç¹ã§èŠã€ãã課é¡ãããã°ç©æ¥µçã«æ¹å掻åãã£ãŠããããã§ããã ä»ã«ããåãåããã§ãããªããšãã£ãŠããããšããäºäŸãããã°æ¯éæããŠãã ããã BASEã§ã¯çŸåšã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãç©æ¥µæ¡çšäžã§ãã èå³ããæ¹ã¯æ¯éãå¿åãã ããïŒ æ¡çšæ
å ± | BASE, Inc. - BASE, Inc. ææ¥ã¯åãããŒã ã®yunamiyaaããïŒã楜ãã¿ã«ïŒ
æ¬èšäºã¯ BASEã¢ããã³ãã«ã¬ã³ããŒ2024 ã®6æ¥ç®ã®èšäºã§ãã ã¯ãããŸããŠãBASEã§ãšã³ãžãã¢ãããŠããasakoyaã§ãã 2022幎10æã«BASEã«å
¥ç€ŸããMerchant Management DevãšããããŒã ã§ãäžæ£æ±ºæžå¯Ÿçãæ³æ¹æ£å¯Ÿå¿ãªã©ã決æžã«é¢ããéçºã«åãçµãã§ããŸãã 2024幎1æã«ç¬¬1åã®ç·ã®åãåºç£ãã10æã«è·å ŽåŸ©åž°ããã°ããã§ãã åããŠã®åŠåš ã»åºç£ã»è²å
ã«ææŠããäžã§ãBASEã®ãµããŒãäœå¶ã«å©ããããããšããããããããŸããããã®çµéšã誰ãã®åèã«ãªãã°ãšæããçãåããŸããã ãªããBASEã¯ç·æ§ã§ãè²äŒãååŸãããæ¹ããšãŠãå€ããé¢é£ããããã°èšäºããããŸãã devblog.thebase.in devblog.thebase.in ä»åã¯å¥³æ§ç®ç·ã§ã®äœéšããå±ãããŸãïŒ åŠåš æ åŠåš ãåãã£ãã®ã¯2023幎ã®6æã å®å®æã«å
¥ããŸã§ã¯åšå²ãžã®å ±åãæ§ããæ¹ãå€ããšæããŸãããç§ã¯ããã«äžåžãšäŒç€ŸãžäŒããŸãããåœåã¯äœèª¿ãäžå®å®ã ã£ããããè¿·æããããåã«èšã£ãŠãããããšããã®ãšãBASEç¬èªã®å¶åºŠã§ãããåŠåš ç¹å¥äŒæããä»äžããŠãããããã§ãã ããã¯å®æå¥èšºã䞡芪åŠçŽãžã®åå ãäœèª¿äžè¯æã«äœ¿ããç¹å¥ãªäŒæã§ãæçµŠã§ãããç¡çããäŒããç°å¢ããšããã®ã¯ãäœã®é¢ã§ããããããã§ãããå人çã«ã¯ãã以äžã«ãäŒç€Ÿãæ°é£ã£ãŠãããŠããããšæããããããšã倧ããã£ãã§ãã ãŸããBASEã§ã¯ãã€ããªããã¯ãŒã¯ãåãå
¥ããŠãããåšå®
ã§ãåãããšãå¯èœãªãããäœèª¿ãåªããªãæ¥ã§ãç¡çã®ãªãåãæ¹ãã§ããŸããã 12:00ã16:00ãã³ã¢ã¿ã€ã ã®ãã¬ãã¯ã¹å€åã®ãããåŠå©Šå¥èšºããæ¯èŒç空ããŠããå¹³æ¥ã®ååäžã«ãä»äºãäŒãããšãªãè¡ãããšãã§ããŸãããïŒå¥èšºãé·åŒããæãªã©ã¯åŠåš ç¹å¥äŒæã䜿ããŸããïŒ ä»äºã®åŒãç¶ã äœèª¿ãæ¯èŒçããã«å®å®ããããšããããåŠåš ãçç±ã«ä»äºã®å
容ãåãæ¹ãå€ããããã»ãŒããããããå¿
èŠã¯ã»ãŒãããŸããã§ããã ãã åœç¶ãåºç£åŸã¯é·æéãäŒã¿ããããšã«ãªãã®ã§ãåŒãç¶ãã«ã€ããŠã¯ãããŒãžã£ãŒãšçžè«ããŠèª¿æŽããŠãããŸãããç§ã®æ
åœããŠããä»äºã¯ãæ°ããæ¥åå§èšã®æ¹ãæ¡çšããŠåŒãç¶ãããšã«ãªã£ãã®ã§ãããŒã ãžã®è² æ
ãå¢ããããšã«ãããŸã§çœªæªæãèŠããå¿
èŠããªãã£ãã®ã¯ãããããã£ãã§ãã ãããããŸã§ãåºç£äºå®æ¥ã®3é±éåãŸã§å
æ°ã«åãã1幎éã®ãäŒã¿ãããã ãäºå®ã§ãç£åäŒæã«å
¥ããŸããã ããåºç£ ãç£äŒã£ãŠããã ãªãããªã©ãšäœè£ã¶ã£ãŠããããäºå®æ¥ãã10æ¥ãæ©ãããããªãç Žæ°ŽããŠãã£ãšããéã®åºç£ã«ãªããŸããã3,300gã®å
æ°ãªç·ã®åã§ããã ããŸãæºåãã§ããŠããªãã£ãã®ã§ããªããè²ã
æžé¡åºããªãããããªããã ããïŒïŒããšå€§æ
ãŠã§ããããBASEã«ã¯ãç£äŒã»è²äŒHAND BOOKããšãã詳ããè³æããããããã«åŠåš ã»åºç£é¢é£ã®æç¶ãã®æ
å ±ããŸãšããããŠããã®ã§ãããããšãŠãåèã«ãªããŸããã ãŸããåŠåš ãå ±åããæ®µéã§ãåŽåæ
åœã®æ¹ãSlackäžã§å°çšã®è²äŒå¯Ÿå¿ãã£ã³ãã«ãäœã£ãŠãããŸãããæç¶ãé¢é£ã§åãããªãããšãããã°ããã«èããã®ã§ãå¿åŒ·ãã£ãã§ããç§ã¯æåœéã®çްããé¡ãŸã§è²ã
ãšå£ãããã質åããã®ã§ãããäžå¯§ã«çããŠãã ããæè¬ã§ãã æåœéãšããã°ãããã¯äŒç€Ÿç¬èªã®å¶åºŠã§ã¯ãããŸããããBASEã¯é¢æ±ITãœãããŠã§ã¢å¥åº·ä¿éºçµåã«å å
¥ããŠãããããåºç£è²å
äžæéãšããŠãæ³å®çµŠä»50äžåã«å ããŠä»å 絊ä»9äžåãåãåããŸãããããããã§ããã 埩垰ãŸã§ åè²ãŠãå§ãŸã£ãŠæåã®1ã2ã¶æã¯ãäœèª¿ãå®å®ãããæ
£ããªãããšãå€ããŠããããã§ããã ãã ããã®æéãéãããšïŒãããªããšãèšããšæãããŠããŸããããããŸãããïŒçµæ§ããã§ããã倫ã5ã¶æéã®è²äŒãåã£ãŠãããã®ãšãåã©ãããšãŠãåªç§ã§ãæŒãå€ããŸãšãŸã£ãŠå¯ãŠããããšããã倧å€ã«èŠªåè¡ãªåã ã£ãããã§ãã ãšããããã§ããŒããããšæ¡éã«å±ãæ¥ã
ã®äžã§ãµãšãæ©ãã«åŸ©åž°ã§ããã®ã§ã¯âŠïŒããšæãè³ããŸããã ãŸãåãé ã«å®å®¶è¿ããžåŒã£è¶ãããã®å°åã§å
¥åã§ããä¿è²åãèŠã€ãã£ããããåœå1幎ã®äºå®ã ã£ãã®ãççž®ãã8ã¶æã§åŸ©åž°ããããšã«ãªããŸããã 埩垰åã«ã¯ãããŒãžã£ãŒãåŽåæ
åœã®æ¹ãšã®é¢è«ãããã埩垰åŸã®åãæ¹ã«ã€ããŠãã£ããçžè«ã§ããã®ã§ãå®å¿ããŠä»äºãåéã§ããŸããã æçå€åããæéå€å€åã®å¶éãªã©ãè²ã
ãªéžæè¢ããããŸãããç§ã¯äŒæ¥åãšåãããã«ã¿ã€ã ã§åãããšãéžæããŸããããã«ã¿ã€ã ã§åŸ©åž°ããããšæããã®ã¯ãèªåã®åŠåš æã®çµéšãå«ããŠãBASEã«ã¯æè»ã«åããç°å¢ãæŽã£ãŠãããšæããŠããããã§ãã ãã埩垰 ãBASEã«ã¯æè»ã«åããç°å¢ãæŽã£ãŠãããã¯æ¬åœã«ãã®éãã ãšæããŠããŸãã ããšãã°ã倿¹ä»¥éã¯ã«ã¬ã³ããŒããããã¯ããŠåã©ãã®ãäžè©±ã«å°å¿µãããããè¿ãã®ããã«æ¥åãéäžæããããããåãæ¹ãããããŒãžã£ãŒé£ãå«ããŠåœããåã®ããã«æµžéããŠããŸãã åã©ãã®éãè¿ãã倫ãšåæ
ããŠãç§èªèº«ã¯åºæ¬çã«8:00ã17:00ã§åããŠããŸãããSlackãæŽ»çšããéåæçãªæ¥åãå€ããããããŒã ã¡ã³ããŒãšã®å€åæéã®ãºã¬ãåé¡ã«ãªã£ãããšã¯ãããŸããã æºãããããžã§ã¯ãã®å
容ããç§ãäŒæ¥åã«æºãã£ãŠãããã®ãšé åãè¿ããæ¯èŒç容æã«ãã£ããã¢ãããã§ãããã®ã ã£ãã®ã§ãã¹ã ãŒãºã«æ¥åã«æ»ãããšãã§ããŸããã 0æ³å
ïŒ10ã¶æïŒãšã®ãªã¢ã«ãªç掻 åèãŸã§ã«ãä»çŸåšã®ç§ã®1æ¥ã®ã¹ã±ãžã¥ãŒã«ãèŒããŠã¿ãŸãã 7:00 åã©ããšäžç·ã«èµ·åº 7:15 åã©ããšèªåã®æé£ãèªåã®æ¯åºŠ 8:00 åã©ãã倫ã«ä»»ããæ¥åéå§ æéããªããšãã¯ããžã£ãã®ãŸãŸä»äºãå§ããŸã 8:30 çé¢ã§å€«ãšåã©ããèŠéã 12:00 æŒäŒã¿ã倫ãšäžç·ã«æŒé£ ãŸã ããžã£ãã®ãšãã¯ãã®ã¿ã€ãã³ã°ã§çæ¿ãããã¡ã€ã¯ããã 13:00 æ¥ååé 17:00 æ¥åçµäº 17:20 ä¿è²åãè¿ãâåã©ããšéã¶ 18:00 åã©ãã®å€é£ 18:30 åã©ããšäžç·ã«ã颚åâãã«ã¯âæ¯ç£šããªã© 19:00 å¯ããã€ãã倫ã«ä»»ããå€é£æºå 20:00 倫ãšå€é£âçä»ã 21:00 ããªãŒã¿ã€ã ã颚åã«å
¥ã£ãããå®¶äºããã ããŸã«ä»äºã«æ»ãããšã æéãããã°èªæžãã²ãŒã 0:00 å°±å¯ èŠãŠã®éããæãšå€ã¯ãã¿ãã¿ã§ããããã®å¯é¡ã®ããã«é 匵ã£ãŠããŸãã 倫婊å
±ã«åšå®
å€åã»ãã¬ãã¯ã¹å€åã§ãããªã®ã ãããæ¯æ¥åºå€ããŠãããç¶ãããæ¯ããã¯æ¬åœã«ããããé ãäžãããŸãã ä»åŸã®ããš ãããŸã§æžããŠããŠããªãã ãæ¬åœã«é 颚æºåžã«ãã£ãŠãããªããšæãè¿ããŠããŸããåŠåš ã®çµéããšãŠãé 調ã ã£ãããšãçãŸããåŸãæã®ããããªãæ§æ Œã§å¥åº·ãªåã©ãã ãšããããšããããã倫ã®å
šé¢çãªååããããšãããéåžžã«æµãŸããç°å¢ã®ãããã§ãã ã¿ããªãã¿ããªããã¯ãããªãã ããããç§èªèº«ã®å®¶åºç°å¢ããããããã©ãå€åããŠãããåãããŸããã ã§ãããããã®å
ãå®¶åºç°å¢ã倧ããå€ãã£ãŠããåãæ¹ãç®æãæ¹åãçžè«ããã°ãæè»ã«å¯Ÿå¿ããŠããããç°å¢ãBASEã«ã¯ããããšæããŠããŸãã ãããã« ãã¡ãããåè²ãŠäžã§ãã¿ããªãã«ã¿ã€ã ã§åãã¹ãã ïŒããšèšãã€ããã¯å
šããããŸããã 倧äºãªã®ã¯ãå¹
åºãéžæè¢ãšãæè»ãªç°å¢ãããããšãå°ååãå«ã°ããŠä¹
ããçŸä»£ãåè²ãŠãšãã£ãªã¢ã®äž¡ç«ãšããããšãèšãããŸããããªã«ããããå€åã«å¯Ÿå¿ã§ãããšããå®å¿æãå¿
èŠã ãªãšæããŸãã ããã«æžããç§ã®çµéšãããããªåãæ¹ã»çãæ¹ããããã ãããšèª°ãã®åèã«ãªã£ãããåžæã«ãªã£ããããããšãŠãå¬ããã§ãã ããBASEãšããäŒç€Ÿã«é
åãæããŠããã ããæ¹ãããã°ãæ¯éäžç·ã«åããŸãããïŒ binc.jp æåŸã«ãªããŸããããç£äŒã»è²äŒã«å¿«ãéãåºããŠãã ããã埩垰åŸãæž©ããè¿ããŠãã ãã£ãããŒã ã¡ã³ããŒãæ¯ããŠãã ãã£ããããŒãžã£ãŒãåŽåæ
åœã®çããŸãæ¬åœã«ããããšãããããŸããã ããããããããããé¡ãããŸãïŒ â»åœèšäºã§ã玹ä»ããå¶åºŠçã¯2024幎ã®å·çæã®ãã®ã§ããæ³åŸãäŒç€Ÿã®å¶åºŠã¯å€ããå¯èœæ§ããããŸãã®ã§ãäºæ¿ãã ããã ææ¥ã¯TorataãããæŽçæŽé ã®æ¥µæãæããŠãã ããããã§ãããæ¥œãã¿ã«ïŒ
devblog.thebase.in æ¬èšäºã¯BASEã¢ããã³ãã«ã¬ã³ããŒ2024ã®5æ¥ç®ã®èšäºã§ãã ã¯ããã« BASE Feature Dev2 Groupã§ããã¯ãšã³ããšã³ãžãã¢ãããŠãã倧å¡( @ohiro88 )ã§ãã 10æ1æ¥ã«å
¥ç€Ÿãã2ã¶æãçµéããã®ã§å
¥ç€ŸããŠããçŸåšãŸã§ãæ¯ãè¿ã£ãŠã¿ãããšæããŸãã ãããŸã§ã®çµæŽ ã€ã³ã¿ãŒãããåºå代çåºïŒASPïŒ â æ±äººåºåã¡ãã£ã¢ â BASE ãšããæãã§ãã æ°åã§ãšã³ãžãã¢ãšããŠå
¥ç€ŸããŠãããã£ãšPHPãã¡ã€ã³ã§äœ¿çšããŠããŸãã BASEã«å
¥ç€Ÿãããã£ãã åè·ã§ã¯æ±äººã¡ãã£ã¢ã®ããã¯ãšã³ããšã³ãžãã¢ãããŠããŸããã ãšã³ãžãã¢ãšããŠã®ãã£ãªã¢ãéããŠããŠãŒã¶ãŒã«äŸ¡å€ãæäŸããããšã«ãããããæããŠããŸããããã¡ããåè·ã§ãããããã¯ãããŸãããããããã¯ãã®æé·ããŠãŒã¶ãŒãžã®äŸ¡å€æäŸã«ããçŽæ¥çã«ã€ãªããéçºã«æºãããããšèããè»¢è·æŽ»åãå§ããŸããã è»¢è·æŽ»åãããäžã§ã転è·ãµãŒãã¹ãéããŠBASEã«ã声ããããã ããŸããã ãµãŒãã¹ã¯ãã¡ããç¥ã£ãŠãŸããããã«ã³ãã¡ã¬ã³ã¹ãªã©ã®ã¹ãã³ãµãŒããããŠããããšãç¥ã£ãŠããã®ã§ãæè¡ã«å¯ŸããŠç©æ¥µçã«åãçµãã§ãããšããå°è±¡ã§ããã ã話ã䌺ãäžã§ããŠãŒã¶ãŒãžã®äŸ¡å€æäŸããããã¯ãã®æé·ã«ãã€ã¬ã¯ãã«ã€ãªãã£ãŠãããããªããµãŒãã¹ã«ãã£ãšã³ãããã§ããéçºãã§ããç°å¢ããããšæããå
¥ç€Ÿã決ããŸããã å
¥ç€ŸããŠæããããš ã¹ããŒãæ ãŸãæããããšã¯éçºãæææ±ºå®ãªã©ã®éãã§ãã éçºããŒã ããããžã§ã¯ãåäœã§æææ±ºå®ãããå Žé¢ãå€ããéçºã¡ã³ããŒäžäººäžäººã®èªåãã¡ã®éçºããŠãããããã¯ãã«å¯ŸããŠã®è§£å床ãéåžžã«é«ããšæããŸããã ãããšåæã«ãæè¡åãã³ãã¥ãã±ãŒã·ã§ã³åãéåžžã«é«ããå®è£
ã®æ¹åæ§ã®è°è«ãããŠããå®è£
ãŸã§ãéåžžã«éããšæããŸããã ãããã€ã®ãããŒãããçšåºŠæŽã£ãŠãããªã³ããã³ãã§å®è¡ããããããç·ããŠéçºçµç¹ãšããŠã®ããã©ãŒãã³ã¹ãéåžžã«é«ããšæããŠããŸãã ãããã¯ãããŠãŒã¶ãŒãžã®ç±é æ¬¡ã«æããã®ã¯ãããã¯ããã¡ãŒã¹ãããŠãŒã¶ãŒãã¡ãŒã¹ããªèãæ¹ã§ãã BASEã¯ãããã¯ãã®æé·ããŠãŒã¶ãŒã®æé·ã«çŽçµããã®ã§ãåžžã«ãŠãŒã¶ãŒã®ããšãèããªããéçºãé²ããŠããŸãã ãã®åŸã«ãèšèŒããŠããŸããããŠãŒã¶ãŒã®å£°ããçºè¶³ãããããžã§ã¯ããªã©ãå€ããããŸãã ãããã£ãéçºã¯ç§èªèº«ãããããã£ãããšãªã®ã§ãããªããããããæããŠããŸãã å
¥ç€ŸçŽåŸã®ãä»äº å
¥ç€ŸåŸã¯é
å±äºå®ã®ããŒã ãã1åã¡ã³ã¿ãŒãä»ããŠããã ãã瀟å
ã®æç¶ããéçºãµããŒããªã©ãè¡ãªã£ãŠããã ããŸããã å
¥ç€ŸããŠåãã®2é±éã»ã©ã¯ã¡ã³ã¿ãŒã®æ¹ãšãªã³ããŒãã£ã³ã°ã¿ã¹ã¯ãäžå¿ã«å®æœããŸããã ããããããªã³ããŒãã£ã³ã°ã¿ã¹ã¯ãšããŠç€Ÿå
ã®å¶åºŠãç°¡åãªéçºãªã©ãçšæããŠããã ããŠããã®ã§ããããæ¶åããããšã§èªç¶ãšBASEã®ããšãéçºæ¹æ³ãªã©ãç¥ãããšãã§ããŸããã BASEã¯äŒç€ŸãšããŠã®èŠæš¡ãåè·ãããå°ããã£ãã®ã§ãäŒç€Ÿã®å¶åºŠãšããŠè¡ãå±ããŠããªãéšåããããšæã£ãŠããŸãããã人äºã®æ¹ãã¡ã³ã¿ãŒã®æ¹å«ãæåããµããŒãããŠé ããã¹ã ãŒãºã«ããŒã ã«åæµããããšãã§ããŸããã åéšçœ²ã®è²¬ä»»è
ã®æ¹ã
ã瀟é·ããçŽã
ã«èª¬æäŒã質çå¿çã®å ŽãçšæããŠããã ããŠããã®ã§ãçåãäžå®ãªã©ããªãå
¥ç€Ÿã§ãããšæããŸãã çŸåšã®ãä»äº çŸåšã¯ã·ã§ãããªãŒããŒæ§ãå©çšãã管çç»é¢ã®æ€çŽ¢æ©èœã®ããã©ãŒãã³ã¹ãæ¹åãããããžã§ã¯ããé²ããŠããŸãã BASEã¯ã¹ã¢ãŒã«ããžãã¹ããããŠããæ¹ã
åãã«ã¹ã¿ãŒããããµãŒãã¹ã§ããããªãªãŒã¹ãã10幎ãè¶
ããããããããšã«èŠæš¡ã®å€§ããªã·ã§ãããå¢ããŠããŠãããŸãã ãµãŒãã¹ãé 調ã«ã¹ã±ãŒã«ããŠããã®ã§è¯ãããšã§ã¯ãããŸãããããŒã¿åºç€ãªã©ãããã«è¿œãã€ããŠããããæ€çŽ¢æ©èœã®ããã©ãŒãã³ã¹åé¡ãé¡èã«çŸããããã«ãªã£ãŠããŸããã å®éã«èŠæš¡ã®å€§ããªã·ã§ãããªãŒããŒæ§ããã課é¡ãšããŠã声ãããã ããŠããŸããã ãããã£ã課é¡ã解決ãããããä»ãŸã§ã®æ€çŽ¢ã§å©çšããŠããæè¡ãå
šãæ°ãããã®ã«äžæ°ãããããžã§ã¯ãã«ãªã£ãŠãŸãã æ€çŽ¢ã«é¢ããæè¡ãšããã®ã¯å€ãã®webãµãŒãã¹ã®ã³ã¢ã®æè¡ã«ãªã£ãŠãããšæã£ãŠããããããæ¹åããããšã§ãããã¯ãã®äŸ¡å€ã¯åäžãããšèããŠããŸãã ãããçŽæ¥ãŠãŒã¶ãŒã§ããã·ã§ããã®ãªãŒããŒæ§ã®ã·ã§ããéå¶ã®å¹çæ¹åã«ãè²¢ç®ã§ããã·ã§ããã®å£²äžåäžãªã©ã«ãè²¢ç®ã§ãããšæãã®ã§ããšãŠããããããæããŠããŸãã ç§ã®å
¥ç€ŸããåããåããŠãããããžã§ã¯ãã§ãçµç€ã«å·®ãæãã£ãŠããã¿ã€ãã³ã°ã§ã®ã¢ãµã€ã³ãšãªããŸãããã質åãªã©ã«ãäžå¯§ã«çããŠãã ãã£ããããã¢ãããªã©ãéããŠç§ã®ã³ãŒãã®çè§£ã®ãµããŒããããŠé ããããšæåããµããŒãããã ããŠããã®ã§ããªããšãçããã«ä»ããŠãããŠãããããªç¶æ³ã§ãã ãããã£ã倧å€ãã¯ãããŸããããããžã§ã¯ããéããŠç§èªèº«ã®æé·ã«ãç¹ãã£ãŠãããšãã宿ãããã®ã§ããã¡æ©ãããŒã ã®åã«ãªããããã«æé·ããŠããããšæããŸãã ãã®ä»ã«ãã£ãŠããããš æ€çŽ¢æ©èœã®ããã©ãŒãã³ã¹ãæ¹åãããããžã§ã¯ã以å€ã«ã䞊è¡ããŠæ§ã
ãªããšãããããŠããã ããŠããŸãã ãã®1ã€ãšããŠãNew Relicã®æŽ»çšæšé²ã®ãæäŒãããããŠããã ããŠããŸãã New Relicã«ã€ããŠã®èª¬æã¯å²æãããŠããã ããŸãããBASEã§ã¯ã¢ããªã±ãŒã·ã§ã³ã®ã¡ããªã¯ã¹ç£èŠããã°ç£èŠããµãŒãã¹ã¬ãã«éçšãªã©ã§æŽ»çšããŠããŸãã çŽè¿ã§ã¯ãµãŒãã¹ã¬ãã«ã®æŽ»çšãé²ããŠããããšããããšã§ã瀟å¡äž»å°ã®ã¯ãŒã¯ã·ã§ããã§ã¡ã³ããŒã®ãµãŒãã¹ã¬ãã«éçšã®çè§£ä¿é²ãããããšããŠããŸãã åè·ã§ãNew Relicã®æŽ»çšãæšé²ãããŠããã ããŠããã®ã§ãå
¥ç€Ÿ2ã¶æçšåºŠã®æ°åè
ã§ãããã®çµéšã掻ãããŠã¯ãŒã¯ã·ã§ããã®é²è¡ããããŠããã ãããããŠããŸãã ãµãŒãã¹ã¬ãã«ã®éçšã«ã€ããŠã¯ãŸã ãŸã å§ããã°ãããªã®ã§ããã£ãããšæŽ»çšã§ããããã«å°œåããŠè¡ããããšæããŸãã ãããã« ãŸã ãŸã æ
£ããŠããªãéšåããããŸããã瀟å¡ã®çããã¯ãšãŠãè¯ãæ¹ã°ããã§ãµããŒããå¶åºŠã¯å
å®ããŠãããã€ãå©ããããŠããŸãã åžžã«ãŠãŒã¶ãŒã®ããšã第äžã«èããæ¥ã
ãŠãŒã¶ãŒã®ããã«ãããã¯ããæé·ãããŠããŸãã ãããªBASEã«èå³ãæã£ãŠããã ãããå¬ããã§ãã BASEã§ã¯ãšã³ãžãã¢ãçµ¶è³åéäžã§ãã®ã§ãèå³ã®ããæ¹ã¯ãã²æ¡çšæ
å ±ãªã©ãã芧ãã ããïŒ ææ¥ã¯ãAsakoyaããã®èšäºã§ãããæ¥œãã¿ã«ïŒ binc.jp
ã¯ããã« BASE BANKã®åºéDev Group ã§ãšã³ãžãã¢ãããŠãã æ± ç°è瀺 ã§ãã 2024/07ã«å
¥ç€Ÿãã仿ã§6ã¶æç®ã«ãªããŸããã ä»ãŸã§ã©ã®ãããªåãçµã¿ãããŠããã®ããäœãæããã®ããªã©ãæžããããšæããŸãã èªå·±çŽ¹ä» åŠ»ãš4æ³ã®æ¯åãããŸãã ãšã³ãžãã¢çµéšãšããŠã¯ãå€§åŠæä»£ã®é·æã€ã³ã¿ãŒã³1å¹Žãšæ°åã§å
¥ç€ŸããäŒæ¥ã§2幎ã»ã©ã®èš3幎ãäž»ã«ããã¯ãšã³ããšã³ãžãã¢ïŒã¿ã¹ã¯ã«å¿ããŠããã³ããšã³ãã®éçºãªã©ãè¡ã£ãŠããïŒãšããŠåããŠããç¶æ
ã§å
¥ç€ŸããŸããã ãªã®ã§æ¬ããã°ã¯ãäž»ã«ãšã³ãžãã¢çµéšå¹Žæ°ã®çãandåè²ãŠããŠããç§ã«ãšã£ãŠBASEãã©ã®ãããªç°å¢ããšããèŠç¹ã§æžããŠããŸãã â»æ¬èšäºã®æ
å ±ã¯2024/12/04æç¹ã§ã®ãã®ã§ããç¹ã«çµç¹ã«é¢ããããšãçŠå©åçã«é¢ããããšã¯å€æŽãããããšããããããäºæ¿ãã ããã å
¥ç€Ÿããçç± å€§èŠæš¡ãªã·ã¹ãã ã«æºããã€ã€ãããŸããŸãªé åã«ç¥èŠã®ãããšã³ãžãã¢ã®æ¹ã
ãšç éœããŠãšã³ãžãã¢ãšããŠæé·ããããšããæ°æã¡ãšãBASE BANKã®ãšã³ãžãã¢ã®æéã§ãããã«ãµã€ã¯ã«ãšã³ãžãã¢ãšããŠéçºã«éãããããã¯ãã«ã€ã³ãã¯ããåºãããšã³ãžãã¢ã«ãªãããããšããæãã§éžèãåããçžãããå
¥ç€ŸããŸããã éžèãéããŠãšã³ãžãã¢ãªã³ã°ã®ã¬ãã«ã®é«ããæããæé·ã§ããããšåŒ·ãæã£ãããšãšããã®å
èªåãéçºã ãã§ã¯ãªããæœçã®äŒç»ããªãªãŒã¹åŸã®æ€èšŒãè©äŸ¡ãšããäžé£ã®ãµã€ã¯ã«ã«æºãããªãããµãŒãã¹ã«ã€ã³ãã¯ããæ®ãããšã³ãžãã¢ã«ãªãããããšããç®æšãæç¢ºã«ãªãå
¥ç€Ÿã決æããŸããã â»BASE BANKã«ã€ããŠã¯äžèšã®è³æãã芧ãã ãã speakerdeck.com â»ãã«ãµã€ã¯ã«ãšã³ãžãã¢ã«é¢ããŠã¯è©³çްã«äžèšã®ããã°ã§èª¬æãããŠããã®ã§ãã²ã芧ãã ãã devblog.thebase.in å
¥ç€ŸããŠããã®ãããŸã§ 7æ1æ¥ã®å
¥ç€Ÿãã2é±éã1ã¶æããããŸã§ã¯ãªã³ããŒãã£ã³ã°æéãšããŠãäŒç€Ÿã®èª¬æãåéšçœ²ã®èª¬æãæå±éšçœ²ã®åãµãŒãã¹èª¬æãªã©ãåãã€ã€ããªã³ããŒãã£ã³ã°ã¿ã¹ã¯ãšããŠæ
åœãµãŒãã¹ã®éçºæ¥åãè¡ããŸããã ææ³ãšããŠã¯ããªã³ããŒãã£ã³ã°ããšãŠãæåãã£ãã®ã§ççŽã«é©ããŸãããããã¥ã¡ã³ããæŽã£ãŠããã®ã§éçºç°å¢æ§ç¯ãæ
åœãµãŒãã¹ã®ãã£ããã¢ãããªã©ã§ç¹æ®µå°ãäºãªã©ããªãã£ãã§ãã äžæç¹ãããã°ã¡ã³ã¿ãŒã®æ¹ãäžå¯§ã«ãµããŒãããŠãã ãã£ãã®ã§ã¹ã ãŒãºã«éçºã«å
¥ããŸããã ãŸããåºæ¬çã«BASE BANKã¯é±ã«äžåºŠåºç€Ÿã§ãããå
¥ç€Ÿããé±ã¯åºç€ŸããŠã¡ã³ã¿ãŒãšãããŒãžã£ãŒããªãã£ã¹ã§ãªã³ããŒãã£ã³ã°ãããŠãããã®ã§ãäžæç¹ãããéã«ããèããç°å¢ã ã£ãã®ã§ãšãŠããããããã£ãã§ããå
¥ç€Ÿãã人ã®åžæãèãã€ã€ãªã³ããŒãã£ã³ã°æéã®åºç€Ÿæ¥ãªã©ãæè»ã«å¯Ÿå¿ããŠãããã®ã§ãšãŠãå©ãããŸããã å
¥ç€ŸåŸè¡ã£ãŠããã¿ã¹ã¯ã§å€§ããªãã®ã ãšãç¹å®ãšã³ããã€ã³ãã®ããã©ãŒãã³ã¹æ¹åã¿ã¹ã¯ãæåæ¥åã®èªååãªã©ãè¡ã£ãŠããŸããã ã©ã¡ããçµéšã®ãªãã¿ã¹ã¯ã ã£ãã®ã§ãããæ¯æ¥ã®ãã€ãªãŒã¹ã¯ã©ã åŸã«åæäœæ¥äŒãšããçžè«ã壿ã¡ãªã©ããŒã ã§èªç±ã«äœ¿ããæéã§ãµããŒãããŠè²°ãã€ã€ãªããšãéçºãè¡ã£ãŠããŸããã ä»äºã®ç°å¢ ç§ãæå±ããŠããBASE BANKãšããéšçœ²ã¯ã5ã€ã»ã©ã®ãµãŒãã¹ãæäŸããŠãããšã³ãžãã¢ã¯3ã€ã®ããŒã ã«åãããŠããŸãã ãã ãããŒã ãè¶
ããŠå®æçãªããŒãã£ã³ã°ã茪èªäŒãªã©ãè¡ã£ãŠããŸããããŒã ãè¶
ããŠæè¡çãªçžè«ãªã©ãæ°è»œã«ã§ããç°å¢ã§ãã ç§ãæå±ããŠããããŒã ã§ã¯äž»ã«ãæ¯èŸŒç³è«ãšããæ©èœãšBASEã«ãŒããšãããµãŒãã¹ã®éçºãããŠãããåã¡ã³ããŒã¯è»žè¶³ã眮ããŠéçºããŠããæ©èœã»ãµãŒãã¹ãããã€ã€è€æ°ã®ãµãŒãã¹ã®éçºãæ
ã£ãŠããŸãã ãããŠãåãµãŒãã¹ã§æè¡ã¹ã¿ãã¯ã¯ç°ãªãã®ã§æ§ã
ãªæè¡ã«è§Šããããšãã§ããŠåºæ¿çã§ãã åŸè¿°ããæé·ããç¹ã§è©³ããæžããŸãããããã¯ãšã³ããããã³ããšã³ããã€ã³ãã©ãªã©åããéçºãããŠããã®ã§çµéšæè¡ã®å¹
ããšãŠãåºãã£ãŠããŸãã å
¥ç€ŸããŠæããBASEã®è¯ããšãã çµéšã®ãããšã³ãžãã¢ã沢山ãã ããã³ããšã³ããããã¯ãšã³ãã®é åã§æè¡åããããšã³ãžãã¢ãå€ãã®ã¯ãã¡ããã®ããšãSREãããŒã¿åæãªã©ã®å°éããŒã ãããã®ã§ãã€ã³ãã©ã«é¢ããå®è£
ãè¡ã£ãéã«ã¯ã¬ãã¥ãŒããŠããã£ããã§ããã®ã§æè¡åãç éœã§ããç°å¢ã ãšæããŠããŸãã ããŒã ãè¶å¢ããŠå©ãåãæåããã Slackã§èª°ãã質åãçžè«ã®ã³ã¡ã³ããããã誰ããããããåçããæ§åãããç®ã«ããŸããããŒã åããå°ã£ãŠãã誰ããå©ããããšåãæåããšãŠãçŽ æŽããããšæããŠããŸãã æ
å ±ããªãŒãã³ èæã§ããäžå ŽããŠããé¢ä¿ã§åºããªãæ
å ±ãå人æ
å ±ä»¥å€ã¯å
šãŠèгããã®ã§ã¯ãªãããšæã£ãŠããŸããç¹ã«æã«äžåºŠã®å
šç€Ÿã®äŒè°ã§ã¯åéšçœ²ã®æ°åãè¡ã£ãŠããããšãªã©ããã£ããã¢ããã§ãããšãšãã«ãããã¥ã¡ã³ããšããŠåŸããé²èЧã§ããã®ã§ãšãŠããªãŒãã³ã ãªãšæããŠããŸãã ããã¥ã¡ã³ããå
å®ããŠãã æè¡çãªããã¥ã¡ã³ãã§èšããšç¹å®ããŒã«ã®äœ¿ãæ¹ãèšå®ããããããŸãããç³»ã®Tipsããã¥ã¡ã³ãïŒäŸãã°ãããããããã¯å¯ŸçããŸããããšãïŒãæžããŠç€Ÿå
ã§å
¬éããŠãããã®ã§ãäœãã§è©°ãŸã£ãéãåããããªå®è£
ããããšããªã©ã«å
人ã®ç¥æµãè±å¯ã«ãããŸã åãããã ç§ã¯åäŸãããããããã¬ãã¯ã¹ã¿ã€ã ãå©çšããŠå¹Œçšåã®è¿ããã飯ãå¯ããã€ããªã©ãçµãã£ãŠããå€å床åããªã©ã®ã¹ã¿ã€ã«ã§åãæ¥ãå€ãã§ããã³ã¢ã¿ã€ã ã12æãã16æãšããæ¯èŒççãæéãªã®ã§çªçºçã«äœããã£ãŠãæè»ã«åããŸãã å¬ããã£ãçŠå©åç åã®çè·äŒæ ãåã®çè·äŒæããšããéåžžãšã¯å¥ã®æçµŠäŒæãä»äžãããŠããïŒ1幎ããã5æ¥ïŒåäŸãç±ãåºããæãªã©ã«äœ¿çšã§ãããããæçµŠã®æ®ãã®æ¥æ°ãæ°ã«ããããšãå°ãªããªããŸããã ã¡ã³ã¿ãŒã©ã³ã ãªã³ããŒãã£ã³ã°æéã«äŒç€Ÿã®äººãšè¡ãã©ã³ã代ãäŒç€Ÿãæ¯çµŠããŠãããŸããä»ã®ããŒã ã®æ¹ãšäº€æµã§ããã®ã§ãšãŠããããããã£ãã§ãã ãBASEãå çåºã§ã®è³Œå
¥è£å© BASEãå©çšããŠããã·ã§ããã§ãæ1äžåãŸã§ã®è³Œå
¥éé¡ãäŒç€Ÿãæ¯çµŠããŠãããŸãããã®çŠå©åçããããããã§ãBASEãå©çšããŠãããŠããã·ã§ãããå®éã«è³Œå
¥ããŠé¢ãããæ©äŒãå¢ããã®ã§çŽ æŽãããçŠå©åçã ãšæããŠããŸãã â»çŠå©åçã«ã€ããŠã®èšäºã¯äžèšãã芧ãã ãã basebook.binc.jp å
¥ç€ŸããŠããã©ã®ãããªæé·ããã£ãã æè¡ã®å¹
ãåºãã£ã äž»ã«äžèšã®3ã€ã«ãããŠæè¡ã®å¹
ãåºãã£ããšæããŠããŸãã èšèš æå察å¿ã®èªååã¿ã¹ã¯ã§ãããåŠçãèšèšããè¡ãéåæã§ã®ETLãã䜿çšããAWSãµãŒãã¹ã®éžå®ãªã©ãè¡ã£ãããšã§ä»ãŸã§è¡ã£ãããšã®ãªãã£ãèšèšã¿ã¹ã¯ãè¡ãæè¡ã®å¹
ãåºãããŸãã ã€ã³ãã© ä»ãŸã§çµéšã®ãªãã£ãAWSãµãŒãã¹ã䜿çšããããTerraformã䜿ããªãœãŒã¹ã®ç®¡çãè¡ã£ããããŠã€ã³ãã©é åã§ã®çµéšãç©ãããšãã§ããŸãã æªçµéšã®èšèªãªã© åè·ã§ã¯GoãšReactã§éçºããŠããŸããããæ¯èŸŒç³è«ã¯äž»ã«PHPãšVueãBASEã«ãŒãã¯GoãšVueãšããæè¡ã¹ã¿ãã¯ãªã®ã§PHPãšVueã«é¢ããŠã¯æªçµéšã ã£ãã®ã§ãã£ããã¢ãããã€ã€çµéšãããããšãã§ããŸããïŒããŒã ã«ä»å¹Žã®PHPã«ã³ãã¡ã¬ã³ã¹å®è¡å§å¡é·( @cocoeyes02 )ãããã®ã§PHPãã£ããã¢ããã«ãããæé«ã®ç°å¢ãããïŒ ãŸããVue Fes Japan 2024ã«ãäŒç€Ÿã®è£å©ã§åå ãããŠããããæè¡çãªææŠãåŸæŒãããŠãããäŒç€Ÿã ãšåŒ·ãæããŠããŸãã ãã粟床ã®é«ãä»äºãããäžã§ã®èæ
®ããããšãå¢ãã äŸãã°ãDBã®ããŒãã«ã®ã¬ã³ãŒãæ°å¢å ã«ããããã©ãŒãã³ã¹ãžã®åœ±é¿ããéåæåŠçãèæ
®ããéçšæé ãªã©ã®èšèšãè€æ°ã®ãªããžããªããµãŒãã¹ã絡ãã æ©èœã®ãªãªãŒã¹ãããŒãªã©ãèŠæš¡ã倧ããããããç¹ã«èæ
®ããªããã°ãªããªãããšããããä»ãŸã§ã¯ããŸãèããããšããªãã£ãããšãèæ
®ããããã«ãªããŸããããããŠããã«ãªãªãŒã¹æã®æžå¿µãç¡ããäžç¢ºå®æ§ãæžããããšããèŠç¹ã§èããããã«ãªããŸããã ãã ãããã®ããšãå
¥ç€Ÿåœåã¯äœãèããããšãã§ããŠããŸããã§ãããåè¿°ããåæäœæ¥äŒã§æ¥ã
壿ã¡ãã€ã€ãã£ãŒãããã¯ããããçããµã€ã¯ã«ã§éçºâãã£ãŒãããã¯âä¿®æ£ãç¹°ãè¿ããŠæ©ãæé·ããããšãã§ãããšæã£ãŠããŸãã ãŸãšã æåŸã«åãããããæé·ã®èгç¹ã§åŒç€Ÿãã©ã®ãããªç°å¢ãç§ãæã£ãŠããããšãæžããŸãã ç·ããŠèšããããšã¯ãå°ãªããšãä»ç§ãæå±ããŠããããŒã ã¯è¥æã®ãšã³ãžãã¢ã®æé·ã«ãšãŠãçŽ æŽãããç°å¢ã§ãããšæã£ãŠããŸãã ããŒã ã®æé·ã®ããã«ã¢ããã€ã¹ããã£ãŒãããã¯ãæããŸãªãç°å¢ããããããã§å€ãã®ææŠãã§ããŠãããšæããŠããŸããæªçµéšã®ããšããµããŒãããŠãããã€ã€ãªãªãŒã¹ããããšã§è²Žéãªçµéšãç©ãããšãã§ããŠããŸãã ä»åã¯éã®é¢ä¿ããããå
¥ç€Ÿã®ç®çã®1ã€ã§ãã£ããã«ãµã€ã¯ã«ãšã³ãžãã¢ãšããŠã®åãæ¹ãåãçµãã§ããããšãªã©ã«ã€ããŠã¯è§Šããããšãã§ããŸããã§ãããæ©ãèŠãŠããã°ãªã©ã§æ¯ãè¿ããããšæã£ãŠããŸãã ãããã« BASEãBASE BANKã§ã¯äžç·ã«åã仲éãåéããŠããŸãïŒ ãã²æ¡çšæ
å ±ãã芧ãã ããïŒ binc.jp ææ¥ã¯ @ohiro88 ããã§ãïŒã楜ãã¿ã«ïŒ
<ãã®èšäºã¯ Hatena-Blog-Workflows-Boilerplate ã«ãã£ãŠäœæãããŸãã> ããã«ã¡ã¯ïŒ BASE æ ªåŒäŒç€Ÿ Pay ID å
Œ BASE PRODUCT TEAM BLOG ç·šéå±ã¡ã³ã㌠㮠@ zan_sakurai ã§ãã ä»åã¯ãBASE PRODUCT TEAM BLOG ã®ããã°ã¡ã³ããŒã Terraform Provider for HatenaBlog Members ã§ç®¡çãã¯ãããã®ã§ããã®ç޹ä»ãããããŸãã ååã¯ã Hatena-Blog-Workflows-Boilerplate ã䜿ã£ãŠãšãã SaaS ã®ãªã³ã¯ãäžæ¬çœ®æãã話 ã«ã€ããŠæžããŸããã ä»åãäŒæ¥ã§ã¯ãŠãªããã°ã§æè¡ããã°çãéå¶ãããŠããæ¹ã®äžå©ã«ãªãã°ãšå¹žãã§ãã Terraform Provider for HatenaBlog Members Terraform Provider for HatenaBlog Members ãšã¯ãæ ªåŒäŒç€Ÿã¯ãŠãªãã ãå
¬åŒã§å
¬éãããŠãããã¯ãŠãªããã°ã®ããã°ã¡ã³ããŒã Terraform ã§ç®¡çã§ãã Terraform Provider ã§ãã 以äžã®ããã¥ã¡ã³ãã«è©³çްãèšèŒããã ããŠãããä»åã¯ãã¡ããåèã«ãæ§ç¯ãè¡ããŸããã ã¯ãŠãªããã°ã®ããã°ã¡ã³ããŒã Terraform ã§ç®¡çã§ãã Terraform Provider for HatenaBlog Members ãå
¬éããŸãã hatena/hatenablog-members | Terraform Registry https://github.com/hatena/terraform-provider-hatenablog-members Terraform Provider for HatenaBlog Members ã§ã®ããã°ã¡ã³ããŒã®ç®¡ç ãããŸã§ãBASE PRODUCT TEAM BLOG ã§ã®ããã°ã¡ã³ããŒã®ç®¡çã¯ãBASE PRODUCT TEAM BLOG ç·šéå±ã«äŸé Œãè¡ã£ãŠãæåã§ããã°ã¡ã³ããŒã®è¿œå ã»åé€ãè¡ã£ãŠããŸããã æãé£ãããšã«ãããã°ãå·çããããšèšã£ãŠãããæ¹ã
ãå¢ããŠããŠãããŸããŠããããšåæã«ç·šéå±ã®ããã°ã¡ã³ããŒã®ç®¡çã®è² æ
ãåŸã
ã«å€§ãããªã£ãŠããŸãããšãäºæ³ã§ããŸããã ããã§ããã°ã¡ã³ããŒã®ç®¡çãç°¡ç¥åããããã«ãTerraform Provider for HatenaBlog Members ãå°å
¥ã«è³ããŸããã åºæ¬çã«ã¯åè¿°ã®ããã¥ã¡ã³ããåèã«ããªããæ§ç¯ããã°ç¹ã«ããããšããã¯ãªããã¹ã ãŒãºã«å°å
¥ããããšãã§ããããšæããŸãã åŒç€Ÿã®å Žåãããã°ã¡ã³ããŒãããããå€ã? resource... ãéœåºŠèšè¿°ããŠè¿œå ããã®ãé¢åã«æããŸããã®ã§ã 以äžã®ããã«ãã¡ã³ããŒã®ãªã¹ãã倿°ãšããŠç®¡çãããã®ãªã¹ãã䜿ã£ãŠãã¡ã³ããŒã远å ã»åé€ããããã«ããŠããŸãã variable "members" { description = "List of members to manage" type = list ( object ( { username = string role = string } )) } members = [ # This is an example of the structure of the members variable. # You can add or remove members as needed. # { # username = "your_hatena_id" # The Hatena ID of the blog member. # role = "editor" # Role of the blog member. Role must be one of 'admin'ïŒç®¡çè
ïŒ, 'editor'ïŒç·šéè
ïŒ, or 'contributor'ïŒå¯çš¿è
ïŒ. Basically, Please set the 'editor'ïŒç·šéè
ïŒ. # }, { username = "your_hatena_id" role = "editor" } , ãŸããGithub äžã§ã®ç®¡çãè¡ã£ãŠããŸãã®ã§ã ç³è«(Pull Request) -> æ¿èª(Approve) -> åæ (terraform plan/apply) ãšãã£ãæµãã§ã¡ã³ããŒã®è¿œå ã»åé€ãè¡ãããšãã§ããŸãã®ã§ã倿Žå±¥æŽãæ®ãã誰ãã©ã®ãããªå€æŽãè¡ã£ãããææ¡ãããããªããŸããã æ¿èª(Approve) ã«é¢ããŠã¯ãCODEOWNERS ãèšå®ããŠãããŒãžåã«å¿
ãã¬ãã¥ãŒã匷å¶ããããã«ããŠãæ¿èªããã»ã¹ã衚çŸããŠããŸãã(CODEOWNERS ã®ã¡ã³ããŒã¯ãç·šéå±ã®ã¡ã³ããŒãèšå®ããŠããŸãã) ãããã«(ãšäœè«) ä»åã¯åŒç€Ÿã§ã® Terraform Provider for HatenaBlog Members ã®å©çšäŸãåãäžããŠã¿ãŸããã äŒæ¥ã§ã¯ãŠãªããã°ã§æè¡ããã°çãéå¶ãããŠããæ¹ã«ã¯ãã²äžåºŠã詊ãããã ãããã§ã!!! äœè«ã§ãããä»åã® Terraform Provider for HatenaBlog Members ã®ããã«ã³ãŒãã§ã®ã¡ã³ããŒç®¡çãããããç®ã«ããããšãå¢ããŠããããã«æããŸãã ãã®ãããªãã¿ãŒã³ã¯ Teams as Code ãªã©ãšåŒã°ããããã§ããã GitHub Provider ãªã©ä»ã«ãããã®ã§ããã€ãæ€èšŒããŠã¿ãèšäºãæžããããããŸããã ææ¥ã¯ã @ikechen ããã®èšäºã§ãããæ¥œãã¿ã«!!! ãŸããåŒç€Ÿã§ã¯ä»²é倧åéäžã§ãïŒ open.talentio.com
ãã®èšäºã¯ BASE ã¢ããã³ãã«ã¬ã³ããŒ2æ¥ç®ã®èšäºã§ãã å匷äŒã®é ãã課é¡ãèªæžäŒã®ãžã¬ã³ããã«ç«ã¡åãã BASEã§ã·ãã¢ãšã³ãžãã¢ãããŠãã ããã°ã©ãã³ã°ããããã³ã ã§ãã ãã®èšäºã§ã¯æ®éã®ç€Ÿå
èªæžäŒãã¬ãã«ã¢ããããæ¹æ³ã玹ä»ããŸããèªåã®æå±ããããŒã ã§ã¯2ã¶æã«æž¡ãå匷äŒã§ãã®æ¹æ³ãå®è·µããçµæãåå è
ã®å
šå¡ãæžç±ã®å
容ããã£ããåŠã¹ããšããæå¿ããæããŠããŸããå®éã«ãããŒã ã¡ã³ããŒå
šå¡ããä»ãŸã§ããã广çãªèªæžäŒã ã£ããšææ³ãè²°ããŸããã çµè«ãå
ã«æžããšããã®æ¹æ³ã¯èªåãã¡ãè§Šã£ãŠããã¬ããžããªããæžç±ã®å
容ã«åœãŠã¯ãŸããšãããšãæžç±ã®å
容ãå®çŸã§ããŠããªããšãããæ¢ããŠçºè¡šãããšãããã®ã§ããã€ãŸããæ¬ã§åŸãç¥èãããã«äœ¿ããšããã¢ã¯ãã£ãã©ãŒãã³ã°å¿åã®èªæžäŒã§ãã ããããèªæžäŒãšãããã®ã¯ã課é¡ã®æžç±ãèªãã§ããŠãã®ææ³ãå
±æããããæ¹ãäžè¬çã§ãããã ãããã®æ¹æ³ã¯ããã·ããªèªæžäœéšã§ãããèªã¿æã®ã¹ãã«ã«ãã£ãŠç¥èã®å®çéã«å·®ãåºãŠããŸããŸãããªããªããæè¡æ¬ã®èªæžäŒã®ç®çã¯ã¿ããªã®ç¥èã¬ãã«ãæããããšãªã®ã«ãæ¬ãèªã¿ããªãããã«ã¯ãããªãã«äºåç¥èãã¹ãã«ãå¿
èŠã ããã§ãããã®ããšãç§ã¯ ãèªæžäŒã®ãžã¬ã³ãã ãšåŒãã§ããŸãã èªæžäŒã®ãžã¬ã³ãã¯èªæžäŒã«å¿
ãã€ããŠåã課é¡ãªã®ã«ãèªæžäŒã§ã®åŠç¿å¹æã¯åŠç¿è
èªèº«ã®è²¬ãã«åž°ãããããæ
ã«å€§ã£ãŽãã«èªãããããšã®ãªãé ãã課é¡ã§ããããŸãããã®èªæžäŒã®ãžã¬ã³ãã«ã€ããŠã以å ããå匷äŒã®çºè¡š ã§è§Šãããšããããã¡ã®äŒç€Ÿã§ããããŸãããšå
±æãåŸãããŸãããããã§ãã®èª²é¡ã¯æ®éçãªããšã ãšæã£ãããšãå匷äŒã®å·¥å€«ã«ãã£ãŠãã®èª²é¡ã®è§£æ±ºã«äžå®ã®ææãåºãŠããããšããèšäºã«ããŠå
¬éããããšã«ããŸããã èªæžäŒã®é ãã課é¡ã玹ä»ããã¹ã©ã€ã å匷äŒã®é ãã課é¡ãé²èŠããç¬é BASE 瀟å
ã§ã¯èªæžäŒãçãã«è¡ãããŠããŸãããããããžã§ã¯ããçµæãããåŸããããžã§ã¯ãã®å®éãŸã§ã«1,2åã»ã©ã¯åããŒã ã§èªæžäŒãéå¬ãããããã«æããŸãããã¡ããæ¥åæéå
ã«ã§ãã ç§ãèªæžäŒã®ãžã¬ã³ãã«æ°ã¥ããã®ã¯ããã€ãŠèªåãæå±ããŠããããŒã ã§èªæžäŒãéå¬ããæã§ãããæè¡éèªã®ããç¹éãææãšããŠ2åã®çæçãªå匷äŒã宿œããŸããã ãã®æ¹æ³ã¯ä»¥äžã§ãã察象ç¯å²ãäºåã«èªãã§ææ³ãããã¥ã¡ã³ããŒã·ã§ã³ããŒã«ã«èšè¿°ããå匷äŒåœæ¥ã«ãããå
±æãããçåãå
±æãããã°ããã®å Žã§ãã®çåãã¿ããªã§äžç·ã«èãããšããããããäžè¬çãªã¹ã¿ã€ã«ã§ãã èªæžäŒã®éå¬åŸãçãææã®äžãããå®åã«æŽ»ãããããšãã®ãšãã»ã³ã¹ãèªã¿è§£ããŠç¿é±ã®ãã«ãªã¯ãšã¹ãã«åŠãã å
容ãåæ ããã¡ã³ããŒãããã°ããæžãããŠããå
容ã¯çè§£ããããå®åã«æŽ»ãããã€ã¡ãŒãžãæ¹§ããªãããšããææ³ãå
±æããã¡ã³ããŒãããŸããã èªåã«ãšã£ãŠãã®èšèã¯ã·ã§ãã¯ã§ãããèªæžäŒã®ææã¯å®åã«æŽ»ããããã®ãã®ã§ããããããã«æžãããŠããããšã¯ä»ã®èªåãã¡ã®ã³ãŒãã®ããã«æŽ»ããããªããšèããªããèªããã®ã§ããããããå®çšæžã®äŸ¡å€ãšãããã®ã§ãã ãå
容ã¯ããã£ããã©ãå®åã«ã©ã掻ãã°ãããããããªããããã®èšèã¯èªåã«å匷äŒã®ããæ¹ãåèããããã£ãããšãªããŸããããããŠã次ã¯ãã®ãã£ãŒãããã¯ã掻ãããå匷äŒãéå¬ããããšå¿ã«æ±ºããŸããã ããŒã ã®ã¹ãã«ã¬ãã«ãæããããã®å匷äŒãéãããã« ãã®ããŒã ã¯ç¡äºã«ãããžã§ã¯ããå®éããŠè§£æ£ããåŸãå
šãç°ãªãã¡ã³ããŒã§æ°ããããŒã ãçµæãããŸããã ããŒã ã¡ã³ããŒã«ã¯è»¢è·ããŠããã°ããã®æ¹ãããŸãããã©ã®ããŒã ã§ãæåã¯ãããªã®ã§ãããå
šå¡ã®ã¹ãã«ã¬ãã«ãæã£ãŠããªããæ
ã«ãéçºåæã®ã³ãŒãã¬ãã¥ãŒã§ã¯ãæ¬åœã«å±ãããæ©èœãå®çŸããã仿§ããšãã£ãæ¬è³ªçãªè°è«ãããããã®ãšãã¯ããæžãã®ãäžè¬çã§ãããšãã衚é¢çãªã¬ãã¥ãŒã®ã³ã¡ã³ããå¢ããŠããŸããã éçºã®çŸå Žã§åŠç¿ã®ã³ã¹ãã¯èŠéããããŠããããã«æããŸããå®ã®ãšããå匷äŒãšãããã®ã¯ãäºåã®èŠç©ããã«å«ãŸããªãé ããæè²ã»åŠç¿ã®ã³ã¹ãã§ããã€ãŸãããéçºã®æéã¯ãéçºè
ãäžè¶³ããŠããã¹ãã«ãè£ãæéãèæ
®ããŠããªããã®ã§ããããã¯ã¢ãžã£ã€ã«éçºãã©ããã¯ç¡é¢ä¿ã§ãã å°ãªãæéã§ããŒã å
šå¡ãããçšåºŠåãã¹ãã«ã¬ãã«ã«ãŸã§æã£åãæ©ãåŒãäžããææ®µãæ¡çšããããšæãã®ã¯ããèªç¶ãªããšã§ãããã®èª²é¡ã解決ããããã«ã ãªããžã§ã¯ãæåèšèšã¹ã¿ã€ã«ã¬ã€ã ã®å匷äŒãéå¬ããããšã«æ±ºããŸããïŒãã®æ¬ã®éžå®çç±ã¯ã¹ã©ã€ã ã軜éDDDã¯ãããããªãïŒ ã¹ã¿ã€ã«ã¬ã€ãæ¬ã§ OOPã®å®è£
ãã¿ãŒã³ãåŠãŒãã ãã芧ãã ããïŒã ããããäºåã«èªãã§ææ³ãå
±æããããŒã·ãã¯ãªå匷äŒã®ããæ¹ã§ã¯ä»¥åã®äºã®èã«ãªãå¯èœæ§ããããŸããååã®å匷äŒãåçããçµæãããããå匷äŒã«ã¯ãèªæžäŒã¯åå è
ã®ã¹ãã«ã¢ããã®ããã«å®æœããã®ã«ãããããèªã¿æã®ã¹ãã«ã¬ãã«ã«ãã£ãŠåžåéã«å·®ãããããã®çµæãåŠç¿å¹æã¯äžæ§ã§ã¯ãªãããšããå匷äŒã®ãžã¬ã³ããããããšã«æ°ã¥ããŸããã ããã§ããã®ãžã¬ã³ããè§£æ¶ããããã«ã¢ã¯ãã£ãã©ãŒãã³ã°ãªå匷äŒã宿œããæ¹æ³ãèããŸããã ã¢ã¯ãã£ãã©ãŒãã³ã°å¿åã®å匷äŒã§ç¥èãããã«æŽ»çšãã ã¢ã¯ãã£ãã©ãŒãã³ã°å¿åã®å匷äŒã§ã¯åèªã®ææ³ã®å
±æã宿œããŸããã代ããã«ä»¥äžã®2ç¹ãå匷äŒã§è°è«ããããšã«ããŸããã æžç±ã®å
容ã§çè§£ã§ããªãã£ãããšãçåã«æã£ãããšãã¡ã³ããŒã«å
±æããããã®å
容ãçè§£ã§ãããŸã§ãçåãè§£æ¶ãããŸã§åŸ¹åºçã«è°è«ãã æžç±ã®å
容ãšèªåãã¡ãéçºããŠããã¬ããžããªã®ã³ãŒããç
§ããåãããŠãæžç±ã®å
容ãå®è·µåºæ¥ãŠãããšãããšåºæ¥ãŠããªããšããã pick up ããŠç޹ä»ãã å匷äŒã®éå¬ã«ãããããŸãããŒã ã¡ã³ããŒã«å¯ŸããŠå匷äŒã®ã³ã³ã»ãããå
±æããŸãããã³ã³ã»ããã¯ã¢ã¯ãã£ãã©ãŒãã³ã°åœ¢åŒã§ããããšã衚çŸãããã®ã§ãã ã³ã³ã»ãã è°è«äžå¿ãç¥èããã®ãŸãŸèŠããæèšã«å ããŠããªããããæçšãªã®ãããããã¯äžèŠãªãã®ãããããèªãåã ã³ãŒãã§å®è·µïŒãšã«ããå®è·µïŒæ°èŠå®è£
ã§ããªãã¡ã¯ã¿ã§ãããã«å®è·µããïŒ æ¬¡ã«ååã®é²ãæ¹ãšäºåã«æºåããŠãããããšãå
±æããŸããã ååã®é²ãæ¹ åèšèšã¹ã¿ã€ã«ã§çè§£ã§ããªãã£ãç¹ãå
±æããŠããããããã«ã€ããŠè°è«ãã ããã®ã¹ã¿ã€ã«ãæ¡çšããã¡ãªãããããããªãããšã èªåãæ°ã«å
¥ã£ãã¹ã¿ã€ã«ãåæ ããŠãããããã¯ã·ã§ã³ã³ãŒããæäœ1ã€ç޹ä»ããŠããã ãã¹ã¿ã€ã«ãåæ ããŠããªãã®ã§ããããããªãã¡ã¯ã¿ãæ¹ä¿®ãããããšããã³ãŒãã§ãOK æºåããŠãããããšã¯è² æ
ã倧ãããªããããªãããã«èšèšããŸããã æºåããŠãããããš 1ç« ããšã« çåãæã£ãèšèšã¹ã¿ã€ã«ãæžããŠãããŠããã ããã€ã§ã æ°ã«å
¥ã£ãã¹ã¿ã€ã«ãåæ ãããŠããããããã¯åæ ãããŠããªã backend ã®ã³ãŒãã pick up ããŠããã æäœ1〠æ¬ãèªããã³ãŒããæ¢ããæ¬ã®ç¥èã§ã³ãŒããæ¹è©ããããã®3ã¹ããããã¢ã¯ãã£ãã©ãŒãã³ã°å¿åã®å匷äŒã®æ§æèŠçŽ ã§ãã å®éã«åå ã¡ã³ããŒãå
±æããå
容ã¯ãã¡ãã§ãããæ¬çªã³ãŒãã§ã® assert ã®äœ¿ãã©ãããããgetter ã§ããããã£ãæ€èšŒããŠããããšã¯ Allways Valid ãªãã¡ã€ã³ã¢ãã«ã§ã¯ãªãããªã©ããªãèžã¿èŸŒãã çåãææããããŠããã®ãããããŸããå®éã«ãã®ãšãã®è°è«ã¯çãäžããããŸã建èšçãªå
容ã«ãªããŸããã çåãæã£ãèšèšã¹ã¿ã€ã«ã®äŸ ã¹ã¿ã€ã«ãåæ ããŠããªãã³ãŒãã®äŸ ã¢ã¯ãã£ãã©ãŒãã³ã°å¿åã®å匷äŒã®å¹æãæ¯ãè¿ã å匷äŒã®éå¬ä»¥éãã³ãŒãã¬ãã¥ãŒã§ã¯ããã®ãšãã¯ããæžããããšããäžè¬çãªææãã»ãšãã©ãŒãã«ãªã£ããããå®éã«å¹æããã£ããšèšã£ãŠè¯ãã§ãããããããã¯æ¬ã«æžããŠãŸãããããšããããšãã»ãšãã©ãããŸããã§ããã ããã«ã ãªããžã§ã¯ãæåèšèšã¹ã¿ã€ã«ã¬ã€ã ã¯è¯æžã§ãããããããŒã å
šäœã®èšèšåãåäžããŸããã ãããã®çµæã¯å匷äŒã®ç®çéãã ã£ãã®ã§äžå®å¿ããŸãããããããåœåæ³å®ããŠãã以äžã®ææãåºãããšãåºæ¥ãã®ã¯èªåã«ãšã£ãŠé©ãã§ãããããã¯ãåå ã¡ã³ããŒããã®å匷äŒã«å¯Ÿãããã£ãŒãããã¯ã®å
容ã«è¡šããŠããŸãã æ¬æã®è³ªåããã£ããã«å¿ççå®å
šæ§ãéžæ ãã£ãŒãããã¯1ãæžç±ãèªãã§æããçåã«ã€ããŠã¿ããªã«èããŠèããããšã§ãæžç±ã®å
容ããã¡ããšçè§£ã§ããã çåã«å¯ŸããŠã¯èª°ãç¥ã£ãŠã人ãæãããšããã®ã§ã¯ãªããã¿ããªã§äžç·ã«èããé°å²æ°ãäœãããšãæèããŠããŸãããæãã¬å¹æãšããŠãäœã§ã質åãŠã§ã«ã«ã ãªé°å²æ°ã®äžã§èªåãæã€çåã«ã€ããŠãã¡ããšè°è«ããããšã§ãèªåã¯ããã§äœãèããŠããããã ãããã£ãŠãªããã€ã ãšãã«ã«ãããªããã ããšããå¿ççå®å
šæ§ãéžæãããŸããã ããŒã ã§ã¯å匷äŒãçµãã£ãåŸããã®é°å²æ°ã¯ç¶ç¶ããŠããŸããåŸæ¥ããã¡ã³ããŒãš1on1ããããšãããäœãèããŠãã¿ããªåªããçããŠãããã®ã§å®å¿ããŠåããããšèšã£ãŠè²°ããã®ã§ããŒã ãã«ãã£ã³ã°ã«ã圹ç«ã€ããšãäœæããŸããã ã¹ã¿ã€ã«ã®é©å¿äŸæ¢ãããæ¥åå€ã®ã³ãŒããªãŒãã£ã³ã°ãž ãã£ãŒãããã¯2ãäºåæºåãããäžã§ãä»è§Šã£ãŠããã¬ããžããªããæ¬ã«é¢ä¿ããã³ãŒããæ¢ããŠããã®ã§ãæžç±ã®å
容ã®äœ¿çšã€ã¡ãŒãžãããã«æ¹§ããã ãã®ç¹ã«é¢ããŠã¯çãéãã§ãããããªããã£ãŒãããã¯ãšããŠãæ®æ®µéçºããŠããç®æä»¥å€ãã壿 ¹ããããŠã³ãŒãã®ãµã³ãã«ãæ¢ãã«è¡ãã®ã§ãã·ã¹ãã ã®äžå¿çãªéšåãªã©ä»ã®ãšããã§ã©ããªã¯ã©ã¹ããã£ãŠã©ããªåŠçãããŠããã®ããåŠã¶ãã£ããã«ãªã£ãããšèšã£ãŠè²°ããŸããã ãã¡ããæãã¬å¹æã§ããå®éããã人ã¯Aãšããã¢ãžã¥ãŒã«ã«å¯Ÿè±¡ã®ã³ãŒããæ¢ãã«ããããã人ã¯Bãšããã¢ãžã¥ãŒã«ã«æ¢ãã«è¡ããšããŸãããããšãããããã®äººã¯Aã¢ãžã¥ãŒã«ãšBã¢ãžã¥ãŒã«ã®ã³ãŒããªãŒãã£ã³ã°ãããŠãããã ã£ãããšçºè¡šãããŸãããã®ç¥èã¯å匷äŒã®ã¡ã³ããŒå
šå¡ã«å
±æãããããããããã¯è§Šã£ãããšããªããã©ããããäœãã«ãªã£ãŠããã ãããšã¿ããªã®èŠéãåºãããŸããã ã¹ã¿ã€ã«ã«åŸã£ãŠã³ãŒãã£ã³ã°ããããã³ãŒãã®è¯ãæªãã®èšèªåãäžéãã ãã£ãŒãããã¯3ãã¹ã¿ã€ã«ã«åŸãããšã§èªåã®èããŠããããšãããŸã衚çŸã§ãããããã³ãŒãã£ã³ã°äžã«è¿·ãããšãæžã£ãã ãã®ãã£ãŒãããã¯ã«ã¯ç¶ãããããŸãããããã«å ããŠãã¹ã¿ã€ã«ã®åçååã«åŸã£ãŠããªãã³ãŒãã®éåæã«æ°ã¥ããäžã«ãããããªããã©ã®ããã«éåæãããã®ã説æãã§ããããã«ãªã£ãã®ã¯å€§ããªæ©æµã§ããã è¯ããšã³ãžãã¢ã¯ã³ãŒããæžããŠããéããæ¬åœã«ãã®æžãæ¹ããã¹ãã ãããããšèªåã«åãç¶ããŠããŸããã¹ã¿ã€ã«ã¬ã€ãæ¬ãåŠã¶ããšã§ãã®ã»ã«ãã¬ãã¥ãŒã®è³ªãäžãããŸãããä»ã®äººãæžããã³ãŒãã«å¯ŸããéåæãèšèªåããŠããŸã説æããããšãã§ããããã«ãªã£ããããã³ãŒãã¬ãã¥ãŒã®ã¹ãã«ãã¢ããããŠããŸãã ãŸãšã èªæžäŒã®æºåãšå
容ãèŠçŽãããšã«ãããåé ã®ãæ¬ã®å
容ã¯ããã£ããã©ãå®åã«ã©ã掻ãã°ãããããããªãããšãã課é¡ã«å¯ŸåŠã§ããŸããããã¡ããæžç±ãæ±ã£ãŠããå
容ã«ãããã®ã®ããã®å匷äŒã®æ¹æ³èªäœã¯ç€Ÿå
å匷äŒã§ã瀟å€ã®äººãã¡ãšéãŸã£ãŠèŒªèªããäŒã§ããã®ãŸãŸé©çšã§ãããšæãããŸãã æ®éã®å匷äŒããã²åŠç¿å¹æã®é«ãå匷äŒã«ããŒãžã§ã³ã¢ããããŠãããŸãããã BASEã§ã¯Webã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãç©æ¥µæ¡çšããŠããŸããèå³ã®ããæ¹ã¯ãã²ãå¿åãã ããã æ¡çšæ
å ± | BASE, Inc. - BASE, Inc. ææ¥ã®ã¢ããã³ãã«ã¬ã³ããŒã¯ zan_gi ããã®ãTerraform Provider for HatenaBlog Members ã䜿ã£ãŠã¿ãŸããããã§ãïŒã楜ãã¿ã«ïŒ
ã¯ããã« ããã«ã¡ã¯ïŒBASEæ ªåŒäŒç€Ÿã§éçºæ
åœåœ¹å¡ãããŠããããµããã§ãã ä»å¹ŽãBASEã°ã«ãŒã 2024幎ã®ã¢ããã³ãã«ã¬ã³ããŒã®ãããããã¿ãŒãåããããŠããã£ãŠããŸãã ä»åã®èšäºã§ã¯ã2024幎ã§ã¯ãXã®ã¿ã€ã ã©ã€ã³ãªã©ã§ããèãããéçºçç£æ§ãã«ã€ããŠèããŠã¿ãããšæããŸãã éçºçç£æ§ãé«ãããšã¯ éçºçç£æ§ãšããèšèãä»å¹ŽããèããŸãããããã®å®çŸ©ã¯ããªããªãé£è§£ã§ãã çç£æ§ãå®çŸ©ããé£ããã«ã€ããŠã¯ã廣æšããã®äžèšããã¥ã¡ã³ããåèã«ãªããŸãã qiita.com çµå¶ã¬ãã«ã®ãã¯ããªæå³ã§ããã°ãGDPãªã©ãšåæ§ã«åçŽã« ã売äžç·å©ç ÷ éçºã«æºãã人æ°ã ãªã©ã§ããã¯ãã§ããåçŽã«ããã®ãããã¯ãã®ææãšããŠã®å£²äžç·å©çãå¶æ¥å©çã«å¯ŸããŠã人æ°ã§å²ã£ãŠèŠãŠããã°ãéå°äººå¡ã«ãªã£ãå Žåã¯ãã®å€ãèœã¡ãããã§ããããã³ã¹ãçã«å¹çã®è¯ã補åéçºãã¯æž¬ãããšãããããã§ãã äžæ¹ã§ãéçºããŒã ã§èããããšæãã®ã¯ãéçºãšããè¡çºã«å¯ŸããŠãæã
ã®éçºæŽ»åã®ããæ¹ãä»ã®ãŸãŸã§ããã®ãããã§ãªãã®ããæšãéãææšã®ããšã§ãããããªãã®ãææ¡ãããŠããŸãããäœãã劥åããŠæ±ºãã€ããŠãããªããšäžèœãªææšã¯ã§ãªããšããã®ãå®èª¬ã§ãããŸããéçºãšããæè³ã«å¯Ÿããé
è¡ææšã§ãã売äžç·å©çãåŸ
ã£ãŠããããé
ãã§ãã äžéã§ã¯Four Keysãå®çªåããŠããããã§ãããã¡ãã£ãšDevOpså¯ãããããšããããèªåãã€ã¡ãŒãžããŠããæ¹åã®ã¢ã¯ã·ã§ã³ãžã®æ¥ç¶ãã¡ãã£ãšé£ãããã ãªãšæã£ãŠã掻çšèªäœã¯ããžãã£ãã§ãããããå°ãçŽåŸã§ããããã«èããããšæããŸããã ããããèªåè»ã®çç£ã©ã€ã³ã®ããã«äžã€ã®çç£ã©ã€ã³ã§åãé¡ã®è£œåãã²ãããéç£ããŠãäžå®ã®ãã®ãããåæãšããŠããä»äºãšã¯éã£ãŠãäžåäžæ§ã§äºåºŠãåãã³ãŒããäœããªãWebãµãŒãã¹ã®ãœãããŠãšã¢ã®éçºæŽ»åããªãããããã®ææšã§å¹³æºåããŠæ±ããããªããŠã®ã¯é£ãã話ã§ãã å人çã«ã¯ç®æšå€ãšããŠäžåã眮ããªã圢ã§ããããã€é »åºŠãèŠãŠããããšãããŒã ã®æŽ»æ°ã瀺ããšããæå³ã§ã¯ããããªãšæããããã§ãééã£ãŠããLLèšèªããªãŒãã³ãœãŒã¹ã©ã€ãã©ãªãã³ãŒãè£å®ãšãã£ã¿ã«äŸåããŠããããã¯ãããœãŒã¹ã³ãŒãéãçç£æ§ææšã«ããã®ã¯éããšæããŸãããæ¡ä»¶é£æåºŠããããžã§ã¯ãããšã«éãã®ã«ã¹ããªã³ããããã¯ãã°ã®æ°ãè€æ°ããŒã éã§ã®æ¯èŒææšã«ããã®ãéãããªãšæããŸãããããç®çéæã«å¯ŸããŠå€æŽãããœãŒã¹ã³ãŒãéã®å°ãªããæž¬ããããããã§ãïŒããããããéããšæãããæŽæ°ããWebãµãŒãã¹ã«ãããçæ³ã¯ããããã£ã¡ããšæããŸãããç¥èåŽåè
ãã³ãŒãéã ãã§æž¬ãããã®ã¯ãããã話ïŒã ææšåãšããã®ã¯ã«ãžã¥ã¢ã«ã«ãã£ãŠããŸããã¡ã§ãããäžé©åãªææšåã¯äººéã®è¡åããã¹ãªãŒãããããšããããŸãããããªç°¡åãªãã®ã§ã¯ãªããšæãã°ãããæ
éã«èããããã®ã§ããããããã銬ã®ããããã ãã§å©ããããªãããžã¡ã³ããªã©ã«ãªã£ãŠããŸã£ãããç¥èåŽåè
ã§ãããœãããŠãšã¢ãšã³ãžãã¢ããã®ç¶æ³ã«ææ
¢ã§ããããºã¯ãããŸãããè³å
ãããžãã£ãã§ãªããã°ãé©åã«ãœãŒã¹ã³ãŒããçã¿åºããªãã®ã§ãçç£æ§äºã
以åã®è©±ã§ãã ããããäœã®ããã«ç¶ç¶çã«éçºããã£ãŠããã®ãïŒãšããã°ããŠãŒã¶ãŒã«äŸ¡å€ãå±ãããŠãŒã¶ããªãããããã®ã¡ãªãããç²åŸãããã®ææãšããŠã®ããžãã¹ææšãæ¹åãããæã
ã®ããžãã¹ã®æé·ã«ã€ãªããããšãå®çŸãããšããããšã§ãã ã€ãŸãéèŠãªã®ã¯ãäœåããŠãŒã¶ããã«ããã倿Žã ãïŒããšããè©äŸ¡ãåãããïŒããšããåæ°ã«ãããšæããŸãããã®ããã«ã¯åç¥ãå«ããæ©èœãªãªãŒã¹ãæ¹åãªãªãŒã¹ã®æ°ãå¢ãããšããããšããããã¯ãéçºãããããããšã§ããã®äžããæå確çãäžããŠãããšããã®ã¯ãããžãã¹å
šäœèŠç¹ã§ã®æäŸå質ã®è©±ã«ãªããŸãã ãªã®ã§ããããã¯ãéçºèŠç¹ã§ã¯ããŠãŒã¶ãããç¥ããªãªãŒã¹æ°ãå¢ãããããã©ã€ã®æ°ãå¢ããããšããããšããã¢ãŠããããéã®å¢å ãïŒããçµæãšããŠã®çç£æ§ã®åäžãããããåãçµã¿ãã«çç®ã§ããããšæã£ãŠããŸããæž¬å®ããŒã«ãšããŠã¯ãåè³ªææšãéèšã®ããšãèããŠããŸãã£ãšFour Keysã®å©çšã§ããæ°ãããŠãŸãããéèŠãªã®ã¯ãŠãŒã¶ã€ã³ãã¯ããããããããšãç®æãããã©ã€ã®æ°ãæèããããšã§ãã ããšããœãŒã¹ã³ãŒãïŒè¡ã§ãè¿
éã«çŽ æŽãããæ¹åãããŠãŠãŒã¶ã®æåãåŸãã°ãããã¯ãæçã ã£ãïŒãã©ã€ãã ãšæããŸããã倧ããæ©èœéçºã§å€§ããªã€ã³ãã¯ããåŸãããšãéèŠãªããšã§ãã ãã©ã€ã®æ°ãå¢ããããã«å¿
èŠãªããš å人çã«ç¶ç¶éçºããWebãµãŒãã¹ã®éçºçç£æ§ã«å¯Ÿããèãæ¹ãšããŠå人çã«å¥œã¿ãªã®ã¯ãçå°Ÿ åãããšããç±³åœãã€ã¯ããœããã§åãããŠããæ¹ã®èæžã äžçäžæµãšã³ãžãã¢ã®æèæ³ ãã«æžãããŠããã çç£æ§ãšã¯ããã«ãã¬ãã«ïŒïŒ = äœãã°ã°ããã«å®è£
ã§ããïŒããå¢ãããã©ããã§ã¯ãªããïŒ ãšããæç« ã«ãžã¯ãžã¯æ¥ãŸããã ã€ãŸã人éã®ã¢ãŠãããããèšæž¬ããæ°åã®å€å¯¡ãéèŠããã¢ãããŒãã§ã¯ãªããèœåã«çç®ããèãæ¹ã§ãããªããçå°Ÿããã®æ¬ã§ã¯ããã®ããšãçç£æ§ã®é«ãã®ææšã ãšæžããŠãããã§ã¯ãªããŠããã®ãããªèœåãç²åŸããããšãéèŠãªã®ã§ã¯ãªããïŒãšããåœ¢ã§æžãããŠããŸãã ãã¡ããã¡ããããããããããæãã«ç
œãããŠããšæããŸãããïŒ ããèšãããŠã¿ãã°ã瀟å
ã§äžçªæãŸããéçºèœåãšããã®ã¯ãããããæ±çšçãªå°é ã®è¯ãã§ãã仿§çè§£åã«å ããŠã 倧ãŸãã«ãœãŒã¹ã³ãŒããææ¡ããŠããŠãã©ãããããã°æã¿éãã®çµæãåºãããåŠäœã«çŽ æ©ãèŠç©ããã§ããŠãèŠç©ããéãã«å®çŸã§ããããš ã§ã¯ãªãããšæããŸãããæ£ç¢ºã«ã¯æ¡ä»¶ä»æ§ãšçŸå Žã®ä»æ§ãããããããŠãäœãã©ããŸã§ããã¹ããã«ã€ããŠæ£ããèŠç©ãããšè³å
èšèšãããŠãé©åã«ã¢ãŠããããã§ãã人ãäžçªç¢ºå®ãªä»äºãã§ããã¯ãã§ããCTOãžã®ä»æ§ã¬ãã¥ãŒããããã£ãšå£é ã§ãããŠããŸãã®ãæãŸããïŒããã ãã®ä¿¡é Œãšå®çžŸãããããšãå«ãïŒã éçºèšèªãéçºã©ã€ãã©ãªã®ç¥èã¯ãã¡ããã§ãããèªåãã¡ã®ãœãŒã¹ã³ãŒããææ¡ããŠãã人ãäžçªãä»äºã®å¯Ÿå¿éåºŠã¯æ©ããšèããããŸããåãã ãã®èšèšèœåããããªãç¥èéãå€ãæ¹ãä»äºãæ©ãå¯èœæ§ãé«ãã§ãã ãããããéçºçç£æ§ã«å¯Ÿãã瀟å
è°è«ãåºãŠããã®ã¯ãèªåãã¡ã®ãããã¯ãããæ°å
¥ç€Ÿå¡ã§ã¯ç°¡åã«ã¯ææ¡ã§ããªãã»ã©å€§ãããªã£ãŠããŸã£ããšèšããå§ããé ãšç¬Šå·ããŸãããã£ãšäŒç€Ÿãå°ããã£ãé ã®åµæ¥åœåã®ã¡ã³ããŒã¯ãä»ãããå°ãªããœãŒã¹ã³ãŒããææ¡ããŠããŠãããããçç£æ§ãšããé¢ã§ã¯ãäžçªãã®ãããæ©ãã£ãã®ã§ããããæ°ããæ©èœã®è©±ãåºãŠããŠãã話ãèããªãã倧ãŸãã®èšèšã¯å®äºããŠããŠããã®èŸºãšãã®èŸºãçŽãã°ãããšæã£ãŠããŠãå³åº§ã«éçºäœæ¥ã«åãçµãã§ããŸããã ããããæšä»ã®äžéæ¡çšãæ¥åå§èšã®æ¹ã«ããäžå®ã®äººã®åºå
¥ããåæãšããçµç¹ã«ãããŠããœãŒã¹ã³ãŒãããµãŒãã¹ã®ä»æ§ãç¥ããšãããªãŒããŒããããšãã³ãŒãéããããžã§ã¯ãéã®å¢å ã«äŒŽãææ¡ã®ãã«ããããéçºè
ã®äœæ¥æ§ã®ãªãŒããŒãããã«ã€ãªãã£ãŠãã£ããšèãããšã極è«ãããšãå
šéšã®ãœãŒã¹ã³ãŒããææ¡ããŠããŠãé ã®äžã§æŽçããŠããããããªè³å
ã®LLMãä¿æããŠãããšã³ãžãã¢ããçµæãšããŠãäžçªãéããã«å®è£
ã§ãããšèããããšãå¯èœã§ãã ã¡ãããšæ¹åãåæãšããæã«ããšã³ãžãã¢åã
人ã®ã¹ãã«è©äŸ¡ã«ããããããšãã§ããã°ããšã³ãžãã¢ã®è©äŸ¡ãäžãã ïŒ ãšã³ãžãã¢ã®ã°ã¬ãŒãïŒçµŠæïŒãäžãã ïŒ çç£æ§ãäžããã¯ãã§ããæ©èœãªãªãŒã¹ãå¢ããŠããŠãŒã¶ãŒè©äŸ¡ãåããããã®ãã©ã€ã®æ°ãå¢ããã®ã«ã売äžç·å©ç ÷ éçºã«æºãã人æ°ããæ¹åããªããã°ããã以å€ã®äœããééã£ãŠãã£ãŠè©±ã«ãªããæ ¹æ¬ããèŠçŽãå¿
èŠãããã§ãããã ãã©ã€ãå¢ããããã®ããªãŒããŒã·ããããšãè³å
LLMãžã®ã€ã³ãããã å
補éçºã«ããããšã³ãžãã¢ã®èœåã ãäœãã°ã°ããã«å®è£
ã§ããã¬ãã«ã®ããšã ã«çœ®ãããšä»®å®ããŸãããã¡ããäœãã°ã°ãããšããã®ã¯ãããªãã®çæ³ã®è©±ã§ãGoogleæ€çŽ¢ããã£ãŠã瀟å
ããã¥ã¡ã³ãã調ã¹ãŠãè¯ãã®ã§ããããããã®è¡åãšçè§£é床ãæéã§äœæ¥ãé²ããããããã«ãªãããšãæèããããšã倧äºã§ãã ãããããå°ãæœè±¡åãããã®ãããªç¶æ
ãããœãŒã¹ã³ãŒãã®ãªãŒããŒã·ããããæã£ãŠããç¶æ
ãšè¡šçŸããŠããããããããŸããããããŠãåæã«è€æ°äººãåããªããžããªã®ãœãŒã¹ã³ãŒããããã£ãŠãããã§ããããæ¯æ¥ãã©ããããã®æ°ãããœãŒã¹ã³ãŒããçæããããšèãããšãããã¯staticãªèšæ¶åã®ããšã§ã¯ãªããã³ãŒããªãŒãã£ã³ã°ãéããŠäººéã®åçã«è³ã«åãã£ãŠããLLMïŒäººéã®ç¥åïŒãåæ§ç¯ã§ããèœåãšããããšã«ãªããŸãã ãŸãããšã³ãžãã¢ã®èœåããããŠããããšãåæãšããŠããããé»å®³ããèŠçŽ ãåãé€ãããšãéèŠãªåãçµã¿ã§ãããã®å Žåã¯ãã¢ãŠããããã«çç®ãããããããšã³ãžãã¢ãžã®ã€ã³ãããã®æé©åãèããã¢ãããŒãã«ãªããšæããŸãããã¡ãã®æ¹ãããµãã£ãšã¢ãŠããããã®éãé«ããããšããããã¯ãå
·äœçãªæœçã«èœã¡ãŠããããªæ°ãããŠããŸãããïŒ äŸãã°ãè°è«ãäŒè°ã®è³ªãé«ããã§ãããšãããªã³ããŒãã£ã³ã°ã®æ¹åãããã¥ã¡ã³ãã®æŽçã®æéåããªãã¡ã¯ã¿ãªã³ã°ãæŽæ°æ
å ±ã®å
±æã®ä»æ¹ãªã©ãæããããŸããBASEã®ãªã¢ãŒããã¯ãã£ã§åãçµãã§ããclean architectureåïŒããã¯ãšã³ããªããžããªïŒãžã®è²¢ç®ããªãŒããŒã·ããåãä¿ã掻åãšãèšããŸããã³ãŒãã倧ããæžãæããã¿ã€ãã³ã°ã¯ããªãŒããŒã·ããç²åŸã®ãã£ã³ã¹ã§ãããŸããåŠäœã«ãæå°äººæ°ãæå°æ§æã§ãªã¹ã¯ã䌎ã£ãæææ±ºå®ãæéã«ã§ããããšããã®ãéèŠã«ãªã£ãŠããŸãã åœç€Ÿã®CTOã¯ãããŒã ã¡ã³ããŒãå¢ããä»ããªãªãŒã¹ãããŠãããã«ãªã¯ãææ¡ããŠããšèããŠãŸãããè³å
LLMã®ã€ã³ããã¯ã¹ãæŽæ°ããäœæ¥ãèªç¶ã«ãã£ãŠããã®ã¯çŽ çŽã«ããããšæããŸããæ®æ®µããããžã§ã¯ãã«é¢ãã£ãŠãªããŠãã³ãŒããªãŒãã£ã³ã°ãéããŠããããã¯ãã«äœãèµ·ããŠãããææ¡ãç¶ããŠããããã§ãã ãªããChatGPTãªã©ã®çæAIãªã©ã®åãçµã¿ã«ã€ããŠãè§ŠããŠãããŸããšã人éã®èšæ¶åã¯æ®çºæ§ã§ããã幎霢ãäœèª¿ã«ãã£ãŠãè³ã®åã®æŽ»çšåºŠã¯å€ãã£ãŠããŸãããã åã«äººéã®èšæ¶åã ãã«é Œãã®ã¯èžããããŸããã人éãšããŠã®ã¹ãã«ã ãã§ãªããæ€çŽ¢ãçæAIã®æŽ»çšãªã©ã§å€éšèšæ¶ãå¹çãã人éã®è³å
LLMãšé£çµããããšãã§ããã°ããšãŠãçç£çãªAIã«å¯Ÿããåãåãæ¹ãã§ãããšæããŸããããã³ããã«ä»æ§ãæžããŠã³ãŒãçæãããã ãã®AIã®å©çšã¯ã€ãã€ãã ãšæã£ãŠããŸããã人éã®çè§£ãæææ±ºå®ãæ¯æŽããAIãšããã®ã§ããã°æè¿ã§ããéçºãšãã£ã¿ãžã®AIæ¯æŽæ©èœã®æèŒãNotion AIã®æŽ»çšãªã©éçºç°å¢ãé²åããŠãããŸããããAIã«å¯Ÿããè害ã«ãªããããã£ããåãå
¥ããŠãããŸãããã ãããŒãžã£ãæèããªããšãããªãããš ãããžã¡ã³ãã©ã€ã³ã«ãããŠããçŸå®çã«äžéæ¡çšã転è·ã瀟å¡ãæ¥åå§èšãªã©ã®å±æ§ãèããŠããã€ããšã³ãžãã¢ã®æé·æ²ç·ãšã°ã¬ãŒãè©äŸ¡ã«å¿
èŠãªæéãªã©ãåæ¡ãããšãçŸç¶ã®æã
ãæ§æããããããŒã ã¡ã³ããŒã®ã°ã¬ãŒãæ§æã®åžé£ãšããã®ã¯ãäžå®ã®ç¯å²ãåãã¯ãã§ãã èŠã¯éè·ãå¢ããŠã代ããã«å
¥ã£ãŠããã ããæ°äººãå¢ããã°ãã³ãŒãã®ç¥èããã¡ã€ã³ç¥èããªãã®ã¯åœç¶ã ãããåŠã³ã®ãªãŒãã¿ã€ã ãå¿
èŠã«ãªãããã®æç¹ã®ããŒã ã®äººæããŒããã©ãªãªã¯åŒ±ããªãã§ãããããçµéšè
ãé·ãåããŠã¹ãã«ãåäžããŠããã°ã絊äžãããã£ãŠãããŒã ã¡ã³ããŒã®ã°ã¬ãŒãæ§æãé«ããããããé«ãçç£æ§ã§éçºãããžã§ã¯ããããªããŠããããšããã®ã¯ãèªåã§æžããŠã宿ã®ãããšããããããŸãã ã€ãŸãéçºçç£æ§ã®é«ã¿ãç®æããšããã®ã¯ãããŒã ãããŒãžã£ãæã人æããŒããã©ãªãªããç¶æ³ã«ããããŠæ§æããããšã§ãé«ãçç£æ§ãçºæ®ã§ããããŒã ãäœãããšã«éé²ããããšãã®ãã®ã§ã¯ãªãããšæããŸãããæ°èŠäºæ¥ãM&Aãªã©ã§ãçµç¹ãæ¡åŒµãããŠããã®ã§åçãªæŠå¿µã§ããåžžã«ããŒã ã¯ã¢ã¡ãŒãã®ããã«åè£ãããããŠå¢å æžå¯èœãªããšã倧åæã§ããBASEã°ã«ãŒãã®ã«ã«ãã£ãŒãçµç¹ã®å¢å ã¹ããŒããšäººå¡ç§»åã«å¯ŸããŠé©åã«å¹³æºåããããäºãã«çžä¹å¹æãçã¿åºãç¶ããããšã倧äºã§ãã ãããŒãžã£ã¯èªåãåãäœããšããèãæ¹ã§ã¯ãªããäŒç€Ÿå
šäœã®éçºåãäžããŠãããã¢ãŠãããããçã¿åºãç¶æ³ãäœãç¶ããã®ãä»äºã§ãããã®éã«ãã£ã³ã¹ãåŸãŠé©åã«ãœãããŠãšã¢ãšã³ãžãã¢ãšããŠã®ä¿¡é Œãè©äŸ¡ã«çµã³ã€ããŠããããã«ããã¡ã³ããŒãšæ¥åžžã®ã³ãã¥ãã±ãŒã·ã§ã³ãåã£ãŠã»ãããšæããŸãã 人éã¯æ©æ¢°ãããªãã®ã§ãå®å®ããã¢ãŠããããéãåºãããšã§ãã倧å€ã ãšæããŸãããçæAIãã©ãã ãé²åãããšããŠãæåŸã®æ±ºæã¯äººéãäžãç¶ãããšæããŸãã®ã§ãæé©ãæéãªæææ±ºå®ãããŠãé©åãªãªã¹ã¯ã«ãã£ã¬ã³ãžããããã«ã¡ã³ããŒã®ã¹ãã«ãäžãç¶ããããšã«ãªããšæããŸããã¡ãªã¿ã«ãé©åãªãªã¹ã¯ãšã¯ãåºæ¬ã¯ç¡è¶ããããã§ããæææ±ºå®ã®éã«ç¡é£ãªæ¹ãšç¡è¶ãªæ¹ã®ïŒã€ã®éžæè¢ããã£ããšããããç¡è¶ãããåŽã®æææ±ºå®ãããªããšããããã¯ãã¯æåããªãã§ããã§ããã§ããªãããšãéšäžã«ããããããã«ã¯ãããªããšæããŸãã®ã§ãã¡ãããšå®çŸã§ããããã«é 匵ã£ãŠãã ããã ãããã« ãªããéçºã ãã®è©±ãæžããŠããããã«èŠãããããããŸããããåœç¶ãéçºãããžã§ã¯ãã¯éçºããŒã ãããžãã¹ããŒã ããããã¯ããããŒãžã£ããã¶ã€ããŒã枟ç¶äžäœãšãªã£ãŠã¹ã±ãžã¥ãŒã«ã¿ã€ã ã©ã€ã³ãæãã®ã§ããã¹ãŠã®ããŒã ã«ãããèæ
®ã¯äžå¯æ¬ ã§ãããªãŒããŒã·ãããšããèŠç¹ã§ããããããããããžãã¹ã®ãªãŒããŒã·ããããããã¯ãã®ãªãŒããŒã·ããããããžã§ã¯ãã®ãªãŒããŒã·ãããUXã®ãªãŒããŒã·ãããªã©ãé©åã«çºæ®ã§ããŠãããã¯æéèŠãªç¢ºèªäºé
ãšãèšããŸãã ç¹ã«ãåã
ããªã¹ã¯ã䌎ã£ãæææ±ºå®ãå¢ããã倱æãæãããæä»€æ®æ¹ãäžçãšããèãæ¹ã§ãããŒã éã®ãã©ã€ãå¢ãããŠãããã®ããã®å¿ççå®å
šæ§ã®æ§ç¯ãªã©ãéèŠã§ãã æ¹åã«ãããŠãé©åãªãªã¹ã¯ã®åãæ¹ãæææ±ºå®ã®ããæ¹ããªã¢ãŒãã¯ãŒã¯ãšãªã¢ã«mtgã®äœ¿ãæ¹ãäŒè°ã®è³ªã®åäžãªã©èŠçŽ ã¯å€å²ã«æž¡ããŸãããããŒã¿ã«ã§èšããµãŒãã¹éçºã®çç£æ§ãé»å®³ãããã®ãå¹çåãã€ã€ãããããã®åœ¹å²ã®ã¹ãã«ãåäžãããŠããããšã§ããã©ã€ãå¢ãããã¢ãŠããããã®ç·éã¯å¢ããŠããã®ã§ã¯ãªãã§ãããããæ¥å¹Žã¯ãã®ããšã«ã€ããŠãäžã€äžã€èããŠãããããããªãšæã£ãŠããŸãã çŸåšã2025幎ã«åãã人å¡èšç»ãç«ãŠãŠããçã£æäžã§ãããåŒãç¶ãæ¡çšæŽ»åããããšæããŸãã®ã§ã以äžã®æ¡çšæ
å ±ããŒãžãããããããæ±äººãããããèŠãŠããã ãããšå¹žãã§ãã binc.jp ææ¥ã®ã¢ããã³ãã«ã¬ã³ããŒã¯ @Panda_Program ããã®ããèªæžäŒã®ãžã¬ã³ãããå
æãã: ææãçãã¢ã¯ãã£ãã©ãŒãã³ã°å匷äŒã®å®è·µæ³ãã§ãïŒã楜ãã¿ã«ïŒ
ããã«ã¡ã¯ïŒBASE PRODUCT TEAM BLOG ç·šééšã§ããã¿ãªããŸãããã幎ã®ç¬ã§ãããããããéããã§ããããã ä»å¹ŽãæäŸã®BASEã¡ã³ããŒã«ããã¢ããã³ãã«ã¬ã³ããŒãéå¬ããŸãïŒ æ¯å¹Žå
¬éããŠããã¢ããã³ãã«ã¬ã³ããŒãä»å¹Žã§7åç®ãè¿ããŸãã éå»ã®æ§å 2023幎ã®ã¢ããã³ãã«ã¬ã³ã㌠2022幎ã®ã¢ããã³ãã«ã¬ã³ã㌠2021幎ã®ã¢ããã³ãã«ã¬ã³ã㌠2020幎ã®ã¢ããã³ãã«ã¬ã³ã㌠2019幎ã®ã¢ããã³ãã«ã¬ã³ã㌠2018幎ã®ã¢ããã³ãã«ã¬ã³ã㌠ä»å¹Žã1æ¥1èšäºã«éå®ããããããã®ãã©ãšãã£è±ããªèšäºãå
¬éããäºå®ã§ãã å
¬éããæ¬¡ç¬¬ä»¥äžã®ã«ã¬ã³ããŒã鿿޿°ããŠãããŸãã®ã§ããã²ã楜ãã¿ã«ïŒ æ¥ä» å·çè
ã¿ã€ãã« 12/1 @fshin2000 ãããã¯ãã®éçºçç£æ§ã«ã€ããŠèãã 12/2 ïŒ Panda_Program ãèªæžäŒã®ãžã¬ã³ãããå
æãã: ææãçãã¢ã¯ãã£ãã©ãŒãã³ã°å匷äŒã®å®è·µæ³ 12/3 @zan_sakurai Terraform Provider for HatenaBlog Members ã䜿ã£ãŠã¿ãŸããã 12/4 @ikechen è¥æãšã³ãžãã¢ã BASE å
¥ç€Ÿ 6 ã¶æç®ã§æããŠããããš 12/5 @ohiro88 ãå
¥ç€Ÿãšã³ããªãŒãBASE ã«å
¥ç€Ÿã㊠2 ã¶æãæ¯ãè¿ã 12/6 asakoya åŠåš ã»åºç£ã»è²äŒãçµãŠ Hopeful ã«åããŠãã話 12/7 Torata æŽçæŽé ã®ã¡ãœããã§ãåãåããæ¥åã®æ¹åããã話 12/8 @yuna_miyaa ããŒã éçºãé²ããããã«æèããŠããããš 12/9 @kondo ãããžã§ã¯ããæåãããããã®å·¥å€« 12/10 @ykagano ã«ãŒãéçºãå éãããïŒå¹ççãªããã¥ã¡ã³ã管çè¡ 12/11 @gatchan0807 æè¡ç®ç·ã§ã¿ããPAY.JP YELL BANKã®ããããããšãããã玹ä»ïŒ 12/12 @kitamuran Pay IDã¡ã³ããŒã®åæ§ãã²ãã ãä»äºç°å¢çŽ¹ä» 12/12 @yusuke.saito ç§ã®ãã£ãªã¢ãã§ã³ãžïŒããŒã¿åæè
ãããããã¯ããããŒãžã£ãŒãž 12/13 @roothybrid7 Pay IDã·ã¹ãã 移管ãããžã§ã¯ãã®æè¡ã¹ã¿ãã¯ã®çŽ¹ä» 12/14 tac_tanden SLI/SLOã®èšå®ãé²ãããã®åã«ãã¢ã©ãŒãåè³ªã®æ¹åã«åãçµãã 話 12/14 @toshi-oliver 茪èªäŒããã¡ã€ã³é§åèšèšãã¯ãããããããããžã§ã¯ãããŒã ã§éå¬ãã話 12/15 @miyachin_87 Notion FormãšAutomationã䜿ã£ãŠå®åã¿ã¹ã¯ã®èªåçæããŒã«ãäœã£ãŠã¿ã 12/16 uenoka ã¬ããŒãã·ã¹ãã ã®å®å®çšŒåã«åããåãçµã¿ 12/16 @ysssssss98 ãã¢ããã°ã©ãã³ã°ã®äœéšããããè¯ãã£ãã®ã§åžæããã 12/17 @eijenson Jetpack Composeäžã§ã®constraintLayoutã®å©çšäºäŸçŽ¹ä» 12/18 @meihei PhpStorm ã§ PHPUnit ããã£ãšå®è¡ããŠãã話 12/18 gonzaresu108 INFORMATION_SCHEMAãçšããBigQueryããŒã¿ç£èŠ 12/19 @ichi ã¢ãžã£ã€ã«çµç¹ã®ãã¶ã€ããŒããã£ãŠããããŒã ãã«ãã£ã³ã°ã®è©± 12/19 kaneko20 Pay ID 3åããšæãã®éçºããã£ããã«ç¥ãäœæã®å³ããæ·±ã 12/20 @gimupop ç»å£ãã¢ãŠãããããåŸæŒãããnote 12/20 noji_ma Next.jsã®Server Actionãšreact-hook-formã§ãã©ãŒã ãå®è£
ãã 12/21 basems (ä»®)ãšã³ãžãã¢ãšéãšã³ãžãã¢ã§è¶³äžŠã¿æãã PJ é²è¡ 12/21 kuma ãããã¯ããããŒãžã£ãŒã¯ ãé¢çœããåãããããšè¯ã 12/22 bun ã¿ã€ãã«æªå® 12/22 @zan_sakurai ä»å¹Žã®èšäºããµãããã£ãŠã¿ã 12/23 @endu PHP Conference Japan 2024 ã«åå ããŸãã! 12/23 shotakeuchi äžåè¡¡ããŒã¿ã«ãããROCæ²ç·ãšPRæ²ç·ã«ã€ã㊠12/24 @simezi9 ä»ããªã¢ãŒãã¯ãŒã¯ã«ã€ããŠæãããš 12/24 @u_hayato13 çµ±æ¬ãããŒãžã£ãŒ(EM of EM)ã®ä»äº7éž 12/25 dmnlk ã¿ã€ãã«æªå®
ã¯ããã« ããã«ã¡ã¯ãPay IDã®ããã³ããšã³ããšã³ãžãã¢ã®nojiã§ãã æ®æ®µã¯Pay ID ããšæããPay IDã®ã¢ã«ãŠã³ãåšãã®ããã³ããšã³ãéçºãæ
åœããŠããŸãã 10æã« Pay IDã®ã¢ã«ãŠã³ãç·šéç»é¢ ïŒ ãã¡ã ïŒããªãã¥ãŒã¢ã«ããŸããããã®èšäºã§ã¯ããã®ãªãã¥ãŒã¢ã«ãããžã§ã¯ãã§Next.jsã®App Router / Server ActionãæŽ»çšãã䟿å©ã ãšæããç¹ãã玹ä»ããŸãã äœ¿çšæè¡ Next.js 14ïŒãªãªãŒã¹åœæã®ãã®ãçŸåšã¯15ã«ãªã£ãŠããŸãïŒ React 18ïŒãªãªãŒã¹åœæã®ãã®ãçŸåšã¯19ã«ãªã£ãŠããŸãïŒ ãªãã¥ãŒã¢ã«ã®èæ¯ ä»åã®ãªãã¥ãŒã¢ã«ã¯ãPAY瀟ãä¿æãããPay IDãã®ããŒã¿ããã³ã·ã¹ãã ãBASE瀟ãžç§»ç®¡ã»åæ§ç¯ãããããžã§ã¯ãã®äžç°ã§ããã åãªã移管ã«çãŸããããã¶ã€ã³ãªãã¥ãŒã¢ã«ã䌎ããããPAY瀟ã§äœ¿çšãããŠããVue.jsã®ã³ãŒãã¯åå©çšãããNext.jsã§ãŒãããæ§ç¯ããŸããã Next.jsãéžå®ããçç±ïŒ BASE瀟å
ã§ã®æ¡çšå®çžŸããããå®å¿ããŠäœ¿çšã§ããããšã BASE以å€ã§ãæ¡çšäºäŸãå€ãã£ãããè¿å¹Žã®frontendã®ãã¬ã³ãããªãŒãããŠããããš ãŸããæ°èŠã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã§ããããšãããNext.jsã®App Routerãæ¡çšããŸãããïŒéçºçæåœåã¯Next.jsããŒãžã§ã³13ã§ããïŒ App Routerã®æŽ»çš App Routerã¯ãã£ã¬ã¯ããªæ§é ããã®ãŸãŸURLãã¹ãšããŠåæ ãããã»ãããã¡ã€ã«åã«ãã£ãŠåœ¹å²ãæç¢ºã«ãªãç¹ãç¹åŸŽã§ãã /app/ãã â layout.tsx // pageãã©ããããå
±éç»é¢(ç»é¢é·ç§»ã§åã¬ã³ããªã³ã°ãããªã) â template.tsx // pageãã©ããããå
±éç»é¢(ç»é¢é·ç§»ã§åã¬ã³ããªã³ã°ããã) â error.tsx // ãšã©ãŒæã®ç»é¢ â loading.tsx // ããŒãã£ã³ã°äžã®ç»é¢ â not-found.tsx // notFound()ãthrowããããšãã®ç»é¢ â page.tsx // å®éã®URLã«å¯Ÿå¿ããããŒãž ãããããšã«ä»¥äžã®ãããªããªãŒæ§é ã§æç»ãè¡ãããŸã <Layout> < Template > < ErrorBoundary fallback = { < Error /> } > < Suspense fallback = { < Loading /> } > < ErrorBoundary fallback = { < NotFound /> } > < Page /> </ ErrorBoundary > </ Suspense > </ ErrorBoundary > </ Template > </Layout> 芪ãã£ã¬ã¯ããªã®LayoutãåããŒãžãèªåçã«åŒãç¶ããããã¬ã€ã¢ãŠãéšåãå
±éåããããã®ã䟿å©ã§ããã https://nextjs.org/docs/app/building-your-application/routing Route Groups äžæ¹ã§ããURLéå±€ã¯èŠªåé¢ä¿ããããã¬ã€ã¢ãŠããåãæ¿ãããããšããã±ãŒã¹ã§ã¯ã Route Groups ãæŽ»çšããŸããã Route Groupsã¯ãã£ã¬ã¯ããªåã () ã§æ¬ãããšã§å©çšã§ããŸãã (a) â hoge â layout.tsx â ã¬ã€ã¢ãŠãA â page.tsx (b) â hoge â layout.tsx â ã¬ã€ã¢ãŠãB â fuga â page.tsx /hoge ã§ã¯ã¬ã€ã¢ãŠãAãå©çš /hoge/fuga ã§ã¯ã¬ã€ã¢ãŠãBãå©çš ãã®ããã«é©åã«ã¬ã€ã¢ãŠããåãæ¿ããããã®ã䟿å©ã§ããã https://nextjs.org/docs/app/building-your-application/routing/route-groups Parallel Route 管çç»é¢ã§ã¯ãããã·ã¥ããŒãã®ããã« è€æ°ã®æ
å ±ã1ããŒãžã«éçŽããŠè¡šç€º ããããšãå€ããç¹å®ã®ããŒãžã§ Parallel Routes ãå©çšããŸããã app â @parallel â hoge â page.tsx // Aæ
å ± â default.tsx â default.tsx â hoge â page.tsx // Bæ
å ± @ ã§å§ãŸããã£ã¬ã¯ããªãslotãšãªããåãéå±€ã«ãã layout.tsx ã§propsãšããŠåãåããŸãã default.tsxã¯åæèªã¿èŸŒã¿æãããŒãžå
šäœã®åèªèŸŒäžã«äžèŽããªãã¹ãããã®ãã©ãŒã«ããã¯ãšããŠã¬ã³ããªã³ã°ãããã¡ã€ã«ãå®çŸ©ããŠããŸãã äœã衚瀺ãããªãå Žåã¯nullãè¿åŽããããã«å®çŸ©ããŠãããŸãã // layout.tsx export default async function Layout ( { children , parallel , } : { children : React.ReactNode ; parallel : React.ReactNode ; } ) { return ( <> { parallel } // Aæ
å ± { children } // Bæ
å ± </> ); } ãã®ä»çµã¿ãå©çšããAæ
å ±ãšBæ
å ±ãããããå¥ã®ããŒãžãšããŠæç»ãã以äžã®ããã«è¡šç€ºããŸããïŒ /app/@parallel/hoge/page.tsx â Aæ
å ±ã衚瀺 /app/hoge/page.tsx â Bæ
å ±ã衚瀺 Parallel Routesã®å©çšã«ãããslotã«åå²ãããŠããããšã§åããŒãžã§ã®åŠçãå°ãªããªã£ãããã³ãŒãã®å¯èªæ§ãäžããããã«æããŸããã Parallel routeã§ãloading.tsxãerror.tsxãé
眮ããŠããã ãã§ããŒãã£ã³ã°åŠçãErrorBoundaryãå©çšã§ããã®ã§äŸ¿å©ã«æããŸãããçæ¹ãšã©ãŒã ã£ããšãã®ãã³ããªã³ã°çããããå°è±¡ãåããŸããã ããããsoft navigationæã«åã®ParallelRouteã®ããŒãžã衚瀺ããããŸãŸã®ç¶æ
ã«ãªãããšããããClient Componentã§ã©ããããŠãpathãèŠãŠåºãåãããããã«ããæå³ããè¡šç€ºãæ®ã£ãŠããŸãããšãé²ãã§ããŸãã // MatchPathRenderer.tsx 'use client' ; export default function MatchPathnameRenderer ( { matches , children } : Props ) { const pathname = usePathname(); if (!matches || !matches. includes (pathname)) { return null ; } return <> { children } </> ; } // layout.tsx ... < MatchPathnameRenderer matches = { [ '/hoge' ] } > { parallel } </ MatchPathnameRenderer > { children } ... https://nextjs.org/docs/app/building-your-application/routing/parallel-routes Server Component / Server Actionã®æŽ»çš ServeråŽã§ã®ããŒã¿åŠçåšã åServer ComponentãããµãŒããŒåŽã§éåæã«ããŒã¿ãã§ãããå¯èœãšãªããããŒã¿ç®¡çãå¹ççã«è¡ããããã«ãªããŸããããŸããåãããŒã¿ã®ãã§ããåŠçã¯èªåçã«ãã£ãã·ã¥ããããããããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æããããŸãã ããã«ãApp Routerã® Suspense åŠç(loading.tsx)ãæŽ»çšããããšã§ããµãŒããŒããå
ã«HTMLãè¿åŽããé«ããŠãŒã¶ãŒäœéšãç°¡åã«å®çŸã§ããããã«ãªããŸããã ãµãŒããŒåŽã§åäœãããããæ©å¯æ
å ±ãã»ãã¥ãªãã£ã«é¢ããããŒã¿ãå®å
šã«åãæ±ãããšãå¯èœã§ãã ã¯ã©ã€ã¢ã³ããããµãŒããŒãžã®ãªã¯ãšã¹ãåšã åŸæ¥ãã¯ã©ã€ã¢ã³ãããNext.jsã®ãµãŒããŒãžãªã¯ãšã¹ããéãéã«ã¯ã API Route ãå®çŸ©ãããããéããŠAPIãå®è¡ããå¿
èŠããããŸãããã Server Action ã䜿çšããããšã§ãã¯ã©ã€ã¢ã³ãåŽããçŽæ¥ãµãŒããŒåŽã®é¢æ°ãåŒã³åºããããã«ãªããéåžžã«äŸ¿å©ã«æããŸããã // server actionåŠç 'use server' ; export const action = async ( prevState : any , formData : FormData ) => { // serveråŽåŠç } // ãã©ãŒã ã³ã³ããŒãã³ã 'use client' ; export default function Form () { const [ state , formAction ] = useFormState(action); return ( < form action = { formAction } > ... </ form > ) } https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations ãªãã€ã¬ã¯ãåšã ã¢ã«ãŠã³ã管çç»é¢ã§ã¯ãèªèšŒãå¿
é ã®ãããåURLã§é©åãªãªãã€ã¬ã¯ãåŠçãå¿
èŠã ã£ãã®ã§ããã Server Component ã Server Action å
ã§ redirect ãå©çšããããšãã§ããŸãã Server Componentå
ã§ã®ãªãã€ã¬ã¯ãã¯Page Routerã§ã®getServerSidePropsãšäŒŒããããªåŠçãå®çŸã§ããŸããServer Componentå
ã«ãªãã€ã¬ã¯ãåŠçãæžããããã«ãªã£ãéšåã¯å°ãå¯èªæ§ãäžãã£ãããã«æããŸããã // Server Componentå
export default async function Page () { const session = await getSession(); // ã»ãã·ã§ã³ååŸåŠç if (!session) { return redirect( '/login' ); } const { response , error } = getData(session); // ããŒã¿ååŸåŠç if (error. status === 401 ) { return redirect( '/login' ); } ... } Server Actionå
ã®ãªãã€ã¬ã¯ãåŠçã«ã€ããŠã¯ä»¥åã ãšAPI Routeã§ã¯ã©ã€ã¢ã³ãã«ã¬ã¹ãã³ã¹ãè¿ããŠãããã®çµæãèŠãŠããŒãžé·ç§»ãè¡ã£ãŠããŸãããããµãŒããŒåŽã§åŠçãå®çµãããããšãã§ããããããªãã€ã¬ã¯ãå
ã®ããŒãžè¡šç€ºãé«éåãããŸããã // Server Actionå
'use server' ; export const action = ( formData : FormData ) => { const session = await getSession(); // ã»ãã·ã§ã³ååŸåŠç if (!session) { return redirect( '/login' ); } // API callãªã©ãµãŒããŒåŠç return { message : 'æåããŸãã' } ; } ; https://nextjs.org/docs/app/building-your-application/routing/redirecting ãã£ãã·ã¥åšã Server Action ã§ãµãŒããŒãµã€ãã®åŠçãå®è¡ããåŸãã¯ã©ã€ã¢ã³ãã®æ
å ±ïŒãã£ãã·ã¥å«ãïŒãæŽæ°ããéã« revalidatePath ãå©çšããŸãããã¯ã©ã€ã¢ã³ãåŽã§ã¬ã¹ãã³ã¹ãåãåããå€ã«åºã¥ããŠUIãæŽæ°ãããã router.push ã router.refresh ã§æç€ºçã«ããŒãžãé·ç§»ãããå¿
èŠããªããªããŸããã 'use server' ; export const action = ( formData : FormData ) => { // API callãªã©ãµãŒããŒåŠç revalidatePath( '/hoge' ); return { message : 'æåããŸãã' } ; } ; https://nextjs.org/docs/app/building-your-application/caching#revalidatepath ãããã« ã·ã¹ãã ãªãã¥ãŒã¢ã«æã«Next.jsã®app router / server actionsãè§Šã£ãŠã¿ãŠäŸ¿å©ã ã£ãéšåã玹ä»ãããŠããã ããŸããã ããããNext.jsãå©çšãããããžã§ã¯ãã®åèã«ãªãã°å¹žãã§ã çŸåšPay IDã§ã¯ãšã³ãžãã¢ãåéããŠããã®ã§ãèå³ã®ããæ¹ã¯æ°è»œã«ãå¿åãã ããã
ã¯ããã« ããã«ã¡ã¯ãBASEæ ªåŒäŒç€Ÿ Pay IDã§iOSã¢ããªãšã³ãžãã¢ãããŠãã kakkki ã§ãã iOSçã®Pay ID ã·ã§ããã³ã°ã¢ã㪠ã®éçºãæ
åœããŠããŸãã iOSçPay IDã¢ããª(以äžPay IDã¢ããª)ã¯ãªãªãŒã¹ãããŠãã9幎以äžãæ°æ©èœéçºãè¡ããªããç¶ç¶çã«éçšãããŠããŸããæ®æ®µã®æ¥åã§ã¯æ©èœéçºãé²ããäžæ¹ã§ããã«ãã¢ãžã¥ãŒã«åãStrict Concurrency察å¿ãSwiftUIãžã®ç§»è¡ãªã©ç¶ç¶çã«æè¡çãªæ¹åã«åãçµãã§ããŸãã Pay IDã¢ããªå
ã«å€ãããååšããç»é¢ã®å€ãã¯UIKitããŒã¹ã§å®è£
ãããŠããŸãããæè¿ã¯SwiftUIã§å®è£
ãããç»é¢ãå¢ããŠããããã«ãªããŸãããããã§æ¬èšäºã§ã¯ã SwiftUIãå°å
¥ããéçšã§çŽé¢ãã課é¡ãåãçµã¿ã«ã€ã㊠ãçŽ2幎åãã仿¥ã«è³ããŸã§ã®ç»é¢å®è£
æ¹éã®å€é·ã3ã€ã®ãã§ãŒãºã«åããªãã玹ä»ããŠãããŸãã ç¹ã«é·æééçšãããŠããUIKitããŒã¹ã®ã¢ããªã«SwiftUIãå°å
¥ããããšèããŠããiOSãšã³ãžãã¢ã®çæ§ã«ãšã£ãŠãå°ãã§ãåèã«ãªãã°å¹žãã§ãã ãã§ãŒãº1 (2022幎10æé ): Compositional Layouts à Diffable Data Source ãã®æç¹ã§ã¯ãè€éãªã¬ã€ã¢ãŠããããŒã¿ç®¡çãå¹çåããããã«iOS13ããå°å
¥ãããCompositional LayoutsãšDiffable Data Sourceãæ¡çšããŠããŸãããCompositional Layoutsã«ãããè€éãªã¬ã€ã¢ãŠãã§ãã»ã¯ã·ã§ã³ããšã«èšå®ã§ããããã«ãªãã¬ã€ã¢ãŠãå®è£
ã®æè»æ§ãé«ãŸããŸããããŸããDiffable Data Sourceã«ããããŒã¿ã®å€æŽãå³åº§ã«UIã«åæ ã§ããããã«ãªããããŒã¿ãšUIã®çµ±äžçãªç®¡çãå¯èœãšãªããŸããã ãããããã®æç¹ã§ã¯SwiftUIã¯å
šãå°å
¥ããŠãããUIKitã®ã¿ã§ã®éçºã§ãããUIKitã¯ä»ã§ãããªããªçŸåœ¹ã§ãããSwiftUIãšæ¯ã¹ãŠUIå®è£
ã®é床ãå£ãã±ãŒã¹ããããåŸã
éçºå¹çãªã©ã®èгç¹ããSwiftUIãå°å
¥ããŠãããããšããæ°æã¡ã匷ããªã£ãŠãããŸããã ãã§ãŒãº2 (2023幎10æé ): Compositional Layouts à Diffable Data Source à SwiftUIïŒUIHostingConfigurationïŒ æ¬¡ã®ã¹ããããšããŠãSwiftUIãå°ããã³ã³ããŒãã³ãå®è£
ã«çãã圢ã§å°å
¥ããŠããããšã詊ã¿ãŸããã ãã®æç¹ã§ã¯ä»¥äžã®å³ã®ãããªã€ã¡ãŒãžã§ãã å
·äœçã«ã¯ã UICollectionViewCell å
ã§SwiftUIãå©çšããæ¹æ³ã§ãã以äžã®ãã㪠UICollectionViewCell ã®å
±éå®è£
ãçšæããŠãiOS16以äžã§ã¯ UIHostingConfiguration ãiOS15ã§ã¯ UIHostingController çµç±ã§ã»ã«å
ã®UIãSwiftUIã§å®è£
ããŠããããã«ãªããŸããã /// HostingCellã®äžèº«ãšãªãViewãæºæ ãããããã³ã« public protocol HostingCellContent : View { associatedtype Dependency init (_ dependency : Dependency ) } open class HostingCell < Content : HostingCellContent >: UICollectionViewCell { // TODO : iOS15ãµããŒããåã£ããåé€ãã private let hostingController = UIHostingController < Content? > (rootView : nil ) override public init (frame : CGRect ) { super . init (frame : frame ) // TODO : iOS15ãµããŒããåã£ããåé€ãã hostingController.view.backgroundColor = .clear hostingController.view.translatesAutoresizingMaskIntoConstraints = false } @available ( * , unavailable ) public required init ?(coder : NSCoder ) { fatalError( "init(coder:) has not been implemented" ) } public func configure (_ dependency : Content.Dependency , parent : UIViewController? = nil ) { if #available(iOS 16.0 , * ) { configureWithHostingConfiguration(dependency) } else { configureWithHostingVC(dependency, parent : parent ) } } /// iOS16以äžã§ã¯UIHostingConfigurationã䜿ã func configureWithHostingConfiguration (_ dependency : Content.Dependency ) { if #available(iOS 16.0 , * ) { contentConfiguration = UIHostingConfiguration { Content(dependency) } // ããã©ã«ãã§ããŒãžã³ãèšå®ãããŠããã®ã§0ã«ãã .margins(.all, 0 ) } } // TODO : iOS15ãµããŒããåã£ããåé€ãã /// iOS15以äžã§ã¯UIHostingControllerã䜿ã func configureWithHostingVC (_ dependency : Content.Dependency , parent : UIViewController? ) { guard let parent else { return } hostingController.rootView = Content(dependency) hostingController.view.invalidateIntrinsicContentSize() guard hostingController.parent == nil else { return } parent.addChild(hostingController) contentView.addSubview(hostingController.view) NSLayoutConstraint.activate([ hostingController.view.leadingAnchor.constraint(equalTo : contentView.leadingAnchor ), hostingController.view.topAnchor.constraint(equalTo : contentView.topAnchor ), hostingController.view.trailingAnchor.constraint(equalTo : contentView.trailingAnchor ), hostingController.view.bottomAnchor.constraint(equalTo : contentView.bottomAnchor ), ]) hostingController.didMove(toParent : parent ) } } ã»ã«ã®åŒã³åºãåŽã¯ã»ã«ã®äžèº«ãã©ã®ããã«å®è£
ãããŠãããç¥ãå¿
èŠã¯ãªããåŸæ¥ã® UICollectionViewCell ãçšããéçºãšåæ§ã«å®è£
ããããšãã§ããŸããããã®åãçµã¿ã«ãããã»ã«å
ã®UIãSwiftUIã§å®£èšçã«èšè¿°ã§ããããã«ãªããUIæ§ç¯ã®éçºé床ãåäžããŸããã ãã§ãŒãº2ã®SwiftUIå°å
¥æã«çŽé¢ããèª²é¡ ãããããã§ãŒãº2ã® UICollectionViewCell å
ã«SwiftUIãåã蟌ãå®è£
ã®æ¹æ³ã ãšãããã€ãã®èª²é¡ã«çŽé¢ããŸããã ç¹ã«ä»¥äžã®èŠä»¶ãæºããããã«ãå®è£
ãè€éåããããããšãåãããŸããã ãæ°ã«å
¥ãç¶æ
ãæŽæ°ããéã«ãAPIã®çµæãåŸ
ããã«äžæçã«UIã«åæ ããã ãŠãŒã¶ãŒã«ããããŒã¿æŽæ°æäœããã³UIãžã®åæ åŠçãé »ç¹ã«ãã ãããã®èŠä»¶ãå®çŸããéçšã§ã次ã®ãããªåé¡ãæµ®ãã³äžãããŸããã @State ã«ããç¶æ
管çãå¯èœãªã±ãŒã¹ãéå®ããã UIHostingConfiguration å
ã§SwiftUIãã¥ãŒã䜿çšããéã @State ããããã£ãå€éšããåæåãããšåé¡ãçºçããŠããŸãããå
·äœçã«ã¯ãå€éšããæž¡ãããå€ã§ @State ãåæåãããšãã»ã«ã®åå©çšæã«ç¶æ
ããªã»ããããããããŒã¿ã®äžæŽåãçºçããããšããããŸããã 以äžã¯ç°¡ç¥åããã³ãŒãäŸã§ãã struct ItemView : View { @State private var isFavorite : Bool init (_ isFavorite : Bool ) { // å€éšããæž¡ãããå€ã§@Stateãåæå _isFavorite = State(initialValue : isFavorite ) } var body : some View { // ... } } UICollectionViewCell å
ã§ãã® ItemView ã䜿çšãããšãã»ã«ã®åå©çšæã« ItemView ã® init ãå床åŒã°ããŸããã @State ã®å€ã¯åæåããã以åã®ç¶æ
ãä¿æããŸãããã®ããã衚瀺ãšããŒã¿ã®äžæŽåãçããæå³ããªãUIã®æåã«ãªããŸãã ãŸãã以äžã®ããã«SwiftUIå
éšã§ isFavorite ãæŽæ°ããéããåæ§ã«UIã«æ£ããããŒã¿ãåæ ãããªãããšããããŸããã struct ItemView : View { @State private var isFavorite : Bool init (_ isFavorite : Bool ) { // å€éšããæž¡ãããå€ã§@Stateãåæå _isFavorite = State(initialValue : isFavorite ) } var body : some View { Button(action : { // ãæ°ã«å
¥ãæŽæ°APIãåŒã¶åã«ãã¹ã ãŒãºã«UIãæŽæ°ã§ããããã«äžæçã«æŽæ°ãã isFavorite.toggle() // ãæ°ã«å
¥ãæŽæ°APIãã³ãŒã« }) { // ... } } } ãããã®åé¡ã®åå ã¯ã @State ãSwiftUIã®ãã¥ãŒã®ã©ã€ããµã€ã¯ã«ã«åºã¥ããŠç¶æ
ã管çãããããå€éšããã®åæåãšçžæ§ãæªãããšã«ãããŸã ãWWDC22ã«ãã Use SwiftUI with UIKit ã®ã»ãã·ã§ã³ã§ã¯ã以äžã®ããã«SwiftUIã®å€ã§ä¿æãããããŒã¿ã䜿çšããé㯠@State , @StateObject ãšãã£ãããããã£ã©ãããŒã¯äœ¿ãã¹ãã§ãªããšããèšåããããŠããŸãã To store data that is created and owned by a SwiftUI view, SwiftUI provides the @State and @StateObject property wrappers. Since we're focused on data owned outside of SwiftUI, these property wrappers aren't the right choice. åŒçš: Use SwiftUI with UIKit (å€ãå©çšããç®æãSwiftUIã®äžã«éããŠããã±ãŒã¹ã§ã¯ã UIHostingConfiguration ã®äžã®SwiftUIã§ @State ãå©çšããŠãæåŸ
éãåããŸãã) åœæãPay IDã¢ããªå
ã®å€ãã®ç»é¢ã¯MVPã¢ãŒããã¯ãã£ã§æ§æãããŠããŸãããPresenterãç¥ã£ãŠããã®ã¯ UIViewController ã®ã¿ã§ããã€ãŸãSwiftUIã®å€ã§ããŒã¿ãä¿æããæ§æã«ããŠãã以äžã倧åã®ã±ãŒã¹ã§ã¯ @State ã䜿çšããããšã¯ã§ããŸããã§ããã SwiftUIãã¥ãŒå
ã§çºçããã€ãã³ãäŒæ¬ãšããŒã¿æŽæ°äŒéã®è€éå ã»ã«å
ã®SwiftUIãã¥ãŒã§ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãçºçãããšããããPresenterã«äŒããå¿
èŠããããŸãããããšã³ãŒã«ããã¯ãããªã²ãŒããªã©ããªãããã®åœ¢ã§UIViewControllerãçµç±ããªããšãããŸããã // ã€ã¡ãŒãžå³(諞ã
ç°¡ç¥åããŠæžããŠããŸã) ã¢ããªãŠãŒã¶ãŒ â ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³(ãæ°ã«å
¥ããã¿ã³ãã¿ãããªã©) SwiftUI.View ( in UICollectionViewCell) â ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã®äŒé UIViewController â ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã®äŒé Presenter â APIãªã¯ãšã¹ããªã©ã®ãã³ããªã³ã° ããã«ãPresenterã®åŠçã®çµæäœãããSwiftUI.Viewã®äžã®è¡šç€ºãå€ããå ŽåãPresenterã®çµæããŸãSwiftUIãã¥ãŒã«äŒããªããšãããŸãããåœç¶Presenterã¯çŽæ¥SwiftUIãã¥ãŒãç¥ãããšã¯ãããŸãããããã§ä»¥äžã®ãããªãããŒã§ããŒã¿æŽæ°ãäŒæ¬ããããšã«ãªããŸãã // ã€ã¡ãŒãžå³ Presenter â ããŒã¿æŽæ°ã®äŒé UIViewController â ããŒã¿æŽæ°ã®äŒé SwiftUI.View ( in UICollectionViewCell) â UIãæŽæ° ã€ãªãããšãã®ãããªãããŒã«ãªããŸãã // ã€ã¡ãŒãžå³ ã¢ããªãŠãŒã¶ãŒ â ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³(ãæ°ã«å
¥ããã¿ã³ãã¿ãããªã©) SwiftUI.View ( in UICollectionViewCell) â ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã®äŒé UIViewController â ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã®äŒé Presenter â APIãªã¯ãšã¹ããªã©ã®ãã³ããªã³ã° â ããŒã¿æŽæ°ã®äŒé UIViewController â ããŒã¿æŽæ°ã®äŒé SwiftUI.View ( in UICollectionViewCell) â UIãæŽæ° ãã¡ãããã®ãããŒã§ãã¢ããªãèŠä»¶éãå®è£
ããããšã¯å¯èœã§ããã§ãããSwiftUIã§UIãæžããŠãããšSwiftUIã§å®çŸããããããŒã¿ãã€ã³ãã£ã³ã°ã®æ©æ§ãåãå
¥ããŠãäžèšã®ãããªãããŒãããã·ã³ãã«ã«ããããšæãããã«ãªã£ãŠãããŸããã ãã§ãŒãº3 (2024幎7æé ): SwiftUI à Observationãã¬ãŒã ã¯ãŒã¯ ãã§ãŒãº2ã® UICollectionViewCell å
ã«åã蟌ã圢ã§SwiftUIãå°å
¥ããéã«åºãŠãã課é¡ã解決ãããããããSwiftUIããŒã¹ãªå®è£
æ¹éãç®æãããšã決ããŸãããããã§ã®æ§æããçŸåšæ°ããç»é¢ãå®è£
ããæã«ç©æ¥µçã«åãå
¥ããŠãã圢ã§ãã SwiftUIãšUIKitéã®è²¬ååé¢ãšæŽç ãŸããç¶æ
管çãšããžãã¹ããžãã¯ãSwiftUIå
éšã§å®çµãããå®è£
æ¹éã«è»¢æããŸããããŸããã¬ã€ã¢ãŠããä»ãŸã§ã¯UIKit(Compositional Layouts)ã§å®è£
ããŠããŸãããããã®éšåãSwiftUIã§å®è£
ããããã«å€æŽããŸããã UIKitã¯äž»ã«ç»é¢é·ç§»ãæ
åœããŸããããã²ãŒã·ã§ã³ããŒãªã©äžéšUIãæ
åœããããšããããŸãããAPIéä¿¡ãªã©ã®ããŒã¿ååŸãSwiftUIå
éš(Viewãããã¯Viewãä¿æããViewModel)ããRepositoryãåç
§ããããã«ãªããSwiftUIãšUIKitéã®ããªã²ãŒãåŠçãããªãæžããŸãããããã«ãããã¥ãŒå
ã§çºçããã€ãã³ãäŒæ¬ã»ããŒã¿æŽæ°ã®è€éã ã£ããããŒã®èŠéããæ¹åãããŸããã View+ã³ã³ããŒãã³ãã¯ãèšãããããªSwiftUIã§ããView+ç»é¢é·ç§»ã®éšåã¯ãåŒãç¶ãUIKit(UINavigationController)ã§è¡ããŸããView+ã¬ã€ã¢ãŠãã«ã€ããŠã¯ãUIHostingControllerãå©çšããŠUIViewControllerã«SwiftUIã§æžããã¬ã€ã¢ãŠãå®è£
ãåã蟌ãã§ããŸãã ãããŠView+ããžãã¯ã»ç¶æ
管çã«ã€ããŠã¯ãSwift5.9, iOS17以äžã§å©çšã§ããObservationãã¬ãŒã ã¯ãŒã¯ãå°å
¥ããããšã«ããŸããã Perceptionã«ããObservationãã¬ãŒã ã¯ãŒã¯ã®å°å
¥ ããããPay IDã¢ããªã¯ãŸã iOS16.2以äžããµããŒãããŠããŸããããã§ Point-Free ãå
¬éããŠãããŠãããObservationçžåœã®ããã¯ããŒãå®è£
ãæäŸããŠããã swift-perception ãå©çšããŸããswift-perception(以äžPerception)ã©ã€ãã©ãªã¯iOS17以äžã§ããã°Observationãã¬ãŒã ã¯ãŒã¯ã®API(withObservationTracking)ãåŒã³åºããiOS17æªæºãªãObservationãã¬ãŒã ã¯ãŒã¯ã®æåãæš¡å£ããå®è£
ãåŒã°ããŸãã SwiftUIäžã®ç¶æ
管çã«ãããŠãPerceptionçµç±ã§Observationãå°å
¥ããããCombine補ã®ObservableObjectãããã³ã«ãå©çšãããæ©ã¿ãŸããããObservableObjectãããObservationã®æ¹ã以äžã®ç¹ãã䜿ãåæãè¯ããšå€æããŸããã åãã¥ãŒã®å·®åæŽæ°ã«ãããŠäžèŠã«èŠªãã¥ãŒã®å·®åæŽæ°ãèµ°ããªã å€(ã¯ã©ã¹)ãå
¥ãåã«ããå Žåããã¹ãããã¯ã©ã¹ã®å€ã®å€æŽãæ€ç¥ã§ãã Perceptionãå©çšããå Žåã远跡ãããå€ãä¿æãããªããžã§ã¯ãã @Perceptible ã¯ã©ã¹ãšããŠå®£èšããŸãããã㊠@Perceptible ã¯ã©ã¹ãžã®ã¢ã¯ã»ã¹ãæã€Viewã WithPerceptionTracking Viewã§ã©ããããŸãã import Perception struct HogeScreen : View { let viewModel = HogeViewModel() var body : some View { // WithPerceptionTrackingã§å²ãå¿
èŠããã // TODO : iOS16åã£ããWithPerceptionTrackingã©ãããå€ãã ãã§ãã WithPerceptionTracking { VStack { Text(viewModel.count) Button( "Increment" ) { viewModel.increment() } // ... } } } } @Perceptible // TODO : iOS16åã£ãã@Observableã«å€æŽãã @MainActor final class HogeViewModel { var count = 0 func increment () { count += 1 } // ... } // UIHostingControllerã§SwiftUI.ViewãUIViewControllerã®äžèº«ãšããŠåã蟌ã final class HogeViewController : UIViewController { override func viewDidLoad () { super .viewDidLoad() let vc = UIHostingController(rootView : HogeScreen ()) self .addChild(vc) self .view.addSubview(vc.view) vc.didMove(toParent : self ) vc.view.translatesAutoresizingMaskIntoConstraints = false vc.view.topAnchor.constraint(equalTo : view.topAnchor , constant : 0 ).isActive = true vc.view.leftAnchor.constraint(equalTo : view.leftAnchor , constant : 0 ).isActive = true vc.view.rightAnchor.constraint(equalTo : view.rightAnchor , constant : 0 ).isActive = true vc.view.bottomAnchor.constraint(equalTo : view.bottomAnchor , constant : 0 ).isActive = true // ... } } ãã®ããã«SwiftUIäžã®ããŒã¿ãã€ã³ãã£ã³ã°ãå¯èœã«ãªã£ããããã§ãããŒã¿ã®å€æŽãçºçããéã« @Perceptible ã¯ã©ã¹ã®å€ãæŽæ°ããã ãã§æžã¿ãUIãžã®åæ ããšãŠã楜ã«ãªããŸããã Perceptionå©çšæã®æ³šæç¹ Perceptionã䜿ãäžã§ç¹ã«éèŠãªæ³šæç¹ã®äžã€ãšããŠã ForEach ãªã©Viewãè¿ãã¯ããŒãžã£ãŒã®äžã§ @Perceptible ãªå€ãåç
§ããå Žåã¯ãã¯ããŒãžã£ãŒã®äžã§ãå¥é WithPerceptionTracking ã§å²ãå¿
èŠããããŸããå²ã£ãŠããªããšãå€ã®æŽæ°ããã£ãŠãã¯ããŒãžã£ãŒå
ã®Viewã«ã¯åæ ãããŸããã struct HogeScreen : View { let viewModel = HogeViewModel() var body : some View { WithPerceptionTracking { ForEach(Array(hogeViewModel.items.enumerated()), id : \\.offset) { index, item in // WithPerceptionTracking { // â hogeViewModel.itemsã®äžéšã®nameãæŽæ°ãããŠã倿Žã远跡ã§ããŠããªã Text(item.name) // } } } } } @Perceptible final class HogeViewModel { /* ... */ } ãã®çç±ã¯ã ForEach ã®ã¯ããŒãžã£ãŒãViewã®bodyæ¬äœãšåãã¿ã€ãã³ã°ã§åŒã³åºãããããã§ãªããViewã®bodyæ¬äœãåŒã³åºãããåŸã« ForEach ã¯ããŒãžã£ãŒãåŒã°ããããšã«ãããŸãããã®ãã ForEach èªäœãå²ã£ã WithPerceptionTracking ã®äžã«ã¯ ForEach ã¯ããŒãžã£ãŒã®äžèº«ã®Viewã¯å«ãŸããŠããªãã®ã§ã @Perceptible ã®ããããã£ã远跡ããããã®Viewã®ç»é²åŠçãåããŠããªãã®ã§ãã 以äžã®ããã«ãForEachã¯ããŒãžã£ãŒã®äžãWithPerceptionTrackingå²ã£ãŠããã°è¿œè·¡å¯èœã§ãã struct HogeScreen : View { let viewModel = HogeViewModel() var body : some View { WithPerceptionTracking { ForEach(Array(hogeViewModel.items.enumerated()), id : \\.offset) { index, item in // ForEachã®ã¯ããŒãžã£ãŒã®äžãWithPerceptionTrackingã§å²ã£ãŠãã®ã§ã // å€ã®å€æŽã远跡ã§ããŠã // âïž WithPerceptionTracking { Text(item.name) } } } } } @Perceptible final class HogeViewModel { /* ... */ } ãŸããèªäœã®Viewã«ViewBuilderãæž¡ãéãæ³šæãå¿
èŠã§ãã 以äžã®ã³ãŒãã ãšãCustomContainerã«æž¡ãViewBuilderã®äžèº«ã WithPerceptionTracking ã§å²ãŸããŠããŸãããbodyæ¬äœãåŒã³åºãããã¿ã€ãã³ã°ã§ã¯ViewBuilderã®äžã¯ãŸã åŒã³åºãããŠãªãã®ã§ã Text(hogeViewModel.count) ã®ç®æã¯bodyçŽäžã® WithPerceptionTracking ã®ç¯å²å€ã«ãªã£ãŠããŸããŸãã // ViewBuilderãæž¡ãåŽ struct ContentView : View { let hogeViewModel = HogeViewModel() var body : some View { WithPerceptionTracking { CustomContainer(title : "Custom Container" ) { // ViewBuilderã®äžèº« Text(hogeViewModel.count) } } } } // ViewBuilderãåãåãåŽ struct CustomContainer < Content : View >: View { let title : String let content : () -> Content init (title : String , @ViewBuilder content : @escaping () -> Content ) { self .title = title self .content = content } var body : some View { VStack() { Text(title) content() .padding() } } } @Perceptible final class HogeViewModel { /* ... */ } ãªã®ã§å
ã»ã©ãšåæ§ã«ãViewBuilderã®äžèº«ãWithPerceptionTrackingã§å²ãå¿
èŠããããŸãã // ViewBuilderãæž¡ã芪View struct ContentView : View { let hogeViewModel : HogeViewModel var body : some View { WithPerceptionTracking { CustomContainer(title : "Custom Container" ) { // ViewBuilderã®äžèº«ãWithPerceptionTrackingã§å²ã WithPerceptionTracking { Text(hogeVieModel.count) } } } } } ãããã« æ¬èšäºã§ã¯ãå€ãããããUIKitããŒã¹ã®iOSã¢ããªã«ãããŠSwiftUIãå°å
¥ããéçšã§çŽé¢ãã課é¡ãåãçµã¿ã«ã€ããŠç޹ä»ãããŠããã ããŸããã åè¿°ããéãçŸåšã®Pay IDã¢ããªã®ãµããŒãããŒãžã§ã³ã¯iOS 16.2以äžã§ãããæ¬¡åã®ãµããŒãããŒãžã§ã³æŽçã®ã¿ã€ãã³ã°ã§iOS17以äžã®ãµããŒããšããå¯èœæ§ããããŸãããã®æã¯PerceptionããçŽç²ãªObservationãžã®ç§»è¡ãããã®ã§ããã®åãçµã¿ã®äžã§æ°ããªæ°ã¥ããããã°ãŸãã©ããã§ç޹ä»ãããŠããã ããã°ãšæããŸãã ãŸããæ°èŠå®è£
ã¯ãã¡ããã®ããšãå€ãUIKitããŒã¹ã®ç»é¢ã«å¯ŸããŠSwiftUIããŒã¹ãªå®è£
æ¹éã«åºã¥ããŠãªã¢ãŒããã¯ãã£ãªã©ãããŒã ã§é²ããŠãããããšæããŸãã æåŸã«ãªããŸãããPay IDã§ã¯éæã¡ã³ããŒãåéããŠããŸãããèå³ã®ããæ¹ã¯æ°è»œã«ãå¿åãã ããïŒ open.talentio.com
ã¯ããã« ã¯ãããŸããŠã®äººã¯ã¯ãããŸããŠãããã«ã¡ã¯ïŒ å
鱿𿿥ã¶ã ã§ãïŒBASE BANK DivisionïŒä»¥äžãBANKããŒã ïŒã®ããã³ããšã³ããšã³ãžãã¢ã®ãã£ã¡ããïŒÂ @gatchan0807  ïŒã§ãã ä»å㯠11/23ïŒåïŒ ã«éå¬ããã ãFullstack AI Dev & Raycast Summit feat. Satoshi Nakajimaãã«ã¹ãã³ãµãªã³ã°ã»ã¹ãã³ãµãŒããŒã¯ãããŸããïŒãšãããå ±åèšäºã«ãªããŸãïŒ ã¹ãã³ãµãªã³ã°ããã€ãã³ãã«ã€ã㊠ä»åã¹ãã³ãµãªã³ã°ããã€ãã³ãã¯ãFullstack AI Dev & Raycast Summit feat. Satoshi Nakajimaããšããã€ãã³ãã§ãã¹ããã¯ã»ããªã³ã¯ã¹ãã³ãµãŒã®æ ã§ã¹ãã³ãµãªã³ã°ã»åå ããŸããð ãŸããåãããŠã¹ãã³ãµãŒããŒã¯ããããŠããã ããŸããïŒïŒè©³çްã¯åŸè¿°ïŒ devx.jp DevX / Raycast Community Japan ãããš äžè¬ç€Ÿå£æ³äººã·ã³ã®ã¥ã©ãªãã£ã»ãœãµãšã㣠ããã®å
±å¬ã®ã€ãã³ãã§ãFullstack AI Devã®ååãå ããŠããéããAIã䜿ã£ãçç£æ§åäžã䟡å€ã®ãããããã¯ãã®æäŸã«é¢å¿ãåŒ·ãæ¹ã
ã®çºè¡šãããããèãããšãã§ããŸããïŒ ãŸããRaycast Summitã®ååãå ããŠããéããRaycastã䜿ã£ã䟿å©ãªæ©èœãã¯ãããRaycast Proã§äœ¿ããAIæ©èœã®ç޹ä»ãªã©ãªã©ããã£ãææ¥ããRaycastãã£ãšäœ¿ãããªãããïŒããšãªãçºè¡šãç¥èŠããããããèãããããšãã§ããŸããïŒ ã¹ã¿ããã®çãããç»å£è
ã®çãããã¯ãããããããã®æ¹ã®ãå°œåã®ãããã§ãã®ã€ãã³ãã宿œã§ããã®ã ãšæããŠããŸãããã®ãããªçŽ æµãªã€ãã³ãã«ã¹ãã³ãµãŒãšãã圢ã§é¢ããããŠããã ããŸããŠãæ¬åœã«ããããšãããããŸããïŒ ãã®å ŽãåããŠæè¬ããäŒãã§ããã°ãšæããŸãïŒ ã¹ãã³ãµãŒããŒã¯ã§ã話ãããå
容ã«ã€ã㊠ä»åã®ã¹ãã³ãµãŒããŒã¯ã§ã¯ãSLMïŒSmall Language ModelïŒã®äžã€ãGemini NanoãChromeãã©ãŠã¶ã«æèŒãããããã«ãªããã©ããªããšã«äœ¿ããã®ãã«ã€ããŠãã話ããããŠããã ããŸããïŒ ä¹
ãã¶ãã®ãªãã©ã€ã³ç»å£ã§ç·åŒµããªããçºè¡šããŠããæã®å³ ãªã³ã©ã€ã³ã§ãé
ä¿¡ãããŠããã100æ°ååã«èŠãŠããã ããŠããæã®å³ ç»å£è³æã«é¢ããŠã¯Docswellã«ãŠå
¬éããŠããŸãã®ã§ããã²åãããŠã芧ããã ããŸããšå¹žãã§ãïŒ www.docswell.com ããã㫠以äžãBASE BANKããŒã ãšããŠããFullstack AI Dev & Raycast Summit feat. Satoshi Nakajimaãã«åè³ãããŠããã ããŸããïŒãšãããå ±åã§ããïŒ ä»åã®ã€ãã³ãã¯BASE BANKããŒã ãšããŠããšã³ãžãã¢ã€ãã³ãã«åè³ãããŠãã ããïŒããšããçºä¿¡ãèŠãŠã声ããããã ãããã®ã§ããŠãåŒãç¶ãBASE BANKããŒã ãšããŠã¯èŠæš¡ã«é¢ããããšã³ãžãã¢ã€ãã³ãã»ã³ãã¥ããã£ã€ãã³ãã«ã¹ãã³ãµãŒãšããŠãååãããŠããã ããããšæã£ãŠãããŸãïŒ è©³çŽ°ã¯ä»¥äžã®èšäºã«ãŸãšãŸã£ãŠããŸãã®ã§ããããèå³ããã°ãã²ã芧ãã ããïŒ devblog.thebase.in ïŒç§å人ãšããŠã¯ã¹ãã³ãµãŒããŒã¯ã®ä»ãã©ãã©ãç»å£ããã£ãŠããããã®ã§ããã ãã®èŸºãã«æžãããŠããçºè¡šå
容 ã«ãã³ãšãããã®ãããã°ãã²ãé£çµ¡ãã ããïŒãšãã宣äŒããã£ãããšâŠïŒ ãŸããBASE BANKããŒã ã¯ãšã³ãžãã¢ãã¯ãããåè·çš®ã倧åéäžã§ãã®ã§ããããèå³ããã°ãæ°è»œã«ã«ãžã¥ã¢ã«é¢è«ãXãªã©ã§ã声ãããã ããïŒ binc.jp
ã¯ããã« ã¯ãããŸããŠã®äººã¯ã¯ãããŸããŠãããã«ã¡ã¯ïŒBASE BANK DivisionïŒä»¥äžãBANKããŒã ïŒã®ããã³ããšã³ããšã³ãžãã¢ã®ãã£ã¡ããïŒÂ @gatchan0807  ïŒã§ãã ä»åã¯BANKããŒã ã®äžã§è·çš®æšªæã§è¡ã£ãŠãããææ¬¡äŒããšããLTäŒã«ã€ããŠç޹ä»ãããŠãã ããïŒ ãã®ææ¬¡äŒïŒLTäŒïŒãæ¯æå®æœããŠããããšã§ãããŒã ã«ãšã£ãŠã©ããªã¡ãªãããããã®ãïŒãã宿œã«ããã工倫ãç¥ã£ãŠããã ããçããã®ããŒã ã§ãã¹ã¢ãŒã«ã¹ã¿ãŒãã§å®æœããŠã¿ãŠããã ãããšãšã£ãŠãå¬ãããªãšæã£ãŠããŸãïŒ ãŸããä»åã¯èšäºã®ã¿ã€ãã«ã®éãããã®ææ¬¡äŒã§å幎éïŒå®éã«ã¯2æ~10æã®èš8åïŒãæ¯ææ§ã
ãªãé¡ã§LTãããã®ã§ãã€ãã§ã«ãã®å
容ãšããããåŸãç¥èŠãããã玹ä»ãããŠãã ããïŒ ãããéå¬äºå®ã®æè¡ã€ãã³ãã®ããŒãã§åèŽããããªã¿ã€ãã«ãããã° X ãªã©ã§æ°è»œã«ã声ããããã ãããšå¬ããã§ãïŒ ããããææ¬¡äŒãšã¯ïŒ 2022幎11æããBANKããŒã ã§éå§ãããéå§åœæãã以äžã®ãããªæ³ããšç®çã§å®æœãããããã®ã§ãã ïŒãã®ææã¯åã¯ãŸã BANKããŒã ã«ã¯ããããBASEåŽã®CRMæ©èœã®æ¹åãããŠãããããŸããïŒ ç€Ÿå
ã®Notionã«ã¯ä»¥äžã®ããã«ææ¬¡äŒã«ã€ããŠãŸãšãŸã£ãããŒã¿ã«ã誰ã§ãèŠãããå Žæã«èšçœ®ãããŠãããäºæ¥è²¬ä»»è
ã®æ³å·ïŒ @gimupop ïŒãããç®çãèšèªåããŠæžããŠãããŠããããããã«è³æãžã®ãªã³ã¯ããŸãšãŸã£ãNotion DBãèšçœ®ãããŠãããããŸãã ãã®äŒã«é¢ããŠã®æ
å ±ããŸãšãŸã£ãNotionããŒãžã®ãã£ããã£ã®äžéš ïŒBANKããŒã ã§ã®ãã®åãçµã¿ã®åé²ã«ãªã£ããProduct BEER BASHããšãã瀟å
ã€ãã³ããšããã«å¯Ÿããæ³å·ããã®ã¢ããæãã¯ä»¥äžã®noteã«ãŸãšãŸã£ãŠå
¬éãããŠããã®ã§ããã²ãã¡ããã芧ãã ããã ð https://note.com/gimupop/n/nb950488d8de8 ïŒ ææ¬¡äŒèªäœã¯äžèšNotionã«ãæžãããŠããããã« ãèªå·±é瀺ããšãã¢ãŠãããããããããšã«ããPDCAã®äœçŸã ãç®çãšããŠå®æœãããŠããŸãã ãã®ãããçºè¡šããå
容ã¯ä»äºã«é¢ä¿ããŠããªããŠãããããã©ãŒããããèªç±ïŒã¹ã©ã€ããäœã£ãŠãããããLookerããã·ã¥ããŒããèŠããªããã§ãããããNotionãäžãã説æããŠãã圢ã§ãè¯ãïŒãªã®ã§ããããã5~10åéã§ããªãèªç±ã«çºè¡šããŠããŸãã ä»å¹Žããã¯äŒã®éçšã ãããŒããŒã·ã§ã³ã®ã¡ã€ã³æ ïŒçºè¡š10å+ææ³ã»è³ªå5åïŒÃ 4~6人ã ãä»»æçºè¡šè
æ ïŒçºè¡š5åã®ã¿ïŒÃ 1~3人ã ãšãã2éšæ§æã«å€ããã®ã§ãçºè¡šã®é »åºŠãšããŠã¯ã ããã3ã¶æã«1åãèªåã®çªãæ¥ããããã®ã¹ãã³ã§åã£ãŠããŸãã å®éã«éå»ã«ãã£ãçºè¡šã ãšä»¥äžã®ãããªãã®ããããŸã ã¿ã€ãã«: å€çã®è©± å€çã®å顿¹æ³ãªã©ã®åºç€ç¥èããå€çå±ãããECã«å¯ŸããŠã©ããªèª²é¡æãæã£ãŠãããïŒãšããç¥èŠã®å
±æãªã© ã¿ã€ãã«: ä»ãæç«ãç±ã ãåãããããããããããåå ããã€ãã³ããæç«åç©é€šã®ç޹ä»ãçŽè¿æç«ã®ãããŸã§ã®åžžèãå€ãã£ãŠããŠããïŒãšãã話ãããã«ã¯ECã§ãããªååãåºããããªãšèããŠããã¢ã€ãã¢ã®ç޹ä»ãªã© ã¿ã€ãã«: ãã£ãšããŒã ã®çãããšBANKãããã¯ããŠãŒã¶ãŒãã¿ãŠãããã ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã®æŠèŠ & ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒãšã¯ïŒã®å
±æãªã© çºè¡šã¯åºæ¬ãªãã©ã€ã³ã§ã¿ããªèããªãããFigjamããŒãã«ä»ç®ãçµµæåããªã¢ã¯ã·ã§ã³ã貌ã£ãŠã¯ã€ã¯ã€ããŠããŸãã çºè¡šè
åŽãšããŠã¯ããã«ææ³ãããããéãŸã£ãŠããã®ãåŸã§èŠãŠå¬ããæ°æã¡ã«ãªãããããã¡ã·ãªããŒã¿ãŒã¯éåæã«è³ªåãææ³ãéãŸã£ãŠããã®ã§çºè¡šåŸã®ã¿ã€ãã³ã°ã§æŸã£ãããããããšããã¡ãªããããããŸã ð gatchan0807ããã®äŒãèŠãŠããŠæããããš BANKããŒã ã§ã¯ãããªæãã®äŒãæ¯æå®æœããŠããã2023幎11æïŒã¡ããã©1幎åïŒã«ç°åããŠæ¯æåå ããŠããŠæããããšããã£ããæžããŠãããŸãã ä»ã®çµç¹ãã§ãŒãºã«ã¯ææ¬¡äŒãããããšã§ã³ãã¥ãã±ãŒã·ã§ã³ãåæ»ã«ãªããªã©ã¡ãªããããããããããªãšæããŠããŸã ð çºè¡šèµ·ç¹ã§ããããªããšããããããªã©ã ç°ãªãè·çš®ïŒã¢ããªã¹ãïŒã®äººã«çžè«ãããã£ããã«ãªã£ãŠããã£ã ããŒã ã¡ã³ããŒã®ããŒãœããªãã£ãç¥ãæ©äŒãšããŠãšãŠã掻çšã§ãã å
¥ç€Ÿæã®èªå·±ç޹ä»ããã£ããã§ããå Žæ ãããã®ã¯ãšãŠãè¯ããã©ãããŠãä»äºã®äžãã©ã³ãã»é£²ã¿äŒãªã©ã§èªå·±ç޹ä»ã§ããéã«ã¯éçãããããè©±ã®æµããåèŽããªãããšãããã®ã§âŠ åŸããå
¥ã£ã人ãã é·ããã人ã®ããŒãœããªãã£ãç¥ã æ©äŒã«ãªã£ãŠãã Lookerããã·ã¥ããŒãã®å Žæãç¥ããããSlackã®ã©ãã§ããåããããŠããã®ãïŒã®ãããªããããªæ
å ±ãããã«ç ã£ãŠããã®ãïŒããšããæ°ã¥ããããããã£ãŠã¿ãã°ããã®ãïŒããšãã ç¥èã®ã€ã³ããã¯ã¹ã貌ãã çºè¡šæ¹åŒã«ãPDCAãåã£ãŠããŠãæè¿ã¯Canvaã䜿ã£ãŠããæãã®ã¹ã©ã€ããããããäœã£ãŠçºè¡šãã人ãåºãŠããŠãšãŠãè¯ã 倧äœçºè¡šã3ã¶æã«1åããããªã®ã§ãïŒä»»æçºè¡šã§æ¯åãããšãããªããã°ïŒæå€ãšè©±ããã¿ã¯èŠã€ãããã éã«æ¯æçºè¡šã¯ãã¿æ¢ããšã¹ã©ã€ãäœã倧å€ã ã£ãïŒèªæ¥èªåŸïŒ ãããªLTãããŸãã ããããã¯èšäºã¿ã€ãã«ã®ååã§ãææ¬¡äŒã§ç§ãã©ããªLTãããŠãããã玹ä»ãããŠãã ããã ãããèªè
ã®çããŸã®ãªãã§äœãçŽç·ã«è§Šãããã®ãããã°ããã²ã話ãããŸãããïŒãæ°è»œã« X ïŒ @gatchan0807 ïŒãŸã§ã声ãããã ãããïŒð 2024幎2æ: Chrome DevToolsã®ã¹ã¹ã¡ å®éã«äœ¿ã£ããChrome DevToolsã®ã¹ã¹ã¡ãã®ã¹ã©ã€ãã®æç² ããã³ããšã³ããšã³ãžãã¢å¿
æºã®Chrome DevToolsã®äŸ¿å©æ©èœãããŒã¹ã«çŽ¹ä» ãããã¯ããããŒãžã£ãŒããã¶ã€ããŒã®ç¢ºèªäœæ¥ã楜ã«ããæ©èœãããããã¯ãŒã¯ãé
ãå Žåãè²èŠç¹æ§ã®å Žåãããããã«ç¢ºèªã§ããæ©èœãªã©ãçŽ¹ä» ãšã³ãžãã¢ä»¥å€ã®è·çš®ã®æ¹ã«ãå®ã¯æªã人ãã¡ã¯ãããã£ãŠäœ¿ã£ãŠããããããšããã®ãã€ã¡ãŒãžããŠããããã»ãã¥ãªãã£æèãé«ããäºäŸãçŽ¹ä» äŸãã°ãChrome DevToolsã䜿ãããšã§ç»é¢ã«ã¯åºãŠããªããããªããŒã¿ãèŠããã äŸãã°ãChrome DevToolsã䜿ãããšã§ç»é¢ãç°¡åã«æžãæããŠãã£ããã£ãæ®ãã 2024幎3æ: æŠç¥çèªå·±åŠç¿ã®ã¹ã¹ã¡ å®éã«äœ¿ã£ããæŠç¥çèªå·±åŠç¿ã®ã¹ã¹ã¡ãã®ã¹ã©ã€ãã®æç² åæã«ããŒã ã¡ã³ããŒããæŠç¥çä»è
亀æµã®ã¹ã¹ã¡ããšããã¿ã€ãã«ã§çºè¡šããããŠããã®ã§ãããã«é¢é£ãããŠè©±ããå
容 èªåãã©ããªç®çã»èãæ¹ã§èª¿ã¹ç©ïŒèªå·±åŠç¿ïŒãããŠããã®ãã話ãèªå·±é瀺ã®çºè¡š ã³ãã¥ãã±ãŒã·ã§ã³ãåæ»ã«ããããã«äºåã«èª¿ã¹ç©ãããŠããããš èãäºã調ã¹ç©ã®ã·ã§ãŒãã«ãããã説æãããŸãããããã«èª¿ã¹ç©ãããŠããããš 2024幎4æ: ïŒããŒã å
šäœã§ã¹ãã¬ã³ã°ã¹ãã¡ã€ã³ããŒã宿œããäŒã«ãªã£ãã®ã§ãããã¿ïŒ ã¹ãã¬ã³ã°ã¹ãã¡ã€ã³ããŒã®äŒã«ã€ããŠã詳ããã¯ãã¡ãã®èšäºãã芧ãã ãã basebook.binc.jp 2024幎5æ: ãŒãã®ããããã ãããããã® ãããã»ãã»ãããã
〠å®éã«äœ¿ã£ãããŒãã®ããããã ãããããã® ãããã»ãã»ãããã
ã€ãã®ã¹ã©ã€ãã®æç² 4æã®ã¹ãã¬ã³ã°ã¹ãã¡ã€ã³ããŒã®çµæã«ãåéå¿ããšããæ§æ Œç¹æ§ãTOP5ã«å
¥ã£ãŠããããšãã話ãããšã«ãããã® 3æã®çºè¡šã§èªå·±åŠç¿ã®è©±ãããŠããã®ã§ãããã§åŸãç¥èãã©ãèããŠãããïŒãšãããšããã«ãã©ãŒã«ã¹ããå
容 NotionãGoogle Keepãªã©ã䜿ã£ãç¥èéç©ãã©ãããã©ãŒã æ§ç¯ãè¡ã£ãåŸãæçµçã«Slackã«èœã¡çããŠããç¶æ
2024幎6æ: ãããã¹ãŽããïŒJavaScriptïŒ å®éã«äœ¿ã£ãããããã¹ãŽããïŒJavaScriptïŒãã®ã¹ã©ã€ãã®æç² Arcadeãšãããããã¯ããç¥ãããã®ãããã¯ããChromeæ¡åŒµ + Webã¢ããªã±ãŒã·ã§ã³ã§å®çµããŠãããã¯ãã®äŸ¡å€ãäœã£ãŠããã®ãèŠãŠããããå®çŸããããã«ã¯JavaScriptã®åããµãã ãã«äœ¿ãå¿
èŠããããã ãïŒãšãã話 åãããŠãJavaScriptã䜿ã£ãŠã§ããããšãäŒãããšã³ãžãã¢ä»¥å€ã®ã¡ã³ããŒã«ãããã°ã©ãã³ã°ãæ¥åå¹çæ¹åã«èå³ãæã£ãŠããããããã«è©±ããçºè¡š 2024幎7æ: ããããæ¥ããªã³ããã€ã¹LLMïŒSLMïŒã®æªæ¥ å®éã«äœ¿ã£ããããããæ¥ããªã³ããã€ã¹LLMïŒSLMïŒã®æªæ¥ãã®ã¹ã©ã€ãã®æç² 2024幎11æ23æ¥ã«éå¬ãããã€ãã³ãïŒ Fullstack AI Dev & Raycast Summit ïŒã®ã¹ãã³ãµãŒLTã®å
容ã®å
ã«ãªã£ãçºè¡š å人çã«PWAã®é ããChromeãã©ãŠã¶ã«èå³ã匷ãã®ã§ãGoogle I/Oã§Gemini nano in Chromeãç¥ã£ãããšããå®éã«è§Šã£ãŠã¿ãŠãåŸãç¥èã話ãããã® åãããŠGemini nanoãAndroidã¹ããã«ãApple IntelligenceãiPhoneã«å
¥ãããšã話é¡ã«ãªã£ãŠããã®ã§ãããããåãããŠèšå ããããšã³ãžãã¢ä»¥å€ã«ãããã£ãŠããããããã«ã€ã¡ãŒãžããããèšèãæå€§é䜿ã£ãŠçºè¡š 2024幎8æ: ããªãã®ç¥ããªã.new ãã¡ã€ã³ã®.äžç å®éã«äœ¿ã£ããããªãã®ç¥ããªã.new ãã¡ã€ã³ã®.äžçãã®ã¹ã©ã€ãã®æç² Googleã管çããgTLDã® ã.new ãã¡ã€ã³ãã«ã€ããŠã®ç¥èŠå
±æã®ããã®çºè¡š https://docs.new ã§Google Docsã®æ°èŠããŒãžãäœæã§ããããšãªã©ãæ¥åTipsãšããŠè©±ããã èªåãã¡ã®ãµãŒãã¹ã§äœããªããããããã¡ã€ã³ãããããªïŒãšããåè£ãåºããã ããŸãã§New gTLDã§èªååãããã¡ã€ã³ãåããããšã話ããããBrandTLDã«ã€ããŠãå
±æ 2024幎9æ: Webã®æªæ¥ / WebãããŒã¿ã«ãã®æªæ¥ å®éã«äœ¿ã£ããWebã®æªæ¥ / WebãããŒã¿ã«ãã®æªæ¥ãã®ã¹ã©ã€ãã®æç² expand.aiãšãããããã¯ããY Combinatorãã調éãã話é¡ã«ãªã£ãŠããã®ã瀟å
ã§èŠã€ããããã«ã€ããŠèª¿ã¹ãç¥èãå
±æããçºè¡š ãã®ãããã¯ãã調ã¹ãŠããæã«Webäžã®æ
å ±ããŒã¿ã«ãµã€ãã®æªæ¥ãæ¡ããã®ã§ããããªå€åãå¿
èŠãªäžçã«ãªãããããšããç§èŠãã話ãããã® expand.aiãã©ã®ããã«äœ¿ããã®ãïŒãšããç¥èã«ãåè·ã®çµéšãçµã¿åãããŠããŒã¿ã«ã®ããžã·ã§ã³ãå±ãããªãããâŠãšãã屿©æãã¡ã€ã³ ãµãŒãã¹ãç¶ç¶æäŸããããã«ã©ããªè§£æ±ºçãããããã©ããªäŸ¡å€æäŸãå¿
èŠããïŒã»ãŒåŠæ³ããŒã¹ã§ïŒèªã£ããããŸãã 2024幎10æ: 仿¥ããå§ããçæAI å®éã«äœ¿ã£ãã仿¥ããå§ããçæAIãã®æªæ¥ãã®ã¹ã©ã€ãã®æç² ããŒã ã®çæAIã®æŽ»çšåºŠåãããã£ãšäžããããšæããçæAIã«å¯ŸããŠã®ã¹ã¿ã³ã¹ãå
±æãããããŒãã«ãã§ããéãäžããŠäœ¿ãå§ããŠã¿ãããããšããã¡ãã»ãŒãžã®çºè¡š ã€ã¡ãŒãžããŠããããããããã«ããã©ãããã ãšæã£ãŠäœ¿ããããšããã¡ãã»ãŒãžãäŒããŠãã ã®ã³å€ªããããã©ãããã«æ³£ãã€ãããã«ãã©ããªããšã ã£ãŠäžæŠçžè«ããŠã¿ãŠããã ãã©ãããã®ããã«å€±æããããšãããã®ã§ãæž©ããç®ã§å€±æãæããŠããããïŒå®ç§ãæ±ããããªãïŒ ããããæŽŸçããŠãããŒã«ãã¬ã€ããã³ããã䜿ã£ãå©çšæã®ãã³ã·ã§ã³ã®äžãæ¹ããJSONã§ãããšããã圢ã§ã®ç²ŸåºŠã®æ¹åãªã©ã®ã¡ãã£ãšãããã¯ããã¯ãçŽ¹ä» gatchan0807ãããã ãçºè¡šããŠããŠæã£ãããš æäžŠã¿ãªè¡šçŸã«ã¯ãªã£ãŠããŸãã®ã§ãããäœãã ã¢ãŠãããããèµ·ç¹ã«ããåŠç¿ã¯å®çãæ©ãããã¢ãããŒã·ã§ã³ã®ç¶æããšãŠãããããã®ã§è¯ã ãªãšæããŸããâŠïŒ ãŸããçæAIã«å¯ŸããŠå人çãªèå³ã¯åŒ·ãã£ããã®ã®ããããã¯ããšããŠé¢ãã£ããä»äºãšããŠé¢ããèŠèŸŒã¿ã¯ã»ãŒãããŸããã§ããã ã§ãããç©æ¥µçã«çºä¿¡ããŠããããšã§çæAIé¢é£ã®ã€ãã³ãïŒåŸè¿°ïŒãžã®ã¹ãã³ãµãªã³ã° + ã¹ãã³ãµãŒLTæ
åœããããŠããã話ãé²ãã ããå®éã«çæAIããããã¯ãã«çµã¿èŸŒãæ¹æ³ãèãå§ããããšïŒãŸã ãŸã æ§æ³ã»åŠæ³æ®µéïŒãããšããšãããããšæã£ãŠããä»äºãããããŠããããŠããã®ã§ãããããã«è¿œå ããŠæ°ãã«çæAIé¢é£ã®ãä»äºãå¢ããä»äºãããã«æ¥œããèŠå ã«ããªããŸãã ð ããŒã ã«å¯ŸããŠã®ç¥èŠå
±æããããããããïŒãããåŠã³ããã£ãïŒããšãã£ããã£ãŒãããã¯ãæè¬ãåãåããŠãšãŠããã³ã·ã§ã³ãäžãããŸãããéåžžã«åæãªããBANKããŒã ã§ãã®äŒãäžçªããŸã掻çšããŠãã人éãªããããªãããªãšæã£ãŠãããããŸã ð ãããã« ä»åã¯BANKããŒã ã®ãææ¬¡äŒããšããæã«1å瀟å
ã§è¡ã£ãŠããLTçºè¡šäŒã®åãçµã¿ã玹ä»ãããŠããã ããŸããã ããããã®ãããªåãçµã¿ãè¡ã£ãŠããBASE / BASE BANKããŒã ã«ãèå³ãæã£ãŠããã ããã®ã§ããã°ããã²ãæ°è»œã«ã«ãžã¥ã¢ã«é¢è«ã X ã§ã®ã声ãããªã©ãããŠããã ããŸããšãšãŠãå¬ããã§ãïŒ ãŸã ãŸã BASE BANKããŒã ãšããŠã¯äœããããã®ãæäŸããã䟡å€ããããããã£ãŠãããããäžç·ã«å®çŸããŠããã仲éãåéããŠããŸãããã²BANKããŒã ã«ãåãã貞ããã ãã ðââïžðââïžðââïž binc.jp ãŸããåãã㊠gatchan0807 ãå幎éãæ¯æçºè¡šããå
容ã玹ä»ãããŠããã ããŸããã BANKããŒã ãšããŠãäžå°èŠæš¡ã®ãšã³ãžãã¢ã€ãã³ããžã®äŒå ŽæäŸã»é£²é£ã¹ãã³ãµãŒããã£ãŠããåããããã®ã§ããšã³ãžãã¢ã€ãã³ãã®äž»å¬ãã¹ã¿ããã®çããŸã®äžã§ããããããã£ã話ã«ãèå³ããæ¹ãããã£ãããã°ãæ°è»œã« X ãªã©ã§ã声ããããã ããŸããšå¹žãã§ãïŒ ãããã¯ããã¡ãã®èšäºã X ãªã©ã§ã·ã§ã¢ããŠããã ãã®ããšã£ãŠããšã£ãŠãå¬ããã§ãïŒ devblog.thebase.in æåŸã«ãèšäºå
ã§ãå°ãè§ŠããŸããã 2024幎11æ23æ¥ïŒåïŒã«å®æœããã以äžã®ã€ãã³ãã«BASE BANKããŒã ãã¹ãã³ãµãŒããããŠããã ããLTããããŠããã ããŸãã®ã§ãã²ãªãã©ã€ã³ã§ãåå or ãªã³ã©ã€ã³ã§ã芧ããã ãããšå¹žãã§ãïŒ devx.jp
<ãã®èšäºã¯Hatena-Blog-Workflows-Boilerplateã«ãã£ãŠäœæãããŸãã> ããã«ã¡ã¯ïŒ BASEæ ªåŒäŒç€Ÿ Pay ID ã® @zan_sakurai ãšç³ããŸãã BASE PRODUCT TEAM BLOG ç·šéå±ã¡ã³ããŒãåããŠããŸãã(å®ã¯ä»å¹Žã®ç·šéé·ã§ãã) ä»åã¯ãHatena-Blog-Workflows-Boilerplateã䜿ã£ãŠãšããSaaSã®ãªã³ã¯ãäžæ¬çœ®æãã話ãããŸãã Hatena-Blog-Workflows-Boilerplate Hatena-Blog-Workflows-Boilerplateãšã¯ã æ ªåŒäŒç€Ÿã¯ãŠãªãããå
¬åŒã§å
¬éããŠãããã¯ãŠãªããã°ã®èšäºãæžãããã®ã¯ãŒã¯ãããŒã®ãã€ã©ãŒãã¬ãŒãã§ããŠãGitHub äžã§äžæžããèšäºã®å
¬éçãè¡ãããšãã§ãããã®ã§ãã github.com åŒç€Ÿã§ã¯æšå¹Ž @applepine1125 ãããæžãã Hatena-Blog-Workflows-Boilerplateã€ãã£ãŠ BASEã®ããã°æžããŠã¿ã ãèŠãŠããã ãããšå¹žãã§ãã Hatena-Blog-Workflows-Boilerplate ã䜿ã£ãŠ äžæ¬çœ®æããŠã¿ã å
ã«çµè«ã§ããäžæ¬çœ®æãããŸã§ã¯3ã¹ãããã§å®äºããŸãã! ç·èšäºæ°çŽ450ä»¶ã®ãã¡ã眮æå¯Ÿè±¡ã®ãªã³ã¯ãå«ãŸããŠããèšäºã¯çŽ100ä»¶ãå·®åã¯çŽ130è¡ã»ã©ã§ããã(ç®èŠã§ç¢ºèª&眮æããŠããããŸããšããŸãã...!) è¯ãæãã«åã蟌ãã§(pull from hatenablog) è¯ãæãã«çœ®æããŠïŒ è¯ãæãã«push! 以äžã§ã! ãªã³ã¯çœ®æäœæ¥ã®çµç·¯ ãããã«å°ã峿°ãªãã®ã§ãããå°ã詳ããçµç·¯ããäŒãããããšæããŸãã ããšã®ãã£ããã¯ããããŸã§å©çšããŠãããšããSaaSãå¥ã®SaaSã«åãæ¿ããããšã«ãªãã瀟å
ã§ã¯ãã®ãªã³ã¯ã®çœ®æäœæ¥ãè¡ãããŠããæäžã§ããã BASE PRODUCT TEAM BLOG ã«æ²èŒããŠããèšäºã«ãå€ãã®ãã®SaaSã®ãªã³ã¯ãå«ãŸããŠããã眮æäœæ¥ãå¿
èŠã§ããã (ããã°ãšããã³ã³ãã³ãã®ç¹æ§äžãéå»ã®èšäºã¯æŽæ°ããªãããšãã倿ãããããŸããããèªè
ã®çæ§ã®äœéšãæãªããªãããšãåªå
ããå
šãŠåãæ¿ããããšãšããŸããã) æåã¯ãå
šéšèšäºç®èŠã§å°éã«ãã£ãŠã¿ãã...ãããšæã£ãŠããŸããããéãéã§ããããããªããšããªããªãããª...ãããšãŒãããèããŠããŸããã ãŒãããèããŠãããšããšããµãšãããšãã«åè¿°ã® @applepine1125 ãããæžããèšäºãæãåºããŸããã Hatena-Blog-Workflows-Boilerplate ã¯ããã°ã®èšäºãæžãããã®ã¯ãŒã¯ãããŒãæäŸãããã®ã§ããã hatena blogäžã«æ²èŒããŠããèšäºãpullããããšãã§ããã®ã§ã ããã䜿ã£ãŠãèšäºã®åã蟌ã¿(pull) -> 眮æ -> push ãšããæµãã§ããªã³ã¯ã®çœ®æäœæ¥ãè¡ãããšãã§ããã®ã§ã¯ãªãããšæããŸããã ã¡ãã£ãšå®éšããŠããã£ãŠã¿ããšãããåè¿°ã®ãšããç°¡åã«ãªã³ã¯ã®çœ®ãæããã§ããŸããã 䜿ã£ãŠã¿ãææ³ ç¹å®ã®æååãäžæ¬çœ®æãšããæ
£ã芪ããã (?)äœæ¥ããããªãã ãã§ããã®ã§ãæ¬åœã«ç°¡åã§ããã ããã°ã®å·çã®äžé£ã®ãããŒã Hatena-Blog-Workflows-Boilerplate ã®ã¯ãŒã¯ãããŒã«ç§»è¡ããããªããšç€Ÿå
ã§ããŒãããŠããã®ã§ããã å·çã®ãããŒã ãã§ãªããããã°ã®ã¡ã³ããã³ã¹ã«ã䜿ããããšããããããŸããŸãä»åŸæŽ»çšããããšæã£ãŠããŸãã ãŸããä»åè§Šã£ãŠã¿ãŠæããŸããããå·çã ãã§ãªããã¡ã³ããã³ã¹ãèšäºãäžæ°ã«èŠãããšãã£ãããšã«ã掻çšã§ããã®ã§ãäŒæ¥ã§ã¯ãŠãªããã°ã§æè¡ããã°çãéå¶ãããŠããæ¹ã«ã¯ãã²äžåºŠã詊ãããã ãããã§ãã ãããã« Hatena-Blog-Workflows-Boilerplate ãã¡ããã¡ã䟿å©ã§ã...!!! open.talentio.com
BASE ã Aurora MySQL v3 ãšãªããŸãã SRE Groupã® ngsw ã§ãã 2024/10/14ã10/15ã®æ·±å€ã¡ã³ããã³ã¹ã«ãŠãBASEã§å©çšããŠããAmazon Aurora MySQLã®ããŒãžã§ã³ã¯ãv2ç³»ããv3ç³»ãšãªããŸããã ã¢ããã°ã¬ãŒãã®åææ¡ä»¶ã§å€§ããªã€ãŸããããããŸãããã gh-ost ãå©çšããããšã§ãä¹ãè¶ããããšãã§ããŸããã ãã®èšäºã§ã¯åœè©²ã¢ããã°ã¬ãŒãã®äžã§ gh-ost ãã©ã®ããã«å©çšããã©ãããæ©æµãåãããã«ã€ããŠè¿°ã¹ãŠãããŸãã ãããã : v3 察å¿ããªããšã©ããªãã®ïŒ Aurora MySQL v2ã¯æšæºãµããŒãçµäºãçºè¡šãããŠãããv3ãžã®ç§»è¡ãçµããŠããªãDBã¯ã©ã¹ã¿ãŒã«ã¯èªåçã«æåã®å»¶é·ãµããŒããé©çšãããæµãã§ãã Amazon RDS å»¶é·ãµããŒãã®äœ¿çš - Amazon Aurora 2024/10/31 ã«èªåã§å»¶é·ãµããŒãå
¥ã 2024/12/01 ããå»¶é·ãµããŒãæéã®èªåè«æ±ãé©çšããã è²»çšã¯ãã¡ããã確èªãã ããããããŸã§å®ããããŸããã æé - Amazon Aurora | AWS æåãµããŒãæäŸã«ããããçšåºŠã®æéç¶äºãäžãããããšã¯ãããã¢ããã°ã¬ãŒããå
å»¶ã°ãã«ããã¡ãªããã¯ã»ãšãã©ãããŸããã ããšãã°ããã®ã¢ããã°ã¬ãŒããããäŒæ¥ã«ãšã£ãŠå©çã®ããæœçããµãŒãã¹ã®éçº/æ¹ä¿®ãããã°ãŸãå¥ã®æææ±ºå®ãåãã§ããããããããªæœçã¯ãããããªãã§ãããã ç°¡åã«ã¢ããã°ã¬ãŒãã§ããªãåé¡ Aurora MySQL v2âv3ã¢ããã°ã¬ãŒãæ€èšŒæ®µéã§åé¡ãèŠã€ãããŸããã BASEã§ã¯æ¬çªç°å¢ã®ããŒã¿ã«ãã¹ãã³ã°ãã»ã©ããããã®ããéçºç°å¢ã§å©çšã§ããããã«ããŠããŸãã ãã®ãã¹ãã³ã°ããDB Clusterã§ã以äžã«ãããããªã€ã³ãã¬ãŒã¹ã¢ããã°ã¬ãŒãã®æ€èšŒãè¡ããŸãããããšã©ãŒã®ããã¢ããã°ã¬ãŒãåŠçã¯åæ¢ããŠããŸããŸããã Amazon Aurora MySQL ããŒãžã§ã³ 3ïŒMySQL 8.0 äºæïŒãžã®ã¢ããã°ã¬ãŒã | Amazon Web Services ããã° åæ¢çç±ã¯ upgrade-prechecks.log ãã¿ãããšã§ç¢ºèªãã§ããŸãã åå ãšãªãåé¡ã¯å€§ããäºã€ãããŸããã mysql . event ã«é¢ããã¢ããã°ã¬ãŒãæã®äžæŽåãšã©ãŒ 倿°ã®ããŒãã«ã«å€ããã£ã¹ã¯ãã©ãŒãããã§ datetime åã«ã©ã ãäœæãããŠããããã®ãšã©ãŒ mysql . event ã«é¢ããã¢ããã°ã¬ãŒãæã®äžæŽåãšã©ãŒ AWS ãµããŒãã«ãã察å¿ããã ããŸããã ãã¡ãã¯æ°æ¥çšåºŠã§è§£æ±ºã§ããæ€èšŒäœæ¥ããããã¯ããã»ã©ã®åé¡ã§ã¯ãããŸããã§ããã 倿°ã®ããŒãã«ã«å€ããã£ã¹ã¯ãã©ãŒãããã§ datetime åã«ã©ã ãäœæãããŠããããã®ãšã©ãŒ åé¡ã¯ãã¡ãã®ãšã©ãŒã§ãã MySQL :: MySQL 8.0: Removing support for old temporal datatypes è§£æ±ºæ¹æ³ããåœè©²ã«ã©ã ãæã€ããŒãã«ãæ°ããåäœæããããšããããšã«ãªãã Dump & Restoreãã ALTER TABLE {table_name} FORCE; ãšãããããªãã€ãŸãv2äžã§ CREATE TABLE çžåœã®ããšãè¡ãå¿
èŠããããŸããã ããããã¯MySQL5.6以åã®AWSã®RDSã§çšŒåãããã®ãŸãŸAuroraã«åŒãç¶ãããŠããããŒãã«ã§ãã〠datetime åã«ã©ã ãå«ããã®ããã®å¯Ÿè±¡ãšãªãã®ã§ãããã Aurora ãããµãŒãã¹ãéå§ãããããã¯ããªã©ã§ã¯èŠãããšããªããšã©ãŒãªã®ãããããŸããã ã©ã®ãããªå°é£ã䌎ãã ãã®ããšã«æ§ããå°é£ãæ³åãé ãæ±ããŠããŸã£ãçç±ãä»åã® datetime åã«ã©ã åäœæå¯Ÿè±¡ãšãªã£ã2ã€ã®DB ClusterãXãšYã«ã€ããŠèª¬æããŸãã X ã¯ã·ã§ããã®æ
å ±ãååã®æ
å ±ãªã©ãæã¡ãŸãã Y ã¯å皮履æŽãªã©ãèç©ãããŠããŸãã 以äžã«èŠæš¡æãèšèŒããŸãã 察象ããŒãã«æ°ãšãã®åèšãµã€ãº ããŒãã«æ° 容é Xå
šäœ 976tables çŽ7.5TB 察象ããŒãã« 268tables 600GiB 察象ããŒãã«ã¯DB Clusterã®ããŒã¿ãµã€ãºã«ããŠå
šäœã®çŽ8% 4ããŒãã«ããã°ããã¡1ã€ã察象ãšãã圢ã ããŒãã«æ° 容é Yå
šäœ 236tables çŽ5.3TB 察象ããŒãã« 37tables 615GiB 察象ããŒãã«ã¯DB Cluster ã®ããŒã¿ãµã€ãºã«ããŠå
šäœã®çŽ11% 10ããŒãã«ããã°ããã¡1ã€ã2ã€ã察象ãšãã圢ã çµè«ãšããŠããã ãã®ããŒãã«ã«å¯ŸããŠã ãªãã¹ããµãŒãã¹ç¡åæ¢ã§ALTERæãçºè¡ãããå¿
èŠããããŸãã åæãšããŠã åœè©²ã¢ããã°ã¬ãŒãã®ã¡ã³ããã³ã¹ã¯1åã®æ·±å€ã¡ã³ããã³ã¹ã§è¡ã å
šæããŠè¡ãäºå®ã§ããããã¡ã³ããã³ã¹æéã¯5ã6æéçšåºŠãããšããªã ãšããã®ããããŸããã åœåã¯ã¡ã³ããã³ã¹æéã®äžã§åœè©²ããŒãã«ã«å¯ŸããŠdump&restoreãããªã©ãèããŸãããã å®è¡æéçã«ç¡çã ãšããããšãããããŸããã 1 ãªã³ã©ã€ã³ã¹ããŒããã§ã³ãž/ãªã³ã©ã€ã³ã¹ããŒããã€ã°ã¬ãŒã·ã§ã³ããŒã« ã¡ã³ãåœæ¥ã«ALTER TABLE or Dump/Restore + upgrade ãã¹ãŠãè¡ãããšã¯(åœç¶ã«)ç¡çããšããããšãããããŸããã ãããªãã°ã¡ã³ãåœæ¥ãŸã§ã«äºåã«äžæºåãšããŠè¡ãæ¹æ³ãèããŸããã äžæºåãšããŠããšããããšããæé»çã«ç¡åæ¢ã§ãªããã°ãªããŸããã ãµãŒãã¹ç¡åæ¢ã§ALTER TABLEçºè¡ãšãããšããããããªã³ã©ã€ã³ã¹ããŒããã§ã³ãž/ãªã³ã©ã€ã³ã¹ããŒããã€ã°ã¬ãŒã·ã§ã³ããŒã«ã«è¡ãçãã§ãããã ãããã¯ãã®æã®ããŒã«ã®å©çšçµéšããªãã£ããããã²ãšãŸã以äžãåè£ã«ãããŸããã 2 pt-online-schema-change â Percona Toolkit Documentation github/gh-ost: GitHub's Online Schema-migration Tool for MySQL çµæãšããŠããããã㯠gh-ost ãã¯ããã«æ€èšŒããç®çã«éãååã§ãããšèãããã®ãŸãŸä»åã®äœæ¥éè¡ããŒã«ãšããŠæ¡çšããŸããã 以äžã®çç±ãã gh-ost ã®æ€èšŒãåªå
ããçµæçã«ããããã®èŠä»¶çã«ã¯ gh-ost ã§ååãšããããšãããã£ããããpt-osc ã®æ€èšŒèªäœãã¹ãããããŸããã pt-oscããgh-ostãåªå
ããŠæ€èšŒåè£ã«ããçç±ã¯ä»¥äžã«ãªããŸãã pt-oscãéžã°ãªãã£ã : pt-osc ã§ã¯å
ããŒãã«ãšæ°ããŒãã«ã®åæã«ããªã¬ãŒãæ¡çšãããŠãããããªã¬ãŒå©çšã«ããè² è·ãããµãŒãã¹æäŸã«ã©ã®ããã«åœ±é¿ãäžããã®ãæžå¿µããæ€èšŒåªå
床ãäžãã gh-ostãéžãã : åŠçæéã¯é·ããªãããã§ã¯ããããDBè² è·èªäœã¯è»œããã«æãããã gh-ostãéžãã : äžçªã®æžå¿µã§ãã£ãDB Cluster Xã§binlog replicationããã§ã«éçšããŠãããããgh-ostå©çšé©æ£ãé«ãã ãããšæãããã ãããã pt-osc ã¯å®äºãŸã§ã®åŠçé床ããgh-ost ã¯å°ããªè² è·ã§ã®å®è¡(ã€ãŸããµãŒãã¹åœ±é¿ã®æå°å)ãéèŠããŠããããæããä»åã¯åŸè
ã®å²åŠãæ¯æãããã gh-ost ç°¡åã«gh-ostã®ç¹åŸŽããã³å©çšããŠã®å®æãæžããŸãã ç¹åŸŽã«ã€ããŠã¯ gh-ost/README.md at master · github/gh-ost ãèªããšããããããã§ãã è€æ°æ¹åŒãããããreplicationåŽããbinlogãååŸãããã¿ãŒã³ãæšå¥šãããŠãã å¥åããŒãã«ã«å
ããŒãã«ããããŒã¿ãæœåºããŠæ¿å
¥ãããæŽæ°åã¯binlogã§å¯Ÿå¿ãã è² è·ãé«ããªããšèªåã§throttlingãã æå®ãã¡ã€ã«ãtouchããã°ãæåã§throttlingãããããšãã§ãã ãªã«ãããã®ãšã©ãŒãçºçããŠåŠçéäžã§èœã¡ãå ŽåããŸãäœæ¥éäžã§ãã£ãå¥åããŒãã«ãåé€ããŠãæåããå®è¡ããå¿
èŠããã 1ããŒãã«ã«ãããããšãŠããã£ããåãã®ã§å¯Ÿè±¡ããŒãã«ããŒã¿éã«ãã£ãŠã¯æ¥åæéå
ã«1ããŒãã«çµãããããããªãããã å¥åããŒãã«ãšå
ããŒãã«ãåãæ¿ããåŠçãcut-overãšãããããã®æéãæå®ããããšãã§ãã(å€äžã«åãæ¿ããããæŒéã«åãæ¿ããããªãå Žåãªã©ã«æå¹) cut-over ãšããåèªãåºãŠããŸããã gh-ostã§ã¯ãALTER TABLEçšã®å¥åããŒãã«ã察象ããŒãã«ã«å€åãæ¬çªéçšãžãšåãæ¿ãããããšããããŸãã gh-ost/doc/cut-over.md at master · github/gh-ost å©çšããŠãã宿ã§ã¯ cut-over ã«è³ããŸã§ã¯ãŸã£ããåé¡ãèµ·ããŸããã§ããã æç€ºçãªåé¡ãšããŠ1åã ãçºçããã®ã¯ cut-over ã¿ã€ãã³ã°ãšæŽæ°ã¿ã€ãã³ã°ãåã¿åã£ããšãã«ã cut-over ãæ¢ãŸã£ãŠããŸããšããçŸè±¡ã§ããã äžåºŠgh-ostã®åŠçããšããæ°ãã«ããçŽãã ãã§è§£æ¶ããã®ã§ã cut-over éè¿ã®ã¿ã€ãã³ã°ã ãæ°ã«ããŠããã°ããããšãã圢ã§ä»¥åŸã®äœæ¥ãããããããšãã§ããŸããã gh-ost ã®å¥œããªãšãã å人çã« gh-ost ã§æ°ã«å
¥ã£ããšãããæžããŠãããŸãããã sock fileãçµç±ããããšã§å¯Ÿè©±åŒã«ã³ãã³ãå®è¡ãå¯èœ gh-ost/doc/interactive-commands.md at master · github/gh-ost 鲿ã¹ããŒã¿ã¹ã確èªã§ãã ã³ãã³ãå®è¡äžã«ãã©ã¡ãŒã¿ãåçã«å€æŽã§ãã ç¹å®ãã¡ã€ã«ã®èšçœ®ã§åŠçãæ«å®åæ¢ããããšãã§ãã åŠçãé
ãã®ã ããæ¬ ç¹ãå®éçšãžã®å¯äœçšããŸã£ãããšãã£ãŠããã»ã©ãªã ãšããæãã§ãã æçµçã«ã¯ã»ãšãã©æŸçœ®ããŠãäžæ¥ã®çµããã«é²æç¶æ³ã確èªããçšåºŠã«ãªããŸããã éçšäœæ¥è
(ã²ããŠã¯ãµãŒãã¹)ã«åªããããŒã«ã ãªãšæããŸããã åè : å®éã®äœæ¥ã¹ã±ãžã¥ãŒã« åœåã¯æ¬çªäœæ¥æã«ã©ã®ãããªåœ±é¿ãã§ããããããªãã£ããããéçºé£ã«å¯Ÿè±¡ããŒãã«ã®ãªã¹ããšALTER TABLEå®è¡ã¹ã±ãžã¥ãŒã«ãå
±æããããããŸããã ããŸããã£ãŠã08æäžæ¬ãã09ææ«ããããããã®ã§ã¯ãªãããšäžå®ã§ããããgh-ostã®ãããã§08/08ã08/26ãšããæ³å®ãããçãæéã§çµããããšãã§ããŸããã ããŒã¿ç·éãäœæ¥æéãå·Šå³ããåŸåãã¿ããããããèŠç©ããã®ãã以äžã®ãããªã¯ãšãªã§ããŒãã«ããšã®ããŒã¿ã®äžèЧãåºããŠããŸãã total_size ãäž»ã«èŠãŠå®è¡æéã®èŠç©ãããè¡ã£ãŠããŸããã SELECT table_schema, table_name, data_length AS `data_size`, index_length AS `index_size`, (data_length + index_length) AS `total_size`, table_comment AS ` comment ` FROM information_schema.TABLES WHERE table_schema != ' sys ' AND table_schema != ' information_schema ' AND table_schema != ' performance_schema ' GROUP BY table_schema, TABLE_NAME ORDER BY total_size DESC ; 泚æç¹1 ä»åAurora v2 -> v3 ãžã®ã¢ããã°ã¬ãŒãã ã£ããããgh-ost ã®ããŒãžã§ã³ã¯ v1.1.5 ãæ¡çšããŠããŸãã æ³šæç¹2 第140åããªã³ã©ã€ã³ã¹ããŒããã€ã°ã¬ãŒã·ã§ã³ããŒã« gh-ostã䜿ã£ãŠã¿ãããã®3 | gihyo.jp ã«ã¯ä»¥äžã®ãããªèšè¿°ããããŸãã ãŠããŒã¯ããŒã®è¿œå gh-ostã䜿çšããŠããŠããŒã¯ããŒã远å ããããšã¯å¯èœã§ãã ãããããŠããŒã¯ããŒã远å ããã«ã©ã ã®å€ãäºåã«ãŠããŒã¯ãªå€ã«ãªã£ãŠããããšã確èªããŠããå®è¡ããªããšã ããŒã¿ããªããªã£ãŠããŸãæãããããŸãã ããããã®ä»åã®äœæ¥ã«ãããŠã¯é¢ä¿ããªãã£ããã®ã§ããããã®èšäºããèå³ããã£ãŠå©çšãããæ¹ã«ãããŠã¯ãçšéã«ãã£ãŠã¯æ°ã«ããŠããã ãããå
容ã§ãããããããã«åŒçšããŸãã åèURL ä»åã®ã¿ã¹ã¯ã§ã¯ä»¥äžã®Documentãåèã«ããŸãã MySQL å
šè¬ã«ã€ã㊠MySQL :: MySQL 8.0: Removing support for old temporal datatypes gh-ost ã«ã€ã㊠gh-ost/README.md at master · github/gh-ost 第138åããªã³ã©ã€ã³ã¹ããŒããã€ã°ã¬ãŒã·ã§ã³ããŒã« gh-ostã䜿ã£ãŠã¿ãããã®1 | gihyo.jp 第139åããªã³ã©ã€ã³ã¹ããŒããã€ã°ã¬ãŒã·ã§ã³ããŒã« gh-ostã䜿ã£ãŠã¿ãããã®2 | gihyo.jp 第140åããªã³ã©ã€ã³ã¹ããŒããã€ã°ã¬ãŒã·ã§ã³ããŒã« gh-ostã䜿ã£ãŠã¿ãããã®3 | gihyo.jp ãMySQLãgh-ostã調ã¹ã - å°æ¹ãšã³ãžãã¢ã®åŠç¿æ¥èš ãMySQLãgh-ostã§ãªã³ã©ã€ã³ãã€ã°ã¬ãŒã·ã§ã³ #Docker - Qiita Runtime error when trying to ALTER a table without PRIMARY KEY / UNIQUE KEY · Issue #332 · github/gh-ost pt-osc ã«ã€ã㊠pt-online-schema-change â Percona Toolkit Documentation pt-online-schema-changeã®å°å
¥æã«æ€èšããããšãããã³Railsã¢ããªãšã®äœµçšã«ã€ã㊠- freee Developers Hub Percona瀟ã®gh-ostãã³ãããŒã¯ãªã© Using gh-ost with Amazon Aurora for MySQL Gh-ost benchmark against pt-online-schema-change performance spirit ãšããããŒã«ããã£ãããv2(5.7ç³»)ã ãšå©çšãé£ãããã ã£ã MySQL ãªã³ã©ã€ã³ã¹ããŒã倿ŽããŒã«ã® spirit ãš gh-ost - Please Sleep BASEã§ã¯éæã¡ã³ããŒãåéããŠããŸãã 2024.10çŸåšãç§ã®æå±ããSRE Groupã®åéã¯ãªãããã§ãããèå³ãæãããèªè
諞æ°ã«ããããŸããŠã¯ã以äžãªã³ã¯å
ãã芧ããã ããã°å¹žãã§ãã æ¡çšæ
å ± | BASE, Inc. - BASE, Inc. æ€èšŒã§ã¯dumpã ãã§æ³å®ã¡ã³ããã³ã¹æéããã¹ãŠæ¶è²»ããŠããŸãããšãããããŸãã ↩ ããŒã å
ã«ãããããŒã«ã®æ€èšŒç®çã®éå»Issuesãç«ã£ãŠãããã ↩
æ°ããæ¹ãåãå
¥ããåŽã®ãã€ã³ãã»ããã§ãã ã¯ããã« BASE ã® Product Dev Division ã§ã·ãã¢ãšã³ãžãã¢ãããŠããããã°ã©ãã³ã°ããããã³ãïŒ @Panda_Program ïŒã§ãã å
¥ç€ŸãããŠ3ã¶æç®ã§åãããŒã ã§åããŠãã Torata ãããã å
¥ç€ŸããŠæããBASEã®ãããªãšæããšãã ããšããå
¥ç€Ÿãšã³ããªãæžããŠãããã®ã§ãæ°å
¥ç€Ÿå¡ãåãå
¥ããåŽããã®ã¢ã³ãµãŒèšäºã§ãã 以äžã¯BASE瀟å
ã®äººãªã誰ã§ãèªãããšãã§ããææžã§ãç¹ã«ããããã¡ã³ã¿ãŒã«ãªã人ã«ã¯èªãã§è²°ã£ãŠãããã®ã§ããèªåãåãå
¥ãåŽãšããŠæ°ã¶æéç¹ã«æèããŠãããæå¿ãããã£ãããšãæžãæ®ããŠããŸãã ããæ°ã¶æã®éããããŒãžã£ãŒãšå
±ã«ãªã³ããŒãã£ã³ã°ã®äœéšãè³æã®å
šé¢çãªèŠçŽããè¡ããæ°å
¥ç€Ÿå¡ãšã¡ã³ã¿ãŒã®ãªã³ããŒãã£ã³ã°äœéšãæ¹åããŸããããã®æç« èªäœãåãããããã®ã§ã¯ãªããããããã¡ã³ã¿ãŒã¯ããããããšãå¿ãããŠãããããšæ°ããäœã£ããã®ã§ãã 以äžã®å
容ã¯BASE瀟ã§ã®åãå
¥ããæ³å®ããŠããŸãããä»ã®äŒç€Ÿã§ãïŒãšã³ãžãã¢ãšããè·çš®ä»¥å€ã§ãïŒæŽ»ãããå
容ã ãšæããŸããããããæ°ããæ¹ãåãå
¥ããã«ããã£ãŠã©ãæ¥ãããããã®ãããããªããšããæ¹ãããã®æç« ãéããŠäœããæŽããã幞ãã§ãã çžæãç¥ãã ããã¯äžçªéèŠã§ããçŸåšãBASEã§æ¡çšããŠãããšã³ãžãã¢ã¯å®åçµéšè
ã®æ¹ãã¡ã€ã³ã ããã§ãã ããããééãã¯ãçžæãäœãç¥ããªããšåéãããŠäžããå
šéšæããããšããããšã§ããçžæãçµéšè
ãªã®ã§äžããæããŠãããå¿
èŠã¯ãããŸãããã§ã¯äœãæããã°ããã®ã§ãããããããã¯æ°å
¥ç€Ÿå¡ã®äººãæã£ãŠããç¥èã®ãã¡ãã¡ã³ã¿ãŒããèŠãŠäžè¶³ããŠããéšåã ãã§ãã ã¡ã³ã¿ãŒããŸãããã¹ãããšã¯ãæ°ããå
¥ç€Ÿãããæ¹ã®ãããŸã§ã®çµéšãæ·±ãç¥ãããšã§ããã¡ã³ã¿ãŒã¯ããŒã ã¡ã³ããŒã®èª°ãããæ°ããå
¥ç€Ÿãããæ¹ã®ããã¯ã°ã©ãŠã³ããçè§£ããŸãããã åè·ã§ã¯ã©ã®ãããªæ¥åãæ
åœããŠããã®ããåè·ã®äŒç€Ÿã®é°å²æ°ã¯ã©ã®ãããªãã®ã§ãã£ãã®ããã©ã®ãããªããšã«èå³ãæã£ãŠããŠãã©ã®ãããªããšãèŠæãªã®ãããããã®ããšãç¥ã£ãŠãããšèªç¶ãšçžæãžã®åãåãæ¹ãå€ãããŸããçžæã®è¯ããšãããèªåã«ãªãéšåãç¥ãããšã¯çžæãžã®ãªã¹ãã¯ãã«ã€ãªãããŸãã BASEã§ã¯ããã ãšæŒãä»ããã®ã§ã¯ãããŸãããçžæã®éå»ã®çµéšãç¥ããBASEãšã®å
±éç¹ãçžéç¹ãæç€ºããŸãããããããšçžæã¯äžããå
šéšç¥ãã³ã¹ããæãå¿
èŠã¯ãªããå
±éç¹ãå·®åãåŠã¶ã ãã§æžã¿ãŸããã¡ã³ã¿ãŒãããŠãã§ã¯ããã ããšæŒãä»ããã®ã§ã¯ãªãã転è·è
ãèªåã®éå»ã®çµéšã«åºã¥ããŠãæ°ããäŒç€Ÿãšä»ãŸã§ã®äŒç€Ÿãšã®å
±éç¹ãçžéç¹ã«ãã©ãŒã«ã¹ããæ¹ãã¹ã ãŒãºã§ããçµæçã«çµç¹ãã«ã«ãã£ãŒãžã®é©å¿ãæ©ããªãã§ãããã èªåãé瀺ããã æ°ããå
¥ç€Ÿãããæ¹ã¯ããããã®è³ªåãåããããšã§ããããããããçžæã®ããšãèãã°ããã§ã¯ãããŸãããèªåã¯ã©ããã人éããäŒç€ŸãããŒã ã§åããŠãã人ã¯ã©ããã人ãã¡ãªã®ããäŒããããšãéèŠã§ãã èªåã®çµéšãçžæã«äŒããŸããããèªåã¯äœãåŸæã§ããªããã®äŒç€Ÿã§åããŠããã®ãããªã³ããŒãã£ã³ã°æéã¯ãæ®æ®µäŒç€Ÿã§ã¯ããŸã話ãããšã®ãªããèªåã倧åã«ããŠãã䟡å€èгã«ã€ããŠè©±ãããã¿ã€ãã³ã°ã§ãããããéããšãªããªãããã話ãã¿ã€ãã³ã°ã¯ãããŸããã ã¡ã³ã¿ãŒãšã¡ã³ãã£ãŒã®äžå¯Ÿäžã«éãããæ°å
¥ç€Ÿå¡ã®æ¹ãæå±ããããŒã ã®ã¿ããªã§èªåãã¡ã®å€§äºã«ããŠãã䟡å€èгã«ã€ããŠæ¹ããŠè©±ãæ©äŒãèšããããšã«ãããã¡ã³ããŒã®ç¥ããªãã£ãäžé¢ãèŠãããããããŸãããããããã°ãããŒã ã®çµæã¯ããã«åŒ·ãŸãã§ãããã ãªã³ããŒãã£ã³ã°ãšããæ©äŒã掻çšããŠæ¢åã®ããŒã ãåãã«ãã£ã³ã°ãããšãã¡ã³ããŒå士ãä»ãããã£ãšäºãã«ãªã¹ãã¯ããéãåãããã匷ãããŒã ã«ãªããŸãã ããã¥ã¡ã³ãã¯æž¡ãã ãã§ã¯ãªããçžæã®ç解床ã«åãããŠé©å®äžç·ã«èªãããå£é ã§è§£èª¬ã»è£è¶³ãããã ãªã³ããŒãã£ã³ã°ã§æåã«ããããšã®äžã€ã¯ãèªåãã¡ãéçºããŠãããããã¯ããå®éã«è§Šã£ãŠã¿ãããšã§ãããã®éãã¡ã³ã¿ãŒã¯æ°å
¥ç€Ÿå¡ãäžäººããã«ããªãã§ãããŠãã ããã äžè¬çã«ãäœããŠã§ããµã€ãããœãããŠã§ã¢ãè§Šããšãã«ãã®è£åŽã¯ã©ããªã£ãŠãããã ãããšæ°ã«ãªããšããã®ããšã³ãžãã¢ã®æ§ïŒããïŒã§ããæ°ããå
¥ã£ãæ¹ã¯ãããããèªåãéçºããŠããããšã«ãªããããã¯ãã«èªç¶ãšèå³ãšçåãæã¡ãŸãã èå³ããåºãææ³ãçåã«å¯ŸããŠã¡ã³ã¿ãŒãã·ã¹ãã ã®è£åŽã解説ããããããã¯ã¡ãã£ãšãããŠãªããšãããªãã ãããšå
±æããããšã¿ã€ã ãªãŒã«çããããšã§ãã¡ã³ãã£ãŒã®ç¥èã®å®ç床ã¯ä¿ç¶ã¢ããããŸãã人ã¯çåãæã£ãæãäžçªç¥èãåžåã§ããããã§ãããŸãããã®ããã«çžæã«å¯ãæ·»ã£ãè¡åã®ç©ã¿éãããäºãã®ä¿¡é Œé¢ä¿ãæ§ç¯ããããšã«ç¹ãããŸãã ãœãããŠã§ã¢ã«éããããã¥ã¡ã³ããåæ§ã§ããäžäººã§ãã èªãã ãã§ã¯çè§£ã§ããªãããšããã¡ã³ã¿ãŒãšäžç·ã«èªã¿ãªããé©å®å£é ã§è£è¶³ã解説ã亀ããŠããããšã¡ã³ãã£ãŒã¯æ·±ãçè§£ããããšãã§ããŸãã ãã®æãèªåã§è§£èª¬ãå§ãããBASEã®äºæ
ãäžæ¹çã«äŒããã ãã§ã¯ãªããããã®äžã§ã©ã®éšåãããããªãã§ããããããªãã®åã®äŒç€Ÿã§ã¯ã©ãã§ãããããšãŸã質åãããŠè©±ãèããŠãããŸãããããããããã¡ã®äŒç€Ÿã§ã¯ããã¯éããŸãããããã¯åãã§ãããšããäŒè©±ãåºããŠãããŸãããã ãçžæãç¥ãããã£ã³ã¹ã¯ã©ãã«ã§ã転ãã£ãŠããŸãã ãããã« å°ã倧è¢è£ã§ãããã¡ã³ã¿ãŒãšãªãããªãã®å°è±¡ãBASEã®ç€Ÿå¡å
šäœã®å°è±¡ã決ãããšèšã£ãŠãéèšã§ã¯ãããŸãããããçžæã幎äžã ã£ããèªåããçµéšãæµ
ããŠããçžæãžã®ãªã¹ãã¯ããå¿ããçæ¯ã«åãåããŸãããã ãªããæåå³åã§ããç§ã®é
ä¿¡ããŠããã©ãžãªã³ã³ãã³ãããèãããã ãããšããªã³ããŒãã£ã³ã°ã«å¯ŸããŠããã«ã€ã¡ãŒãžãæ¹§ãããªãšæããŸãã ãã¡ãã¯ããªã³ããŒãã£ã³ã°ããŠãããåŽç¹æã®çŠããããã倱æãªã©ã«ã€ããŠè©±ããŠããŸãããªã³ããŒãã£ã³ã°ãããåŽã®æ°æã¡ãå°ãã§ãæãåºããã£ããã«ãªãããšæããŸãã BASEã§ã¯ãœãããŠã§ã¢ãšã³ãžãã¢ãåéããŠããŸãããã²æ¡çšæ
å ±ããŒãžãã芧ãã ããã æ¡çšæ
å ± | BASE, Inc. - BASE, Inc.
ã¯ããã« BASE BANK Division ã§ ãšã³ãžã㢠ãããŠãã岩æ¬ãšç³ããŸãïŒ YELL BANK ã®éçºãæ
åœããŠããŸãã 2024幎5æã«BASEãžjoinããŠæ©ããã®ã§5ã¶æã»ã©ãçµã¡ãŸããã joinããŠããããã€ãã®ãããžã§ã¯ããæ
åœããŠããŸããã æ¹ããŠèãããšãªã³ããŒãã£ã³ã°ããšãŠãå
å®ããŠãããããã§åæ»ã«ãããžã§ã¯ãã«å
¥ã£ãŠãããã®ã ãªããšæããŸãã ããã§ããªã³ããŒãã£ã³ã°ãäžå¿ã«ãããŸã§ã®5ã¶æãæ¯ãè¿ãã€ã€ãããŒã ãæ°èŠã¡ã³ããŒã®ãã£ããã¢ããã«åããŠãã©ã®ãããªåãçµã¿ãè¡ã£ãŠãããã玹ä»ãããŠé ãããšæããŸãïŒïŒ åçœ®ã æ¬é¡ã«å
¥ãåã«å眮ãã§ãã ç§ã®æ®æ®µã®æ¥åãã€ã¡ãŒãžããããããã«äœå¶ã圹å²ãåçš®ç°å¢ã«ã€ããŠãäŒãããŸãïŒ äœå¶ ãŸãã¯äœå¶ã§ãã ç§ã®æ
åœãã YELL BANK ã§ãããjoinãã5ææç¹ã§ã¯ä»¥äžã®ãããª3åäœå¶ã§éçºããŠããŸããã EPMïŒEngineering Program Managerã®ããšã§ãã ãã¡ã ããåèãã ãããïŒ ãšã³ãžãã¢2åïŒå
1人ãç§ïŒ 7æä»¥éã¯ä»¥äžã®äœå¶ã«ç§»è¡ããŠããŸãã EPM ãšã³ãžãã¢1åïŒç§ïŒ åœ¹å² æ¬¡ã«åœ¹å²ã§ãã ç§ã¯ãšã³ãžãã¢ã§ãããBASE BANKã§ã¯ããã«ãµã€ã¯ã«ãšã³ãžãã¢ããšãã圹å²ãæ±ããããŸãã ãã«ãµã€ã¯ã«ãšã³ãžãã¢ã«ã€ããŠã®èšäºã¯éå»ã«Group Managerã®æŸéªãã( @applepine1125 )ãæžãã ãã¡ã ããåèãã ããã ãã®ãããäŒç»ã»èŠä»¶å®çŸ©ãä¿å®éçšã»ããŒã¿åææ¯æŽçãŸã§å¹
åºã察å¿ããããšãå¿
èŠã«ãªããŸãã ããã«ãããéçºããŒã ã ãã§ãªããPdMããã¶ã€ããŒãPMMãšãã£ãè·èœã®ã¡ã³ããŒãšãé »ç¹ã«ã³ãã¥ãã±ãŒã·ã§ã³ãçºçããŸãã äœæçã«ã¯éçºããŒã ïŒ7ãPdMã»PMMã»ãã¶ã€ããŒïŒ3ãããã®å²åã§ã³ãã¥ãã±ãŒã·ã§ã³ããŠããŸãã åºç€Ÿé »åºŠ ã³ãã¥ãã±ãŒã·ã§ã³ã«é¢é£ãã話ã§ãããçŸç¶ãBASE BANKã®éçºããŒã ã§ã¯é±1ïŒæ¯é±æšæïŒã«åºç€Ÿæ¥ãèšãããã®ä»ã¯ãªã¢ãŒãã¯ãŒã¯ã§ãã éçºç°å¢ æåŸã«ã¢ãŒããã¯ãã£åšãã®ã話ã§ãã ç§ã®æ
åœãã YELL BANK ã®éçºæ¥åã«ãããŠã¯ä»¥äžã®å³ã®äžåŽã«ããBASEã®ãµãŒãã¹ãšäžåŽã«ããBASE BANKã®ãµãŒãã¹çŸ€ãå®è£
ããŠãããŸãã ã芧ã®éããããã³ããšã³ãã¯TypescriptïŒVue.jsïŒãããã¯ãšã³ãã¯PHPãGoãPythonãšãã圢ã§è€æ°ã®èšèªã§éçºããŠããŸãã ãŸããã€ã³ãã©ã¯äž»ã«AWSã䜿çšããŠãããIaCã§ã¯terraformã䜿çšããŠããŸãã æ¬é¡ å眮ããå°ã
é·ããªããŸããããããããæ¬é¡ã§ãã ç§ã广ãæããåãçµã¿ãªã©ã5ã€ç޹ä»ãããŠé ããŸãïŒïŒ ãã®1ããªã³ããŒãã£ã³ã°ã¯ãšã¹ã BASE BANKããŒã ã§ã¯ãªã³ããŒãã£ã³ã°ã¯ãšã¹ããçšæããŠããŸãã 以äžã¯Notionã§äœæãããªã³ããŒãã£ã³ã°ã¯ãšã¹ãã®TOPããŒãžã«ãªããŸãïŒ æ°èŠã¡ã³ããŒã¯ãŸãã¯ãšã¹ãã«æ²¿ã£ãŠéçºç°å¢æ§ç¯çã®åçš®ã»ããã¢ãããããŠãããŸãã ããã«éçºç°å¢æ§ç¯ã ãã§ãªãããããã¯ãã®èª¬æãåããããå®éã«è§Šã£ãããšãã£ãç ä¿®ãè¡ããŸãã ãªã³ããŒãã£ã³ã°äžã¯ã¡ã³ã¿ãŒã1人ä»ããŸãããã¯ãšã¹ãã®äžã§PdMããã¶ã€ããŒãšãã£ãä»ã®è·èœã®ã¡ã³ããŒãšãæ¥ããŸãã ãã«ãµã€ã¯ã«ãšã³ãžãã¢ãšããŠã¯ã³ãŒããæžãããšããã ãã§ã¯äžååã§ãã ãã®ããããããã¯ãã®ç ä¿®ããã£ãããä»ã®è·èœã®ã¡ã³ããŒãšã³ãã¥ãã±ãŒã·ã§ã³ã§ããæ©äŒããã£ãã®ã¯æ¥åãé²ããã®ã«å€§å€å©ãããŸããïŒ ãŸããã¯ãšã¹ãã§ã¯ãªã³ããŒãã£ã³ã°ã¿ã¹ã¯ãšãããã®ãçšæããŠããŸãã ç°¡åãã€æ¥åã1ãµã€ã¯ã«åãããšãã£ãæåã®ãã£ããã¢ããã«ã¡ããã©ããã¿ã¹ã¯ã®ããšã§ãã ç§ã®å Žåãifæãå°ãä¿®æ£ããã°OKãªç°¡åãªã³ãŒãä¿®æ£ãšãããããããã€ãããšããã¿ã¹ã¯ã§ããã ããã«ããäžéãã®éçºã®æµããææ¡ã§ããŸããã ã¯ãšã¹ãã¯ãªã³ããŒãã£ã³ã°ãçµäºãããã³ã«æ¯ãè¿ããããŠæ¹åãéããŠããŸãã ãã®2ããªã³ããŒãã£ã³ã°æéäžã¯æ¯æ¥åºç€Ÿ ãªã³ããŒãã£ã³ã°æéã¯1ã2é±éã§ãã ãã®éãåºæ¬çã«ã¯æ°èŠã¡ã³ããŒãã¡ã³ã¿ãŒãæ¯æ¥åºç€ŸããŸãã ãã®ãããããã«ã¡ã³ã¿ãŒãä»ã®ã¡ã³ããŒã«è³ªåããããšãã§ããŸãã 察é¢ãªã®ã§ãè§£æ±ºãæ©ãã§ãã ãã以äžã«ã¡ã³ããŒãšã®ä¿¡é Œé¢ä¿ãããªãæ©ãæ§ç¯ã§ãããšããã¡ãªãããæããŸãã ãªã¢ãŒãã®å Žåãã³ãã¥ãã±ãŒã·ã§ã³éãå°ãªããªãåŸåããããããåºç€Ÿã«ãã察é¢ã®ã³ãã¥ãã±ãŒã·ã§ã³ã§ã¬ã¯ãã£ãŒãåããããããšã§ã·ã¹ãã ããããã¯ãã®ã€ã³ãããéã»è³ªãäžãããŸããã 仿¯ãè¿ã£ãŠã¿ãŠãæåã«åºç€ŸããŠããããšã§ãªã³ããŒãã£ã³ã°åŸã®æ¥åãåæ»ã«é²ããããšãã§ããŸããã ãŸããå
¥ç€Ÿåã»çŽåŸã«ã³ãã¥ãã±ãŒã·ã§ã³ã«äžå®ãæããæ¹ã¯å€ããšã¯æããŸãããBASEã§ã¯æ©æã«ãã®ãããªäžå®ãè§£æ¶ããããšãã§ããŸããïŒ ãã¡ãªãããšããŠéå€ã®è² è·ã¯ãããŸãããããããè¶
ããã¡ãªããã享åã§ãããšæããŠããŸãïŒ å眮ãã§ãèšèŒããéãããªã³ããŒãã£ã³ã°çµäºåŸã¯é±1ïŒæ¯é±æšæïŒã§åºç€ŸããŠããŸãã ãã®3ãããã¥ã¡ã³ãæå ãªã³ããŒãã£ã³ã°çµäºåŸãããæ¬æ Œçãªæ¥åã«å
¥ãããã§ããããŸã ãŸã åãããªãããšã¯ãããããããŸãã BASE BANKã«ã¯ããã¥ã¡ã³ããæ®ãæåããããŸãã åãããªãããšãããã°NotionãREADMEãèŠãã°çãã«èŸ¿ãçãããšãå€ãã§ããããããã¯ãªã«ãããã®ãã³ããããããšãå€ãã§ãã æ¥åããŠãããšå€§æµãã©ã®ã¡ã³ããŒãåãããšã§å°ããã¿ãŒã³ãå€ãã®ã§ããããªãšãã®ããã«ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããŸãšããããã¥ã¡ã³ããååšããŸãã å人çã«ã¯ãªã³ããŒãã£ã³ã°çŽåŸã¯ãã®ããã¥ã¡ã³ãã«å€§å€å©ããããŸããã 以äžã¯ãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã¥ã¡ã³ããäžéšæç²ãããã®ã§ãã ãã®4ãã¡ã³ã¿ãŒã©ã³ã BASEã«ã¯ã¡ã³ã¿ãŒã©ã³ããšããå¶åºŠããããŸãã å
¥ç€ŸåŸãäž»ã«æ¥åã§é¢ããã¡ã³ããŒãšã©ã³ããããšãããã®ã§ãã è²»çšã¯äŒç€Ÿè² æ
ã§ãã ãã®å¶åºŠã«ãããèªåã§æ©äŒãèšãããšãä»çµã¿ã§ã³ãã¥ãã±ãŒã·ã§ã³ã®æ©äŒãèšããããšãã§ããŸãã ãããžã§ã¯ãéå§åã«ãšã³ãžãã¢ä»¥å€ã®è·èœã®ã¡ã³ããŒãšãã話ã§ããããšã§ããããããžã§ã¯ããé²ãããšãããšãã«ãããããã£ãã®ãèŠããŠããŸãã ãã®5ãæ¯ãè¿ãæå BASE BANKã§ã¯ã¹ããªã³ãããšã«ãæ¯ãè¿ãããŸãããããããã®ãããžã§ã¯ãåŸã«ãæ¯ãè¿ããããæåããããŸãã ãããžã§ã¯ãã®æ¯ãè¿ãã¯è·èœæšªæçã«ãã®ãããžã§ã¯ãã«é¢ãã£ãã¡ã³ããŒå
šå¡ãåå ããŸãã ç§å人ãšããŠã¯æ¯ãè¿ãã®å Žã¯ãããã¯ããç¥ãæ©äŒã§ãããã人ãç¥ãæ©äŒã§ããããŸãã ãã®äººã®è·èœãçµéšã«ãã£ãŠè²ã
ãªæèŠãåºãŸãã ãããŠèªåãæèŠãåºããŸãã æèŠãåºããšããããšã¯ãããžã§ã¯ãããããã¯ãã«ã€ããŠãåžžã«èœåçã«èããŠããå¿
èŠããããŸãã æ¯ãè¿ãæåã®ãããã§èªç¶ãšãã®ãããªèãã«ãªã£ãŠããããã«æããŸãã ã€ãŸããèªç¶ãšãæ©ããã£ããã¢ããããªããããšããæ°æã¡ã«ãªããŸãã ãŸãšã æ¹ããŠãããŸã§ã®4ã¶æãæ¯ãè¿ã£ãŠã¿ãŸããã æ¯ãè¿ã£ãŠã¿ããšåæ»ãªã³ãã¥ãã±ãŒã·ã§ã³ãšãããšããã«BASE BANKã®åŒ·ã¿ãããã®ã ãšæããŸãã ãããŠãããã«ããããŒã ãã¬ã€ã«åŒ·ã¿ãããã®ã ãšæããŸãã ç§èªèº«ã¯ãŸã ãŸã å
šè¬çã«ç¥èãäžè¶³ããŠããã®ã§ãããŒã ååäžã«å¯äžã§ããããã«éé²ããŸãã ãããã« BASE BANKã§ã¯ãã£ããã«åã仲éã倧åéããŠãããŸãïŒ ãã«ãµã€ã¯ã«ãšã³ãžãã¢ãšãã圹å²ã«èå³ããããšããæ¹ã¯ãŸãã¯ã«ãžã¥ã¢ã«é¢è«ããã§ããå¿åé ãããšããããã§ãïŒ âã®æ¡çšããŒãžã®åéè·çš®äžèЧãããBASE BANKããŒã ã§6.éèãµãŒãã¹ïŒBASE BANKããŒã ïŒãéžæé ããŠã«ãžã¥ã¢ã«é¢è«ã«ãå¿åã§ããŸãïŒ binc.jp