ããã«ã¡ã¯ïŒ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
ããã«ã¡ã¯ïŒ BASE BANKã§ãã æè¿ã¯å€§ããªã«ã³ãã¡ã¬ã³ã¹ã ãã§ãªãæ§ã
ãªã³ãã¥ããã£ã®ãªãã©ã€ã³ã€ãã³ããå¢ãããã€ãŠä»¥äžã®æŽ»æ°ã§æº¢ããŠãããªãšæããŠããŸãã æã
BASE瀟ã倧å°ããŸããŸãªã«ã³ãã¡ã¬ã³ã¹ãã€ãã³ãã«ã¹ãã³ãµãŒããããŠããã ããŠãããŸãããä»åã¯BASE BANKãšããŠããã£ãšã¹ãã³ãµãŒã®é »åºŠããããŠãããïŒã¹ãã³ãµãŒãããŠãã ããïŒãšããå
容ã®èšäºã§ãã BASE BANKã£ãŠ? ã¹ãã³ãµãŒã®çç±ãã€ãã³ããšã®ãããã³ã°ã®ããã«ããŸãã¯è»œãBASE BANKã«ã€ããŠèªå·±ç޹ä»ãããŠãã ããã BASE BANKã¯BASE瀟ã®1äºæ¥éšã§ãã ãéè¡ãããããã«ããå
šãŠã®äººãææŠã§ããäžã®äžã«ããšããããã·ã§ã³ãæ²ããå人ãã¹ã¢ãŒã«ããŒã ã®è³éç¹°ãã«é¢ãã課é¡è§£æ±ºãè¡ã£ãŠããŸãã https://speakerdeck.com/base/basebank çŸåšããBASEãã®ã·ã§ãããªãŒããŒåãã«ã¯ããYELL BANKãããBASEã«ãŒãããããæ¥ãæ¯èŸŒ(æ¯èŸŒç³è«)ãã®3ã€ãæäŸããŠãããã°ã«ãŒãäŒç€Ÿã®PAY.JPãšåæ¥ããPAY.JP YELL BANKããšããŠãBASEã以å€ã®ãã©ãããã©ãŒã ãžãåºãäŸ¡å€æäŸããå§ãããšããã§ãïŒ 8æã«å
¬éããIRè³æããããããããã«ããããããããšã«ãYELL BANKããçé ã«åãããã¯ãããã¡ããã¡ãé 調ã«ã°ããŒã¹ããŠããŸãã ãããããã£ãšBASEã°ã«ãŒãå
šäœããªãŒãã§ãããããªäºæ¥éšãžãšæé·ããŠããããã«ãçŸäºæ¥ã®ã°ããŒã¹ãšæ°èŠäºæ¥ã®åµåºã®2軞ããã«ã¢ã¯ã»ã«ã§æšé²ããŠããŸãã https://contents.xj-storage.jp/xcontents/AS08546/360b2858/87ab/484c/9da2/062c0fb17663/140120240806563776.pdf çŸåšããšã³ãžãã¢ãšBizdevãäºæ¥äŒç»ã®ããžã·ã§ã³ããªãŒãã³ããŠããŸãããç¹ã«ãšã³ãžãã¢ãç©æ¥µå€§åéäžã§ãïŒ https://open.talentio.com/r/1/c/binc/homes/4380?group_ids=9203 ãªãã§ã¹ãã³ãµãŒãããã®? ã¹ãã³ãµãŒãããŠããããçç±ã®ïŒã€ã¯äºæ¥éšã®èªç¥åºŠåäžã®ããã§ãã BASE瀟ãšããŠã¯ããããããããšã«ãããŸã§ã®ã¹ãã³ãµãŒã®ç©ã¿éããCMãªã©ãéããŠèªç¥ããŠãã ãã£ãŠããæ¹ãå€ãããã£ããããŸãã ãããBASE BANKãšããäºæ¥éšãšããŠã¯ãŸã ãŸã èªç¥åºŠã«äŒžã³ããããããâBASEã£ãŠECã ããããªããã§ããïŒâãšã¹ã«ãŠããã€ãã³ããªã©ã§åããŠç¥ã£ãŠããã ãæ©äŒããŸã ãŸã å€ãã§ãã äžã«ãæžããããã«ããããªãæäŸäŸ¡å€ãæäŸé¡§å®¢ã®æ¡å€§ã®ããã«çŸåšãã«ã¢ã¯ã»ã«ã§äºæ¥ãšçµç¹ã®å¢åŒ·ããããªã£ãŠãããšããã§ããããŸã ãŸã 仲éãè¶³ããŸããã ãã¡ããã¡ããããããããšãã£ãŠãäºæ¥éšããããïŒãã£ãŠããããããšã®ããã«ãŸã ãŸã 仲éãå¿
èŠã ãïŒãšããã¢ããŒã«ã®å Žãå¢ãããŠãããããšèããŠããã®ã1ã€ç®ã®çç±ã§ãã çç±ã®2ã€ç®ãšããŠãã³ãã¥ããã£ã®çºå±ããµããŒãããŠãããããšããæãããããŸãã ã³ãã¥ããã£ãã€ãã³ãã®ååšãæ¥ã
ã®ãã¬ã³ããã£ããã¢ãããã¢ãŠããããã®èµ·ç¹ã«ããªããããã«ãããéããâãããã€ãªããâãçãŸããããšã§äŒç€Ÿã®çµç¹æåãèŠçŽãããæ©äŒã«ãã€ãªãã£ããããŸãã æã
ããããã£ãã³ãã¥ããã£ã®æ©æµãåããŠããããšããããäŒç€ŸãšããŠãæããæ§ã
ãªã³ãã¥ããã£ãžã¹ãã³ãµãŒãšããŠåŸ®åãªããå¿æŽããããŠããã ããŠããŸããã ãããŸã§ã¯PHP ConferenceãGo Conferenceãªã©ãæ¯èŒç倧ããªã€ãã³ããã³ãã¥ããã£ãžã®ã¹ãã³ãµãŒãã¡ã€ã³ã§ãããããã现ããç¶ç¶çã«BASE BANKãç¥ã£ãŠããããæ©äŒãå¢ãããããã³ãã¥ããã£ã®è£ŸéãåºãããæäŒãããã£ãšãã£ãŠãããããšããæãããããä»åã¹ãã³ãµãŒç«åè£ãããã«è³ããŸããã äžç·ã«çµãã§ããããã€ãã³ããã³ãã¥ãã㣠BASE BANKãšããŠããäºæ¥ãçµç¹ã®ããæ¹ãæè¡ã¹ã¿ãã¯ãšèŠªåæ§ã®é«ãã³ãã¥ããã£ãã€ãã³ããšã¿ãã°ãçµãã§ãããããšèããŠããŸãã å
·äœçãªãžã£ã³ã«ãšããŠã¯ä»¥äžãæ³å®ããŠããŸãã äºæ¥é å Fintech EC éçºããã»ã¹ ã¹ã¯ã©ã ã¢ãžã£ã€ã« ããã°ã©ãã³ã°èšèª PHP Go TypeScript(React, Vue) èŠæš¡ãšããŠã¯~100äººèŠæš¡ãæ³å®ããŠããŸãã ãããŸã§çŸæç¹ã§ã®æ³å®ãªã®ã§ãäžã«æžãã以å€ã§ãç念ã«åŒ·ãå
±æãããŠããã ããããèŠªåæ§ã®é«ããæããã³ãã¥ããã£ãã€ãã³ããšã®ãçžãããã°ãã²ãæäŒããããŠããã ãããã§ãïŒ BASE BANKãšããŠãæäŸã§ãããã® äŒå Žã¹ãã³ãµãŒ æ±äº¬éœæž¯åºå
æ¬æšäžäžç®2çª1å· äœåäžåç£å
æ¬æšã°ã©ã³ãã¿ã¯ãŒ 37F æå€§50åçšåºŠå容å¯èœ(æ€
åãããŒãã«ããã®å Žå) ã¬ã€ã¢ãŠãäŸ (çŽ40åèŠæš¡ã®ã€ãã³ã) https://devblog.thebase.in/entry/welcome_fintech2 çºè¡šçšã®æŒå°ãããããã®å·Šå³ã«ãããžã§ã¯ã¿ã䜿ã£ãŠæåœ±ããããšãã§ããŸãã 飲é£ã¹ãã³ãµãŒ äºç®ã¯10äžçšåºŠãŸã§ãæ³å®ããŠãããŸãã äžæŠ10äžä»¥äžãšãããŠããã ããŠãããŸããå€å°èª¿æŽã¯å¹ãã®ã§ãäºç®ãšæäŸããããªã³ã¯ãé£äºã«ã€ããŠã¯éœåºŠãçžè«ãããŠãã ããïŒ ã€ãã³ãæã«ãããŠããã ãããããš ã€ãã³ãã®äœåŠãã®ã¿ã€ãã³ã°ã§BASE, BASE BANKã®äŒç€Ÿç޹ä»ããããŠãã ããïŒ 3åçšåºŠãæéãé æŽããŸãã ãé£çµ¡å
ãšãããã話ãèããŠã¿ããïŒãšããã ãã§ãæ§ããŸããã以äžãã©ãŒã ãããã²ãåãåãããã ããïŒ https://binc.jp/contacts/jobs äŒå Žãäºç®ã®ç¢ºèªã®ãããã€ãã³ãéå¬ã®1ã¶æåã«ã¯ã声ããããã ãããšå¹žãã§ãã ãããã« ä»åããã°ãšããŠåç¥ãåºãããŠããã ããŸãããããã¡ããããç©æ¥µçã«çŽæ¥ã声ãããããŠããã ããŸãã ãŸããäºæ¥ãäžç·ã«äœã£ãŠãã仲éã倧åéäžã§ã! https://open.talentio.com/r/1/c/binc/homes/4380?group_ids=9203 å°ãã§ããèå³ããæ¹ã¯æ¯éã話ããŸãããïŒ
ã¯ããã« BASEã®Product Dev / Feature Dev1 Groupã§ã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãããŠããTorataã§ãã BASEã«å
¥ç€ŸããŠæ©ãã3ã¶æããã¡ãŸããã å°ãã¥ã€BASEã®ä»äºãç°å¢ãæåã«ãæ
£ããŠããã®ã§æ¯ãè¿ããå
ŒããŠå
¥ç€Ÿãšã³ããªãŒãæžãããšæããŸãã BASEã«èå³ãæã£ãŠããæ¹ã®åèã«ãªãã°å¬ããã§ãïŒ å
¥ç€Ÿã®çµç·¯ åè·ã§ã¯ãæ°åããçŽ5幎éãããã¯ãšã³ããšã³ãžãã¢ãšããŠåããŠããŸããã åšãã«ã¯ä¿¡é Œã§ããçŽ æŽãããæ¹ã
ãå€ããå¹
åºãçµéšãããããšãã§ããŸããã ãã èªèº«ã®ãã£ãªã¢ãèãããšãã«ããã倧ããªããŒã ã§å€§èŠæš¡ãªã·ã¹ãã ãæ±ãçµéšãç©ã¿ããããã®äžã§ããã«ãšã³ãžãã¢ãšããŠã®å°éæ§ãé«ããŠãããããšæã転è·ã決æããŸããã BASEã«å
¥ç€Ÿããçç±ã¯ãããžã§ã³ã«å
±æããæé·ã§ããç°å¢ãæŽã£ãŠãããšæããããã§ããBASEã®ãããã¯ãã¯ãå人ãã¹ã¢ãŒã«ããŒã ããšã³ãã¯ãŒã¡ã³ããããããšã«ãã©ãŒã«ã¹ããŠããã誰ãã倧ããªçµç¹ã«é Œãããšã掻èºã§ããæä»£ã«éåžžã«ããããããµãŒãã¹ã ãšæããŸããã ãŸããç§ã®èº«è¿ãªäººãBASEãå©çšããŠããããšãããã圌ãã®ãããªäººã
ãæ¯ããããšãã匷ãæããèœçããŸããã ããã«ãBASEã®ãšã³ãžãã¢çµç¹ã§ã¯ã«ã³ãã¡ã¬ã³ã¹ã§ã®ç»å£ããçŸåšç§ãæžããŠããããã¯ããã°ã®ãããªçºä¿¡æŽ»åãçãã«è¡ãããŠãããããããç°å¢ã§èªåãæé·ã§ããå§¿ãã€ã¡ãŒãžã§ããããšããå
¥ç€Ÿã決ãã倧ããªçç±ã§ãã BASEã®ãããªãšæããšã 1. ããŒã å€ã®ã¡ã³ããŒãšäº€æµã§ããæ©äŒããããããã BASEã§ã¯ãå
¥ç€ŸåŸ8åãŸã§ããŒã å
å€ã®ã¡ã³ããŒãšã©ã³ãã«è¡ãããã¡ã³ã¿ãŒã©ã³ãããã3ã¶æã«1床ãªãã£ã¹ã§éå¬ããããç· ãäŒããååŸ7æä»¥éã«ãªãã£ã¹å
ã®ããŒã«ãŠã³ã¿ãŒã§ã¢ã«ã³ãŒã«ãå«ãåçš®ããªã³ã¯ã楜ããããšãã§ãããªã©ã瀟å¡å士ã亀æµã§ããæ©äŒãå€ãèšããããŠããŸãã ç§ãå
¥ç€ŸããŠããããŒã å
å€ã®å€ãã®æ¹ã
ãšäº€æµããããšãã§ããŸããã ç§ã¯åè·ã¯æ¯æ¥ãªãã£ã¹åºç€Ÿã®äŒç€Ÿã ã£ãã®ã§ãã€ããªããã¯ãŒã¯ã宿œããŠããBASEã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ã®åãæ¹ã«äžå®ããã£ãã®ã§ããããªããªãåè·ãããä»ã®æ¹ãšè©±ãæ©äŒãå€ãããããªãããšæããããã«ã³ãã¥ãã±ãŒã·ã§ã³ãåããæ©äŒãå€ãèšããããŠããŸãã ã³ãã¥ãã±ãŒã·ã§ã³ãéããŠã©ããã人ãåãã£ãŠããæ¹ãæ¥åãã¹ã ãŒãºã«é²ããããããããããæ©äŒãéããŠæ®æ®µæ¥åã§ã¯é¢ããã®ãªã人ãšã亀æµãæã€ããšãã§ããã®ã§å€§å€å©ããããŠããŸãã 2. ãMove Fastãã§æ¯ãåãæåããã ãã£ããã§å°ãããšãçåãåããšãããã«å€ãã®ã¡ã³ããŒãå©ããŠãããŸãã ç¹ã«ãªã³ããŒãã£ã³ã°æéäžã¯ãæ°ããç°å¢ã«å¯Ÿããäžå®ãçåãå€ãã£ãã®ã§ãããäœåºŠãå©ããŠããããŸããã å®éãèªåã®ãªã³ããŒãã£ã³ã°ãã£ã³ãã«ã«ãããã£ãŠã©ããªã£ãŠãããã ããïŒããšããããè©°ãŸã£ã¡ãã£ããªãŒãã¿ãããªå°ãããšãéã«æããŠã誰ãããããããæŸã£ãŠãããŠèª¬æããã解決ãŸã§æã£ãŠãã£ãŠãããŸãã 现ããªçåãã¡ãã£ãšããæ©ã¿ã«ãè¿
éã«åå¿ããŠããããããšã§ãäœããã£ãæã«ã¯èª°ããå©ããŠããããšããå®å¿æãšãããå°ã£ãŠãã人ãèŠããããèªåãåãããã«å©ããŠãããããšãããã埪ç°ãã§ããŠãããªãšæããŠããŸãã BASEã«ã¯Move Fast以å€ã«ãè¡åæéããã£ãŠããããã®âBASEãããâãå人çã«ã¯é
åã«æããŠããŸãã 3. ã¢ãã³ãšã¬ã¬ã·ãŒ2ã€ã®ç°å¢ãçµéšã§ãã BASEã¯10幎以äžç¶ããŠãããµãŒãã¹ã§ãããé·å¹Žäœ¿ãããŠãããªããžããªãšããªãã¬ã€ã¹å
ã®æ°ãããªããžããªã®2ã€ãååšããŠããŸãã æ°ãããªããžããªã§ã¯ã¢ãžã¥ã©ã¢ããªã¹ãæ¡çšãããŠãããçŸä»£ã®æ°Žæºã«åã£ãã¯ãªãŒã³ãªã³ãŒãã«è§Šããããšãã§ããŸãã äžæ¹ã§ãå€ããªããžããªãæ¹åãé²ããããŠãããã¬ã¬ã·ãŒã³ãŒãã«ã©ãç«ã¡åãã£ãŠããããçµéšã§ããŸãã ãšã³ãžãã¢ãšããŠã¯åžžã«ã¢ãã³ãªç°å¢ã§éçºãããæ¹ãæ¥œãããããããŸããããçŸå®çã«ã¯ã¬ã¬ã·ãŒã³ãŒããšãåãåãããšãé¿ããããªããšå人çã«ã¯èããŠããŸãã ã¢ãã³ãšã¬ã¬ã·ãŒ2ã€ã®ç°å¢ãçµéšããããšã§ãšã³ãžãã¢ãšããŠå€§ããæé·ã§ããããããªãããšä»ããã¯ã¯ã¯ã¯ããŠããŸãã ä»åŸããããããš ç§ã®åšãã«ã¯ãéåžžã«åªãããå°æ¬ã§ãããšã³ãžãã¢ãå€ãããŸãããŸãã¯ãã®ã¬ãã«ã«è¿œãã€ãããšãç®æšã«ãæ¥ã
åªåããŠããŸãã çŸåšã¯å€ããåŠã³ãªãããããŒã ã®ãµããŒããåããŠããæ®µéã§ãããå°æ¥çã«ã¯ãèªåã ããããã§ãããè²¢ç®ã暡玢ããããŒã ãçµç¹ã«æ°ããªäŸ¡å€ãæäŸã§ãããšã³ãžãã¢ãç®æããããšèããŠããŸãã ããã㫠以äžã§ç§ã®BASEã®å
¥ç€Ÿã®çµç·¯ãå
¥ç€ŸããŠãããªãšæããšããã玹ä»ããŸããã ãã®èšäºãèªãã§å°ãã§ãBASEã«èå³ãæã£ãŠãããããå¬ããã§ãã BASEã¯çŸåšãšã³ãžãã¢ç©æ¥µæ¡çšäžãªã®ã§èå³ãããã°æ¡çšæ
å ±ãã²ã芧ãã ããïŒ BASEã§äžç·ã«åããŸãããïŒ binc.jp
ã¯ããã« ããã«ã¡ã¯ãProduct Management Group ã§ ãããã¯ããããžã¡ã³ã ãããŠããåæ±ïŒ @7auto ïŒã§ãã ãªãœãŒã¹çãªåé¡ã§ãããã¹ãããšããããããã£ãŠãå°ããã®æ¹åãPJã«æãåããªãããããªãæ©ã¿ãæã€æ¹ã¯ããããããã£ãããã®ã§ã¯ãªãã§ããããã ãµãŒãã¹ã倧ãããªããšPJã®èŠæš¡ã倧ãããªã£ãŠãããŸãããã®çµæãå°ããã®PJãæ¹åã®åªå
床ãäžãããã¡ã«ãªããŸãã äžæ¹ã§ãå°ããã®PJãæ¹åã¯ãµãŒãã¹å©çšè
ã®å£°ããçãŸããããšãå€ãããããæŸçœ®ãç¶ããããšã¯ãµãŒãã¹äœéšã®æªåã«ç¹ãããŸãã ããã§å€§ããªPJãšäžŠè¡ããŠãããããå°ããã®PJãæ¹åã«å¯Ÿããæå°ã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ãã§æ©èœãªãªãŒã¹ããããšããã³ã³ã»ããã§ç«ã¡äžããããªãªãŒã¹ãè¡ããŸããã ãå
šå¡éãŸã£ãã®ã¯ããã¯ãªããšæ¯ãè¿ãã ãããããªå®äŸãDailyãç¡ãPJãéããŠãäœã³ã¹ããªã ãã§ãªãåäººã®æé·ã«ãã€ãªããã¡ãªãããããããã«æããããŸããã æ¬çš¿ã§ã¯ããããåŸãããããšãå
±æã§ããã°ãšæããŸãã äœã³ã¹ããã³ã³ã»ããã«ããèæ¯ åœæãèªåã¯æ¬ä»¶ã®ä»ã«3PJïŒãã®ãã¡éçºã2ä»¶ïŒãåæé²è¡ããŠããŸããã ä»ã®PJã§ã¯ã¢ãžã£ã€ã«ãªéçºæ¹åŒãåã£ãŠãããæ¯é±ã¹ããªã³ãã€ãã³ãDailyMTGã宿œããªããæŒžé²çã«é²ããŠããŸããã ã¢ãžã£ã€ã«ãªéçºæ¹åŒãåãããšã§äžç¢ºå®æ§ãžã®å¯ŸåŠã¯å®¹æã«ãªãäžæ¹ãã³ãã¥ãã±ãŒã·ã§ã³ã«å²ãæéã倧ãããªããŸãã ãã®ãããïŒéçºãã¢ãžã£ã€ã«ã«ãããšæéçãªé¢ã§èªåãããã«ããã¯ã«ãªãæžå¿µãæããŸããã ããã§ãéçºèŠæš¡ãäžçªå°ããã£ãæ¬ä»¶ã®PJã¯ã¢ãžã£ã€ã«ã«ãšãããããã§ããã ãã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããäžããããPJãèšèšããŸããã ã¡ã³ããŒæ§æã»åã£ãããšã»ã¹ã±ãžã¥ãŒã«æ ãã®PJã¡ã³ããŒæ§æã¯ãããã¯ããããŒãžã£ãŒïŒèªåïŒããã¶ã€ããŒãããã¯ãšã³ããšã³ãžãã¢ãããã³ããšã³ããšã³ãžãã¢ãããã»ã¹ãšã³ãžãã¢ãçŽæ¥æã¯åãããªããããžã§ã¯ããããŒãžã£ãŒã®ïŒåã§ããããããå¥ã®PJãå
ŒåããŠããŸããã ãããã¯ããããŒãžã£ãŒããã¶ã€ããŒããšã³ãžãã¢ã¯äžç·ã«ä»äºããã®ãåããŠã®ã¡ã³ããŒå士ã§ããã ãŸããåã¡ã³ããŒãå¥ã®PJãå
ŒåããŠããéœåäžãå
šå¡ãæãã®ãåŸ
ã€ããšã¯ãããåå·¥çšãFIXãããŠæ¬¡ã®å·¥çšã«é²ãããŠã©ãŒã¿ãŒãã©ãŒã«ã«è¿ã圢ã«ãªããŸããã å®éã®ãªãªãŒã¹ãŸã§ã®ã¹ã±ãžã¥ãŒã«ã¯ãã£ãããšä»¥äžã®ãããªæµãã«ãªããŸããã 2é±éïŒPdMãäŒç»ã»ããã¥ã¡ã³ãå 2é±éïŒãã¶ã€ããŒãUI/UXãç¢ºå® 4é±éïŒãšã³ãžãã¢ãéçº 2é±éïŒPEãQA ãªãªãŒã¹ ã³ãã¥ãã±ãŒã·ã§ã³ãåããã ãåã£ãããããªãªãŒã¹ãããŸã§ã«å
šã¡ã³ããŒãé¡ãåãããã®ã¯ããã¯ãªãã ãã§ãã¢ãããã¯ãªMTGãæ°ããã»ã©ã§ããã PdMãšããŠæ°ãã€ããŠããããš ã³ãã¥ãã±ãŒã·ã§ã³ãåããšããããšã¯ããã¶ã€ããŒããšã³ãžãã¢ã¯ããã¥ã¡ã³ãããå¿
èŠååãªæ
å ±ãåŒãåºããå¿
èŠãããããšãæå³ããŸãã ãªã®ã§äŒç»ã®æ®µéã§äœéšããåãåããæã®å¯Ÿå¿ãªã©ãèæ
®ããèŠä»¶ã»äœéšã»å®è£
ãæèããPRDãäœæããŠãããŸããã ããã§ãããã€ã質åãåããã±ãŒã¹ããããŸãããã質åãåããéã¯2å以å
ã§çãããããã®æ°æã¡ã§ãããŸããã *1 çµæçã«ç¹ã«å€§ããªãã©ãã«ããªãã¹ã ãŒãºã«ãªãªãŒã¹ã§ããŸããã ãã®PJãéããŠåŸãããããš äœã³ã¹ãã§å€§ããªææ»ãããªãã£ãã®ã§ãå
šäœçã«ã¹ããŒãã£ãŒã«ç¡é§ãªãäŸ¡å€æäŸã§ããŸããã ä»åã®ãããªæ¹éã§PJãèšèšããããšã§ãæãåãã«ããå°ããã®PJã䞊è¡ããŠåããããšæããŸããã ãŸãããªãªãŒã¹ãéããŠå®¢èгçã«èªèº«ãèŠçŽãæ©äŒãåŸãããããšãéåžžã«ããžãã£ãã«ãšãããŠããŸãã ãŠã©ãŒã¿ãŒãã©ãŒã«ã«è¿ãéçºã¹ã¿ã€ã«ãšãªã£ãããšã§ä»¥äžãæèããå¿
èŠããã£ããããïŒä»äºãããäžã§åœããåã§ãããŸããïŒæ®æ®µã®ä»äºã®å§¿å¢ãæ¹ããŠèããè¯ãæ©äŒã«ãªããŸããã èªèº«ã§äœæããã¹ã±ãžã¥ãŒã«ã«è²¬ä»»ãæã€ æ
å ±äŒéã®å
容ã«è²¬ä»»ãæã€ ç¶æ³å€åã«å¯Ÿããå ±é£çžã®æèãé«ãã ç¹ã«ãã®PJã§ã¯Dailyããªãã®ã§ãææ¥å
±æããã°ãããããšããæ°æã¡ã«ãªããªãã£ãããšã倧ãããšæããŸããã ãŸããèªèº«ã®ããã¥ã¡ã³ããŒã·ã§ã³ã®è³ªã客芳çã«èŠçŽãè¯ãæ©äŒãšãªããŸããã PdMãšããŠã¯ããã¥ã¡ã³ãã§å¿
èŠååãªæ
å ±ãäŒããªããã°ãªããªãã£ãããšã§ã以äžãæ¹ããŠæèããããšã«ãªã£ãããã§ãã äžæçããæ®ããªã ç¡é§ãªããšãæžããªã èªã¿æã®ã³ã³ããã¹ããæèãã æåŸã«ãä»åã¯å°ããPJãã€åããŠã®ã¡ã³ããŒãšã®ä»äºã ã£ãã®ã§ãPJéçšã§ãã©ã€ãããã£ãããšãå°ãã詊ãããšãã§ããŸããã PJèŠæš¡ã倧ãããªããšãPJéçšã®ã¹ã±ãžã¥ãŒã«ãžã®åœ±é¿ãç¡èŠã§ããªããããç©æ¥µçãªãã©ã€ããã«ãããªããŸãã ãã®ãããããããæ¹åŒã®PJã¯å®éšãæ¯æãããã³ããªã®è§£æ¶ãšãã£ãæå³ãæãããããšãã§ããããã«æããŸããã ãããã« å°èŠæš¡ãªPJã§ããã°ãã³ãã¥ãã±ãŒã·ã§ã³ãåãèœãšããŠPJã®äžŠåæ°ãå¢ããããšãã§ããŸããããŸãã坿¬¡çã«ä»äºã®è³ªãããã»ã¹ãèŠçŽããšãã䟡å€ãæãããããšãã§ããŸããã å°èŠæš¡ã®éçºã«å²ããªãœãŒã¹ããªãæ¹ãæéããªããšãæ©ã¿ã®æ¹ããã€ãã®ããæ¹ã«ãã³ããªãèŠããŠããæ¹ã¯ãåæ°ãæã£ãŠã©ããŸã§è»œéã«ãªãªãŒã¹ã§ããããæ¥œããã§èŠãŠã¯ãããã§ããããïŒ æåŸã«å®£äŒã§ããBASE ã§ã¯ãããã¯ããããžã¡ã³ããããã¡ã³ããŒãåéããŠããŸãã èå³ãããæ¹ã¯äžèšã®ç޹ä»è³æããæ¡çšæ
å ±ããã²ã芧ãã ããã binc.jp *1 : ãªãªãŒã¹åŸã®æ¯ãè¿ãã§ãšã³ãžãã¢ããFBãé ããã®ã§ãããããã«è¿çããããšãDailyïŒåŒ·å¶çã«éãŸã£ãŠåé¡ã確èªããå ŽïŒãèšããã«æžãã èŠçŽ ã«ãªã£ãŠããããã§ãã
ã¯ããã« ã¯ãããŸããŠã®äººã¯ã¯ãããŸããŠãããã«ã¡ã¯ïŒBASE BANK Divisionã®ããã³ããšã³ããšã³ãžãã¢ã®ãã£ã¡ããïŒÂ @gatchan0807  ïŒã§ãã ãããã·ã§ããäœæãµãŒãã¹ãBASEãã®éçºããŒã ããBASE BANKããŒã 㫠瀟å
ç°åãã㊠ãããŒã ã®äººæ°ãåå以äžã®ããŒã ã«ãªã£ãŠããçŽå幎ãçµã¡ãŸããã ãããªããŒã ç°å¢ã®å€åãšå
±ã«ãç§ãã©ããªããšãèããããã«ãªã£ãã®ããBASE BANKããŒã ãšã¯ããã³ããšã³ããšã³ãžãã¢ç®ç·ã§ã©ã®ãããªããŒã ãªã®ããããå°ããªããŒã ã§ããã³ããšã³ããšã³ãžãã¢ãšããè·çš®ã§åãããšã®é¢çœãããšåãããŠç޹ä»ãããŠãã ããïŒ å人çã«ã¯ãä»å玹ä»ãããããªæŽ»åãããããšã§ãããã¯ããåã«é²ããŠãŠãŒã¶ãŒã«äŸ¡å€æäŸããããšãã§ããããããžãã¹ã®æé·ã«ãå¯äžããããšãåºæ¥ãã ãããšèããŠããã®ã§ãèªãã§ãã ãã£ãçããŸã®åèã«ãªãã°å¬ããã§ãïŒ ããŒã ã®é¢çœãã®ç޹ä»ã®åã«âŠ ããŒã ã®ç޹ä»ãããåã«ãŸããã¡ãã£ãšã ãç§ã®èªå·±ç޹ä»ãããã«ç§ããããã³ããšã³ãããšããæ¥åé åãã©ãæããŠããã®ãã«ã€ããŠå
±æãããŠãã ããã ã²ãšããšã§èšããšãç§ã¯ããã³ããšã³ãããããŒã¿ïŒã·ã¹ãã ïŒãšãŠãŒã¶ãŒã® å¢çé¢ ã§ããããšèããŠããŸããã ããããããšãŠãé¢çœããŠå€§å¥œããªé åãªã®ã§ãã ããå°ãå
·äœçãªã話ããããšããµãŒãã¹ã»ãããã¯ããå©çšããŠãããŠãŒã¶ãŒã¯ç»é¢ã«è¡šç€ºãããŠããããŒã¿ããç¥ãåŸãŸãããããã¯ã瀟å
çšã®ç®¡çç»é¢ã§ãã£ãŠãBASEãPay IDãæäŸããŠãããµãŒãã¹ã§ãã£ãŠãåãã§ãã ãã®åæã«ç«ã€ãšã UIãå®è£
ããããã³ããšã³ããšã³ãžãã¢ãæ£ããUIã«è¡šç€ºãããäºãã§ããªããšããŠãŒã¶ãŒã«å¯ŸããŠæ£ããäŸ¡å€æäŸãåºæ¥ãªã ãšããããšã«ãªããŸãã ããã«ããã®å®è£
è
ã§ãããããã«ããã¶ã€ããŒããã ãã®ãããã¯ãã®ãæåãã«å¯ŸããŠã®æ·±ãç¥èããã ãšãèšããŸãã å
·äœçã«ã¯ãAPIãDBãDOMäžã«ã®ã¿è¡šç€ºãããŠãããç»é¢ã«ã¯èŠããªãããŒã¿ã®æ±ãæ¹ãšãã®ããŒã¿ã«åºã¥ããUIã®ãã¿ãŒã³ã«ãæ·±ãç¥èãããããããããã¹ããšèšããŸãã ã€ãŸããããã³ããšã³ããå¢çé¢ã«ãªãããããã ãŠãŒã¶ãŒãžã®äŸ¡å€æäŸãšUIã®ãã¿ãŒã³ã®ç®¡çã«è²¬ä»»ãæã€ããšãéèŠãªè·å ã ãšç§ã¯æããŠããŸãã ããã³ããšã³ããšã³ãžãã¢ã®è²¬åãå
šãããããã«ã¢ã³ããã匵ãå Žæ äžè¿°ã®ãšãããããã³ããšã³ããšã³ãžãã¢ã¯ç»é¢ã«äœãã©ã衚瀺ãããŠããã®ãã«è²¬åãæã€ãšèããŠããã®ã§ãç§ã¯ ããŠãŒã¶ãŒããã®ãåãåããããšãçŽ æ©ãç®ã«èŠããUIãäœãææ®µãã«æåºŠé«ãããããšãéèŠ ã ãšèããŠåžžã
ããã«ã¢ã³ããã匵ãããã«ãªããŸããã åæãšããŠããåãåããã¯ããŠãŒã¶ãŒãå®éã«ç»é¢ã§èŠããã®ããå
ã«è¡ãããŠããŸãã ããã«é¢ããŠãããå°ãå
·äœçã«è§£èª¬ããŠãããŸãã ããåãåãããã¯UIæ¹åã®èµ·ç¹ã«ãªããããããæ©äŒ ãããããå°ãæœè±¡çã«æžããšããŠãŒã¶ãŒãããšãããã¿ãŒã³ã®UIã§è¡šç€ºãããæ
å ±ãèŠãŠ å°ã£ãã»è¿·ã£ããã€ã³ãã®ãã¡ããµãŒãã¹ãå©çšããäžã§ã¯ãªãã£ã«ã«ã§ç±éãé«ããªãéšåã®äžå ã ãæããŠãã ãã£ãŠãã ç¶æ
ã§ãã ããã¯ãããã³ããšã³ããšã³ãžãã¢ã«ãšã£ãŠã¯ãã©ã®ãã¿ãŒã³ã®UIãã¿ããšãã®ãããªåãåãããçãŸããã®ãïŒãããã®èª²é¡ãã©ã解決ããã¹ããïŒããèããããšã«äœ¿ãããã²ãããããã«ãããããããã«ã±ã ãšæããŠããŸãïŒããã«ãåçš®ãã¹ãã±ãŒã¹ã®æ¡å
ãæ°æ©èœã®ä»æ§èæ
®æã®å©ãã«ããªããŸãïŒ å°ã話ã¯ãããŸãããçŸåšBASE BANKããŒã ã§ã¯ããåãåããå
容ã®ç®¡ççšããŒã«ZendeskãšSlackã®é£æºãè¡ã£ãŠããããåãåããã®å
·äœçãªå
容ãããŒã å
ã§ç¢ºèªã§ããSlackãã£ã³ãã«ã«ãæµããŠããŸãããã®ãããããŒã ã¡ã³ããŒã¯èª°ã§ãçŽè¿é »çºããŠããåãåããå
容ãå¯ç¥ããããäžæ¬¡å¯Ÿå¿ã®å
å®¹ãæ€èšããŠããã¹ã¬ããå
ã§ãšã³ãžãã¢ãPdMãåŒãã§æ¥ãŠä»æ§é¢ãæè¡é¢ã§ã®ç¢ºèªã調æ»ãè¡ãããã«ãªã£ãŠããŸãã Slackäžã«æµããŠãããåãåããã®ã€ã¡ãŒãž ããã«ã2é±éã«1床ã®MTGã§åããŒã ããã®å
±ææéãããã®ã§ãæ®æ®µãåãåãã察å¿ãè¡ã£ãŠããOperationããŒã ããããåãåãã察å¿ã®äžã§ã®ãããã¯ãã«å¯Ÿããå°ãäºãããããåãåãããå€ãã£ãããšããæ
å ±å
±æããããããšããããŸãã 以äžã®ããã«ãOperationããŒã å
ã§Lookerããã·ã¥ããŒãã䜿ã£ãŠå¯èŠåãè¡ã£ãŠãããããæ°ã®å¢æžãå²åãªã©ãçè§£ããããå
±æããŠããã£ãŠããŸãã OperationããŒã ã®çºè¡šæã«äœ¿ã£ãŠããNotionã®ãã£ãã㣠OperationããŒã ã®Looker掻çšäºäŸã«é¢ããŠã¯ããã²ä»¥äžã®PodcastãåãããŠãèããã ããã https://open.spotify.com/episode/7wD9QCv6imYPOGsGIuvSTU?si=eA8ENSswQBWoGrOFkaz7fg ãã®ãããªåœ¢ã§BASE BANKããŒã ã®ããã³ããšã³ããšã³ãžãã¢ã¯OperationããŒã ã®ã¡ã³ããŒãšãã¶ã€ããŒããŒã ã®ã¡ã³ããŒãšäžç·ã«ãåãåãããåºã«UIã®æ¹åã«åãçµãã§ããŸãã 課é¡è§£æ±ºã®ããã®ææ®µãšããŠChrome DevToolsãæŽ»çšããã 2ã€ç®ã®ã¢ã³ããã匵ã£ãŠããããšã¯ã ãšã³ãžãã¢ãšä»è·çš®ã®ããŒã ã¡ã³ããŒã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããäžããããã®ææ³ã«ã€ã㊠ã§ãã äžè¿°ã®ããåãåãããããã£ãéã®UIæ¹åããããã¯ãã®æ©èœéçºããµã¯ãµã¯ã§ããããã«ãã¡ã³ããŒéã®ã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããäžããããšã§ãæææ±ºå®ã®ç²ŸåºŠãšã¹ããŒããäžããããæ©ããŠãŒã¶ãŒã«äŸ¡å€æäŸãããããšãåºæ¥ãããã«ãªããŸãã ãããå®çŸããããã®å
·äœçãªææ®µãšã㊠Chrome DevToolsã®æŽ»çš ãæšããŠããŠãã¹ããŒãžã³ã°ç°å¢ãªã©ã§å®éã®UIã衚瀺ããChrome DevToolsã§HTMLãCSSããµã¯ããšå€æŽããŠç»é¢ãã£ããã£ããã ãã§äºè¶³ããããšãå€ã
ãããŸãã å®éã«ãã£ãããåãã ãšã以äžã®ãããªãã®ããããŸãã ãã®äºäŸã®ä»ã«ãGoogle Meetã«ãã¶ã€ããŒãšPdMã®æ¹ã«éãŸã£ãŠããããç»é¢å
±æãããªããChrome DevToolsäžã§HTMLãCSSã®ã¹ã¿ã€ã«ã倿ŽããŠå®è£
æ¹éãããã§ããªãããã§ããªãããšãã話ãããããšããããŸãã ãã®ä»ãã¡ãã£ãšããæèšã®ä¿®æ£ã®å Žå㯠document.designMode = âonâ ïŒ è©³ãã解説ã¯ãã¡ãã®W3Schoolã§å®éã«è§Šã£ãŠã¿ã ã®ãããããããã§ãïŒããããšèšå®ããŠç»é¢ãã£ããã£ããããšããããããŸãã ãããã£ãUIã®æ€èšæã«æç« ã§ã¯ãªãèŠèŠçã«çè§£ãããããã®ãäœãããã«ãããã³ããšã³ããšã³ãžãã¢ããFigmaã䜿ãããªããŠãã¶ã€ã³ãã¡ã€ã«èªäœããµããšå€æŽããŠãã£ããã£ãäœãããšããéžæè¢ããããŸãã ãã ãå人çã«ã¯Chrome DevToolsãããã³ããšã³ããšã³ãžãã¢ã«ãšã£ãŠã®æé«ã®IDEã ãšæã£ãŠããŸããããã«ãåŸã®DOMæ§é ãã©ããªã£ãŠããã®ãææ¡ããŠããããšã§åŸãããã¡ãªããããããšæã£ãŠããã®ã§ããã®æ¹æ³ã掻çšããããšãããããããŠããŸãã Chrome DevToolsã«ã€ããŠãã詳ããç¥ããããªã£ãæ¹ã¯ãã²ã å
¬åŒDocs ãçºããŠã¿ãŠããããã°ãšæããŸãã æã
ã æ°æ©èœãã¥ãŒã¹ããŒãž ãçºãããšãããããªäŸ¿å©ãªæ©èœå¢ããŠãã®ïŒããšãå®ãèŠã€ãããããªæ°åã«ãªããã®ã§ãšã£ãŠãããããã§ãã ããã㫠以äžãBASE BANKããŒã ã«ç°åããŠèããããã«ãªã£ããããã³ããšã³ããšã³ãžãã¢ãšããŠåºæ¥ãããšã»ãããšãããšæã£ãããšã®ã玹ä»ã§ããã OperationããŒã ãšã®åæ¥ã®ä»æ¹ã¯BASE BANKããŒã ã«ç°åããŠãã倧ããå€ãã£ããªãšæããŸãããBASE BANKããŒã ãæ
åœããŠããã®ã¯ãŸã ãŸã æ¢çŽ¢ãã§ãŒãºã®æ©èœã»ãããã¯ãããããããªã®ã§ãã©ãã©ããªãªãŒã¹ããŠã©ãã©ããã£ãŒãããã¯ãåãåã£ãŠæ¹åãé²ããŠããæèŠã匷ãã§ãã ããããããªããšãèããŠããç§ãBASE BANKããŒã ã«èå³ãæãããããã²æ¡çšããŒãžããã声ãããã ããïŒïŒâã®ããŒãžã®åéè·çš®äžèЧãããBASE BANKããŒã ã§ãã£ã«ã¿ãªã³ã°ããŠããããšç©æ¥µæ¡çšäžã§ããããšãäŒããããšæããŸãïŒïŒ binc.jp ãŸãããããªãä»°ã
ããã«ãžã¥é¢ã¯ã¡ãã£ãšã¢ã¬ã ãããã£ã¡ãããšã¯å人çã«è©±ããŠã¿ãããïŒãšããæ¹ã¯PittaãXïŒæ§TwitterïŒã®ãªãã»DMãªã©ã§ã声ãããã ããð https://pitta.me/matches/PDWMyhvOjUOy https://x.com/gatchan0807
ããã«ã¡ã¯ïŒ BASE BANK Divisionã® æŸéª ã§ãã 8/5ã« Welcome Fintech Community #2ãéå¬ããŸããã ãçãæãã§ãã¿ãã¿ããŠããã3é±éã»ã©çµã£ãŠããŸããŸããããä»åãå€§çæ³ã ã£ãã®ã§ãã®æ§åããå±ãããŸãïŒ Welcome Fintech Communityã«ã€ã㊠ã³ãã¥ããã£ç«ã¡äžãã®çµç·¯ã¯ãã¡ãã«èšèŒããŠããã®ã§ãã²ã芧ãã ããã devblog.thebase.in 6/20ã«éå¬ãã第1åããããããããšã«å€§åé¿ã ã£ããããéã¯ç±ããã¡ã«æãŠ!ãšããããšã§1ã¶æåã»ã©ã§ç¬¬2åãéå¬ããŸããã ä»åã¯ç¬¬1åã®æèŠªäŒã§æ¯é次ãããã°è©±ããã! ãšææè¡šæããŠãã ãã£ãŠããSTORESãããšMIXIããã«ã声ããããå
¬åLTãšåãããŠ5人ã«ãç»å£ããã ããŸããã ãŸãä»åã¯åã®è©Šã¿ãšããŠããšã³ãžãã¢è»¢è·ãµãŒãã¹Forkwellãéå¶ããGroovesããã«é£²é£ã¹ãã³ãµãŒãããŠããã ããŸãã! ãã®å ŽãåããŠæ¹ããŠã瀌ç³ãäžããŸããããããšãããããŸãã! åœæ¥ã®æ§å ä»åã¯LTåŸã®æèŠªäŒãžã¹ã ãŒãºã«ç§»è¡ã§ãããããã¢ã€ã©ã³ã圢åŒã®ããŒãã«é
眮ã«ã 第1åã«åŒãç¶ãåžäŒã®BASE æ³å·ãã Forkwell ã®ããããããïŒé£²é£ãµããŒã¿ãŒããããšãããããŸããïŒïŒ LT LTäžçºç®ã¯ æ ªåŒäŒç€ŸMIXI ããæµ
èŠããã ãŠã©ã¬ãããµãŒãã¹ãšããŠã®MIXI Mã¯ç¥ã£ãŠããŸããããIDãèªèšŒåºç€ãšããŠãå±éããŠããã®ã¯å人çã«ã¯åè³ã§ããã 確ãã«æ±ºæžãµãŒãã¹ã¯æ¬äººç¢ºèªãªã©ãŠãŒã¶ãŒãšåŒ·ãçŽã¥ããŠããã®ã§ããããèªèšŒåºç€ãšããŠåãåºããŠæäŸãããšããã®ã¯æå€ãšæãã€ããªãã£ããªããšæ°ããªçºèŠããããŸããã ç¶ã㊠STORESæ ªåŒäŒç€Ÿ ããSTORES æ±ºæž ã«é¢ãã£ãŠããã£ããã西æããã æ±ºæžæã®åºæ¬çãªåº§çµã®è©±ããSTORES決æžã䜿ã£ãæ±ºæžæã®é»æã®çµè·¯ã«ã€ããŠã話ãããã ããŸããã 黿ã®çµè·¯ã¯äžè¬çãªã«ãŒã決æžãšã¯å°ãéãçµè·¯ã§åãåãããè¡ãããŠãããã«ãŒã決æžãªã©ã«è©³ããåå è
ããã¯âãããªããšã§ããã®??âãšãã声ãäžãã£ãŠããŸããã 3人ç®ã¯ ã¯ã©ã¹ã¡ãœããæ ªåŒäŒç€Ÿ ã®åç°ããã DevelopersIOã«ã¯ãã€ãå©ããããŠããŸãããããšãããããŸãã AWSãš PCI DSS ã«ã€ããŠã®ã話ã§ã責任å
±æã¢ãã«ããReserved InstancesãSavings PlansãŸã§ã決æžã ãã§ãªãAWSäžã§äºæ¥ãè¡ããã¹ãŠã®æ¹ã«å¿
èŠãªæ
å ±ãããããå
±æããã ããŸããã 4人ç®ã¯ æ ªåŒäŒç€Ÿdinii ã®è§ç°ããã diniiããã¯ã¢ãã€ã«ãªãŒããŒã ãã§ãªãPOSããªã³ã©ã€ã³æ±ºæžæ©èœããããããæ±ºæžãµãŒããPOSãµãŒãéã§ã©ã®ããã«ããŒã¿ã®æŽåæ§ãä¿ã¡ãªããæ±ºæžãå®çŸããããªã©ã飲é£åºã§ã®ãªãã¬ãŒã·ã§ã³ãªãã§ã¯ã®èŠåŽãããã€ã³ããªã©ããããããããã ãªãšãšãŠãå匷ã«ãªããŸããã æåŸã« æ ªåŒäŒç€ŸLayerX ããken5scalããã éèåºãâéèåéã«ããããµã€ããŒã»ãã¥ãªãã£ã«é¢ãã ã¬ã€ãã©ã€ã³ïŒæ¡ïŒ âãšãããã®ãå
¬éããŠããããã§ããã®äžããææãæã
fintechã«é¢ãã人éã«ãé¢ä¿ããããããªå
容ãããã¯ã¢ããããŠãã ãããŸããã ã«ãŒã«ã«åŸãã ãã§ãªãã«ãŒã«ãäžç·ã«äœã£ãŠããããã«ããããªãã¯ã³ã¡ã³ãã§æèŠãåºããïŒãšããã¡ãã»ãŒãžãåå è
ã®çããã«ããšãŠãåºãã£ãŠããããã§ãã æèŠªäŒ æèŠªäŒãååã«åŒãç¶ãå€§çæ³ïŒ (çãäžãããããŠåçæ®åœ±ãå®å
šã«å¿ããŠããŸããã»ã»ã») äºåã«æèŠªäŒã«ç§»è¡ãããããããªããŒãã«é
眮ã«ããããããª?ãšæãã€ã€ããã£ãšããé
眮ãé²ãæ¹ã¯ããããã ãªãšæããå Žé¢ããã£ãã®ã§ããã®ãããã¯ãããããè²ã
ãšè©Šè¡é¯èª€ããªããåå è
ã®ã¿ãªãããçãäžãããããå Žã®èšèšãããŠãããŸãïŒ ãããã« æ¹ããŠãä»åãåå ããã ããçæ§ããããšãããããŸããïŒ ãããŠïŒïŒïŒïŒç¬¬3åã®éå¬ã決å®ããŸããïŒ10~11æãããäºå®ããŠããŸãã ãŸã远ã£ãŠé嬿¥ãconnpassã®å
¬éãªã©è¡ã£ãŠãããŸãã®ã§ããã²ã³ãã¥ããã£ã¡ã³ããŒã«ãªã£ãŠãããŠãã ããïŒ https://welcome-fintech.connpass.com ã§ã¯ãŸãã第3åã§ååå ãããæ¹ããªããŒã¿ãŒã®æ¹ããåŸ
ã¡ããŠãããŸãïŒïŒ
ã¯ããã« ããã«ã¡ã¯ãProductDev FeatureDev3 ã§ãšã³ãžãã¢ãããŠããŸãã endu ã§ãã å
æ¥ãèªåãæå±ããããŒã ã§ãè¯ãã³ãŒãïŒæªãã³ãŒãã§åŠã¶èšèšå
¥éããšããæ¬ã顿ã«èŒªèªäŒãéå¬ããŸããã gihyo.jp ãã®èšäºã§ã¯ããè¯ãã³ãŒã/æªãã³ãŒãã§åŠã¶èšèšå
¥éããèªãããšæã£ãèæ¯ããããŒã ã§å®éã«è¡ã£ã茪èªäŒã®é²ãæ¹ã茪èªäŒãéããŠåŸãåŠã³ã«ã€ããŠå
±æã§ããã°ãšæããŸãã 茪èªäŒãéå¬ããèæ¯ã«ã€ã㊠BASEã§ã¯ã·ã§ãããç¬èªã«ã«ã¹ã¿ãã€ãºããæ¡åŒµæ©èœãšããŠãAppsããæäŸããŠããŸãã èªåãæå±ããããŒã ã§ã¯ç¹ã«ã Googleåå飿ºã»åºå App ããã InstagramåºåApp ããã Instagram 販売App ããã TikTokåå飿ºã»åºå ããªã©ãäž»ã«SNS Appsåšãã®ä¿å®ãæ©èœæ¹åãè¡ã£ãŠãããŸãã åœç¶GoogleãMetaåŽããæäŸããŠããAPIã®ã¢ããããŒããããã®ã§ãã¢ããããŒãã®å¯Ÿå¿ããããªã£ããããåãåããèµ·å ã§ã®çްããä¿®æ£ãçºçããŸãã ãããã®SNS Appsã¯BASEã§ãæŽå²ãé·ããããŒã ã«é
å±ããã°ããã®é ã¯å
šäœã®ä»æ§ãææ¡ã§ããŠãªãäºããããæ¢ã«æžãããŠããã³ãŒããåèã«ããŠè¿œå ãããã®ã®ãããŸãã¡è¯ãã³ãŒãããããŠãããã®èªä¿¡ããããŸããã§ããã ããããããŠããå
ã«ãããŒã å
ã§èŒªèªäŒãéå¬ãã話ãäžãã£ãã®ãšãèªåãæžããã³ãŒãã«å¯ŸããŠã¢ã€ã¢ã€ããã£ãã®ã§ããè¯ãã³ãŒããšã¯ãªã«ã? æªãã³ãŒãã¯ãªã«ã?ããèããæ©äŒãäœãçºã«ãã¡ãã®æ¬ãææ¡ãã茪èªäŒãéå¬ããäºã«ãªããŸããã 茪èªäŒã®é²ãæ¹ã«ã€ã㊠ä»åãç§éã®ããŒã ã§ã¯ä»¥äžã®ãã©ãŒãããã«æ²¿ã£ãŠé²ããŸããã ç« ãé
ãªã©ãæžç±ãææžã®æ§æåäœæ¯ã«æ
åœè
ãå²ãæ¯ãåããã æ
åœè
ã¯æ
åœåã®ããŒãžãèªã¿ãå¿
èŠã«å¿ããŠèª¿æ»ãªã©ããŠçè§£ããäžã§èŠçŽã»ææ³ãNotionã«èšè¿°ããã 茪èªäŒã®é嬿¥ã«æ
åœè
ã¯èªåãèªãã åã®èŠçŽã»ææ³ãªã©ãçºè¡šããã 茪èªäŒåå è
ã¯æ
åœè
ã®çºè¡šãèãã質åãæããããæ
åœè
ãšèªèº«ã®è§£éã®å·®ãè¿°ã¹ããªã©ããŠè°è«ããçè§£ãæ·±ãã æ¬¡åã®äºå®ãšæ
åœè
ã®ç¢ºèªãããŠçµäºã ãªããæ
åœè
以å€ã®æ¹ã®äºç¿ã¯ä»»æã§ãåºæ¬çã«ã¯æ
åœè
ã®æ¹ãèšäºãèªãã§èŠçŽããŠçºè¡šããã¹ã¿ã€ã«ã§èŒªèªäŒã¯éå¬ããŸããã 茪èªäŒãéããåŠã³ã«ã€ã㊠ãŸããã®æ¬ãäœãç®çã«æžãããã?ã«ã€ããŠã¯ã15ç« èšèšã®æçŸ©ãšèšèšã®åãåãæ¹ãã§ä»¥äžã®ããã«èè
ã¯æžããŠããŸãã æ¬æžã¯ãœãããŠã§ã¢éçºäžã®æªéãéæ²»ããèšè𿹿³ãèšè¿°ãããã®ã§ããæªéã¯ããŸããŸãªæªäºãåããŸãããããã°æã仿§å€æŽæãã©ã®ããžãã¯ã圱é¿ããŠããã®ã圱é¿ã®ææ¡ãå°é£ã«ãããŸãããŸãã仿§å€æŽæã«ä¿®æ£æŒããèµ·ãããããããã°ãçºçãããªã©ãæ£ç¢ºãªåäœãã§ããããã«ãªããŸã§æéãæµªè²»ãããŸããããããæªéã®æ§è³ªãšæãé¢ä¿ããããããªåè³ªç¹æ§ã¯ã©ãã§ãããããä¿å®æ§ãã¿ãŠãã ããããã·ã¹ãã ãä¿®æ£ããæå¹æ§ãå¹ç床åãããšãããŸãããããã§ããæ¬æžã§åãæ±ã£ãŠããã®ã¯ä¿å®æ§ã«é¢ä¿ããèšèšã§ãã ãã®ããã«1ç« ãã~17ç« ãŸã§ã¯ã»ãŒäžç°ããŠããã®ä¿å®æ§ã«é¢é£ããææ³ã玹ä»ãããŠããŸã 第1ç« ã®ãæªããæ§é ã®åŒå®³ãç¥èŠããããšç¬¬2ç« ã®ãèšèšã®åæ©ãã¯ãã®æ¬ã®å°å
¥éšãšããŠèªã¿ãããã§ããè¯ãèšèšãè¡ãã«ã¯ãŸããæªãèšèšãšã¯ãªã«ã?ãèããŠèªåã®äžã§åºæºãæã€å¿
èŠããããŸãã ãããã£ãæå³ã§æåã«1ç« ã§æªãã³ãŒããšã¯ãªã«ãã®äºäŸãåŠã³ã2ç« ã§ã¯ãèšèšã®åæ©ããšããŠãæå³ããååä»ãã䜿ããçè§£ãå°é£ã«ããæ¡ä»¶åå²ã®ãã¹ãã¯é¿ãããªã©ãåºæ¬çãªææ³ã玹ä»ãããŠããŸãã 第3ç« ã ã¯ã©ã¹èšèš âãã¹ãŠã«ã€ãªããèšèšã®åºç€âãããã¯ã©ã¹èšèšã®è©±ãå§ãŸãã®ã§ãããããã®ç« ããå°ãã¥ã€ãèªåéã®ã³ãŒãã©ããªã®ã?ããšãã話é¡ãããŒã ã¡ã³ããŒå
ã§åºãŠããŸãããå®éã«ããã§æžãããŠããã³ãŒãéãã«ã§ããŠããã®ã?ã ã£ãããä»ã®ããŒã ãéå»ã®çµéšè«ãªã©ã®è©±é¡ãªã©ãåºããªããããŒã å
ã§èšèšã«ã€ããŠãè°è«ãã§ããŠè¯ãã£ãã§ãã ãŸãå人çã«ã¯ç¬¬6ç« ãæ¡ä»¶åå² âè¿·å®®åããåå²åŠçãè§£ãã»ããææ³âãã§ã¯ãswitch caseã䜿ããã«interfaceã䜿ããã¹ãã©ããžãŒãã¿ãŒã³ã§åŠçãåããæ¹æ³ã«ã€ããŠã¯ãµã³ãã«ã³ãŒããæç€ºãããŠããŠããããããã£ãã§ãã 6ç« ä»¥éã«ã€ããŠããããå®è·µçãªãã¯ããã¯ããèšèšã®åãåãæ¹ã«ã€ããŠãæžãããŠããŸããæ°ã«ãªãæ¹ã¯ãã²æ¬èªãæã«åã£ãŠèªãã§ã¿ãã ãã! 茪èªäŒåŸã«åŸãè¯ãäœéšãšããŠã¯ãå®éã«æ¥åã®äŒè©±ã§ãããã£ãŠæ¬ã®äŸã§æžãããŠããæªããã¿ãŒã³ã§ã¯?ããšãã話ãããã£ãŠãå®è£
ã倿Žããæ©äŒããããŸããã ãè¯ãã³ãŒã/æªãã³ãŒãã§åŠã¶èšèšå
¥éãã®èŒªèªäŒãéå¬ããäºã§ãå°ãã¥ã¥ã§ããè¯ãã³ãŒããæžãèªä¿¡ãæãŠããšæããŸãã 茪èªäŒã«åå ããã¡ã³ããŒããã®ã³ã¡ã³ã 茪èªäŒã«åå ã¡ã³ããŒãããææ³ãããã ããã®ã§ã玹ä»ããŸã! ä¿å®ã芳ç¹ã«å®äŸã亀ããªããå®è·µçãªåœ¢ã§ãŸãšããããŠããã®ã§ãéçºãã¬ãã¥ãŒã«ã€ããŠèŠçŽãããæ©äŒãšãªããŸãããã¡ã³ããŒãšãäœéšè«ã亀ããªãã話ãåãããšãã§ããã®ã§ææçŸ©ãªæéã ã£ãšæããŸããã ããã£ãŠãã âã€ããâ ã«ãªã£ãŠãããããªããšãå€ãåºãŠããŠãèªã¿ãªããåèªèïŒãšå°ãåçããïŒã§ããŠãšãŠãããã£ãã§ããããŒã ã¡ã³ããŒãšèšèšã®è¯ãæªãã®ç®ç·ãæããããç¹ã§ããšãŠãæçšã ã£ããšæã£ãŠããŸããåå ã§ããŠããã£ãã§ãã ãµã³ãã«ã³ãŒããå
·äœçãªäºäŸãè±å¯ã§ã身ã®èŠãã®ãããã®ãå€ããåŠã³ããããŸãããåã¡ã³ããŒã®ç¥èŠãåŸããããè¯ãæ©äŒã«ããªããŸããã ãã®æ¬ã®èŒªèªäŒã¯éç®2åç®ã§ããã1床ç®ã§åžåããããªãã£ãéšåããã®ä»æãåºãããæ©äŒã«ãªã£ãããæŽã«ç¥èãæ·±ãŸããŸããããŸããéå»ã®äºäŸãããã®å Žåã©ãããïŒãã¿ãããªè°è«ãæ¯åæãããã®ã§ææçŸ©ãªæéã§ãã ãããã« ãè¯ãã³ãŒããæªãã³ãŒãã§åŠã¶èšèšå
¥éãã®èŒªèªäŒãéããããŒã å
ã§è°è«ããªããèšèšã«ã€ããŠåŠã¹ãæ©äŒãã§ããŸããã ãã®æ¬ãèªãã§ããã¯èªåã®äžã§è¯ãèšèšãæªãèšèšãšã¯äœã?ã®åºæºãæãŠãããã«ãªãããªãã¡ã¯ã¿ãªã³ã°ããéãéžæè¢ãå¢ããŸããã ä»åŸã®æ¥åã§ããã®æ¬ã«ããããŠããå
容ãå
ã«è¯ãèšèšãäœã£ãŠãããããšæããŸã! æåŸã«å®£äŒã§ãããBASE ã§ã¯ãšã³ãžãã¢ãæ¡çšäžã§ã! ä»åã®ãããªèŒªèªäŒã®ä»ã«ã瀟å
LTäŒãªã©éå¬ãããŠããã®ã§èå³ãããæ¹ã¯äžèšã®ç޹ä»è³æããæ¡çšæ
å ±ãããã²ã芧ãã ãã! speakerdeck.com binc.jp
ã¯ããã« Data StrategyããŒã ïŒä»¥äžãDSããŒã ïŒã§DWHãBIããŒã«ã®éçšãããŠãã@shota.imazekiãšäžæ£æ€ç¥ãAWSåºç€éçšãããŠãã @tawamura ã§ãã Aurora MySQL v2ïŒMySQL5.7äºæïŒã2024/10/31ã«æšæºãµããŒãçµäºãšãªããããDSããŒã ã§ã¯2024幎6æã«Aurora MySQL v3ïŒMySQL8.0äºæïŒãžã®ã¢ããã°ã¬ãŒãã宿œããŸããã ãã®éã«åŸããã課é¡ãç¥èŠã«ã€ããŠç޹ä»ããŠãããŸãã䞻㫠AWS DMS ã Amazon RDS ãã«ãŒ/ã°ãªãŒã³ããã〠ãçšããã¢ããã°ã¬ãŒãæ¹æ³ã®è©±ã«ãªããŸãã DSããŒã ã®ã€ã³ãã©æ§æ DSããŒã ã¯BASEã®æ©æ¢°åŠç¿åºç€ãæ§ç¯ã»éçšããŠãããAPIãªã©ãä»ããŠãããã¯ãåŽãžæ©æ¢°åŠç¿ã¢ãã«ã®æšè«çµæãªã©ãè¿ããŠããŸããåŠç¿ã»æšè«ã®ããã«äœ¿ããããã¯ãåŽã®ããŒã¿ã¯DMSãçšããŠãDSç°å¢ã«ã¬ããªã±ãŒã·ã§ã³ããŠããŸãã å
·äœçã«ã¯ãæ¬çªç°å¢ã«ããã¬ããªã«DBãDMSã¿ã¹ã¯ã®ãœãŒã¹ã«æå®ããDSç°å¢ã§äœ¿çšããDBãžãšåæãè¡ã£ãŠããŸãã ãŸããDMSã§åæããDBãããã«ãœãŒã¹ãšããŠæå®ããDMSã®å€æŽæ€ç¥ïŒCDCïŒã«ãã£ãŠååŸããå·®åãAmaon MSKã«æµããŠããŸããããã«ãã£ãŠç¹å®ã®ããŒãã«ã«ããŒã¿ãæ¿å
¥/æŽæ°ããããšããã€ãã³ããååŸããããšãã§ãããããããªã¬ãŒã«workerã§ä»ã®åŠçãè¡ã£ãŠããŸãããããã£ãworkerãã宿å®è¡ããããããã«ããåŠççµæãä¿åããŠããããã®DBãåãDBã¯ã©ã¹ã¿ãŒå
ã«ååšããŠããŸãã ä»åã¢ããã°ã¬ãŒã察象ãšãªã£ãã®ã¯ãå³ã§èµ€æ ã§ç€ºãããDS DBã¯ã©ã¹ã¿ãéšåã«ãªããŸãã äºåæ€èšŒ DSããŒã ã®DBïŒä»¥äžãDS DBïŒã§ã¯äžè¿°ããéããDMSãçšããŠãããã¯ãåŽã®ããŒã¿ãã¬ããªã±ãŒã·ã§ã³ãããŠããŸããDSããŒã ã®æ¹ãã¢ããã°ã¬ãŒããæ©ãã«å®æœããã¹ã±ãžã¥ãŒã«ã§åããŠãããããã¡ãžã£ãŒããŒãžã§ã³åäœã§ã®ããŒãžã§ã³å·®ç°ããã£ãŠãDMSã«ããåæãå¯èœãªã®ããäºåã«æ€èšŒããŸãããã§ããªãå Žåã¯ã¢ããã°ã¬ãŒãã®ã¿ã€ãã³ã°ããããã¯ãåŽãšåãããå¿
èŠãããããã§ãã æ€èšŒæ¹æ³ãšããŠã¯3ã€ã®DBã¯ã©ã¹ã¿ãŒAïŒMySQL5.7ïŒ, BïŒMySQL5.7ïŒ, CïŒMySQL8.0ïŒãçšæãã以äžã®ãããªåœ¢ã§DMS飿ºãè¡ããŸããã ãã®åŸãBãMySQL8.0ã«ã¢ããã°ã¬ãŒããããããšã§2ã€ã®äºè±¡ãåæã«èŠãããšãã§ããŸãã AïŒMySQL5.7ïŒâBïŒMySQL8.0ïŒ: DMS飿ºå
ïŒDS DBïŒãã¢ããã°ã¬ãŒãããæã®æå ããã«ã€ããŠã¯ç¹ã«åé¡ã¯çºçããŸããã§ãã BïŒMySQL5.7ïŒâCïŒMySQL8.0ïŒ: DMS飿ºå
ïŒãããã¯ãåŽã®DBïŒãã¢ããã°ã¬ãŒãããæã®æå BãMySQL8.0ã«ã¢ããã°ã¬ãŒãããããšãBâCãžã®DMSã¿ã¹ã¯ã倱æããŠããŸããã DMS飿ºã®éã«ONã«ããŠããå¿
èŠã®ããã·ã¹ãã 倿°log_binãOFFã«ãªã£ãŠããããã§ããã ãã¡ã ãåèã«åèµ·åãããšããããšã©ãŒã¯è§£æ¶ãããŸããã äžéšãšã©ãŒã¯çºçããŸããããã¡ãžã£ãŒããŒãžã§ã³åäœã§ã®ããŒãžã§ã³å·®ç°ããã£ãŠãDMS飿ºã¯åé¡ãªããšå€æããŸããããŸãDMS飿ºå
ïŒãããã¯ãåŽã®DBïŒãã¢ããã°ã¬ãŒãããéã«ã¯log_binã®å€ã«æ³šæããå¿
èŠãããããšãåãããŸããã ã¢ããã°ã¬ãŒãæ¹æ³ã®æ€èš Amazon Aurora MySQL ããŒãžã§ã³ 3ïŒMySQL 8.0 äºæïŒãžã®ã¢ããã°ã¬ãŒã ãåèã«ä»¥äž3ã€ã®éžæè¢ããã¢ããã°ã¬ãŒãæ¹æ³ãæ€èšããŸããã ã€ã³ãã¬ãŒã¹ã¢ããã°ã¬ãŒã ãã«ãŒ/ã°ãªãŒã³ããã〠ã¹ãããã·ã§ããããã®åŸ©å
ã¢ããã°ã¬ãŒãåŸã«åé¡ãçºçããŠããæ§ããŒãžã§ã³ã«æ»ãå€ãã¯ã©ã¹ã¿ãŒã«åãæ¿ããããšãå¯èœãªç¹ãããŠã³ã¿ã€ã ãæå°éã«æããããç¹ãããã«ãŒ/ã°ãªãŒã³ãããã€ãéžæããŸããã ãã«ãŒ/ã°ãªãŒã³ãããã€ã¯ããã«ãŒç°å¢ïŒçšŒåäžã®DBïŒãšã¯å¥ã§ã°ãªãŒã³ç°å¢ïŒMySQL8.0ã«ã¢ããã°ã¬ãŒããããDBïŒãæ§ç¯ããŠãããä»»æã®ã¿ã€ãã³ã°ã§æ¬çªç°å¢ããã«ãŒç°å¢ããã°ãªãŒã³ç°å¢ã«åãæ¿ãããã®ã§ããããŒã¿ã¯ãã«ãŒç°å¢ããã°ãªãŒã³ç°å¢ã«ã¬ããªã±ãŒã·ã§ã³ãããŠãããããå·®åãçããããšã¯ãããŸããã æ¬¡ã«AWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã䜿ãããã°ãªãŒã³ç°å¢ãDMSãçšããŠèªåã§æ§ç¯ãããã®æ€èšãè¡ããŸãããåŸè
ã¯æºåã«æéããããã®ã§ãããAWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã§ããŒã«ããã¯ãè¡ãããããªã©äžæãªç¹ãåœåããã€ããããåé¢DMSã®ç°å¢æ§ç¯ã«é¢ããŠã¯æ¢ã«ç¥èŠãããããŸãå°ãããšããªãããã ã£ãã®ã§èªåã§æ§ç¯ããããšã«ããŸããã DMSãçšããã°ãªãŒã³ç°å¢ã®æ§ç¯ DMSãçšããŠãã«ãŒç°å¢ã®ããŒã¿ãã¬ããªã±ãŒã·ã§ã³ããæºåãããŠããŸãããããã®äœæ¥ãè¡ãªã£ãŠãããã¡ã«äžã€ã®èª²é¡ã«ã¶ã€ãããŸããã ã«ã©ã ã®ããŒã¿ãµã€ãºã倧ãããããšDMSã¿ã¹ã¯ãã¿ã€ã ã¢ãŠãã«ãªã ãŸããDMSã§DS DBã®ããŒã¿ãã°ãªãŒã³ç°å¢ã«åæããŠãå
šãåãç¶æ
ã®DBãæ§ç¯ããããšã«ããŸããã DS DBã«ã¯ããããã¯ãããDMSã§åæããŠããããŒãã«ã«å ããŠãDSããŒã ã§åãããŠãããªãœãŒã¹ãæ°èŠä¿åã»æŽæ°ãè¡ãªã£ãŠããDBãããŒãã«ãå«ãŸããŠããŸãããã®ããŒãã«ã®äžéšã§ã MEDIUMTEXT ãªã©å€§ããã®ããŒã¿ïŒLOB: ã©ãŒãžãã€ããªãªããžã§ã¯ãïŒãä¿åããŠããã«ã©ã ãååšããŠããŸãã DMSã§ãããã®LOBåãå«ãããŒãã«ã®ã¬ããªã±ãŒã·ã§ã³ãè¡ãéãéåžžã®ãã€ããªãã°ã«ããåæã§ã¯ãªããéžæå¯èœãªLOBã¢ãŒãã«ããåŠçæ¹æ³ãé©çšããããšã«ãªããŸãã AWS DMS ã¿ã¹ã¯ã§ã®ãœãŒã¹ããŒã¿ããŒã¹ã® LOB ãµããŒãã®èšå® ã°ãªãŒã³ç°å¢ãžã¬ããªã±ãŒã·ã§ã³ãè¡ãDMSã¿ã¹ã¯ãå®è¡ããŠãããšã以äžã®ãããªãšã©ãŒãçºçããŸããã Table ' db_test ' . ' table_test ' was errored/suspended (subtask 1 thread 1 ). Failed (retcode -1 ) to execute statement; RetCode: SQL_ERROR SqlState: HY000 NativeError: 3024 Message: [MySQL][ODBC 8.0 (w) Driver][mysqld -5.7 . 12 - log ]Query execution was interrupted, maximum statement execution time exceeded (replicationtask.c: 3066 ) LOBåã«å¯ŸããŠã¯ãã¹ããŒãã¡ã³ããçºè¡ããŠå¥éããŒã¿ãååŸãããããªã®ã§ãããããã§ã¿ã€ã ã¢ãŠããçºçãããã®ããšæãããŸãã AWSã«ãŠãµããŒãã±ãŒã¹ãäœæããç¶æ³ãå
±æãã€ã€ä»¥äžã®ãããªé
ç®ã宿œããŸããã èªäž»çã«æ€èšŒïŒDMSã¿ã¹ã¯èšå®ïŒ CommitRate ã1000ãã100ã« TransactionConsistencyTimeout ã60ãã600ã« HistoryTimeslotInMinutes ã5ãã60ã« ãµããŒãããå
±æãåã宿œïŒDMSãšã³ããã€ã³ãèšå®ïŒ ExecuteTimeout ã60ãã3600ã« ããããããã®å€æŽãè¡ãªã£ãŠãæ¹åãã¿ãããŸããã§ããã ç¶ããŠããã€ãã®å¯Ÿå¿æ¹éãæäŸããŠããã ããã®ã§ãããããä»¥äžæéããããŠå¯Ÿçãé²ãããããAWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã詊ããæ¹ãè¯ããããšæãç¹ãããã€ãçºçããŠããŸããã DS DBã®ããŒã¿ã¯å°ãããªãã®ã§ãDMSã«ããåæãããªãæéããããããšãæ³å®ããã èªåã§ãã«ãŒ/ã°ãªãŒã³ãããã€ãè¡ããšããŠããæžã蟌ã¿ãè¡ãªã£ãŠãããªãœãŒã¹ãããããã«ãããŒã¿ã®äžæŽåãªãããŒã«ããã¯ãè¡ãããšã¯ã»ãŒäžå¯èœ ä»åŸãã¢ããã°ã¬ãŒãã®æ©äŒã¯ããã®ã§ãå
¬åŒæ©èœã§æ¥œã«å¯Ÿå¿ã§ããããšãããã£ãŠããã°ããã«è¶ããããšã¯ãªã ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã§ãæ³å®ããŠãããã¹ããåãæ»ããã§ããã 以äžããDMSãçšãããã«ãŒ/ã°ãªãŒã³ãããã€ã¯æå¿µããAWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœãäœ¿ãæ¹éã«å€æŽããŸããã AWSãã«ãŒ/ã°ãªãŒã³ããã〠äºåç¢ºèª æºåã«ã€ããŠã¯ ãã«ãŒ/ã°ãªãŒã³ãããã€ã®äœæ ãåèã«é²ããŠãããŸããããã«ãŒ/ã°ãªãŒã³ãããã€äœææã«èæ
®ãã¹ãç¹ãåæããŠãããŸãã ãã«ãŒ/ã°ãªãŒã³ãããã€ã§ãµããŒããããŠããªãæ©èœãå©çšããŠããã 以äžã®æ©èœã¯ãã«ãŒ/ã°ãªãŒã³ãããã€ã§ãµããŒããããŠããªããããå©çšããŠããå Žåã¯äžæçã«æ¥ç¶ãåããªã©ã®æ€èšãå¿
èŠã«ãªããŸããDS DBã§ã¯å©çšããŠããªãã£ãããç¹ã«å°ãããšã¯ãããŸããã§ããã Amazon RDS Proxy ã«ã¹ã±ãŒããªãŒãã¬ããªã« ã¯ãã¹ãªãŒãžã§ã³ãªãŒãã¬ããªã« AWS CloudFormation ãã«ã AZ DB ã¯ã©ã¹ã¿ãŒã®ããã〠ãã«ãŒç°å¢ã®DBã¯ã©ã¹ã¿ãŒã®binary loggingãONã«ãªã£ãŠããã ãã«ãŒç°å¢ããã°ãªãŒã³ç°å¢ãžã®ã¬ããªã±ãŒã·ã§ã³ãè¡ãããã«ãã€ããªãã°ãå¿
èŠã«ãªãããããã©ã¡ãŒã¿ã°ã«ãŒãã® binlog_format ã確èªããå¿
èŠããããŸãããã©ãŒãããã¯è€æ°ãããã©ãã§ãã¬ããªã±ãŒã·ã§ã³ã§ããããã§ããæšå¥šã¯ ROW ã§ãããDS DBã§ã¯å
ã
ãDMSãå©çšããŠããç¹ããå
ã
ã ROW ã«èšå®ããŠããã®ã§ãã¡ããç¹ã«åé¡ãªãã£ãã§ãã ãã«ãŒ/ã°ãªãŒã³ãããã€ã®äœæ äœæèªäœã¯ã°ãªãŒã³ç°å¢ã®ãšã³ãžã³ããŒãžã§ã³ã®èšå®ãäºåã«äœæããŠããããã©ã¡ãŒã¿ã°ã«ãŒããæå®ããã ãã ã£ãã®ã§ç°¡åã§ããã https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-creating.html#blue-green-deployments-creating-preparing-mysql äœæéå§åŸããŸããã«ãŒç°å¢ã®DBã¯ã©ã¹ã¿ãŒãè€è£œåŸã«ã¢ããã°ã¬ãŒããããŠã°ãªãŒã³ç°å¢ãæ§ç¯ããŸããè€è£œèªäœã¯æ°ååçšåºŠã§çµãã£ãã®ã§ãããã¢ããã°ã¬ãŒãæã«ãšã©ãŒã«ãªããŸããã Database cluster is in a state that cannot be upgraded: Upgrade prechecks failed. For more details, see the upgrade-prechecks.log file upgrade-prechecks.log ãã¡ã€ã«ã確èªãããšããããšããããŒãã«ã®ããŒãã£ã·ã§ã³ãã¢ããã°ã¬ãŒãããå¿
èŠãããããã§ãã Partitioning upgrade required. Please dump /reload to fix it or do: ALTER TABLE `database`.` table ` UPGRADE PARTITIONING " 察象ã®ããŒãã«ã¯DSããŒã ã§çŸåšå©çšããŠããªããã®ã ã£ããããä»åã¯åé€ããããšã«ããŸãããå¿
èŠãªå Žåã¯ãšã©ãŒã®æ¡å
ã«åŸã£ãп޿°ããããããšã§è§£æ¶ã§ãããšæããŸãã ååºŠäœæäœæ¥ãè¡ããã°ãªãŒã³ç°å¢ã®æ§ç¯ãå®äºããŸãããæ§ç¯ããæéã¯å€§äœ1æéçšåºŠã§ããã æ€èšŒ ã°ãªãŒã³ç°å¢ã®æ§ç¯ãçµãã£ããããDS DBåšãã§åããŠããããããAPIãåãããŠã¿ãŠãåäœã«åé¡ããªããã§ããéã確èªãè¡ããŸããã ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã§ã¯ãã°ãªãŒã³ç°å¢æ§ç¯åŸã«ã°ãªãŒã³ç°å¢ã«æ¥ç¶ãè¡ãããšã³ããã€ã³ããäœæãããŸãïŒããŒã¿ã¯ãã«ãŒç°å¢ã®ãã®ãè«çã¬ããªã±ãŒã·ã§ã³ãããŠãããåºæ¬çã«åããã®ãæ±ããïŒãããã«ããããã¹ãããããªãœãŒã¹ã®åãå
ãã°ãªãŒã³ã®ãšã³ããã€ã³ãã«åããŠå®è¡ããŠã¿ãããšã§ãåãæ¿ãåŸã®åé¡ãçºçããªãããäºåã«ç¢ºèªããããšãã§ããŸãã https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-overview.html 確èªã®äžã§ãæžã蟌ã¿åŠçã®ãã¹ããè¡ãããšãããšããããã©ã¡ãŒã¿ã°ã«ãŒãã®read_onlyã¯0ã«ãªã£ãŠããããã°ãªãŒã³ç°å¢åŽã§ã¯ONã®ç¶æ
ã«ãªã£ãŠããããšã«æ°ã¥ããŸããã ãã©ã¡ãŒã¿ã°ã«ãŒã MySQL MySQL [(none)]> show variables like ' read_only ' ; + ---------------+-------+ | Variable_name | Value | + ---------------+-------+ | read_only | ON | + ---------------+-------+ AWSã®ããã¥ã¡ã³ã ã§ãã°ãªãŒã³ç°å¢ã¯èªã¿åãå°çšã«ä¿ã€ããšãå§ããŠããããããã®ãããªå·®ç°ãçãŸããŠããã®ããšæšæž¬ããŠããŸãããªããã¹ã€ãããªãŒããŒããéã«ã¯read_onlyãã©ã¡ãŒã¿ã¯OFFã«ãªã£ãŠããŸããã®ã§ãæ°ã«ããå¿
èŠãããã®ã¯ãã¹ãæã®ã¿ã§ããã ãã¹ãäžã¯ãã°ãªãŒã³ç°å¢ã®ããŒã¿ããŒã¹ãèªã¿åãå°çšã«ä¿ã€ããšããå§ãããŸããã°ãªãŒã³ç°å¢ã§ã¯ã¬ããªã±ãŒã·ã§ã³ã®ç«¶åãçºçããå¯èœæ§ããããããæžãèŸŒã¿æäœãæå¹ã«ããå Žåã¯æ³šæããŠãã ããããŸããã¹ã€ãããªãŒããŒåŸã«æ¬çšŒåããŒã¿ããŒã¹ã«æå³ããªãããŒã¿ãçºçããå¯èœæ§ããããŸããAurora MySQL ã®æžãèŸŒã¿æäœãæå¹ã«ããã«ã¯ã read_only  ãã©ã¡ãŒã¿ã 0  ã«èšå®ããDB ã€ã³ã¹ã¿ã³ã¹ãåèµ·åããŸãã 宿œ ã¡ã³ããã³ã¹åœæ¥ãDMS, CDCã¿ã¹ã¯ã忢åŸã«ã°ãªãŒã³ç°å¢ãžã®åãæ¿ãã宿œããŸãããããŠã³ã¿ã€ã ã¯3åçšåºŠã§çµããããã®åãæ¿ãèªäœã¯ç¹ã«åé¡ãçºçããŸããã§ããã ãã ãDMSãCDCã¿ã¹ã¯ãåéããåŸãDS DBâAmazon MSKãžã®CDCã¿ã¹ã¯ããšã©ãŒãšãªã£ãŠããŸããã確èªãããšãããlog_binãOFFã«ãªã£ãŠããããšãããããŸããã show global variables like " log_bin " ; + ---------------+-------+ | Variable_name | Value | + ---------------+-------+ | log_bin | OFF | + ---------------+-------+ DMSã®äºåæ€èšŒã®æç¹ã§åæ§ã®çŸè±¡ãèµ·ããŠãããããã©ã€ã¿ãŒã€ã³ã¹ã¿ã³ã¹ãåèµ·åããŠã¿ããšãããã©ã€ã¿ãŒã€ã³ã¹ã¿ã³ã¹ã§log_bin=ONã«ãªã£ãŠCDCã¿ã¹ã¯ãåãããã«ãªããŸãããåèµ·åèªäœã¯1åçšåºŠã§å®äºããŸããã ãããã« AWSã®ãã«ãŒ/ã°ãªãŒã³ãããã€æ©èœã¯ããã©ã¡ãŒã¿åšãã«ã¯å°ãæ©ãŸãããŸããã倧ããåé¡ã«ã¯ãªããªãã£ãã§ãããç°¡åã«å©çšã§ããŠå®æœãããã«çµããããã®ã§éåžžã«ããã£ãã§ããä»åŸã®DS DBé¢é£ã®ã¡ã³ããã³ã¹æ¹æ³ã«ãããŠæåãªåè£ã«ãªããšæããŸããã æåŸãšãªããŸãããåŒç€Ÿã§ã¯ããŒã¿ãšã³ãžãã¢ãåéããŠããŸãããèå³ã®ããæ¹ã¯æ°è»œã«ãå¿åãã ããïŒ open.talentio.com
welcome fintech communityã®ãããŒããã£ãããïŒ ããã«ã¡ã¯ïŒ BASE BANK Divisionã®æŸéªã§ãã ä»åãéèæ±ºæžã®æè¡é åãäžå¿ãšããã³ãã¥ããã£ãç«ã¡äžãã6æ20æ¥ã«ã€ãã³ããåéå¬ããŸããã ãã®æš¡æ§ããå±ãããŸãã Welcome Fintech Communityãšã¯? ç¹å®ã®æè¡ãè·èœã«é¢ããã³ãã¥ããã£ã¯æ°å€ããããŸããfintechã«é¢ããã³ãã¥ããã£ã¯å°ãªããfinteché åãçãäžããŠããããã«ç¥èŠããæ©ã¿ã®å
±æãã§ãããããã£ãšãªãŒãã³ãªã³ãã¥ããã£ãã»ãããªãšæããŠããŸããã ãããªãšããEMããããŒãã¢ããã§ã¹ããŒããã³ã¯ç€Ÿã® äžè°·ãã ãšåºäŒãããfintechçéã§éãŸã£ãŠãã£ãšè²ããªè©±ãããããïŒïŒïŒããšçãäžãã£ãçµæãã®ã³ãã¥ããã£ãç«ã¡äžããããšã«ããŸããã welcome-fintech.connpass.com åœæ¥ã®æ§å LT åžäŒã®æ³å·ããããããçãäžãäžæã ç³ã蟌ã¿ã«ã€ããŠã¯ããããããããšã«40人æ ãäžæãã£ã±ãã«ãªãã»ã©ã®çæ³ïŒ ããããã€ãã³ãã¯ç³èŸŒã¿äººæ°ã«å¯ŸããŠ6~70%ãããæ¥å ŽããŠãã ããã°åŸ¡ã®åãšèšãããŠããŸããã80%è¿ãæ¹ã«ãæ¥å Žããã ããç±éã®é«ããæããŸããã æåã¯BASE BANKãããæ ¹æ¬ããã® âBASEã«ãŒãããèŠã決æžãµãŒãã¹"ã ã«ãŒã決æžã®åºæ¬çãªä»çµã¿ããããå®çŸããããã®ãBASEã«ãŒãã ã®ã·ã¹ãã æ§æãããã«ã¯ãã£ã³ããŒã³ãªã©ã®æœçãã©ãå®çŸããã?ãªã©å
·äœçãªè©±ãŸã§ããŠããããŸããã æ±ºæžãã¿ãŒã³ãæ¬åœã«å€æ§ã§å®éã«ãªã¯ãšã¹ããæ¥ããŸã§ååšèªäœç¥ããªããã®ãããŸã«çºçãããšãã話ã«ãã«ãŒã決æžã«é¢ãã£ãŠããã£ãããåå è
ã®æ¹ã
ãæ·±ãé ·ããŠãããçããèŠåŽãããŠãããã ãªã»ã»ã»ãšæããŸããã BASE BANKã®æ ¹æ¬ãã speakerdeck.com æ¬¡ã«æ ªåŒäŒç€Ÿã¹ããŒããã³ã¯ã®CTO å äºãã ããâã«ãŒãçºè¡äŒç€Ÿ(ã€ã·ã¥ã¢)ãæ¯ããã·ã¹ãã 解説âãšããã¿ã€ãã«ã§ãB/43ãã®ã¢ãŒããã¯ãã£ã«ã€ããŠçºè¡šããã ããŸããã ã€ã·ã¥ã¢ãšããç«å Žã§ã¯ãBASEã«ãŒãããšåãã§ãããããæ·±ãVISAã®æ±ºæžãããã¯ãŒã¯ãšæ¥ç¶ããŠããããPCI DSSãšããã»ãã¥ãªãã£åºæºãã¯ãªã¢ããå¿
èŠãããããã®ããã«ã©ã®ãããªæè¡éžå®ãã¢ãŒããã¯ãã£æ§ç¯ãè¡ã£ãŠããã赀裞ã
ã«çºè¡šããŠãã ãããŸãããããªãã€ãã«ãŒãã®ãããã¯ããç«ã¡äžããæ©äŒãããããã°å¿
èªã®è³æã§ãïŒïŒ ã¹ããŒããã³ã¯ã®å äºãã speakerdeck.com æåŸã«PAYæ ªåŒäŒç€Ÿããã¯ãªã¹ããã PAY瀟ã§ãPCI DSSã®åºæºãã¯ãªã¢ããããã®æ§ã
ãªå¯Ÿå¿ãè¡ã£ãŠããã®ã§ãããä»å¹Žå®éã«çºçãã察å¿äºæ¡ã«ã€ããŠãµã¹ãã³ã¹ã®ããšã远äœéšããŠãããããªçºè¡šãããŠããããŸããã è©³çŽ°ã¯æ¯éè³æãèŠãŠã¿ãªããã远äœéšããŠããã ãããã§ãããåé¡ãç¹å®ããç¡äºè§£æ±ºãããšãã«ã¯äŒå Žãããããšæå£°ãäžãã£ãŠãããäŒå Žãäžäœæã«å
ãŸããŠããŸããã PAYã®ã¯ãªã¹ãã speakerdeck.com ããã«ãã£ã¹ã«ãã·ã§ã³ ããã«ãã£ã¹ã«ãã·ã§ã³ã§ã¯ãäºåã«çšæããŠããããŒããšXã«æçš¿ããã ãã質åãæŸããªããé²ããŠãããŸããã æ±ºæžã®ç¢ºå®ããã£ã³ã»ã«ãèæ
®ãããã£ã³ããŒã³äºç®èšå®ã®è³ªåããPCI DSSãèæ
®ããã·ã¹ãã åå²ã«ä»ããŠã®èå¯ãªã©ãæããã«fintechçµéšè
ããã®è³ªåã ïŒãšããå
容ãããã倧ãã«çãäžãããèŠããŸããã ããã«ãã£ã¹ã«ãã·ã§ã³ã®æ§å æèŠªäŒ LTãããã«ãã£ã¹ã«ãã·ã§ã³ã®æéãè¶³ããªãã£ãã®ããæèŠªäŒã§ãåæ¹ããæ±ºæžãééãPCI DSSãªã©æ§ã
ãªæ±ºæžè«çŸ©ãèãããéåžžã«çãäžãã£ãŠããŸããã æ¬¡ããããããŒãã§è©±ãããïŒãšããå£°ãæ¬¡åã¯ãã€ãããã§ããïŒïŒïŒãªã©æ©é次åéå¬ã®èŠæãããã ããªã©åå ããŠãã ãã£ãçããã®ç±éãæåããæåŸãŸã§é«ãããã®ã³ãã¥ããã£ãç«ã¡äžããæå³ããã£ããªããšéåžžã«ãããããã£ãã§ãã æèŠªäŒã®æ§å ãããã« æ£çŽããçšåºŠéèŠã¯ããã ãããªãšã¯æã£ãŠãããã®ã®ãæ³å®ä»¥äžã®çãäžãããèŠããä»åŸãç¶ç¶ããŠãã®ã³ãã¥ããã£ãè²ãŠãŠããããïŒãšæããã€ãã³ãã«ãªããŸããã åœæ¥ã®æ§åãXã®ããã·ã¥ã¿ã°ã远ããšããã«ããããããããšæããŸããæ¯éã芧ã«ãªã£ãŠã¿ãŠãã ããã https://x.com/hashtag/welcome_fintech æåŸã«ããã®å ŽãåããŠå
±æžããŠãã ãã£ãã¹ããŒããã³ã¯ããããããŠãåå ã®çããåæ¹ã«æè¬ç³ãäžããŸããæ¬åœã«ããããšãããããŸããïŒ ãŸã æªå®ã§ããã第2å以éãéå¬ããããšæã£ãŠããã®ã§ããã²ãåå ãã ããïŒ
ããã«ã¡ã¯ãBASE BANKã§ãã å
é±BASE BANKã¡ã³ããŒã®ç»å£ãã€ãã³ãåå ãå¶ç¶éãªã£ããããä»é±ã¯å®è³ªã€ãã³ãã¬ããŠã£ãŒã¯ãšãªã£ãŠãããŸãã ä»åã¯å»ã6æ21, 22æ¥ã«éå¬ãããã¹ã¯ã©ã ãã§ã¹å€§éª2024ã§ã®ç»å£ã«ã€ããŠã³ã¡ã³ãããå±ãããŸãïŒ ã¹ã¯ã©ã ãã§ã¹å€§éª2024 ä»ååå ããã¹ã¯ã©ã ãã§ã¹å€§éªã¯ããªã³ã©ã€ã³éå¬ã§ã¯ãããŸãã倧éªãã¯ãããšããåãµãã©ã€ãäŒå Žãååšãããã©ãã¯ããšã«åäŒå Žã®ååãã€ããããŠããŸããã ãã®ãããã¹ã¯ã©ã ãã§ã¹â倧éªâã®âä»å°âãã©ãã¯ã ãâèãéâäŒå Žããç»å£ãªã©ããªããªããã€ã³ã³ããã¹ããªç¶æ
ã«ãªã£ãŠãã人ãããããŠããŒã¯ã§ããããŸã話ã®çš®ãšãªã£ãŠããŸããã âãºãŒã ã€ã³âãšéæã£ãŠåäŒå Žã®æš¡æ§ãäžç¶ããããšãªã³ã©ã€ã³ãªãã§ã¯ã®äº€æµãããã€ã€ãåäŒå Žããšã«ãã¯ãŒã¯ã·ã§ãããæèŠªäŒã倧ãã«çãäžãããªã©ããªã³ã©ã€ã³ãšãªãã©ã€ã³ã®äž¡æ¹ã®ã¡ãªãããæå€§é掻ãããå Žã€ããããããŠããŸããã ã¹ã¯ã©ã ãã§ã¹ã«é¢ããã¿ãªããã®ã€ãã³ãéå¶ã¹ãã«ã®é«ããèã§æããããšãã§ãããšãŠãåŠã³ãå€ã楜ããã£ãã§ãã ä»åã®ã»ãã·ã§ã³ BASE BANKããã¯æŸéª( @applepine1125 )ãšæ³å·( @gimupop )ã®2åãç»å£ããŸãããã¡ãªã¿ã«2人ãšãä»åã®ç»å£ãã¹ã¯ã©ã ãã§ã¹ååå ã§ããïŒ æ³å· -ãã¢ãžã£ã€ã«ãœãããŠã§ã¢éçºå®£èšããå®è·µããããã«äºæ¥è²¬ä»»è
ã«ãªã話 Scrum Fest Osaka 2024 - 「アジャイルソフトウェア開発宣言」を実践するために事業責任者になる話 | ConfEngine - Conference Platform ç»å£è
ã³ã¡ã³ã XPç¥ããžã®åå çµéšã¯ãããŸããããã¢ãžã£ã€ã«ã³ãã¥ããã£ãžã®åå ã¯ä»åãã»ãŒåããŠã§ããã ãªã¢ãŒãé
ä¿¡ã®ä»çµã¿ãæŽã£ãŠãããµãã©ã€ãäŒå Žãšãªã³ã©ã€ã³ãåæã«ç¹ãã£ãŠããŸããã人ã®é¡ãèŠããå ŽæãçšæããŠããã ããã®ã§ãéåžžã«çºè¡šããããã£ãã§ããç©ºæ°æããšãŠãæž©ããã45åéè空ã«åãã£ãŠçºè¡šãç¶ããã®ã¯èŸããªãŒãšæã£ãŠããäžã§éåžžã«å©ãããŸããããªã³ã©ã€ã³ãªã®ã«éãŸããŠãçµäºåŸé£²ã¿äŒãã§ããäœéšãæé«ã§ãããåå·è食ãã©ãã¯ã©ãã ä»åã®ç§ã®çºè¡šã¯WebãµãŒãã¹ãäœããªããããã¯ããããŒãžã£ãŒã¯äºæ¥è²¬ä»»è
ã«ãªããšãããè³ççãªå§åŒ·ãã¡ãã»ãŒãžãªãã§ãããè³æèªãã§ããã ãããšçŽåŸããã ããã»ã»ã»ã¯ãïŒ BASE BANKã®ããŒã äœãã®èæ¯ãèŠããçºè¡šã§ããããšæããŸãã åç»ãåŸæ¥åºããããªã®ã§ã楜ãã¿ã«ãåŸ
ã¡ããã ããŸããšã æŸéª - æ°èŠäºæ¥ç«ã¡äžããã°ããŒã¹ã§ãã¡ããš"ãã£ã¹ã«ããªãŒ"ãç¶ããããã¢ãžã£ã€ã«çµç¹ã®äœãæ¹ Scrum Fest Osaka 2024 - 新規事業立ち上げ、グロースできちんと"ディスカバリー"し続けられるアジャイル組織の作り方 | ConfEngine - Conference Platform speakerdeck.com ç»å£è
ã³ã¡ã³ã ä»åã¹ã¯ã©ã ãã§ã¹å€§éªã«ãŠã¹ã¯ã©ã ãã§ã¹èªäœã«ååå ãåç»å£ãããŠããã ããŸããã ã¯ããã¯ã©ããã£ãé°å²æ°ãããããªãã£ãã®ã§ãããä»ã®æ¹ã
ã®çºè¡šããåŸããã®ãéåžžã«å€ãã£ãã®ã¯ãã¡ãããç»å£è
ã ãã§ãªãåå è
å士ã§ãçžäºã«ã³ãã¥ãã±ãŒã·ã§ã³ããšãå ŽãèšããããŠããããšãåŠã³ãæå€§åããããã®å·¥å€«ãéæã«æœãããŠããéåžžã«åšã®å€§ããã³ãã¥ããã£ã ãªããšæããŸããã èªåã¯æéã®éœåã§æèŠªäŒã«ã¯åå ã§ããªãã£ãã®ã§ãããåå è
çšã®Discordã«åå°ã®æèŠªäŒã®æ¥œããããªåçãäžãã£ãŠãããæ¬¡ã¯çµ¶å¯ŸæèŠªäŒãŸã§åå ãããã»ã»ã»ïŒãšå¿ã«æ±ºããŸããã çºè¡šã§ã¯ããã ã¹ããŒãã£ã«ã¢ãŠããããããã ãã§ãªããã¡ãããšä»®èª¬æ€èšŒã®ãµã€ã¯ã«ãåãç¶ãããããããªçµç¹ã¥ããã倧äºã ãïŒãšãã話ãããŸããã æ°èŠäºæ¥ç«ã¡äžããã°ããŒã¹ææã¯ã©ãããŠãã¢ãŠããããã«ã°ããç®ãè¡ããã¡ãããããŸããããããããç¶æ³ããäžå¯§ãã€çŽ æ©ããã£ã¹ã«ããªãŒãµã€ã¯ã«ãåããâæ£ããâãããã¯ããäœãç¶ããããšãäœãã倧äºã ãšæã£ãŠããã®ã§ãåããããªç¶æ³ã®æ¹ãããã£ãããã°ãã²äžäºäŸãšããŠåèã«ããŠããã ããã°ãšæã£ãŠããŸãã ãããã« ã©ããããªã³ã©ã€ã³ãšãªãã©ã€ã³ã®ãã€ããªãã圢åŒã§ã®éå¬ã¯ä»åãæåŸã ã£ãããã§ã次å以éã¯ãªãã©ã€ã³éå¬ã«ãªãããã§ãã åäŒå Žã®ç±éãé«ããããããªå°æ¹ã§ããããªä»²éãšåºäŒã£ãŠã¿ãããšæã£ãã®ã§ãä»åŸããŸãåå ããŠããããã§ãïŒ æåŸã«å®£äŒã§ãããBASE BANKã§ã¯ä»åçºè¡šãããããªäºæ¥ã¥ãããçµç¹ã¥ãããäžç·ã«ãã£ãŠãã£ãŠããã仲éãåéããŠããŸãïŒ æè¡ãçµç¹ãäºæ¥ããªãã§ãããã®ã§ããBASE BANKã«èå³ãæã£ãŠãã ãã£ãæ¹ãããããã²ã話ããŸãããïŒãåŸ
ã¡ããŠããŸãïŒ open.talentio.com
ã¯ããã« BASE BANK Division ã§ ãã«ãµã€ã¯ã«ãšã³ãžã㢠ãããŠãã02 ïŒ @cocoeyes02 ïŒã§ãã 2024/06/22ïŒåïŒã«éå¬ãããPHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ 2024ã«ç»å£ããŸãããä»åã®èšäºã§ã¯ç»å£ã«ã€ããŠã®ã³ã¡ã³ããšãäŒå Žã®æ§åã«ã€ããŠãå±ãããŸãïŒ ä»åã®ã»ãã·ã§ã³ ä»åã¯15åæ ã§ã®ç»å£ã§ãã speakerdeck.com 02 @cocoeyes02 ããã®ããŒã¯ãã¯ããŸã£ãŠããŸãâ£ïž #phpconfuk #hall_hz https://t.co/AFxNus3Zay pic.twitter.com/DyCkj3fD8D — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ æéãèš±ãéããPHPUnit 11ã®ã¢ããããŒãã«ã€ããŠè©±ããŸããïŒ Ask the Speakerã§èããŠãããšãååã®PHPUnit 10ãå«ãPHPUnitã®ããŒãžã§ã³ã¢ããã«èŠåŽããŠããæ¹ãå€ãããã«æããŸããã æåã¯èå³ãç»å£ã®ãã¿ã«ãªããšããçç±ããå§ããPHPUnitã®åŠç¿ã§ããããçŸåšã¯å°æ¥ã®å¿
èŠæ§ãæããŠåãçµãã§ããŸããä»åŸããç¿å¹Žã«ãªãªãŒã¹ãããPHPUnit 12ã«ã€ããŠãããŸã 話ããŠããªãPHPUnit 10 / 11 ã®å€æŽç¹ãªã©ãããã°ãç»å£ã§è©±ããã°ãšæã£ãŠããŸãã çŸå°ã®æ§å ããããã¯ãçŸå°ã®æ§åãäžéšãå±ãããŸãïŒ ãªãŒããã³ã° ãªãŒããã³ã°ã¯å®è¡å§å¡é·ã®å
æ°æº¢ããæšæ¶ããã¹ã¿ãŒãããŸããã æã«ãé¢ãããå€ãã®äººãåå ããŠããããªãŒããã³ã°ã®æç¹ã§ã¹ã¿ãããåå è
ã®ç±éã®é«ããæããŸããã #phpconfuk 2024ãéå¹ã§ãð å®è¡å§å¡é· @BkNkbot ã®ãªãŒããã³ã°ããã¹ã¿ãŒãâ£ïž pic.twitter.com/WE182JzXOW — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ èªç±ã«è¡šçŸã§ããããŒã ã«ãŒã åå è
ã®ããŒã ã«ãŒãã¯ãèªåã§æžãããã屿§ã·ãŒã«ïŒæ®æ®µè§Šã£ãŠããæè¡ããããŒã«ãç緎床ãªã©ïŒã貌ã£ãããšãèªç±ã«è¡šçŸã§ããããã«ãªã£ãŠããŸããã ã©ããªããã¯ã°ã©ãŠã³ãããã£ã©ã¯ã¿ãŒã®äººãåå ããŠããã®ããã²ãšç®ã§ãããããã«ãªã£ãŠããŠæåã®è©±é¡ãåºããããã£ãã§ãã ããŒã ã«ãŒããæžãããã·ãŒã«ã貌ãå Žæã®æ§å 察ããã§ãïŒç æ°ã§åããã¡ãã£ãŠãïŒ #phpconfuk pic.twitter.com/evxBil9LEl — 02 (@cocoeyes02) 2024幎6æ22æ¥ ã¹ãã³ãµãŒããŒã¹ã®æ§å ã©ã®ã¹ãã³ãµãŒããŒã¹ãè³ãã£ãŠãããåå è
å士ã®ã³ãã¥ãã±ãŒã·ã§ã³ã§æº¢ãããã£ãŠããŸããã ãŸããã³ãŒããŒã¹ãã³ãµãŒã«ããã³ãŒããŒé£²ã¿æŸé¡ããçŠå²¡ãªãã§ã¯ã®ãèåãããã€ããããŠãããçŠå²¡ãæºå«ã§ãããããªãã¹ãã¿ãªãã£ãæããŸããã ã¹ãã³ãµãŒããŒã¹åšèŸºã®æ§å æ©éæ±äº¬è¿èŸºã«éäžããŠã #phpconfuk pic.twitter.com/Sc8I3xetr9 — 02 (@cocoeyes02) 2024幎6æ22æ¥ ã³ãŒããŒã¹ãã³ãµãŒãæäŸããŠããã³ãŒããŒãšçŠå²¡ãªãã§ã¯ã®ãèå ãŸããAsk the Speakerããã®ã¹ãã³ãµãŒããŒã¹è¿èŸºã§éå¬ãããŸããïŒ ïŒŒCããŒã«ã«ãŠAsk the speaker éå¬äžðïŒ ããããããã @okashoi ãšã02ãã @tadsan ãšããã£ã³ãã @zosokh ãšãsora ãã @_fs0414 ãšããšãã ãã @picopico_dev ãšãKanon ãã @samurai_se ã«è³ªåãããæ¹ã¯CããŒã«ãžð çç²çæã«ããæ°è»œã«ãè¶ããã ããâ #phpconfuk pic.twitter.com/KFEBskbbqZ — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ã«ãŒã ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ãè³ãã£ãŠããŸãããæåŸã®æéã®ãRound Tablle Session ããŒãïŒåŠç¿ã©ãããŠããïŒãã«åå ããŸãããã ãã©ã®ãããæè¡æžãèªãã§ãïŒã ãã©ãããç®çã§æè¡æžãèªãã§ããïŒã ãã©ãããåºæºã§æè¡æžãéžãã§ããïŒã ãšãã£ãæè¡æžã«é¢ãã質åã«ã€ããŠãåPHPerãšèªåã®åºæºãå
±æããããè°è«ããããšãé¢çœãã£ãã§ãã ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ã«ãŒã ã®ã¿ã€ã ã¹ã±ãžã¥ãŒã« ã¯ããŒãžã³ã° ã¯ããŒãžã³ã°ãå§ãŸããåæ
å ±ã®å
±æãè¡ãããŸãããPHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ 2024ã®åå è
ã¯çŽ300人ã§ãæ¥æ¬ã§éå¬ãããPHPã«ã³ãã¡ã¬ã³ã¹ã®äžã§ã人æ°ãå€ãã«ã³ãã¡ã¬ã³ã¹ã ãšå確èªããŸããã ããã«ãå§å¡é·ããåå è
ã®PHPã«ã³ãã¡ã¬ã³ã¹åå æŽïŒäŸãã°ãPHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ã«åããŠåå ãã人ãªã©ïŒã«ã€ããŠå°ããå Žé¢ããããŸããããåããŠPHPã«ã³ãã¡ã¬ã³ã¹ã«åå ãã人ããæè¡ã«ã³ãã¡ã¬ã³ã¹èªäœã«åããŠåå ãã人ãå°ãªãããããããšãå°è±¡çã§ããã #phpconfuk 2024 ããã£ãšããéã«ã¯ããŒãžã³ã°ð å®è¡å§å¡é· @BkNkbot ã®ã¯ããŒãžã³ã°ãã¹ã¿ãŒãããŸããâ£ïž pic.twitter.com/no8lPwYsYm — PHPã«ã³ãã¡ã¬ã³ã¹çŠå²¡ å
¬åŒ (@phpcon_fukuoka) 2024幎6æ22æ¥ ã¯ããŒãžã³ã°çµäºåŸã«ã¯æèŠªäŒãå§ãŸããè²ããªPHPerãšã飯ãé£ã¹ãŠããé
ã飲ã¿ãªãã亀æµããŸããã ãããã« ã¹ã¿ããã®æ¹ã
ã«ã¯ãå¿ããã«ãé¢ããããå€ãã®æéãæºåã«è²»ãããŠããã ãããšæããŸãããã®å ŽãåããŠåŸ¡ç€Œç³ãäžããŸãã åä¹å· / åçŠå²¡ / åé£è¡æ©ã䜿ã£ãŠé ããžåºãããæè¡ã«ã³ãã¡ã¬ã³ã¹ã ã£ãã®ã§äžå®ããããŸãããããšãŠã楜ãããçŽ æµãªã«ã³ãã¡ã¬ã³ã¹ã§ããããŸãéå¬ããããæ¯éåå ãããã§ããã BASE / BASE BANKã§ã¯ãçµ¶è³PHPerãæ¡çšäžã§ããäžèšã®æ¡çšæ
å ±ãã«ãžã¥ã¢ã«é¢è«ãªã³ã¯ãããã²ã芧ãã ããïŒ binc.jp open.talentio.com
ã¯ããã« BASE BANK Division ã§ ãã«ãµã€ã¯ã«ãšã³ãžã㢠ãããŠãã02ïŒ @cocoeyes02 ïŒã§ãã AWS Summit Japan 2024ã®Day 1ã«ãªã³ãµã€ãã§åå ããŠããã®ã§ãçŸå°ã®æ§åããå±ãããŸãïŒ AWS Summit Japan 2024ãšã¯ïŒ AWS Summit Japan 2024ãšã¯ã2024/06/20ã2024/06/21ã«éå¬ãããAmazon Web ServicesïŒä»¥äžAWSïŒãåŠã¶ã€ãã³ãã§ãã åå ç»é²äººæ°ã¯5äžäººãè¶
ãããªã©ãæåéãæ¥æ¬æå€§ã®AWSãåŠã¶ã€ãã³ãã«ãªããŸãã aws.amazon.com äŒå ŽãŸã§ AWS Summit Japan 2024ã®äŒå Žã¯å¹åŒµã¡ãã»ã§ãã ãæŒåã«ãããããããå
¥å ŽãŸã§äººã䞊ãã§ããŸãããæ¥æ¬æå€§ã®AWSåŠç¿ã€ãã³ããšãã衚çŸã¯å®ã«ãµããããããšããã»ã©ã®å€§çæ³ã§ããã ãããã #AWSSummit pic.twitter.com/Aabz8OmdXd — 02 (@cocoeyes02) 2024幎6æ20æ¥ AWS Summit Japan 2024äŒå Žãžã®å
¥å ŽãåŸ
ã€é·èã®å AWS Summit Japan 2024äŒå Žå
¥å£ã®æ§å äŒå Žå
šäœã®æ§å å
¥å ŽããŠã¿ããšãããããã®å±ç€ºããŒã¹ãã»ãã·ã§ã³äŒå Žãç®ã®åã«åºãã£ãŠããŸããã ãšã³ã¿ãŒãã©ã€ãºãµããŒãã§ããåãã®ãã£ãAWS SAã®æ¹ã
ããæ®æ®µããæ¥ç¹ã®ããæ¹ã
ã«ãæšæ¶ããããã«ãããŒã¹ãå·¡ããŸãããäŒå Žã¯éåžžã«åºããå°ãè¿·ã£ãŠããŸã£ãã®ã¯å
ç·ã§ãã å
¥å ŽããŠããã®ãšãªã¢ã俯ç°ããŠæ®ã£ãæ§å ããã€ãã®ã»ãã·ã§ã³ãèŽè¬ããŸãããããã®èŽè¬ç°å¢ãæŽã£ãŠãããšæããŸãããäŸãã°ãåã»ãã·ã§ã³äŒå Žã¯å€§äººæ°ãå容ã§ããå
šåžã«ã¯ç»å£è
ã®ãã€ã¯é³å£°ãã€ã€ãã³ã§èãããã®ã¬ã·ãŒããŒãçšæãããŠããŸããã åã»ãã·ã§ã³ã®äŒå Žã暪ããæ®ã£ãæ§å é
åçãªã³ã³ãã³ããçãã ããã å
šãŠã¯ç޹ä»ããããªãã§ãããçŸå°ã§äœéšããã³ã³ãã³ããäžéšç޹ä»ããŸãã AWS Snowball Edgeããã€ã¹ãæã¡äžããŠã¿ã AWS Snowball Edgeããã€ã¹ ã®å®ç©ãå±ç€ºãããŠããã®ã§ãæã¡äžããããŠããã ããŸãããAWS Snowball Edgeããã€ã¹ã¯çŽ20kgã»ã©ãããäž¡æã§ãªããšæã¡äžããããªãã»ã©éãã£ãã§ãã AWS Snowballã«ã€ããŠã¯AWSèªå®è©Šéšã§åŠãã çšåºŠã®ç¥èããæã£ãŠããªãã£ãã®ã§ãå®éã«è§Šããããšãã§ããã®ã¯è¯ãçµéšã«ãªããŸããã snowballæã¡äžããããŠããã£ã #AWSSummit pic.twitter.com/oZRG9rHNvC — 02 (@cocoeyes02) 2024幎6æ20æ¥ Chaos Kitty ã²ãŒã 圢åŒã§ã«ãªã¹ãšã³ãžãã¢ãªã³ã°ãšå¯èŠåãåŠã¹ã Chaos Kitty ãå±ç€ºãããŠããŸãããã²ãŒã ã¢ãŒãã¯ã¬ãžãªãšã³ã¹ãšã»ãã¥ãªãã£ãé£æåºŠã¯EasyãšHardããããããããã®åŸ©æ§ã¿ã€ã ã©ã³ãã³ã°ãªã¹ãããããŸããã ç§ã¯ã¬ãžãªãšã³ã¹ã¢ãŒãã®Easyããã¬ã€ãããŠããããŸããããæ¬äŒŒçã«é害èšç·ŽãããŠãããããªæèŠã§ãããèªç€Ÿåãã®ãã¢ç°å¢ããã£ãããæ¥œãã¿ãªããã€ã³ã·ãã³ã察å¿ååäžãããã£ããã«ãªãããã ãšæããŸããã ã²ãŒã 圢åŒã§ã«ãªã¹ãšã³ãžãã¢ãªã³ã°ãšå¯èŠåãåŠã¹ãchaos kitty é¢çœãã£ãïŒ #AWSSummit pic.twitter.com/Gv1y7KfhsX — 02 (@cocoeyes02) 2024幎6æ20æ¥ Industry Zone ãã®ãšãªã¢ã§ã¯ã忥çããšã®ææ°ã® AWS ãœãªã¥ãŒã·ã§ã³ã®ç޹ä»ããã¢ãè¡ãããŠããŸãããç§ã¯æµéå°å£²æ¶è²»è²¡ã€ã³ãã¹ããªãŒã«èšªããECäœéšã®åäžç®æããæ§ã
ãªæè¡ãæ©èœãèŠãŠããŸããã äŸãã°ãçæAIã䜿ã£ãåå説ææãååèæ¯ç»åã®çæããååã®çްéšã確èªã§ãã3D ããã°ã©ã ãã£ã¹ãã¬ã€ãªã©ããããŸããã Industry ZoneïŒæµéå°å£²æ¶è²»è²¡ã€ã³ãã¹ããªãŒã®æ§å AWSã§åŠæ³ããŠã¿ã QuizKnock ãããšã®ã³ã©ãäŒç»ã«ããããã«å±ç€ºã§ããããããªããšãã§ãããè¯ãã®ã«ããšããåŠæ³ãšããããå®çŸããããã®ä»çµã¿ããããŠAWSã¢ãŒããã¯ãã£å³ãæãããŠããŸããã å人çã«ã¯ãSAã®äœè€ãããåŠæ³ãããéå»ã®èªåãžçžè«ãããããå身ãšäŒè©±ã§ããããã«ãããããšãŠããšã¢ããŠè©ŠããŠã¿ãããšæããè¯ãã¢ã€ãã£ã¢ã ãšæããŸããã ãAWSã§åŠæ³ããŠã¿ããã®ããã«å±ç€ºã®æ§å SAã®äœè€ããã®åŠæ³ããŠã¿ãããã« AWS èªå®è
ã©ãŠã³ãž AWS èªå®è©Šéš ã«åæ Œãã人å°çšã®ã©ãŠã³ãžã§ããã©ãŠã³ãžå°çšã®Wi-Fi SSIDãšãã¹ã¯ãŒãã飲ã¿ç©ã黿ºãæäŸãããŠãããæ©ãç²ãããäœæ¥ããããæ¹ã«æé©ãªå Žæãšãªã£ãŠããŸããã ç¹å
žãšããŠãåæ Œãã詊éšããšã«ã¹ããã«ãŒãããããŸããç§ã¯ AWS Solution Architect Associate ã®ã¹ããã«ãŒãããããŸããã AWS èªå®è
ã©ãŠã³ãžã®æ§å AWS Solution Architect Associateã®ã¹ããã«ãŒ ä»ã«ã玹ä»ããããªãã»ã©ããããã®é
åçãªã³ã³ãã³ã ä»ã«ããAWSã®ãµãŒãã¬ã¹ãµãŒãã¹ã§äœããã Serverlesspresso ãã AWS DeepRacer Japan Championship Cup ã®ã¬ãŒã¹äŒå Žãªã©ããããŸããïŒ AWSã®ãµãŒãã¬ã¹ãµãŒãã¹ã§äœãããServerlesspresso AWS DeepRacer Japan Championship Cupã®ã¬ãŒã¹äŒå Ž AWS DeepRacer Japan Championship Cupã®ãµãã©ã€ããã£ã¹ãã¬ã€ ãããã« ã¹ã¿ãããç»å£è
ã®æ¹ã
ã«ã¯ãå¿ããã«ãé¢ããããå€ãã®æéãæºåã«è²»ãããŠããã ãããšæããŸãããã®å ŽãåããŠåŸ¡ç€Œç³ãäžããŸãã ã»ãã·ã§ã³ã¯2024/07/05ãŸã§èŠãããšã®ããšãªã®ã§ãäŒå Žã«çŽæ¥è¡ããªãã£ãæ¹ããã²ã芧ãã ããã aws.amazon.com BASEã§ã¯ãããŒã«ãæå±ã«é¢ãããAWSã䜿ã£ãŠããžãã¹ããªãŒãããããã¯ããžãã¹ãå®ããšã³ãžãã¢ãåéããŠãããŸãããèå³ãããæ¹ã¯ããã²äžèšã®æ¡çšæ
å ±ã®ãªã³ã¯ãã芧ãã ããïŒ binc.jp