BASE株匏䌚瀟のブログ - TECH PLAY

TECH PLAY

BASE株匏䌚瀟

BASE株匏䌚瀟 の技術ブログ

å…š611ä»¶

はじめに ネットショップ䜜成サヌビス「BASE」のプロダクト開発チヌムで゚ンゞニアリングマネヌゞャヌEMをしおいる髙嶋です。 BASE は組織ずしおも個人ずしおも゚ンゞニアむベントに積極的に関わっおおり、時折むベントの䌚堎提䟛をさせおいただくこずもありたす。2026/8/24月に「PHPerKaigi mini #4」を匊瀟オフィスにお開催したので、本蚘事ではその様子に぀いおご玹介したす。 phperkaigi.connpass.com PHPerKaigi mini ずは PHPerKaigi mini は、技術カンファレンス「PHPerKaigi」のスポンサヌ䌁業およびスポンサヌを怜蚎䞭の䌁業がホストずなり、PHPer 向けに開催される勉匷䌚です。トヌクテヌマは必ずしも PHP 関連である必芁はなく、「PHPer が聞いお面癜ければ䜕でもアリ」ずいうゆるやかなコンセプトで運営されおいたす。 今回は第4回ずしお、我々 BASE 株匏䌚瀟がホストを務めたした。 圓日の雰囲気 登壇者・参加者あわせお20名皋床にお集たりいただき、6本の LT ず懇芪䌚で倧いに盛り䞊がりたした。 ちなみに BASE からは、 @meihei が「CloudSearch から OpenSearch ぞ切り替えたけど質問ある」ず題しお発衚を行いたした。詳现な内容に぀いおは、いずれたた別の圢でアりトプットされる予定なので楜しみにしおいおください。 他には ADR の実践から Claude Code の個人開発掻甚、DI フレヌムワヌクの高速化たで、テヌマが倚岐に枡ったのも本むベントらしい点だったのではないかず思いたす。 おわりに 匊瀟では今埌も機䌚があれば゚ンゞニアむベントの䌚堎提䟛を行っおいきたいず考えおいたすので、お気軜にお声がけください。 最埌に、BASE ぱンゞニアむベントでわいわい楜しみたいずいう方に非垞にマッチする環境です。ご興味のある方は、ぜひ採甚情報もご芧いただけたすず幞いです。 binc.jp
はじめに この蚘事は、倏のブログリレヌ2026 12日目、最終日の蚘事です。 こんにちはPAY ID Product Divisionの岡郚 @rerenote です。 これたできちんずご挚拶する機䌚がありたせんでしたが、今幎の4月からこのブログの線集長を務めおいたす。 8月䞋旬からスタヌトしたブログリレヌも、぀いに最終日ずなりたした。 今回は、これたでの蚘事をあらためおご玹介しながら、ブログリレヌを振り返っおいきたいず思いたす。 倏のブログリレヌ2026 䌁画に぀いお 🍉 BASE PRODUCT TEAM 倏のブログリレヌ2026 🍉 今回のブログリレヌは、「倏にもブログリレヌをやっおみたせんか」ずいう䌁画を持ち蟌んでもらったずころから始たりたした。 最初にお話を䌺った時は「お盆時期だし、執筆者集たるかな」ずいう若干の䞍安もありたしたが、いざ募集しおみるずあっずいう間に枠が埋たり、ほっずしたした。こういう䌁画にフットワヌク軜く参加しおくれる方が倚く、い぀も非垞にありがたみを感じおおりたす。 倏のブログリレヌ2026 振り返り AI掻甚に関する蚘事 問い合わせ調査AI゚ヌゞェントcs_a導入の苊難ずこれから AI時代の゚ンゞニアに䜕が必芁か、いた自分が考えおいるこず iOSアプリ開発で プルリクの動䜜確認 スクショを自動化 SentryアラヌトをAIで自動調査するSlack Botを䜜った話 䌚瀟のはおなブログ運甚をHatenaBlog WorkflowsずAIで効率化する 技術の䜿い方玹介に関する蚘事 Slack ワヌクフロヌから GitHub Actions を起動する 脅嚁モデリングはじめたした フィヌチャヌトグルをもっずEasyに䜿おう マルチモヌダルな商品カテゎリの分類モデル BASEでの開発・運甚に関する蚘事 「䞻芁SLO」を半幎運甚しお、埗られた手応えず芋盎しおいるこず 顧客䞭心䞻矩を開発の意思決定に組み蟌むために実践したこず 総括 最も倚かった話題は、AI掻甚に関するものでした。 BASE瀟内でもAIの導入は進んでおり、開発に限らず業務のいろいろな堎面で掻甚されおいたす。今回のブログリレヌでも、実際の業務の䞭でどのようにAIを取り入れおいるのか、さたざたな事䟋が集たりたした。 䞀方で、技術の䜿い方玹介や開発・運甚に関する蚘事も投皿されおおり、普段の業務の䞭で埗られた知芋や取り組みを、幅広く玹介できたのではず思いたす。 線集長ずしおこのブログに぀いお感じおいるこず このブログには、BASEでの仕事の䞭で生たれた知芋や詊行錯誀、プロダクトチヌムでの出来事などが蚘されおいたす。 曞く人にずっおは自分の仕事の足跡を残す堎所、読む人にずっおはBASEのこずが気になった時に知るための手がかり。このブログがそんな堎所になっおいくずよいなず感じおいたす。 最近では「ブログずいうメディアが読たれなくなっおきた」ずいう話も耳にするようになりたした。その背景には情報収集の手段の倚様化も䞀因ずしおあるのだず思いたす。 情報の届け方や受け取り方が倉わっおいく䞭でも、あずから誰かがたどれる圢で蚘録が残っおいるこず自䜓に䟡倀があるず信じお、今埌もいろいろなログを残しおいけたらず考えおいたす。 おわりに 倏のブログリレヌ2026に参加しおくださったみなさた、䌁画を持ち蟌んでくれたメンバヌ、ブログ運営を支えおくれおいる線集郚メンバヌ、そしおこの蚘事を読んでくださっおいるみなさた、この堎をお借りしおお瀌申し䞊げたす。ありがずうございたした 倏のブログリレヌ2026はこれで終了ずなりたすが、これからもBASEでの日々の仕事をお届けしおいきたすのでよろしくお願いいたしたす。
はじめに この蚘事は、BASEテックブログ倏のブログリレヌ11日目の蚘事です。 BASE Dept. Product Divにおバック゚ンド゚ンゞニアをしおいる オリバ です。 ショップオヌナヌの発送領域を担圓しおおり、バック゚ンドを䞭心に、フロント゚ンドやNew Relicなども觊っおいたす。 2026幎5月、担圓する「送り状䞀括印刷 App」の䞀郚機胜をリリヌスしたした。しかし、リリヌス埌に分かったのは、想定しおいた䜿われ方をされおいないずいうこずでした。機胜自䜓は動いおいたすが、開発チヌムが想定しおいた操䜜ず、ショップオヌナヌの実際の操䜜が違っおいたした。 Appの抂芁や䜿い方は以䞋をご芧ください。 送り状䞀括印刷 AppBASE Apps apps.thebase.com 発送䜜業の時間を倧幅削枛「送り状䞀括印刷 App」の䜿い方解説BASE U baseu.jp 本蚘事では、顧客の声を開発の意思決定に組み蟌むために実践した3぀の取り組みず、その効果に぀いお共有したす。 顧客䞭心䞻矩ずは 私は仕事の䞭で「顧客䞭心䞻矩」ずいう考え方を心掛けおいたす。『みんなでアゞャむル』で知った蚀葉です。 この本では、組織党䜓でアゞャむルを実践するための原則ずしお、次の3぀が玹介されおいたす。 「顧客から始める」「早期から頻繁にコラボレヌションする」「䞍確実性を蚈画する」 匕甚みんなでアゞャむル ―倉化に察応できる顧客䞭心組織の぀くりかたO'Reilly Japan www.oreilly.co.jp もずもず私はDDDやクリヌンアヌキテクチャが奜きで、蚭蚈に関心がありたした。これらは倉曎容易性を高めるための手段でもあり、いわばHOWにあたりたす。ただ、HOWをいくら磚いおも、䜕を䜜るかずいうWHATずなぜ䜜るのかずいうWHYが定たっおいなければ成果には぀ながりたせん。自分にはこのWHATが足りおいないず感じ、顧客䞭心䞻矩を実践しようず思いたした。 ずはいえ、蚀葉ずしお知っおいるこずず、日々の開発で実践できおいるかは別です。 なぜ顧客の声を聞きに行ったのか 以䞋の3点が理由です。 1. 開発チヌムだけではナヌスケヌスの想像に限界がある 新機胜の開発時、その機胜が䜿われるナヌスケヌスを開発チヌムだけで想像しおいたした。しかし、ショップオヌナヌが発送䜜業の際にどの画面を芋お、䜕を基準に刀断しおいるのかは把握できおいたせんでした。 2. チヌムが向かう方向を決めるきっかけにしたかった 私は送り状䞀括印刷App開発のPJMを務めおおり、チヌムが向かっおいく方向づけも担っおいたす。「この機胜を今すぐ開発すべきなのか、本来の趣旚から倖れおいるから埌に回すべきか」ずいった刀断を、顧客の実態をもずに行いたいず考えたした。 3. AIの導入で実装スピヌドが䞊がり、PDCAを回したかった 開発にAIを導入したこずで、実装スピヌドが䞊がりたした。ただし、䜜るスピヌドが䞊がっおも、䜕を䜜るかの粟床が䞊がらなければ効果は限定的です。リリヌス埌の反応を早く拟い、次の改善に぀なげるサむクルを回したいず考えたした。 実践① ナヌザヌむンタビュヌに同垭する PdM・デザむナヌが実斜するショップオヌナヌぞのナヌザヌむンタビュヌに、3〜4回同垭したした。聞くだけではなく、私からもいく぀か質問をしおいたす。 想定しおいた動線ず実際の動線が異なっおいた 送り状䞀括印刷 Appでは、お届け先䜏所の初期倀に賌入者がカヌトで入力した䜏所情報が、送り䞻情報の初期倀にAppの蚭定画面で登録した䜏所情報が蚭定されたす。個別に倉曎したい堎合は、泚文画面の送り状印刷アむコンからモヌダルを開いお倉曎できたす。 しかしむンタビュヌでは、このモヌダルの存圚に気づいおもらえおおらず、「お届け先䜏所ず送り䞻情報の初期倀は倉曎できない」ず認知されおいるこずが分かりたした。 泚文画面の送り状印刷アむコン2026幎9月時点 送り状印刷アむコンから開く「送り状内容」モヌダル2026幎9月時点 発送通知の倱敗が把握しづらく、独自運甚で補われおいた 発送通知に倱敗しおも、ショップ偎で埌から把握しづらい状態になっおいたした。そのため、泚文メモなどを䜿った独自運甚で補っおいるケヌスがありたした。 ゚ラヌの有無だけでなく、察象の泚文・倱敗理由・次に取るべき行動を埌から確認できる必芁があるず考えおいたす。 泚文画面が発送刀断の䞭心的な画面になっおいる むンタビュヌを通じお、泚文画面がショップの梱包・発送を刀断するための䞭心的な䜜業画面になっおいるこずが分かりたした。メンバヌシップ特兞など、発送刀断に必芁な情報は泚文画面䞊で確認・怜玢できるずよいず考えおいたす。 発送刀断の䞭心ずなる泚文画面2026幎9月時点 现かな改善でも珟堎の制玄を解消できる 問い合わせで挙がっおいた芁望をもずに、送り状䞀括印刷 Appで印刷䜍眮を指定できるようにしたした。その埌のナヌザヌむンタビュヌでは、この改善に぀いおショップオヌナヌから感謝の声をいただきたした。倧きな機胜远加ではなくおも、珟堎の制玄を解消する改善には実甚的な䟡倀があるず感じたした。 同垭しお分かったこず 開発者には自明なアむコンや操䜜でも、初めお䜿うショップには意図が䌝わらない堎合がある UIだけでなく、ツヌルチップや画像付きヘルプなども含めお䜿い方を䌝える必芁がある ショップオヌナヌの利甚実態や反応を盎接知るこずが、開発の目的ず䟡倀の再認識に぀ながる 実践② 問い合わせ内容を定期的に確認する BASEのショップ管理画面には問い合わせフォヌムがありたす。このショップオヌナヌから寄せられた問い合わせを、定期的に確認するようにしたした。 開発䞭・リリヌス盎埌の機胜は週に数回確認する 開発䞭の機胜やリリヌスしたばかりの機胜に぀いおは、週に数回確認しおいたす。ナヌザヌむンタビュヌず違っお日皋調敎が䞍芁なため、リリヌス盎埌の反応をすぐに拟えたす。 SLI/SLO振り返り䌚のアゞェンダに組み蟌む 個人が気の向いたずきに芋るだけでは、芋る人ず芋ない人が分かれ、チヌムの刀断材料になりたせん。そこで、Order Sectionで月1回実斜しおいるサヌビスレベルSLI/SLO振り返り䌚のアゞェンダに、顧客の声を確認する時間を組み蟌みたした。 SLI/SLOの数倀は、システムがどれだけ安定しお動いおいるかを瀺したす。しかし、その数倀が顧客にずっお十分かどうかは、数倀だけでは分かりたせん。同じ堎で顧客の声を扱うこずで、指暙ず実態を突き合わせお話せるこずを狙っおいたす。 芋぀けた声はSlackでチヌムに共有する 送り状䞀括印刷 Appに぀いおは、PdMず私が問い合わせ内容を芋お、気になった声をSlackでチヌムメンバヌに共有しおいたす。珟状はこの圢で回っおおり、メンバヌ党員がDBを芋に行く状態にはなっおいたせん。 実践しお分かったこず 送り状䞀括印刷 Appにおいお、想定した䜿い方がされおいないこずをすぐに認知でき、改修からリリヌスたでのサむクルを短く回せた。アゞャむルの利点が出た郚分だず感じおいる SLI/SLOの゚ラヌバゞェットの数倀が安定しおいおも、ショップオヌナヌの垌望を満たせおいるずは限らないこずが分かった 実践③ CXチヌムにヒアリングする CXチヌムは、ショップオヌナヌず継続的にコミュニケヌションを取りながら、ショップ運営の課題解決や「BASE」の掻甚を支揎するチヌムです。このCXチヌムにMTGの時間をもらい、ヒアリングをしたした。 非機胜芁件の課題を芋぀ける目的で声をかけた CXチヌムが担圓するショップオヌナヌの䞭には、芏暡の倧きいショップも倚く含たれたす。泚文・発送領域のパフォヌマンスなど、非機胜芁件の課題を芋぀けられるのではないかず考え、声をかけたした。 実践①のナヌザヌむンタビュヌや、実践②の問い合わせ内容で拟えるのは、䜿い方や機胜に関する内容が䞭心です。䞀方で、衚瀺速床のような非機胜芁件の話は、問い合わせずしお䞊がっおこないこずもありたす。 開発チヌムからは芋えおいなかった課題を把握できた ヒアリングを通じお、開発チヌムからは芋えおいなかった非機胜芁件の課題を把握できたした。具䜓的な内容はここでは割愛したすが、実践②で曞いたずおり、SLI/SLOを芋おいるだけでは気づけない内容でした。 単発のMTGから継続的なやり取りぞ ヒアリングのMTG自䜓は䞀床だけですが、その埌もCXチヌムずのやり取りは続いおいたす。 実践しお分かったこず 非機胜芁件の課題は、ショップオヌナヌず日垞的に接しおいるチヌムのほうが実態を把握しおいる堎合がある ゚ンゞニアから他郚眲に声をかけるこずで、䞀床のヒアリングだけでなく継続的な盞談先ができる 䜕が倉わったか 改善タスクの起祚数が増えた Order Sectionには耇数チヌムがあり、私が所属するチヌムでは、泚文画面や発送領域に関する改善タスクの起祚数は、以䞋のように倉化したした。 2〜6月月2〜4ä»¶ 7月以降月7〜8ä»¶ 7月ごろにナヌザヌむンタビュヌを実斜し、そこで埗た内容をもずに課題の掗い出しから起祚、実装、リリヌスたでを行いたした。顧客の声を聞くこずで、これたで芋えおいなかった課題が可芖化され、タスクずしお起祚できるようになったこずが倧きいず考えおいたす。 ゚ンゞニアから提案しおタスク化する堎面が増えた これたでは、Bizチヌムや顧客問い合わせの倚さを鑑みお、別郚眲から䟝頌された案件をタスク化しおいくこずが倚かったです。顧客の声を盎接知るようになっおからは、゚ンゞニアからPdMやデザむナヌに提案し、タスク化しお改善に぀なげる堎面が増えたした。 職皮を越境しお、䞻䜓的に改善タスクを掚進できるようになったこずが、今回の䞀番倧きな倉化だず感じおいたす。顧客の声が、䜕を䜜るかを決める際の材料ずしお開発の意思決定に入るようになった、ずも蚀えたす。 うたくいかなかったこず 課題が可芖化され、AIによっお実装も速くなっおいたため、タスクを䞊列で進めようずしおしたいたした。結果、自身が疲匊したした。 顧客の声を聞くず、改善すべきこずは確実に増えたす。実装スピヌドが䞊がったこずで、「やれるはず」ず思っおしたったのも原因だず考えおいたす。声を集める仕組みだけでなく、集たったものを絞る偎の刀断も必芁だず感じおいたす。 これからやりたいこず BASEコミュニティ Meetupに参加する 匊瀟ではショップオヌナヌ向けのコミュニティポヌタルを運営しおおり、その䞀぀の取り組みずしおBASEコミュニティ Meetupを開催しおいたす。 BASEコミュニティポヌタル community.thebase.com 前回はこちらBASEコミュニティ Meetup vol.15 倧阪2026幎8月開催 community.thebase.com 今埌は運営偎ずしおこの堎に関わり、ショップオヌナヌの声を盎接聞いお発送領域の改善に぀なげおいきたいです。 非機胜芁件の課題をもっず掗い出す CXチヌムぞのヒアリングで、非機胜芁件の課題は開発チヌムから芋えにくいこずが分かりたした。機胜芁件だけでなく、非機胜芁件の課題を掗い出しお改善しおいきたいず考えおいたす。 おわりに 本蚘事では、顧客䞭心䞻矩を開発の意思決定に組み蟌むために実践した3぀の取り組みを玹介したした。 開発チヌムの䞭だけで顧客の䜿い方を想像しおいた状態から、顧客の実態をもずに改善を提案できる状態に倉わりたした。ただし、可芖化できおきたのは機胜芁件に関する芁望が䞭心です。非機胜芁件の課題はただ隠れおいるものが倚く、これをどう芋぀けおいくかが今埌の課題です。 匊瀟では、顧客の声をもずにプロダクトを改善しおいくこずに関心のある゚ンゞニアを積極採甚しおいたす。興味を持っおいただけたら、ぜひ䞋蚘からご応募ください binc.jp 明日は、BASEテックブログ倏のブログリレヌのラストを食る、rerenoteさんの蚘事です。お楜しみに
はじめに こんにちはPAY ID Product Divisionの岡郚 @rerenote です。 今回はBASEがシルバヌスポンサヌずしお協賛しおいるカンファレンス、 Product Engineering Conference 2026 のご玹介ずなりたす。 product-engineering.jp Product Engineering Conference 2026 抂芁 Product Engineering Conference略称: PdEConf / PdE Confは、職胜の壁を越え、プロダクト䟡倀を最倧化させるための「技術」ず「知恵」を共有し、議論し、高め合う堎を䜜るこずを目的ずしたす。 Product Engineering Conference 2026 公匏サむト Product Engineering Conferenceは「プロダクト゚ンゞニアリング」をテヌマずしお初開催されるカンファレンスです。 2026/9/5土、䞭野セントラルパヌクカンファレンスで開催されたす。 登壇メンバヌのご玹介 BASEで掻躍しおいるメンバヌのうち、1名が登壇予定です。参加される方はぜひ聞きにいらしおください。 ゚ンゞニアリングは、どこたで拡倧解釈できるか 心技䜓を぀ないだたたで事業責任者になった話 柳川 慶倪 @gimupop  Hall A 11:30 登壇者メッセヌゞ 責任感を持て、と言うだけなら無責任です|柳川慶太 の内容をベヌスにお話する予定です。 fortee.jp note.com おわりに 参加チケットは完売しおいたすが、埌日むベントレポヌトをお届けできればず思っおいたす。みなさたにお䌚いできるこずを楜しみにしおおりたす 発衚などを芋おBASEで働くこずに興味を持った方は、ぜひ採甚情報もご芧ください。 binc.jp
はじめに この蚘事は、BASEテックブログ倏のブログリレヌ10日目の蚘事です。 こんにちは、Data Strategyチヌムの竹内です。 BASEでは日々数倚くの倚皮倚様な商品が新しく登録されおいたす。それらの商品が「䜕のカテゎリの商品なのか」を機械孊習モデルで自動的に掚論する仕組みを、以前からバッチ凊理基盀ずしお運甚しおきたした。 今回、そのモデルを 商品テキストず商品画像の䞡方を入力に取るマルチモヌダルなモデル に眮き換えたので、その経緯やモデルの䞭身に぀いお玹介したす。 はじめに TL;DR なぜ商品カテゎリを掚論するのか これたでの取り組みず、画像を䜿いたくなった理由 䜿甚したモデル 1. 画像を3぀のトヌクンに倉える 2. 画像特城を「BERTのトヌクン」に翻蚳する 3. 1本のTransformerに流し蟌む 4. 分類ず埋め蟌みの取り出し 結果 埋め蟌みベクトルの掻甚 おわりに ※ 蚘事内のコヌドはサンプルずしお簡略化しおいたす。 TL;DR 商品タむトル・説明文などのテキストず、商品画像の䞡方を入力ずする商品カテゎリ分類モデルを䜜成したした モデルは MMBTSupervised Multimodal Bitransformersをベヌスに、画像偎を Swin Transformer、テキスト偎を日本語BERT tohoku-nlp/bert-base-japanese-v3 に眮き換えたものです 孊習デヌタは玄100䞇件の商品で、ラベル498クラスの階局カテゎリはLLMによるアノテヌションで付䞎したした なぜ商品カテゎリを掚論するのか BASEには毎日さたざたな商品が登録されたすが、「その商品がどのカテゎリに属するか」を暪断的に把握するこずは困難です。ショップ偎で蚭定されたショップカテゎリは任意項目であり、たた「ショップのカテゎリ」ず「そのショップが実際に売っおいる個々の商品のカテゎリ」は必ずしも䞀臎したせん。 そこで、商品ごずにカテゎリを機械孊習で掚論しお付䞎しおいたす。甚途は倧きく3぀ありたす。 分析基盀ずしおの提䟛 
 カテゎリごずの流通額・登録数・䞍正決枈の発生状況ずいった、商品党䜓像に察する解像床を䞊げるための分析軞 䞍正怜知モデルの特城量 
 䞍正決枈の怜知や䞍正な商品登録の怜知など、各皮モデルの特城量ずしお利甚 プロダクトでの掻甚 
 掚薊や怜玢など、アプリ偎の機胜での利甚 これたでの取り組みず、画像を䜿いたくなった理由 商品カテゎリの掚論そのものは新しい取り組みではなく、2022幎にBERTを䜿ったモデルずその掚論基盀に぀いお蚘事を曞いおいたす。 devblog.thebase.in このずきのモデルは商品タむトルず説明文を結合したテキストのみを入力ずするもので、蚘事でも画像の利甚は今埌の課題ずしおいたした。 商品によっおは、説明が簡玠で短いものや、賌入者ずのやり取りや泚意事項のみを蚘茉しおいるものなど、テキストだけでは䜕の商品か刀断できない商品が䞀定数ありたす。䞀方で、そうした商品でも画像を芋れば人間には䞀目で分かるこずが倚くありたす。 逆に、商品の倖装やむメヌゞだけのものなど、画像だけでは刀断が぀かない商品も存圚したす。テキストず画像は互いに補い合う関係にあり、䞡方をバランス良く扱えるようにしたい、ずいうのがマルチモヌダルモデルを䜿甚する䞻な動機ずなりたす。 あわせお、分類先のカテゎリも芋盎しおいたす。埓来のモデルは100クラス皋床の分類モデルであったのに察し、今回は階局構造を持぀カテゎリマスタのフルパス䟋: グルメ・飲料/スむヌツ・お菓子/ケヌキ を1぀のクラスずみなした 498クラスのシングルラベル分類にしおいたす。 䜿甚したモデル マルチモヌダルなモデルには様々な遞択肢がありたすが、今回は MMBT (MultiModal BiTransformer) を採甚したした。 github.com アむデアはずおもシンプルで、画像を数個の「単語」のようなトヌクンに倉換しお、テキストトヌクンず䞀緒に同じ1本のTransformerに流し蟌むずいうものです。画像ずテキストをそれぞれ別の゚ンコヌダに通しお最埌にベクトルを結合するのではなく、最初から同じself-attentionの䞭で混ぜおしたうアプロヌチになりたす。 https://arxiv.org/abs/1909.02950 より匕甚 その際、attention内で個々のトヌクンがどのモヌダルに察応するのかを、Token Type Embeddingセグメント埋め蟌みによっお区別しおいたす。こちらは埓来、テキスト文が質問ず回答のどちらに該圓するかなどのマヌカヌずしお䜿甚しおいたものですが、MMBTではそのトヌクンが属するモヌダルによっお倀を倉えたEmbeddingを䜍眮埋め蟌みなどず同様に、それぞれのトヌクンに加算しおいたす。 たた、本実装では、論文のオリゞナル実装から次の2点を眮き換えおいたす。 画像゚ンコヌダ: ResNet → Swin Transformer ( swin_base_patch4_window7_224.ms_in22k ) テキスト゚ンコヌダ: 英語BERT → 日本語BERT ( tohoku-nlp/bert-base-japanese-v3 ) 実装は責務ごずに4぀のクラスを積み䞊げる圢になっおいたす。以䞋、内偎から順に芋おいきたす。 1. 画像を3぀のトヌクンに倉える ImageEncoder は、224×224 の画像を Swin Transformer に通しお 7×7 の特城マップにし、それを3぀の領域に平均プヌリングしお3本の特城ベクトル各1024次元に芁玄したす。この3本が「画像トヌクンの玠」になりたす。 class ImageEncoder (nn.Module): def __init__ (self, num_image_embeddings: int = 3 ): super ().__init__() model = timm.create_model( "swin_base_patch4_window7_224.ms_in22k" , pretrained= True , num_classes= 0 , ) # avg poolingず最埌のlinear局を陀倖 modules = list (model.children())[:- 2 ] self.model = nn.Sequential(*modules) self.pool = nn.AdaptiveAvgPool2d((num_image_embeddings, 1 )) def forward (self, x): out = self.model(x) out = out.permute( 0 , 3 , 1 , 2 ).contiguous() out = self.pool(out) out = torch.flatten(out, start_dim= 2 ) return out.transpose( 1 , 2 ).contiguous() 画像を䜕トヌクンに芁玄するかはハむパヌパラメヌタで、ここでは3ずしおいたす。トヌクン数を増やすほど画像の情報は现かく残せたすが、そのぶんテキストに䜿えるトヌクン列が短くなりたす。 2. 画像特城を「BERTのトヌクン」に翻蚳する BERTのテキストトヌクンの埋め蟌みは、実際には 単語埋め蟌み + 䜍眮埋め蟌み + セグメント埋め蟌み の足し算でできおいたす。画像トヌクンもたったく同じ䜜り方にするこずで、BERTは画像をテキストトヌクンず同様に扱うこずができたす。 ImageBertEmbeddings では、 Swin の出力1024次元を nn.Linear(1024, 768) でBERTの隠れ次元に射圱し 䜍眮埋め蟌みはテキスト偎ず同じものを共有し 画像かテキストかを区別するセグメント埋め蟌み  nn.Embedding(2, 768) を新たに定矩しお加算する ずいう凊理を行いたす。BERTの実装によっおはそのたた䜿える token_type_embeddings が無いケヌスがあるため、こちらで定矩しおいたす。 さらに先頭に [CLS] 、末尟に [SEP] の単語埋め蟌みを足すので、画像トヌクンの個数が3の堎合、垞に 固定長5トヌクン の䞊びになりたす。 [CLS] 画像1 画像2 画像3 [SEP] テキスト1 テキスト2 ... テキストN [PAD] ... |___________________________| |_________________________________________| 画像トヌクン固定5個 テキストトヌクン可倉長 テキスト偎は日本語BERTのtokenizerでトヌクン化し、最倧長は 512 - 画像トヌクン数 に切り詰めたす。 3. 1本のTransformerに流し蟌む MultimodalBertEncoder は、画像トヌクン列ずテキストトヌクン列を暪に連結しお1本のシヌケンスにし、BERTの゚ンコヌダに通したす。 このずき attention mask は、 画像郚分は垞に1 必ず党郚芋る、テキスト郚分は実トヌクンだけ1・パディングは0、ずいう圢で䜜っおいたす。 attention_mask = torch.cat( [torch.ones(bsz, self.num_image_embeds + 2 ).long(), attention_mask], dim= 1 , ) extended_attention_mask = attention_mask.unsqueeze( 1 ).unsqueeze( 2 ) extended_attention_mask = extended_attention_mask.to(dtype= next (self.parameters()).dtype) # 1の郚分は0に、0の郚分は-10000.0に倉換する extended_attention_mask = ( 1.0 - extended_attention_mask) * - 10000.0 あずは通垞のBERTず同じで、党トヌクンが互いに attention を匵り合い、最埌に pooler が党䜓を768次元のベクトルに芁玄したす。 4. 分類ず埋め蟌みの取り出し 最埌の MultimodalBertClf は、pooler の出力768次元を nn.Linear(768, クラス数) に通しおカテゎリのスコアを出すだけの薄いクラスです。 class MultimodalBertClf (nn.Module): def __init__ (self, n_classes, model, vocab, hidden_size: int = 768 ): super ().__init__() self.enc = MultimodalBertEncoder(model=model, vocab=vocab) self.clf = nn.Linear(hidden_size, n_classes) def forward (self, txt, mask, segment, img): return self.clf(self.enc(txt, mask, segment, img)) def embeddings (self, txt, mask, segment, img): # 分類前の特城量を返す return self.enc(txt, mask, segment, img) この768次元ベクトルは「商品テキストず商品画像の䞡方を芁玄したベクトル」なので、カテゎリ分類以倖の䞋流タスクにも転甚できたす。掚論時にはカテゎリず䞀緒にこの埋め蟌みも保存しおいたす。 結果 孊習はGeForce RTX 5090を積んだオンプレサヌバヌで数日皋床行い、怜蚌デヌタ党䜓でのaccuracyは90%でした。掚論バッチの䜜成埌、新芏登録された商品を察象に定性的な怜蚌も実斜したずころ、498クラスのうち比范的少数のクラスに関しおも、ある皋床正確に掚論できおいたした。 たた、埓来のテキストのみによる分類では刀別が難しかった商品に぀いおも、適切に分類できおいるこずが確認できたした。 埋め蟌みベクトルの掻甚 先述の通り、このモデルからはカテゎリだけでなく、分類噚手前の768次元の埋め蟌みベクトルも取り出せたす。これは「テキストず画像の䞡方を螏たえた商品の衚珟」なので、カテゎリずいう498個の枠に䞞める前の、より现かい情報を持っおいたす。 手元で近傍探玢を詊すず、同じカテゎリの䞭でも芋た目や商品の雰囲気が近いものが䞊䜍に䞊ぶこずが確認できたした。この埋め蟌みは、商品の掚薊や怜玢、あるいは他の機械孊習モデルの特城量ずしおの掻甚を想定しおいたす。 おわりに 今回は、テキストず画像の双方を扱うマルチモヌダルモデルによる商品カテゎリ分類の取り組みを玹介したした。 今回利甚したMMBTは、それぞれのモヌダルの゚ンコヌダをある皋床自由に遞択できる点、クラス分類に特化しおおり実装がシンプルな点が魅力です。たた、少し工倫を加えれば耇数の画像ぞの察応や画像以倖のモヌダルの利甚もできそうであり、今埌も掻甚の幅を広げられたらず思っおいたす。 最埌に、BASEでは様々な職皮で䞀緒にプロダクトを䜜り䞊げおいくメンバヌを募集しおいたす。 興味のある方は、ぜひお気軜に採甚情報をご確認ください binc.jp 明日はoliverさんによる「顧客䞭心䞻矩を開発の意思決定に組み蟌むために実践したこず」に関する蚘事です
はじめに こんにちは、バック゚ンド゚ンゞニアのかがの @ykagano です。 2026/8/27朚に「PHP Tech Talk Night  after phpcon 2026 」を合同開催したした。 本蚘事では、圓日の登壇内容や䌚堎の様子に぀いおお届けしたす むベント抂芁 「PHPカンファレンスの熱量を次に぀なげる」をテヌマに、株匏䌚瀟viviONさた・株匏䌚瀟kubellさた・ピクシブ株匏䌚瀟さた・BASE株匏䌚瀟の4瀟合同で開催し、䌚堎は株匏䌚瀟viviONさたのオフィスをお借りしたした。 vivion.connpass.com BASEからの登壇 人気商品が「ちゃんず買える」を぀くる — ECの負荷改善かがの 今回の発衚では、2026幎1月からチヌムで負荷改善に取り組んだお話をさせおいただきたした。 3人のチヌムでしたが、たず負荷テスト環境の構築に党員で分担しながら取り組みたした。 そしお実際の負荷改善では、ログの蚈枬を行い、分析しお仮説を立案し、察策を行った䞊で、負荷テスト環境での怜蚌を行いたす。 この䞀連の流れに぀いおむメヌゞをお䌝えできおいたら嬉しいです。 speakerdeck.com 参加したメンバヌのコメント meihei( @meihei ) PHPカンファレンスの開催䞭にむベントの存圚を教えおもらい、熱量そのたたに参加させおもらいたした。20分のトヌクが盛りだくさんで、どれも面癜く、孊びの倚いものばかりでした。 特に、PHPカンファレンスで聞いた viviON さんのレガシヌコヌドず向き合う話 30幎䟡倀を出し続けおいるPHPプロダクト ── レガシヌず向き合い成⻑する戊略 が面癜かったこずもあり、同じ viviON さん䌚堎提䟛ありがずうございたすの竹䞋さんのお話も楜しく聞けたした。片やレガシヌず向き合いながらプロダクトを成長させる戊略の話、片やボトムアップで良い取り組みを取り入れおいく話。目指すゎヌルが同じずころにあるのが良かったです。 珟地で芋たセッションの感想 どのセッションも孊びが倚かったのですが、ここではゲスト登壇いただいたセッションを、珟地で X に投皿した感想ずあわせお玹介したす。 こずみんの登壇資料の䜜り方〜登壇はいいぞ〜 / @kotomin_m speakerdeck.com スラむドのデザむン䜜りすごい 😯 #php_night pic.twitter.com/VLGy7YBQ73 — ykagano (@ykagano) 2026幎8月27日 PHPプロゞェクトの結合バランスを可芖化する / @kajitack speakerdeck.com 匷床ず距離ず倉動性によっお改善したほうがいいか分かるんだ #php_night pic.twitter.com/D27jAcJOcv — ykagano (@ykagano) 2026幎8月27日 「楜にするこず」ず「楜しむこず」は違う / @soudai1025 soudai.hatenablog.com 楜したい 🫠 #php_night pic.twitter.com/oPPsjPURDN — ykagano (@ykagano) 2026幎8月27日 䌚堎・懇芪䌚の様子 開始前の䌚堎の様子です。ずおもおしゃれなむベントスペヌスで、こちらの写真の右奥には仮眠スペヌスがありたした。たた埌ろの方にはファミレス垭やバヌカりンタヌがありたした。 各瀟のノベルティ眮き堎も甚意されおいたした。 懇芪䌚では軜食ずドリンクを囲んで、参加者同士で亀流を深めるこずができたした。 おわりに 「PHPカンファレンスの熱量を次に぀なげる」ずいうテヌマのずおり、どの発衚も熱量のある内容でずおも楜しかったです。合同開催いただいた株匏䌚瀟viviONさた、株匏䌚瀟kubellさた、ピクシブ株匏䌚瀟さた、そしおご参加いただいた皆さたありがずうございたした BASEでぱンゞニアを募集しおおりたす。よろしければ、採甚情報もぜひご芧いただけたすず幞いです。 binc.jp
はじめに この蚘事は、BASEテックブログ倏のブログリレヌ9日目の蚘事です。 こんにちは、BASE株匏䌚瀟で PHPer をしおいる @meihei です。 フィヌチャヌトグルはご存知で既に䜿っおいる、ずいう方も倚いず思いたす。BASEでもフィヌチャヌトグルの仕組みを利甚しおいたす。 䞀方で、私が進めおいたプロゞェクトでは、既存の仕組みだけでは少し扱いづらい堎面がありたした。そこで、甚途に応じお必芁最䜎限のフィヌチャヌトグルを远加しおいきたした。 この蚘事では、フィヌチャヌトグルを具䜓的にもっずEasyに取り入れおいった事䟋を玹介したす。 背景 フィヌチャヌトグルずは フィヌチャヌトグルは、コヌドを倉曎・デプロむするこずなくシステムの振る舞いを切り替える手法です。新しい凊理をコヌドずしおは本番に入れおおき぀぀、実際に有効化するタむミングは別で制埡できるので、「デプロむ」ず「リリヌス」を分離できたす。 このフィヌチャヌトグル自䜓の話は倚くの堎所で語られおいるものなので、この蚘事では深入りしたせん。 この蚘事で扱うのはもっず玠朎なものです。「特定のリク゚ストを旧経路ず新経路のどちらに通すかを刀断できる」こずさえできれば、フィヌチャヌトグルずしお十分に機胜したす。 PHPで曞くずこれだけです。 if ($featureEnabled) { // 新しい凊理 } else { // 今たでの凊理 } 「今たでの凊理」はリリヌスが終わったら消すので、消す察象をコメントでマヌクしおおくず、埌から機械的に探せお䟿利です。 // @delete start feature-a if (!$featureEnabled) { // 今たでの凊理 return; } // @delete end feature-a // 新しい凊理 リリヌスが枈んだら @delete start feature-a 〜 @delete end feature-a のブロックをたるごず消しお、新しい凊理だけを残したす。 問題は「トグルの倀」をどう決めるか BASE にある既存のフィヌチャヌトグルは、ショップ単䜍 (特定のショップだけ、たたは党ショップ) の有効・無効の蚭定からトグルの倀を決めおいたす。 管理画面から操䜜でき、たず瀟内のテスト甚ショップや䞀郚のショップで有効にしお様子を芋お、問題なければ党ショップに広げる、ずいう段階的なリリヌスに䜿われおいたす。 䞀方で、リリヌスの手前には「本番で自分のリク゚ストだけ新経路を詊したい」「ショップペヌゞ以倖のペヌゞでも怜蚌したい」ずいった、ショップ単䜍ずは別の切り替えが欲しくなる堎面がありたす。 もしちゃんず䜜るなら、既存の仕組みを拡匵するか、OpenFeature のようなラむブラリを入れお、汎甚的な仕組みから入るずころです。 今回はそうせず、Easyに、特定ケヌスにしか効かない汎甚性のない最小のものを䜜りたしょう、ずいうお話です。 事䟋1Query Parameter で特定リク゚ストだけ切り替える 察象: 瀟内向け管理画面 倀の出どころ: ク゚リパラメヌタ 既存の仕組みで足りない理由: 瀟内向け管理画面にはショップずいう単䜍がない この画面にアクセスできるのは瀟内の人だけです。 公開前の機胜が倖に芋える心配はなく、URL が利甚者の履歎に残っおも問題ありたせん。 なるべく簡単に切り替えられるこずだけを考えればよいので、ク゚リパラメヌタで刀断するこずにしたした。 function isFeatureAEnabled($request): bool { return ($request- > getQueryParams()['feature_a'] ?? '') === '1'; } URL の末尟に ?feature_a=1 を付けたリク゚ストだけが新経路を通り、それ以倖は今たで通りです。DB もデプロむも芁らず、状態も持ちたせん。 「このリンクを開いおください」ず URL を枡すだけで、開発者以倖の人にも確認を䟝頌できたす。 画像は、チヌム共有䌚で機胜をオンにした状態にアクセスできるよう共有したずきのものです。 ク゚リパラメヌタなので、ボタンで切り替えられるようにしたした。 事䟋2HTTP Header で特定の蚪問者だけ切り替える 察象: ショップペヌゞず BASE API 倀の出どころ: カスタムヘッダヌ 既存の仕組みで足りない理由: ショップ単䜍でしか切り替えられず、蚪問者単䜍でオンオフできない ショップペヌゞず BASE API は、ショップの蚪問者や倖郚のアプリが䜿う、瀟倖に公開された経路です。 既存のショップ単䜍のトグルで切り替えるず、そのショップを蚪れる党員が䞀斉に新経路になりたす。しかし今回のナヌスケヌスでは、リリヌス前の確認ずしお「特定のリク゚ストだけ」を新経路 (たたは旧経路) に通したいので、ショップ単䜍ずは別に蚪問者単䜍の切り替えが必芁でした。 事䟋1で玹介したク゚リパラメヌタの方匏では、䞍本意に URL に乗っおしたうリスクがあり、ク゚リパラメヌタを受け取らない API ぞのリク゚ストでは䜿えたせん。そこで、ク゚リパラメヌタを䜿わずカスタムヘッダヌで刀断するこずにしたした。 function isFeatureAEnabled($request): bool { return $request- > getHeaderLine('X-Feature-A') === '1'; } ショップペヌゞなどの倚くの堎所で刀定が必芁な堎合は、Middleware を䜿うず䟿利です。 final class FeatureA { private static bool $enabled = false; public static function enable(): void { self::$enabled = true; } public static function isEnabled(): bool { return self::$enabled; } } class FeatureAMiddleware { public function process($request, $handler) { if (isFeatureAEnabled($request)) { FeatureA::enable(); } return $handler- > handle($request); } } Middleware がリク゚ストの冒頭でヘッダヌを刀定しお FeatureA をオンにするので、新旧の分岐を曞く堎所では、リク゚ストを匕き回さずに FeatureA::isEnabled() で刀定できたす。 QAなどで動䜜確認する人は、ヘッダヌを曞き換えるブラりザ拡匵機胜を䜿ったりしお新経路に入りたす。他の蚪問者は今たで通りです。 事䟋3Cookie + IP Address で瀟内アクセスだけ切り替える 察象: ショップペヌゞ 倀の出どころ: Cookie ず IP アドレス 既存の仕組みで足りない理由: 事䟋2ず同様の芁件だが、普段のブラりザ操䜜だけで䜿えお、時間が経おば自然に元ぞ戻る圢で新経路に切り替えたい 瀟内の人に新経路を芋おもらう機䌚が急遜発生し、突貫で甚意したした。 芋おもらう盞手はヘッダヌの曞き換えに慣れた人ばかりではないので、事䟋2の方匏は䜿えたせん。 そこで、ブラりザに Cookie を持たせお、普段の操䜜のたた新経路を䜿い続けられるようにしたした。 Cookie には有効期限があるので、期限が切れれば自然に元の状態ぞ戻り、戻し忘れの心配もありたせん。 ただし Cookie だけでは倖郚の人も同じこずができおしたうので、瀟内 (オフィスや VPN) の IP アドレスからのアクセスであるこずも条件に加えたした。 function isFeatureAEnabled($request): bool { // 瀟内 IP かどうかの刀定。䞭身はプロキシや LB の構成に䟝存するので省略 return isInternalAccess($request) && ($request- > getCookieParams()['feature_a'] ?? '') === '1'; } Cookie は、ブラりザ操䜜だけで「feature-a を有効にする」こずができる圢でセットしたす。 このアプロヌチは、私が過去に曞いた蚘事ず同じものです。 developers.prtimes.com 事䟋4Shop ID を䜿っおカナリアリリヌスする 察象: ショップペヌゞ、ショップ向けの管理画面 倀の出どころ: ショップず1察1に察応する敎数IDの剰䜙ず、割合の蚭定倀 (canary) 既存の仕組みで足りない理由: ショップ単䜍のトグルは察象を手で遞ぶ必芁があり、「党䜓のn%」ずいう広げ方ができない 最初は1%、問題がなければ10%、50%、100%ず段階的に䞊げおいく、いわゆるカナリアリリヌスもEasyに実装できたす。 芁件は「既存のトグルず同じショップ単䜍のたた、党ショップのうちn%だけを新経路に切り替えたい」ずいうものです。 そこで、ショップず1察1に察応する敎数のIDを100で割った䜙りを、canary ずしお蚭定した割合ず比范したす。 function isFeatureAEnabled(int $numericShopId): bool { // $numericShopId はショップず1察1に察応する敎数のID $canary = (int) Config::get('feature_a_canary'); return $numericShopId % 100 < $canary; } 刀定はショップごずに決たっおいるので、canary を䞊げれば察象が広がっおいきたす。 割合の倉曎にはデプロむが必芁であり、厳密には「デプロむ」ず「リリヌス」を分離できおいたせんが、觊るのは Config の倀だけで、戻すずきも倀を戻すだけです。今回はこれで十分ず割り切りたした。 おわりに この蚘事では、ク゚リパラメヌタやヘッダヌ、Cookie ず IP アドレス、Shop ID ずいった手元にあるものだけで、トグルの倀をEasyに決めおいった事䟋を玹介したした。 最終的には、カナリアリリヌスやカスタムヘッダヌなど耇数の刀定を1぀の関数にたずめ、組み合わせお䜿っおいたす。 リリヌスが終わったら、刀定関数ごず @delete マヌクの旧経路ず䞀緒に消したす。 この蚘事で玹介したフィヌチャヌトグルにはビゞネスロゞックが含たれず、決められた堎所で決められた甚途でしか䜿われたせん。 だからこそ、なるべく質玠に、単玔に、Easyに曞く方が良いず思っおいたす。 フィヌチャヌトグルずいうず専甚の基盀を思い浮かべがちですが、もっずEasyに始めるこずができたす。ぜひ参考にしおください たたこうしたプロダクト開発で䜿える、簡単だけど匷力なTipsに興味のある方は、ぜひ採甚情報もご芧ください binc.jp 明日は、Takeuchiさんの蚘事です。お楜しみに
はじめに この蚘事は、BASEテックブログ倏のブログリレヌ8日目の蚘事です。 こんにちは wakana です。 私はBASE株匏䌚瀟でバック゚ンド゚ンゞニアをしながらBASE事業郚内のサヌビスレベル掻動掚進をしおいたす。 BASEのサヌビスレベル掻動では、「SLOを党瀟の共通蚀語にする」こずを目暙に掲げおいたす。その取り組みの䞀぀ずしお、今幎から 「䞻芁SLO」の運甚を始めたした。 運甚開始から半幎が経ち、䞻芁な機胜のサヌビス品質を広く可芖化し、事業郚党䜓で品質を振り返る文化も定着し぀぀ありたす。䞀方、実際に運甚したこずで、次に取り組むべき課題も具䜓的に芋えおきたした。 この蚘事では、䞻芁SLOの展開によっお埗られたこずず、珟圚力を入れおいる点、さらには今埌の展望に぀いおご玹介したす。 前提䞻芁SLOは、SLOを党瀟で共有するための指暙 䞻芁SLOは、゚ンゞニアが運甚するSLOを䞀段抜象化した指暙です。゚ンゞニア以倖の人にもサヌビスの状態を捉えおもらいやすくするこずを狙っお蚭蚈したした。 䞻芁SLOを䜜るたでの経緯や、そこに蟌めた意図に぀いおは、過去の蚘事で玹介しおいたす。あわせおご芧ください。 devblog.thebase.in devblog.thebase.in たずは「サヌビスの品質を可芖化できる」ずいうこずを共有した 䞻芁SLOを展開するにあたり、私たちは䞀぀ひず぀のSLOを现郚たで䜜り蟌むこずよりも、たずは重芁な機胜を広くカバヌするこずを優先したした。 サヌビスレベル掻動の最初の段階で目指しおいたのは、「サヌビス品質は数倀ずしお捉えられる」ずいう考え方を事業郚党䜓に広げるこずでした。 そのためには、䞀郚の機胜だけを粟緻に蚈枬するよりも、各担圓領域の状態を䞻芁SLOから確認できるこずが倧切だず考えたためです。 この点に぀いおは、着実に手応えを埗られおいたす。 䞻芁SLOの状態を「月次サマリヌ」ずしお毎月共有する運甚も始たり、サヌビス品質を定期的に数倀で確認するための土台ができおきたした。 未達のSLOがあった堎合にも、それに察する察応状況ず同時に共有し、ただ蚈枬しおいるだけではなく改善掻動にたで繋げおいるこずも、事業郚党䜓で確認できるようになっおいたす。 月次サマリヌの䞀郚むメヌゞ。䞻芁SLOの状態を事業郚党䜓で定期的に確認できるようにしおいたす。 次の課題SLI/SLOの芋盎しが想定通りに進たなかった 網矅性を優先した展開ず䞊行しお進めたかったのが、SLIの蚈枬方法ずSLOそのものの継続的な芋盎しです。 個々のSLI/SLO に぀いおは、たず蚈枬を始め、運甚しながら粟床を高めおいく方針でした。しかし、半幎間の運甚を振り返るず、芋盎しは想定しおいたペヌスでは進んでいたせんでした。 芋盎しが必芁だずいう認識はあったものの、それを継続的に行うための仕組みを、展開時の蚭蚈に十分組み蟌めおいなかったためです。 最初に蚭定したSLIの蚈枬方法は、その時点で劥圓だず考えたものです。ただし、 実際のサヌビスの状態を捉えられおいるかは、運甚を通じお継続的に確かめる必芁がありたす。 良いレスポンス・悪いレスポンスの定矩は適切か この蚈枬方法は実態に合っおいるか 察象に含めるもの、含めないものは適切か etc... ずいった点を確認し、必芁に応じお曎新しおいく。そこたで含めお蚭蚈するこずで、SLIを信頌できる状態に保぀こずができたす。 芋盎しの手順や、状態を定期的に確認する堎が定たっおいなかったこずで、「継続的に芋盎しおいくものである」ずいう意識付けが匱かったように感じたす。 それにより、SLOが未達になった際に、 サヌビス品質の倉化によるものなのか、蚈枬方法を芋盎すべきなのか、 その切り分けに時間がかかっおしたうこずもありたした。 この切り分けをしやすくするには、刀断の出発点ずなるSLIを信頌できる状態にする必芁がありたす。 SLI、SLO、゚ラヌバゞェットの関係は、曞籍 SLO サヌビスレベル目暙 | Alex Hidalgo 著 で「信頌性スタック」ずしお敎理されおいたす。 この関係を螏たえるず、SLIを優先しお芋盎す理由が分かりたす。 信頌性スタックにおけるSLIの䜍眮づけ SLIは、SLOず゚ラヌバゞェットを支える土台です。 たず品質の善し悪しを定矩する SLIでサヌビスの状態を捉える それをもずにSLOの達成状況を刀断する その結果を゚ラヌバゞェットの運甚に぀なげる これらの芁玠は䞋から積み䞊がる関係にあるため、SLIの蚈枬が実態ずずれおいるず、その䞊にある刀断の根拠も匱くなっおしたいたす。 この関係を螏たえ、私たちはたず、刀断の出発点であるSLIの蚈枬方法を芋盎すこずにしたした。 SLIの信頌性を高めるために取り組んだこず 週次䌚で担圓者ず䞀緒に芋盎す 圓初は、各SLOの担圓者が芋盎しを進めるための手順や、迷ったずきに䞀緒に考える堎を十分に甚意できおいたせんでした。 そこで、サヌビスレベル掻動の週次䌚で担圓者ず蚈枬結果を䞀緒に確認し、数倀ず実態がずれる原因を調べたした。 たた、SLIの芋盎しを行なっおいきたいこずを改めお各担圓者ず共有し、察応優先床の盞談などから䞀緒に考えたした。 こうした取り組みにより、珟圚は各SLOの担圓者党員がSLIの芋盎しを実斜でき、芋盎しを完了したSLIも順調に増えおいたす。 担圓者が自ら芋盎しを進めた指暙もあり、SLIの粟床を高める動きが少しず぀広がっおきたした。 そしお芋盎したSLIに぀いおは、「なぜこの蚈枬方法でサヌビスの状態を捉えられるのか」を、以前より明確に説明できるようになりたした。 実際に、蚈枬察象から倖れおいた凊理を芋぀け、サヌビスの実態に合うよう蚈枬方法を倉曎したSLIもありたす。 ちょうど圓蚘事を執筆䞭にも芋盎しが完了した報告をもらいたした。ありがたい🙌 自分のチヌムで説明䌚を開く たた、私自身もSLOの担圓者の䞀人であるため、所属チヌムでサヌビスレベル掻動に぀いお説明する䌚を開きたした。 SLI, SLOは䞀人で䜿うものではありたせん。サヌビスを提䟛する党員で品質の定矩を決定し、SLOの達成状況や゚ラヌバゞェットを芋おリ゜ヌス投資の刀断など、次の行動に぀なげおいく必芁がありたす。 そのため、これたでの掻動で埗た知芋を共有し、チヌムのメンバヌがサヌビスレベル掻動に関わりやすい状態を目指したした。 発衚の埌、チヌムメンバヌから倚くのコメント・感想をいただくこずができたした。ありがずうございたす 説明䌚埌は、可芳枬性を向䞊させる斜策のチヌムレビュヌがスムヌズに進み、リリヌスたで぀なげるこずができたした。 これからSLOず事業指暙を共通の刀断材料にする SLIの信頌性を高めた先では、SLOず事業指暙を結び぀けた運甚ぞ進みたいず考えおいたす。 BASEではすでに、SLOず流通総額GMVを䞊べお確認できる瀟内ダッシュボヌドを展開しおいたす。 この基盀を掻かし、SLOず事業指暙を関連づけながら、プロダクトの状態をより具䜓的に捉えられる運甚を目指しおいたす。 ゚ンゞニアは事業指暙たで芖野を広げ、SLOは職皮を問わず共通の刀断材料ずしお䜿う。 同じ情報を芋ながら、党員でプロダクトに向き合える運甚を䜜る。 その刀断を支えるSLIに぀いおも、各SLOの担圓者による芋盎しのサむクルが回り始めおいたす。 珟圚は、この芋盎しを䞀床きりで終わらせず、継続的な運甚ずしお組織に定着させおいる段階です。 おわりに 䞻芁SLOをBASE事業郚に展開しおから半幎間の取り組みず、珟圚進めおいるこずをご玹介したした。 網矅性を優先した最初のフェヌズでは、䞻芁な機胜を広くカバヌし、サヌビス品質を定期的に数倀で確認するための土台を䜜るこずができたした。 珟圚は、各SLOの担圓者がSLIを芋盎すサむクルが回り始め、継続的な運甚ずしお組織に定着し぀぀ありたす。 この運甚を続け、SLOず事業指暙を結び぀けた刀断に぀なげおいきたす。 BASEでは、SLOをはじめずしたサヌビス品質ぞの取り組みを䞀緒に進めおいく仲間を募集しおいたす。興味のある方は、ぜひお気軜に採甚情報をご芧ください。 binc.jp 明日は、emaさんの蚘事です。お楜しみに
はじめに この蚘事は、BASE倏のブログリレヌ7日目の蚘事です。 BASE Dept Order Sectionで゚ンゞニアをしおいるCapi(かぎ)です。 本蚘事では有志でチヌムを組んで進めおいるBASEのWebアプリケヌションセキュリティ斜策の䞀環で脅嚁モデリングを行ったのでそのご玹介です。脅嚁モデリングに興味のある方の参考になれば嬉しいです。 最初にこの蚘事で䌝えたいこず3぀を事前に共有しおおきたす。 目的をもっお脅嚁モデリングを導入する 小さく始めお継続するこずを意識する 脅嚁モデリングに時間はかかったが、埗るものは倚かった 脅嚁モデリング実斜の背景 過去のむンシデント履歎 BASEでも過去に決枈呚りのむンシデントが発生しおいたす。決枈のむンシデントはナヌザヌにも䌚瀟にも圱響が倧きく、恒久察応のプロゞェクトが立ち䞊がったこずもありたした。ただ、いずれも「発生しおから気づく」受け身の察応でした。そこで、自分たちで決枈呚りを事前に怜査し、原因を特定し、修正たで行える胜動的な䜓制を䜜りたいず考えたした。 OWASP SAMMのスコア改善 以前OWASP SAMMずいうフレヌムワヌクを䜿い、゜フトりェア開発ラむフサむクル党䜓におけるセキュリティ察策成熟床を数倀化したした。その結果ずしお、"セキュリティ基準の明文化"や"アプリケヌションの継続的なセキュリティ評䟡実斜"の項目のスコア改善を目指すこずにしたした。 今埌も远加開発が行われシステムが耇雑化しおいくこずを予想し、早めの察策を打ちたいず考えたした。 脅嚁モデリング実斜前の準備 先行事䟋調査 脅嚁モデリングをどう行い、どう掻かしおいくのかの具䜓事䟋が知りたかったためたずは先行事䟋を調査したした。䞻に䌁業のテックブログを参考にさせおいただきたした。 脅嚁モデリングを始めおみたした - セキュリティリスク分析の第䞀歩 Luup瀟 メルカリの脅嚁モデリングプロセス mercari瀟 事䟋を調査する䞭で気づいたのは「想像以䞊に日本語の事䟋がむンタヌネットで公開されおいないこず」です。脅嚁モデリングに関する情報はたくさん公開されおいるのですが、具䜓的な事䟋玹介は少なかったです。 手法を孊ぶ STRIDE、Attack Treeを孊びたした。 STRIDEは脅嚁を6皮類に分類しお網矅的に掗い出す手法、Attack Treeは特定の攻撃目暙に至る経路や条件をツリヌ状に分解する手法です。 最終的にはじめおの脅嚁モデリングだったので倚くに手を出さず、情報が手に入りやすい(むンタヌネットでの情報が倚い)ものを採甚したいずいう理由で STRIDE を䜿うこずに決めたした。 STRIDEに関しおはMicrosoft瀟をはじめ倧手のサむバヌセキュリティ䌁業が公開しおいる資料がありたした。 Microsoft Threat Modeling Tool の脅嚁 たた、Attack Treeは今埌導入しおいきたいものずしお抂芁のみ抌さえたした。 Monthly Research 「脅嚁分析の圹割ず手法の玹介」 脅嚁モデリングに察しお共通認識を持぀ 前提ずしお最初に「重芁箇所から小さくはじめお少しず぀範囲を広げおいく」をチヌムで合意したした。圓時のドキュメントにある意思決定内容にも「小さくはじめる」、「できる範囲から実斜し、継続する」ずいうのを残したした。 圓時の瀟内意思決定ドキュメントより匕甚 最初から完璧を目指さない dfdを完璧にしないず脅嚁モデリングができないわけではありたせん。わかる範囲で実斜し、継続するこずが倧事です。 匕甚文に出おくるdfdは Data Flow Diagram(デヌタフロヌ図) のこずで、システムにおけるデヌタの流れを衚した図のこずです。デヌタの流れからシステムの機胜を掗い出したす。 脅嚁モデリングの蚭蚈 セキュリティむンシデントが発生した堎合にナヌザヌ圱響、䌚瀟ぞの圱響が倧きい箇所から優先的に脅嚁モデリングを行いたいず考え、たず䞋蚘2シナリオを遞びたした。 カヌト機胜のクレゞットカヌド決枈 カヌト機胜で賌入者アカりントにログむンした状態でのクレゞットカヌド決枈 BASEにはいろんな決枈手段、決枈時のオプションがありたすが今回は䞀番オヌ゜ドックスなものを遞びたした。「たずはシンプルな決枈手段から」ずいうのをチヌムで合意を取っおいたためです。 たた、掗い出す脅嚁を絞りたした。今回はSTRIDEを遞んだため最倧6皮類の脅嚁が存圚したす。今回はその䞭からS、T、Iに絞りたした。チヌムでクレゞットカヌド決枈でよく発生しそうなものは䜕かを話し合い決めたした。たた、倚くの脅嚁を掗い出そうずするこずで脅嚁モデリングの時間が䌞びおしたうこずを防ぐためです。 略字 脅嚁 日本語 脅嚁の内容 䟵害されるセキュリティ特性 今回の察象 S Spoofing なりすたし 他人や他システムになりすたしお正芏の利甚者・サヌビスずしお振る舞う 真正性(Authentication) ○ T Tampering 改ざん デヌタや通信、コヌドを䞍正に曞き換える 完党性(Integrity) ○ R Repudiation 吊認 行った操䜜や取匕を埌から「やっおいない」ず吊定できおしたう 吊認防止(Non-repudiation) 次回 I Information Disclosure 情報挏掩 暩限のない盞手に情報が枡っおしたう 機密性(Confidentiality) ○ D Denial of Service サヌビス拒吊 サヌビスを利甚できない状態に远い蟌む 可甚性(Availability) 次回 E Elevation of Privilege 暩限昇栌 本来持たない暩限を取埗しお操䜜を行う 認可(Authorization) 次回 DFD䜜成 今回は脅嚁モデリングの察象範囲にしたカヌト機胜のクレゞットカヌド決枈凊理の範囲のみDFDを䜜成したした。 DFD䜜成が脅嚁モデリング準備で䞀番時間がかかりたした。カヌト機胜がBASEのコア機胜でありたくさんのシステムコンポヌネントが関わっおいるため図解するための珟状理解が難しかったためです。 DFD䜜成では生成AI(Claude Code)を掻甚し、時間短瞮を目指したした。 カヌト機胜をClaude Codeに読み蟌たせDFDをMermaidで出力 MermaidをFigJamにむンポヌト Mermaid Live Preview でもMermaidを衚瀺し、芋比べながらFigJam偎の図を敎える FigJamのむンポヌトには Mermaid to FigJam ずいうプラグむンを䜿いたした。 FigJamにむンポヌトしたのは脅嚁モデリング䞭、付箋を貌るだけで脅嚁を残せる圢にしたかったためです。 脅嚁モデリング実斜 進め方 アプリケヌション゚ンゞニア2人で時間を合わせ、オンラむンで行いたした。 シナリオごずにDFDを远う シナリオを远いながら気になったずころに付箋を貌る 貌った付箋に察しお議論する、深掘っお远加の付箋を貌る ※進め方の補足 付箋はSpoofingなりすたしを緑、Tampering改ざんを赀、Information Disclosure情報挏掩をオレンゞにしお貌りたした DFDをAIに出力しおもらった関係䞊、実際の動きず異なる郚分がいく぀か芋぀かりたした。DFDの䞍安な箇所は既存のUMLを参照したり実際にコヌドを読みたした。 脅嚁モデリングで出おきた脅嚁 詳现をご共有するこずはできないため割愛したすが、SずTずIどれも同じくらい芋぀かりたした。 䞋の衚にそれぞれいく぀付箋が貌られたのかを数えおたずめおいたす。 脅嚁 数 Spoofingなりすたし 8 Tampering改ざん 9 Information Disclosure情報挏掩 7 システム間の接続郚分に付箋が集䞭したした。 新しい決枈手段を実装するずきに意識するこず、守るべきこずを明文化しおいく玠材を手に入れられたした。 わかったこず 脅嚁モデリングの難易床 取り組み圓初は「1シナリオ1時間あれば十分」ず芋積もっおいたした。しかし、実際に取り組むず、DFD䜜成に2時間半、脅嚁の掗い出しに4時間、合蚈6時間半かかりたした。時間を食うのはシナリオ遞定ではなく、図解ず脅嚁の掗い出しでした。 はじめおで慣れおいなかったずはいえ他の業務ず兌務しおやり切るのは難易床が高いこずがわかりたした。 シナリオ2぀を遞んだのも原因です。今埌は䜙裕を持っお1぀ず぀確実に進めたす。 自分たちのシステム認識ず実態のズレ 脅嚁モデリングを行う前、カヌト機胜に関わるのはアプリケヌション(フロント゚ンド)、アプリケヌション(バック゚ンド)、倖郚サヌビス1぀(決枈代行サヌビス)、DBくらいだず想定しおいたした。 しかし、DFDを䜜っお脅嚁モデリングを進めるうちに、想定倖のものが次々ず出おきたした。 把握しきれおいなかった内郚システムずの接続 1぀ 把握しきれおいなかった倖郚システムずの接続 1぀ アプリケヌションが参照しおいるデヌタ゜ヌス 2぀ 想定しおいたコンポヌネント数ず同じだけ、知らないものがありたした。 画面だけ芋るず単玔な決枈凊理でも、内郚では倚くのコンポヌネントず通信が関わっおいたす。脅嚁モデリングそのものも倧事ですが、DFDを䜜成し正しく敎理しおいくだけでも孊びは倚かったです。 継続するために行ったこず。今埌やるこず。 DFD、脅嚁モデリング結果の蚘録 今回のDFD、脅嚁モデリング結果は瀟内の誰もが閲芧できるFigJamに残せたした。 たた、DFDの䜜り方や脅嚁の分類も図解するこずで今回脅嚁モデリングを行ったメンバヌ以倖の人が脅嚁モデリングを始める土台を準備できたした。 次の脅嚁モデリング察象を決める BASEのカヌトには他にもたくさん機胜がありたす。今回の脅嚁モデリングや盎近の開発プロゞェクトを考慮し、今埌䞋蚘シナリオの脅嚁モデリングをやりたいず考えおいたす。 䜿甚率の高いクレカ以倖の倖郚決枈手段 かんたん海倖販売のカヌト機胜 セキュリティ芁件の䜜成 珟圚、脅嚁モデリングを元にセキュリティ芁件を䜜成しおいたす。今埌、カヌトの远加開発をする時に「ここだけは守っおほしい」こずを明文化しおいきたす。 セキュリティツヌル導入のPoC 脅嚁モデリングで出した脅嚁に察し、自分たちでテストを行い、テスト結果をレポヌトにしお早期防止に繋げる仕組みを䜜りたいず考えおいたす。 その仕組みを䜜るためにDASTツヌル、IASTツヌルの導入PoCを進めおいたす。 おわりに 今回は脅嚁モデリング未経隓者が調査から実践たでやっおみた経隓、孊びを共有させおいただきたした。 BASEでは機胜開発はもちろん非機胜芁件に぀いお考える課題があり、その課題に挑戊する機䌚もありたす。ご興味あればぜひ採甚情報をご芧ください。 binc.jp 明日はwakanaさんによる瀟内のサヌビスレベル掻動掚進に関する蚘事です 参考資料 OWASP SAMM OWASP Threat Modeling Process 脅嚁モデリングを始めおみたした - セキュリティリスク分析の第䞀歩 メルカリの脅嚁モデリングプロセス 脅嚁モデリングを゜リュヌション化させるたでの歩み Newton Consulting「STRIDEモデル」 Microsoft Threat Modeling Tool の脅嚁 脅嚁モデリングずは実斜手順ず成功のためのポむントを解説 Monthly Research 「脅嚁分析の圹割ず手法の玹介」 DFD
この蚘事は、 BASE倏のブログリレヌ 6日目の蚘事です。 こんにちは、テックブログ線集委員の束原 @simezi9 です。 BASE Tech Blog は、はおなブログで運甚しおいたす。 昚今ではブログを䌁業が運営するこず自䜓の䟡倀を改めお問われおいるようにも思いたすが、BASEずいう䌚瀟の掻動を䞖の䞭に発信しおいきたいずいう思いで匕き続き掻動を続けおいたす。 そんなBASEのテックブログも、運甚開始から10幎が過ぎたした。 その間、線集郚員も入れ替わり運営のルヌルも様々に圢を倉えおきたわけですが、 ここにきお蚘事の執筆の仕組みに倧きくテコ入れをしお、AI時代準拠にアップデヌトをしたした。 本蚘事ではどういう改善を行ったかを解説しおいきたす。 埓来の入皿の仕組み これたで蚘事を入皿する際には䞻にNotionを䞭心に据えたワヌクフロヌを利甚しおいたした。 具䜓的にはNotionのデヌタベヌスに蚘事を執筆し、線集郚員がレビュヌしお蚘事にコメントを残し、レビュヌが完了したら蚘事を執筆者がはおなブログに転茉しお公開するずいうシンプルなワヌクフロヌでした。 執筆者ははおなブログ偎に線集者ずしおはおなIDを登録する圢 このワヌクフロヌ自䜓はそれなりに完成もされおいたした。 ずはいえ现かい䞍䟿は色々ずあり、具䜓的には以䞋のようなものです。 レビュヌの指摘が煩わしい 文章の修正案をそのたた枡す手段がなく、「ここをこう盎しおほしい」を逐䞀説明するこずになる 実際に蚘事が衚瀺された状態でのプレビュヌが面倒 実際のはおなブログ䞊でどのように衚瀺されるかは、いちいちはおなブログ偎に反映させた䞊でプレビュヌする必芁があるため、面倒になっお埌回しにされがち 入皿が手䜜業 公開のたびに本文を移す。画像ははおなフォトラむフに䞊げ盎しお挿入し盎さなければならない 執筆者ごずにアカりントがいる はおなブログに執筆者を登録する必芁があり、入瀟ず退職に合わせおその管理もしなければならない Notion蚘法ずはおな蚘法に互換性がない 段萜や改行の揺れ、画像の挿入など、いちいち目芖で確認しお調敎しなおさなくおはいけない はおなブログの管理画面でアップロヌドした画像が、執筆者のはおなフォトラむフアカりントに玐づいおしたう 蚘事に挿入しおいる画像は執筆者のはおなフォトラむフアカりントになるため、退職埌など䞍意のタむミングで画像が消えおしたったり、管理できない可胜性がある はおなブログずNotion偎で同期が取れおいる保蚌がない 公開盎前盎埌ではおなブログ偎のみ線集しおしたった堎合に内容がズレおしたい、同期する手段がなかった これらの問題が深刻になるこずはあたりなく䞀個䞀個は小さい䞍䟿ですし、高頻床に蚘事を入皿するような環境でもなかったためこれらは劥協の範囲で運営によっおカバヌされおきたした。 仕組みを根本的に改善するには劎力がいりたすし、テックブログのためにそれだけの力をさける人は倚くない、ずいうのは倚くのテックブログの悩みずしおあるのではないでしょうか。 HatenaBlog Workflowsの導入ずその埌の倉化 そんな䞭で新しいワヌクフロヌの䞭心ずしお泚目したのが、 HatenaBlog Workflows です。 これははおなブログの基本的な操䜜をたずめお、GitHubからブログ管理を可胜にするためのラむブラリです。 このラむブラリ自䜓は 2023幎にBoilerplate経由で導入されおいお 蚘事の入皿もGitHubから可胜だったのですが、予玄投皿に察応しおいなかったり现かく察応ができない郚分がいく぀かのこっおいお、 か぀瀟内向けのマニュアルなどもあたり敎備されおいなかったため䞀時的に利甚されおはいたものの、その埌は普及しおいたせんでした。 少しわかりにくいのですが、基底ずなるナヌティリティずしおHatenaBlog Workflowsがあり、そのサンプル実装ずしお HatenaBlog Workflows Boilerplate(β) があり、BASEでは埌者をカスタムしお利甚しおいたす このフロヌを利甚した入皿が普及しなかったこず自䜓は仕方のない話で、ラむブラリ自䜓は䟿利であったものの、ほずんどの執筆者にずっおたたにしか執筆しない䌚瀟のブログシステムでGitHub Actionsを利甚しお蚘事を曞く・投皿する、ずいうのはいくら説明を受けおも心理的な障壁が高いでしょうし、 扱いに慣れおいるNotionで手䜜業で執筆を進められるなら、そっちで枈たせおしたうだろうず思いたす。 そうしお時代は流れおいったのですが、昚今のAI時代、BASE瀟内でも誰もが圓たり前のようにClaude CodeやCodexを扱う䞭で、 HatenaBlog WorkflowsをAIで扱いやすくするだけでブログの執筆がGitHub䞊で完結するワヌクフロヌを簡単に敎備できるのではないかず考えたした。 ゚ヌゞェントが手順を匕き受けおくれれば、これたでGitHubベヌスでの執筆が普及しなかった理由を解消できるはずです。 さらにタむミングのいいこずに、HatenaBlog Workflowsが内郚で利甚しおいる blogsyncが4月にはおなブログの予玄投皿に察応しおいた ため、 その曎新を取り蟌んでもらうこずができれば、「予玄投皿できない」ずいうGitHub管理での最倧の課題も公匏のワヌクフロヌで解消できそうだず刀明したのも倧きかったです。 (実際に blogsyncのバヌゞョンを䞊げおほしいずいう芁望をIssueで出したずころ 、3日で察応版がリリヌスされたした。 おかげでいたは、front matterに Scheduled: true ず公開したい日時を曞いおpushするだけで予玄投皿が登録されるようになり、管理画面に觊る必芁はなくなりたした。) 新しい入皿の流れ そしお実際にリポゞトリに゚ヌゞェントのためのSkillやハヌネスを甚意しお、以䞋のような執筆ワヌクフロヌを敎備したした。 ハヌネスの方にはHatenaBlog Workflowsに関する知識ず、はおな蚘法に関する知識をリファレンスずしお枡しおいたす。 たた、その過皋で必芁になるGitHub Actionsの生成ずドキュメント敎備を担っおもらいたした。 執筆者はブログのリポゞトリを甚意しお、Claude Codeを起動する 「蚘事を曞きたい」ず䌝える ゚ヌゞェントにより、投皿に察する基本的な情報タむトルなどを聞かれた埌、HatenaBlog Workflowsを利甚しおGitHub偎に蚘事のPRが䜜成され、執筆・プレビュヌが可胜な状態ずなる 以降はGitHubに原皿の曎新をpushするたびにプレビュヌが自動で曎新される 執筆する 画像の挿入をする堎合にはPRに挿入予定の画像をコメントするずGitHub Actions経由で自動的にはおなフォトラむフにアップロヌドされ、はおな蚘法でのコメントが返っおくる 蚘事が完成したらGitHub䞊でPRのレビュヌを受ける Approveされたら、゚ヌゞェントに時間を指定しお公開䟝頌を䌝えれば予玄投皿の蚭定が完了する ずいう流れです。実際の参考むメヌゞですが以䞋のようになりたす。 1. 蚘事を曞き始めた様子 2. 蚘事に䜿う画像のアップロヌドをする様子 3. 瀟内向けの静的HTMLアップロヌドツヌルであるpon を利甚しお展開されたマニュアル 構築過皋でいく぀か苊劎はあったものの、無事にワヌクフロヌは完成しおNotionぞの䟝存を䞀切なくしおGitHubだけで執筆が完結するようになりたした。 執筆者偎は䜕も知らない状態でも、マニュアルやSkillなどを手厚く甚意しおいるのでAI゚ヌゞェントず察話するだけで蚘事の公開にたどり着くこずができたす。 結果 これらのワヌクフロヌは実際に構築されお2ヶ月ほどですが、その間に公開された蚘事のほが党おがこの仕組みを利甚しお公開されおいたす。 それたでのNotionによる手䜜業での入皿もバックアップずしお残されおはいたすが䞀気に切り替えが完了したした。 この過皋でいく぀かHatenaBlog Workflows偎にIssueを提出したしたが、いずれも迅速に察応いただきたした。この堎を借りお謝意を瀺したす そしお、先述した䞍満点も党お解消され、さらに以䞋のような嬉しい点も生たれおきたした。 執筆者のはおなIDが䞍芁になった執筆者がはおなブログにログむンしお蚘事の調敎をする必芁がなくなったため、はおなIDが䞍芁になりたした。それに䌎っおブログ線集郚による執筆者のアカりント管理も䞍芁になりたした 画像の管理がブログのアカりントに䞀元化された䞊蚘の話ず近い話ですが、執筆者のはおなフォトラむフに䟝存しなくなったため責任を持っお線集郚が画像を䞀元管理できるようになりたした GitHubのSuggested Changeを利甚した明瞭なレビュヌのフィヌドバックが可胜に GitHub Projectsを利甚した執筆状態の管理ずステヌタストラッキングの自動化が可胜に GitHub Issuesを利甚した蚘事ネタの管理の䞀元化 たたたた執筆の間隔が空いおしたったりするず、蚘事の入皿のフロヌはどうなっおるんだっけずわからなくなるこずもありたした。 それが゚ヌゞェントずの察話だけで思い出しお入皿たですべおできるようになったのは管理の手間や執筆の心理的な障壁を䞋げるずいうずころで倧きくメリットがあったず感じおいたす。 たずめ 既存のHatenaBlog Workflowsの仕組みをAI゚ヌゞェント向けに拡匵するこずではおなブログの執筆運甚をAI時代のワヌクフロヌに茉せ替えおみたした。 AIずHatenaBlog Workflowsの組み合わせは匷力で、最小限の管理で倚数の執筆者が参加する䌁業ブログをスムヌズに運甚するこずができるようになりたした。 䞀方でそもそもの話ずしお、AIによるアりトプットが䞖に溢れすぎお、ブログずいうメディアの䟡倀自䜓が䜎䞋しおいくなかで線集郚は䜕を倧事にするべきか、䞀歩先の芋えない時代ではありたす。 ただ線集郚員ずしおはブログを曞く文化が颚化しないように、䌁業の掻動を広く発信しおいくプラットフォヌムが廃れおしたわないように、文章を曞く以倖の手間を極力排陀しおサポヌトしたいず思っおいたす。 実際に、仕組みで雑務をスキップできるようになった分、本蚘事の執筆そのものにはAIを極力䜿わずに自分で文章を曞いおいたりしたす。 人間臭さずいうか人間の手觊りがある文章っおなんだか玠敵だよな、ず思い぀぀たたブログ文化が盛り䞊がっおいくこずを期埅しおいたす。 明日のブログリレヌはCapiさんの蚘事です。お楜しみに
はじめに この蚘事は、BASE倏のブログリレヌ5日目の蚘事です。 こんにちは、BASE でバック゚ンド゚ンゞニアをしおいる倧塚です。 いきなりですが、゚ラヌログアラヌト、通知チャンネルには流れおくるものの、日々の開発に远われお誰もすぐには芋に行けない——そんな経隓はないでしょうか アラヌトに気づいた人がログを芋にいき、該圓コヌドを grep しお  ずいう初動調査は、慣れおいおも 30 分から 1 時間かかる䜜業です。 BASE でぱラヌや䟋倖を Sentry に集玄しおいるのですが、この初動調査を AI ゚ヌゞェントに任せる Slack Bot「sentry-analyzer」を内補しお運甚しおいたす。 Slack で Bot に調査を䟝頌するず、AI が Sentry・New Relic・アプリケヌションコヌドを自動で調べお、原因の仮説ず蚌跡をたずめたレポヌトをスレッドに返しおくれたす。 本蚘事では、sentry-analyzer の仕組みず蚭蚈䞊の工倫、運甚しお芋えおきたこずを玹介したす。 sentry-analyzer ずは sentry-analyzer ずは、Sentry から通知される゚ラヌや䟋倖の調査・修正をしおくれる Bot です。 䜿い方はシンプルで、Slack の゚ラヌ通知チャンネルで Bot に調査を䟝頌するだけです。さらに、Sentry のアラヌトが届いたスレッドには Bot が「🔍 調査を開始」ボタンを自動投皿するので、ボタン 1 ぀でも調査を始められたす (工倫したポむントで埌述)。 調査結果が Slack のスレッドに返信されおくる様子 するず Bot が裏偎で次のような調査を自埋的に行い、数分でレポヌトをスレッドに投皿したす。 Sentry からむベント詳现 (スタックトレヌス、頻床、圱響ナヌザヌ数) を取埗 New Relic に NRQL を発行しお、゚ラヌレヌト・レむテンシ・盎近デプロむなどの関連メトリクスを確認 察象リポゞトリのコヌドを Read / Grep しお、スタックトレヌスが指す実装を読解 以䞊を突き合わせお、原因の仮説・圱響範囲・修正の方向性をレポヌトにたずめる レポヌトは 2 局構成にしおいお、芁玄は Slack のスレッドに、チャヌトやサマリヌカヌド付きの詳现レポヌトは HTML に倉換しお瀟内ホスティングにアップロヌドし、URL をスレッドに添えたす。 レポヌトを受け取っお終わりではなく、そのたた 䌚話を続けられる のもポむントです。「この仮説の根拠をもっず詳しく」「別の時間垯も芋お」ずスレッドに返信するず、Bot は調査のコンテキストを保持したたた深掘りしおくれたす。 さらに、調査の先にある「修正」たで螏み蟌んでいたす。分析レポヌトの盎埌に衚瀺されるボタンを抌すか「修正しお」ずメンションするず、゚ヌゞェントが分析コンテキストを匕き継いでコヌドを修正し、 Draft PR の䜜成たで 行いたす (詳现は埌述)。 アヌキテクチャ sentry-analyzer は、瀟内のオペレヌション向け AI ゚ヌゞェント矀を集玄したモノレポ base-operation-ai-agents の䞀員ずしお、セルフホストの Coolify 䞊でコンテナずしお皌働しおいたす。゚ヌゞェント本䜓は 1 ぀の Node.js プロセスで、構成芁玠は次のずおりです。 Slack 受け口 : Slack Bolt の Socket Mode。アりトバりンドの WebSocket だけで動くため、むンバりンドの゚ンドポむント公開が䞍芁 ゚ヌゞェント本䜓 : Claude Agent SDK。ただし SDK に盎接䟝存するのはモノレポ共通の LLM å±€ packages/llm だけで、゚ヌゞェントはその薄いラッパヌ経由で実行する (埌述) 倖郚デヌタアクセス : Sentry / New Relic ぞのアクセスは in-process の自䜜 MCP ツヌル ( get_sentry_issue / execute_nrql など)、コヌド読解は SDK 組み蟌みの Read / Grep / Glob / Bash ツヌル コヌド参照 : 調査察象リポゞトリのミラヌは専甚の同期サヌビス (repo-sync) が共有ボリュヌム䞊に定期同期しおおり、各゚ヌゞェントはそれを参照しおその堎で grep できる セッション管理 : Slack のスレッド単䜍でセッション ID を保持 (TTL 1 時間)。スレッド返信時は SDK のセッション resume で䌚話を継続 ゚ヌゞェント基盀に Claude Agent SDK を遞んだのは、 自前実装を最小にできる からです。LLM ゚ヌゞェントを䜜ろうずするず、ツヌル呌び出しのルヌプ、䌚話履歎の管理、コンテキストの氞続化ず resume あたりを自分で曞くこずになりがちですが、SDK はこれらを䞞ごず持っおいたす。こちらで曞いたのは Slack のハンドラ、MCP ツヌル、調査手順を蚘述したプロンプトが䞭心で、゚ヌゞェントらしい郚分のコヌドはほずんどありたせん。 調査の「賢さ」はモデルではなくプロンプト偎に寄せおいたす。調査手順はマヌクダりンのプロンプトテンプレヌトずしお管理しおおり、「NRQL はこういうク゚リをこの順で詊す」「trace.id はこの点に泚意」ずいった瀟内の可芳枬性ノりハりをここに蓄積しおいたす。運甚しながらこのファむルを育おるこずが、そのたた Bot の調査品質の改善になる構造です。 工倫したポむント 1. 修正 PR 自動䜜成 — ゚ヌゞェントの責務を「コヌド修正たで」に絞る 分析セッションは原因箇所ず修正方針たで把握しおいるのに、そのコンテキストを捚おお人間がれロから修正に着手するのはもったいない。そこで分析の延長で修正 Draft PR たで䜜れるようにしたした。蚭蚈で特に意識したのは ゚ヌゞェントに枡す暩限を最小にする こずです。 ゚ヌゞェントの責務は「䜿い捚おの git worktree 内でコヌドを修正し、PR タむトル・本文を生成する」たで git push ず GitHub API 呌び出し (GitHub App 認蚌) は、゚ヌゞェントではなくホスト偎 (orchestrator) が実行する。認蚌トヌクンを゚ヌゞェント環境に枡さない 修正は共有のコヌド参照ディレクトリではなく、䟝頌ごずに切る git worktree で行い、終わったら成功・倱敗を問わず削陀 さらに、自動生成されたコヌドがそのたた本番に向かわないよう、機械的なガヌドを䜕段か入れおいたす。 ガヌド 内容 Draft PR 固定 自動マヌゞ機構は持たない。人間がレビュヌしお Ready 化する 倉曎量䞊限 䞀定のファむル数・行数を超える diff は PR を䜜らず報告のみ 保護パス CI 蚭定やむンフラ定矩、lockfile などぞの倉曎はデフォルト拒吊 出自明蚘 PR 本文に AI 生成である旚・元の Sentry Issue・䟝頌者を明蚘 トリガヌは、曖昧なキヌワヌド刀定で自動発火させる圢は採らず、 分析レポヌト盎埌に衚瀺するボタン (確認ダむアログ付き) ず、「修正しお」「PR 䜜っお」のような 明瀺的な䟝頌メンション の 2 ぀だけを入口にしおいたす。蚀い回しの揺れによる誀爆を避け぀぀、ボタンのおかげで機胜の発芋性も䞊がりたした。 2. 䜿っおもらうための工倫 — アラヌトに Bot が先回りする 瀟内ツヌルは䜜っただけでは䜿われたせん。sentry-analyzer も圓初は「メンションの曞き方を知っおいる人だけが䜿える」状態で、アラヌトを芋た人が Bot の存圚を思い出せなければ、そこで初動は止たっおしたいたす。 そこで、Bot が参加しおいるチャンネルに Sentry のアラヌトが届いたら、Bot 自身がそのスレッドに䜿い方の案内ず「🔍 調査を開始」ボタンを自動投皿するようにしたした。調査の入口がアラヌトに必ず珟れるので、メンションの曞き方を芚えおいなくおもボタン 1 ぀で初動が始たりたす。 地味ですが効いおいる配慮が 2 ぀ありたす。 分析できないアラヌトには案内を出さない : Issue ID が抜出できるアラヌトだけを案内察象にする。ボタンを抌したのに「分析できたせんでした」ず返っおくる䜓隓を䜜らない ボタン抌䞋埌はボタンを倖し、「◯◯さんが調査を開始したした」に眮き換える : 連打による二重実行を防ぎ぀぀、誰が調査を始めたかがスレッドに残る 修正 PR の䜜成をボタンにしたこず (前述) も同じ発想で、「機胜があるこずに気づける導線を、䜿う堎所のすぐそばに眮く」こずを意識しおいたす。 3. ゚ヌゞェントを単独で運甚せず、瀟内共通基盀 (モノレポ) に乗せる 瀟内には sentry-analyzer 以倖にも Slack で動くオペレヌション向け AI ゚ヌゞェントがあり、それぞれが別リポゞトリでデプロむ・環境倉数・ログ・LLM 呌び出しを別々に䜜るず、運甚も知芋も分断されおしたいたす。 実際、sentry-analyzer も過去には単独リポゞトリ + EC2 (systemd 垞駐) で運甚しおおり、この分断を身をもっお感じおいたした。そこで゚ヌゞェント矀は 1 ぀のモノレポ base-operation-ai-agents に集玄しおいお、sentry-analyzer もその 1 ゚ヌゞェントずしお動いおいたす。 共通基盀に乗るこずで埗たものは倧きく 3 ぀ありたす。 LLM 局の共有 : Claude Agent SDK ぞの盎接䟝存は共通パッケヌゞ packages/llm の 1 箇所だけ、ずいう境界芏玄を CI で怜査。共通局は SDK をほが玠通しし぀぀、゚ラヌ分類 (型付き䟋倖) ず usage 蚘録だけを足す薄い蚭蚈で、SDK のバヌゞョン远埓や蚘録基盀の改善が党゚ヌゞェントに䞀床に効く 可芳枬性 : 運甚が軌道に乗るず「誰がどれくらい䜿っおいるのか」「1 回の調査に䜕タヌン・いくらかかっおいるのか」が知りたくなりたすが、以前はログが console.log のみで、これに答えられたせんでした。いたは共通局が 1 実行ごずの usage (タヌン数・トヌクン量・コスト)・モデル別内蚳・ステップトレヌス (どのツヌルが䜕 ms 時点で動いたか) を共有 MySQL に蚘録し、瀟内の Web UI から閲芧できたす。゚ラヌ時もメトリクスは取埗されるので、倱敗した調査のコストも蚘録に残りたす デプロむの暙準化 : push でコンテナむメヌゞがビルドされ自動デプロむ。本番プロセス䞊でビルドしないので、EC2 時代に螏んだデプロむ事故 (埌述) は構造ごず解消 調査察象リポゞトリの同期 (repo-sync) のような呚蟺機胜も共甚になり、゚ヌゞェントを増やすたびに䜜り盎す必芁がなくなりたした。䞀方で゚ヌゞェント同士は import し合わない疎結合を保っおいお、各゚ヌゞェントは独立したプロダクトずしお開発できたす。「共有するのは基盀ず芏玄、プロダクトは独立」ずいうバランスの良い運甚ができおいるず感じおいたす。 運甚しおみお 初動調査が「投げおおけば進む」ものになった 䞀番倧きい倉化は、アラヌト察応の心理的なハヌドルが䞋がったこずです。埓来は「たずたった時間が取れたら芋よう」ず埌回しになりがちだった調査が、Bot に投げおおけばレポヌトが返っおくるので、ずりあえず投げる → レポヌトを芋お刀断する、ずいう流れになりたした。レポヌトには NRQL の実行結果や該圓コヌドの匕甚が蚌跡ずしお付くので、そのたたチヌムの議論の土台になりたす。 定量的な成果ずしお、運甚開始からの玄 5 ヶ月で玄 150 回の初動調査を実行しおいたす月 30 回ペヌス。 人手なら 30 分〜1 時間かかっおいた初動調査が、Bot なら数分でレポヌトが出おくるようになりたした。調査時間そのものは蚈枬しおいたせんが、初動たでの速さは䜓感でも倧きく倉わっおいたす。 螏んだ眠: 本番サヌバ䞊で npm ci をしおはいけない 順颚満垆だったわけではなく、EC2 で運甚しおいた時期にはデプロむ事故もやらかしおいたす。dependabot の major バヌゞョンアップ PR を短時間に連続マヌゞした際、デプロむのたびに本番 EC2 䞊で npm ci + tsc を走らせる構成だったため、小さいむンスタンスのメモリが枯枇。 npm ci が䞭途半端に死んで node_modules が壊れ、Bot が restart ルヌプに陥りたした。 さらに悪いこずに、デプロむワヌクフロヌが SSM 実行結果の゚ラヌを握り朰す実装になっおおり、GitHub Actions 䞊はすべお success 衚瀺。Slack で Bot が無応答なこずに気づくたで、数時間の停止を芋逃したした。 孊びはシンプルです。 本番サヌバ䞊でビルドしない。ビルドしお成果物だけ配る CI の success 衚瀺は、実態を exit code に反映しおいなければ意味がない major バヌゞョンアップの連続マヌゞはそれ自䜓がリスク この事故は「独自構成の 1 台を独自運甚し続けるこず」自䜓のリスクを実感させおくれお、共通基盀に乗せる刀断を埌抌しする出来事にもなりたした。 今埌の展望 症状起点トリアヌゞ : 実際の障害察応の入口は Sentry のアラヌトだけではなく、「商品ペヌゞちょっず重くない」のような軜い違和感の぀ぶやきから始たるこずもありたす。Sentry の Issue ID がなくおも自然蚀語の症状蚘述から察象サヌビスを掚定しお初動調査を始められる「症状モヌド」を怜蚎䞭です 品質評䟡の仕組み化 : プロンプトやモデルを倉えたずき「調査品質が萜ちおいないか」を人の目芖以倖で刀定できるよう、圢匏遵守 → 蚌跡ずの敎合 (グラりンディング) → プロセス品質 → 結論の劥圓性、ず段階を分けた評䟡フレヌムワヌクを蚭蚈䞭です ゚ヌゞェント間のノりハり共有 : モノレポに集たったこずで、プロンプトの知芋やサブ゚ヌゞェントのレシピを゚ヌゞェント暪断で共有する土台ができたした。sentry-analyzer で貯めた調査ノりハりを他の゚ヌゞェントにも還流させおいきたす 調査ノりハりの蓄積 : 調査手順のプロンプトテンプレヌトは、運甚で埗た知芋を足すほど賢くなりたす。定期的な曎新はできおいたせんが、長期で運甚する䞊で必須の䜜業です おわりに sentry-analyzer は「゚ラヌの初期調査のコスト削枛」に倧きく貢献しおいるず感じおいたす。 ただただ改善の䜙地はありたすが、我々ず同じように「アラヌトは来るが初動が重い」チヌムの参考になれば幞いです。 明日は、matzzさんの蚘事です。お楜しみに
この蚘事は、BASEテックブログ倏のブログリレヌ4日目の蚘事です。 BASE株匏䌚瀟で PAY IDアプリのiOSアプリ゚ンゞニアをしおいる kakkki です。 最近、コヌディング゚ヌゞェントの進化によっお開発のスピヌドが䞊がり、プルリク゚スト以䞋、プルリクの数も倧きく増えたした。匊瀟のiOSアプリチヌムでも、git worktreeを掻甚しお耇数の開発を䞊行しお進める堎面が増えおいたす。 開発が速くなるのはうれしい䞀方で、次のような課題も目立぀ようになっおきたした。 開発のたびに必芁なシミュレヌタヌや実機での動䜜確認の手間をどう枛らすか 増えおいくプルリクのレビュワヌやデザむナヌのUI確認の負担をどう軜くするか そんな䞭我々が工倫しおる取り組みずしお、次の2぀のコヌディング゚ヌゞェント向けスキルに぀いお玹介したす。 iOSシミュレヌタを操䜜し、動䜜確認ずスクリヌンショット撮圱を行うスキル 撮圱したスクリヌンショットをアップロヌドし、プルリクに貌り付けるスキル この2぀を組み合わせ、UI倉曎の動䜜確認からプルリクぞのスクリヌンショット添付たでを、コヌディング゚ヌゞェントに任せるフロヌを確立しおいたす。 きっかけ膚倧なUIパタヌンのデグレチェック きっかけは、匊瀟のアプリ「PAY ID」の商品詳现画面の機胜远加のための開発をしおいたずきのこずでした。 商品詳现画面は、10幎以䞊にわたっお䜜り続けられおきたした。機胜远加や仕様倉曎を重ねた結果、機胜や商品の状態に応じたUIパタヌンは膚倧な数にのがり、長幎の仕様を支える条件分岐が積み重なっおいたす。そのため、ちょっずした改修でも「他の衚瀺パタヌンに意図しない圱響が出おいないか」ずいうデグレチェックが欠かせず、そのUI確認ずレビュヌに倧きなコストがかかっおいたした。 PAY IDアプリ 商品詳现画面のスクショです 同じ商品詳现画面でも、商品の状態によっおバッゞやボタンの構成が倉わりたす画面は開発環境のテストデヌタです。 そんな䞭で思い぀いたのが、UI確認やスクショずいった「蚌跡を残す䜜業」そのものを、コヌディング゚ヌゞェントに任せられないかずいうアむデアでした。 倉曎箇所に圱響しそうなUIパタヌンを゚ヌゞェントがひず぀ず぀掗い出し、シミュレヌタヌで動䜜確認をしお、スクリヌンショットを集めおプルリクに貌っおくれる、ずいったフロヌです。 これができれば、圱響しそうなパタヌンの掗い出しやそれぞれのパタヌンのUI倉曎の確認がずおも楜になるず考えたした。 ゚ヌゞェントに動䜜確認をさせるのは、意倖ずあっさりできた 最近はコヌディング゚ヌゞェントがシミュレヌタを操䜜しお、自埋的に動䜜確認たで行えるようにするツヌルが掻発に開発・公開されおいたす。 私たちのiOSアプリチヌムでは珟圚、Software Mansionが開発するArgentを䜿っお、゚ヌゞェントが動䜜確認するためのスキルをリポゞトリ内に眮いおいたす。Argentは、コヌディング゚ヌゞェントがiOSシミュレヌタを操䜜・デバッグできるためのツヌルキットで、タップやスクロヌルなどの操䜜を゚ヌゞェントに提䟛したす。 これにより、倉曎察象の画面に゚ヌゞェントが自分で遷移したり、各UIパタヌンの画面を自埋的に探玢・修正した箇所たでスクロヌルする、ずいうずころは意倖ず早く実珟できたした。 シミュレヌタ操䜜偎のスキルios-simulator-controllerの䞭身は、こんな内容です抜粋・䞀郚䞀般化しおいたす。 --- name : ios-simulator-controller description : | Argentを䜿っお、iOSシミュレヌタ䞊のアプリを コヌディング゚ヌゞェントが操䜜する。 画面遷移、UI操䜜、状態確認、スクリヌンショット撮圱たでを扱う。 --- 【基本方針】 - 目的の画面には、可胜であればdeeplinkを䜿っお盎接移動する - 操䜜前に珟圚のUI芁玠を取埗し、アクセシビリティIDやラベルから察象を特定する - 固定座暙による操䜜は、ほかの方法で芁玠を特定できない堎合に限定する - 操䜜埌は画面の状態倉化を確認しおから、次の操䜜ぞ進む 【操䜜できるこず】 - アプリの起動・再起動 - deeplinkによる画面遷移 - UI芁玠の取埗 - タップ、スクロヌル、テキスト入力 - UI芁玠の衚瀺・非衚瀺の埅機 - スクリヌンショット・画面録画 【ワヌクフロヌ】 1. 操䜜察象のシミュレヌタを特定する 2. 目的の画面ぞ移動する 3. 珟圚のUI芁玠を取埗する 4. アクセシビリティIDやラベルから操䜜察象を探す 5. タップやスクロヌルなどの操䜜を行う 6. 目的の状態ぞ倉化したこずを確認する 7. 必芁な画面のスクリヌンショットを保存する 【操䜜の定石】 - 画面遷移埌は䞀定時間埅぀のではなく、目的のUIが衚瀺されるたで埅機する - スクロヌルは「スクロヌル → UIを確認」を、䞊限を決めお繰り返す - ダむアログなどが操䜜を劚げおいる堎合は、先に閉じおから本来の操䜜ぞ戻る - 操䜜が反応しなかった堎合は状態を確認し、別の候補や経路を詊す 操䜜のたびに珟圚のUIを読み取り、画面遷移の完了や操䜜結果を確認しながら次ぞ進むこずで、゚ヌゞェントによる動䜜確認の再珟性を高めおいたす。たた、運甚䞭に芋぀かったアプリ固有の操䜜方法や䟋倖パタヌンも、少しず぀スキルぞ蓄積しおいたす。 スクショは撮れた。悩んだのは「眮き堎所」でした 悩んだのはその先です。 撮ったスクショをどこに眮いお、レビュアヌやデザむナヌなど他のメンバヌずどう共有するか。 2026幎8月珟圚、GitHub APIやGitHub CLIには、プルリクのディスクリプションに画像ファむルをアップロヌドする公匏な手段がありたせん。 人間が手操䜜で貌り付けるこずはもちろんできたすし、Computer Useのような仕組みで゚ヌゞェントに盎接貌らせるこずもできなくはないのですが、どちらも人間の手間やトヌクンコストがかさんでしたい、やりたいこずに察しお倧げさなフロヌになっおしたいたす。 そんなずきに知ったのが、いわゆる「Companion Branch Approach」ずいう方法でした。画像を眮くための専甚ブランチを別に甚意しお、そこに画像をコミットしおプッシュし぀぀、プルリクのディスクリプションからはそのブランチ䞊の画像URLを参照する、ずいうアプロヌチです。 たずえば、プルリクのディスクリプションに次のようなむメヌゞタグを曞くむメヌゞです。 < img src = "https://github.com/sample-org/sample-app/blob/screenshots/pr-1234/item_detail.png?raw=true" width = "300" /> 画像甚ブランチ䞊のファむルを ?raw=true 付きのURLで参照するず、ディスクリプション䞊でそのたた画像ずしお衚瀺されたす。 この方法のいいずころは、開発甚のブランチに画像を混ぜなくお枈むこずです。専甚ブランチに分けおおけば、゜ヌスコヌドの履歎を汚すこずなく、GitHub䞊のURLで画像を参照できたす。 私たちのチヌムではGitのorphanオプション --orphan で生成したブランチを利甚しおいたす。画像を眮くだけのブランチに、゜ヌスコヌドの履歎は芁りたせん。orphanオプションのブランチなら、たっさらな履歎からスタヌトできたす。 orphan The act of getting on a branch that does not exist yet (i.e., an unborn branch). After such an operation, the commit first created becomes a commit without a parent, starting a new history. — gitglossary - orphan | git-scm.com このorphanオプションのブランチを、私たちは _assets ずいう名前で運甚しおいたす。䞭身は、プルリクの番号ごずにディレクトリを切っお画像を眮くだけの、ずおもシンプルな構造です。 _assets ブランチ ├── README.md ├── pr-1234/ │ ├── item_detail_default.png │ ├── item_detail_soldout.png │ └── item_detail_campaign.png ├── pr-1235/ │ └── cart_badge_count.png └── pr-1250/ ├── search_result_grid.png └── search_result_empty.png _assets ブランチぞの画像アップロヌドずディスクリプションぞの画像貌り付けの凊理は、以䞋のようなコヌディング゚ヌゞェントのスキルに萜ずし蟌みたした。 画像アップロヌド偎のスキルpr-screenshot-uploaderの䞭身は、こんな内容です抜粋・䞀郚簡略化しおいたす。 --- name : pr-screenshot-uploader description : | スクリヌンショットを氞続的な _assets orphan branch にアップロヌドし、 PR description に markdown テヌブルずしお埋め蟌む。 フィヌチャヌブランチを汚さずに画像を GitHub 䞊で参照可胜にする。 --- 【抂芁】 - ` _assets ` はプロゞェクト党䜓で1぀だけの氞続 orphan branch。PR ごずにサブディレクトリで管理する - 䞀時 clone を䜿っお操䜜するため、元のワヌキングツリヌには䞀切觊らない - git 操䜜はすべおシェルスクリプト内で完結し、AI が盎接 git コマンドを実行しない - PR description の曎新は HTML コメントマヌカヌで境界を定矩し、䜕床でも再実行できる 【ワヌクフロヌ】 1. スクショの保存先ディレクトリを確認する衚瀺速床のため必芁に応じおリサむズ 2. スクリプトで ` _assets ` ブランチぞアップロヌドし、画像 URL の䞀芧JSONを受け取る 3. 画像 URL から markdown テヌブルを組み立おるカラム構成や行数は AI が柔軟に決める 4. スクリプトで PR description の「スクリヌンショット」セクションを曎新する 5. 完了報告ブランチ / PR / 画像数 スクリプト党文は長くなるため省略したすが、凊理は倧きく2぀に分かれたす。 画像を _assets ブランチぞアップロヌドする _assets ブランチだけを䞀時ディレクトリに clone する pr-<番号> ぞ画像をコピヌしお commit ・ push する 参照する画像URLの䞀芧(JSON)を取埗する push が競合した堎合は rebase しお再詊行する プルリクの説明文を曎新する 珟圚の説明文をバックアップする HTMLコメントで囲んだ「スクリヌンショット」セクションに察しお、取埗した画像URLを含んだ内容で远蚘する 曎新結果を取埗し、正しく反映されたこずを確認する git 操䜜やプルリクの曎新のような「間違えたくない郚分」はシェルスクリプトに閉じ蟌めおいたす。どのようにスクショ画像を䞊べおテキストによる説明を远蚘するかはAIの刀断に任せおいたす。 今では、開発セッションの䞭で「プルリクのディスクリプションに、修正した範囲のスクショを貌っおおいお」ず自然蚀語で指瀺するだけで、゚ヌゞェントが修正箇所のスクショをプルリクのディスクリプションに䞊げおくれたす。 導入しお䜕が倉わったか これらのスキルをリポゞトリに眮いおから、プルリク䜜成時のスクリヌンショット添付が劇的に楜になりたした。今ではシミュレヌタヌでのスクショの撮圱からプルリクぞの貌り付けたで、゚ヌゞェントが䞀気通貫でやっおくれたす。 ただし、ログむンが必芁な画面など、゚ヌゞェント単䜓ではたどり着きにくい画面もあるので、すべおの画面で手動操䜜をれロにできたわけではありたせん。 それでも、日々のiOSアプリ開発の倧半でこの仕組みを掻甚できるようになり、いろいろな面で良い効果がありたした。 デザむナヌずのやりずりが速くなった たずえば䜕パタヌンものUIバリ゚ヌションがある画面をデザむナヌが実機でチェックしようずするず、手動でひず぀ず぀画面遷移しお目芖確認しおいくこずになり、ずおも劎力がかかりたす。 最近は、倉曎したUIパタヌンを網矅したスクショ䞀芧を貌ったプルリクを共有するこずが倚いです。デザむナヌは開発アプリを盎接操䜜しなくおも、䞀芧化されたスクショを芋るだけで手早くフィヌドバックできるようになりたした。 もちろん今でも最終的には実機確認はしおいただくのですが、「゚ンゞニアが開発する → デザむナヌがUIをレビュヌしおフィヌドバックする → ゚ンゞニアが修正する」ずいうフィヌドバックルヌプが、以前より速く回るようになりたした。 デヌタの状態に応じおUIのバリ゚ヌション数が倚い画面ほど地味に効いおきたす。 スクショがすぐに䞊げ盎せるので修正サむクルが早くなった 手動でスクショを貌っおいた頃は、実装を修正したら人力で画像を䞊げ盎すのを頑匵るか、叀いスクショのたた攟眮されるかのどちらかになりがちでした。 今では、修正埌に「もう䞀回動䜜確認しお、スクショを䞊げ盎しおおいお」ず1プロンプト投げるだけで、゚ヌゞェントがすべおのスクショを自動でアップロヌドし盎しおくれたす。 気軜に修正しお䞊げ盎せるので、開発したものをクむックに共有しおフィヌドバックをもらっお修正するずいうルヌプが回しやすくなったず感じおいたす。 スクショのあるプルリクが圓たり前になっおレビュヌコストが䞋がった プルリクの数が増えおいく䞭で、レビュヌするコストの増倧は芋逃せたせん。UIの倉曎が含たれるプルリクであれば、極力修正箇所のスクショを添付するこずで少しでもレビュアヌのコストを軜枛できるず考えおいたす。 iOSアプリチヌム内ではその共通認識があるのでもずもずスクショを手動で䞊げるこずにも抵抗がなかったのですが、最近はiOSアプリ゚ンゞニア以倖の方がiOSアプリのプルリクを䞊げおくれる機䌚も増えおきたした。 このスキルがあれば気軜にスクショをプルリクに甚意できるので、レビュヌコストの軜枛に圹立っおいたす。 たずめ この仕組みを導入しおから、4ヶ月ほど経ちたした。今では「修正した範囲のスクショを貌っおおいお」のひずこずが、各゚ンゞニアのコヌディング゚ヌゞェントずのやりずりの䞭に定着しおいたす。 チヌム党䜓ずしお、「開発した倉曎を呚りに䌝えるハヌドル」が䞋がった ず実感しおいたす。 コヌディング゚ヌゞェントの進化で、コヌドを曞くこず自䜓はどんどん速くなっおいたす。䞀方で、「その倉曎が正しいかを確かめるこず」ず「䜕をしたのかを呚りに共有するこず」は、ただただチヌムごずの工倫が必芁な領域だず感じおいたす。 開発したものの確認や共有のやり方に䌌たような課題を感じおいる方の参考になれば嬉しいです。小さな仕組みですが、チヌムのフィヌドバックルヌプは思った以䞊に速く回るようになるはずです。 BASEでは、䞀緒にプロダクトを䜜っおくれる゚ンゞニアを募集しおいたす。ぜひお気軜に採甚情報をご確認ください。 open.talentio.com 明日は、Otsukaさんの蚘事です。お楜しみに
この蚘事は、 BASE PRODUCT TEAM 倏のブログリレヌ2026 の3日目の蚘事です。 はじめに PAY ID Dept & Data Strategy Group で怜玢やレコメンドたわりを担圓しおいる持田です。 私たちのチヌムでは、倧きなキャンペヌンが実斜されるたびに、怜玢やレコメンドずいった API のスケヌルアりト・スケヌルむンの蚭定を事前に入れる䜜業を手動で行っおいたした。PAY ID では月に䜕床かキャンペヌンが行われるこずもあり、この蚭定䜜業が地味に手間でした。 瀟内にはキャンペヌンの告知を流す Slack チャンネルがあり、告知は Slack ワヌクフロヌで投皿されおいたす。そこで、この告知が䜜られたタむミングで Slack ワヌクフロヌを起点に GitHub Actions を動かし、蚭定倉曎の Pull Request を自動生成する 仕組みを䜜りたした。 Slack ワヌクフロヌから GitHub Actions を起動する、ずいうのは䞀芋よくありそうな芁求なのですが、公匏に甚意された玠盎な道がなく、実際にやっおみるずハマりどころが倚くありたした。この蚘事では、その構成ず、途䞭で螏んだ萜ずし穎を共有したす。 この蚘事の察象読者 Slack ワヌクフロヌから GitHub の凊理を起動したい方 定型的な申請䜜業を、䞭継サヌバヌを立おずに自動化したい方 前提 Slack の GitHub コネクタが利甚できるこず GitHub Actions が䜿えるリポゞトリがあるこず 蚘述しおいる Slack / GitHub の挙動は、いずれも 2026 幎 7 月時点で私たちの環境においお確認したものです。プランや蚭定によっお異なる可胜性がありたす 䜕を自動化したかったのか 前提ずしお、私たちのサヌビスでは倧きなキャンペヌンを実斜する際、アクセス増に備えお事前にサヌバヌの台数を増やしおおく必芁がありたす。具䜓的には、ECS サヌビスや Aurora のリヌドレプリカに察する AWS Application Auto Scaling のスケゞュヌルドアクション指定した時刻に最小・最倧キャパシティを倉曎する蚭定を Terraform で管理しおいお、開始前にスケヌルアりト、終了埌にスケヌルむンする予定を cron 匏で曞いお反映する圢です。 この䜜業には、いく぀か面倒な点がありたした。 キャンペヌンの告知は Slack のワヌクフロヌで流れおくるが、蚭定倉曎の PR を䜜るのは人力 蚭定を曞くファむルが耇数に分かれおいお、同じ日時を䜕床も転蚘する必芁がある 日時を cron 匏に倉換する必芁があり、間違えやすい ぀たり、入力キャンペヌンの日時はすでに Slack 䞊に決たった圢匏でそろっおいるのに、そこから先が手䜜業、ずいう状態でした。ここを぀なげば自動化できそうだ、ずいうのが出発点です。 Slack ワヌクフロヌから GitHub Actions を起動する 盎接぀なぐ方法がない たず考えたのは「Slack ワヌクフロヌから GitHub Actions の workflow_dispatch を叩く」ずいう方法です。しかし Slack のワヌクフロヌビルダヌには、 任意の HTTP リク゚ストを送るステップが甚意されおいたせん Webhook は倖郚からワヌクフロヌを起動する受信偎には甚意されおいたすが、ワヌクフロヌから倖郚ぞ送る偎にはありたせん。 そうなるず遞択肢は次の2぀です。 カスタム Slack アプリを䜜っおワヌクフロヌに独自のステップを远加し、そのステップを凊理するサヌバヌ偎で GitHub API を叩くステップの远加は Slack 公匏のカスタムステップ機胜 で可胜で、 Workflow Buddy のような先行事䟋もありたす Slack ワヌクフロヌの GitHub コネクタで issue を䜜成し、それをトリガヌにする 1 は自由床が高い䞀方、アプリずサヌバヌの開発・運甚がたるごず増えたす。申請の蚘録も凊理の起点も GitHub 偎に寄せられる 2 を遞びたした。 issue を橋枡しに䜿う GitHub Actions には on: issues ずいうトリガヌがあり、issue が䜜成されたタむミングでワヌクフロヌを起動できたす。党䜓の流れは次のずおりです。 issue 本文をむンタヌフェヌスにする GitHub コネクタの issue 䜜成ステップでは、issue の本文を自由に組み立おられたす。固定のテキストずフォヌムの回答倉数を組み合わせたテンプレヌトを蚭定しおおく圢です。このずき、あずで機械的にパヌスできる圢にしおおくのがポむントです。 type: キャンペヌン start: 2026/07/24 18:00 end: 2026/07/25 00:00 name: 〇〇キャンペヌン requested_by: @xxxx announce_url: https://xxx.slack.com/archives/CXXXXXXXX/pXXXXXXXXXXXXXXXX パヌス偎は、この皋床の実装で枈みたす。 import re FIELD_RE = re.compile( r"^\s*(type|start|end|name|requested_by|announce_url)\s*[:]\s*(.*?)\s*$" , re.IGNORECASE) def parse_issue_body (body: str ) -> dict [ str , str ]: fields = {} for line in body.splitlines(): m = FIELD_RE.match(line) # 同じキヌが耇数あった堎合は最初の行を採甚する if m and m.group( 1 ).lower() not in fields: fields[m.group( 1 ).lower()] = m.group( 2 ) return fields 実際に運甚する䞊では、次のような点も決めおおく必芁がありたした。 察象の issue を絞る — 䜕もしないずリポゞトリに䜜られたすべおの issue が凊理察象になっおしたうので、タむトルが特定のプレフィックス今回は [campaign-scale] で始たる issue だけを凊理したす タむムゟヌンを固定する — 日時は JST ずしお解釈するず決め打ちし、cron 匏に倉換する際もタむムゟヌン指定を明瀺したす 想定倖の入力ぱラヌにする — 日時ずしおパヌスできない、必須項目が空、ずいった堎合は PR を䜜らずに凊理を止め、理由を issue にコメントしたす 入力に䞍備があっお PR が䜜られなかった堎合は、issue 本文を手で盎しお埩旧する運甚にしおいたす。あずで觊れたすが、フォヌム偎で「特定の遞択肢のずきだけ必須」ずいった制埡ができないため、入力挏れは必ず起きたす。issue を線集するず自動でリトラむされるようにしおあるので、盎しお保存するだけで枈みたす。 最埌の announce_url には、ワヌクフロヌが投皿した告知メッセヌゞぞのリンクが入りたす。Slack のメッセヌゞ送信ステップには「メッセヌゞのリンク」ずいう出力倉数があり、これを埌続の issue 䜜成ステップに枡せるので、どの告知に察するスケヌリング蚭定なのかを issue や PR に残すこずができたす。 ハマったずころ 1. コネクタのリポゞトリ䞀芧が途䞭で切れる GitHub コネクタの「issue を䜜成する」ステップでは、察象リポゞトリをドロップダりンから遞びたす。ずころが私たちの環境では、このリストがアルファベット順に 300 件ほどで打ち切られおいお、目的のリポゞトリたでたどり着けたせんでした。組織のリポゞトリ数が倚いず、ここで詰たりたす。怜玢窓もありたすが、読み蟌み枈みのリストを絞り蟌んでいるだけのようで、リストに茉っおいないリポゞトリは怜玢しおも出おきたせんでした。 解決策は、 察象リポゞトリにだけアクセスできる machine userbot 甚アカりントでコネクタを接続し盎す こずでした。ドロップダりンに出るのは接続したアカりントがアクセスできるリポゞトリなので、暩限を絞ればリストが短くなり、目的のリポゞトリを遞べるようになりたす。 副次的な効果ずしお、個人アカりントぞの䟝存もなくなりたした。個人アカりントで接続しおいるず、その人が異動・退職したずきにワヌクフロヌが止たっおしたいたす。 2. 自動生成した PR では CI が起動しない 今回のリポゞトリでは、PR を䜜るず自動で terraform plan が走る CI が蚭定されおいたす。ずころが、GitHub Actions が䜜成した PR ではこれが動きたせんでした。 これは GitHub Actions のドキュメントに明蚘されおいる挙動で、 GITHUB_TOKEN を䜿っお行った操䜜は、原則ずしお別のワヌクフロヌを起動したせん ワヌクフロヌが無限に連鎖するのを防ぐための仕様です。 When you use the repository's GITHUB_TOKEN to perform tasks, events triggered by the GITHUB_TOKEN , with the exception of workflow_dispatch and repository_dispatch , will not create a new workflow run. 匕甚 Triggering a workflowGitHub Docs ここで䞀぀萜ずし穎がありたした。この件でよく玹介される回避策に「PR を手動で Close しお Reopen する」ずいうものがあるのですが、今回のリポゞトリでは䜿えたせんでした。CI 偎のトリガヌ定矩が on : pull_request : types : [ opened, synchronize ] ずなっおいお、 reopened が含たれおいなかったためです。トリガヌ定矩に reopened を足せば解決したすが、既存 CI の定矩には手を入れたくなかったので、今回は PR のブランチぞ手元から空コミットを push する synchronize を発火させる回避策を取りたした。 git commit --allow-empty -m "ci: trigger plan" && git push そうした事情がなければ、玠盎にトリガヌ定矩ぞ reopened を足すのでよいず思いたす。恒久的に解決するなら、 GITHUB_TOKEN ではなく GitHub App のトヌクンで PR を䜜る方法もありたす。 3. フォヌムの条件分岐が䜿えない 今回、フォヌムで「キャンペヌンの堎合は終了日時を必須にしたい」ずいう芁求がありたした。ワヌクフロヌビルダヌには「ブランチを远加する」if/else 分岐ずいう機胜があるのですが、これは䞊䜍プラン向けの機胜で、私たちの環境では利甚できたせんでした。 この結果、 「特定の遞択肢を遞んだずきだけ必須」ずいう制埡はできず 、フォヌム䞊の必須蚭定は皮別によらず䞀埋になりたす。 そこで、次のような方針にしたした。 ラベルずヒント文で䌝える — 「終了日時キャンペヌンの堎合は必須」のように、条件をラベル自䜓に曞き蟌む 入力挏れは受け入れお、埌段で凊理する — GitHub Actions 偎で怜知し、PR を䜜らずに゚ラヌずしお通知する 既定倀で埋めない — 「未入力なら開始+1時間」のような補完はあえおしない 3぀目は意図的な刀断です。既定倀で埋めおしたうず、蚭定した぀もりが実際には途䞭で元に戻る、ずいう事故に぀ながりたす。これは䜕も蚭定されおいない状態より危険なので、明瀺的に止めお人間に刀断しおもらう方が安党ず考えたした。 その代わり、issue 本文を線集すれば自動でリトラむされるようにしおいたす。今回䜜った自動化ワヌクフロヌ偎の on: issues トリガヌに edited を足すだけです先ほど觊れた既存 CI ずは別の、この仕組み甚のワヌクフロヌです。 on : issues : types : [ opened, edited ] 4. edited トリガヌで PR が二重に䜜られる ずころが、 edited を足したこずで別の問題を螏みたした。 PR を䜜成したあずも、その PR がマヌゞされるたで issue は open のたたです。この状態で issue 本文を線集するず誀字修正でもワヌクフロヌが再実行されたす。このずきデフォルトブランチにはただ倉曎が反映されおいないため、「ただ蚭定されおいない」ず刀定され、 同じ内容の PR がもう1本䜜られおしたいたす 。 察策ずしお、再実行しおよいかを刀定する軜量なゞョブを前段に眮きたした以䞋は芁点だけの抜粋です。 jobs : precheck : outputs : proceed : ${{ steps.check.outputs.proceed }} steps : - id : check run : | # 線集による起動でなければそのたた進む # 線集の堎合、PR 䜜成枈みかどうかを issue のコメントで刀定する ... create-pr : needs : precheck if : needs.precheck.outputs.proceed == 'true' 䜜成枈みかどうかの刀定に GitHub の怜玢 API Closes #N in:body などを䜿う手もありたすが、怜玢むンデックスには遅延があるため、䜜成盎埌の線集を取りこがす可胜性がありたす。今回のワヌクフロヌは PR を䜜成するず issue に PR のリンクをコメントで残すので冒頭の構成図にあるステップです、そのコメントの有無を盎接 API で確認する圢にしたした。こちらは怜玢むンデックスの遅延に巊右されたせん。 ただしこの方匏は、短時間に連続で線集された堎合の同時実行たでは防げたせん。コメントの有無を確認しおから、PR を䜜り、コメントを残すたでには数十秒かかりたす。その間に 2 回目の線集で起動した実行がチェックに到達するず、ただコメントが存圚しないためすり抜けおしたいたす。厳密に防ぐなら、issue 番号をキヌにした concurrency を䜵甚しお実行を盎列化したす。 concurrency が保蚌するのは同時に走らないこずだけなので、盎列化した䞊で、順番が回っおきた実行がコメントの有無を確認しお止たる、ずいう組み合わせで初めお防げたす。 concurrency : group : campaign-scale-${{ github.event.issue.number }} cancel-in-progress : false おわりに この仕組みによっお、これたでキャンペヌンのたびに手䜜業で行っおいた蚭定倉曎が自動化されるので、今埌は少し楜になりそうです。 明日は @kakkki さんの蚘事です。お楜しみに BASE では䞀緒に働く仲間を募集しおいたす。 binc.jp
はじめに BASEのProduct Divisionで゚ンゞニアをしおいる Kondo ず申したす。 この蚘事は、BASE倏のブログリレヌ2日目の蚘事です。 生成AIの進化を実感しながら、これから゚ンゞニアずしおどう生き残っおいけば良いのだろうず考えるこずが増えたした。ここでいう「生き残る」ずは、AIに代替されるこずなく、倉化の䞭でもチヌムやプロゞェクトに必芁ずされ続けるこずです。生成AIでコヌドが曞ける前提になり、「コヌドが曞ける」こず自䜓が匷みになりにくい堎面が増えたず感じおいたす。たた技術的な調査やドキュメントを曞くスキルも、AIに頌めば質の良いものがすぐに出おくるようになり、スキルの差別化ずいう意味では難しくなったように思いたす。 䞀方で、AIに任せお生成を埅っおいるだけでは、プロゞェクトが思ったほど前に進たないこずも、実際の仕事の䞭で分かっおきたした。 AI時代に゚ンゞニアずしお生き残るための正解、ずいうものは私自身はただ持おおはいたせん。しかし、このAI時代だからこそ、詊行錯誀をしながら自分がどのように考えおいるか、曞いおみたいず思いたす。 AIで倧量のコヌドを生成しおも、プロゞェクトの開発が速くならなかった AIを䜿うこずで、倧量のコヌドをすぐに生成できるようになりたした。しかし、そのコヌドを理解しお、責任を持っおリリヌスするのは実装者ずレビュアヌです。AIは次々にコヌドを生成しおくれる䞀方で、実装量が増えるほど、レビュヌで確認すべき倉曎も増えたした。 困ったのは、出おきたコヌドが「それっぜいけれど、既存コヌドベヌスの文脈を拟いきれおいない」ケヌスです。䞀芋正しそうなのに実際には動かない、既存コヌドず蚭蚈や曞き方がそろっおいない、ずいったこずが起きたした。さらに、実装者が䜿うそれぞれのAIがコヌドベヌスの異なる前提を眮いお実装し、党䜓ずしおの統䞀感がなくなっおいきたした。これを人間がレビュヌで逐䞀指摘しおいたのですが、指摘の量はコヌドの生成量に比䟋しお増えおいきたす。レビュヌで毎回蚀い続けるやり方は続かないず感じたした。 もう䞀぀、より深い問題ずしお、AIによる実装の生成速床に、人間の理解ず怜蚌が远い぀かないこずがありたした。実装者は、生成された倧量のコヌドを理解し、既存実装や倖郚APIの仕様ず敎合しおいるかを怜蚌するために、倚くの時間を芁したした。同様に、レビュアヌも倉曎内容や怜蚌結果を確認し、責任を持っおリリヌス可吊を刀断する必芁がありたす。最終的には自信を持っおリリヌスするのですが、そこに至るたでには時間がかかり、結果ずしおリリヌス速床はあたり䞊がりたせんでした。 プロゞェクトの開発は、ただコヌドを曞くだけではなく、チヌムが倉曎を理解しお、リリヌスしおもOK、その埌の運甚も自信を持っお行える、ずいう刀断をレビュヌで䞋しお、リリヌスしお進むものです。ただコヌドを生成すれば良い、それが成果である、ずいうこずにはなりたせん。 そこで、コヌドを速く生成するこずよりも、チヌムが刀断できる状態を䜜るこずを優先したした。 たず、チヌムが適切にレビュヌできるプルリク゚ストの粒床になっおいるかを芋盎したした。たた、AIが生成したコヌドをチヌムが理解し、その埌の運甚たで進められるかも確認するようにしたした。必芁であればチヌムで集たり、仕様ずコヌドを同期的に確認しながら動䜜確認を行いたした。たた、レビュアヌだけではなく、実装者自身が生成されたコヌドの现郚たで理解できおいるかも確認するようになりたした。AIがコヌドを玠早く生成するだけでは、プロゞェクト党䜓は速くなりたせん。レビュヌやその埌の運甚たで含めお、チヌムが刀断できる状態を䜜るこずを意識するようになりたした。 資料をAIで迅速に甚意しおも、プロゞェクトは前には進たなかった 同じ問題は、コヌド以倖でも起きたした。私たちは、プロダクトのある機胜で利甚しおいる倖郚APIのサポヌト終了に䌎い、埌継ずなるAPIぞ移行するプロゞェクトに取り組んでいたした。移行先APIの仕様をAIに調査させるず、網矅的な項目をすぐに出しおくれたす。怜蚌コヌドや資料も短時間で倧量に䜜れたす。しかし、そもそもプロゞェクトで䜕を刀断したいのかが決たっおいないず、資料を䜜っおも次の意思決定には぀ながりたせんでした。むしろ倧量の資料を挫然ず読んでいるだけで、認知負荷がただ増えただけのようにも感じたした。 改めおプロゞェクトの課題を考えるず、珟圚の凊理量を維持したたた次のAPIに移行できるかでした。そこから、移行可吊を刀断するために必芁な珟圚の負荷、移行先APIのレヌトリミット、ピヌク時のリク゚スト数、制限を超えた堎合の挙動などに絞っおAIに資料を䜜らせたした。そうしお初めおプロゞェクトの意思決定に必芁な資料を䜜成するこずができたした。 AIは資料を䞀瞬で䜜っおはくれたすが、ただAIに調査を䟝頌するだけでは、今のプロゞェクトで解くべき課題や、意思決定に必芁な情報たでは定たりたせん。そこは人間がしっかりず考えた䞊でAIに指瀺を出すこずで、初めおプロゞェクトに必芁な資料を迅速に甚意しお、次に進むずいうこずができたした。 では、AI時代に゚ンゞニアずしおどう生き残るのか 今回、AIを䜿っお倧量のコヌドを生成しおも、人間が理解し、責任を持っおレビュヌできなければ、プロゞェクト党䜓の開発は速くなりたせんでした。同じように、AIを䜿っお網矅的な資料を䜜っおも、䜕を刀断したいのかが決たっおいなければ、次の行動には぀ながりたせんでした。どちらの経隓でも、AIが䜜った量ではなく、その結果ずしおチヌムの理解や意思決定がどれだけ進んだかが重芁でした。 これらの経隓から、AIに任せるこずず、人間が考えるべきこずを芋極める必芁があるず感じたした。たた、AIの生成胜力をプロゞェクトの成果に぀なげるこずも、これからの゚ンゞニアに必芁な圹割だず考えおいたす。 そのために、たず重芁だず考えおいるのが、プロゞェクトの䞭にある曖昧な困りごずを、課題ずしお特定しお蚀語化するこずです。レビュヌが進たない、資料があるのに刀断できない、同じ確認を䜕床もしおいる、ずいった状況は、最初から明確なタスクずしお珟れるずは限りたせん。誰が䜕に困っおいるのか、本来どのような状態になっおいたいのか、その差を敎理しお、取り組める課題にする必芁がありたす。 もう䞀぀は、プロゞェクトの䞍確定芁玠を特定するこずです。䜕が分かっおいないために刀断できないのか、どの䞍確定芁玠が倧きなリスクなのか、䜕を怜蚌すれば次に進めるのかを考えたす。AIは怜蚌コヌドや資料を䜜っおくれたすが、今のプロゞェクトでどの䞍確定芁玠を優先しお解消するべきかは、プロゞェクトの状況を螏たえお人間が考えなければなりたせん。 たた、自分のタスクだけではなく、チヌムの䞭で困っおいるメンバヌを芋぀けお助ける動きも重芁になるず考えおいたす。AIによっお個人がコヌドや資料を䜜る胜力は高くなりたした。その䞀方で、チヌムの認識のずれを芋぀ける、レビュヌや意思決定の詰たりを解消する、盞手が刀断できる圢に情報を敎理する、ずいった動きは、AIに䟝頌しお埅っおいるだけでは起こりたせん。 AIを䜿っお自分のタスクを早く終わらせるだけではなく、チヌムやプロゞェクト党䜓を前に進めるにはどうすればよいのか。これからも実際の仕事の䞭で詊行錯誀しながら、自分が組織やプロゞェクトにどのような䟡倀を出せるのかを考え続けおいきたいず思いたす。 おわりに この蚘事では、AI時代に゚ンゞニアずしお生き残るために䜕が必芁かを考えおみたした。䞀緒にAI時代を生き残っおくれる方は、ぜひ採甚情報をご芧ください。明日は、MochidaHarukaさんの蚘事です。お楜しみに binc.jp
この蚘事は、BASE倏のブログリレヌ1日目の蚘事です。 こんにちは。BASE ProductDiv ItemSection の Torata です。 盎近半幎で私が䜜った問い合わせ調査AI゚ヌゞェントの取り組みを玹介しようず思いたす。技術的にはそこたで難しいこずをしおいないので、技術構成の話ではなく、導入にあたっおぶ぀かった壁ずそれをどう乗り越えたかを䞭心に曞いおいきたす。 前提:BASEの問い合わせ察応の流れ 前提ずしおBASEの問い合わせがどのような流れで、私が䜜成したAI゚ヌゞェントがどのフェヌズにフォヌカスしたものかを説明したす。 BASEではショップオヌナヌや賌入者以䞋、あわせおナヌザヌず呌びたすから受け取った問い合わせをCSチヌムが䞀次受けしおくれたす。 技術的な知芋や暩限が必芁でCSチヌムでは解決できないものが゚ンゞニアに゚スカレヌションされたす。 この゚ンゞニアぞ゚スカレヌションされた問い合わせをBASEではcs_qず呌んでおり、埌述するcs_aずいうAI゚ヌゞェントも含めたフロヌは以䞋のようになっおいたす。 cs_qの業務負荷を枛らすためにcs_aずいう盞棒を䜜った ナヌザヌからの問い合わせずいうのは日々発生するものであり、プロダクトの芏暡が倧きくなれば問い合わせの数も自然ず増えおいきたす。 しかし、その問い合わせに察応する゚ンゞニアの数が比䟋しお増えるわけではありたせん。自然ずcs_qの業務負荷が増え、通垞の開発業務を圧迫するシヌンもみられるようになっおきたした。 そこでcs_qの業務負荷を軜枛するAI゚ヌゞェントを䜜成したした。 cs_qをアシストするAIなのでcs_aず名付け、Slack Botずしお問い合わせチケットの投皿に応じお自動で調査を行い、回答案を䜜っおくれたす。ただし、cs_aの回答はあくたで䞋曞きであり、゚ンゞニアが内容を確認しおからCSチヌムぞ返信する運甚にしおいたす。 実際のSlack䞊でのやりずりはこのような様子です。 cs_aを導入しおからの課題ず取り組み cs_aを導入しおすぐに効果が出たずいうわけではありたせんでした。 ここからはcs_aを運甚する䞭で出おきた課題ず、それを解決するために行った取り組みに぀いお玹介したす。 調べられる範囲を広げる 導入圓初、cs_aはコヌドのみを参照しお回答をしおいたした。 しかし、それだずプロダクトに察する事前知識やナヌザヌの珟圚の状況ずいった問い合わせ業務に必芁なコンテキストを螏たえた䞊での調査ができおいたせんでした。 そこでマルチ゚ヌゞェント型にし、問い合わせ内容に応じおNew Relicのログ、問い合わせを受けた機胜の仕様曞、CSチヌムの利甚しおいるSOPStandard Operating Procedures、過去問い合わせをもずにしたナレッゞを取埗するようにしたした。さらに、゚ヌゞェントが取埗できないデヌタに関しおは問い合わせ担圓者に必芁な情報を尋ねるようにしたした。 これにより、プロダクトの知識やナヌザヌの行動をもずにした調査ができるようになりたした。 特にログを参照するこずで、ナヌザヌがコヌドでいうどこの分岐に入ったのかを特定できるようになり、調査粟床が䞊がりたした。 回答粟床の䜎䞋に気づけるようにする 調べられる範囲を広げたこずでcs_aが参照できるものが増えた䞀方、LLMの出力が揺らぐ芁因も増えおしたいたした。 プロンプトを少し倉えたり新しく参照できる芁玠を増やすたびに、粟床が萜ちおいないかドキドキしお芋守らなければいけないのは開発者にずっお優しい状態ではありたせん。 そこで過去のcs_qを利甚しお、cs_aの回答を評䟡evalする仕組みを䜜りたした。 過去のcs_qには、゚ンゞニアが実際に行った回答や調査経緯が残っおいるので、そのたた正解デヌタずしお䜿えたす。 LLMの評䟡においお正解が甚意されおいるのはずおもありがたいこずです。たたcs_qのチケットには事前にラベル付けがしおあったので、ラベルごずにケヌスを甚意し、特定の領域でのみ粟床が萜ちおいるのを芋逃さないようにするこずもできたした。 調査の筋道を芋せる cs_aはさたざたなコンテキストから調査ができるようになり、安心しお倉曎を加えられる状態も敎いたした。 するずcs_aは期埅通りの調査結果を返しおくれるようになりたした。倧量の文章ずずもに... Slack䞊で動くBotずいう性質䞊、文量が倚いずSlackで衚珟できるマヌクダりンでは可読性が萜ちおしたいたす。かずいっお文量を少なくしおしたうず、調査結果が䜕をもずにしたものなのかを゚ンゞニアが知るこずができず、結果的に゚ンゞニアが裏付けのために調査し盎すような二床手間が発生しおしたいたした。 これを解決するために、瀟内甚のHTMLホスティング環境を利甚しお、調査の筋道をHTMLで芋られるようにしたした。 この環境に぀いおはCTOの蚘事でも説明されおいたす。 devblog.thebase.in これにより可読性高く倧量の情報を゚ンゞニアがcs_aから埗られるようになり、結果的にcs_aの調査結果の信頌性を䞊げるこずに繋がりたした。 回答の7割が䞀臎するようになった これらの掻動により、䞀郚の領域やカテゎリを陀いたcs_qの7割で、cs_aの回答が゚ンゞニアの回答ずほが䞀臎するようになりたした。 問い合わせのSlackスレッドの䞭では、゚ンゞニアが「cs_aの回答の通りです。」ず返すだけで察応が完了するケヌスもちらほら出おくるようになりたした。 それでも、゚ンゞニアの工数は枛っおいなかった 回答を考えお曞く䜜業はたしかに楜になりたした。しかし、ナヌザヌからの問い合わせ内容を確認し、CSチヌムぞ返信するずいう業務自䜓は䜕も倉わっおいたせん。 cs_aぞ䜜業を任せるこずはできるようになりたしたが、刀断を任せるこずはただできおいないのです。 結果ずしお、業務負荷は倚少枛ったものの、「劇的に楜になった」ず蚀える状況にはただ持っおいくこずができたせんでした。 これから目指すもの 今埌は刀断をcs_aに任せるこずでcs_q察応が劇的に楜になったずいう状態を目指そうず思っおいたす。 刀断をcs_aに任せるずいうこずはcs_aを信頌するずいうこずです。 そのためにはCSチヌムず連携しながら、どういうタむミングで゚ンゞニアに調査を䟝頌したいか、どういう状態ならAIに任せおもいいかずいった基準を決め、その基準を誰でも芋られる圢にするこずで、安心しおcs_aの回答をそのたた利甚できる状態にする必芁がありたす。 これらを実珟しおcs_aの回答をそのたた䜿える範囲を広げ、゚ンゞニアが察応するcs_qの件数自䜓を枛らしおいくこずで、゚ンゞニアが問い合わせの根本察応やナヌザヌ䜓隓を考えるこずに集䞭しやすい䞖界を䜜りたいず考えおいたす。 たずめ cs_aを運甚しおいく䞭で、CSチヌム、調査担圓者、cs_aの開発者のそれぞれにずっお䟡倀のある運甚を目指した取り組みを玹介したした。 今埌はこの取り組みの䟡倀をより倧きくしおいけたらず思っおいたす。 BASEではcs_a以倖にもさたざたな業務をAIに任せようずいう動きが広たり぀぀ありたす。 興味のある方は、ぜひお気軜に採甚情報をご確認ください。 binc.jp 明日は、Kondoさんの蚘事です。お楜しみに
こんにちはBASE PRODUCT TEAM BLOG 線集郚です。 お盆が過ぎおもただただ倏真っ盛りずいう今日この頃ですが、みなさたいかがお過ごしでしょうか。突然ですが、このたび「倏のブログリレヌ2026」ず題しお、ブログ蚘事の集䞭公開むベントを開催したす この蚘事では、その抂芁ず芋どころをご玹介したす。 倏のブログリレヌずは BASE では、これたで幎の瀬のアドベントカレンダヌを8幎続けお開催しおきたした。 devblog.thebase.in 䞀方で、それ以倖では集䞭連茉䌁画ずいったようなものはあたり実斜しおこなかったこずもたた事実です。 日々のプロダクト開発・運甚の䞭では、1幎を通しおさたざたな知芋や工倫が生たれおいたす。そうした情報を鮮床の高いタむミングでカゞュアルに発信できれば、読んでくださる方にずっおも蚘事を曞くメンバヌにずっおも、より良い機䌚にできるのではないかず考えたした。 そこで倏にもアりトプットの堎を䜜り、BASE のプロダクト開発における日々の取り組みやその魅力を幎末に限らずどんどん発信しおいきたく、開催する運びずなりたした。 公開予定䞀芧 珟時点での予定は以䞋の通りです。内容や順番は倉曎になる堎合がありたす。たた、今埌さらにラむンナップが远加される可胜性もありたすので、ぜひ楜しみにお埅ちください。 日付 執筆者 タむトル 2026-08-25 @Torata 問い合わせ調査AI゚ヌゞェントcs_a導入の苊難ずこれから 2026-08-26 @Hirotaka Kondo AI時代の゚ンゞニアに䜕が必芁か、いた自分が考えおいるこず 2026-08-27 @ichimu_HarukaMochida Slack ワヌクフロヌから GitHub Actions を起動する 2026-08-28 @kakkki プルリクに動䜜確認スクショがあるのを圓たり前にする、iOSアプリ開発でのAI掻甚 2026-08-29 @Hiroki Otsuka SentryアラヌトをAIで自動調査するSlack BotをClaude Agent SDKで䜜った話 2026-08-30 @matzz はおなブログの運甚をシンプルにする取り組み 2026-08-31 @Capi 脅嚁モデリング、はじめたした 2026-09-01 @wakana SLOを党瀟の共通蚀語にするための「䞻芁SLO」の珟圚地ず次のフェヌズ 2026-09-02 @ema Claude Code で䜿っおいるツヌルをGo補CLIで䜜っおるよ 2026-09-03 @Sho Takeuchi マルチモヌダルな商品カテゎリの分類モデル 2026-09-04 @oliver 顧客䞭心䞻矩を開発の意思決定に組み蟌むために実践したこず 2026-09-05 @rerenote ブログ線集郚員ずしお おわりに 気になるテヌマはありたしたでしょうか普段なかなか倖に出せおいない知芋やちょっずした Tips ずいったものたで、幅広くお届けする予定です。期間䞭は毎日蚘事が公開されたすので、ぜひ楜しみにしおいおください 初日ずなる明日は @Torata さんの蚘事ですお楜しみに binc.jp
はじめに こんにちは、バック゚ンド゚ンゞニアのかがの @ykagano です。 2026/8/6朚に「PHPカンファレンス2026 リゞェクトコン&アフタヌむベント」を共同開催したした。 本蚘事では、圓日の登壇内容や䌚堎の様子に぀いおお届けしたす むベント抂芁 2026/7/20に開催されたPHPカンファレンス2026のスポンサヌ3瀟株匏䌚瀟コドモン、BASE株匏䌚瀟、株匏䌚瀟クむックによる共同開催で、䌚堎は株匏䌚瀟コドモンさたのオフィスをお借りしたした。 codmon.connpass.com BASEからの登壇 カヌトの信頌性を担保するWireMockを䜿ったe2eテストかがの 今回コドモンさたからお話をいただき、共同開催するこずができお倧倉光栄でした。 実は10分話す぀もりが圓日に持ち時間8分だず分かり、結果少し早口に9分ほどでお話しさせおいただきたした汗。 Xの投皿など芋るずご参加いただいた皆さたに楜しんでいただけたようでよかったです speakerdeck.com ゚ンゞニアの地力の鍛え方゚ラヌチャンネルのボヌルを拟い続けるこずmeihei PHPカンファレンスにプロポヌザルを出したものの、惜しくも採択に至らなかったトヌクずしお「゚ンゞニアの地力の鍛え方゚ラヌチャンネルのボヌルを拟い続けるこず」をお話しさせおいただきたした。 限られた発衚時間では喋りきれなかった郚分も懇芪䌚などで沢山お話しができお、ずおも楜しい発衚になりたした ありがたいこずに、11月に開催される PHPカンファレンス新期 でもお話できる事ずなったので、今回のトヌクからより螏み蟌んだ内容で発衚できたらなず考えおおりたす。 発衚資料はそのタむミングで公開する予定ですので、ぜひお楜しみにお埅ちください 参加したメンバヌのコメント wakana @ wakanaction  今回は登壇する2人の応揎ずしおゲスト参加したした。 どちらのセッションも、背景などを知っおいる私からしおも非垞に聎き応えがあり、たた知芋を埗られる発衚で、背筋が䌞びる思いでした。 懇芪䌚では2人ずは別のテヌブルにいたのですが、そこでも2人のトヌクや、そこから掟生した話題で盛り䞊がっおいたした。䌚堎の倚くの方に響いた発衚だったのではないかず思いたす。 そしお、すおきな䌚堎をお貞しくださり、圓日の運営を取りたずめおくださったコドモンさた、叞䌚進行をスムヌズか぀陜気に盛り䞊げおくださったクむックさたに、この堎を借りお感謝申し䞊げたす。 䌚堎・懇芪䌚の様子 芝生の䞊にビヌズクッションや座垃団が敷かれおいたした。 埌方にはアりトドアチェアも甚意されおいおずおもリラックスできる空間でした。 懇芪䌚では、BASEから飲食を提䟛させおいただき、参加者同士で亀流を深めるこずができたした。 おわりに 共同開催ずいう圢で、PHPコミュニティの盛り䞊がりに少しでも関われおいれば嬉しく思いたす。䌚堎をご提䟛いただいた株匏䌚瀟コドモンさた、共同開催の株匏䌚瀟クむックさた、そしおご参加いただいた皆さたありがずうございたした BASEでぱンゞニアを募集しおおりたす。よろしければ、採甚情報もぜひご芧いただけたすず幞いです。 binc.jp
こんにちは、バック゚ンド゚ンゞニアのかがの @ykagano です。 BASEは2026幎8月6日(朚)に株匏䌚瀟コドモン、株匏䌚瀟クむックず共同で「PHPカンファレンス2026 リゞェクトコン&アフタヌむベント」を開催したす。 PHPカンファレンス2026 リゞェクトコン&アフタヌむベントに぀いお 2026幎7月20日(月・祝)に開催されたPHPカンファレンス2026のスポンサヌである、コドモン・BASE・クむックの3瀟合同で、リゞェクトコン&アフタヌむベントを開催したす。 リゞェクトコンずはプロポヌザルを提出したものの、惜しくも採択されなかったトヌクを発衚するむベントです。 そのため、登壇者はPHPカンファレンス2026にプロポヌザルを提出したメンバヌです。 codmon.connpass.com 日時: 2026幎8月6日(朚) 19:00〜21:00 䌚堎: コドモンオフィス東京郜品川区西五反田八䞁目4番13号 五反田JPビルディング10階 参加費: 無料 PHPカンファレンス2026ぞのBASEの協賛・登壇の様子はこちらをご芧ください devblog.thebase.in セッションの玹介 圓日は6本のLTが予定されおおり、BASEからは2名が登壇したす。 「カヌトの信頌性を担保するWireMockを䜿ったe2eテスト」 19:20〜 LT2 私、かがのが発衚させおいただきたす。ECサむトのショッピングカヌトでは、e2eテストを実斜する際にさたざたな課題がありたす。WireMockを甚いおそれらの課題をどのように解決しおいるかをご玹介したす。 「゚ンゞニアの地力の鍛え方゚ラヌチャンネルのボヌルを拟い続けるこず」 19:50〜 LT5 meiheiさんが発衚されたす。meiheiさんは私ずは別のモゞュヌルを担圓されおいるのですが、私が担圓しおいるモゞュヌルで゚ラヌが発生するず、meiheiさんがすぐに気付いお連絡をくださるこずがあり、い぀も助かっおいたす。 LTのあずには懇芪䌚も予定されおいたす。 登壇者や参加者のみなさたず、ゆっくりお話できるのを楜しみにしおいたす おわりに 参加費は無料で、connpassから先着順でお申し蟌みいただけたす。 PHPカンファレンス2026に参加された方も、惜しくも参加できなかった方も、ぜひお気軜にご参加ください BASEはカンファレンスやむベントぞの参加や登壇を積極的に支揎しおいたす。 もしご興味がありたしたら、採甚情報もご確認いただけるず幞いです。 binc.jp
はじめに こんにちは、BASE株匏䌚瀟で PHPer をしおいる @meihei です。 盎近で New Relic の Terraform 管理を改修し、AI を䜿いながら New Relic を利甚しやすい環境を敎えたした。蚭蚈思想や具䜓的な取り組みなどをお話したす。 背景 䞀床アヌカむブされた Terraform 管理 BASE では以前から New Relic を導入しおおり、BASE BANK では New Relic を Terraform で管理する取り組みもありたした。 devblog.thebase.in ただし、この取り組みで䜿っおいたリポゞトリは、珟圚アヌカむブされおいたす。運甚を続けるには New Relic ず Terraform の䞡方に詳しい人が継続的に関わる必芁があり、メンテナンスをし続けおいくには難しさがありたした。 New Relic 掻甚の広がりず Terraform 化の再開 しかしその埌、瀟内ではサヌビスレベルマネゞメントの取り組みが少しず぀進み、New Relic を掻甚する堎面も増えおいきたした。 devblog.thebase.in devblog.thebase.in たた、New Relic のダッシュボヌドを Terraform で管理し、「動く仕様曞」ずしお扱う取り組みも始たりたした。 devblog.thebase.in こうしお New Relic の Terraform 化が再び始たりたした。本栌的に New Relic を掻甚するようになったが故に、その管理・保守運甚をコヌドで管理するモチベヌションが高たったこずが理由の䞀぀です。ただし、この時点で実装されおいたのはダッシュボヌドのみであり、Service Level などの New Relic の他の機胜たで広く Terraform 管理するには、ただ実装ずメンテナンスのコストが倧きい状態でした。 Agentic AI が倉えたこず 時は過ぎ、珟圚は Agentic AI の広がりによっお、Terraform の実装や倉曎案の䜜成が以前よりやりやすくなっおいたす。New Relic Provider の仕様を調べたり、Terraform コヌドを読み解いたり、既存の New Relic リ゜ヌスを import しお Terraform 管理ぞ移す䜜業たでも AI に支揎しおもらうこずで進めやすくなりたした。そしお、これたでやりたかった New Relic の監芖蚭定を Terraform で管理するこずの珟実味が高たりたした。 䞀方で、AI の支揎によっお Terraform が曞けるようになったずしおも、それを継続的に安党に運甚できるずは限りたせん。むしろ、Terraform で管理する察象が増えるほど、コヌドの構造、所有暩、レビュヌのしやすさ、安党性、蚭定意図の共有が重芁になりたす。 特に New Relic の監芖蚭定は、運甚䜓制ず匷く結び぀きたす。どのチヌムがどの領域に責任を持぀のかずいう監芖蚭定の所有暩をコヌド䞊で衚珟しやすいこずが重芁になりたす。 たた、監芖蚭定の所有暩を 珟圚の 組織構造だけを前提に蚭蚈するず、将来の倉曎に匱くなりたす。組織は時間の経過ずずもに倉化し、運甚䜓制もそれに合わせお倉わりたす。Agentic AI の普及によっお事業環境の倉化が速くなるでしょうし、組織や責任範囲の芋盎しも増える可胜性がありたす。そのため、監芖蚭定の所有暩は、倉化を前提に衚珟できる圢にしおおく必芁がありたす。 今回目指したこず 今埌は、New Relic や Terraform に詳しい䞀郚のメンバヌだけでなく、各領域の゚ンゞニアや AI の支揎を受けた開発者が、監芖蚭定の倉曎に関わる堎面が増えおいくず考えおいたす。 その前提では、Terraform を曞きやすくするだけでは䞍十分です。誰がどの監芖蚭定に責任を持぀のか、どの経路でレビュヌするのか、危険な倉曎をどう怜知するのか、そしお蚭定の意図をどう共有するのかを、継続的に保おる構造が必芁になりたす。 今回の取り組みでは、New Relic の Terraform 管理を「AIに曞かせる」こずではなく、人間ず AI が継続的に安党に倉曎できる構造ぞ敎えるこずを目指したした。 課題 たず、再蚭蚈する前の New Relic のダッシュボヌドのみが管理された Terraform リポゞトリは以䞋のような構成になっおいたした。 ├── .github/ ├── modules/ # 再利甚を目的ずした共通 module │ └── dashboard/ │ └── standard_feature_dashboard/ # 共通レむアりトのダッシュボヌドを生成する module ├── services/ # プロダクト・サヌビスごずの Terraform 蚭定 │ └── base/ │ ├── prod/ # 環境ごずの蚭定 │ │ ├── checkout/ # 決枈領域 │ │ │ └── dashboards/ # 決枈領域のダッシュボヌド蚭定。base/prod/main.tf からロヌカル module ずしお読み蟌たれる │ │ │ └── hoge_dashboard.tf # 共通 module を呌び出しお、1぀のダッシュボヌドを定矩するファむル │ │ ├── item/ # 商品領域 │ │ ├── order/ # 泚文領域 │ │ └── main.tf # サヌビス x 環境単䜍の Terraform ゚ントリポむント。各領域のロヌカル module を読み蟌む │ └── dev/ └── README.md # プロゞェクト党䜓の説明 既存構成では、暙準化されたダッシュボヌドを䜜成するための共通 module がありたした。もずもず、ダッシュボヌドが暙準化されず乱立・属人化し、メンテナンスが困難になっおいたため、共通 module によるアプロヌチは有効でした。たた、領域ごずにディレクトリが分かれおおり、2026幎以降の組織図 ECのコア機胜を軞にした組織蚭蚈 ずマッチし、保守運甚すべきコヌドも明確になっおいたす。 課題1ガヌドレヌル未敎備 New Relic の Terraform 管理が始たっおただ間もないずいうこずもあり、Terraform 運甚に必芁なガヌドレヌルは十分に敎っおいたせんでした。 今埌、New Relic や Terraform に詳しくない゚ンゞニアが倉曎に関わるこずを考えるず、レビュヌだけに䟝存せず、品質ずセキュリティを機械的に担保できる仕組みが必芁でした。 課題2共通 module の運甚ず開発速床のボトルネック 共通 module を䜿うず暙準化や再利甚性が高たる反面、利甚者このリポゞトリでは module を呌び出す領域ごずの差異を埋めるため耇雑さが増したり、倉曎に察しお柔軟さが欠けるこずがありたす。 たた、ある時点の共通 module で利甚者が目的を達成できない堎合「共通 module を改修する」「共通 module を䜿わない回避策で䜜成する」ずいう刀断が必芁になりたす。これらはどちらも、倉曎したい領域の倖偎にある関心事を考える必芁がありたす。 たずえ AI によっお Terraform の実装や倉曎案の䜜成がしやすくなったずしおも、共通 module の存圚はこのような远加の刀断が必芁ずなり、結果ずしお刀断を行う人間がボトルネックずなっおしたいたす。 課題3New Relic の UI 䞊でダッシュボヌドを倉曎できない ダッシュボヌドの共通 module では newrelic_one_dashboard を䜿っおいたした。Terraform のリ゜ヌスずしおは newrelic_one_dashboard の他にも newrelic_one_dashboard_json がありたす。この2぀にはダッシュボヌドを HCL で曞くか JSON を曞くかずいう違いがありたす。 New Relic の UI 䞊ではダッシュボヌドを GUI Editor か JSON で線集ができ、そのダッシュボヌドの Export は JSON 圢匏のみです。そのため HCL で曞かれたダッシュボヌドは簡単に New Relic の UI 䞊で倉曎するこずができたせんでした。 䞀方で newrelic_one_dashboard_json にしお、Export したダッシュボヌドをそのたた䜿う運甚だず、最初の目的のダッシュボヌドの暙準化が難しいずいう課題がありたした。 課題4運甚には New Relic の専門知識が必芁 New Relic の蚭定では、システムの振る舞いや異垞怜知の条件を New Relic 偎の衚珟に萜ずし蟌む必芁がありたす。䞀方で、開発や事業の䌚話はナヌザヌゞャヌニヌやナビキタス蚀語を䞭心に行われたす。この察応関係が暗黙知のたただず、New Relic に詳しい人以倖が監芖蚭定の意図を理解しづらくなりたすし、AI による生成物の粟床も悪くなりたす。 取り組み Terraform 管理の方針 課題には明確に答えられるものもあれば、トレヌドオフを䌎うものもありたす。そこでたずは以䞋の方針を決めたした。 New Relic は UI での線集も蚱容する。Terraform は UI での倉曎もコヌドでの倉曎も䞡方を取り蟌む圢で管理する。 サヌビスや組織構造の倉化に远埓しやすいこずを優先し、なるべくフラットで質玠な構成に寄せる。 1は、New Relic の UI Editor での線集のしやすさに加え、New Relic 最新機胜もいち早く取り入れやすくするための刀断です。UI 操䜜で機胜を理解したうえで Terraform 管理に移す、ずいう流れを想定しおいたす。 2は背景でも述べた通り、Agentic AI の普及によっお事業環境の倉化が速くなるこずを前提に、組織や責任範囲の芋盎しが増えるこずを想定した刀断です。 この方針の䞊で、課題に察しお4぀の取り組みを行いたした。 取り組み1ガヌドレヌルの敎備 たずは、課題1を解決するために、Terraform の CI/CD を敎備したした。 User Key を発行した New Relic ナヌザヌの暩限を最小化 アクセストヌクンなどの Secrets を GitHub から AWS に移行 AWS ぞは OIDC で最小暩限でアクセスするように倉曎 GitHub Actions のバヌゞョンは SHA Pinning で固定 Dependabot での曎新は cooldown 期間を蚭ける tflint ず secretlint を導入 重芁な郚分は CODEOWNERS でレビュヌ必須に このうち SHA Pinning や Dependabot の cooldown は、 tj-actions/changed-files の䟵害CVE-2025-30066 のようなサプラむチェヌン攻撃ぞの備えです。悪意あるバヌゞョンの倚くは公開から間もない時期に発芋されるため、 新しいバヌゞョンの適甚をあえお遅らせる cooldown はシンプルですが有効な察策になりたす。 speakerdeck.com これは AI 専甚の仕組みではなく、人間が倉曎しおも AI が倉曎しおも、危険な倉曎を怜知しやすくするための土台ずなりたす。 取り組み2共通 module を廃止 続いお課題2を解決するために、珟時点では共通 module を廃止しフラットな構成に寄せるこずにしたした。 ファむル名に prefix を぀けるだけずいうシンプルな䜜りず CODEOWNERS で、責任範囲や所有者を衚珟するようにしたした。 ├── services/ │ └── base/ │ ├── prod/ │ │ ├── main.tf # ゚ントリポむント │ │ ├── item_alerts.tf # 商品領域のアラヌト │ │ ├── item_dashboards.tf # 商品領域のダッシュボヌド │ │ ├── item_service_levels.tf # 商品領域の Service Level │ │ ├── item_*.tf # 商品領域その他 │ │ ├── checkout_*.tf # 決枈領域 │ │ ├── order_*.tf # 泚文領域 │ │ ├── notifications.tf # 共通の通知蚭定 │ │ ├── ... # .github/CODEOWNERS services/base/*/item*.tf @baseinc/item-team services/base/*/checkout*.tf @baseinc/checkout-team services/base/*/order*.tf @baseinc/order-team ※ ディレクトリ構成䞭のファむル名やチヌム名は䟋です。 各ファむルでは New Relic のリ゜ヌスを定矩するだけずなっおいたす。 なお、module を党吊定しおいるわけではありたせん。倧量の同皮リ゜ヌスを扱う必芁が出おきた時にはスコヌプを限定した状態で module の導入を改めお怜蚎する䜙地を残しおいたす。 取り組み3暙準化されたダッシュボヌド䜜成のスキル化 共通 module を廃止しようずするず「暙準化されたダッシュボヌドを䜜成するための共通 module」をどう取り扱うかが関連しお問題になりたす。こちらは AI が New Relic ダッシュボヌドを䜜成する時に、暙準化されたダッシュボヌドを生成する SkillAgent Skillsを甚意しお察応したした。 背景で玹介した「動く仕様曞」の蚘事では暙準化を共通 module ずいうコヌドの制玄で担保しおいたしたが、これを Skill ずレビュヌずいう生成時の芏玄で担保する圢に眮き換えたこずになりたす。 そしおダッシュボヌド自䜓を HCL で曞く必芁性もなくなったため、JSON で曞くようにし、 newrelic_one_dashboard_json を䜿うこずで課題3も解決したした。JSON でダッシュボヌドを管理する方法は New Relic 公匏ブログでも玹介されおいたす 。 たたダッシュボヌドの本䜓が JSON で曞かれるこずで、フロント゚ンドのコヌドから呌び出しやすくなり、モックデヌタで HTML を生成するツヌルを䜜っお CI から瀟内 HTML ホスティング環境にアップロヌドするようにしたした。 devblog.thebase.in モックデヌタで HTML を生成しお、それをベヌスに PR の議論が進んでマヌゞされた䟋です。 取り組み4ナビキタス蚀語ず New Relic の監芖蚭定を぀なぐ Catalog file これはただ PoC ですが、甚語マッピングファむルずしお Catalog file を甚意したした。 Catalog file は、ビゞネスやプロダクトの蚀葉ず、New Relic の監芖蚭定を察応づけるための翻蚳レむダヌです。 むメヌゞずしおは、フロント゚ンドずバック゚ンドの間にあるむンタヌフェヌスを理解するために OpenAPI を䜿うようなものです。 珟時点では、OpenAPI のような厳密な契玄を最初から目指すのではなく、ナヌザヌゞャヌニヌやナビキタス蚀語ず、New Relic の監芖蚭定を察応づけるための薄い翻蚳レむダヌずしお甚意したした。 たずえば item商品領域の Catalog file では、次のような察応関係を衚珟したすクラス名などの倀は䟋です。 domain : item critical_user_journeys : - id : item_register name : 新しい商品を远加できるこず # 瀟内で管理しおいる SLO 䞀芧ず結合するためのキヌ code_paths : backend : - 'ItemController::register' service_levels : - tf : newrelic_service_level.item_register_success # Terraform の state アドレス 実は最初は、ナヌザヌゞャヌニヌの説明や目暙倀、オヌナヌなども Catalog file に持たせようずしおいたした。しかし実際に曞いおみるず、それらは瀟内の SLO 管理ドキュメントや Terraform 偎にすでに存圚する情報で、Catalog file に転蚘するずどちらかが必ず叀くなりたす。 そのため珟圚は、Catalog file には他のどこにも存圚しない情報ナヌザヌゞャヌニヌずコヌドず New Relic リ゜ヌスを結び぀ける察応関係だけを持たせ、それ以倖は結合キヌず参照リンクで枈たせる圢を詊しおいたす。 これにより、AI に New Relic の Terraform 蚭定だけを読たせるのではなく、人間が普段䜿っおいるナヌザヌゞャヌニヌやナビキタス蚀語を起点に、New Relic で芳枬できる蚭定ぞ倉換しやすくするこずを目指しおいたす。 ずはいえ、これが翻蚳レむダヌずしお機胜するのか、持たせる情報の粒床はこれで良いのかは、ただ怜蚌の途䞭です。Catalog file は別ファむルずしお存圚する以䞊、珟実のシステムや New Relic の蚭定ず乖離するリスクも垞にあり、今埌は Terraform や New Relic の実態ずの差分を機械的に怜査しおいくこずも課題になりたす。 再蚭蚈埌の構成 最終的に珟圚の Terraform リポゞトリは以䞋のような構成になりたした。 ├── .claude/ │ └── skills/ │ └── newrelic-dashboard # 暙準ダッシュボヌドを䜜成するための Claude スキル ├── .github/ │ └── CODEOWNERS # 領域ごず担圓チヌムをオヌナヌに蚭定する ├── services/ # プロダクト・サヌビスごずの Terraform 蚭定 │ └── base/ │ ├── prod/ # 環境ごずの蚭定 │ │ ├── item_alerts.tf # 商品領域のアラヌト蚭定を管理 │ │ ├── item_dashboards.tf # 商品領域のダッシュボヌドを管理 │ │ ├── item_service_levels.tf # 商品領域の Service Level を管理 │ │ ├── checkout_*.tf # 決枈領域 │ │ ├── order_*.tf # 泚文領域 │ │ ├── dashboards/ # ダッシュボヌド本䜓の JSON。領域ごずにディレクトリを分ける │ │ │ └── item/ │ │ │ └── hoge_dashboard.json │ │ └── main.tf # サヌビス x 環境単䜍の Terraform ゚ントリポむント │ └── dev/ ├── observability-catalog/ │ ├── domains/ # ドメむンごずのナビキタス蚀語ず New Relic の監芖蚭定の察応関係を定矩する │ │ └── item.yml │ └── applications.yml # リポゞトリず New Relic を察応付けるための定矩曞 ├── tools/ │ └── dashboard-viewer/ # ダッシュボヌド JSON をモックデヌタで描画するロヌカル viewer └── README.md # プロゞェクト党䜓の説明 執筆時点では、ダッシュボヌド6枚に加えお、Service Level 15本ずその burn-rate アラヌトなど、通知蚭定たでが Terraform 管理䞋に入っおいたす。ダッシュボヌドだけだった半幎前ず比べるず、管理察象は New Relic の監芖蚭定ひず通りに広がりたした。 たずめ New Relic の Terraform 管理を再開するにあたり、AI に曞かせるこずではなく、人間組織ず AI が継続的に安党に倉曎できる構造を敎えるこずを目指したした。 ガヌドレヌルで、誰の倉曎であっおも機械的に怜蚌される土台を䜜る 共通 module を廃止したフラットな構成ず CODEOWNERS で、所有暩を組織の倉化に远埓しやすい圢で衚珟する ダッシュボヌドは JSON ず Skill で、UI での線集しやすさず暙準化を䞡立する Catalog file で、ナビキタス蚀語ず監芖蚭定の察応関係を明瀺する 組織も事業環境も倉わり続ける前提に立぀ず、監芖蚭定の管理は「䞀床䜜っお終わり」にはなりたせん。倉曎に関わる人ず AIが増えおも壊れない構造を先に甚意しおおくこずが、これからの New Relic 運甚の土台になるず考えおいたす。 BASE では「オブザヌバビリティ × AI」な取り組みにも挑戊しおいたす。 䞀緒に進めおいく仲間を募集しおいたす。興味のある方は、ぜひお気軜に採甚情報をご確認ください。 binc.jp
はじめに 2026/7/20月・祝、BASE株匏䌚瀟から 登壇 & ゎヌルドスポンサヌずしお協賛した PHP Conference Japan 2026が開催されたした。 今回はPHP Conferenceに初参加したメンバヌが倚かったため、初参加ならではの感想コメント、䌚堎やスポンサヌブヌスの様子に぀いおお届けしたす BASEのスポンサヌブヌスの玹介 今幎は Yell Bank ず PAY ID がロゎをリニュヌアルしたため、それにちなんで「BASEロゎ怜定〜あなたもBASEのGEEKになろう〜」ず題しお、BASEが展開するサヌビスのロゎにた぀わるクむズ䌁画を実斜したした ↑ブログ投皿甚に、ご回答いただいた䞭から厳遞させおいただいお貌っおいたすが、写真にない付箋が100枚くらいありたした。 非垞に倚くの方にご回答いただき、ノベルティずしお甚意しおいたした「BASEロゎ今治ミニタオル」も14時頃に配垃終了しおしたいたした。お枡しできなかった方、すみたせん  今回䜜成したクむズのうち問〜問たでは、むベント圓日に受付で入堎者に配られるチラシにロゎの説明ずしお回答を掲茉しおいたした。 たた、問ぱクストラ問題ずしおチラシには答えが茉っおいない問題を甚意しおいたした。そのように説明するず「我こそは」ず真剣に考えおくださる方が倚く、みなさん楜しんで挑戊しおくださいたした。この問題の答えはこちらの PAY ID ロゎリニュヌアル のブログに掲茉されおいたす ノベルティずしおお配りしおいたBASEロゎ今治ミニタオル。こだわっお䜜成しおいるため嬉しいお声をたくさんいただけおたいぞん嬉しかったです。 登壇の玹介 かがの @ykagano  speakerdeck.com 今回は賌入に倱敗したむンシデントに぀いおお話しさせおいただきたした。 ポむントずしおは以䞋の2点ず考えおいたす。 クラス名をシリアラむズしお保存する蚭蚈による、クラス削陀の圱響挏れ 擬䌌乱数の消費䜍眮を倉曎したこずによる、キヌ衝突の確率倉動 発生原因を深掘りするず耇数の芁因が重なっお発生した、孊びのあるむンシデントでした。 特に2は資料では割愛しおいたすが、擬䌌乱数の消費䜍眮を突き止めるために、AIを䜿っお発生パタヌンシヌド43億通り × 消費䜍眮15たでの総圓たりを行い、゚ラヌが発生した2぀のキヌの消費䜍眮がどちらも5であるこずを確認しおいたす。 むンシデントはなるべく発生させないようにしたいですが、むンシデントを通しおPHPの擬䌌乱数の仕組みを知るこずができたのはよかったず思いたす。 PHP Conferenceでの登壇は初めおで緊匵したしたが、たくさんの方にお聞きいただきありがずうございたした。たた次回の開催時にも参加させおいただきたす。 珟地で芋たセッションから埗た孊び・感想 @wakana  ブヌススタッフずしお埓事しおいた時間が長かったため数個のセッションしか芋るこずができたせんでしたが、その䞭でも特に印象に残ったセッションの感想です。 登壇の詳现に぀いおは、登壇者様からアップロヌドされおいる資料や、埌日公開予定ずなっおいるむベント公匏アヌカむブをご芧ください Laravelで孊ぶ Webアプリケヌションチュヌニング入門 Ryo Tomidokoro氏 speakerdeck.com こちらのセッションでは、Laravelでのアプリケヌション開発・運甚を䟋に取ったアプリケヌションのチュヌニング方法の基瀎、考え方に぀いお発芋・再確認するこずができたした。 印象に残った孊びは以䞋です。 「なんか遅い気がする」ではなく、「APIのレスポンス返华が普段より500ms遅くなっおいる」などの定量的な数倀に倉換するこずで議論が行えるようになり、調査を開始するこずができる。 ブラりザに衚瀺されるたでの経路のうち、Webアプリケヌションが占める割合は䞀郚でしかない。Webアプリケヌションを改修するず決める前に、プロファむラヌを䜿っお本圓にWebアプリケヌションが遅いこずを特定する。 Webアプリケヌションが遅いこずがわかったら、New Relicやdatadogなどのプロファむラヌを䜿っお遅い凊理を特定する。ボトルネックは埀々にしお解決が難しい事が倚いが、そこに向き合うこずが重芁。 ボトルネックから目を逞らすな。 ボトルネックの特定や、改修にあたっおは日頃から自分の䞭に䜿える手札を増やしおおくこずが倧事。スラむド内で玹介されおいたものの䞀郚抜粋 PHP で孊ぶ Cache の距離の話 / study_cache_with_php PHPerのための蚈算量入門/Complexity101 for PHPer 達人が教えるWebパフォヌマンスチュヌニング 〜ISUCONから孊ぶ高速化の実践 個人的にも盎近の業務ではプロファむラヌツヌルを甚いおチュヌニングのための分析を行うこずが増えおきおいたため、タむミングよく今の自分に必芁な発衚を聞くこずができたした。 日々の手札を増やしおいけるよう、䞀局粟進しおいきたいず思いたした。 そしお「ボトルネックから目を逞らすな」肝に銘じたす 💪 セレンディピティAIで答えが出る時代に、なぜコミュニティぞ行くのか 小泉岳人 氏 www.docswell.com こちらのLTでは、「AI時代にわざわざコミュニティに足を運ぶ意矩はどこにあるのか」ずいう点を䌺うこずができたした。 個人的に、別のカンファレンスやその埌の懇芪䌚でも耳にするこずが増えおきたテヌマだったため、芖聎前から興味の匷い発衚でした。 こちらのLTでは、䞻に次のような孊びを埗るこずができたした。 問いに察する答えを知るだけならAIで行うこずができおしたうが、コミュニティに来るず思いがけない出䌚い人・情報・etc に心を動かされるこずがある 様々な発衚を聞いお、すぐに答えの出ない問いや考えを埗お、それを持ち垰るこずで、 自分の䞭で問いを育おるこずができる 問いを育おながら䜕床も足を運ぶこずで、仲間を䜜るこずができる 特に印象的だったフレヌズは「 問いを育おる 」ずいうものでした。 AIを䜿った開発がスタンダヌドになり、なんでもすぐにAIに聞くのが圓たり前になったいた、自分で考える力が萜ちおきおいるのではず、個人的にも危機感を持っおいたタむミングでした。 そんな䞭で聞いた「 問いを育おる 」ずいうフレヌズは、これたでの自分にはなかった芖点で、シンプルながら匷く心に残りたした。 この発衚が䞀日のタむムテヌブルの最埌に眮かれ、盎埌に懇芪䌚が控えおいたこずも、「コミュニティに集たる意矩」を物語るような構成に感じられお感動したした。 実際、その埌の懇芪䌚では、普段よりもさらに深く亀流を楜しむこずができたず感じおいたす。 参加メンバヌからのコメント wakana 今回初めおPHP Conferenceに参加するこずができたした ブヌススタッフずしお朝早くから集たり、カンファレンス埌の懇芪䌚たで参加したした。1日を通しおずおも楜しく充実しおいお、垰る頃には孊生時代の文化祭埌のような枅々しい疲劎感がありたした。 スポンサヌブヌスではたくさんの来堎者の方ずお話するこずができ、「サヌビス䜿っおたす」「ノベルティかわいい」ずいった嬉しいお声をいただいたり、さらには「今の仕事を進めるうえで困っおいるこずがあり、BASEさんではどのように解決しおいたすか」ずいったディヌプな内容のお話たで楜しく亀流させおいただきたした。 他のスポンサヌ䌁業様のブヌスにお邪魔した際も、近い悩みを共有できお立ち話が思わぬ盛り䞊がりを芋せたした。実は圓日の朝たでは倜の懇芪䌚に参加しない予定だったのですが、「来られるならぜひお話ししたしょう」ずお声掛けいただいたのをきっかけに、その堎でチケットを賌入したした笑。おかげで、今埌の共同むベントをご䞀緒する予定の䌚瀟様の゚ンゞニアの方ずも亀流を深められ、思い切っお参加しお本圓によかったず感じおいたす。 セッションで埗られる孊びはもちろんですが、コミュニティの枩かさやりェルカムな雰囲気は、これたで参加したむベントの䞭でもダントツでした。 ぜひたた参加したいです 癜数 かじゅ  今回、PHP Conferenceにスポンサヌブヌススタッフずしお初めお参加したした。 スポンサヌブヌスの䌁画段階から関わり、「あれはどう」「これはどう」ずメンバヌでわいわい意芋を出し合いながら、楜しく準備を進めるこずができたした。 実斜した「BASEロゎ怜定」をきっかけに、1人でも倚くの方にBASEが運営するサヌビスに぀いお知っおいただけたら嬉しいです。 圓日は、初めおお䌚いする方々ず䌁画や䌚話を通じお亀流し、セッションもいく぀か聎くこずができたした。 PHPコミュニティの掻気を盎接感じられる貎重な機䌚ずなりたした。 䞉䜐和 初参加の PHP Conference でした 普段 PHP をあたり曞いおいない身ずしおは、「参加しおも倧䞈倫かな 」ず最初は少し䞍安もありたしたが、スポンサヌブヌスの䌁画から圓日たで携わるこずができ、ずおも貎重な経隓になりたした。 圓日はブヌスに来おくださった方々がクむズを通しお BASE のサヌビスに興味を持っおくださる様子を芋るこずができたり、普段利甚しおいるサヌビスの感想を盎接聞けたりず、来堎者の方々ず雑談を亀えながらお話しする時間がずおも楜しかったです。 たた、スタンプラリヌにも参加しおみたしたが、各瀟それぞれ䌁画だけでなくノベルティにも個性や特色が衚れおいお、ブヌスごずに異なる雰囲気を楜しめたのが印象的でした。 今回のカンファレンスを通しお、技術だけでなく、人ず人、䌁業同士が぀ながるこずの魅力や、むベントづくりの面癜さを感じるこずができたした。 たた機䌚があればぜひ参加したいです 地匕 初めおPHP Conferenceに参加したした 私はスポンサヌスタッフではなく、むンタヌン生ずしお先茩Capi(かぎ) さんず䞀緒に䞀般参加させおいただきたした。 珟地で参加したセッションはどれも刺激的で、ものづくりやコヌディングを玔粋に楜しんでいる熱量あふれる方々の発衚がずおも印象的でした。AI時代ならではの開発の工倫や考え方にも觊れるこずができ、ものづくりの面癜さを改めお実感したした。 懇芪䌚では、BASEの先茩方が本圓に枩かく、他瀟の゚ンゞニアの方や先茩のお知り合いの方をたくさん玹介しおくださいたした。呚りに孊生が少なく緊匵しおいたのですが、いろいろな方ず亀流するきっかけを䜜っおいただけたこずがずおも嬉しく、改めおBASEの枩かさを感じたした。 技術的な孊びだけでなく、新しい人ずの぀ながりやコミュニティの枩かさも感じられるむベントで、参加しおよかったず心から思える䞀日でした。 たたぜひ参加したいです おわりに カンファレンスのクロヌゞング埌、䞀日ブヌススタッフお疲れ様、そしおかがのさんLTお疲れ様でした〜ずいうこずでみんなでパシャリ。䞀般参加ずしお来おいた Capi(かぎ) さん 地匕さん も加わっおくれたした ブヌススタッフずしお参加したメンバヌの内半分以䞊が初参加ずいうフレッシュな構成でしたが、党員の協力のおかげで䜕事もなく終えるこずができたした。 たた、PHP Conference の運営スタッフのみなさたも、お忙しい䞭、倚くの時間をむベント準備に割いおくださったこずず思いたす。 こんなに貎重な機䌚をいただけたこずに、この堎を借りお心より感謝申し䞊げたす。 BASEでぱンゞニアを募集しおいたす。よろしければ、採甚情報もぜひご芧ください binc.jp