TECH PLAY

BASE株匏䌚瀟

BASE株匏䌚瀟 の技術ブログ

å…š579ä»¶

こんにちは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
アバタヌ