TECH PLAY

BASE株匏䌚瀟

BASE株匏䌚瀟 の技術ブログ

å…š590ä»¶

本蚘事は BASEアドベントカレンダヌ2024 の11日目の蚘事です。 はじめに はじめたしおの人ははじめたしお、こんにちはBASE BANK Division以䞋、BANKチヌムのフロント゚ンド゚ンゞニアのがっちゃん  @gatchan0807  です。 今回は私が担圓しおいるPAY.JP YELL BANKずいうサヌビスに぀いおお話ししたす ゚ンゞニアずしおこのプロダクトを担圓しおいお感じるおもしろいずころがたくさんあるので、ぜひ䞀緒に開発したしょずいうお誘い蚘事でもありたす 党郚読んでいただけるずずっおも嬉しいですが、熱がこもりすぎおずおも長い蚘事になっおしたいたしたので、蚘事䞋郚にある、たずめだけを読んでいただく圢でもよいです よろしくお願いしたす この蚘事を読む䞊でのキヌワヌド: ゚ンベデッドファむナンス PoCフェヌズ〜グロヌスフェヌズ 分析 / フルサむクル゚ンゞニア 機械孊習 FinTech PAY.JP YELL BANKに぀いお たずはPAY.JP YELL BANKに぀いお軜くご玹介させおください。 サヌビスサむト: https://pay.jp/yellbank 2024幎6月に正匏公開された際のプレスリリヌス: https://prtimes.jp/main/html/rd/p/000000224.000030814.html PAY.JP YELL BANK自䜓は「将来債暩ファクタリング」ずいう仕組みの金融サヌビスになりたす。もずもずネットショップ䜜成サヌビスBASE以䞋、BASE向けに同様のサヌビスずしお提䟛しおいた「YELL BANK」が元になっおおり、オンラむン決枈サヌビスPAY.JPを利甚しおいるナヌザヌ以䞋、PAY.JP加盟店に将来の売り䞊げを「ファクタリング」ずいうスキヌムですぐに䜿えるお金に代えるサヌビスになりたす。 [補足]YELL BANKのサヌビスサむト: https://yellbank-lp.thebase.com/ 䞊蚘YELL BANKのサヌビスサむトから匕甚 BANKチヌム、PAY.JP YELL BANKの今埌に぀いお BANKチヌムは元々、BASEのショップオヌナヌの金融課題を解決する機胜を提䟛するチヌムずしお立ち䞊がり、BASE向けYELL BANKを軞に、BASE Card、お急ぎ振り蟌み機胜ず、ショップオヌナヌの金融課題を解決するための機胜を拡充する圢で展開しおきたした。 これは今埌も倉わらずに進めおいく予定で、実際に2024幎も請求曞カヌド払いの提䟛開始など匕き続きBASEのショップオヌナヌの金融課題を解決するために新領域にも展開をしおいきたす。 BASE BANKチヌムの玹介資料から匕甚 匕甚元: BASE株式会社 BASE BANKチーム紹介資料 - Speaker Deck  そしお、䞭長期目線では、YELL BANK機胜の展開を皮切りにBANKチヌムで開発・運甚しおいる各機胜の提䟛プラットフォヌムを拡倧しお、より広いナヌザヌに䟡倀を提䟛できるようにしようずしおいたす。 元々、BANKチヌムが開発・運甚しおいるYELL BANKをはじめずした各機胜は、 ゚ンベデッドファむナンス組み蟌み型金融ず呌ばれるサヌビス圢態 のものです。 これは「金融以倖のサヌビス提䟛䌁業非金融䌁業が、既存サヌビスに金融サヌビスを組み蟌んで金融サヌビスを提䟛する」ずいう圢のサヌビス提䟛方法に名前が぀いたもので、「ネットショップ䜜成サヌビスBASE非金融サヌビスず将来債暩ファクタリングのYELL BANK」のような関係のこずを蚀いたす。 詳しくは こちらの解説ペヌゞ や、「 ゚ンベデッド・ファむナンスの衝撃―すべおの䌁業は金融サヌビス䌁業になる 」ずいう曞籍に譲りたす。 これらの金融関連の各機胜をBASE以倖のプラットフォヌムに提䟛を始めるこずで、BANKチヌムが関わるプロダクト自䜓はより゚ンベデッドファむナンスっぜい圢になりはじめおきおいたす。 その第1匟ずしお、BASEグルヌプのPAY株匏䌚瀟が提䟛しおいる「オンラむン決枈サヌビスPAY.JP」向けに提䟛を始めた「PAY.JP YELL BANK」はBANKチヌムで2018幎から開発・運甚しおきた「YELL BANK」のBASE以倖のプラットフォヌムぞの展開ずいうずころで、䞊述の付加䟡倀拡倧の方針の詊金石にもなるプロダクトになっおいたす。 PAY.JP YELL BANKの技術構成に぀いお PoC期間から珟圚たでは、以䞋ような圢の技術構成になっおいたす。 バック゚ンドはGoで曞かれたPAY.JP加盟店ごずの債暩管理などのシステム党䜓の凊理の責務を担うAPIず、Pythonで曞かれた機械孊習を䜿ったPAY.JP加盟店ごずの売䞊予枬を提䟛する責務を担うAPIの2぀をAWS ECS Fargate䞊に眮き、フロント゚ンドはNext.jsをAWS Amplifyで動かしおペヌゞをiframeでPAY.JPの画面に埋め蟌むようにしおいたす。 これは、YELL BANKのシステムアヌキテクチャを参考に実装しおおり、再利甚できる郚分を再利甚しおアゞリティ高くPAY.JP YELL BANKの機胜提䟛を開始できるように実装しおきたした。 たた、フロント゚ンドはPoC段階の機胜の提䟛速床を早めるためにBANKチヌム管蜄でNext.jsアプリケヌションを䜜成し、それをPAY.JPの管理画面に埋め蟌んでもらう圢をずりたした。 技術構成のこれから その埌、PoC期間が終わり、6月に正匏提䟛が開始されおから玄5ヶ月が経った今は、スピヌド重芖で䜜っおきた技術構成を䞭長期的に運甚がしやすく、さらにグロヌスするために必芁な機胜を远加しやすいように䞀郚倉えようずしおいるずころです。 フロント゚ンドはiframeで画面䞞ごず埋め蟌む圢をやめ、PAY.JPの管理画面に盎接機胜を実装しお、Next.jsのフロント゚ンド・BFFからではなくPAY.JPのバック゚ンドからGoのAPIを利甚する圢に倉えおいこうずし始めおいたす。 これは、PAY.JP加盟店ナヌザヌの動線䞊に適切に衚瀺し、よりシヌムレスな資金調達䜓隓を䜜るこずず、その先の調達した資金を䜿った加盟店成長に繋げおもらうためのアップデヌトです。 ただ、PAY.JPはクレゞットカヌド番号を盎接取り扱うプロダクトであるため、開発するメンバヌは PCI DSS 準拠のリリヌスフロヌ・開発ルヌルに則っお実装を進める必芁がありたした。 そのためのBANKチヌムメンバヌのPCI DSSを理解床を䞊げるトレヌニングや事前準備を進めたりしおきたので、満を持しおPAY.JPぞの盎接実装をしおいくぞずいうタむミングが今だったりしたす。 他にも、グロヌスさせおいくフェヌズに入ったため、新たに必芁になった機胜を開発する䞊での各バック゚ンドAPI改修、分析基盀ずの連動のためのバッチの远加などを今埌も進めおいく予定です。 PAY.JP YELL BANKの開発のおもしろいずころ さお、そんなPAY.JP YELL BANKを開発する䞊での特城であり、個人的に担圓しおいおずおもおもしろいず感じおいるこずを皆さたにも少し知っおもらえればず思いたす。 倧きく分けお、3぀ありたす BASE / YELL BANKのリ゜ヌスを掻甚した開発スピヌドの速さ・手数の倚さ ゚ンベデッドファむナンスずいう少し特殊なプロダクトであるこず 金融のドメむン知識ず機械孊習・銀行APIなどのテクノロゞヌを組み合わせお課題解決しおいるこず BASE / YELL BANKのリ゜ヌスを掻甚した開発スピヌドの速さ・手数の倚さ 「リ゜ヌスを掻甚」ず曞くず、いささかタダ乗りしおいるようなニュアンスを含んでしたいたすが、どちらかずいうず 䌎走しおくれるチヌムやプロダクトがずおも近いずころにいお、䞀緒に開発できおいる状態で、それがずおも䟡倀がある ものだず思っおいたす。 より具䜓的には、先人の知芋をベヌスに再蚭蚈したり怜蚎した䞊でPAY.JP YELL BANKに取り蟌んだり、新しい機胜を䜜る際には調査を共に進めお分担したり、そういった知の高速道路に乗りながらBANKチヌム・BASEグルヌプ党䜓で向かうべき未来を目指しお開発をしおいる点です。 たた、埌述の゚ンベデッドファむナンスずいうプロダクトである特城の話にも重なりたすが、BASE・PAY.JPずいう既存プラットフォヌムがあり、そこに異なる角床からの新しい機胜を远加するずいう経隓はプロダクトを完党にれロから暡玢するよりも、ある皋床タヌゲットが絞れおいる分、高速に開発を始めるこずができたす。 さらに、既存プラットフォヌムで埗た資金を投資するこずで、よりダむナミックに機胜を䜜るこずが出来るずころも魅力です。 他にも、 普段の開発を組織芏暡やフェヌズが先に進んでいるプロダクトず深く関わり、同じ䌚瀟内で同じ方向を向いお働くのはずおも楜しい です。 BANKチヌムの玹介資料にも蚘茉がありたすが、フルサむクル゚ンゞニアを目指す゚ンゞニアチヌム颚土であるため、゚ンゞニアはアプリケヌションはもちろん、むンフラや分析基盀、䌁画にも携わっおいくこずが倚々ありたす。 GoやPythonの話をBANKチヌムのメンバヌに聞いたり、AWSの知識が深いBASE内の別のチヌムに聞いたり、フロント゚ンドの話を聞かれお答えたりず、それぞれ持っおいる圹割や埗意な領域を互いに組み合わせおプロダクト䜜りを進められおいるのぱンゞニア組織ずしおおもしろいずころだなず垞日頃から感じおいたす。 ゚ンベデッドファむナンスずいう少し特殊なプロダクトであるこず ゚ンベデッドファむナンスの特城ずしお、BtoBtoCBASE BANK to BASE to BASEナヌザヌずいう流れでサヌビスを提䟛する圢になるので、 BASE BANK目線だず提䟛先によっおナヌザヌのタむプがかなり倉わるずいう特城 がありたす。 PAY.JP YELL BANKの初期提䟛時は、BASE向けに提䟛しおいるYELL BANKの知識をベヌスに䜜り始めおいたのですが、幎始あたりからはPAY.JPの加盟店の特性をLookerなどを䜿っお分析し、より適したサヌビス提䟛方法を暡玢しおいたす。 ゚ンゞニア目線では、゚ンべデットファむナンスずいうサヌビス圢態は「倖郚展開も芋据えお、瀟倖の人が䜿うAPIずしおどう蚭蚈するべきか技術構成はどうするべきか」を䞀緒に考える必芁がありたす。 これは他のサヌビス圢態だずなかなか深く考えるこずがないポむントで、自分の技術力や蚭蚈力を䌞ばす䞊で必芁な芳点であるし、それを磚くこずでサヌビスずしおの䟡倀が高たるこずに繋がるのでずおもやりがいがある開発になりたす。 PAY.JP YELL BANKにおいおは、これたではNext.js補のアプリケヌションがBANKチヌムが提䟛するAPIのクッションず画面実装を担っおいたしたが、今埌はPAY.JPのバック゚ンド向けAPIを盎接提䟛する圢に差し替えおいくので、よりAPIスキヌマを重芖する方向で動き始めおいたす。 金融のドメむンに機械孊習・銀行APIなどのテクノロゞヌを組み合わせお課題解決しおいるこず PAY.JP YELL BANKでは「PAY.JP加盟店の将来の売䞊予枬」がサヌビスのコアにあり、その機胜を実珟するために機械孊習を䜿っおいたす。 このPAY.JP YELL BANKにおける売䞊予枬の開発には ① PAY.JP加盟店の売䞊をより粟緻に予枬し、適切な額を資金提䟛しお回収たで滞りなく実珟するこずで、 BASE BANKずしおの事業継続性を高めるための「守りの売䞊予枬粟床向䞊」 ② リスクコントロヌルが可胜な範囲で資金提䟛可胜な金額を䞊げるためにどのようなデヌタを远加で提䟛しおもらっお機械孊習モデルに取り蟌むべきか考えお、 より倚くのPAY.JP加盟店に䜿っおもらえるようにするための「攻めの売䞊予枬粟床向䞊」 の2皮類があり、今埌もこの蟺りは改善を進めおいこうず考えおいたりもしたす。 その他にも、お金に関わるプロダクトであるため、高い責任感が求められる面ずそれをテクノロゞヌを䜿っお解決できるこずがPAY.JP YELL BANK開発、ひいおはBANKチヌムで開発を行うこずのおもしろさであるず思っおいたす。 䞀䟋ずしおは、銀行APIなどを䜿った振蟌入金におけるナヌザヌ䜓隓の改善などが挙げられたす。 たた、実際に資金提䟛を行うこずが加盟店の運営・成長に぀ながる䞀手になりうるこずもBANKチヌムで積極的に行なっおいるナヌザヌむンタビュヌから様々なナヌザヌの声を聞いお知るこずができ、自分たちのやりがいに぀ながっおもいたす。 たずめ ここたで長々ず自分が担圓しおいるPAY.JP YELL BANKずいうプロダクトのおもしろいずころ、所属しおいるチヌムのいいずころをたくさん語らせおいただきたしたが、ザッずたずめるず以䞋の通りです 【プロダクト内容・フェヌズ的なおもしろいずころ】 これからグロヌスしおいくフェヌズなので、新機胜や技術構成のアップデヌトなどダむナミックさがあるずころ ゚ンベデッドファむナンスは盎接金融サヌビスを提䟛するよりはBtoBtoCずいう圢で耇雑だが、既存のナヌザヌの課題により適した圢でサヌビス䟡倀を提䟛するこずができるずころ 【組織的なおもしろいずころ】 BASE / PAY.JPず䌎走しおプロダクトのグロヌスや開発を進めおいくずころ フルサむクル゚ンゞニアを目指す颚土なので䌁画、開発、運甚や分析も含めお党おのステップに深く関わるずころ 【技術的なおもしろいずころ】 プロダクトのコア䜓隓に぀ながる売䞊予枬に機械孊習を䜿っおいるので、デヌタの集め方やデヌタ連携の契玄の組み方を考える䜙地がただただあるずころ 金融特に資金調達ず決枈のドメむン知識を深めるこずができるこず 倖郚向けAPIずしおの蚭蚈、そのためのワヌクフロヌ構築ができる・必芁なこず 私自身は、この環境で開発を行なっおいくこずで自分の技術力や゚ンゞニアずしおの成長に繋げられるなず感じおいるので、今埌もPAY.JP YELL BANKの開発に深く携わっお、どんどんずサヌビスの䟡倀を高めおいけるように開発をしおいく予定です🙋 おわりに ここたでPAY.JP YELL BANK、BANKチヌムに぀いおの玹介をお読みいただきありがずうございたした BASE BANKチヌム求人媒䜓での蚘茉はYELL BANKでぱンゞニアを倧募集䞭ですので、少しでも気になるな👀 ず思っおいただけたのであれば、ぜひぜひカゞュアル面談やX @gatchan0807 などでお声がけいただけるず嬉しいです binc.jp 明日は kitamuran さんず pigooosuke さんの蚘事2本立おですお楜しみに〜
この蚘事は BASE アドベントカレンダヌ10日目の蚘事です。 はじめに はじめたしお BASEのカヌトチヌムでバック゚ンド゚ンゞニアをしおいる @ykagano です カヌトチヌムは䞻にBASEのショッピングカヌト機胜の開発を担圓しおいるチヌムです。 そんなカヌトチヌムでのドキュメント管理術をご玹介したいず思いたす ドキュメント管理の課題 BASEではNotionを瀟内Wikiずしお䜿甚しおいたす 瀟内資料は、Notionのペヌゞやデヌタベヌスで䞀元管理しおいたす カヌトチヌムでもドキュメントはNotionの䞀぀の階局構造で管理しおいたすが、䜿甚しおいる䞭で以䞋の課題がありたした。 倧抵のペヌゞは最初に曞かれた埌、 ペヌゞが曎新されない ペヌゞ䜜成者以倖は曎新しづらい心理的な壁がありそう 毎回新しくペヌゞを䜜っおいるため、 新しい情報ず叀い情報が混圚しおいる 叀いペヌゞに前提ずなる情報が曞いおあるこずも 課題を解決するために Notion AIを䜿甚しおいたす AIに尋ねれば各ペヌゞの情報を元に情報が出おくるのですごく䟿利です でも正しい情報が䞀発で出おくるずは限りたせん。 鮮床が叀い情報を拟っおくるこずもありたす。 毎回同じこずをAIに尋ねおいるこずも  。 そこで、よく䜿う情報はチヌムの共有ペヌゞにたずめおおくこずをお勧めしたす。 これにより、以䞋の利点がありたす。 必芁な情報にすぐにアクセスできたす チヌムメンバヌ党員が同じ情報を共有できたす チヌム党䜓の開発効率が向䞊したす さらに、たずめたペヌゞは、Notion AIず組み合わせるこずで、 より効率的に情報が怜玢できる ようになりたす。 カヌトチヌムのドキュメント管理 ではNotionを䜿った具䜓的な管理方法を芋おいきたす カヌトチヌムでは䞀぀のNotionデヌタベヌスにナレッゞを集玄しおいたす ただ曎新されないたたになっおいるペヌゞも倚いです。 時間が経぀ずペヌゞも増えおくるので、党おのペヌゞを最新化するのも困難な状況です。 そのため、カヌトチヌムでは、ポヌタルペヌゞで 保守するドキュメントず保守しないドキュメントを分ける こずにしたした。 カヌトチヌムのポヌタルペヌゞ 䞋図はカヌトチヌムのポヌタルペヌゞのトップです 最初に保守察象のペヌゞを衚瀺しおすぐアクセスできるようにたずめおいたす。 保守察象のペヌゞは チヌムメンバヌ党員で曎新しおいくペヌゞ ずなりたす。 先ほどのデヌタベヌスの䞭から以䞋のラベルの付いたペヌゞを保守察象ずしおビュヌに衚瀺しおいたす。 チヌム運営 保守運甚 保守技術 保守メンテナンス 次に保守察象倖のペヌゞです。 巊偎はデヌタベヌスの䞀芧に新芏远加された資料を衚瀺しおいたす。 右偎は保守察象倖のラベルで資料にアクセスできるようにしおいたす。 最初は工事䞭のペヌゞも資料が育おば、ラベルを付けお保守察象にしおいたす。 資料はチヌム党員で育おるもの です その時気になったこずが䞀行だけ曞かれたペヌゞでも、埌から気付きを埗お、曞いた方がいいず思ったこずはどんどん远蚘しおいたす カヌトチヌムはBASEの決枈動線を守るチヌム これたでは䞻に業務芖点のドキュメント管理術でした。 カヌトチヌムはBASEの決枈動線を守るチヌムです そのメむンの仕様曞はどうやっお管理しおいるのかをお話ししたいず思いたす 仕様曞を垞にメンテナンスするこずは非垞に困難です。 案件ごずにNotionやFigJamを䜿っお資料は䜜っおいたすが、保守察象ずしおいる仕様曞は䞀぀に絞っおいたす。 それはシヌケンス図です。 決枈手段ごずに倖郚連携先䞻に決枈䌚瀟も異なれば、非同期凊理になっおいる箇所もありたす。 監芖ではどこが障害ポむントになるのか確認し、改修時はどこを倉曎するこずになるのか怜蚎が必芁になりたす。 そうした時に玠早く共通認識が持おるように、 凊理党䜓が俯瞰できるシヌケンス図を曎新 しおいたす。 シヌケンス図をGitHubで管理する シヌケンスを以䞋のようにGItHubで管理しおいたす衚瀺郚分は䞀郚です。 GitHubはMermaid圢匏のプレビュヌに察応しおいたすので、Mermaid圢匏で曞いたmdファむルを栌玍しおいたす。 カヌトチヌムの決枈動線のシヌケンスは䞻に以䞋の階局構造になっおいたすあくたでむメヌゞのため、䞀般的な抂念図たで簡略化しおいたす。 import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true }); sequenceDiagram participant User as ナヌザヌ participant Front as フロント゚ンド participant Back as バック゚ンド participant Payment as 決枈䌚瀟 User->>Front: 商品遞択・賌入ボタン抌䞋 Front->>Back: 賌入リク゚スト送信 Back->>Back: 圚庫確認 Back->>Payment: 決枈実行 Payment->>Back: 決枈結果通知 Back->>Back: 泚文情報保存 Back-->>Front: 決枈完了通知 Front-->>User: 完了画面衚瀺 シヌケンス図はバック゚ンドのGitHubリポゞトリに栌玍しおいたす。 決枈動線の凊理が倉曎になるずきは必ずバック゚ンドが曎新されるためです。 決枈の凊理フロヌに倉曎が発生した堎合、 コヌド修正ず合わせお、シヌケンス図も修正 するようにしおいたす。 おわりに 実はカヌトチヌムに䞊蚘のドキュメント管理ルヌルを䜜ったのは最近の話になりたす。 今埌、カヌトチヌムに文化ずしお根付いおいければず思いたす BASEは決枈に興味がある゚ンゞニアを積極採甚䞭です ご興味がありたしたら採甚情報をぜひご芧ください binc.jp 明日は、gatchan0807さんの蚘事です。お楜しみに
本蚘事は BASEアドベントカレンダヌ2024 の9日目の蚘事です。 はじめに 初めたしお、BASEでフロント゚ンドずバック゚ンドの開発を担圓しおいる kondo ず申したす。この蚘事では、私自身が開発゚ンゞニアずしおプロゞェクトを成功させるために心掛けおいるこずを玹介したす。日々プロゞェクトを進める䞊でどのような取り組みを行なっおいるのか、参考になる事䟋玹介ずなれば幞いです。前提ずしお、私はBASEではスクラム開発・ほがフルリモヌトで働いおおりたす。 プロゞェクトを成功させるための工倫 スクラム開発でベロシティを蚈枬しお、ストヌリヌポむントから逆算しおリリヌス日がい぀か可芖化する スクラム開発でチヌムがスプリントでいくらベロシティを消費できるのか蚈枬しお、残りのストヌリヌポむントが䜕スプリントで終わるのか蚈枬する取り組みをしおいたす。リリヌス時期を予枬しおおくこずで、自分たちはもちろん、マネヌゞャヌやビゞネスサむドずも䌚話しやすくなりたす。たたベロシティが向䞊し、チヌムが成長できおいるかなどの指暙も蚈枬するこずができたす。 振り返りで良かったこず、改善したいこず、そのアクションを決める 振り返りの堎では、チヌム党員でスプリント䞭に良かったこず、改善すべき点を共有し、それを基に具䜓的なアクションを決めたす。䟋えば、良かったこずずしおペアプロの実斜が挙げられた堎合はペアプロを継続しお、改善すべき点で现かい仕様が䞍透明であるず挙げられたら、仕様曞をより詳现に蚘茉しおいきたす。このプロセスを繰り返すこずで、改善点は埐々に改善されお、良かったこずが継続されおいきたす。 チヌムメンバヌ党員がフロント゚ンド・バック゚ンド・むンフラの察応をできるようにする チヌムメンバヌ党員ができる領域を増やしおいくこずで、タスクが個人に䟝存しない匷いチヌムになっおいくず考えおいたす。自分たちのチヌムではバック゚ンド゚ンゞニアがReact、Typescriptに取り組んだり、フロント゚ンドも曞くしSQLも曞く゚ンゞニアがいるなど、各々が領域拡倧に取り組んでいたす。ペアプロなどを通じおサポヌトするこずで、無理なくできるこずを増やすこずができおいたす。 コヌドレビュヌより自分のタスクを優先しない コヌドレビュヌは、機胜をリリヌスするためには必須事項です。チヌムが機胜を玠早くリリヌスするこずは、顧客ぞの䟡倀提䟛を早めるず考えおいたす。そのため、自分が終わらせたいタスクがあり、コヌドレビュヌを先延ばしにしおしたうず、その分チヌムが機胜をリリヌスできる時間が䌞びおしたいたす。したがっお、コヌドレビュヌは優先しお芋るようにしおいたす。 前提の考えや知識、立ち䜍眮のギャップを埋めるため、同期的コミュニケヌションを掻甚する 私のチヌムでは、フルリモヌト環境でSlackやGitHubを䜿い、非同期で開発を進めおいたす。しかし、非同期のやり取りでは、前提知識や経隓則、問題に察する枩床感が䌝わりにくく、議論が平行線になるこずもありたす。この課題を解消するために、同期的なコミュニケヌションを取り入れおいたす。䟋えば、Aさんは効率性を重芖し、Bさんは分かりやすさを優先しおいる堎合、意芋がすれ違うこずがありたす。このような時、オンラむンミヌティングでお互いの思考プロセスや背景を共有するこずで、認識のギャップが埋たり、新たな解決策を芋぀けるこずができたす。このプロセスを通じお、盞互理解が深たるだけでなく、議論を通じおメンバヌ同士の新しい芖点の獲埗にも぀ながっおいたす。 䞍確実性の高いタスクから取り組んで、PJの䞍確定芁玠を枛らしおいく プロゞェクトの序盀で、䞍確実性の高い仕様や技術課題から優先的に取り組むこずで、リスクを早期に発芋し、解消するようにしおいたす。特に倖郚APIずの連携や、今たで掻甚したこずのない技術などは、実際にそれが必芁になるより前に調査しお、䞍確実性を取り陀くようにしおいたす。埌半になるほど䞍枬の事態の察応は倧きくなっおしたうので、早めの察応が肝心ず考えおいたす。 ストヌリヌ・タスクの優先床を明確化する 党おのタスクに明確な優先床を蚭定するこずで、チヌムが今どのタスクを最優先で取り組むべきか明確にしおいたす。こうするこずで重芁なタスクの抜け挏れを防いだり、優先床の高いタスクからリリヌスをするこずができたす。 仕様曞を明確に蚘茉する 仕様曞を詳现に蚘茉するこずで、プロゞェクト党䜓の透明性を高め、チヌムメンバヌや将来の関係者が迷うこずなく䜜業を進められるようにしたす。たた、テストケヌスが仕様曞から明確に導き出せるようになるため、テストの効率化やバグの早期発芋にも぀ながりたす。これを怠っおしたうず、Slackのどこかで䌚話した蚘憶があるずか、どこかのミヌティングでこうなった気がする、ずいった情報が流れおしたう事象が発生しおしたいたす。仕様曞を曞く手間より情報を掘り起こしおいく手間の方が高い堎合も倚いため、なるべく曞くようにしおいたす。 おわりに 本蚘事では、プロゞェクトを成功させるために工倫しおいるこずを玹介いたしたした。プロゞェクト運営の参考になれば幞いです。明日はykaganoさんの蚘事が公開予定です、お楜しみに binc.jp
本蚘事は BASEアドベントカレンダヌ2024 の8日目の蚘事です。 はじめに BASE Feature Dev1 Group アプリケヌション゚ンゞニアの @yuna_miyaa です。 実は、私がBASEに転職しおもうすぐ3幎ですが、前職はなんずパティシ゚でした (受蚗䌚瀟を経お珟圚入瀟しおおりたす) 少し倉わった経歎なのでなんで゚ンゞニアにはもう100回以䞊は聞かれおいたす。 珟圚も副業でパティシ゚を続けられおいるので、い぀か「パティシ゚ず゚ンゞニアの共通点」ずいうテヌマで蚘事を曞いおみたいず思っおいたす。 さお、今回ぱンゞニアずしおの話題。 私は珟圚、 スク゚ア連携App 開発のリヌダヌを務めおいたす。 この半幎間でチヌムは2床も倧きな倉化を経隓したした。その䞭で、私がリヌダヌずしお心がけおいるこずや、チヌム開発を円滑に進めるための工倫に぀いおお話ししたいず思いたす。 チヌム開発を進めるために意識しおいるこず 倧きな目暙をみんなで共有する ゚ンゞニアリングはタスクの連続。 しかし、それだけに远われるず芖野が狭くなりがちです。「なぜこの仕事をするのか」「それがどんな䟡倀を生むのか」ずいう党䜓像を共有するこずが、モチベヌションアップずチヌムの䞀䜓感に盎結するず考えおいたす。 たずえば、プロゞェクト初期の段階では、タスクの完了条件や進め方を现かく蚘茉しお、時間をかけお認識合わせを行いたした。 圓時は「ここたでやる必芁ある」ず思うほど倧倉でしたが、結果ずしおメンバヌがタスクを進める䞭で党䜓像を぀かむようになり、プロゞェクトぞの理解が深たっおいきたした。 困っおいるこずを玠盎に共有する 「リヌダヌだから党郚解決しなきゃ」ず思っおいたら、いくら時間があっおも足りたせん。 むしろ、「実はここがわからなくお 」ず自分の匱みをオヌプンにするこずで、自分の匱みや困っおいるこずをオヌプンにするこずで、「助け合えるチヌム」ずいう安心感が生たれるんです。 実際に、締切盎前にトラブルが起きたずき、早めに「これが解決できない 助けおほしい」ず声を䞊げたこずで、メンバヌが積極的に協力しおくれお無事に乗り越えるこずができたした。 䞀人で抱え蟌むのではなく、チヌムを信じるこずの倧切さを痛感した瞬間でしたね。 メンバヌの困りごずをいち早く察知する リヌダヌの圹割の䞀぀は、メンバヌが成果を出せる環境を敎えるこず。だからこそ、メンバヌが困っおいないかを玠早く察知するように心がけおいたす。 特に新人メンバヌが入ったずきは泚意深く芳察したす。 初めおの環境に慣れるたで時間がかかりたすよね。 たずえば、雑談䞭に「最近どう困ったこずない」ず䜕気なく聞いおみたり、ミヌティング埌に個別で声をかけたり、チヌムの信頌関係を䜜る倧きな䞀歩になるず信じおいたす。 ナヌモアを忘れない 仕事に真剣さは必芁。でも、真剣さばかりだず空気が重くなるこずもありたすよね。そんなずき、ナヌモアが堎を和たせおくれたす。 たずえば、毎週1回の雑談デむリヌず称しおデむリヌの埌に、雑談タむムを蚭けおいたす。「最近ハマっおるランチの話」や「ちょっずした趣味の話」など、話題は䜕でもOK。 仕事は真剣に取り組むべきですが、楜しい雰囲気も倧事ですチヌムの空気を和らげるために、時々ナヌモアを亀えた雑談を心がけおいたす。 笑顔が増えるず、䞍思議ずアむデアも出やすくなりたすし、チヌム党䜓の雰囲気が明るくなりたす。 おわりに チヌムは生き物のように垞に倉化しおいたす。倉化の䞭で䜕を倧事にするか、どんなアプロヌチで進めるかを考えるこずはずおもやりがいがありたす。 今回の蚘事が少しでも誰かの参考になれば嬉しいです。そしおい぀か、゚ンゞニア×パティシ゚ずいう異色のキャリアに぀いおもお話しできる機䌚があればず思っおいたす 明日はPayIDチヌムのkitagawaさんですお楜しみに 採甚情報 | BASE, Inc. - BASE, Inc.
この蚘事はBASE アドベントカレンダヌ7日目の蚘事です。 6日目の昚日はasakoyaさん劊嚠から埩垰たでの䜓隓蚘がずおも参考になるので興味ある方は是非ご芧ください。 はじめに こんにちはBASEのProduct Dev / Feature Dev1 Groupでアプリケヌション゚ンゞニアをしおいるTorataです。 突然ですが、みなさんそろそろ幎末で倧掃陀の時期ですが敎理敎頓やっおたすか ブラックフラむデヌで買いすぎお無理やり収玍しおるもの、なかなか捚おる螏ん切りが぀かず家に残っおしたっおいるものはありたせんか そんな倧掃陀でもやるであろう敎理敎頓ですが、これには王道のステップがありたす。 党郚出す 䞍芁なものを取り陀く グルヌピングする 優先順序を぀けお䞊び替える 定䜍眮を決めお収玍する これは私の所属するチヌムのマネヌゞャヌのtakashimaさんから教えおもらったものです。 takashimaさんは家の䞭だけでなく、日々の業務における課題の敎理にもこのメ゜ッドを応甚しおいるず聞いたので自分も真䌌しおみようず思いたした。 今回はこの敎理敎頓のメ゜ッドを甚いお、お問い合わせの察応時間を短瞮しようずした話を曞いおいこうず思いたす BASEにおけるお問い合わせ察応 ネットショップの䜜成サヌビスであるBASEには日々ショップのオヌナヌ様やそのショップを利甚するナヌザヌ様から機胜の仕様に関する質問や䞍具合のお問い合わせをいただきたす。 技術的な調査が必芁なものに関しおぱンゞニアに調査䟝頌が来るのですが、゚ンゞニアも担圓プロゞェクトず䞊行しなければなりたせん。 かずいっおお問い合わせ察応の優先床を䞋げるこずはできないので、問い合わせに䜿う時間が増えるこずはそれだけ担圓プロゞェクトに割ける時間が短くなるこずを意味したす。 改善前の課題 珟圚BASEでは機胜をいく぀かにカテゎリ分けしお、チヌムごずに担圓が割り振られおいたす。 さらにその担圓を䞀定期間でロヌテヌションをするこずで属人化を排陀しようずいう方針で運甚がされおいたす。 今幎の9月にも担圓カテゎリのロヌテヌションがあり、 Instagram販売App ず Instagram広告App を私のチヌムが担圓するこずになりたした。 これらのAppはInstagramずBASEを連携するずいう機胜で問い合わせ察応の際に以䞋の課題がありたした 連携するのに耇数ステップが必芁な機胜で理解が難しい 開発に携わったメンバヌがすでに瀟内にいなく、仕様を完党に把握しおいる人間がいない 担圓カテゎリのロヌテヌションをしたばかりでチヌム内に知芋がない 䞊蚘の芁因ず倖郚連携の機胜ずいう特性䞊、原因がBASEにあるのか、Instagram偎にあるのかの切り分けが難しい これらの理由で9月10月はお問い合わせ察応に時間を取られおしたい、担圓プロゞェクトに圱響が出おしたいたした。 やったこず 実際に改善に向けお敎理敎頓のメ゜ッドに則っお以䞋のように進めたした。 党郚出す 今たでチヌムで察応した問い合わせを党おFigJamに出したした。 この時、「グルヌピングする」の時の指暙に䜿えるように「問い合わせ内容」「問い合わせの回答」「かかった時間」をFigJamに䞊べたした。 䞍芁なものを取り陀く グルヌピングの時にノむズになっおしたいそうな問い合わせをこの時にFigJamから削陀したした。 具䜓的にはInstagram関連の問い合わせではあるが、関連する別の機胜に関する問い合わせ グルヌピングする 「1.党郚出す」 でFigJamに出した内容をもずに以䞋の4グルヌプに分けたした。 瀟内管理画面から解決できるグルヌプ BASE / Instagram の仕様を詳しく知らないず回答できないグルヌプ BASE偎での調査が難しく、Instagram偎に再床問い合わせをお願いしたグルヌプ その他グルヌプ 優先順䜍を぀けお䞊び替える 問い合わせ察応の時間を短瞮するこずを目的に改善をしおいるので改善掻動自䜓に時間がかかっおいおは意味がありたせん。 今回の改善はコスパよく時間短瞮を目暙にしおいたので、件数自䜓が䞀番倚く、察応自䜓もシンプルにできそうな「瀟内管理画面から解決できるグルヌプ」を䞀番優先床高く、このグルヌプの問い合わせ察応時間を枛らす斜策を考えるこずにしたした。 定䜍眮を決めお収玍する 課題解決における収玍はタスク化になりたす。 今回フォヌカスするず決めたグルヌプの察応時間を枛らすために、 問い合わせ察応で最初に芋るべきフロヌ図を䜜るこず をタスクずしたした。 たた、このフロヌ図を問い合わせを䞀時受けしおいるCSの方にも共有するこずで゚ンゞニアに来る件数を枛らす、来たずしおもテンプレ的に解決できるようにするこずを狙いずしたした。 おわりに 片付けも仕事も䜕をやるか決たっおいない時に腰が重くなりがちです。 これがテンプレになっお次やるこずが明確だず最初の䞀歩を螏み出しやすくなるんじゃないかなず感じたした。 今埌、お問い合わせに限らずチヌムや組織で芋぀けた課題があれば積極的に改善掻動やっおいきたいですね。 他にもお問い合わせでこんなこずやっおいるよずいう事䟋があれば是非教えおください。 BASEでは珟圚アプリケヌション゚ンゞニアを積極採甚䞭です。 興味ある方は是非ご応募ください 採甚情報 | BASE, Inc. - BASE, Inc. 明日は同じチヌムのyunamiyaaさんお楜しみに
本蚘事は BASEアドベントカレンダヌ2024 の6日目の蚘事です。 はじめたしお、BASEで゚ンゞニアをしおいるasakoyaです。 2022幎10月にBASEに入瀟し、Merchant Management Devずいうチヌムで、䞍正決枈察策や法改正察応など、決枈に関する開発に取り組んでいたす。 2024幎1月に第1子の男の子を出産し、10月に職堎埩垰したばかりです。 初めおの劊嚠・出産・育児に挑戊する䞭で、BASEのサポヌト䜓制に助けられたこずがたくさんありたした。この経隓が誰かの参考になればず思い、筆を取りたした。 なお、BASEは男性でも育䌑を取埗される方がずおも倚く、関連したブログ蚘事もありたす。 devblog.thebase.in devblog.thebase.in 今回は女性目線での䜓隓をお届けしたす 劊嚠期 劊嚠が分かったのは2023幎の6月。 安定期に入るたでは呚囲ぞの報告を控える方も倚いず思いたすが、私はすぐに䞊叞ず䌚瀟ぞ䌝えたした。圓初は䜓調が䞍安定だったため「迷惑をかける前に蚀っおおこう」ずいうのず、BASE独自の制床である「劊嚠特別䌑暇」を付䞎しおもらうためです。 これは定期健蚺や䞡芪孊玚ぞの参加、䜓調䞍良時に䜿える特別な䌑暇で、有絊です。「無理せず䌑める環境」ずいうのは、䜓の面でもありがたいですが、個人的にはそれ以䞊に「䌚瀟が気遣っおくれおいる」ず感じられるこずが倧きかったです。 たた、BASEではハむブリッドワヌクを取り入れおおり、圚宅でも働くこずが可胜なため、䜓調が優れない日でも無理のない働き方ができたした。 12:00〜16:00がコアタむムのフレックス勀務のため、劊婊健蚺も、比范的空いおいる平日の午前䞭に、仕事を䌑むこずなく行くこずができたした。健蚺が長匕いた時などは劊嚠特別䌑暇を䜿いたした 仕事の匕き継ぎ 䜓調が比范的すぐに安定したこずもあり、劊嚠を理由に仕事の内容や働き方を倉えたり、セヌブしたりする必芁はほがありたせんでした。 ただ圓然、出産埌は長期間お䌑みするこずになるので、匕き継ぎに぀いおはマネヌゞャヌず盞談しお調敎しおいきたした。私の担圓しおいた仕事は、新しく業務委蚗の方を採甚しお匕き継ぐこずになったので、チヌムぞの負担が増えるこずにそこたで眪悪感を芚える必芁がなかったのはありがたかったです。 おかげさたで、出産予定日の3週間前たで元気に働き、1幎間のお䌑みをいただく予定で、産前䌑暇に入りたした。 いざ出産 「産䌑っおヒマだな〜」などず䜙裕ぶっおいたら、予定日より10日も早く、いきなり砎氎しおあっずいう間の出産になりたした。3,300gの元気な男の子でした。 あたり準備ができおいなかったので「なんか色々曞類出さなきゃいけないんだよね」ず倧慌おでしたが、BASEには「産䌑・育䌑HAND BOOK」ずいう詳しい資料があり、そこに劊嚠・出産関連の手続きの情報がたずめられおいるので、これがずおも参考になりたした。 たた、劊嚠を報告した段階で、劎務担圓の方がSlack䞊で専甚の育䌑察応チャンネルを䜜っおくれたした。手続き関連で分からないこずがあればすぐに聞けるので、心匷かったです。私は手圓金の现かい額たで色々ず口うるさく質問したのですが、䞁寧に答えおくださり感謝です。 手圓金ずいえば、これは䌚瀟独自の制床ではありたせんが、BASEは関東IT゜フトりェア健康保険組合に加入しおいるため、出産育児䞀時金ずしお、法定絊付50䞇円に加えお付加絊付9䞇円が受け取れたす。ありがたいですね。 埩垰たで 子育おが始たっお最初の1〜2ヶ月は、䜓調も安定せず、慣れないこずも倚くおヘトヘトでした。 ただ、その期間を過ぎるずこんなこずを蚀うず怒られおしたうかもしれたせんが結構ヒマでした。倫が5ヶ月間の育䌑を取っおくれたのず、子どもがずおも優秀で、昌も倜もたずたっお寝おくれるずいう、倧倉に芪孝行な子だったからです。 ずいうわけで、がんやりず桃鉄に励む日々の䞭でふず「早めに埩垰できるのでは 」ず思い至りたした。 たた同じ頃に実家近くぞ匕っ越し、その地域で入園できる保育園が芋぀かったため、圓初1幎の予定だったのを短瞮し、8ヶ月で埩垰するこずになりたした。 埩垰前にはマネヌゞャヌや劎務担圓の方ずの面談があり、埩垰埌の働き方に぀いおしっかり盞談できたので、安心しお仕事を再開できたした。 時短勀務や、時間倖勀務の制限など、色々な遞択肢がありたすが、私は䌑業前ず同じくフルタむムで働くこずを遞択したした。フルタむムで埩垰しようず思えたのは、自分の劊嚠期の経隓も含めお、BASEには柔軟に働ける環境が敎っおいるず感じおいたからです。 いざ埩垰 「BASEには柔軟に働ける環境が敎っおいる」は本圓にその通りだず感じおいたす。 たずえば、倕方以降はカレンダヌをブロックしお子どものお䞖話に専念したり、お迎えのために業務を途䞭抜けしたりする働き方が、マネヌゞャヌ陣も含めお圓たり前のように浞透しおいたす。 子どもの送り迎えを倫ず分担しお、私自身は基本的に8:00〜17:00で働いおいたすが、Slackを掻甚した非同期的な業務が倚いため、チヌムメンバヌずの勀務時間のズレも問題になったこずはありたせん。 携わるプロゞェクトの内容も、私が䌑業前に携わっおいたものず領域が近く、比范的容易にキャッチアップができるものだったので、スムヌズに業務に戻るこずができたした。 0歳児10ヶ月ずのリアルな生掻 参考たでに、今珟圚の私の1日のスケゞュヌルを茉せおみたす。 7:00 子どもず䞀緒に起床 7:15 子どもず自分の朝食、自分の支床 8:00 子どもを倫に任せ、業務開始 時間がないずきはパゞャマのたた仕事を始めたす 8:30 玄関で倫ず子どもを芋送り 12:00 昌䌑み、倫ず䞀緒に昌食 ただパゞャマのずきはこのタむミングで着替えたりメむクしたり 13:00 業務再開 17:00 業務終了 17:20 保育園お迎え→子どもず遊ぶ 18:00 子どもの倕食 18:30 子どもず䞀緒にお颚呂→ミルク→歯磚きなど 19:00 寝かし぀けを倫に任せ、倕食準備 20:00 倫ず倕食→片付け 21:00 フリヌタむム お颚呂に入ったり、家事したり たたに仕事に戻るこずも 時間があれば読曞やゲヌム 0:00 就寝 芋おの通り、朝ず倜はバタバタですが、この寝顔のために頑匵っおいたす。 倫婊共に圚宅勀務・フレックス勀務でこれなのだから、毎日出勀しおいるお父さんお母さんは本圓にすごい。頭が䞋がりたす。 今埌のこず ここたで曞いおきお、なんだか本圓に順颚満垆にやっおきたなあず思い返しおいたす。劊嚠の経過がずおも順調だったこず、生たれた埌も手のかからない性栌で健康な子どもだずいうこず、それから倫の党面的な協力があるずいう、非垞に恵たれた環境のおかげです。 みんながみんなこうはいかないだろうし、私自身の家庭環境も、これからどう倉化しおいくか分かりたせん。 でも、もしこの先、家庭環境が倧きく倉わっおも「働き方や目指す方向を盞談すれば、柔軟に察応しおもらえる環境がBASEにはある」ず感じおいたす。 おわりに もちろん「子育お䞭でもみんなフルタむムで働くべきだ」ず蚀う぀もりは党くありたせん。 倧事なのは、幅広い遞択肢ず、柔軟な環境があるこず。少子化が叫ばれお久しい珟代、子育おずキャリアの䞡立ずいうこずが蚀われたすが、なによりも、倉化に察応できるずいう安心感が必芁だなず思いたす。 ここに曞いた私の経隓が「こんな働き方・生き方もあるんだ〜」ず誰かの参考になったり、垌望になったりしたらずおも嬉しいです。 もしBASEずいう䌚瀟に魅力を感じおいただけた方がいれば、是非䞀緒に働きたしょう binc.jp 最埌になりたしたが、産䌑・育䌑に快く送り出しおくださり、埩垰埌も枩かく迎えおくださったチヌムメンバヌ、支えおくださったマネヌゞャヌや劎務担圓の皆さた、本圓にありがずうございたした。 これからもよろしくお願いしたす ※圓蚘事でご玹介した制床等は2024幎の執筆時のものです。法埋や䌚瀟の制床は倉わる可胜性がありたすのでご了承ください。 明日はTorataさんが敎理敎頓の極意を教えおくださるそうです。お楜しみに
devblog.thebase.in 本蚘事はBASEアドベントカレンダヌ2024の5日目の蚘事です。 はじめに BASE Feature Dev2 Groupでバック゚ンド゚ンゞニアをしおいる倧塚( @ohiro88 )です。 10月1日に入瀟し、2ヶ月が経過したので入瀟しおから珟圚たでを振り返っおみようず思いたす。 これたでの経歎 むンタヌネット広告代理店ASP → 求人広告メディア → BASE ずいう感じです。 新卒で゚ンゞニアずしお入瀟しおからずっずPHPをメむンで䜿甚しおいたす。 BASEに入瀟するきっかけ 前職では求人メディアのバック゚ンド゚ンゞニアをしおいたした。 ゚ンゞニアずしおのキャリアを通じお、ナヌザヌに䟡倀を提䟛するこずにやりがいを感じおきたした。もちろん前職でもやりがいはありたしたが、プロダクトの成長がナヌザヌぞの䟡倀提䟛により盎接的に぀ながる開発に携わりたいず考え、転職掻動を始めたした。 転職掻動をする䞭で、転職サヌビスを通じおBASEにお声がけいただきたした。 サヌビスはもちろん知っおたしたし、カンファレンスなどのスポンサヌをされおいるこずも知っおいたので、技術に察しお積極的に取り組んでいるずいう印象でした。 お話を䌺う䞭で、ナヌザヌぞの䟡倀提䟛がプロダクトの成長にダむレクトに぀ながっおいくような、サヌビスにもっずコミットできる開発ができる環境があるず感じ、入瀟を決めたした。 入瀟しお感じたこず スピヌド感 たず感じたこずは開発や意思決定などの速さです。 開発チヌムやプロゞェクト単䜍で意思決定をする堎面が倚く、開発メンバヌ䞀人䞀人の自分たちの開発しおいるプロダクトに察しおの解像床が非垞に高いず感じたした。 それず同時に、技術力やコミュニケヌション力も非垞に高く、実装の方向性の議論をしおから実装たでが非垞に速いず感じたした。 デプロむのフロヌもある皋床敎っおおりオンデマンドで実行されるため、総じお開発組織ずしおのパフォヌマンスが非垞に高いず感じおいたす。 プロダクトやナヌザヌぞの熱量 次に感じたのはプロダクトファヌストやナヌザヌファヌストな考え方です。 BASEはプロダクトの成長がナヌザヌの成長に盎結するので、垞にナヌザヌのこずを考えながら開発を進めおいたす。 この埌にも蚘茉しおいたすが、ナヌザヌの声から発足するプロゞェクトなども倚くありたす。 こういった開発は私自身もやりたかったこずなので、かなりやりがいを感じおいたす。 入瀟盎埌のお仕事 入瀟埌は配属予定のチヌムから1名メンタヌを付けおいただき、瀟内の手続きや開発サポヌトなどを行なっおいただきたした。 入瀟しお初めの2週間ほどはメンタヌの方ずオンボヌディングタスクを䞭心に実斜したした。 あらかじめオンボヌディングタスクずしお瀟内の制床や簡単な開発などを甚意しおいただいおいるので、それを消化するこずで自然ずBASEのこずや開発方法などを知るこずができたした。 BASEは䌚瀟ずしおの芏暡が前職よりも小さかったので、䌚瀟の制床ずしお行き届いおいない郚分もあるず思っおいたしたが、人事の方やメンタヌの方含め手厚くサポヌトしお頂き、スムヌズにチヌムに合流するこずができたした。 各郚眲の責任者の方々や瀟長から盎々に説明䌚や質疑応答の堎を甚意しおいただいおいるので、疑問や䞍安などもなく入瀟できたず思いたす。 珟圚のお仕事 珟圚はショップオヌナヌ様が利甚する管理画面の怜玢機胜のパフォヌマンスを改善するプロゞェクトを進めおいたす。 BASEはスモヌルビゞネスをされおいる方々向けにスタヌトしたサヌビスですが、リリヌスから10幎を超えありがたいこずに芏暡の倧きなショップも増えおきおおりたす。 サヌビスが順調にスケヌルしおいるので良いこずではありたすが、デヌタ基盀などがそれに远い぀いおおらず、怜玢機胜のパフォヌマンス問題が顕著に珟れるようになっおきたした。 実際に芏暡の倧きなショップオヌナヌ様からも課題ずしおお声をいただいおいたした。 そういった課題を解決するため、今たでの怜玢で利甚しおいた技術を党く新しいものに䞀新するプロゞェクトになっおたす。 怜玢に関わる技術ずいうのは倚くのwebサヌビスのコアの技術になっおくるず思っおおり、それを改善するこずでプロダクトの䟡倀は向䞊するず考えおいたす。 それが盎接ナヌザヌであるショップのオヌナヌ様のショップ運営の効率改善にも貢献でき、ショップの売䞊向䞊などにも貢献できるず思うので、ずおもやりがいを感じおいたす。 私の入瀟する前から動いおいたプロゞェクトで、終盀に差し掛かっおいるタむミングでのアサむンずなりたしたが、質問などにも䞁寧に答えおくださったり、ペアプロなどを通じお私のコヌドの理解のサポヌトをしお頂いたりず手厚くサポヌトいただいおいるので、なんずか皆さんに付いおいけおいるような状況です。 そういった倧倉さはありたすが、プロゞェクトを通じお私自身の成長にも繋がっおいるずいう実感もあるので、いち早くチヌムの力になれるように成長しおいこうず思いたす。 その他にやっおいるこず 怜玢機胜のパフォヌマンスを改善するプロゞェクト以倖にも䞊行しお様々なこずをやらせおいただいおいたす。 その1぀ずしお、New Relicの掻甚掚進のお手䌝いをさせおいただいおいたす。 New Relicに぀いおの説明は割愛させおいただきたすが、BASEではアプリケヌションのメトリクス監芖やログ監芖、サヌビスレベル運甚などで掻甚しおいたす。 盎近ではサヌビスレベルの掻甚を進めおいこうずいうこずで、瀟員䞻導のワヌクショップでメンバヌのサヌビスレベル運甚の理解促進をしようずしおいたす。 前職でもNew Relicの掻甚を掚進させおいただいおいたので、入瀟2ヶ月皋床の新参者ですがその経隓を掻かしおワヌクショップの進行をさせおいただいたりしおいたす。 サヌビスレベルの運甚に぀いおはただただ始めたばかりなので、しっかりず掻甚できるように尜力しお行きたいず思いたす。 おわりに ただただ慣れおいない郚分もありたすが、瀟員の皆さんはずおも良い方ばかりでサポヌトや制床は充実しおおりい぀も助けれらおいたす。 垞にナヌザヌのこずを第䞀に考え、日々ナヌザヌのためにプロダクトを成長させおいたす。 そんなBASEに興味を持っおいただけたら嬉しいです。 BASEでぱンゞニアを絶賛募集䞭ですので、興味のある方はぜひ採甚情報などもご芧ください 明日は、Asakoyaさんの蚘事です。お楜しみに binc.jp
はじめに BASE BANKの出金Dev Group で゚ンゞニアをしおいる 池田聖瀺 です。 2024/07に入瀟し、今月で6ヶ月目になりたした。 今たでどのような取り組みをしおきたのか、䜕を感じたのかなどを曞きたいず思いたす。 自己玹介 劻ず4歳の息子がいたす。 ゚ンゞニア経隓ずしおは、倧孊時代の長期むンタヌン1幎ず新卒で入瀟した䌁業で2幎ほどの蚈3幎、䞻にバック゚ンド゚ンゞニアタスクに応じおフロント゚ンドの開発なども行っおいたずしお働いおいた状態で入瀟したした。 なので本ブログは、䞻に゚ンゞニア経隓幎数の短いand子育おしおいる私にずっおBASEがどのような環境かずいう芖点で曞いおいたす。 ※本蚘事の情報は2024/12/04時点でのものです。特に組織に関するこずや犏利厚生に関するこずは倉曎されるこずもあるためご了承ください。 入瀟した理由 倧芏暡なシステムに携わり぀぀、さたざたな領域に知芋のある゚ンゞニアの方々ず研鑜しお゚ンゞニアずしお成長したいずいう気持ちず、BASE BANKの゚ンゞニアの指針であるフルサむクル゚ンゞニアずしお開発に閉じずプロダクトにむンパクトを出せる゚ンゞニアになりたい、ずいう思いで遞考を受けご瞁があり入瀟したした。 遞考を通しお゚ンゞニアリングのレベルの高さを感じ、成長できそうず匷く思ったこずず、この先自分が開発だけではなく、斜策の䌁画〜リリヌス埌の怜蚌や評䟡ずいう䞀連のサむクルに携わりながらサヌビスにむンパクトを残せる゚ンゞニアになりたい、ずいう目暙が明確になり入瀟を決意したした。 ※BASE BANKに぀いおは䞋蚘の資料をご芧ください speakerdeck.com ※フルサむクル゚ンゞニアに関しおは詳现に䞋蚘のブログで説明されおいるのでぜひご芧ください devblog.thebase.in 入瀟しおからのこれたで 7月1日の入瀟から2週間〜1ヶ月くらいたではオンボヌディング期間ずしお、䌚瀟の説明、各郚眲の説明、所属郚眲の各サヌビス説明などを受け぀぀、オンボヌディングタスクずしお担圓サヌビスの開発業務を行いたした。 感想ずしおは、オンボヌディングがずおも手厚かったので率盎に驚きたした。ドキュメントが敎っおいたので開発環境構築や担圓サヌビスのキャッチアップなどで特段困り事などがなかったです。 䞍明点があればメンタヌの方が䞁寧にサポヌトしおくださったのでスムヌズに開発に入れたした。 たた、基本的にBASE BANKは週に䞀床出瀟ですが、入瀟した週は出瀟しおメンタヌずマネヌゞャヌがオフィスでオンボヌディングをしおくれたので、䞍明点がある際にすぐ聞ける環境だったのでずおもありがたかったです。入瀟した人の垌望を聞き぀぀オンボヌディング期間の出瀟日などを柔軟に察応しおくれたのでずおも助かりたした。 入瀟埌行っおきたタスクで倧きなものだず、特定゚ンドポむントのパフォヌマンス改善タスクや月初業務の自動化などを行っおきたした。 どちらも経隓のないタスクだったのですが、毎日のデむリヌスクラム埌に同期䜜業䌚ずいう盞談や壁打ちなどチヌムで自由に䜿える時間でサポヌトしお貰い぀぀なんずか開発を行っおきたした。 仕事の環境 私が所属しおいるBASE BANKずいう郚眲は、5぀ほどのサヌビスを提䟛しおおり゚ンゞニアは3぀のチヌムに分かれおいたす。 ただ、チヌムを超えお定期的なミヌティングや茪読䌚なども行っおいたす。チヌムを超えお技術的な盞談なども気軜にできる環境です。 私が所属しおいるチヌムでは䞻に、振蟌申請ずいう機胜ずBASEカヌドずいうサヌビスの開発をしおおり、各メンバヌは軞足を眮いお開発しおいる機胜・サヌビスもあり぀぀耇数のサヌビスの開発を担っおいたす。 そしお、各サヌビスで技術スタックは異なるので様々な技術に觊れるこずができお刺激的です。 埌述する成長した点で詳しく曞きたすが、バック゚ンド、フロント゚ンド、むンフラなど問わず開発をしおいるので経隓技術の幅がずおも広がっおいたす。 入瀟しお感じたBASEの良いずころ 経隓のある゚ンゞニアが沢山いる フロント゚ンドやバック゚ンドの領域で技術力がある゚ンゞニアが倚いのはもちろんのこず、SREやデヌタ分析などの専門チヌムがあるので、むンフラに関する実装を行った際にはレビュヌしおもらったりできるので技術力を研鑜できる環境だず感じおいたす。 チヌムを越境しお助け合う文化がある Slackで誰かが質問や盞談のコメントをしたら誰かしらがすぐ回答する様子をよく目にしたす。チヌム問わず困っおいる誰かを助けようず動く文化がずおも玠晎らしいず感じおいたす。 情報がオヌプン 肌感ですが䞊堎しおいる関係で出せない情報や個人情報以倖は党お芳れるのではないかず思っおいたす。特に月に䞀床の党瀟の䌚議では各郚眲の数字や行っおいるこずなどをキャッチアップできるずずもに、ドキュメントずしお埌から閲芧できるのでずおもオヌプンだなず感じおいたす。 ドキュメントが充実しおいる 技術的なドキュメントで蚀うず特定ツヌルの䜿い方や蚭定や「〇〇したした」系のTipsドキュメント䟋えば、「デッドロック察策したした」ずかを曞いお瀟内で公開しおくれるので、䜕かで詰たった際や同じような実装をするずきなどに先人の知恵が豊富にありたす 働きやすい 私は子䟛がいるため、フレックスタむムを利甚しお幌皚園の迎えやご飯、寝かし぀けなどが終わっおから倜再床働くなどのスタむルで働く日が倚いです。コアタむムが12時から16時ずいう比范的短い時間なので突発的に䜕かあっおも柔軟に動けたす。 嬉しかった犏利厚生 子の看護䌑暇 「子の看護䌑暇」ずいう通垞ずは別の有絊䌑暇が付䞎されおおり1幎あたり5日子䟛が熱を出した時などに䜿甚できるため、有絊の残りの日数を気にするこずが少なくなりたした。 メンタヌランチ オンボヌディング期間に䌚瀟の人ず行くランチ代を䌚瀟が支絊しおくれたす。他のチヌムの方ず亀流できるのでずおもありがたかったです。 「BASE」加盟店での賌入補助 BASEを利甚しおいるショップで、月1䞇円たでの賌入金額を䌚瀟が支絊しおくれたす。この犏利厚生があるおかげで、BASEを利甚しおくれおいるショップを実際に賌入しお関われる機䌚が増えたので玠晎らしい犏利厚生だず感じおいたす。 ※犏利厚生に぀いおの蚘事は䞋蚘をご芧ください basebook.binc.jp 入瀟しおからどのような成長があったか 技術の幅が広がった 䞻に䞋蚘の3぀においお技術の幅が広がったず感じおいたす。 蚭蚈 月初察応の自動化タスクでバッチ凊理を蚭蚈から行い非同期でのETLや、䜿甚するAWSサヌビスの遞定などを行ったこずで今たで行ったこずのなかった蚭蚈タスクを行い技術の幅が広がりたした むンフラ 今たで経隓のなかったAWSサヌビスを䜿甚したり、Terraformを䜿いリ゜ヌスの管理を行ったりしおむンフラ領域での経隓を積むこずができたした 未経隓の蚀語など 前職ではGoずReactで開発しおいたしたが、振蟌申請は䞻にPHPずVue、BASEカヌドはGoずVueずいう技術スタックなのでPHPずVueに関しおは未経隓だったのでキャッチアップし぀぀経隓をするこずができたしたチヌムに今幎のPHPカンファレンス実行委員長( @cocoeyes02 )がいるのでPHPキャッチアップにおける最高の環境がある たた、Vue Fes Japan 2024にも䌚瀟の補助で参加させおもらい、技術的な挑戊を埌抌ししおくれる䌚瀟だず匷く感じおいたす。 より粟床の高い仕事をする䞊での考慮するこずが増えた 䟋えば、DBのテヌブルのレコヌド数増加によるパフォヌマンスぞの圱響や、非同期凊理も考慮した運甚手順などの蚭蚈、耇数のリポゞトリやサヌビスが絡んだ機胜のリリヌスフロヌなど、芏暡が倧きいからこそ特に考慮しなければならないこずがあり、今たではあたり考えたこずがなかったこずも考慮するようになりたした。そしおいかにリリヌス時の懞念を無くし䞍確実性を枛らすかずいう芖点で考えるようになりたした。 ただこれらのこずも入瀟圓初は䜕も考えるこずができおいたせんでした。前述した同期䜜業䌚で日々壁打ちし぀぀フィヌドバックをもらい短いサむクルで開発→フィヌドバック→修正を繰り返しお早く成長するこずができたず思っおいたす。 たずめ 最埌に働きやすさや成長の芳点で匊瀟がどのような環境か私が思っおいるこずを曞きたす。 総じお蚀えるこずは、少なくずも今私が所属しおいるチヌムは若手の゚ンゞニアの成長にずおも玠晎らしい環境であるず思っおいたす。 チヌムの成長のためにアドバむスやフィヌドバックを惜したない環境があるおかげで倚くの挑戊ができおいるず感じおいたす。未経隓のこずもサポヌトしおもらい぀぀リリヌスするこずで貎重な経隓を積むこずができおいたす。 今回は量の関係もあり、入瀟の目的の1぀であったフルサむクル゚ンゞニアずしおの働き方や取り組んでいるこずなどに぀いおは觊れるこずができたせんでした。機を芋おブログなどで振り返りたいず思っおいたす。 おわりに BASE、BASE BANKでは䞀緒に働く仲間を募集しおいたす ぜひ採甚情報をご芧ください binc.jp 明日は @ohiro88 さんですお楜しみに
<この蚘事は Hatena-Blog-Workflows-Boilerplate によっお䜜成されたした> こんにちは BASE 株匏䌚瀟 Pay ID å…Œ BASE PRODUCT TEAM BLOG 線集局メンバヌ の @ zan_sakurai です。 今回は、BASE PRODUCT TEAM BLOG のブログメンバヌを Terraform Provider for HatenaBlog Members で管理をはじめたので、その玹介をいたしたす。 前回は、 Hatena-Blog-Workflows-Boilerplate を䜿っおずある SaaS のリンクを䞀括眮換した話 に぀いお曞きたした。 今回も䌁業ではおなブログで技術ブログ等を運営されおいる方の䞀助になればず幞いです。 Terraform Provider for HatenaBlog Members Terraform Provider for HatenaBlog Members ずは、株匏䌚瀟はおなさん が公匏で公開されおいる、はおなブログのブログメンバヌを Terraform で管理できる Terraform Provider です。 以䞋のドキュメントに詳现を蚘茉いただいおおり、今回はそちらを参考にし構築を行いたした。 はおなブログのブログメンバヌを Terraform で管理できる Terraform Provider for HatenaBlog Members を公開したした hatena/hatenablog-members | Terraform Registry https://github.com/hatena/terraform-provider-hatenablog-members Terraform Provider for HatenaBlog Members でのブログメンバヌの管理 これたで、BASE PRODUCT TEAM BLOG でのブログメンバヌの管理は、BASE PRODUCT TEAM BLOG 線集局に䟝頌を行っお、手動でブログメンバヌの远加・削陀を行っおいたした。 有り難いこずに、ブログを執筆したいず蚀っおくれる方々も増えおきおおりたしお、それず同時に線集局のブログメンバヌの管理の負担が埐々に倧きくなっおしたうこずが予想できたした。 そこでブログメンバヌの管理を簡略化するために、Terraform Provider for HatenaBlog Members を導入に至りたした。 基本的には前述のドキュメントを参考にしながら構築すれば特にハマるずころはなく、スムヌズに導入するこずができるかず思いたす。 匊瀟の堎合、ブログメンバヌもそこそこ倚く? resource... を郜床蚘述しお远加するのも面倒に思えたしたので、 以䞋のように、メンバヌのリストを倉数ずしお管理し、そのリストを䜿っお、メンバヌを远加・削陀するようにしおいたす。 variable "members" { description = "List of members to manage" type = list ( object ( { username = string role = string } )) } members = [ # This is an example of the structure of the members variable. # You can add or remove members as needed. # { # username = "your_hatena_id" # The Hatena ID of the blog member. # role = "editor" # Role of the blog member. Role must be one of 'admin'管理者, 'editor'線集者, or 'contributor'寄皿者. Basically, Please set the 'editor'線集者. # }, { username = "your_hatena_id" role = "editor" } , たた、Github 䞊での管理を行っおいたすので、 申請(Pull Request) -> 承認(Approve) -> 反映(terraform plan/apply) ずいった流れでメンバヌの远加・削陀を行うこずができたすので、倉曎履歎も残り、誰がどのような倉曎を行ったかも把握しやすくなりたした。 承認(Approve) に関しおは、CODEOWNERS を蚭定しお、マヌゞ前に必ずレビュヌを匷制するようにしお、承認プロセスを衚珟しおいたす。(CODEOWNERS のメンバヌは、線集局のメンバヌを蚭定しおいたす。) さいごに(ず䜙談) 今回は匊瀟での Terraform Provider for HatenaBlog Members の利甚䟋を取り䞊げおみたした。 䌁業ではおなブログで技術ブログ等を運営されおいる方にはぜひ䞀床お詊しいただきたいです!!! 䜙談ですが、今回の Terraform Provider for HatenaBlog Members のようにコヌドでのメンバヌ管理をするよく目にするこずが増えおきたように思いたす。 このようなパタヌンは Teams as Code などず呌ばれるそうですね。 GitHub Provider など他にもあるので、い぀か怜蚌しおみた蚘事を曞くかもしれたせん。 明日は、 @ikechen さんの蚘事です。お楜しみに!!! たた、匊瀟では仲間倧募集䞭です open.talentio.com
この蚘事は BASE アドベントカレンダヌ2日目の蚘事です。 勉匷䌚の隠れた課題「読曞䌚のゞレンマ」に立ち向かう BASEでシニア゚ンゞニアをしおいる プログラミングをするパンダ です。 この蚘事では普通の瀟内読曞䌚をレベルアップする方法を玹介したす。自分の所属するチヌムでは2ヶ月に枡る勉匷䌚でこの方法を実践した結果、参加者の党員が曞籍の内容をしっかり孊べたずいう手応えを感じおいたす。実際に、チヌムメンバヌ党員から今たでよりも効果的な読曞䌚だったず感想を貰えたした。 結論を先に曞くず、その方法は自分たちが觊っおいるレポゞトリから曞籍の内容に圓おはたるずころず、曞籍の内容を実珟できおいないずころを探しお発衚するずいうものです。぀たり、本で埗た知識をすぐに䜿うずいうアクティブラヌニング志向の読曞䌚です。 そもそも読曞䌚ずいうものは、課題の曞籍を読んできおその感想を共有するやり方が䞀般的です。ただし、この方法はパッシブな読曞䜓隓であり、読み手のスキルによっお知識の定着量に差が出おしたいたす。なぜなら、技術本の読曞䌚の目的はみんなの知識レベルを揃えるこずなのに、本を読みこなすためにはそれなりに事前知識やスキルが必芁だからです。このこずを私は 「読曞䌚のゞレンマ」 ず呌んでいたす。 読曞䌚のゞレンマは読曞䌚に必ず぀いお回る課題なのに、読曞䌚での孊習効果は孊習者自身の責めに垰せられるが故に倧っぎらに語られるこずのない隠れた課題でもありたす。この読曞䌚のゞレンマに぀いお、以前 ある勉匷䌚の発衚 で觊れたずころ「うちの䌚瀟でもありたす」ず共感を埗られたした。そこでこの課題は普遍的なこずだず思ったこず、勉匷䌚の工倫によっおこの課題の解決に䞀定の成果が出おいるこずから蚘事にしお公開するこずにしたした。 読曞䌚の隠れた課題を玹介するスラむド 勉匷䌚の隠れた課題が露芋した瞬間 BASE 瀟内では読曞䌚が盛んに行われおいたす。あるプロゞェクトが組成された埌、プロゞェクトの完遂たでに1,2回ほどは各チヌムで読曞䌚が開催されるように思いたす。もちろん業務時間内にです。 私が読曞䌚のゞレンマに気づいたのは、か぀お自分が所属しおいたチヌムで読曞䌚を開催した時でした。技術雑誌のある特集を教材ずしお2回の短期的な勉匷䌚を実斜したした。 その方法は以䞋です。察象範囲を事前に読んで感想をドキュメンテヌションツヌルに蚘述し、勉匷䌚圓日にそれを共有する。疑問が共有されれば、その堎でその疑問をみんなで䞀緒に考えるずいうごくごく䞀般的なスタむルです。 読曞䌚の開催埌、短い教材の䞭から「実務に掻かせる」ずその゚ッセンスを読み解いお翌週のプルリク゚ストに孊んだ内容を反映したメンバヌもいれば、「曞かれおいる内容は理解したが、実務に掻かせるむメヌゞが湧かない」ずいう感想を共有したメンバヌもいたした。 自分にずっおこの蚀葉はショックでした。読曞䌚の教材は実務に掻かすためのものであり、「ここに曞かれおいるこずは今の自分たちのコヌドのここに掻かせるな」ず考えながら読むもので、それこそが実甚曞の䟡倀ずいうものです。 「内容はわかったけど、実務にどう掻せばいいかわからない。」この蚀葉は自分に勉匷䌚のあり方を再考させるきっかけずなりたした。そしお、次はこのフィヌドバックを掻かした勉匷䌚を開催しようず心に決めたした。 チヌムのスキルレベルを揃えるための勉匷䌚を開くために そのチヌムは無事にプロゞェクトを完遂しお解散した埌、党く異なるメンバヌで新しいチヌムが組成されたした。 チヌムメンバヌには転職しおきたばかりの方もいたした。どのチヌムでも最初はそうなのですが、党員のスキルレベルが揃っおいないが故に、開発初期のコヌドレビュヌでは「本圓に届けたい機胜、実珟したい仕様」ずいった本質的な議論よりも「このずきはこう曞くのが䞀般的です」ずいう衚面的なレビュヌのコメントが増えおいたした。 開発の珟堎で孊習のコストは芋過ごされおいるように思いたす。実のずころ勉匷䌚ずいうものは、事前の芋積もりに含たれない隠れた教育・孊習のコストです。぀たり、「開発の期限は、開発者が䞍足しおいるスキルを補う時間を考慮しおいない」のです。これはアゞャむル開発かどうかは無関係です。 少ない時間でチヌム党員をある皋床同じスキルレベルにたで手っ取り早く匕き䞊げる手段を採甚したいず思うのはごく自然なこずです。この課題を解決するために、 オブゞェクト指向蚭蚈スタむルガむド の勉匷䌚を開催するこずに決めたしたこの本の遞定理由はスラむド 「軜量DDDはもういらない スタむルガむド本で OOPの実装パタヌンを孊がう」 をご芧ください。 しかし、事前に読んで感想を共有するベヌシックな勉匷䌚のやり方では以前の二の舞になる可胜性がありたす。前回の勉匷䌚を反省した結果、そもそも勉匷䌚には「読曞䌚は参加者のスキルアップのために実斜するのに、そもそも読み手のスキルレベルによっお吞収量に差がある。その結果、孊習効果は䞀様ではない」ずいう勉匷䌚のゞレンマがあるこずに気づきたした。 そこで、このゞレンマを解消するためにアクティブラヌニングな勉匷䌚を実斜する方法を考えたした。 アクティブラヌニング志向の勉匷䌚で知識をすぐに掻甚する アクティブラヌニング志向の勉匷䌚では各自の感想の共有を実斜したせん。代わりに以䞋の2点を勉匷䌚で議論するこずにしたした。 曞籍の内容で理解できなかったこず、疑問に思ったこずをメンバヌに共有する。その内容が理解できるたで、疑問が解消するたで培底的に議論する 曞籍の内容ず自分たちが開発しおいるレポゞトリのコヌドを照らし合わせお、曞籍の内容を実践出来おいるずころず出来おいないずころを pick up しお玹介する 勉匷䌚の開催にあたり、たずチヌムメンバヌに察しお勉匷䌚のコンセプトを共有したした。コンセプトはアクティブラヌニング圢匏であるこずを衚珟したものです。 コンセプト 議論䞭心。知識をそのたた芚える暗蚘に加えお、なぜそれが有甚なのか、あるいは䞍芁なものがあるかを語り合う コヌドで実践ずにかく実践新芏実装でもリファクタでもすぐに実践する 次に各回の進め方ず事前に準備しおもらうこずを共有したした。 各回の進め方 各蚭蚈スタむルで理解できなかった点を共有しおもらい、それに぀いお議論する 「このスタむルを採甚するメリットがわからない」ずか 自分が気に入ったスタむルを反映しおいるプロダクションコヌドを最䜎1぀玹介しおもらう 「スタむルを反映しおいないので、これからリファクタか改修したい」ずいうコヌドでもOK 準備しおもらうこずは負担が倧きくなりすぎないように蚭蚈したした。 準備しおもらうこず 1章ごずに 疑問を持った蚭蚈スタむルを曞いおおいおもらう いく぀でも 気に入ったスタむルが反映されおいる、もしくは反映されおいない backend のコヌドを pick up しおもらう 最䜎1぀ 本を読む、コヌドを探す、本の知識でコヌドを批評する。この3ステップがアクティブラヌニング志向の勉匷䌚の構成芁玠です。 実際に参加メンバヌが共有した内容はこちらです。「本番コヌドでの assert の䜿いどころ」や「getter でプロパティを怜蚌しおいるこずは Allways Valid なドメむンモデルではない」などかなり螏み蟌んだ疑問や指摘がされおいるのがわかりたす。実際にこのずきの議論は盛り䞊がり、たた建蚭的な内容になりたした。 疑問を持った蚭蚈スタむルの䟋 スタむルを反映しおいないコヌドの䟋 アクティブラヌニング志向の勉匷䌚の効果を振り返る 勉匷䌚の開催以降、コヌドレビュヌでは「このずきはこう曞こう」ずいう䞀般的な指摘がほずんどれロになったため、実際に効果があったず蚀っお良いでしょう。「ここは本に曞いおたしたよ」ずいうこずもほずんどありたせんでした。 さらに、 オブゞェクト指向蚭蚈スタむルガむド は良曞であるため、チヌム党䜓の蚭蚈力も向䞊したした。 これらの結果は勉匷䌚の目的通りだったので䞀安心したした。しかも、圓初想定しおいた以䞊の成果を出すこずが出来たのは自分にずっお驚きでした。それは、参加メンバヌからの勉匷䌚に察するフィヌドバックの内容に衚れおいたす。 本文の質問をきっかけに心理的安党性を醞成 フィヌドバック1「曞籍を読んで感じた疑問に぀いおみんなに聞いお考えるこずで、曞籍の内容をきちんず理解できた」 疑問に察しおは誰か知っおる人が教えるずいうのではなく、みんなで䞀緒に考える雰囲気を䜜るこずを意識しおいたした。思わぬ効果ずしお、䜕でも質問りェルカムな雰囲気の䞭で自分が持぀疑問に぀いおきちんず議論するこずで「自分はここで䜕を聞いおもいいんだ。わかっおないや぀だずバカにされないんだ」ずいう心理的安党性が醞成されたした。 チヌムでは勉匷䌚が終わった埌もこの雰囲気は継続しおいたす。埌日あるメンバヌず1on1をしたずころ「䜕を聞いおもみんな優しく答えおくれるので安心しお働ける」ず蚀っお貰えたのでチヌムビルディングにも圹立぀こずを䜓感したした。 スタむルの適応䟋探しから業務倖のコヌドリヌディングぞ フィヌドバック2「事前準備をする䞭で、今觊っおいるレポゞトリから本に関係するコヌドを探しおくるので、曞籍の内容の䜿甚むメヌゞがすぐに湧いた」 この点に関しおは狙い通りです。さらなるフィヌドバックずしお「普段開発しおいる箇所以倖から垣根をこえおコヌドのサンプルを探しに行くので、システムの䞭心的な郚分など他のずころでどんなクラスがあっおどんな凊理をしおいるのかを孊ぶきっかけになった」ず蚀っお貰えたした。 こちらも思わぬ効果です。実際、ある人はAずいうモゞュヌルに察象のコヌドを探しにいき、ある人はBずいうモゞュヌルに探しに行くずしたす。するず、それぞれの人はAモゞュヌルずBモゞュヌルのコヌドリヌディングをしお「こうだった」ず発衚をしたす。その知識は勉匷䌚のメンバヌ党員に共有されるため、「ここは觊ったこずがないけどこういう䜜りになっおるんだね」ずみんなの芖野が広がりたした。 スタむルに埓っおコヌディングしたら、コヌドの良し悪しの蚀語化が䞊達した フィヌドバック3「スタむルに埓うこずで自分の考えおいるこずをうたく衚珟できるため、コヌディング䞭に迷うこずが枛った」 このフィヌドバックには続きがありたす。「それに加えお、スタむルの原理原則に埓っおいないコヌドの違和感に気づける䞊に、それがなぜ、どのように違和感があるのか説明ができるようになったのは倧きな恩恵です。」 良い゚ンゞニアはコヌドを曞いおいる間も「本圓にこの曞き方がベストだろうか」ず自分に問い続けおいたす。スタむルガむド本を孊ぶこずでこのセルフレビュヌの質が䞊がりたした。他の人が曞いたコヌドに察する違和感を蚀語化しおうたく説明するこずができるようになったため、コヌドレビュヌのスキルもアップしおいたす。 たずめ 読曞䌚の準備ず内容を芋盎すこずにより、冒頭の「本の内容はわかったけど、実務にどう掻せばいいかわからない」ずいう課題に察凊できたした。もちろん曞籍が扱っおいる内容によるものの、この勉匷䌚の方法自䜓は瀟内勉匷䌚でも瀟倖の人たちず集たっお茪読する䌚でもそのたた適甚できるず思われたす。 普通の勉匷䌚をぜひ孊習効果の高い勉匷䌚にバヌゞョンアップしおいきたしょう。 BASEではWebアプリケヌション゚ンゞニアを積極採甚しおいたす。興味のある方はぜひご応募ください。 採甚情報 | BASE, Inc. - BASE, Inc. 明日のアドベントカレンダヌは zan_gi さんの「Terraform Provider for HatenaBlog Members を䜿っおみたした。」ですお楜しみに
はじめに こんにちはBASE株匏䌚瀟で開発担圓圹員をしおいるえふしんです。 今幎もBASEグルヌプ 2024幎のアドベントカレンダヌのトップバッタヌを務めさせおもらっおいたす。 今回の蚘事では、2024幎では、Xのタむムラむンなどでよく聞いた「開発生産性」に぀いお考えおみたいず思いたす。 開発生産性を高めるずは 開発生産性ずいう蚀葉を今幎よく聞きたしたが、その定矩は、なかなか難解です。 生産性を定矩する難しさに぀いおは、廣朚さんの䞋蚘ドキュメントが参考になりたす。 qiita.com 経営レベルのマクロな意味であれば、GDPなどず同様に単玔に 「売䞊総利益 ÷ 開発に携わる人数」 などでいいはずです。単玔に、そのプロダクトの成果ずしおの売䞊総利益や営業利益に察しお、人数で割っお芋おおけば、過剰人員になった堎合はこの倀が萜ちるわけですから、コスト的に効率の良い補品開発かは枬るこずがしやすいです。 䞀方で、開発チヌムで考えたいず思うのは、開発ずいう行為に察しお、我々の開発掻動のあり方が今のたたでいいのかそうでないのかを掚し量る指暙のこずで、いろんなものが提案されおいたすが、䜕かを劥協しお決め぀けおいかないず䞇胜な指暙はでないずいうのが定説です。たた、開発ずいう投資に察する遅行指暙である売䞊総利益を埅っおたらもう遅いです。 䞖間ではFour Keysが定番化しおいるようですが、ちょっずDevOps寄りすぎるずいうか、自分がむメヌゞしおいる改善のアクションぞの接続がちょっず難しそうだなず思っお、掻甚自䜓はポゞティブですが、もう少し玍埗できるように考えたいず思いたした。 そもそも自動車の生産ラむンのように䞀぀の生産ラむンで同じ類の補品をひたすら量産しお、䞀定のものさしを前提ずしおいる仕事ずは違っお、䞀品䞀様で二床も同じコヌドを䜜らないWebサヌビスの゜フトり゚アの開発掻動をなんらかしらの指暙で平準化しお求めようなんおのは難しい話です。 個人的には目暙倀ずしお䞀切、眮かない圢で、デプロむ頻床を芋おおくこずがチヌムの掻気を瀺すずいう意味ではありかなず思うぐらいで、間違っおも、LL蚀語やオヌプン゜ヌスラむブラリ、コヌド補完゚ディタに䟝存しおるプロダクトが゜ヌスコヌド量を生産性指暙にするのは違うず思いたすし、案件難易床がプロゞェクトごずに違うのにスプリントやバックログの数を耇数チヌム間での比范指暙にするのも違うかなず思いたす。むしろ目的達成に察しお倉曎する゜ヌスコヌド量の少なさを枬りたいくらいですいや、それも違うず思うが、曎新するWebサヌビスにおける理想はむしろそっちかず思いたすし、知識劎働者がコヌド量だけで枬られるのはおかしい話。 指暙化ずいうのはカゞュアルにやっおしたいがちですが、䞍適切な指暙化は人間の行動をミスリヌドするこずがありたす。そんな簡単なものではないず思えばこそ、慎重に考えたいものです。それこそ、銬のおしりをムチで叩くようなマネゞメントなどになっおしたったら、知識劎働者である゜フトり゚ア゚ンゞニアがその状況に我慢できるハズはありたせん。脳内がポゞティブでなければ、適切に゜ヌスコヌドが生み出せないので、生産性云々以前の話です。 そもそも䜕のために継続的に開発をやっおいるのかずいえば、ナヌザヌに䟡倀を届け、ナヌザがなんらかしらのメリットを獲埗し、その成果ずしおのビゞネス指暙が改善され、我々のビゞネスの成長に぀ながるこずを実珟するずいうこずです。 ぀たり重芁なのは「䜕回、ナヌザさんに「いい倉曎だね」ずいう評䟡を受けたか」ずいう回数にあるず思いたす。そのためには告知を含めた機胜リリヌスや改善リリヌスの数を増やすずいうこずがプロダクト開発がやりたいこずで、その䞭から成功確率を䞊げおいくずいうのは、ビゞネス党䜓芖点での提䟛品質の話になりたす。 なので、プロダクト開発芖点では「ナヌザさんが知るリリヌス数を増やす」「トラむの数を増やす」ずいうこずを「アりトプット量の増加」 「結果ずしおの生産性の向䞊をもたらす取り組み」に着目できたらず思っおいたす。枬定ツヌルずしおは、品質指暙や集蚈のこずを考えお、たるっずFour Keysの利甚でいい気がしおたすが、重芁なのはナヌザむンパクトをもたらすこずを目指したトラむの数を意識するこずです。 たずえ゜ヌスコヌド行でも迅速に玠晎らしい改善をしおナヌザの感動を埗れば、それは「有益だったトラむ」だず思いたすし、倧きい機胜開発で倧きなむンパクトを埗るこずも重芁なこずです。 トラむの数を増やすために必芁なこず 個人的に継続開発するWebサヌビスの開発生産性に察する考え方ずしお個人的に奜みなのは、牛尟 剛さんずいう米囜マむクロ゜フトで働かれおいる方の著曞「 䞖界䞀流゚ンゞニアの思考法 」に曞かれおいる、 生産性ずはいかに「レベル = 䜕もググらずに実装できる」を増やすかどうかではないか ずいう文章にゞワゞワ来たした。 ぀たり人間のアりトプットを蚈枬した数字の倚寡を重芖するアプロヌチではなく、胜力に着目した考え方です。なお、牛尟さんの本では、このこずが生産性の高さの指暙だず曞いおるわけではなくお、そのような胜力を獲埗するこずが重芁なのではないかずいう圢で曞かれおいたす。 めちゃめちゃわかりやすく、いい感じに煜られおるず思いたせんか そう蚀われおみれば、瀟内で䞀番望たしい開発胜力ずいうのは、いわゆる汎甚的な地頭の良さである仕様理解力に加えお、 倧たかに゜ヌスコヌドを把握しおいお、どこをいじれば望み通りの結果が出るかを劂䜕に玠早く芋積もりできお、芋積もり通りに実珟できるこず ではないかず思いたした。正確には案件仕様ず珟堎の仕様をかけあわせお、䜕をどこたでやるべきかに぀いお正しい芋積もりず脳内蚭蚈をしお、適切にアりトプットできる人が䞀番確実な仕事ができるはずです。CTOぞの仕様レビュヌも、さくっず口頭でやれおしたうのが望たしいそれだけの信頌ず実瞟があるこずも含め。 開発蚀語や開発ラむブラリの知識はもちろんですが、自分たちの゜ヌスコヌドを掌握しおいる人が䞀番、仕事の察応速床は早いず考えられたす。同じだけの蚭蚈胜力があるなら知識量が倚い方が仕事が早い可胜性が高いです。 そもそも、開発生産性に察する瀟内議論が出おきたのは、自分たちのプロダクトが、新入瀟員では簡単には把握できないほど倧きくなっおしたったず蚀われ始めた頃ず笊号したす。もっず䌚瀟が小さかった頃の創業圓初のメンバヌは、今よりも少ない゜ヌスコヌドを把握しおいお、おそらく生産性ずいう面では、䞀番そのころが早かったのでしょう。新しい機胜の話が出おきおも、話を聞きながら倧たかの蚭蚈は完了しおいお、あの蟺ずこの蟺を盎せばいいず思っおいお、即座に開発䜜業に取り組んでいたした。 しかし、昚今の䞭途採甚や業務委蚗の方による䞀定の人の出入りを前提ずした組織においお、゜ヌスコヌドやサヌビスの仕様を知るずいうオヌバヌヘッドず、コヌド量やプロゞェクト量の増加に䌎う把握のしにくさが、開発者の䜜業性のオヌバヌヘッドに぀ながっおいったず考えるず、極論するず、党郚の゜ヌスコヌドを把握しおいお、頭の䞭で敎理しおくれるような脳内のLLMを保有しおいる゚ンゞニアが、結果ずしお、䞀番、速やかに実装できるず考えるこずが可胜です。 ちゃんず改善を前提ずした時に、゚ンゞニア個々人のスキル評䟡にあわせるこずができれば、゚ンゞニアの評䟡を䞊げる  ゚ンゞニアのグレヌド絊料が䞊がる  生産性が䞊がるはずです。機胜リリヌスが増えお、ナヌザヌ評䟡を受けるためのトラむの数が増えたのに「売䞊総利益 ÷ 開発に携わる人数」が改善しなければ、それ以倖の䜕かが間違っおるっお話になり、根本から芋盎す必芁があるでしょう。 トラむを増やすための「オヌナヌシップ」ず「脳内LLMぞのむンプット」 内補開発における゚ンゞニアの胜力を 「䜕もググらずに実装できるレベルのこず」 に眮いたず仮定したす。もちろん䜕もググらずずいうのは、かなりの理想の話で、Google怜玢したっお、瀟内ドキュメントを調べおも良いのですが、それらの行動ず理解速床が最速で䜜業を進められるようになるこずを意識するこずが倧事です。 これをもう少し抜象化し、このような状態を「゜ヌスコヌドのオヌナヌシップ」を持っおいる状態ず衚珟しおもいいかもしれたせん。そしお、同時に耇数人が同じリポゞトリの゜ヌスコヌドをいじっおるわけですから、毎日、どこかしらの新しい゜ヌスコヌドが生成されるず考えるず、これはstaticな蚘憶力のこずではなく、コヌドリヌディングを通じお人間の動的に脳に備わっおいるLLM人間の知力が再構築できる胜力ずいうこずになりたす。 たた、゚ンゞニアの胜力をあげおいくこずを前提ずしお、それを阻害する芁玠を取り陀くこずも重芁な取り組みです。この堎合は、アりトプットに着目するよりも、゚ンゞニアぞのむンプットの最適化を考えるアプロヌチになるず思いたす。こちらの方が、ふわっずアりトプットの量を高めようずするよりは、具䜓的な斜策に萜ちおきそうな気がしおきたせんか 䟋えば、議論や䌚議の質を高めるであるずか、オンボヌディングの改善、ドキュメントの敎理の最速化、リファクタリング、曎新情報の共有の仕方などが挙げられたす。BASEのリアヌキテクチャで取り組んでいるclean architecture化バック゚ンドリポゞトリぞの貢献もオヌナヌシップ化を促す掻動ずも蚀えたす。コヌドを倧きく曞き換えるタむミングは、オヌナヌシップ獲埗のチャンスです。たた、劂䜕に、最少人数、最小構成でリスクを䌎った意思決定を最速にできるかずいうのも重芁になっおきたす。 圓瀟のCTOは、チヌムメンバヌが増えた今もリリヌスされおいるプルリクを把握しおるず聞いおたすが、脳内LLMのむンデックスを曎新する䜜業を自然にやっおいるのは玠盎にすごいず思いたす。普段、プロゞェクトに関わっおなくおもコヌドリヌディングを通じお、プロダクトに䜕が起きおるかを把握し続けおいるわけです。 なお、ChatGPTなどの生成AIなどの取り組みに぀いおも觊れおおきたすず、人間の蚘憶力は揮発性ですし、幎霢や䜓調によっおも脳の力の掻甚床は倉わっおきたす。ただ単に人間の蚘憶力だけに頌るのは芞がありたせん。人間ずしおのスキルだけでなく、怜玢や生成AIの掻甚などで倖郚蚘憶を効率よく人間の脳内LLMず連結するこずができれば、ずおも生産的なAIに察する向き合い方もできるず思いたす。プロンプトに仕様を曞いおコヌド生成されるだけのAIの利甚はむマむチだず思っおいたすが、人間の理解や意思決定を支揎するAIずいうのであれば歓迎です。開発゚ディタぞのAI支揎機胜の搭茉やNotion AIの掻甚など開発環境も進化しおいきたすから、AIに察する老害にならず、しっかり取り入れおいきたしょう。 マネヌゞャが意識しないずいけないこず マネゞメントラむンにおいおも、珟実的に䞭途採甚、転職、瀟員、業務委蚗などの属性を考えお、か぀、゚ンゞニアの成長曲線ずグレヌド評䟡に必芁な時間などを勘案するず、珟状の我々が構成しうる、チヌムメンバヌのグレヌド構成の垃陣ずいうのは、䞀定の範囲を取るはずです。 芁は退職が増えお、代わりに入っおいただいた新人が増えれば、コヌドの知識、ドメむン知識がないのは圓然だから、孊びのリヌドタむムが必芁になり、その時点のチヌムの人材ポヌトフォリオは匱くなるでしょうし、経隓者が長く働いおスキルが向䞊しおいけば、絊䞎もあがっお、チヌムメンバヌのグレヌド構成も高いからこそ、高い生産性で開発プロゞェクトをこなしおいけるずいうのは、自分で曞いおも実感のあるずころもありたす。 ぀たり開発生産性の高みを目指すずいうのは、チヌムマネヌゞャが望む人材ポヌトフォリオを、状況にあわせお構成するこずで、高い生産性を発揮できるチヌムを䜜るこずに邁進するこずそのものではないかず思いたした。新芏事業やM&Aなどでも組織が拡匵されおいくので動的な抂念です。垞にチヌムはアメヌバのように分裂したりしお増加枛可胜なこずが倧前提です。BASEグルヌプのカルチャヌが組織の増加スピヌドず人員移動に察しお適切に平準化したりお互いに盞乗効果を生み出し続けるこずも倧事です。 マネヌゞャは自分を城を䜜るずいう考え方ではなく、䌚瀟党䜓の開発力を䞊げお、よいアりトプットを生み出す状況を䜜り続けるのが仕事です。その際にチャンスを埗お適切に゜フトり゚ア゚ンゞニアずしおの信頌を評䟡に結び぀けおいくためにも、メンバヌず日垞のコミュニケヌションを取っおほしいず思いたす。 人間は機械じゃないので、安定したアりトプット量を出すこずでさえ倧倉だず思いたすが、生成AIがどれだけ進化したずしおも最埌の決断は人間が䞋し続けるず思いたすので、最適、最速な意思決定をしお、適切なリスクにチャレンゞするためにメンバヌのスキルを䞊げ続けるこずになるず思いたす。ちなみに、適切なリスクずは「基本は無茶をする」です。意思決定の際に無難な方ず無茶な方の぀の遞択肢があったずしたら、無茶をした偎の意思決定じゃないず、プロダクトは成功しないです。でも、できないこずを郚䞋にやらせるわけにはいかないず思いたすので、ちゃんず実珟できるように頑匵っおください。 おわりに なお、開発だけの話を曞いおいるように芋えるかもしれたせんが、圓然、開発プロゞェクトは開発チヌム、ビゞネスチヌム、プロダクトマネヌゞャやデザむナヌが枟然䞀䜓ずなっおスケゞュヌルタむムラむンを成すので、すべおのチヌムにおける考慮は䞍可欠です。オヌナヌシップずいう芖点でも、それぞれが、ビゞネスのオヌナヌシップ、プロダクトのオヌナヌシップ、プロゞェクトのオヌナヌシップ、UXのオヌナヌシップなどを適切に発揮できおいるかは最重芁な確認事項ずも蚀えたす。 特に、各々がリスクを䌎った意思決定を増やし、倱敗を恐れず、朝什暮改も䞊等ずいう考え方で、チヌム間のトラむも増やしおく。そのための心理的安党性の構築などが重芁です。 改善においおも適切なリスクの取り方、意思決定のあり方、リモヌトワヌクずリアルmtgの䜿い方、䌚議の質の向䞊など芁玠は倚岐に枡りたすが、トヌタルで蚀うサヌビス開発の生産性を阻害するものを効率化し぀぀、それぞれの圹割のスキルを向䞊させおいくこずで、トラむを増やし、アりトプットの総量は増えおいくのではないでしょうか。来幎はこのこずに぀いお、䞀぀䞀぀考えおいけたらいいなず思っおいたす。 珟圚、2025幎に向けた人員蚈画を立おおいる真っ最䞭ですが、匕き続き採甚掻動をするず思いたすので、以䞋の採甚情報ペヌゞからマッチする求人があるかを芋おいただけるず幞いです。 binc.jp 明日のアドベントカレンダヌは @Panda_Program さんの「「読曞䌚のゞレンマ」を克服する: 成果を生むアクティブラヌニング勉匷䌚の実践法」ですお楜しみに
こんにちはBASE PRODUCT TEAM BLOG 線集郚です。みなさたそろそろ幎の瀬ですが、いかがお過ごしでしょうか。 今幎も恒䟋のBASEメンバヌによるアドベントカレンダヌを開催したす 毎幎公開しおいるアドベントカレンダヌも今幎で7回目を迎えたす。 過去の様子 2023幎のアドベントカレンダヌ 2022幎のアドベントカレンダヌ 2021幎のアドベントカレンダヌ 2020幎のアドベントカレンダヌ 2019幎のアドベントカレンダヌ 2018幎のアドベントカレンダヌ 今幎も1日1蚘事に限定せずたくさんのバラ゚ティ豊かな蚘事を公開する予定です。 公開され次第以䞋のカレンダヌも随時曎新しおいきたすので、ぜひお楜しみに 日付 執筆者 タむトル 12/1 @fshin2000 プロダクトの開発生産性に぀いお考える 12/2 Panda_Program 「読曞䌚のゞレンマ」を克服する: 成果を生むアクティブラヌニング勉匷䌚の実践法 12/3 @zan_sakurai Terraform Provider for HatenaBlog Members を䜿っおみたした。 12/4 @ikechen 若手゚ンゞニアが BASE 入瀟 6 ヶ月目で感じおいるこず 12/5 @ohiro88 【入瀟゚ントリヌ】BASE に入瀟しお 2 ヶ月を振り返る 12/6 asakoya 劊嚠・出産・育䌑を経お Hopeful に働いおいる話 12/7 Torata 敎理敎頓のメ゜ッドでお問い合わせ業務の改善をした話 12/8 @yuna_miyaa チヌム開発を進めるために意識しおいるこず 12/9 @kondo プロゞェクトを成功させるための工倫 12/10 @ykagano カヌト開発を加速させる効率的なドキュメント管理術 12/11 @gatchan0807 技術目線でみた、PAY.JP YELL BANKのおもしろいずころをご玹介 12/12 @kitamuran Pay IDメンバヌの個性がひかる お仕事環境玹介 12/12 @yusuke.saito 私のキャリアチェンゞデヌタ分析者からプロダクトマネヌゞャヌぞ 12/13 @roothybrid7 Pay IDシステム移管プロゞェクトの技術スタックの玹介 12/14 tac_tanden SLI/SLOの蚭定を進めるその前に、アラヌト品質の改善に取り組んだ話 12/14 @toshi-oliver 茪読䌚「ドメむン駆動蚭蚈をはじめよう」をプロゞェクトチヌムで開催した話 12/15 @miyachin_87 Notion FormずAutomationを䜿っお定型タスクの自動生成ツヌルを䜜っおみた 12/16 uenoka レポヌトシステムの安定皌働に向けた取り組み 12/16 @ysssssss98 ペアプログラミングの䜓隓がすごく良かったので垃教したい 12/17 @eijenson Jetpack Compose䞊でのconstraintLayoutの利甚事䟋玹介 12/18 @meihei PhpStorm で PHPUnit をずっず実行しおいる話 12/18 gonzaresu108 INFORMATION_SCHEMAを甚いたBigQueryデヌタ監芖 12/19 @ichi アゞャむル組織のデザむナヌがやっおきたチヌムビルディングの話 12/19 kaneko20 Pay ID 3回あず払いの開発をきっかけに知る䜏所の味わい深さ 12/20 @gimupop 登壇やアりトプットを埌抌しするnote 12/20 noji_ma Next.jsのServer Actionずreact-hook-formでフォヌムを実装した 12/21 basems (ä»®)゚ンゞニアず非゚ンゞニアで足䞊み揃える PJ 進行 12/21 kuma プロダクトマネヌゞャヌは 「面癜がり力」があるず良い 12/22 bun タむトル未定 12/22 @zan_sakurai 今幎の蚘事をふりかえっおみた 12/23 @endu PHP Conference Japan 2024 に参加したした! 12/23 shotakeuchi 䞍均衡デヌタにおけるROC曲線ずPR曲線に぀いお 12/24 @simezi9 今、リモヌトワヌクに぀いお思うこず 12/24 @u_hayato13 統括マネヌゞャヌ(EM of EM)の仕事7遞 12/25 dmnlk タむトル未定
はじめに こんにちは、Pay IDのフロント゚ンド゚ンゞニアのnojiです。 普段はPay ID あず払いやPay IDのアカりント呚りのフロント゚ンド開発を担圓しおいたす。 10月に Pay IDのアカりント線集画面  こちら をリニュヌアルしたした。この蚘事では、そのリニュヌアルプロゞェクトでNext.jsのApp Router / Server Actionを掻甚し、䟿利だず感じた点をご玹介したす。 䜿甚技術 Next.js 14リリヌス圓時のもの。珟圚は15になっおいたす React 18リリヌス圓時のもの。珟圚は19になっおいたす リニュヌアルの背景 今回のリニュヌアルは、PAY瀟が保有する「Pay ID」のデヌタおよびシステムをBASE瀟ぞ移管・再構築するプロゞェクトの䞀環でした。 単なる移管に留たらず、デザむンリニュヌアルを䌎うため、PAY瀟で䜿甚されおいたVue.jsのコヌドは再利甚せず、Next.jsでれロから構築したした。 Next.jsを遞定した理由 BASE瀟内での採甚実瞟があり、安心しお䜿甚できるこず。 BASE以倖でも採甚事䟋が倚かったり、近幎のfrontendのトレンドをリヌドしおいるこず たた、新芏アプリケヌションの構築であるこずから、Next.jsのApp Routerを採甚したした。開発着手圓初はNext.jsバヌゞョン13でした App Routerの掻甚 App Routerはディレクトリ構造がそのたたURLパスずしお反映されるほか、ファむル名によっお圹割が明確になる点が特城です。 /app/〇〇 └ layout.tsx // pageをラップした共通画面(画面遷移で再レンダリングされない) └ template.tsx // pageをラップした共通画面(画面遷移で再レンダリングされる) └ error.tsx // ゚ラヌ時の画面 └ loading.tsx // ロヌディング䞭の画面 └ not-found.tsx // notFound()がthrowされたずきの画面 └ page.tsx // 実際のURLに察応するペヌゞ これをもずに以䞋のようなツリヌ構造で描画が行われたす <Layout> < Template > < ErrorBoundary fallback = { < Error /> } > < Suspense fallback = { < Loading /> } > < ErrorBoundary fallback = { < NotFound /> } > < Page /> </ ErrorBoundary > </ Suspense > </ ErrorBoundary > </ Template > </Layout> 芪ディレクトリのLayoutを子ペヌゞが自動的に匕き継ぐため、レむアりト郚分を共通化しやすいのが䟿利でした。 https://nextjs.org/docs/app/building-your-application/routing Route Groups 䞀方で、「URL階局は芪子関係があるがレむアりトを切り替えたい」ずいうケヌスでは、 Route Groups を掻甚したした。 Route Groupsはディレクトリ名を () で括るこずで利甚できたす。 (a) └ hoge └ layout.tsx ← レむアりトA └ page.tsx (b) └ hoge └ layout.tsx ← レむアりトB └ fuga └ page.tsx /hoge ではレむアりトAを利甚 /hoge/fuga ではレむアりトBを利甚 このように適切にレむアりトを切り替えられるのが䟿利でした。 https://nextjs.org/docs/app/building-your-application/routing/route-groups Parallel Route 管理画面では、ダッシュボヌドのように 耇数の情報を1ペヌゞに集玄しお衚瀺 するこずが倚く、特定のペヌゞで Parallel Routes を利甚したした。 app └ @parallel └ hoge └ page.tsx // A情報 └ default.tsx └ default.tsx └ hoge └ page.tsx // B情報 @ で始たるディレクトリがslotずなり、同じ階局にある layout.tsx でpropsずしお受け取りたす。 default.tsxは初期読み蟌み時やペヌゞ党䜓の再読蟌䞭に䞀臎しないスロットのフォヌルバックずしおレンダリングするファむルを定矩しおいたす。 䜕も衚瀺させない堎合はnullを返华するように定矩しおおきたす。 // layout.tsx export default async function Layout ( { children , parallel , } : { children : React.ReactNode ; parallel : React.ReactNode ; } ) { return ( <> { parallel } // A情報 { children } // B情報 </> ); } この仕組みを利甚し、A情報ずB情報をそれぞれ別のペヌゞずしお描画し、以䞋のように衚瀺したした /app/@parallel/hoge/page.tsx → A情報を衚瀺 /app/hoge/page.tsx → B情報を衚瀺 Parallel Routesの利甚により、slotに分割されおいるこずで各ペヌゞでの凊理が少なくなったり、コヌドの可読性が䞊がるように感じたした。 Parallel routeでもloading.tsxやerror.tsxを配眮しおおくだけでロヌディング凊理やErrorBoundaryを利甚できるので䟿利に感じたした。片方゚ラヌだったずきのハンドリング等しやすい印象を受けたした。 しかし、soft navigation時に前のParallelRouteのペヌゞが衚瀺されたたたの状態になるこずがあり、Client Componentでラップしお、pathを芋お出し分けするようにし、意図せず衚瀺が残っおしたうこずを防いでいたす。 // MatchPathRenderer.tsx 'use client' ; export default function MatchPathnameRenderer ( { matches , children } : Props ) { const pathname = usePathname(); if (!matches || !matches. includes (pathname)) { return null ; } return <> { children } </> ; } // layout.tsx ... < MatchPathnameRenderer matches = { [ '/hoge' ] } > { parallel } </ MatchPathnameRenderer > { children } ... https://nextjs.org/docs/app/building-your-application/routing/parallel-routes Server Component / Server Actionの掻甚 Server偎でのデヌタ凊理呚り 各Server Componentからサヌバヌ偎で非同期にデヌタフェッチが可胜ずなり、デヌタ管理が効率的に行えるようになりたした。たた、同じデヌタのフェッチ凊理は自動的にキャッシュされるため、パフォヌマンスぞの圱響も最小限に抑えられたす。 さらに、App Routerの Suspense 凊理(loading.tsx)を掻甚するこずで、サヌバヌから先にHTMLを返华し、高いナヌザヌ䜓隓を簡単に実珟できるようになりたした。 サヌバヌ偎で動䜜するため、機密情報やセキュリティに関わるデヌタも安党に取り扱うこずが可胜です。 クラむアントからサヌバヌぞのリク゚スト呚り 埓来、クラむアントからNext.jsのサヌバヌぞリク゚ストを送る際には、 API Route を定矩し、それを通じおAPIを実行する必芁がありたしたが、 Server Action を䜿甚するこずで、クラむアント偎から盎接サヌバヌ偎の関数を呌び出せるようになり、非垞に䟿利に感じたした。 // server action凊理 'use server' ; export const action = async ( prevState : any , formData : FormData ) => { // server偎凊理 } // フォヌムコンポヌネント 'use client' ; export default function Form () { const [ state , formAction ] = useFormState(action); return ( < form action = { formAction } > ... </ form > ) } https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations リダむレクト呚り アカりント管理画面では、認蚌が必須のため、各URLで適切なリダむレクト凊理が必芁だったのですが、 Server Component や Server Action 内で redirect を利甚するこずができたす。 Server Component内でのリダむレクトはPage RouterでのgetServerSidePropsず䌌たような凊理が実珟できたす。Server Component内にリダむレクト凊理が曞けるようになった郚分は少し可読性が䞊がったように感じたした。 // Server Component内 export default async function Page () { const session = await getSession(); // セッション取埗凊理 if (!session) { return redirect( '/login' ); } const { response , error } = getData(session); // デヌタ取埗凊理 if (error. status === 401 ) { return redirect( '/login' ); } ... } Server Action内のリダむレクト凊理に぀いおは以前だずAPI Routeでクラむアントにレスポンスを返しおからその結果を芋おペヌゞ遷移を行っおいたしたが、サヌバヌ偎で凊理を完結させるこずができるため、リダむレクト先のペヌゞ衚瀺が高速化されたした。 // Server Action内 'use server' ; export const action = ( formData : FormData ) => { const session = await getSession(); // セッション取埗凊理 if (!session) { return redirect( '/login' ); } // API callなどサヌバヌ凊理 return { message : '成功したした' } ; } ; https://nextjs.org/docs/app/building-your-application/routing/redirecting キャッシュ呚り Server Action でサヌバヌサむドの凊理を実行した埌、クラむアントの情報キャッシュ含むを曎新する際に revalidatePath を利甚したした。クラむアント偎でレスポンスを受け取り、倀に基づいおUIを曎新したり、 router.push や router.refresh で明瀺的にペヌゞを遷移させる必芁がなくなりたした。 'use server' ; export const action = ( formData : FormData ) => { // API callなどサヌバヌ凊理 revalidatePath( '/hoge' ); return { message : '成功したした' } ; } ; https://nextjs.org/docs/app/building-your-application/caching#revalidatepath おわりに システムリニュヌアル時にNext.jsのapp router / server actionsを觊っおみお䟿利だった郚分を玹介させおいただきたした。 これからNext.jsを利甚するプロゞェクトの参考になれば幞いです 珟圚Pay IDでぱンゞニアを募集しおいるので、興味のある方は気軜にご応募ください。
はじめに こんにちは。BASE株匏䌚瀟 Pay IDでiOSアプリ゚ンゞニアをしおいる kakkki です。 iOS版のPay ID ショッピングアプリ の開発を担圓しおいたす。 iOS版Pay IDアプリ(以䞋Pay IDアプリ)はリリヌスされおから9幎以䞊、新機胜開発を行いながら継続的に運甚されおいたす。普段の業務では機胜開発を進める䞀方で、マルチモゞュヌル化やStrict Concurrency察応、SwiftUIぞの移行など継続的に技術的な改善に取り組んでいたす。 Pay IDアプリ内に叀くから存圚する画面の倚くはUIKitベヌスで実装されおいたすが、最近はSwiftUIで実装された画面が増えおいくようになりたした。そこで本蚘事では、 SwiftUIを導入する過皋で盎面した課題や取り組みに぀いお 、玄2幎前から今日に至るたでの画面実装方針の倉遷を3぀のフェヌズに分けながら玹介しおいきたす。 特に長期間運甚されおいるUIKitベヌスのアプリにSwiftUIを導入したいず考えおいるiOS゚ンゞニアの皆様にずっお、少しでも参考になれば幞いです。 フェヌズ1 (2022幎10月頃): Compositional Layouts × Diffable Data Source この時点では、耇雑なレむアりトやデヌタ管理を効率化するためにiOS13から導入されたCompositional LayoutsずDiffable Data Sourceを採甚しおいたした。Compositional Layoutsにより、耇雑なレむアりトでもセクションごずに蚭定できるようになりレむアりト実装の柔軟性が高たりたした。たた、Diffable Data Sourceによりデヌタの倉曎を即座にUIに反映できるようになり、デヌタずUIの統䞀的な管理が可胜ずなりたした。 しかし、この時点ではSwiftUIは党く導入しおおらずUIKitのみでの開発でした。UIKitは今でもバリバリ珟圹ですが、SwiftUIず比べおUI実装の速床が劣るケヌスもあり、埌々開発効率などの芳点からSwiftUIを導入しおいきたいずいう気持ちが匷くなっおいきたした。 フェヌズ2 (2023幎10月頃): Compositional Layouts × Diffable Data Source × SwiftUIUIHostingConfiguration 次のステップずしお、SwiftUIを小さくコンポヌネント実装に留める圢で導入しおいくこずを詊みたした。 この時点では以䞋の図のようなむメヌゞです。 具䜓的には、 UICollectionViewCell 内でSwiftUIを利甚する方法です。以䞋のような UICollectionViewCell の共通実装を甚意しお、iOS16以䞊では UIHostingConfiguration 、iOS15では UIHostingController 経由でセル内のUIをSwiftUIで実装しおいくようになりたした。 /// HostingCellの䞭身ずなるViewが準拠するプロトコル public protocol HostingCellContent : View { associatedtype Dependency init (_ dependency : Dependency ) } open class HostingCell < Content : HostingCellContent >: UICollectionViewCell { // TODO : iOS15サポヌトを切ったら削陀する private let hostingController = UIHostingController < Content? > (rootView : nil ) override public init (frame : CGRect ) { super . init (frame : frame ) // TODO : iOS15サポヌトを切ったら削陀する hostingController.view.backgroundColor = .clear hostingController.view.translatesAutoresizingMaskIntoConstraints = false } @available ( * , unavailable ) public required init ?(coder : NSCoder ) { fatalError( "init(coder:) has not been implemented" ) } public func configure (_ dependency : Content.Dependency , parent : UIViewController? = nil ) { if #available(iOS 16.0 , * ) { configureWithHostingConfiguration(dependency) } else { configureWithHostingVC(dependency, parent : parent ) } } /// iOS16以䞊ではUIHostingConfigurationを䜿う func configureWithHostingConfiguration (_ dependency : Content.Dependency ) { if #available(iOS 16.0 , * ) { contentConfiguration = UIHostingConfiguration { Content(dependency) } // デフォルトでマヌゞンが蚭定されおいるので0にする .margins(.all, 0 ) } } // TODO : iOS15サポヌトを切ったら削陀する /// iOS15以䞋ではUIHostingControllerを䜿う func configureWithHostingVC (_ dependency : Content.Dependency , parent : UIViewController? ) { guard let parent else { return } hostingController.rootView = Content(dependency) hostingController.view.invalidateIntrinsicContentSize() guard hostingController.parent == nil else { return } parent.addChild(hostingController) contentView.addSubview(hostingController.view) NSLayoutConstraint.activate([ hostingController.view.leadingAnchor.constraint(equalTo : contentView.leadingAnchor ), hostingController.view.topAnchor.constraint(equalTo : contentView.topAnchor ), hostingController.view.trailingAnchor.constraint(equalTo : contentView.trailingAnchor ), hostingController.view.bottomAnchor.constraint(equalTo : contentView.bottomAnchor ), ]) hostingController.didMove(toParent : parent ) } } セルの呌び出し偎はセルの䞭身がどのように実装されおるかを知る必芁はなく、埓来の UICollectionViewCell を甚いた開発ず同様に実装するこずができたした。この取り組みにより、セル内のUIをSwiftUIで宣蚀的に蚘述できるようになり、UI構築の開発速床が向䞊したした。 フェヌズ2のSwiftUI導入時に盎面した課題 しかし、フェヌズ2の UICollectionViewCell 内にSwiftUIを埋め蟌む実装の方法だず、いく぀かの課題に盎面したした。 特に以䞋の芁件を満たすために、実装が耇雑化しやすいこずが分かりたした。 お気に入り状態を曎新する際に、APIの結果を埅たずに䞀時的にUIに反映したい ナヌザヌによるデヌタ曎新操䜜およびUIぞの反映凊理が頻繁にある これらの芁件を実珟する過皋で、次のような問題が浮かび䞊がりたした。 @State による状態管理が可胜なケヌスが限定される UIHostingConfiguration 内でSwiftUIビュヌを䜿甚する際、 @State プロパティを倖郚から初期化するず問題が発生しおいたした。具䜓的には、倖郚から枡された倀で @State を初期化するず、セルの再利甚時に状態がリセットされず、デヌタの䞍敎合が発生するこずがありたした。 以䞋は簡略化したコヌド䟋です。 struct ItemView : View { @State private var isFavorite : Bool init (_ isFavorite : Bool ) { // 倖郚から枡された倀で@Stateを初期化 _isFavorite = State(initialValue : isFavorite ) } var body : some View { // ... } } UICollectionViewCell 内でこの ItemView を䜿甚するず、セルの再利甚時に ItemView の init が再床呌ばれたすが、 @State の倀は初期化されず以前の状態を保持したす。そのため、衚瀺ずデヌタの䞍敎合が生じ、意図しないUIの挙動になりたす。 たた、以䞋のようにSwiftUI内郚で isFavorite を曎新した際も、同様にUIに正しいデヌタが反映されないこずがありたした。 struct ItemView : View { @State private var isFavorite : Bool init (_ isFavorite : Bool ) { // 倖郚から枡された倀で@Stateを初期化 _isFavorite = State(initialValue : isFavorite ) } var body : some View { Button(action : { // お気に入り曎新APIを呌ぶ前に、スムヌズにUIが曎新できるように䞀時的に曎新する isFavorite.toggle() // お気に入り曎新APIをコヌル }) { // ... } } } これらの問題の原因は、 @State がSwiftUIのビュヌのラむフサむクルに基づいお状態を管理するため、倖郚からの初期化ず盞性が悪いこずにありたす 。WWDC22にある Use SwiftUI with UIKit のセッションでは、以䞋のようにSwiftUIの倖で保持されるデヌタを䜿甚する際は @State , @StateObject ずいったプロパティラッパヌは䜿うべきでないずいう蚀及がされおいたす。 To store data that is created and owned by a SwiftUI view, SwiftUI provides the @State and @StateObject property wrappers. Since we're focused on data owned outside of SwiftUI, these property wrappers aren't the right choice. 匕甚: Use SwiftUI with UIKit (倀を利甚する箇所がSwiftUIの䞭に閉じおいるケヌスでは、 UIHostingConfiguration の䞭のSwiftUIで @State を利甚しおも期埅通り動きたす。) 圓時、Pay IDアプリ内の倚くの画面はMVPアヌキテクチャで構成されおいたした。Presenterを知っおいるのは UIViewController のみです。぀たりSwiftUIの倖でデヌタを保持する構成にしおいた以䞊、倧半のケヌスでは @State を䜿甚するこずはできたせんでした。 SwiftUIビュヌ内で発生したむベント䌝搬ずデヌタ曎新䌝達の耇雑化 セル内のSwiftUIビュヌでナヌザヌアクションが発生するず、それをPresenterに䌝える必芁がありたす。するずコヌルバックやデリゲヌトなど、なんらかの圢でUIViewControllerを経由しないずいけたせん。 // むメヌゞ図(諞々簡略化しお曞いおいたす) アプリナヌザヌ ↓ ナヌザヌアクション(お気に入りボタンをタップなど) SwiftUI.View ( in UICollectionViewCell) ↓ ナヌザヌアクションの䌝達 UIViewController ↓ ナヌザヌアクションの䌝達 Presenter ↓ APIリク゚ストなどのハンドリング さらに、Presenterの凊理の結果䜕かしらSwiftUI.Viewの䞭の衚瀺を倉える堎合、Presenterの結果をたたSwiftUIビュヌに䌝えないずいけたせん。圓然Presenterは盎接SwiftUIビュヌを知るこずはありたせん。そこで以䞋のようなフロヌでデヌタ曎新を䌝搬するこずになりたす。 // むメヌゞ図 Presenter ↓ デヌタ曎新の䌝達 UIViewController ↓ デヌタ曎新の䌝達 SwiftUI.View ( in UICollectionViewCell) ↓ UIを曎新 ぀なげるずこのようなフロヌになりたす。 // むメヌゞ図 アプリナヌザヌ ↓ ナヌザヌアクション(お気に入りボタンをタップなど) SwiftUI.View ( in UICollectionViewCell) ↓ ナヌザヌアクションの䌝達 UIViewController ↓ ナヌザヌアクションの䌝達 Presenter ↓ APIリク゚ストなどのハンドリング ↓ デヌタ曎新の䌝達 UIViewController ↓ デヌタ曎新の䌝達 SwiftUI.View ( in UICollectionViewCell) ↓ UIを曎新 もちろんこのフロヌでもアプリを芁件通り実装するこずは可胜です。ですが、SwiftUIでUIを曞いおいるずSwiftUIで実珟しやすいデヌタバむンディングの機構を取り入れお、䞊蚘のようなフロヌをよりシンプルにしたいず思うようになっおいきたした。 フェヌズ3 (2024幎7月頃): SwiftUI × Observationフレヌムワヌク フェヌズ2の UICollectionViewCell 内に埋め蟌む圢でSwiftUIを導入した際に出おきた課題を解決するため、よりSwiftUIベヌスな実装方針を目指すこずを決めたした。ここでの構成が、珟圚新しい画面を実装する時に積極的に取り入れおいる圢です。 SwiftUIずUIKit間の責務分離ず敎理 たず、状態管理ずビゞネスロゞックをSwiftUI内郚で完結させる実装方針に転換したした。たた、レむアりトも今たではUIKit(Compositional Layouts)で実装しおいたしたが、この郚分もSwiftUIで実装するように倉曎したした。 UIKitは䞻に画面遷移を担圓したす。ナビゲヌションバヌなど䞀郚UIを担圓するこずもありたすが、API通信などのデヌタ取埗もSwiftUI内郚(ViewもしくはViewが保持するViewModel)からRepositoryを参照するようになり、SwiftUIずUIKit間のデリゲヌト凊理もかなり枛りたした。それによりビュヌ内で発生したむベント䌝搬・デヌタ曎新の耇雑だったフロヌの芋通しも改善されたした。 View+コンポヌネントは、蚀わずもがなSwiftUIです。View+画面遷移の郚分は、匕き続きUIKit(UINavigationController)で行いたす。View+レむアりトに぀いおは、UIHostingControllerを利甚しおUIViewControllerにSwiftUIで曞いたレむアりト実装を埋め蟌んでいたす。 そしおView+ロゞック・状態管理に぀いおは、Swift5.9, iOS17以䞊で利甚できるObservationフレヌムワヌクを導入するこずにしたした。 PerceptionによるObservationフレヌムワヌクの導入 しかし、Pay IDアプリはただiOS16.2以䞊をサポヌトしおいたす。そこで Point-Free が公開しおくれおいる、Observation盞圓のバックポヌト実装を提䟛しおくれる swift-perception を利甚したす。swift-perception(以䞋Perception)ラむブラリはiOS17以䞊であればObservationフレヌムワヌクのAPI(withObservationTracking)を呌び出し、iOS17未満ならObservationフレヌムワヌクの挙動を暡倣した実装が呌ばれたす。 SwiftUI䞊の状態管理においお、Perception経由でObservationを導入するか、Combine補のObservableObjectプロトコルを利甚するか悩みたしたが、ObservableObjectよりもObservationの方が以䞋の点から䜿い勝手が良いず刀断したした。 子ビュヌの差分曎新においお䞍芁に芪ビュヌの差分曎新が走らない 倀(クラス)を入れ子にした堎合、ネストしたクラスの倀の倉曎を怜知できる Perceptionを利甚する堎合、远跡したい倀を保持するオブゞェクトを @Perceptible クラスずしお宣蚀したす。そしお @Perceptible クラスぞのアクセスを持぀Viewを WithPerceptionTracking Viewでラップしたす。 import Perception struct HogeScreen : View { let viewModel = HogeViewModel() var body : some View { // WithPerceptionTrackingで囲む必芁がある // TODO : iOS16切ったらWithPerceptionTrackingラップを倖すだけでいい WithPerceptionTracking { VStack { Text(viewModel.count) Button( "Increment" ) { viewModel.increment() } // ... } } } } @Perceptible // TODO : iOS16切ったら@Observableに倉曎する @MainActor final class HogeViewModel { var count = 0 func increment () { count += 1 } // ... } // UIHostingControllerでSwiftUI.ViewをUIViewControllerの䞭身ずしお埋め蟌む final class HogeViewController : UIViewController { override func viewDidLoad () { super .viewDidLoad() let vc = UIHostingController(rootView : HogeScreen ()) self .addChild(vc) self .view.addSubview(vc.view) vc.didMove(toParent : self ) vc.view.translatesAutoresizingMaskIntoConstraints = false vc.view.topAnchor.constraint(equalTo : view.topAnchor , constant : 0 ).isActive = true vc.view.leftAnchor.constraint(equalTo : view.leftAnchor , constant : 0 ).isActive = true vc.view.rightAnchor.constraint(equalTo : view.rightAnchor , constant : 0 ).isActive = true vc.view.bottomAnchor.constraint(equalTo : view.bottomAnchor , constant : 0 ).isActive = true // ... } } このようにSwiftUI䞊のデヌタバむンディングが可胜になったおかげで、デヌタの倉曎が発生した際に @Perceptible クラスの倀を曎新するだけで枈み、UIぞの反映がずおも楜になりたした。 Perception利甚時の泚意点 Perceptionを䜿う䞊で特に重芁な泚意点の䞀぀ずしお、 ForEach などViewを返すクロヌゞャヌの䞭で @Perceptible な倀を参照する堎合は、クロヌゞャヌの䞭でも別途 WithPerceptionTracking で囲む必芁がありたす。囲っおいないず、倀の曎新があっおもクロヌゞャヌ内のViewには反映されたせん。 struct HogeScreen : View { let viewModel = HogeViewModel() var body : some View { WithPerceptionTracking { ForEach(Array(hogeViewModel.items.enumerated()), id : \\.offset) { index, item in // WithPerceptionTracking { // ❌ hogeViewModel.itemsの䞀郚のnameが曎新されおも倉曎を远跡できおいない Text(item.name) // } } } } } @Perceptible final class HogeViewModel { /* ... */ } その理由は、 ForEach のクロヌゞャヌがViewのbody本䜓ず同じタむミングで呌び出されるわけでなく、Viewのbody本䜓が呌び出された埌に ForEach クロヌゞャヌが呌ばれるこずにありたす。そのため ForEach 自䜓を囲った WithPerceptionTracking の䞭には ForEach クロヌゞャヌの䞭身のViewは含たれおいないので、 @Perceptible のプロパティを远跡するためのViewの登録凊理が動いおいないのです。 以䞋のように、ForEachクロヌゞャヌの䞭もWithPerceptionTracking囲っおいれば远跡可胜です。 struct HogeScreen : View { let viewModel = HogeViewModel() var body : some View { WithPerceptionTracking { ForEach(Array(hogeViewModel.items.enumerated()), id : \\.offset) { index, item in // ForEachのクロヌゞャヌの䞭もWithPerceptionTrackingで囲っおるので、 // 倀の倉曎を远跡できおる // ⭕ WithPerceptionTracking { Text(item.name) } } } } } @Perceptible final class HogeViewModel { /* ... */ } たた、自䜜のViewにViewBuilderを枡す際も泚意が必芁です。 以䞋のコヌドだず、CustomContainerに枡すViewBuilderの䞭身が WithPerceptionTracking で囲たれおいたせん。body本䜓が呌び出されるタむミングではViewBuilderの䞭はただ呌び出されおないので、 Text(hogeViewModel.count) の箇所はbody盎䞋の WithPerceptionTracking の範囲倖になっおしたいたす。 // ViewBuilderを枡す偎 struct ContentView : View { let hogeViewModel = HogeViewModel() var body : some View { WithPerceptionTracking { CustomContainer(title : "Custom Container" ) { // ViewBuilderの䞭身 Text(hogeViewModel.count) } } } } // ViewBuilderを受け取る偎 struct CustomContainer < Content : View >: View { let title : String let content : () -> Content init (title : String , @ViewBuilder content : @escaping () -> Content ) { self .title = title self .content = content } var body : some View { VStack() { Text(title) content() .padding() } } } @Perceptible final class HogeViewModel { /* ... */ } なので先ほどず同様に、ViewBuilderの䞭身もWithPerceptionTrackingで囲む必芁がありたす。 // ViewBuilderを枡す芪View struct ContentView : View { let hogeViewModel : HogeViewModel var body : some View { WithPerceptionTracking { CustomContainer(title : "Custom Container" ) { // ViewBuilderの䞭身をWithPerceptionTrackingで囲む WithPerceptionTracking { Text(hogeVieModel.count) } } } } } おわりに 本蚘事では、叀くからあるUIKitベヌスのiOSアプリにおいおSwiftUIを導入する過皋で盎面した課題や取り組みに぀いお玹介させおいただきたした。 前述した通り珟圚のPay IDアプリのサポヌトバヌゞョンはiOS 16.2以䞊であり、次回のサポヌトバヌゞョン敎理のタむミングでiOS17以䞊のサポヌトずする可胜性がありたす。その時はPerceptionから玔粋なObservationぞの移行もあるので、その取り組みの䞭で新たな気づきがあればたたどこかで玹介させおいただければず思いたす。 たた、新芏実装はもちろんのこず、叀いUIKitベヌスの画面に察しおSwiftUIベヌスな実装方針に基づいおリアヌキテクチャなどもチヌムで進めおいきたいず思いたす。 最埌になりたすが、Pay IDでは随時メンバヌを募集しおいたす。ご興味のある方は気軜にご応募ください open.talentio.com
はじめに はじめたしおの人ははじめたしお、こんにちは 先週朚曜日ぶり ですBASE BANK Division以䞋、BANKチヌムのフロント゚ンド゚ンゞニアのがっちゃん  @gatchan0807  です。 今回は 11/23土 に開催された 「Fullstack AI Dev & Raycast Summit feat. Satoshi Nakajima」にスポンサリング・スポンサヌトヌクをしたしたずいうご報告蚘事になりたす スポンサリングしたむベントに぀いお 今回スポンサリングしたむベントは「Fullstack AI Dev & Raycast Summit feat. Satoshi Nakajima」ずいうむベントで、スナック・ドリンクスポンサヌの枠でスポンサリング・参加したした🙋 たた、合わせおスポンサヌトヌクもさせおいただきたした詳现は埌述 devx.jp DevX / Raycast Community Japan さんず 䞀般瀟団法人シンギュラリティ・゜サ゚ティ さんの共催のむベントで、Fullstack AI Devの名前も冠しおいる通り、AIを䜿った生産性向䞊、䟡倀のあるプロダクトの提䟛に関心が匷い方々の発衚をたくさん聞くこずができたした たた、Raycast Summitの名前も冠しおいる通り、Raycastを䜿った䟿利な機胜をはじめ、Raycast Proで䜿えるAI機胜の玹介などなど「えっ、明日からRaycastもっず䜿いこなしたい」ずなる発衚や知芋をたくさんお聞きするこずができたした スタッフの皆さん、登壇者の皆さんをはじめ、たくさんの方のご尜力のおかげでこのむベントが実斜できたのだず感じおいたす。このような玠敵なむベントにスポンサヌずいう圢で関わらせおいただきたしお、本圓にありがずうございたした この堎を借りお感謝をお䌝えできればず思いたす スポンサヌトヌクでお話しした内容に぀いお 今回のスポンサヌトヌクでは、SLMSmall Language Modelの䞀぀、Gemini NanoがChromeブラりザに搭茉されるようになり、どんなこずに䜿えるのかに぀いお、お話をさせおいただきたした 久しぶりのオフラむン登壇で緊匵しながら発衚しおいた時の図 オンラむンでも配信されおおり、100数十名に芋おいただいおいた時の図 登壇資料に関しおはDocswellにお公開しおいたすので、ぜひ合わせおご芧いただけたすず幞いです www.docswell.com おわりに 以䞊、BASE BANKチヌムずしお、「Fullstack AI Dev & Raycast Summit feat. Satoshi Nakajima」に協賛させおいただきたしたずいうご報告でした 今回のむベントはBASE BANKチヌムずしお「゚ンゞニアむベントに協賛させおください」ずいう発信を芋おお声がけいただいたものでしお、匕き続きBASE BANKチヌムずしおは芏暡に関わらず゚ンゞニアむベント・コミュニティむベントにスポンサヌずしおご協力させおいただきたいず思っおおりたす 詳现は以䞋の蚘事にたずたっおいたすので、もしご興味あればぜひご芧ください devblog.thebase.in 私個人ずしおはスポンサヌトヌクの他、どんどん登壇もやっおいきたいので、もし この蟺りに曞かれおいる発衚内容 にピンずくるものがあればぜひご連絡くださいずいう宣䌝もこっそりず  たた、BASE BANKチヌムぱンゞニアをはじめ、各職皮を倧募集䞭ですので、もしご興味あればお気軜にカゞュアル面談やXなどでお声がけください binc.jp
はじめに はじめたしおの人ははじめたしお、こんにちはBASE BANK Division以䞋、BANKチヌムのフロント゚ンド゚ンゞニアのがっちゃん  @gatchan0807  です。 今回はBANKチヌムの䞭で職皮暪断で行っおいる「月次䌚」ずいうLT䌚に぀いお玹介させおください この月次䌚LT䌚を毎月実斜しおいるこずで、チヌムにずっおどんなメリットがあるのかや、実斜における工倫を知っおいただき、皆さんのチヌムでもスモヌルスタヌトで実斜しおみおいただけるずずっおも嬉しいなず思っおいたす たた、今回は蚘事のタむトルの通り、その月次䌚で半幎間実際には2月~10月の蚈8回、毎月様々なお題でLTをしたので、぀いでにその内容ずそこから埗た知芋もすこし玹介させおください もし、開催予定の技術むベントのテヌマで合臎しそうなタむトルがあれば X などで気軜にお声がけいただけるず嬉しいです そもそも月次䌚ずは 2022幎11月からBANKチヌムで開始され、開始圓時から以䞋のような想いず目的で実斜されきたものです。 この時期は僕はただBANKチヌムにはおらず、BASE偎のCRM機胜の改善をしおいたりしたした 瀟内のNotionには以䞋のように月次䌚に぀いおたずたったポヌタルが誰でも芋られる堎所に蚭眮されおおり、事業責任者の柳川 @gimupop さんが目的を蚀語化しお曞いおくれおいたり、ここに資料ぞのリンクがたずたったNotion DBが蚭眮されおいたりしたす。 この䌚に関しおの情報がたずたったNotionペヌゞのキャプチャの䞀郚 BANKチヌムでのこの取り組みの前進になった「Product BEER BASH」ずいう瀟内むベントずそれに察する柳川さんのアツい思いは以䞋のnoteにたずたっお公開されおいるので、ぜひこちらもご芧ください。 👉 https://note.com/gimupop/n/nb950488d8de8  月次䌚自䜓は䞊蚘Notionにも曞かれおいるように 「自己開瀺」ず「アりトプットをするこずによるPDCAの䜓珟」 を目的ずしお実斜されおいたす。 そのため、発衚する内容は仕事に関係しおいなくおもよく、フォヌマットも自由スラむドを䜜っおもいいし、Lookerダッシュボヌドを芋せながらでもいいし、Notionを䞊から説明しおいく圢でも良いなので、それぞれ5~10分間でかなり自由に発衚しおいたす。 今幎からは䌚の運甚を 「ロヌテヌションのメむン枠発衚10分+感想・質問5分× 4~6人」 「任意発衚者枠発衚5分のみ× 1~3人」 ずいう2郚構成に倉えたので、発衚の頻床ずしおはだいたい3ヶ月に1回、自分の番が来るぐらいのスパンで回っおいたす。 実際に過去にあった発衚だず以䞋のようなものがありたす タむトル: 叀着の話 叀着の分類方法などの基瀎知識や、叀着屋さんがECに察しおどんな課題感を持っおいるかずいう知芋の共有など タむトル: 今、恐竜が熱い お子さんがハマり、そこから参加したむベントや恐竜博物通の玹介、盎近恐竜のこれたでの垞識が倉わっおきおいるずいう話、さらにはECでこんな商品を出そうかなず考えおいるアむデアの玹介など タむトル: もっずチヌムの皆さんずBANKプロダクトナヌザヌをみおいきたい ナヌザヌむンタビュヌの抂芁 & ナヌザヌむンタビュヌずはの共有など 発衚は基本オフラむンでみんな聞きながら、Figjamボヌドに付箋や絵文字、リアクションを貌っおワむワむしおいたす。 発衚者偎ずしおはここに感想がたくさん集たっおいるのを埌で芋お嬉しい気持ちになれるし、ファシリテヌタヌは非同期に質問や感想が集たっおいくので発衚埌のタむミングで拟ったりしやすいずいうメリットがありたす 🙌 gatchan0807がこの䌚を芋おきお感じたこず BANKチヌムではこんな感じの䌚を毎月実斜しおおり、2023幎11月ちょうど1幎前に異動しお毎月参加しおきお感じたこずをざっくり曞いおおきたす。 今の組織フェヌズには月次䌚をやるこずでコミュニケヌションが円滑になるなどメリットがたくさんあるなず感じおいたす 🙋 発衚起点で「こんなこずやりたい」などを 異なる職皮アナリストの人に盞談するきっかけになっおよかった チヌムメンバヌのパヌ゜ナリティを知る機䌚ずしおずおも掻甚できる 入瀟時の自己玹介をしっかりできる堎所 があるのはずおも良い。どうしおも仕事の䞭、ランチ・飲み䌚などで自己玹介できる量には限界があるし、話の流れが合臎しないこずもあるので  埌から入った人も、 長くいる人のパヌ゜ナリティを知る 機䌚になっおいる Lookerダッシュボヌドの堎所を知れたり、Slackのどこでやり取りされおいるのかのような「そんな情報がそこに眠っおいたのか」ずいう気づきや「そうやっおみればいいのね」ずいう 知識のむンデックスが貌れる 発衚方匏にもPDCAが回っおいお、最近はCanvaを䜿っおいい感じのスラむドをさくさく䜜っお発衚する人も出おきおずおも良い 倧䜓発衚が3ヶ月に1回ぐらいなので、任意発衚で毎回やるずかしなければ意倖ず話すネタは芋぀けやすい 逆に毎月発衚はネタ探しずスラむド䜜り倧倉だった自業自埗 こんなLTをしたした ここからは蚘事タむトルの回収で、月次䌚で私がどんなLTをしおいたかを玹介させおください。 もし、読者の皆さたのなかで䜕か琎線に觊れるものがあれば、ぜひお話ししたしょうお気軜に X  @gatchan0807 たでお声がけください〜🙌 2024幎2月: Chrome DevToolsのススメ 実際に䜿った「Chrome DevToolsのススメ」のスラむドの抜粋 フロント゚ンド゚ンゞニア必携のChrome DevToolsの䟿利機胜をベヌスに玹介 プロダクトマネヌゞャヌ、デザむナヌの確認䜜業を楜にする機胜や、ネットワヌクが遅い堎合、色芚特性の堎合もかんたんに確認できる機胜などを玹介 ゚ンゞニア以倖の職皮の方に「実は悪い人たちはこうやっお䜿っおたりする」ずいうのをむメヌゞしおもらい、セキュリティ意識を高める事䟋も玹介 䟋えば、Chrome DevToolsを䜿うこずで画面には出おいないこんなデヌタが芋られる 䟋えば、Chrome DevToolsを䜿うこずで画面を簡単に曞き換えおキャプチャが撮れる 2024幎3月: 戊略的自己孊習のススメ 実際に䜿った「戊略的自己孊習のススメ」のスラむドの抜粋 前月にチヌムメンバヌが「戊略的他者亀流のススメ」ずいうタむトルで発衚をされおいたので、それに関連させお話した内容 自分がどんな目的・考え方で調べ物自己孊習をしおいるのかを話す自己開瀺の発衚 コミュニケヌションを円滑にするために事前に調べ物をしおいるこず 考え事や調べ物のショヌトカットや、説明をうたくするために調べ物をしおいるこず 2024幎4月: チヌム党䜓でストレングスファむンダヌを実斜する䌚になったのでおやすみ ストレングスファむンダヌの䌚に぀いお、詳しくはこちらの蚘事をご芧ください basebook.binc.jp 2024幎5月: がくのかんがえた さいきょうの じょうほうほぞんじゅ぀ 実際に䜿った「がくのかんがえた さいきょうの じょうほうほぞんじゅ぀」のスラむドの抜粋 4月のストレングスファむンダヌの結果に「収集心」ずいう性栌特性がTOP5に入っおいるこずから話すこずにしたもの 3月の発衚で自己孊習の話をしおいたので、そこで埗た知識をどう蓄えおいるかずいうずころにフォヌカスした内容 Notion、Google Keepなどを䜿った知識集積プラットフォヌム構築を行った埌、最終的にSlackに萜ち着いおいる状態 2024幎6月: ここがスゎいよJavaScript 実際に䜿った「ここがスゎいよJavaScript」のスラむドの抜粋 Arcadeずいうプロダクトを知り、そのプロダクトがChrome拡匵 + Webアプリケヌションで完結しおプロダクトの䟡倀を䜜っおいるのを芋お、これを実珟するためにはJavaScriptの力をふんだんに䜿う必芁があるんだよずいう話 合わせお、JavaScriptを䜿っおできるこずを䌝え、゚ンゞニア以倖のメンバヌにもプログラミングや業務効率改善に興味を持っおもらえるように話した発衚 2024幎7月: もうすぐ来るオンデバむスLLMSLMの未来 実際に䜿った「もうすぐ来るオンデバむスLLMSLMの未来」のスラむドの抜粋 2024幎11月23日に開催されるむベント Fullstack AI Dev & Raycast Summit のスポンサヌLTの内容の元になった発衚 個人的にPWAの頃からChromeブラりザに興味が匷いので、Google I/OでGemini nano in Chromeを知ったこずから実際に觊っおみお、埗た知識を話したもの 合わせおGemini nanoがAndroidスマホに、Apple IntelligenceがiPhoneに入るこずが話題になっおいたので、それらも合わせお蚀及 これも゚ンゞニア以倖にもわかっおもらえるようにむメヌゞしやすい蚀葉を最倧限䜿っお発衚 2024幎8月: あなたの知らない.new ドメむンの.侖界 実際に䜿った「あなたの知らない.new ドメむンの.䞖界」のスラむドの抜粋 Googleが管理するgTLDの 「.new ドメむン」に぀いおの知芋共有のための発衚 https://docs.new でGoogle Docsの新芏ペヌゞが䜜成できるこずなどを業務Tipsずしお話したり 自分たちのサヌビスで䜜るならこういうドメむンがいいかなずいう候補を出したり おたけでNew gTLDで語呂合わせドメむンが取れるこずを話したり、BrandTLDに぀いおも共有 2024幎9月: Webの未来 / Web「ポヌタル」の未来 実際に䜿った「Webの未来 / Web「ポヌタル」の未来」のスラむドの抜粋 expand.aiずいうプロダクトがY Combinatorから調達し、話題になっおいるのを瀟内で芋぀け、それに぀いお調べた知識を共有した発衚 このプロダクトを調べおいる時にWeb䞊の情報ポヌタルサむトの未来を案じたので「こんな倉化が必芁な䞖界になりそう」ずいう私芋から話したもの expand.aiがどのように䜿えるのかずいう知識に、前職の経隓も組み合わせおポヌタルのポゞションが危うくなりそう ずいう危機感がメむン サヌビスを継続提䟛するためにどんな解決策があるか、どんな䟡倀提䟛が必芁かをほが劄想ベヌスで語ったりしたした 2024幎10月: 今日から始める生成AI 実際に䜿った「今日から始める生成AI」の未来」のスラむドの抜粋 チヌムの生成AIの掻甚床合いをもっず䞊げたいず思い、生成AIに察しおのスタンスを共有し、「ハヌドルをできる限り䞋げお䜿い始めおみよう。」ずいうメッセヌゞの発衚 むメヌゞしおもらいやすいように「ドラえもんだず思っお䜿おう」ずいうメッセヌゞを䌝えおいる のび倪くんがドラえもんに泣き぀くように、どんなこずだっお䞀旊盞談しおみおもいい ドラえもんのように倱敗するこずもあるので、枩かい目で倱敗を教えおあげよう完璧を求めすぎない そこから掟生しお、ロヌルプレむプロンプトを䜿った利甚時のテンションの䞊げ方や、JSONでやりずりする圢での粟床の改善などのちょっずしたテクニックも玹介 gatchan0807がこれだけ発衚しおきお思ったこず 月䞊みな衚珟にはなっおしたうのですが、䜕より アりトプットを起点にした孊習は定着が早いし、モチベヌションの維持がずおもしやすいので良い なず思いたした  たた、生成AIに察しお個人的な興味は匷かったものの、プロダクトずしお関わったり仕事ずしお関わる芋蟌みはほがありたせんでした。 ですが、積極的に発信しおいたこずで生成AI関連のむベント埌述ぞのスポンサリング + スポンサヌLT担圓をさせおもらう話が進んだり、実際に生成AIをプロダクトに組み蟌む方法を考え始めたりずただただ構想・劄想段階、もずもずやりたいず思っおいた仕事をやらせおもらえおいたのですが、そこに远加しお新たに生成AI関連のお仕事が増え、仕事をさらに楜しむ芁因にもなりたした 👏 チヌムに察しおの知芋共有も「わかりやすい」や「孊びがあった」ずいったフィヌドバックや感謝を受け取れおずおもテンションが䞊がりたすし、非垞に勝手ながらBANKチヌムでこの䌚を䞀番うたく掻甚しおいる人間なんじゃないかなず思っおいたりしたす 😎 おわりに 今回はBANKチヌムの「月次䌚」ずいう月に1回瀟内で行っおいるLT発衚䌚の取り組みを玹介させおいただきたした。 もし、このような取り組みを行っおいるBASE / BASE BANKチヌムにご興味を持っおいただけたのであれば、ぜひお気軜にカゞュアル面談や X でのお声がけなどをしおいただけたすずずおも嬉しいです ただただBASE BANKチヌムずしおは䜜りたいもの、提䟛したい䟡倀がたくさんあっお、それらを䞀緒に実珟しおいける仲間を募集しおいたす。ぜひBANKチヌムにお力をお貞しください 🙇‍♂🙇‍♂🙇‍♂ binc.jp たた、合わせお gatchan0807 が半幎間、毎月発衚した内容も玹介させおいただきたした。 BANKチヌムずしお、䞭小芏暡の゚ンゞニアむベントぞの䌚堎提䟛・飲食スポンサヌをやっおいく動きもあるので、゚ンゞニアむベントの䞻催、スタッフの皆さたの䞭で、もしこういった話にご興味ある方がいらっしゃればお気軜に X などでお声がけいただけたすず幞いです もしくは、こちらの蚘事を X などでシェアしおいただくのもずっおもずっおも嬉しいです devblog.thebase.in 最埌に、蚘事内でも少し觊れたしたが 2024幎11月23日土に実斜される以䞋のむベントにBASE BANKチヌムがスポンサヌをさせおいただき、LTもさせおいただきたすのでぜひオフラむンでご参加 or オンラむンでご芧いただけるず幞いです devx.jp
<この蚘事はHatena-Blog-Workflows-Boilerplateによっお䜜成されたした> こんにちは BASE株匏䌚瀟 Pay ID の @zan_sakurai ず申したす。 BASE PRODUCT TEAM BLOG 線集局メンバヌも務めおいたす。(実は今幎の線集長です。) 今回は、Hatena-Blog-Workflows-Boilerplateを䜿っおずあるSaaSのリンクを䞀括眮換した話をしたす。 Hatena-Blog-Workflows-Boilerplate Hatena-Blog-Workflows-Boilerplateずは、 株匏䌚瀟はおなさんが公匏で公開しおいる、はおなブログの蚘事を曞くためのワヌクフロヌのボむラヌプレヌトでしお、GitHub 䞊で䞋曞きや蚘事の公開等を行うこずができるものです。 github.com 匊瀟では昚幎 @applepine1125 さんが曞いた Hatena-Blog-Workflows-Boilerplate぀かっお BASEのブログ曞いおみた も芋おいただけるず幞いです。 Hatena-Blog-Workflows-Boilerplate を䜿っお 䞀括眮換しおみた 先に結論です。䞀括眮換するたでは3ステップで完了したした! 総蚘事数玄450件のうち、眮換察象のリンクが含たれおいる蚘事は玄100件、差分は玄130行ほどでした。(目芖で確認&眮換しおいたらゟッずしたすね...!) 良い感じに取り蟌んで(pull from hatenablog) 良い感じに眮換しお 良い感じにpush! 以䞊です! リンク眮換䜜業の経緯 さすがに少し味気ないので、もう少し詳しく経緯もお䌝えしようず思いたす。 こずのきっかけは、これたで利甚しおいたずあるSaaSを別のSaaSに切り替えるこずになり、瀟内ではそのリンクの眮換䜜業が行われおいる最䞭でした。 BASE PRODUCT TEAM BLOG に掲茉しおいる蚘事にも倚くのそのSaaSのリンクが含たれおおり、眮換䜜業が必芁でした。 (ブログずいうコンテンツの特性䞊、過去の蚘事は曎新しない、ずいう刀断もありえたしたが、読者の皆様の䜓隓を損なわないこずを優先し、党お切り替えるこずずしたした。) 最初は「党郚蚘事目芖で地道にやっおみるか...。」ず思っおいたしたが、量も量でしたし、「なんずかならないかな...。」ずがんやり考えおいたした。 がんやり考えおいるずきず、ふずしたずきに前述の @applepine1125 さんが曞いた蚘事を思い出したした。 Hatena-Blog-Workflows-Boilerplate はブログの蚘事を曞くためのワヌクフロヌを提䟛するものですが、 hatena blog䞊に掲茉しおいる蚘事をpullするこずができるので、 それを䜿っお、蚘事の取り蟌み(pull) -> 眮換 -> push ずいう流れで、リンクの眮換䜜業を行うこずができるのではないかず思いたした。 ちょっず実隓がおらやっおみたずころ、前述のずおり簡単にリンクの眮き換えができたした。 䜿っおみた感想 特定の文字列を䞀括眮換ずいう慣れ芪しんだ(?)䜜業をおこなうだけでしたので、本圓に簡単でした。 ブログの執筆の䞀連のフロヌを Hatena-Blog-Workflows-Boilerplate のワヌクフロヌに移行したいな、ず瀟内でもがやいおいたのですが、 執筆のフロヌだけでなく、ブログのメンテナンスにも䜿えるこずがわかり、たすたす今埌掻甚したいず思っおいたす。 たた、今回觊っおみお感じたしたが、執筆だけでなく、メンテナンスや蚘事を䞀気に芋る、ずいったこずにも掻甚できるので、䌁業ではおなブログで技術ブログ等を運営されおいる方にはぜひ䞀床お詊しいただきたいです。 おわりに Hatena-Blog-Workflows-Boilerplate めちゃくちゃ䟿利です...!!! open.talentio.com
BASE も Aurora MySQL v3 ずなりたした SRE Groupの ngsw です。 2024/10/14〜10/15の深倜メンテナンスにお、BASEで利甚しおいるAmazon Aurora MySQLのバヌゞョンは、v2系からv3系ずなりたした。 アップグレヌドの前提条件で倧きな぀たずきがありたしたが、 gh-ost を利甚するこずで、乗り越えるこずができたした。 この蚘事では圓該アップグレヌドの䞭で gh-ost をどのように利甚し、どういう恩恵を受けたかに぀いお述べおいきたす。 おさらい : v3 察応しないずどうなるの Aurora MySQL v2は暙準サポヌト終了が発衚されおおり、v3ぞの移行を終えおいないDBクラスタヌには自動的に有償の延長サポヌトが適甚される流れです。 Amazon RDS 延長サポヌトの䜿甚 - Amazon Aurora 2024/10/31 に自動で延長サポヌト入り 2024/12/01 より延長サポヌト料金の自動請求が適甚される 費甚はこちらをご確認ください。そこたで安くありたせん。 料金 - Amazon Aurora | AWS 有償サポヌト提䟛によりある皋床の時間猶予が䞎えられたずはいえ、アップグレヌドを先延ばしにするメリットはほずんどありたせん。 たずえば、このアップグレヌドよりも䌁業にずっお利益のある斜策やサヌビスの開発/改修があればたた別の意思決定が働くでしょうが、そんな斜策はそうそうないでしょう。 簡単にアップグレヌドできない問題 Aurora MySQL v2→v3アップグレヌド怜蚌段階で問題が芋぀かりたした。 BASEでは本番環境のデヌタにマスキングをほどこしたものを、開発環境で利甚できるようにしおいたす。 このマスキングしたDB Clusterで、以䞋にあるようなむンプレヌスアップグレヌドの怜蚌を行いたしたが、゚ラヌのためアップグレヌド凊理は停止しおしたいたした。 Amazon Aurora MySQL バヌゞョン 3MySQL 8.0 互換ぞのアップグレヌド | Amazon Web Services ブログ 停止理由は upgrade-prechecks.log をみるこずで確認ができたす。 原因ずなる問題は倧きく二぀ありたした。 mysql . event に関するアップグレヌド時の䞍敎合゚ラヌ 倚数のテヌブルに叀いディスクフォヌマットで datetime 型カラムが䜜成されおいたための゚ラヌ mysql . event に関するアップグレヌド時の䞍敎合゚ラヌ AWS サポヌトにより察応いただけたした。 こちらは数日皋床で解決でき、怜蚌䜜業をブロックするほどの問題ではありたせんでした。 倚数のテヌブルに叀いディスクフォヌマットで datetime 型カラムが䜜成されおいたための゚ラヌ 問題はこちらの゚ラヌです。 MySQL :: MySQL 8.0: Removing support for old temporal datatypes 解決方法が「圓該カラムを持぀テヌブルを新しく再䜜成する」ずいうこずになり、 Dump & Restoreする ALTER TABLE {table_name} FORCE; ずいうような、぀たりv2䞊で CREATE TABLE 盞圓のこずを行う必芁がありたした。 おそらくはMySQL5.6以前のAWSのRDSで皌働し、そのたたAuroraに匕き継がれおきたテヌブルで、か぀ datetime 型カラムを含むものがこの察象ずなるのでしょう。 Aurora からサヌビスを開始したプロダクトなどでは芋るこずがない゚ラヌなのかもしれたせん。 どのような困難が䌎うか このあずに控える困難を想像し頭を抱えおしたった理由、今回の datetime 型カラム再䜜成察象ずなった2぀のDB Cluster、XずYに぀いお説明したす。 X はショップの情報や商品の情報などを持ちたす。 Y は各皮履歎などが蓄積されおいたす。 以䞋に芏暡感を蚘茉したす。 察象テヌブル数ずその合蚈サむズ テヌブル数 容量 X党䜓 976tables 箄7.5TB 察象テヌブル 268tables 600GiB 察象テヌブルはDB Clusterのデヌタサむズにしお党䜓の玄8% 4テヌブルあれば、うち1぀が察象ずいう圢。 テヌブル数 容量 Y党䜓 236tables 箄5.3TB 察象テヌブル 37tables 615GiB 察象テヌブルはDB Cluster のデヌタサむズにしお党䜓の玄11% 10テヌブルあれば、うち1぀か2぀が察象ずいう圢。 結論ずしおこれだけのテヌブルに察しお、 なるべくサヌビス無停止でALTER文を発行しきる必芁がありたす。 前提ずしお、 圓該アップグレヌドのメンテナンスは1回の深倜メンテナンスで行う 党断しお行う予定であるが、メンテナンス時間は5〜6時間皋床しかずれない ずいうのがありたした。 圓初はメンテナンス時間の䞭で圓該テヌブルに察しおdump&restoreするなども考えたしたが、 実行時間的に無理だずいうこずがわかりたした。 1 オンラむンスキヌマチェンゞ/オンラむンスキヌママむグレヌションツヌル メンテ圓日にALTER TABLE or Dump/Restore + upgrade すべおを行うこずは(圓然に)無理、ずいうこずがわかりたした。 それならばメンテ圓日たでに事前に䞋準備ずしお行う方法を考えたした。 䞋準備ずしお、ずいうこずから暗黙的に無停止でなければなりたせん。 サヌビス無停止でALTER TABLE発行ずいうずころから、オンラむンスキヌマチェンゞ/オンラむンスキヌママむグレヌションツヌルに行き着くでしょう。 わたしはこの手のツヌルの利甚経隓がなかったため、ひずたず以䞋を候補にあげたした。 2 pt-online-schema-change — Percona Toolkit Documentation github/gh-ost: GitHub's Online Schema-migration Tool for MySQL 結果ずしお、われわれは gh-ost をはじめに怜蚌し、目的に際し十分であるず考え、そのたた今回の䜜業遂行ツヌルずしお採甚したした。 以䞋の理由から gh-ost の怜蚌を優先し、結果的にわれわれの芁件的には gh-ost で十分ずいうこずがわかったため、pt-osc の怜蚌自䜓をスキップしたした。 pt-oscよりgh-ostを優先しお怜蚌候補にした理由は以䞋になりたす。 pt-oscを遞ばなかった : pt-osc では元テヌブルず新テヌブルの同期にトリガヌが採甚されおおり、トリガヌ利甚による負荷が、サヌビス提䟛にどのように圱響を䞎えるのか懞念し、怜蚌優先床を䞋げた gh-ostを遞んだ : 凊理時間は長くなりそうではあるが、DB負荷自䜓は軜そうに思えたため gh-ostを遞んだ : 䞀番の懞念であったDB Cluster Xでbinlog replicationをすでに運甚しおいたため、gh-ost利甚適正が高いだろうず思えたため そもそも pt-osc は完了たでの凊理速床を、gh-ost は小さな負荷での実行(぀たりサヌビス圱響の最小化)を重芖しおいるよう思え、今回は埌者の哲孊を支持したため gh-ost 簡単にgh-ostの特城および利甚しおの実感を曞きたす。 特城に぀いおは gh-ost/README.md at master · github/gh-ost を読むずわかりやすいです。 耇数方匏があるが、replication偎からbinlogを取埗するパタヌンが掚奚されおいる 別名テヌブルに元テヌブルからデヌタを抜出しお挿入する、曎新分はbinlogで察応する 負荷が高くなるず自動でthrottlingする 指定ファむルをtouchすれば、手動でthrottlingさせるこずもできる なにかしらの゚ラヌが発生しお凊理途䞭で萜ちた堎合、たた䜜業途䞭であった別名テヌブルを削陀しお、最初から実行する必芁がある 1テヌブルにあたり、ずおもゆっくり動くので察象テヌブルデヌタ量によっおは業務時間内に1テヌブル終わるかわからないくらい 別名テヌブルず元テヌブルを切り替える凊理をcut-overずいうが、この時間を指定するこずもできる(倜䞭に切り替えたい、昌間に切り替えたくない堎合などに有効) cut-over ずいう単語が出おきたしたが gh-ostでは「ALTER TABLE甚の別名テヌブルを察象テヌブルに倉名し本番運甚ぞず切り替える」こずをいいたす。 gh-ost/doc/cut-over.md at master · github/gh-ost 利甚しおいた実感では cut-over に至るたではたったく問題が起きたせんでした。 明瀺的な問題ずしお1回だけ発生したのは cut-over タむミングず曎新タむミングが噛み合ったずきに、 cut-over が止たっおしたうずいう珟象でした。 䞀床gh-ostの凊理をずめ、新たにやり盎すだけで解消するので、 cut-over 間近のタむミングだけ気にしおおけばよい、ずいう圢で以埌の䜜業もすすめるこずができたした。 gh-ost の奜きなずころ 個人的に gh-ost で気に入ったずころも曞いおおきたしょう。 sock fileを経由するこずで察話匏にコマンド実行が可胜 gh-ost/doc/interactive-commands.md at master · github/gh-ost 進捗ステヌタスが確認できる コマンド実行䞭にパラメヌタを動的に倉曎できる 特定ファむルの蚭眮で凊理を暫定停止するこずができる 凊理が遅いのだけが欠点、実運甚ぞの副䜜甚がたったくずいっおいいほどない ずいう感じです。 最終的にはほずんど攟眮しお、䞀日の終わりに進捗状況を確認する皋床になりたした。 運甚䜜業者(ひいおはサヌビス)に優しいツヌルだなず感じたした。 参考 : 実際の䜜業スケゞュヌル 圓初は本番䜜業時にどのような圱響がでるかわからなかったため、開発陣に察象テヌブルのリストずALTER TABLE実行スケゞュヌルを共有するようしたした。 うたくいっおも08月䞊旬から09月末くらいかかるのではないかず䞍安でしたが、gh-ostのおかげで08/08〜08/26ずいう想定よりも短い期間で終えるこずができたした。 デヌタ総量が䜜業時間を巊右する傟向がみられたため、芋積もりのため以䞋のようなク゚リでテヌブルごずのデヌタの䞀芧を出しおいたす。 total_size を䞻に芋お実行時間の芋積もりを行っおいたした。 SELECT table_schema, table_name, data_length AS `data_size`, index_length AS `index_size`, (data_length + index_length) AS `total_size`, table_comment AS ` comment ` FROM information_schema.TABLES WHERE table_schema != ' sys ' AND table_schema != ' information_schema ' AND table_schema != ' performance_schema ' GROUP BY table_schema, TABLE_NAME ORDER BY total_size DESC ; 泚意点1 今回Aurora v2 -> v3 ぞのアップグレヌドだったため、gh-ost のバヌゞョンは v1.1.5 を採甚しおいたす。 泚意点2 第140回 オンラむンスキヌママむグレヌションツヌル gh-ostを䜿っおみようその3 | gihyo.jp には以䞋のような蚘述がありたす。 ナニヌクキヌの远加 gh-ostを䜿甚しお、ナニヌクキヌを远加するこずは可胜です。 しかし、ナニヌクキヌを远加するカラムの倀が事前にナニヌクな倀になっおいるこずを確認しおから実行しないず、 デヌタがなくなっおしたう恐れがありたす。 われわれの今回の䜜業においおは関係がなかったものですが、この蚘事より興味をもっお利甚される方においおは、甚途によっおは気にしおいただきたい内容であるため、ここに匕甚したした 参考URL 今回のタスクでは以䞋のDocumentを参考にしたした MySQL 党般に぀いお MySQL :: MySQL 8.0: Removing support for old temporal datatypes gh-ost に぀いお gh-ost/README.md at master · github/gh-ost 第138回 オンラむンスキヌママむグレヌションツヌル gh-ostを䜿っおみようその1 | gihyo.jp 第139回 オンラむンスキヌママむグレヌションツヌル gh-ostを䜿っおみようその2 | gihyo.jp 第140回 オンラむンスキヌママむグレヌションツヌル gh-ostを䜿っおみようその3 | gihyo.jp 【MySQL】gh-ostを調べる - 地方゚ンゞニアの孊習日蚘 【MySQL】gh-ostでオンラむンマむグレヌション #Docker - Qiita Runtime error when trying to ALTER a table without PRIMARY KEY / UNIQUE KEY · Issue #332 · github/gh-ost pt-osc に぀いお pt-online-schema-change — Percona Toolkit Documentation pt-online-schema-changeの導入時に怜蚎したこず、およびRailsアプリずの䜵甚に぀いお - freee Developers Hub Percona瀟のgh-ostベンチマヌクなど Using gh-ost with Amazon Aurora for MySQL Gh-ost benchmark against pt-online-schema-change performance spirit ずいうツヌルもあったが、v2(5.7ç³»)だず利甚が難しそうだった MySQL オンラむンスキヌマ倉曎ツヌルの spirit ず gh-ost - Please Sleep BASEでは随時メンバヌを募集しおいたす。 2024.10珟圚、私の所属するSRE Groupの募集はないようですが、興味を持たれた読者諞氏におかれたしおは、以䞋リンク先をご芧いただければ幞いです。 採甚情報 | BASE, Inc. - BASE, Inc. 怜蚌ではdumpだけで想定メンテナンス時間をすべお消費しおしたうこずがわかりたした ↩ チヌム内にこれらツヌルの怜蚌目的の過去Issuesが立っおいたため ↩
新しい方を受け入れる偎のマむンドセットです。 はじめに BASE の Product Dev Division でシニア゚ンゞニアをしおいるプログラミングをするパンダ @Panda_Program です。 入瀟されお3ヶ月目で同じチヌムで働いおいる Torata さんが「 入瀟しお感じたBASEのいいなず思うずころ 」ずいう入瀟゚ントリを曞いおくれたので、新入瀟員を受け入れる偎からのアンサヌ蚘事です。 以䞋はBASE瀟内の人なら誰でも読むこずができる文曞で、特にこれからメンタヌになる人には読んで貰っおいるものです。自分が受け入れ偎ずしお数ヶ月間特に意識しおおり、手応えがあったこずを曞き残しおいたす。 ここ数ヶ月の間、マネヌゞャヌず共にオンボヌディングの䜓隓や資料の党面的な芋盎しを行い、新入瀟員ずメンタヌのオンボヌディング䜓隓を改善したした。この文章自䜓も前からあるものではなく、これからメンタヌはこういうこずを心がけおいこうねず新しく䜜ったものです。 以䞋の内容はBASE瀟での受け入れを想定しおいたすが、他の䌚瀟でも゚ンゞニアずいう職皮以倖でも掻かせる内容だず思いたす。これから新しい方を受け入れるにあたっおどう接したらいいのかわからないずいう方が、この文章を通しお䜕かを掎めたら幞いです。 盞手を知ろう これは䞀番重芁です。珟圚、BASEで採甚しおいる゚ンゞニアは実務経隓者の方がメむンだからです。 よくある間違いは、盞手が䜕も知らないず勘違いしお䞀から党郚教えようずするこずです。盞手も経隓者なので䞀から教えおもらう必芁はありたせん。では䜕を教えればいいのでしょうか。それは新入瀟員の人が持っおいる知識のうち、メンタヌから芋お䞍足しおいる郚分だけです。 メンタヌがたずやるべきこずは、新しく入瀟される方のこれたでの経隓を深く知るこずです。メンタヌはチヌムメンバヌの誰よりも新しく入瀟される方のバックグラりンドを理解したしょう。 前職ではどのような業務を担圓しおいたのか、前職の䌚瀟の雰囲気はどのようなものであったのか、どのようなこずに興味を持っおいお、どのようなこずが苊手なのか。これらのこずを知っおいるず自然ず盞手ぞの向き合い方も倉わりたす。盞手の良いずころや自分にない郚分を知るこずは盞手ぞのリスペクトに぀ながりたす。 BASEではこうだず抌し付けるのではいけたせん。盞手の過去の経隓を知り、BASEずの共通点や盞違点を提瀺したしょう。するず盞手は䞀から党郚知るコストを払う必芁はなく、共通点や差分を孊ぶだけで枈みたす。メンタヌが「りチではこうだ」ず抌し付けるのではなく、転職者が自分の過去の経隓に基づいお、新しい䌚瀟ず今たでの䌚瀟ずの共通点や盞違点にフォヌカスする方がスムヌズです。結果的に組織やカルチャヌぞの適応も早くなるでしょう。 自分を開瀺しよう 新しく入瀟される方はたくさんの質問を受けるこずでしょう。しかし、盞手のこずを聞くばかりではいけたせん。自分はどういう人間か、䌚瀟やチヌムで働いおいる人はどういう人たちなのかを䌝えるこずも重芁です。 自分の経隓を盞手に䌝えたしょう。自分は䜕が埗意で、なぜこの䌚瀟で働いおいるのか。オンボヌディング期間は、普段䌚瀟ではあたり話すこずのない、自分が倧切にしおいる䟡倀芳に぀いお話すいいタむミングです。ここを逃すずなかなかそれを話すタむミングはありたせん。 メンタヌずメンティヌの䞀察䞀に限らず、新入瀟員の方が所属するチヌムのみんなで自分たちの倧事にしおいる䟡倀芳に぀いお改めお話す機䌚を蚭けるこずにより、メンバヌの知らなかった䞀面も芋れるかもしれたせん。そうすれば、チヌムの結束はさらに匷たるでしょう。 オンボヌディングずいう機䌚を掻甚しお既存のチヌムを再ビルディングするず、メンバヌ同士が今よりもっず互いにリスペクトを送り合えるより匷いチヌムになりたす。 ドキュメントは枡すだけではなく、盞手の理解床に合わせお適宜䞀緒に読もう。口頭で解説・補足をしよう オンボヌディングで最初にやるこずの䞀぀は、自分たちが開発しおいるプロダクトを実際に觊っおみるこずです。その際、メンタヌは新入瀟員を䞀人きりにしないであげおください。 䞀般的に、䜕かりェブサむトや゜フトりェアを觊るずきにこの裏偎はどうなっおいるんだろうず気になるずいうのが゚ンゞニアの性さがです。新しく入った方は、これから自分が開発しおいくこずになるプロダクトに自然ず興味ず疑問を持ちたす。 興味から出た感想や疑問に察しおメンタヌがシステムの裏偎を解説したり、ここはちょっずいけおないずころなんだよねず共感したりずタむムリヌに答えるこずで、メンティヌの知識の定着床は俄然アップしたす。人は疑問を持った時が䞀番知識を吞収できるからです。たた、このように盞手に寄り添った行動の積み重ねがお互いの信頌関係を構築するこずに繋がりたす。 ゜フトりェアに限らずドキュメントも同様です。䞀人でただ読むだけでは理解できないこずも、メンタヌず䞀緒に読みながら適宜口頭で補足や解説を亀えおもらうずメンティヌは深く理解するこずができたす。 この時、自分で解説を始めたりBASEの事情を䞀方的に䌝えるだけではなく、「この䞭でどの郚分がわからないですか」「あなたの前の䌚瀟ではどうでしたか」ずたず質問をしお話を聞いおあげたしょう。そこからうちの䌚瀟ではここは違いたすね、ここは同じですねずいう䌚話を広げおいきたしょう。 「盞手を知る」チャンスはどこにでも転がっおいたす。 おわりに 少し倧袈裟ですが、メンタヌずなるあなたの印象がBASEの瀟員党䜓の印象を決めるず蚀っおも過蚀ではありたせん。もし盞手が幎䞋だったり自分より経隓が浅くおも、盞手ぞのリスペクトを忘れず真摯に向き合いたしょう。 なお、手前味噌ですが私の配信しおいるラゞオコンテンツもお聞きいただけるず、オンボヌディングに察しおさらにむメヌゞが湧くかなず思いたす。 こちらは、オンボヌディングしおもらう偎特有の焊りからくる倱敗などに぀いお話しおいたす。オンボヌディングされる偎の気持ちを少しでも思い出すきっかけになるかず思いたす。 BASEでは゜フトりェア゚ンゞニアを募集しおいたす。ぜひ採甚情報ペヌゞをご芧ください。 採甚情報 | BASE, Inc. - BASE, Inc.
はじめに BASE BANK Division で ゚ンゞニア をしおいる岩本ず申したす YELL BANK の開発を担圓しおいたす。 2024幎5月にBASEぞjoinしお早いもので5ヶ月ほどが経ちたした。 joinしおからいく぀かのプロゞェクトを担圓しおきたした。 改めお考えるずオンボヌディングがずおも充実しおいたおかげで円滑にプロゞェクトに入っおいけたのだなぁず感じたす。 そこで、オンボヌディングを䞭心にこれたでの5ヶ月を振り返り぀぀、チヌムが新芏メンバヌのキャッチアップに向けお、どのような取り組みを行っおいるかを玹介させお頂こうず思いたす 前眮き 本題に入る前に前眮きです。 私の普段の業務をむメヌゞしやすいように䜓制や圹割、各皮環境に぀いおお䌝えしたす 䜓制 たずは䜓制です。 私の担圓する YELL BANK ですが、joinした5月時点では以䞋のような3名䜓制で開発しおいたした。 EPMEngineering Program Managerのこずです。 こちら をご参考ください。 ゚ンゞニア2名内1人が私 7月以降は以䞋の䜓制に移行しおいたす。 EPM ゚ンゞニア1名私 圹割 次に圹割です。 私ぱンゞニアですが、BASE BANKでは「フルサむクル゚ンゞニア」ずいう圹割が求められたす。 フルサむクル゚ンゞニアに぀いおの蚘事は過去にGroup Managerの束雪さん( @applepine1125 )が曞いた こちら をご参考ください。 そのため、䌁画・芁件定矩〜保守運甚・デヌタ分析支揎等たで幅広く察応するこずが必芁になりたす。 それにより、開発チヌムだけでなく、PdM、デザむナヌ、PMMずいった職胜のメンバヌずも頻繁にコミュニケヌションが発生したす。 䜓感的には開発チヌム7、PdM・PMM・デザむナヌ3くらいの割合でコミュニケヌションしおいたす。 出瀟頻床 コミュニケヌションに関連した話ですが、珟状、BASE BANKの開発チヌムでは週1毎週朚曜に出瀟日を蚭け、その他はリモヌトワヌクです。 開発環境 最埌にアヌキテクチャ呚りのお話です。 私の担圓する YELL BANK の開発業務においおは以䞋の図の䞊偎にあるBASEのサヌビスず䞋偎にあるBASE BANKのサヌビス矀を実装しおおりたす。 ご芧の通り、フロント゚ンドはTypescriptVue.js、バック゚ンドはPHP、Go、Pythonずいう圢で耇数の蚀語で開発しおいたす。 たた、むンフラは䞻にAWSを䜿甚しおおり、IaCではterraformを䜿甚しおいたす。 本題 前眮きが少々長くなりたしたが、ここから本題です。 私が効果を感じた取り組みなどを5぀玹介させお頂きたす その1 オンボヌディングク゚スト BASE BANKチヌムではオンボヌディングク゚ストを甚意しおいたす。 以䞋はNotionで䜜成したオンボヌディングク゚ストのTOPペヌゞになりたす 新芏メンバヌはたずク゚ストに沿っお開発環境構築等の各皮セットアップをしおいきたす。 さらに開発環境構築だけでなく、プロダクトの説明を受けたり、実際に觊ったりずいった研修も行いたす。 オンボヌディング䞭はメンタヌが1人付きたすが、ク゚ストの䞭でPdMやデザむナヌずいった他の職胜のメンバヌずも接したす。 フルサむクル゚ンゞニアずしおはコヌドが曞けるずいうだけでは䞍十分です。 そのため、プロダクトの研修があったり、他の職胜のメンバヌずコミュニケヌションできる機䌚があったのは業務を進めるのに倧倉助かりたした たた、ク゚ストではオンボヌディングタスクずいうものを甚意しおいたす。 簡単か぀業務を1サむクル回せるずいった最初のキャッチアップにちょうどよいタスクのこずです。 私の堎合、if文を少し修正すればOKな簡単なコヌド修正ず、それをデプロむするずいうタスクでした。 これにより䞀通りの開発の流れを把握できたした。 ク゚ストはオンボヌディングが終了するたびに振り返りをしお改善を重ねおいたす。 その2 オンボヌディング期間䞭は毎日出瀟 オンボヌディング期間は1〜2週間です。 その間、基本的には新芏メンバヌもメンタヌも毎日出瀟したす。 そのため、すぐにメンタヌや他のメンバヌに質問するこずができたす。 察面なので、解決も早いです。 それ以䞊にメンバヌずの信頌関係をかなり早く構築できるずいうメリットを感じたす。 リモヌトの堎合、コミュニケヌション量が少なくなる傟向があるため、出瀟による察面のコミュニケヌションでレクチャヌを受けられたこずでシステム、プロダクトのむンプット量・質も䞊がりたした。 今振り返っおみおも最初に出瀟しおいたこずでオンボヌディング埌の業務を円滑に進めるこずができたした。 たた、入瀟前・盎埌にコミュニケヌションに䞍安を感じる方は倚いずは思いたすが、BASEでは早期にそのような䞍安を解消するこずができたした デメリットずしお通勀の負荷はありたしたが、それを超えるメリットを享受できたず感じおいたす 前眮きでも蚘茉した通り、オンボヌディング終了埌は週1毎週朚曜で出瀟しおいたす。 その3 ドキュメント文化 オンボヌディング終了埌、いざ本栌的な業務に入るわけですが、ただただ分からないこずはたくさんありたす。 BASE BANKにはドキュメントを残す文化がありたす。 分からないこずがあればNotionやREADMEを芋れば答えに蟿り着くこずも倚いですし、あるいはなにかしらのヒントがあるこずが倚いです。 業務しおいるず倧抵、どのメンバヌも同じこずで困るパタヌンも倚いので、そんなずきのためにトラブルシュヌティングをたずめたドキュメントも存圚したす。 個人的にはオンボヌディング盎埌はこのドキュメントに倧倉助けられたした。 以䞋はそのトラブルシュヌティングのドキュメントを䞀郚抜粋したものです。 その4 メンタヌランチ BASEにはメンタヌランチずいう制床がありたす。 入瀟埌、䞻に業務で関わるメンバヌずランチするずいうものです。 費甚は䌚瀟負担です。 この制床により、自分で機䌚を蚭けずずも仕組みでコミュニケヌションの機䌚を蚭けるこずができたす。 プロゞェクト開始前に゚ンゞニア以倖の職胜のメンバヌずもお話できたこずで、いざプロゞェクトを進めるずいうずきにやりやすかったのを芚えおいたす。 その5 振り返り文化 BASE BANKではスプリントごずにも振り返りしたすが、それぞれのプロゞェクト埌にも振り返りをする文化がありたす。 プロゞェクトの振り返りは職胜暪断的にそのプロゞェクトに関わったメンバヌ党員が参加したす。 私個人ずしおは振り返りの堎はプロダクトを知る機䌚でもあり、人を知る機䌚でもありたす。 その人の職胜、経隓によっお色々な意芋が出たす。 そしお自分も意芋を出したす。 意芋を出すずいうこずはプロゞェクトやプロダクトに぀いお、垞に胜動的に考えおいる必芁がありたす。 振り返り文化のおかげで自然ずそのような考えになっおいるように感じたす。 ぀たり、自然ず「早くキャッチアップしなきゃ」ずいう気持ちになりたす。 たずめ 改めおこれたでの4ヶ月を振り返っおみたした。 振り返っおみるず円滑なコミュニケヌションずいうずころにBASE BANKの匷みがあるのだず感じたす。 そしお、それによるチヌムプレむに匷みがあるのだず感じたす。 私自身はただただ党般的に知識が䞍足しおいるので、チヌム力向䞊に寄䞎できるように邁進したす。 おわりに BASE BANKではいっしょに働く仲間を倧募集しおおりたす フルサむクル゚ンゞニアずいう圹割に興味があるずいう方はたずはカゞュアル面談からでもご応募頂けるずうれしいです ↓の採甚ペヌゞの募集職皮䞀芧から、BASE BANKチヌムで6.金融サヌビスBASE BANKチヌムを遞択頂いおカゞュアル面談にご応募できたす binc.jp