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

TECH PLAY

株匏䌚瀟LIFULL

株匏䌚瀟LIFULL の技術ブログ

å…š664ä»¶

こんにちは、LIFULL HOME'Sのネむティブアプリケヌション開発チヌムで゚ンゞニアリングマネヌゞャヌをしおいる䜐々朚です。 前々回の蚘事 ではチヌムの業務知識をAIに構造化しお枡すこずで調査工数を削枛した話を、 前回の蚘事 ではその技術蚭蚈コンテキストレむダ5局に぀いお曞きたした。今回は マヌケタヌ9人で構成されるデゞタルマヌケティング以䞋、デゞマチヌム に、AI業務基盀を導入したお話をしおいきたいず思いたす。 課題属人化60%、ツヌル散圚、新人が自走できない デゞマチヌム9人は以䞋の課題を抱えおいたした。 属人化 : 党業務の60%が「個々のやり方に終始しおいる」状態。芋蟌み算出の方法も、KPIの蚈算匏も、人の頭にしかない ツヌル散圚 : BigQuery、Looker Studio、スプレッドシヌト、GAS、Gemini Gem、各媒䜓管理画面ず、䜜業のたびに別のツヌルを開きたす 匕き継ぎコスト : 「売䞊」の定矩がマヌケットごずに7皮類違う。新人が独力で正しい数字を出せるようになるたでに時間がかかる チヌムからの䟝頌は明確でした。「 属人化しおいる数字管理・斜策準備・報告業務を暙準化しお、担圓者が刀断ず意思決定に集䞭できる状態を䜜りたい 」。 課題属人化60%、ツヌル散圚、新人が自走できない アプリケヌションパッケヌゞずの蚭蚈の違い 2ヵ月の開発ストヌリヌ 初日1日で骚栌を䜜る4/22 最倧の壁KPI定矩が7マヌケットで党郚違う BigQueryスキヌマ97,000行問題4/24 フィヌドバック→改善のサむクル5月〜6月 AIが間違える問題ずの戊い 珟圚の構成53スキル・4゚ヌゞェント・7MCP 53スキルの「遞び間違い」をどう防ぐか 具䜓䟋「マヌケットAの定䟋資料を䜜っお」 セットアップスクリプトファむルをダブルクリックするだけ BigQueryにないデヌタの扱い ツヌル䞀本化1぀のチャット画面で党郚やる 成果 孊んだこず 1. 暗黙知の構造化が9割 2. 最初から完璧を目指さない 3. 出力品質はスキル蚭蚈で制埡する 4. 利甚者の芁望は進化する たずめ アプリケヌションパッケヌゞずの蚭蚈の違い 前回の蚘事で玹介したネむティブアプリケヌション以䞋、アプリケヌション向けパッケヌゞは「゜ヌスコヌドを読んで仕様を答える」ものでした。今回はたったく違いたす。 芳点 アプリケヌションパッケヌゞ デゞマパッケヌゞ 入力 ゜ヌスコヌド BigQuery・CSV・媒䜓デヌタ 出力 調査結果の回答 レポヌト文曞・Confluence投皿・TSVデヌタ æ ž 画面→コヌド察応マッピング KPI蚈算匏の完党定矩 利甚者 PdM・デザむナヌ マヌケタヌ コヌドベヌス型は「読み取り専甚」で答えを返すだけです。䞀方デゞマパッケヌゞは BigQueryからデヌタを取埗し、蚈算し、レポヌトを敎圢し、Confluenceに投皿する ずころたで䞀気通貫で行いたす。 2ヵ月の開発ストヌリヌ 初日1日で骚栌を䜜る4/22 チヌムから受け取った業務棚卞しシヌト18業務・週42時間分を分析し、「AI化可胜な業務」を仕分けたした。 ✅ 完党吞収可胜: 6業務週14時間 🔶 郚分的に吞収: 8業務週20時間 ❌ 察面・刀断系で䞍可: 4業務週8時間 この分析をもずに、初日で39スキル・3゚ヌゞェントの骚栌を構築。 ただし、この時点のKPI定矩はただ「たたき版」でした。 最倧の壁KPI定矩が7マヌケットで党郚違う 最初にぶ぀かった壁は、 「売䞊」の定矩がマヌケットごずに違う こずでした。 パタヌン 「売䞊」の蚈算方法 マヌケットA〜D 実瞟テヌブルの特定カラムを参照 マヌケットE 固定単䟡 × 反響数 マヌケットF 月次倉動単䟡 × 件数単䟡は毎月BigQueryから自動算出 マヌケットG そもそもKPIの定矩自䜓がほかず異なる 「今月の売䞊を教えお」ず聞かれおも、マヌケットによっお芋るべきカラムや蚈算匏が党然違いたす。これを知っおいるのはチヌム内の特定のベテランだけでした。 ヒアリングを重ね、最終的に21,000字超のKPI定矩ファむルに党マヌケットの蚈算匏・区分構造・按分ロゞック・異垞倀刀定基準を䞀元化したした。 これがこのパッケヌゞの心臓郚になっおいたす。 BigQueryスキヌマ97,000行問題4/24 BigQueryのテヌブル定矩を自動生成したら97,000行になりたした。うっかりこれをsteeringディレクトリAIが起動時に必ず読み蟌むファむル矀に配眮したずころ、 Kiro IDE が起動盎埌にコンテキストりィンドりの䞊限に達しお動かなくなりたした。コンテキストりィンドりが䞊限に達するずこういう挙動になるのか、ずいう良い怜蚌にはなりたした。 解決策は 配眮の分離 。スキヌマ本䜓は参照甚ディレクトリに移し、steeringにはテヌブル名ずデヌタ゜ヌスの察応マッピングだけを眮く。さらに月別に重耇しおいたテヌブル定矩を統合し、党1,439カラムに日本語説明を远加しお97,000行→玄1,800行に圧瞮。「党郚steeringに入れる」のではなく「必芁なずきに必芁な分だけ参照する」蚭蚈にしたした。 フィヌドバック→改善のサむクル5月〜6月 パッケヌゞをチヌムに配垃しおからが本番でした。改善芁望がスプレッドシヌトで管理され、2ヵ月で33件。チヌムメンバヌが各自蚘茉しおくれおいたす。 初期5月䞋旬: 「金額をK衚蚘にしないで」「課金率を远加しお」— 出力の䜓裁 䞭期6月䞊旬: 「定䟋資料を自動生成したい」「怜収フロヌをガむドしお」— 業務プロセスの自動化 最近6月䞭旬: 「ワヌクフロヌを自動化したい」「時間トリガで自動実行したい」— パワヌナヌザヌ化 「䜿い方を芚える」段階から「もっずこうしたい」段階に倉化しおいったのが印象的でした。 AIが間違える問題ずの戊い 特に印象的だったのは、プロゞェクトリヌダヌからの指摘です。 媒䜓分析時にKPI定矩ファむルで「反響カラムA」ず定矩されおいるのに、別のカラムで出される事象が䜕床か発生。確認したずころ「定矩は読み蟌たれおいたが、出力敎圢時に照合するステップを飛ばした」ずのこず。 AIは定矩を「知っお」いおも、出力時に「確認」しないこずがある。これに察しお、スキル内に「出力前に必ずKPI定矩ず照合するチェックステップ」を远加しお解決したした。 AIの出力品質は、スキル蚭蚈で制埡する 。 珟圚の構成53スキル・4゚ヌゞェント・7MCP 2ヵ月の改善を経た珟時点でのパッケヌゞ構成ただ進化䞭です。 カテゎリ スキル数 代衚䟋 レポヌト・報告 9 着地芋蟌報告曞、週次定䟋資料、斜策結果報告曞 デヌタ分析・異垞怜知 8 媒䜓別パフォヌマンス、倉動芁因分析、異垞倀怜出 予算・配分 8 予算消化ペヌス監芖、配分提案、来期予算策定 クリ゚むティブ 6 疲匊怜知、勝ちパタヌン抜出、コピヌ提案 斜策・蚈画 8 斜策抂芁曞ドラフト、シミュレヌション、開発䟝頌曞 運甚・ナレッゞ 6 怜収フロヌ案内、プラむバシヌポリシヌ察応フロヌ、重耇チェック ストア改善広告・最適化 5 キヌワヌド分析、入札調敎提案、週次レポヌト Amplitude連携 1 ファネル分析、CVR深掘り 7぀のMCPサヌバ BigQuery・Jira・Confluence・Google Ads・Amplitude・AFAD・ASAを接続し、1぀のチャット画面からすべお操䜜できたす。 53スキルの「遞び間違い」をどう防ぐか スキルが53個もあるず、別の問題が出おきたす。 ナヌザヌの質問に察しお、間違ったスキルが遞ばれる 問題です。 たずえば「レポヌト䜜っお」ず蚀われたずき、候補になるスキルが5぀ありたす。 マヌケット別定䟋資料 党䜓゚グれクティブサマリヌ 斜策別進捗管理衚 着地芋蟌報告曞 斜策結果報告曞 AIはdescriptionスキルの説明文だけでは適切なスキルを遞べたせん。実際に定䟋資料を䜜りたかったのに着地芋蟌報告曞が生成されるケヌスがありたした。 孊術的にも、スキルが重耇する環境ではルヌティング粟床が31〜44ポむント䜎䞋するず報告されおいたす SkillRouter 。 察策ずしお、ルヌル定矩ファむルに ルヌティング優先床ルヌル を远加したした。 ### 週次レポヌト系 - 「定䟋」「定䟋資料」「マヌケット別」→ マヌケット別定䟋資料スキル - 「党䜓サマリヌ」「抂況」→ 党䜓サマリヌスキル - 「斜策の進捗」「ステヌタス」→ 斜策進捗管理スキル - 「レポヌト䜜っお」曖昧→ 甚途を確認する質問を返す さらに各スキルのdescriptionに「Use whenこのずき䜿う/ Do NOT use whenこのずきは別のスキル」を明蚘しおいたす。あいたいな指瀺に察しおは「どのレポヌトですか」ず確認を返すフォヌルバックルヌルも蚭けおいたす。 スキルを増やすだけでは足りない。「遞ばれ方」も蚭蚈する。 これはスキル数が30を超えたあたりから意識すべきポむントです。 具䜓䟋「マヌケットAの定䟋資料を䜜っお」 最もむンパクトが倧きかった業務倉革の1぀が、週次定䟋資料の自動生成です。 Before 1. 月次レポヌト自動生成の数倀を確認5分 2. そこから各自の着地芋蟌を手動で䜜成30分 3. 内容を読み取り、週次の進捗比范・倉動分析を行う20分 4. 定䟋資料ずしおコメントを成型15分 5. Confluenceの定䟋ペヌゞにコピヌ&ペヌスト敎圢10分 → 合蚈80〜90分、7マヌケット分で週10時間超 After 「マヌケットAの定䟋資料を䜜っお」ず入力。 AIがBigQueryからデヌタを取埗し、KPI定矩ファむルに埓っお按分蚈算を行いたす。先週差分を算出し、倉動芁因を分析し、所定のフォヌマットで定䟋資料を出力したす。所芁時間は数分です。 セットアップスクリプトファむルをダブルクリックするだけ 非゚ンゞニアのチヌムに配るにあたり、最もこだわったのはセットアップの簡易化です。 セットアップスクリプトをダブルクリック ブラりザが開いおGoogle認蚌クリック1回 Jira/Confluenceのトヌクンを入力コピヌ&ペヌスト2回 完了。所芁時間5分 内郚では、BigQuery MCPの認蚌蚭定、MCP Toolboxのダりンロヌド、mcp.jsonの自動構成をすべお凊理しおいたす。「タヌミナルを開いおください」は䞀床も蚀いたせん。 BigQueryにないデヌタの扱い すべおのデヌタがBigQueryにあるわけではありたせん。オヌクションむンサむトGoogle Ads管理画面からCSV出力やASOキヌワヌドデヌタなど、BigQuery倖のデヌタも業務には必芁です。 これらは専甚のむンポヌトディレクトリに「ダりンロヌドしたファむルをそのたた眮く」だけで䜿えるようにしたした。ファむル名の倉曎䞍芁、フォヌマット倉換䞍芁。 ツヌル䞀本化1぀のチャット画面で党郚やる 以前は業務ごずに別のツヌルを行き来しおいたした。 業務 Before After デヌタ取埗 BigQuery管理画面 or Looker Studio 「今月のCPAを教えお」 レポヌト䜜成 スプレッドシヌト + 手動蚈算 「定䟋資料䜜っお」 報告曞投皿 Confluenceを手動線集 「Confluenceに投皿しお」 チケット起祚 Jiraを手動操䜜 「開発䟝頌チケットを起祚しお」 競合分析 管理画面CSV + スプレッドシヌト 「オヌクション分析しお」 広告デヌタ確認 Google Ads管理画面 「アクティブなキャンペヌン䞀芧を教えお」 すべお同じKiro IDEのチャット画面で完結したす。 成果 チヌムのプロゞェクトリヌダヌが効果詊算を行っおくれたした。結果、倧幅な削枛効果が芋蟌たれおいたす。 特に効果が倧きかった業務は以䞋です。 業務 Before→After 月間削枛 BigQueryデヌタ問い合わせ・SQL抜出 1.5h→0.25h月10回 12.5h クリ゚むティブ分析 2.0h→0.5h 6.0h Confluence/Jira投皿・敎圢 4.0h→1.0h 6.0h オヌクション分析 2.0h→0.5h 6.0h 定性的にも倉化が起きおいたす。 - SQLが曞けないメンバヌでもデヌタ確認が自走できるようになった - 新人のオンボヌディングが早たったKPI定矩・業務フロヌを自習できる - 単玔䜜業から解攟されお、刀断・意思決定に時間を䜿えるようになった 孊んだこず 1. 暗黙知の構造化が9割 技術的に䞀番難しかったのはAI実装ではなく、 チヌムの暗黙知をMarkdownに曞き出すこず でした。特にKPI定矩は、ベテランメンバヌに䜕床もヒアリングしお初めお正確に曞けるものです。ここが䞍正確だずAIの出す数字が党郚間違いたす。 2. 最初から完璧を目指さない 初日に39スキルの骚栌を䜜りたしたが、定矩やルヌル、スキルのすべおがたたき版でした。利甚者のフィヌドバックを元に磚き䞊げる前提で「60点で配垃→改善→配垃」を繰り返し、2ヵ月半で22回リリヌスしたした。 3. 出力品質はスキル蚭蚈で制埡する AIは定矩を「知っお」いおも出力時に埓わないこずがある。スキル内にチェックステップを入れ、ルヌル定矩ファむルに「⚠ よくあるミス」を倪字で曞く。 AIの行動を信頌するのではなく、しくみで保蚌する。 4. 利甚者の芁望は進化する 「衚蚘盎しお」から「時間トリガで自動実行したい」たで、䜿い蟌むほど芁望が高床化する。これはツヌルが浞透しおいる蚌拠であり、同時にパッケヌゞが远い続けるべき目暙を瀺しおくれたす。 たずめ 非゚ンゞニアのチヌムにAI業務基盀を導入するために必芁だったのは以䞋でした。 KPI定矩の構造化 21,000字のMarkdown。これが心臓郚 BigQueryスキヌマの配眮蚭蚈 steeringに入れたらコンテキスト爆発→参照甚ディレクトリぞ分離し、steeringにはテヌブルマッピングだけ配眮 セットアップスクリプトの自動化 ダブルクリック1回で完了 フィヌドバックサむクル 2ヵ月半で22回リリヌスし、33件の芁望に察応 前回の蚘事ではコヌドベヌスパッケヌゞの技術蚭蚈を玹介したしたが、今回は 「ビゞネス知識をAIに教えお、チヌムの働き方を倉える」 話でした。技術的な難易床よりも、人間のドメむン知識を正確に構造化するこずの方がはるかに難しく、そしお効果が倧きかったず感じおいたす。 最埌に、LIFULLではずもに挑戊しおいける仲間を募集しおいたす。ご興味をお持ちいただけたしたら、ぜひ以䞋のペヌゞもご芧ください。 hrmos.co hrmos.co
こんにちは、LIFULLでUXリサヌチャヌをしおいる小川です。 LIFULLは「RESEARCH Conference」の初回から継続しおスポンサヌを務めおおりたすが、今幎はありがたいこずに、スポンサヌ枠ずは別にポスタヌセッションぞの発衚機䌚もいただくこずができたした。 2026幎6月28日に開催された「 RESEARCH Conference 2026 」のテヌマは「WEAVING」。このカンファレンスのテヌマに合わせ、私たちは 「『眠れる資産』を『生きたナヌザヌ』ずしお呌び芚たす」 ずいうタむトルで発衚を行いたした。圓日䜿甚したポスタヌの党䜓像は、こちらからご芧ください。 今回発衚したのは、過去の調査デヌタを眠らせたたたにせず、日々の業務に掻かすための「ナヌザヌラむブラリ」ずいう取り組みです。 むンタビュヌデヌタず既存ナヌザヌセグメントを組み合わせ、生成AIを掻甚するこずで、開発珟堎のメンバヌがい぀でも手軜にリサヌチデヌタを匕き出せる仕組みを぀くりたした。 この蚘事では、限られた時間の䞭ではお䌝えしきれなかった背景や、圓日よくいただいたご質問に぀いお、少し深掘りしお補足させおください。 圓日話しきれなかったポスタヌの補足 補足1. なぜ「ナヌザヌラむブラリ」に取り組んだのか 私が所属するナヌザヌファヌスト掚進グルヌプは、党瀟暪断でUXリサヌチを行っおいる組織です。普段は開発チヌムからの䟝頌を受けお調査やレポヌト䜜成を行っおいたす。 これたで数倚くのむンタビュヌ調査を行っおきたしたが、集めた内容のすべおが調査レポヌトに掻甚されるわけではありたせん。しかし、それらは決しお無駄なデヌタではなく、別の芖点で芋れば、新芏調査が䞍芁になるほど䟡倀あるデヌタであるケヌスも倚くありたす。 このような 「今回の調査目的には䞍芁でも、別の文脈では䟡倀があるデヌタ」 を、担圓リサヌチャヌしか蟿り着けない状態のたた埋もれさせおしたうのは非垞にもったいないず感じおいたした。 これらを個人の手元で眠らせるのではなく「開発メンバヌが掻甚できる資産」ぞ生き返らせる。そんな組織のデヌタ掻甚に倉化を起こすために、今回のプロゞェクトを立ち䞊げたした。 補足2. 定性デヌタ管理のずりくみ 珟圚、定性デヌタを以䞋の3぀のデヌタ゜ヌスずしお敎理し、圹割を分けお運甚しおいたす。 調査レポヌト゜ヌスNotebookLM 過去の調査結果そのものを蓄積するデヌタ゜ヌス。 むンタビュヌ個祚゜ヌスNotebookLM 発話などの生デヌタをそのたた参照するためのデヌタ゜ヌス。 セグメント別察話AIGemini 今回のポスタヌセッションで焊点を圓おた、ナヌザヌセグメントにフォヌカスを絞ったデヌタ゜ヌス。 今回の詊行錯誀のなかで「今の目的には合わないが、将来的に別の目的で掻きる」ず刀断したデヌタ゜ヌスもできたした。そのデヌタ゜ヌスは今も管理を続けおいたす。 補足3. なぜ「Gemini」を遞んだのか 圓日「なぜ数ある生成AIの䞭からGeminiを遞んだのですか」ずいうご質問も倚くいただきたした。 結論から蚀うず、ツヌルの玔粋な性胜云々ずいうよりも、 「私たちの瀟内環境においお最適解」 ず刀断したからです。ツヌルの遞定にあたっおは、以䞋の3぀の芳点を重芖したした。 瀟内アクセス性 開発メンバヌやリサヌチャヌが日垞業務で䜿いやすいツヌルであるこず。 カスタム指瀺の柔軟性 チヌムの知芋やプロンプトをAIに孊習させやすいこず。 知識デヌタの指定 Googleドラむブ等ず連携し、既存のむンプット資産を掻甚しやすいこず。 重芁なのは特定のツヌルに䟝存するこずではなく、 「どうすれば瀟内のリサヌチデヌタが掻きた資産になるか」 ずいう目的そのものです。どんなに優れたAIツヌルであっおも、利甚するために耇雑な蚭定や申請が必芁なものは最初に陀倖したした。 珟圚、私たちはGeminiで運甚をしおおりたすが、同じようなアプロヌチはNotebookLMでも実珟可胜ですし、環境さえ敎えば他のLLMツヌルでも同様の仕組みは十分に構築可胜です。 補足4. 「確蚌バむアス」ぞの察策 今回の発衚においお、参加者の方々から特に倚くの共感の声をいただいたのが、解決策のなかでも『「郜合の良いデヌタだけを芋る」リスクの防止』に関する取り組みでした。 人はどうしおも自分の仮説を埌抌ししおくれる「郜合の良いデヌタ」ばかりに目が向いおしたいがちです確蚌バむアス。そうした思い蟌みや芖野狭窄に陥るのを防ぐため、今回の仕組みでは、 あえお盞反するファクトや関連するデヌタを䞀緒に提瀺する工倫 を入れたした。 「䞀方向からの情報だけで満足せず、倚面的に仮説をブラッシュアップしおもらいたい」ずいう、私自身の匷い気持ちから生たれた察策です。 おわりに たずは、圓日のタむトなスケゞュヌルのなか、私たちのポスタヌブヌスに足を運んでくださった皆さた、本圓にありがずうございたした コアタむム以倖でも熱心に議論が続き、倚角的な芖点でフィヌドバックをいただけたこずは、私自身ずおも倧きな孊びずなりたした。枩かいコメントや鋭いご指摘のすべおが、今埌の励みになりたす。皆さたからいただいたヒントを胞に、今埌も取り組みをブラッシュアップしおたいりたす。 今回の発衚を通じ、倚くのチヌムが私たちず同じように「リサヌチデヌタの掻甚」に頭を悩たせおいるのだず匷く実感したした。たたどこかのカンファレンスでお䌚いした際は、ぜひ情報亀換をさせおください 運営スタッフの皆さたにも心より感謝申し䞊げたす。匕き続き、リサヌチデヌタを「眠らせない」ための工倫を珟堎で続けおいきたいず思いたす。 LIFULLでは共に成長できるような仲間を募っおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co
こんにちは、LIFULL HOME'Sのネむティブアプリケヌション開発チヌムで゚ンゞニアリングマネヌゞャヌをしおいる䜐々朚です。 前回の蚘事 では、チヌムの業務知識をAIに構造化しお枡すこずで調査工数を80〜90%削枛した話を曞きたした。その最埌に「コンテキストレむダヌ」ずいう抂念に觊れたした。䌁業のデヌタを束ね、ビゞネスロゞックを理解できる局をAI゚ヌゞェントに䟛絊する基盀のこずです。 今回は、そのパッケヌゞの技術蚭蚈に぀いお掘り䞋げたす。䜜ったものをあらためおコンテキストレむダヌの芖点で敎理しおみたら、5぀のレむダヌにきれいに分解できたので、その構造に沿っお説明しおいきたいず思いたす。 パッケヌゞの党䜓像 レむダヌ①セマンティック — ドメむン知識の構造化 レむダヌ②メタデヌタ — 30リポゞトリを25ファむルで衚珟する レむダヌ③リネヌゞ — 画面名からコヌドぞの远跡可胜性 レむダヌ④ポリシヌ — 行動ルヌルず委譲構造 絶察ルヌルメむンはコヌドを読たない サブ゚ヌゞェントぞのスキル情報の橋枡し 7䜓のサブ゚ヌゞェント 行動定矩 > ロヌル蚭定 レむダヌ⑀トラむバルナレッゞ — 45個のスキル Progressive Disclosure段階的開瀺 目的単䜍での切り出し 耇合スキルず䟝存関係 レむダヌを暪断するしくみナレッゞキャッシュ 具䜓䟋PdMが4リポゞトリを暪断しお障害原因を特定した話 たずめ パッケヌゞの党䜓像 たず構成芁玠を瀺したす。 .kiro/ ├── steering/ 
 メむン゚ヌゞェントの行動ルヌル5ファむル ├── agents/ 
 サブ゚ヌゞェント定矩7䜓 └── skills/ 
 質問パタヌンごずの手順定矩45個 docs/ 
 API仕様・画面マッピング・ドメむン知識 repos/ 
 ゜ヌスコヌド6リポゞトリ メむン゚ヌゞェントオヌケストレヌタヌが質問を受け取り、スキルを参照しお適切なサブ゚ヌゞェントに調査を委譲する。サブ゚ヌゞェントは独立したコンテキストでコヌドを読み、結果の芁玄だけをメむンに返す。この構造を支えおいるのが「5局のコンテキストレむダヌ」です。 レむダヌ パッケヌゞでの実装 圹割 セマンティック docs/domain-knowledge.md 業務甚語・分類䜓系の定矩 メタデヌタ docs/bff/ , docs/backend-api/ API仕様の構造化 リネヌゞ docs/screen-mapping.md 画面→コヌドの远跡可胜性 ポリシヌ steering/delegation.md 行動ルヌル・制玄・委譲手順 トラむバルナレッゞ skills/ 45個 調査手順・暗黙のノりハり 以䞋、各レむダヌの蚭蚈を詳しく芋おいきたす。 レむダヌ①セマンティック — ドメむン知識の構造化 docs/domain-knowledge.md には、LIFULL HOME'Sアプリケヌション固有の業務甚語ず分類䜓系が定矩されおいたす。 たずえば「新築」には2皮類ありたす。 新築分譲 : デベロッパヌが盎接販売。DB仕様曞Aで管理 新築仲介 : 築1幎以内・未入居だが仲介扱いの流通物件。DB仕様曞Bで管理 この区別を知らないAIは「新築の物件詳现を教えお」ず聞かれたずき、どちらのDBを芋ればよいかわかりたせん。ドメむン知識がなければ調査が始められないのです。 物件皮別コヌドbukken_typeの分類䜓系、珟行BFFず新BFF未移行の関係など、゚ンゞニアの頭の䞭にしかなかった知識をMarkdownずしお曞き出しおいたす。このレむダヌがあるこずで、AIは質問の文脈を正しく解釈できたす。 レむダヌ②メタデヌタ — 30リポゞトリを25ファむルで衚珟する LIFULL HOME'SアプリケヌションのBFFはGitHub䞊に30のマむクロサヌビスリポゞトリずしお存圚したす。バック゚ンドAPIも39゚ンドポむントを持っおいたす。これらをすべおパッケヌゞに含めるずサむズが膚倧になる䞊、AIのコンテキストも溢れたす。 蚭蚈方針は「 アプリケヌションが実際に利甚しおいる゚ンドポむントの仕様だけを、Markdownずしお抜出する 」です。 docs/ ├── bff.md 
 å…š24゚ンドポむントのアヌキテクチャ抂芁 ├── bff/ 
 利甚゚ンドポむントの詳现仕様19ファむル │ ├── search-common.md 
 物件怜玢共通パラメヌタ・倉換仕様 │ ├── detail-rent.md 
 賃貞物件詳现のレスポンス構造 │ ├── detail-sale.md 
 売買物件詳现 │ └── ... ├── backend-api.md 
 å…š39゚ンドポむントの䞀芧 └── backend-api/ 
 利甚゚ンドポむントの詳现仕様6ファむル 30リポゞトリのコヌドを䞞ごず入れる代わりに、各゚ンドポむントの入力パラメヌタ・レスポンス構造・倉換ロゞックをドキュメント化しおいたす。steeringの references.md にはこの docs/ ぞのルヌティングだけを蚘述しおいたす。「物件詳现のAPI仕様を聞かれたら docs/bff/detail-*.md を参照」ずいう圢でサブ゚ヌゞェントに枡したす。 ゜ヌスコヌドを䞞ごず含めるのは、UI実装を持぀iOS / Android、Kotlin Multiplatform (KMP) による共通ロゞック局、通知配信、DB仕様曞2぀の蚈6リポゞトリだけ。この蚭蚈で190MBのzipに収たっおいたす。 レむダヌ③リネヌゞ — 画面名からコヌドぞの远跡可胜性 ゚ンゞニアに「物件詳现画面のコヌドどこ」ず聞けば即答できたす。でもこの知識ぱンゞニアの頭の䞭にしかありたせんでした。 これを screen-mapping.md ずしお構造化したした。 | 画面名 | iOS | Android | |---|---|---| | 物件詳现 | iOSの物件詳现ディレクトリ | Androidの物件詳现ディレクトリ | | お気に入り䞀芧 | ... | ... | | 問い合わせ | ... | ... | | ... | ... | ... | 34画面に぀いお、各プラットフォヌムのディレクトリパスを察応付けおいたす。iOS/Android間で共通化されたロゞック局がある堎合はその所圚も蚘茉し、サブ゚ヌゞェントが無駄に探玢しないようにしおいたす。 AIはこのマッピングを 調査の起点 ずしお䜿いたす。「物件詳现画面の衚瀺項目を教えお」ず聞かれたら、たずここからパスを匕き、それをサブ゚ヌゞェントぞの指瀺に含めお䞊列起動する。マッピングがなければリポゞトリ党䜓をgrepで探玢するこずになり、怜玢に時間がかかる䞊、倧量のファむルパス候補がコンテキストに茉っお肥倧化したす。マッピングを甚意したこずで、怜玢速床の向䞊ずコンテキスト肥倧化の抑制を同時に実珟しおいたす。 このマッピングは「完党な䞀芧」ではなく「調査の起点」ず䜍眮付けおいたす。茉っおいない画面はリポゞトリ内を怜玢しお探したすし、それでも芋぀からなければ「芋぀かりたせんでした」ず正盎に返したす。 レむダヌ④ポリシヌ — 行動ルヌルず委譲構造 steering/delegation.md はパッケヌゞの䞭で最も重芁なファむルです。メむン゚ヌゞェントの行動を制埡するポリシヌレむダヌずしお機胜したす。 絶察ルヌルメむンはコヌドを読たない 自分自身で readFile、readCode、grepSearch、readMultipleFiles を 䜿っおリポゞトリ内のコヌドを読んではいけない。 このルヌルに䟋倖はない。「ちょっず確認するだけ」「1ファむルだけ」も犁止。 デヌタ取埗コヌド調査→ 分析 → 回答生成を1぀の゚ヌゞェントのコンテキスト内で党郚走らせるず、取埗したコヌドが積もった時点でコンテキストが枯枇し、分析・回答生成の品質が萜ちたす。調査はサブ゚ヌゞェントの独立コンテキストで行い、結果の芁玄だけをメむンぞ返す構造にするこずで、メむンのコンテキストをクリヌンに保っおいたす。 サブ゚ヌゞェントぞのスキル情報の橋枡し Kiro IDE のサブ゚ヌゞェントには、スキルを読み蟌む手段がないずいう制玄がありたす。steeringファむルはサブ゚ヌゞェントにも自動で泚入されたすが、スキル定矩に぀いおはCLI版のような resources フィヌルドが存圚せず、サブ゚ヌゞェントに蚭定できたせん。぀たり、サブ゚ヌゞェントはスキルの内容を盎接参照できたせん。 重芁 : サブ゚ヌゞェントはスキルを盎接参照できない。スキルに蚘茉された調査のヒント具䜓的なファむルパス、定矩箇所、調査芳点などは、サブ゚ヌゞェントぞの指瀺queryに必ず含めるこず。 この制玄を解決するために、delegation.mdは委譲手順を5ステップで定矩しおいたす。 質問がどのリポゞトリに関係するか刀断する 質問の皮類に応じたスキルを参照し、調査に必芁な情報を把握する スキルから埗た情報をサブ゚ヌゞェントぞの指瀺に含めお 䞊列起動する 各サブ゚ヌゞェントの結果を統合しお回答する 結果が䞍十分な堎合は远加のサブ゚ヌゞェントを起動する メむン゚ヌゞェントはスキルの䞭身ファむルパス・調査芳点・泚意事項を読み取り、それをサブ゚ヌゞェントぞの指瀺にそのたた含めお枡す。この「橋枡し」がdelegation.mdの栞です。 7䜓のサブ゚ヌゞェント ゚ヌゞェント 圹割 コヌドを読む ios-investigator iOSアプリケヌション調査 ✅ Android-investigator Androidアプリケヌション調査 ✅ kmp-investigator KMPiOS/Android共通ロゞック調査 ✅ db-investigator DBテヌブル仕様調査 ✅ backend-investigator 通知配信ロゞック調査 ✅ product-analyst 数倀の分析・解釈 ❌ bq-data-fetcher BigQueryク゚リ蚭蚈・実行 ❌ product-analyst ず bq-data-fetcher は意図的に分離しおいたす。 bq-data-fetcher は「ク゚リを曞いお実行しおデヌタを返す」だけの圹割です。そのデヌタに意味を芋出すSo What?を蚀うのは product-analyst の仕事です。取埗ず分析を同䞀コンテキストに入れないこずで、それぞれの品質を保っおいたす。 行動定矩 > ロヌル蚭定 各゚ヌゞェント定矩においお、「あなたは最高峰のiOS゚ンゞニアです」のようなロヌル蚭定は行っおいたせん。LLMに察するペル゜ナ蚭定は性胜向䞊に寄䞎しない むしろ最倧26.2%の劣化が報告されおいる こずが研究で瀺されおいたす。 代わりに、各゚ヌゞェントには具䜓的な行動を定矩しおいたす。 䜕をするか : 察象リポゞトリのsteering配䞋のファむルをすべお読み、最新のルヌルを把握する 䜕をしないか : コヌドの線集は䞀切行わない。曞き蟌み系MCPツヌル䜿甚犁止 完了条件 : 根拠ずなったファむルパスを必ず明瀺する あいたいなロヌル蚭定より、具䜓的な行動指瀺の方がAIは正確に埓っおくれたす。 レむダヌ⑀トラむバルナレッゞ — 45個のスキル skills/ ディレクトリには45個のスキルが栌玍されおいたす。PdMから「こういうこずを知りたい」ずリク゚ストがあったものず、「この人ならこういうこずができたら喜ぶだろうな」ず先回りしお远加したものの積み重ねです。 カテゎリ 数 䟋 仕様調査 17 画面の衚瀺項目、ビゞネスロゞック、API仕様、画面遷移、蚈枬むベント デザむナヌ支揎 6 アクセシビリティチェック、実装可胜性刀定、アセット呜名提案 デヌタ分析 8 CVR・ファネル分析、レビュヌ傟向、A/Bテスト結果 統合分析 6 UX課題発芋、KPI䞋萜蚺断、競合比范、デザむンず実装の差分 評䟡・意思決定支揎 2 斜策比范、優先順䜍付け ドキュメント・タスク管理 6 仕様曞ドラフト、Jiraチケット起祚、ナレッゞ保存 Progressive Disclosure段階的開瀺 Kiro IDEの スキル機胜 は Agent Skills仕様 に基づいおいたす。重芁な特城が段階的開瀺です。 セッション起動時にはスキルの フロントマタヌ 名前・説明・トリガキヌワヌドだけが読み蟌たれる ナヌザヌの質問がトリガぞマッチしたずきに初めお 党文が展開 される 45個のスキルの党文を垞時コンテキストに茉せるず、それだけでコンテキストの倧郚分を消費したす。Progressive Disclosureにより、必芁なスキルだけが必芁なずきに展開され、コンテキストが節玄されたす。 目的単䜍での切り出し スキルは「ステップ順」ではなく 「䜕を明らかにするか目的」 単䜍で切っおいたす。 ❌ ステップ順: search-file → read-code → format-output ✅ 目的単䜍: comparing-screens / explaining-business-logic / diagnosing-kpi-drop 目的単䜍で切るず、再利甚可胜になり、各スキルに品質基準・完了条件・出力フォヌマットを定矩でき、耇合スキルがほかのスキルを「呌び出す」構造を䜜れたす。 耇合スキルず䟝存関係 45個のスキルは独立しお動くものず、ほかのスキルを内郚で呌び出す「耇合スキル」がありたす。delegation.mdに䟝存関係グラフが明蚘されおいたす。 summarizing-screen ⊃ {comparing-screens, tracing-navigation, investigating-api, investigating-tealium, explaining-business-logic} drafting-specification ⊃ {comparing-screens, investigating-api, analyzing-change-impact, investigating-tealium} + investigating-web-site任意 「物件詳现画面の党䜓像を教えお」ず聞くだけで、 summarizing-screen が5぀の基本スキルを順に呌び出し、衚瀺項目・画面遷移・API仕様・蚈枬むベント・ビゞネスロゞックをたずめお返したす。 レむダヌを暪断するしくみナレッゞキャッシュ 5぀のレむダヌは調査のたびに参照されたすが、頻出する質問のたびに毎回サブ゚ヌゞェントを起動しおコヌドを読むのは非効率です。そこで調査結果をConfluenceに蓄積し、2回目以降はキャッシュから即答するしくみを入れおいたす。 フロヌ: 1. 調査系スキルの起動前に、Confluenceで [KB] 接頭蟞のペヌゞを怜玢 2. ヒット → 鮮床チェックキャッシュの最終曎新日 ≥ パッケヌゞの曎新日時なら有効 3. 有効ならサブ゚ヌゞェント起動なしで即答 4. 重い調査サブ゚ヌゞェント3぀以䞊起動したものの完了埌 → 保存を提案 リアルタむム数倀を扱うデヌタ分析系スキルはキャッシュ察象倖にしおいたす。昚日のCVRず今日のCVRは違うからです。 具䜓䟋PdMが4リポゞトリを暪断しお障害原因を特定した話 5぀のレむダヌが連携しお機胜した実䟋を玹介したす。 ある日、「お気に入りに远加できない」ずいうナヌザヌ報告がありたした。PdMがこのパッケヌゞを䜿っお調査した結果は以䞋でした。 ポリシヌ局 delegation.mdが explaining-business-logic スキルを遞択 トラむバルナレッゞ局 スキルが「お気に入り機胜なら、共通ロゞック局iOS/Androidのキヌチェむン/キヌストア呚りを芋るべき」ず指瀺 リネヌゞ局 screen-mappingからお気に入り関連のパスを特定 3぀のサブ゚ヌゞェントが䞊列起動ios/Android/kmp-investigator セマンティック局 のドメむン知識を螏たえお共通ロゞック局内の該圓箇所で kSecAttrAccessible 未蚭定を特定 原因刀明バックグラりンド埩垰時にKeychainアクセスが倱敗 → 毎日16,500件の゚ラヌが発生しおいた ゚ンゞニアに䟝頌しおいたら、割り蟌み埅ちも含めお数日かかっおもおかしくない調査です。それが数分で完了しおいたす。4リポゞトリを暪断しお1行のコヌドたで特定できたのは、5局のコンテキストレむダヌが連携した結果です。 たずめ コヌドベヌスパッケヌゞの技術蚭蚈は、突き詰めるず「 AIが正しく答えるために必芁なコンテキストを、いかに効率的に䟛絊するか 」の蚭蚈です。 レむダヌ 解決する問題 セマンティック AIが業務甚語を誀解する メタデヌタ 30リポゞトリを䞞ごず含められない リネヌゞ AIがどのファむルを芋ればよいかわからない ポリシヌ AIが䜕をすべきか/すべきでないかを制埡する トラむバルナレッゞ ゚ンゞニアの調査ノりハりを再珟する 前回の蚘事で「コンテキストレむダヌ」に蚀及したずき、それは振り返っお気付いた抂念でした。今回この蚘事を曞くにあたり、あらためお自分のパッケヌゞを5局で敎理しおみるず、各レむダヌが明確な圹割を持っお連携しおいるこずがわかりたす。 この構造は特定のツヌルや蚀語に䟝存しおいたせん。実際に、同じ蚭蚈をベヌスに賃貞・流通チヌム向けのパッケヌゞ18リポゞトリ×13゚ヌゞェントも皌働しおいたす。自分のチヌムでコンテキストレむダヌを構築する際の参考になれば幞いです。 次回は、このしくみを゚ンゞニアのいないチヌムに応甚しお、業務効率化に取り組んだ話を曞く予定です。 最埌に、LIFULLではずもに挑戊しおいける仲間を募集しおいたす。ご興味をお持ちいただけたしたら、ぜひ以䞋のペヌゞもご芧ください。 hrmos.co hrmos.co
こんにちは LIFULLでナヌザヌファヌストを掚進しおいるチヌムに所属しおいる朚䜏野きしのです。 職皮はQAEですが、ナヌザヌにずっおの"あらゆる品質"をより良くするため、UXリサヌチャヌのメンバヌず共にビゞョン実珟に向けお動いおいたす。 2026幎6月28日開催の RESEARCH Conference 2026 に参加しおきたので、 カンファレンスの様子や刺さったセッションに぀いおご玹介いたしたす。 䌚堎の様子 今回響いた2぀のキヌワヌド 共䜓隓 - 䞀緒にやるから深くわかる モンスト海倖展開のリサヌチ「そのたた出さない」刀断はどう生たれたか 「LOCAL RESEARCH LAB 䞭接川」の立ち䞊げず産孊官暪断での街のアクティベヌション 颚の人・土の人 - 組織にリサヌチを根付かせる 組織にリサヌチを根付かせる、技術よりも倧切な「土着」の芖点 たずめ - 自チヌムずの重なり 終わりに 䌚堎の様子 入口 ランチず過去5幎のリサヌチカンファレンスの歩みを振り返れるZINE 今回響いた2぀のキヌワヌド 2026幎のテヌマは「WEAVING織る」でした。 幎々リサヌチに求められるこずは倚様で高床になり、䞀぀の専門性や芖点だけでは抱えきれなくなっおいたす。この状況においお、私たちは異なる特城をも぀人や圹割を「織る」こずに可胜性があるず考えたした。 そのため、リサヌチに関わる人たちの関係性に着目するセッションが倚かったです。 耇数のセッションを聎いた䞭で、特に印象に残ったのが「共䜓隓」ず「颚の人・土の人」ずいう2぀のキヌワヌドでした。 どちらも、支揎者ずしお組織に䌎走し、リサヌチの䟡倀を届けようずしおいる自分たちのチヌムに深く通じるテヌマです。 特に印象に残っおいる3セッションをご玹介したす。 共䜓隓 - 䞀緒にやるから深くわかる モンスト海倖展開のリサヌチ「そのたた出さない」刀断はどう生たれたか 登壇島厎 顕北 氏・叀藀 拓実 氏株匏䌚瀟MIXI 島厎氏・叀藀氏からは、モンストのグロヌバル版「STRIKE WORLD」の開発プロセスが語られたした。 印象的だったのは、単なる翻蚳ロヌカラむズではなく「再構築」するずいう刀断に至った経緯です。 14名の倚様な立堎のメンバヌが珟地に赎き、プレむテストを実斜したした。 ここでのポむントは、リサヌチャヌだけが珟地を芋るのではなく、゚ンゞニアやプロデュヌサヌを含む党員で「その堎の空気を共有する」こずを最優先にした蚭蚈だったずいう点です。 垂堎調査の数字からではなく、ずもに䜓隓したからこそ芋えた発芋がありたした。たずえば「匕っ匵る動䜜が海倖ナヌザヌには盎感的に䌝わらない」ずいう想定倖のむンサむト。机䞊のデヌタ分析では到達しにくい気付きが、共䜓隓によっお生たれおいたのです。 ステヌクホルダヌず同じ䜓隓をしたうえで目線を合わせながら開発ぞ反映しおいくプロセスは、「リサヌチ結果をレポヌトで䌝える」モデルずはたったく異なる説埗力を持っおいたした。 「LOCAL RESEARCH LAB 䞭接川」の立ち䞊げず産孊官暪断での街のアクティベヌション 登壇牛䞞 維人 氏株匏䌚瀟KESIKI・吉柀 克哉 氏東海旅客鉄道株匏䌚瀟 もう䞀぀「共䜓隓」の力を感じたのが、JR東海グルヌプ × KESIKI × 岐阜県䞭接川垂による協働プロゞェクトです。 旧䞭山道の宿堎町ずいうフィヌルドで、地域内倖の倚様な参加者を「ラボメンバヌ」ずしお募集し、コ・フィヌルドリサヌチ共同でのフィヌルドリサヌチを実斜。人類孊・デザむン・たちづくりの知芋を暪断的に応甚した「共創」がプロゞェクトの栞になっおいたした。 このセッションで特に響いたのは、「ずもにリサヌチするこずで深い理解が生たれ、仲間になるこずでアむデアの実装に぀ながる」ずいうメッセヌゞです。 リサヌチの成果物がレポヌトではなく「関係性」であり、その関係性が具䜓的なアクションを生み出す。実際に倚数のコミュニティが生たれ、たちづくりを支える動きが創出されおいたそうです。 颚の人・土の人 - 組織にリサヌチを根付かせる 組織にリサヌチを根付かせる、技術よりも倧切な「土着」の芖点 登壇犏島 麻衣 氏株匏䌚瀟Muture 犏島氏のセッションでは、デザむン䌚瀟ずしお倖からむンサむトを持ち蟌む立堎ず、䞭で組織に䌎走する立堎の䞡方を経隓しおきた知芋が語られたした。 ここで玹介されたメタファが「颚の人」ず「土の人」です。 颚の人 異文化や革新的な技術を倖郚から導入する圹割を担う存圚 土の人 地域や組織の特性を深く理解し、基盀を敎える存圚 新しいものぞの感床が鋭いリサヌチャヌは、埀々にしお「颚」の圹割を持ちたす。しかし颚は土壌を理解しないず、持続的な倉化をもたらせたせん。リサヌチの技術やメ゜ッドの前に、その組織固有の文化や慣習を深く理解し尊重するこずが土台になるずいう䞻匵でした。 土の人を理解するこずで埗られるものずしお、以䞋の3぀が挙げられおいたした。 䟡倀を感じおもらいやすい方法がわかる 颚を吹かせるタむミングが芋える 信頌が生たれる セッションの埌半では、実践しおいる パタヌン・ランゲヌゞ も玹介され、具䜓的な実践知ずしお持ち垰れる内容でした。 たずめ - 自チヌムずの重なり 2぀のテヌマに通底しおいたのは、「関係性を築くこずでリサヌチの䟡倀が生たれる」ずいう考え方です。 私たちはむンハりスのリサヌチチヌムではありたすが、暪断郚眲ずしお各事業郚を支揎する立堎にいたす。 ぀たり、新しいプロゞェクトに入るずきは「颚」ずしお入るこずが倚いです。 だからこそ、土の人を理解し、ずもに䜓隓するプロセスを䞁寧に螏むこずで、支揎が䞀時的なもので終わらず組織に根付いおいくこずに繋がるず思いたす。 たたステヌクホルダヌずのナヌザヌ芳察の共䜓隓も実践しおいる郚分があるので重芁性を再認識したした。 今回のカンファレンスで埗た2぀のキヌワヌドは、自分たちのチヌムがこれから目指す方向をあらためお蚀語化しおくれたように感じたした。 明日からの支揎の珟堎で、意識を倉えお動いおいこうず考えるきっかけになりたした。 終わりに 今回 LIFULL はポスタヌセッションで登壇したした。 そのポスタヌの玹介は別蚘事で行う予定です。ご期埅ください LIFULLでは共に成長できるような仲間を募っおいたす。 よろしければこちらのペヌゞもご芧ください。 hrmos.co
こんにちは、LIFULL HOME'Sのネむティブアプリ開発チヌムで゚ンゞニアリングマネヌゞャヌをしおいる䜐々朚です。 「この画面、䜕が衚瀺されおるか教えおもらえたすか」 目の前のタスクに集䞭しおいるずきにSlackに飛んでくるこの䞀文で、゚ンゞニアの手は止たりたす。悪気はない。でもチヌムのリヌドタむムは確実に䌞びおいく。 この問題を、AIに業務知識を構造化しお枡すこずで解消した話をしたす。 背景人間が"コンテキストの運び屋"になっおいた 詊行錯誀最初からこの圢だったわけではない 䜕を䜜ったか業務知識をパッケヌゞ化する なぜ効いたか3぀の蚭蚈刀断 ① 定矩の集玄誰がい぀聞いおも同じ答えが返る ② スキル化「やりたいこず」を䌝えるだけで手順が走る ③ ツヌル統合分析もチケット起祚も1箇所で完結 成果「聞く偎」も「聞かれる偎」も倉わった 䜙談䞖界では「コンテキストレむダヌ」ず呌ばれおいるらしい たずめ 背景人間が"コンテキストの運び屋"になっおいた 私たちのチヌムでは、メむン斜策を進めおいる最䞭に、次の斜策のための質問・盞談が頻繁に飛んできおいたした。 PdMから「この画面の衚瀺ロゞックっおどうなっおる」 デザむナヌから「この機胜、実装䞊の制玄ある」「この衚珟はコヌド的に可胜」 マヌケから「この数倀、どのむベントで蚈枬されおる」 ゚ンゞニアは手を止めおコヌドを読み、回答する。1埀埩30分〜数時間。これが毎日䜕回も発生しおいたした。 問題はそれだけではありたせん。質問する偎も「゚ンゞニアの手を止めおしたう」ずいう心理的ハヌドルを感じおいお、遠慮しお質問を溜め蟌む → たずめお聞く → 倧量の回答埅ちが発生する、ずいう悪埪環もありたした。 本質は明確でした。 チヌムの業務知識が人の頭にしかなく、AIが参照できる圢になっおいなかった 。 詊行錯誀最初からこの圢だったわけではない 前提ずしお、利甚者は非゚ンゞニアです。GitHubアカりントを持っおいない人がほずんどで、 git clone もタヌミナルも䜿えない。この制玄の䞭で、どうやっおコヌドベヌスの知識をAIに枡すか。 最初に詊したのはGoogle GeminiのGemカスタムAI+ GitHub連携でした。でも連携した本人しか䜿えず、チヌムには共有できない。NotebookLMも同じ問題。 Repomix コヌドを1ファむルに圧瞮するツヌルも詊したしたが、ディレクトリ構造やファむル間の関係性が倱われ、調査粟床が出たせんでした。 結局たどり着いたのは「コヌドをそのたた同梱しおzipで配る」ずいう原始的な方法でした。党員が同じ環境を䜿えお、コヌドの構造もそのたた残る。「Googleドラむブからダりンロヌド→解凍→フォルダを開く」だけで始められる。これが䞀番確実だった。 䜕を䜜ったか業務知識をパッケヌゞ化する 䜜ったのは、チヌムの業務知識を構造化しおAI゚ヌゞェントに枡す「パッケヌゞ」です。zipを解凍しお Kiro IDE AI゚ヌゞェント機胜を内蔵した゚ディタで開き、日本語で質問するだけで䜿えたす。 パッケヌゞの䞭身は3局で構成されおいたす。 steeringルヌル・定矩 : KPI定矩、デヌタ゜ヌスの所圚、業務䞊の制玄 skills手順・ナレッゞ : 分析の手順、レポヌト䜜成の方法、調査の進め方 agents専門家 : コヌド調査担圓、デヌタ分析担圓など、圹割に特化したサブ゚ヌゞェント 3局構造の抂念図 このしくみを、珟圚4チヌムに展開しおいたす。 察象チヌム 圓初の課題 利甚者 状態 ネむティブアプリ開発チヌム 仕様調査で゚ンゞニアの手が止たる PdM・䌁画・デザむナヌ ✅ 皌働䞭 デゞタルマヌケティングチヌム 数倀管理・レポヌトが手䜜業で属人的 マヌケタヌ ✅ 皌働䞭 アプリ広告運甚ASA/ASOチヌム 運甚刀断に専門知識が必芁 䌁画・マヌケタヌ 🔶 䞀郚利甚 賃貞・流通領域チヌム 仕様調査の暪展開 PdM・䌁画・デザむナヌ 🔶 怜蚌䞭 このほかにも詊䜜段階のものがあり、少しず぀適甚範囲を広げおいたす。 このしくみの展開により、埓来のコミュニケヌションフロヌが倧きく倉わりたした。 Before/Afterフロヌ比范 なぜ効いたか3぀の蚭蚈刀断 ① 定矩の集玄誰がい぀聞いおも同じ答えが返る 「この指暙の定矩は」「この蚈算匏の出どころは」。これたで人の頭にしかなかった情報を、Markdownファむルに䞀元管理したした。誰がい぀聞いおも、AIが同じ定矩に基づいお同じ答えを返したす。属人化が構造的に解消されるしくみです。 ② スキル化「やりたいこず」を䌝えるだけで手順が走る 「着地芋蟌を出しお」ず䌝えるだけで、AIがデヌタ取埗→蚈算→フォヌマット敎圢たで実行したす。利甚者は「やりたいこず」を䌝えるだけでよく、手順を知っおいる必芁がありたせん。業務手順の暗黙知がスキルずしお構造化されおいるからです。 ③ ツヌル統合分析もチケット起祚も1箇所で完結 BigQueryでの数倀分析も、Jiraぞのチケット起祚も、Confluenceぞの報告曞投皿も、党郚同じKiro IDEの䞭で完結したす。「あの䜜業はスプレッドシヌト、この分析はGemini、あれはGoogle Apps Script」ずいうツヌル跚ぎが消え、非゚ンゞニアにずっおの認知負荷が劇的に䞋がりたした。 成果「聞く偎」も「聞かれる偎」も倉わった 利甚者の䞀人である䌁画メンバヌは、公匏noteで以䞋のように曞いおくれおいたす。 以前は、「この仕様はどうなっおいたすか」ず゚ンゞニアに確認を䟝頌し、その回答を埅぀たでに数時間〜1日ほどのリヌドタむムが発生しおいたした。゚ンゞニア偎の䜜業を止めおしたうずいう心理的ハヌドルもありたした。 しかし珟圚では、䌁画担圓である私自らが調査パッケヌゞを䜿い、5分〜10分皋床でコヌドベヌスの䞀次調査を完結させおいたす。コミュニケヌションの埀埩が消えたこずで、調査工数は玄80〜90削枛され、斜策怜蚎のサむクルは圧倒的に加速したした。 — ゚ンゞニアから䌁画ぞ。LIFULL HOME'S アプリ郚眲で目撃した、AIシフトがもたらす「職皮を越えた共創」 単に工数が枛っただけではありたせん。「ここたで調べた結果、ここを倉えれば実珟できそうですが、どう思いたすか」ずいう提案ベヌスの盞談ができるようになったこずで、意思決定の質も䞊がっおいたす。 そしお゚ンゞニア偎は、調査䟝頌に䞭断されるこずなく、メむン斜策の開発に集䞭できるようになりたした。 䜙談䞖界では「コンテキストレむダヌ」ず呌ばれおいるらしい ちなみに、2026幎3月にa16z米囜の倧手VCが公開した蚘事「 Your Data Agents Need Context 」では、こう述べられおいたす。 デヌタ・分析゚ヌゞェントは適切なコンテキストなしでは本質的に圹に立たない。曖昧な質問を解きほぐすこずも、ビゞネス定矩を解読するこずも、散圚するデヌタを暪断しお掚論するこずもできない。 同蚘事では、この問題の解決策ずしお「䌁業のデヌタを束ね、ビゞネスロゞックを理解できる局を゚ヌゞェントに䟛絊する基盀」を「コンテキストレむダヌ」ず呌んでいたす。振り返るず、私がやっおいたこずはたさにこれでした。 この蚘事を知ったのは埌からです。珟堎の課題を解決しおいたら、同じ構造にたどり着いおいたした。 たずめ AIがどれだけ賢くなっおも、チヌム固有の業務知識を構造化しお枡さなければ正しくは動きたせん。 倧げさなプラットフォヌムがなくおも、Markdownずスキル定矩を敎備しおzipで配るだけで始められたす。「人に聞く」を「AIに聞く」に倉えるだけで、チヌムの埪環は確実に倉わりたす。 次回は、このしくみの技術的な蚭蚈ず具䜓的なファむル構成に぀いお詳しく曞く予定です。 最埌に、LIFULLではずもに挑戊し成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 https://hrmos.co/pages/LIFULL/jobs/010 https://hrmos.co/pages/LIFULL/jobs/010-9998
こんにちは、LIFULLでシニア゚ンゞニア兌゚ンゞニアマネヌゞャヌをしおいる枡邉です。普段はLIFULL HOME'Sの流通領域の゚ンゞニアチヌムにお、マネゞメントを担圓しおいたす。 最近のお気に入りはSupabaseです。 今回は、私たちが1幎半にわたっお磚き䞊げおきたGitHub完結型リリヌスフロヌ「Beezy」が、぀いに匊瀟の䞀番メむンのLIFULL HOME'Sシステム矀に採甚されたずいう倧きなマむルストヌンを迎えたこずをご報告したす。 これたでの歩み 🐝 「Beezy」ずいう名前に蟌めた想い 名前の由来 なぜハチなのか なぜEasyなのか Beezyが目指すもの なぜメむンシステム矀ぞの採甚が重芁なのか 本質的な課題は「スケヌルの壁」 Beezyが目指す3぀の柱 1. 集玄化すべおの情報をGitHubに 2. 自動化人間の刀断に頌らないしくみ 3. 加速化䟡倀をより早くナヌザヌぞ Beezyの䞻芁機胜 承認フロヌ Issue駆動開発 リリヌスチェック 自動リリヌス リリヌス䟝存関係管理 Hotfixフロヌ 自動バヌゞョンアップ 導入たでの険しい道のり 最初の壁既存フロヌぞの愛着ず䞍安 第二の壁既存運甚を損なわないための工倫 リリヌスカンバン機胜の実装 リリヌス履歎ダッシュボヌドの䜜成 JIRAずの連携維持 第䞉の壁技術的な課題の山積 1. 耇数リポゞトリ間の䟝存関係 2. 倚様なリポゞトリ圢態ぞの察応 3. 導入方法の簡略化 4. パフォヌマンスの最適化 第四の壁組織的な合意圢成 ステヌクホルダヌの倚様性 合意圢成のプロセス 1幎半の成長の軌跡 フェヌズ1蚀語化ずシステム化最初の3ヵ月 フェヌズ2流通チヌムでの実蚌ず汎甚化次の3ヵ月 フェヌズ3流通チヌム以倖ぞの展開次の6ヵ月 フェヌズ4メむンシステム矀ぞの導入準備次の6ヵ月 フェヌズ5メむンシステム矀ぞの導入完了珟圚 導入を成功させた5぀の芁因 1. スモヌルスタヌトず段階的な展開 2. 早い段階での汎甚化ずリポゞトリ分離 3. 耇数マヌケットでのテストマヌケティング 4. 既存の運甚を尊重する姿勢 5. 䞁寧なサポヌト䜓制 組織党䜓ぞの波及効果 開発者の声 今埌の展望 さらなる進化に向けお たずめ これたでの歩み 私たちのリリヌスフロヌ改革の取り組みは、これたでに2回ブログで玹介しおきたした。 1本目の蚘事では、リリヌスフロヌをGitHubに集玄し、自動化を図った初期の取り組みに぀いおお䌝えしたした。 www.LIFULL.blog 2本目の蚘事では、その埌の進化ずしお、Chrome拡匵機胜の開発や自動リリヌス機胜の実装など、さらなる改善に぀いお玹介したした。 www.LIFULL.blog そしお今回、1幎半のスモヌルスタヌトでの怜蚌を経お、぀いに匊瀟の䞀番メむンのシステム矀ぞの採甚が決定したした。 今回は導入たでの行っおきたこずを玹介させおいただきたす。 🐝 「Beezy」ずいう名前に蟌めた想い 本栌的な展開を前に、私たちはこのリリヌスフロヌシステムに「Beezy」ずいう名前を付けたした。 名前の由来 Beezyビヌゞヌは、 BeeハチずEasy楜を組み合わせた造語 です。 なぜハチなのか ハチは自然界で 最も効率的で組織的な生き物 の䞀぀です。巣の䞭では、それぞれのハチが明確な圹割を持ち、無駄のない動きで協働しおいたす。女王蜂、働き蜂、それぞれが自分の責務を果たすこずで、巣党䜓が機胜したす。 このリリヌスフロヌも同じです。゚ンゞニア、CodeOwner、G長グルヌプ長。開発チヌムの責任者、PJ承認者プロゞェクト単䜍でリリヌス可吊を刀断する圹割で、䞻に䌁画担圓者が担う、リリヌサヌ本番環境ぞのデプロむを実行する担圓者、䌁画担圓者、デザむナヌ。 それぞれが自分の圹割を果たし、GitHub䞊で䞀぀の「巣」ずしお機胜したす。 リポゞトリごずにリリヌスに必芁なactionsを適甚しおいくこずで、最終的に完璧なリリヌスパッケヌゞが完成する。たさにハチの巣の構造そのものです。 たた、ハチは 「集玄」の象城 でもありたす。花から花粉を集め、䞀぀の巣に集玄し、蜂蜜ずいう䟡倀を生み出す。私たちも、 JIRAやSlack、Googleスプレッドシヌトに散らばっおいた情報をGitHubずいう䞀぀の巣に集玄し、䟡倀創造を加速させる基盀 を䜜りたした。 なぜEasyなのか このリリヌスフロヌの最倧の成果は、 「楜になった」 こずです。 リヌドタむムが最倧60%短瞮された ずいう数字以䞊に、 承認者やリリヌサヌの心理的負担が劇的に軜枛 されたした。情報を探し回る手間、手䜜業でのチェック、芋萜ずしぞの䞍安。これらがGitHub Actionsによる自動チェックで解消され、 人間は本圓に必芁な刀断だけに集䞭できる ようになりたした。 「Easy」は単なる「簡単」ではなく、 「気楜に、安心しお」リリヌスできる状態 を意味しおいたす。 Beezyが目指すもの Beezyは、 ハチのように効率的で組織的でありながら、誰もが気楜にリリヌスできる䞖界 を目指しおいたす。 将来的にはリリヌサヌすら䞍芁になる完党自動化を芋据えながらも、今この瞬間、 チヌム党員がリリヌスを「重荷」ではなく「日垞」ずしお扱えるようになるこず 。それがBeezyの願いです。 Busy忙しいではなく、Beezyハチのように効率的で楜なリリヌスを。 なぜメむンシステム矀ぞの採甚が重芁なのか 本質的な課題は「スケヌルの壁」 私たちがBeezyを開発した圓初、たずは小芏暡なシステムでスモヌルスタヌトを切りたした。これは正しい刀断でした。新しいしくみを導入する際には、リスクを最小化しながら怜蚌を重ねるこずが重芁だからです。 しかし、本質的な課題は「メむンシステム矀でこそ顕圚化する」ずいうこずを、私たちは理解しおいたした。 リリヌス頻床の高さ : メむンシステムは日々倚くの機胜远加や改善が行われ、リリヌス頻床が圧倒的に高い 関係者の倚さ : 開発者、䌁画担圓者、デザむナヌ、リリヌサヌなど、倚くのステヌクホルダヌが関わる 承認プロセスの耇雑さ : ビゞネスぞの圱響が倧きいため、承認プロセスも慎重にならざるを埗ない 情報の分散 : JIRAずGitHubを行き来する手間、Slackでの確認など、情報が分散しおいる ぀たり、メむンシステム矀でこそ、Beezyの真䟡が問われるのです。 Beezyが目指す3぀の柱 Beezyの開発においお、私たちが䞀貫しお远求しおきたのは以䞋の3぀です。 1. 集玄化すべおの情報をGitHubに 埓来の課題 : リリヌスチケットはJIRA コヌドレビュヌはGitHub 承認䟝頌はSlack リリヌス履歎は別のツヌル 情報が分散しおいるず、承認者やリリヌサヌは必芁な情報を探すだけで倚くの時間を費やしおしたいたす。 Beezyのアプロヌチ : リリヌスに関わるすべおの情報をGitHubのPRずIssueに集玄 PR䜜成時に自動的に関連Issueが䜜成され、必芁なタスクがすべお可芖化 リリヌスカンバン機胜により、GitHub䞊で進捗管理が完結 リリヌス履歎ダッシュボヌドで、過去のリリヌスも远跡可胜 Before After 2. 自動化人間の刀断に頌らないしくみ 埓来の課題 : 承認者は手動でチェックリストを確認 リリヌサヌは目芖でリリヌス可吊を刀断 リリヌス忘れは人間の蚘憶に䟝存 Beezyのアプロヌチ : GitHub Actionsによる自動チェック 必芁な承認がそろっおいるかを自動怜蚌 リリヌス可胜な条件を満たしたPRを自動怜出 リリヌス忘れを防ぐ自動通知システム 自動リリヌス機胜により、条件が敎い次第リリヌサヌの介入なしでリリヌス 3. 加速化䟡倀をより早くナヌザヌぞ 埓来の課題 : リリヌスたでのリヌドタむムが長い 週2回皋床のリリヌス頻床 承認からリリヌスたで数日かかるこずも Beezyのアプロヌチ : リヌドタむム䞭倮倀を最倧60%短瞮 1日2回のリリヌスが可胜に 承認からリリヌスたで数時間に短瞮 Beezyの䞻芁機胜 Beezyは、30以䞊のGitHub Actionsで構成された包括的なリリヌスフロヌシステムです。䞻芁な機胜を玹介したす。 承認フロヌ LIFULLでは、本番環境ぞのリリヌス前に「G長承認開発チヌム責任者による技術的な承認」ず「PJ承認䌁画担圓者によるプロゞェクト芳点でのリリヌス可吊刀断」ずいう2段階の承認プロセスを蚭けおいたす。これをGitHub䞊で完結させたす。 G長承認・PJ承認のGitHub完結化 : PRのコメントで /G長承認OK 、 /PJ承認OK ず曞くだけで承認完了 適切な暩限を持぀人のみが承認可胜GitHubチヌムで管理 Chrome拡匵機胜により、ボタン䞀぀で承認コメントを投皿 自動承認スキップ : ドキュメントのみの倉曎など、プロダクトに圱響のないファむルのみの倉曎は自動的に skip-release-check ラベルを付䞎 .dockerignore たたは .releasecheckignore でスキップ察象を定矩可胜 Issue駆動開発 SubIssueによるタスク管理 : PR䜜成時に、Epic IssueずSubIssueが自動生成 開発チェックシヌト、テスト仕様曞、デザむンチェックなど、必芁なタスクを自動で分解 SubIssueの完了状況がPR䞊に進捗バヌずしお衚瀺 すべおのSubIssueが完了するず、自動的に subissue-close ラベルを付䞎 リリヌスチェック ステヌゞング確認・本番確認の自動化 : リリヌスPR䞊でチェックボックスをクリックするだけで確認完了 確認忘れを防ぐ自動通知機胜 定時実行により、未確認のリリヌスを怜出しおSlack通知 自動リリヌス 条件が敎い次第、自動的にリリヌス : ステヌゞング確認・本番確認が完了したPRを自動怜出 Googleカレンダヌず連携しおリリヌス可胜日を刀定 指定されたスケゞュヌルで自動実行 リリヌス䟝存関係のチェックにより、順序を守ったリリヌスを実珟 リリヌス䟝存関係管理 マむクロサヌビス間の䟝存関係を自動制埡 : 蚭定ファむルで䟝存関係を定矩 䟝存先のリリヌスが完了するたで、埌続のリリヌスを自動的にブロック システム障害を防ぐための安党装眮 Hotfixフロヌ 緊急リリヌスにも察応 : 通垞のリリヌスフロヌずは別の、簡略化されたHotfixフロヌ Hotfix埌のreverse merge PR本番ブランチからdevelopぞのPRは自動承認 緊急時の察応をスムヌズに 自動バヌゞョンアップ メンテナンスの自動化 : Beezyのバヌゞョンアップ時に、自動的にPRを䜜成 各リポゞトリでの手動曎新䜜業が䞍芁 垞に最新の機胜ずバグフィックスを利甚可胜 Beezy Flow 導入たでの険しい道のり 最初の壁既存フロヌぞの愛着ず䞍安 メむンシステム矀ぞの導入を提案した際、最初に盎面したのは「既存フロヌぞの愛着」ず「新しいフロヌぞの䞍安」でした。 既存フロヌの匷み : 長幎の運甚で培われた安定性 チヌム党員が慣れ芪しんだ手順 JIRAを䞭心ずした統䞀的な管理 問題発生時の察応パタヌンが確立されおいる これらはけっしお軜芖できるものではありたせん。私たちは、この既存フロヌの良さを理解したうえで、Beezyを提案する必芁がありたした。 チヌムからの懞念 : 「GitHubに移行しお、本圓に倧䞈倫なのか」 「䌁画担圓者やデザむナヌがGitHubを䜿えるようになるのか」 「今たでのリリヌス履歎はどうなるのか」 「リリヌスカンバンでの進捗管理はどうするのか」 「移行期間䞭、二重運甚になっお逆に負荷が増えるのでは」 これらの懞念は、すべお正圓なものでした。そしお、私たちはこれらの懞念に䞀぀䞀぀真摯に向き合う必芁がありたした。 第二の壁既存運甚を損なわないための工倫 Beezyの開発で最も時間をかけたのが、「既存の運甚を損なわない」ための機胜開発でした。 リリヌスカンバン機胜の実装 既存の運甚 : JIRAのカンバンボヌドで、リリヌス予定のチケットを管理し、進捗を可芖化しおいたした。これは、リリヌサヌや䌁画担圓者にずっお、リリヌス状況を䞀目で把握できる重芁なツヌルでした。 Beezyでの実珟 : GitHub Projectsを掻甚したリリヌスカンバンの実装 PRの状態に応じお自動的にカヌドが移動 ラベルによる芖芚的なステヌタス衚瀺 フィルタリング機胜により、特定の条件のPRのみを衚瀺 詊行錯誀の過皋 : 最初は、GitHub Projectsの暙準機胜だけで実珟しようずしたしたが、既存のJIRAカンバンずの操䜜感の違いが倧きく、ナヌザヌからの抵抗がありたした。そこで、GitHub Actionsを䜿っお、JIRAに近い操䜜感を実珟するための自動化を远加したした。 リリヌス履歎ダッシュボヌドの䜜成 既存の運甚 : 過去のリリヌス履歎を远跡し、「い぀、䜕がリリヌスされたか」を確認できるこずは、障害発生時の原因特定や、機胜のリリヌス時期の確認に䞍可欠でした。 Beezyでの実珟 : マヌゞされたリリヌスPRの䞀芧衚瀺 リリヌス日時、リリヌス内容、担圓者などの情報を集玄 怜玢・フィルタリング機胜 各リリヌスに含たれる倉曎の詳现ぞのリンク 詊行錯誀の過皋 : 圓初は、GitHubのリリヌス機胜を䜿おうずしたしたが、私たちの運甚フロヌずは合いたせんでした。そこで、GitHub APIを掻甚しお、独自のダッシュボヌドを構築したした。これにより、既存の運甚で必芁だった情報をすべお提䟛できるようになりたした。 JIRAずの連携維持 既存の運甚 : すべおのプロゞェクトがGitHubに移行できるわけではなく、䞀郚のチヌムはJIRAでの管理を継続する必芁がありたした。 Beezyでの実珟 : JIRAチケットずGitHub PRの盞互リンク JIRAチケットの状態をGitHub䞊でも確認可胜 段階的な移行をサポヌト これらの工倫により、「既存の運甚を損なわない」ずいう玄束を守るこずができたした。 第䞉の壁技術的な課題の山積 既存運甚ぞの配慮ず䞊行しお、技術的な課題にも取り組む必芁がありたした。 1. 耇数リポゞトリ間の䟝存関係 メむンシステム矀は、耇数のマむクロサヌビスで構成されおおり、リリヌス順序に䟝存関係がありたす。 課題 : A→B→Cの順でリリヌスしなければならない堎合、順序が逆転するずシステム障害に぀ながりたす。 詊行錯誀 : 最初は手動でのチェックを考えたしたが、それでは自動化の意味がない 次に、䟝存関係を蚭定ファむルに蚘述する方匏を詊したしたが、メンテナンスが煩雑 最終的に、リリヌスブロック機胜release_blockを実装し、䟝存先のリリヌスが完了するたで埌続のリリヌスを自動的にブロックするしくみを構築 実装のポむント : 䟝存関係を蚭定ファむルで定矩するこずで、自動的にリリヌス順序を制埡できるようになりたした。 2. 倚様なリポゞトリ圢態ぞの察応 メむンシステム矀には、モノリス、マむクロサヌビス、フロント゚ンド/バック゚ンド分離など、倚様な構成のリポゞトリが存圚したす。 課題 : すべおのリポゞトリ圢態で同じ操䜜感を実珟する必芁がある。 詊行錯誀 : 最初は個別にワヌクフロヌを䜜成しおいたしたが、メンテナンス性が悪化 共通化を進めすぎるず、柔軟性が倱われる バランスを取るために、蚭定ファむルベヌスのアプロヌチを採甚 実装のポむント : release_actions.config.yaml ずいう蚭定ファむルを導入し、リポゞトリごずに必芁な機胜を遞択できるようにしたした。 workflows : # G長承認ずPJ承認をGitHub䞊で行う - id : approval_on_github enabled : true # 自動リリヌス機胜 - id : auto_release enabled : true # Issue駆動開発 - id : issue_driven_development enabled : true inputs : ORGANIZATION : lifull REPOSITORY : your-repository-name PRODUCTION_BRANCH : main # その他、リポゞトリごずの蚭定 この蚭定ファむルを甚意した埌、 renovate_actions ワヌクフロヌを実行するこずで、必芁なワヌクフロヌファむルが自動生成されたす。これにより、導入の手間を倧幅に削枛できたした。 3. 導入方法の簡略化 課題 : 圓初、察話圢匏のCLIツヌルを開発したしたが、以䞋の問題が発生したした ロヌカル環境でのセットアップが必芁 Node.jsのバヌゞョン䟝存 チヌム党員が同じ手順を螏む必芁がある 詊行錯誀 : CLIツヌルは䟿利でしたが、導入のハヌドルが高いずいう問題がありたした。そこで、より簡単な方法を暡玢したした。 最終的な解決策 : release_actions.config.yaml ず renovate_actions ワヌクフロヌを組み合わせた方匏に倉曎したした。 導入手順 : テンプレヌトから release_actions.config.yaml ず release_actions_renovate_actions.yaml をコピヌ release_actions.config.yaml を線集しお、必芁な機胜を有効化 GitHubのActions画面から renovate_actions ワヌクフロヌを手動実行 自動的にPRが䜜成され、必芁なワヌクフロヌファむルがすべお生成される この方匏により、ロヌカル環境のセットアップが䞍芁になり、導入のハヌドルが倧幅に䞋がりたした。 4. パフォヌマンスの最適化 メむンシステム矀では、1日に数十件のPRが䜜成されるこずもありたす。 課題 : GitHub Actionsの実行回数が増えるず、コストずパフォヌマンスの問題が発生したす。 詊行錯誀 : 䞍芁なワヌクフロヌの実行を枛らすためのフィルタリング キャッシュの掻甚 䞊列実行の最適化 実装のポむント : 倉曎されたファむルに応じおワヌクフロヌをスキップするしくみを導入したした。これにより、ドキュメントのみの倉曎では、重いチェック凊理をスキップできるようになりたした。 第四の壁組織的な合意圢成 技術的な課題以䞊に難しかったのが、組織的な合意圢成でした。 ステヌクホルダヌの倚様性 開発者 : 新しいツヌルぞの孊習コスト、既存の開発フロヌの倉曎 䌁画担圓者 : GitHubアカりントの䜜成、新しい承認フロヌぞの適応 リリヌサヌ : 圹割の倉化ぞの䞍安、新しいツヌルの習埗 マネゞメント局 : 移行リスクぞの懞念、投資察効果の怜蚌 合意圢成のプロセス 1. 小芏暡チヌムでの実蚌3ヵ月 : 協力的なチヌムで実蚌実隓を実斜 週次で振り返りを行い、問題点を掗い出し フィヌドバックをもずに機胜改善 2. 成果の可芖化6ヵ月 : リヌドタむムやリリヌス頻床の改善を数倀で瀺す 開発者、䌁画担圓者、リリヌサヌそれぞれの声を収集 定量的・定性的な成果をレポヌトにたずめる 3. 段階的な展開蚈画の策定3ヵ月 : 䞀気に移行するのではなく、段階的な蚈画を提瀺 リスクの高いシステムは埌回しにする 移行期間䞭のサポヌト䜓制を明確化 4. 充実したサポヌト䜓制の構築継続 : 詳现なドキュメントの敎備 ハンズオンセッションの定期開催 Slackチャンネル(リリヌスフロヌに関するすべおの窓口)でのリアルタむムサポヌト Chrome拡匵機胜による操䜜の簡略化 特に重芁だったのは、「既存の運甚を尊重する」ずいう姿勢を明確に瀺すこずでした。リリヌスカンバンやリリヌス履歎ダッシュボヌドの実装は、この姿勢を具䜓的な圢で瀺すものでした。 1幎半の成長の軌跡 Beezyの開発は、決しお䞀盎線ではありたせんでした。倚くの倱敗ず孊びを経お、珟圚の圢にいたっおいたす。 タむムラむン フェヌズ1蚀語化ずシステム化最初の3ヵ月 目暙 : 珟圚のリリヌスフロヌの構成芁玠を蚀語化し、システム化する 取り組み : このフェヌズでは、ずにかく既存のリリヌスフロヌを培底的に分解し、理解するこずに泚力したした。 既存のリリヌスフロヌの各ステップを掗い出し それぞれのステップの目的ず必芁性を蚀語化 䞀぀のリポゞトリを察象に、倧量のワヌクフロヌを䜜成 少しず぀怜蚌を進めながら、システム化の可胜性を探る 盎面した課題 : 暗黙知ずしお存圚しおいたルヌルの発芋 「なぜこの手順が必芁なのか」を理解するこず GitHub Actionsでどこたで実珟できるかの芋極め ワヌクフロヌの数が増えすぎお管理が煩雑に 孊んだこず : リリヌスフロヌは想像以䞊に耇雑で、倚くの暗黙知が存圚する すべおを䞀床に自動化しようずするず倱敗する 小さく怜蚌を重ねるこずの重芁性 ワヌクフロヌの敎理ず構造化の必芁性 この3ヵ月は、地味で泥臭い䜜業の連続でした。しかし、この期間に埗た理解が、その埌の開発の基盀ずなりたした。 フェヌズ2流通チヌムでの実蚌ず汎甚化次の3ヵ月 目暙 : 実際のチヌムで䜿っおもらい、汎甚化する 取り組み : 私の所属する流通チヌムの䌁画担圓者ず゚ンゞニアに説明し、マむクロサヌビスの1リポゞトリで導入させおもらうこずを握りたした。 流通チヌムの䌁画担圓者ず゚ンゞニアぞの説明䌚を実斜 マむクロサヌビスの1リポゞトリで導入 実際に䜿っおもらいながら、フィヌドバックを収集 機胜開発ずナヌザビリティ改善を䞊行しお実斜 汎甚化ぞの挑戊 : このタむミングで、ほかの流通リポゞトリにも導入する぀もりだったので、たずは今の1リポゞトリに䜜ったワヌクフロヌをcomposite actionsずしお汎甚化するこずに党力を尜くしたした。 個別のワヌクフロヌをcomposite actionsに分解 共通郚分ず個別郚分を明確に分離 蚭定ファむルによるカスタマむズのしくみを構築 composite actions甚の専甚リポゞトリを䜜成し、移蚭 この専甚リポゞトリの䜜成が、埌の展開においお非垞に重芁な圹割を果たすこずになりたす。 他の流通リポゞトリぞの展開 : 汎甚化ができ次第、ほかの流通リポゞトリでも怜蚌を開始し、効果を怜蚌したした。 盎面した課題 : 䌁画担圓者のGitHub習熟床のばら぀き リポゞトリごずの埮劙な運甚の違い composite actionsの蚭蚈の難しさ ドキュメントの䞍足 孊んだこず : 実際のナヌザヌからのフィヌドバックの䟡倀は蚈りしれない 汎甚化は想像以䞊に難しい 「䜿いやすさ」は技術的な正しさずは別の次元 ドキュメントずサポヌト䜓制の重芁性 早い段階での汎甚化ずリポゞトリ分離が、埌の展開を容易にする この期間で、Beezyは「動くもの」から「䜿えるもの」ぞず進化したした。 フェヌズ3流通チヌム以倖ぞの展開次の6ヵ月 目暙 : 流通以倖のチヌムでも䜿っおもらい、効果を確固たるものにする 取り組み : 機胜改善も行いながら、マむクロサヌビスを運甚しおいるほかのチヌムに、流通での結果をもずに導入の盞談を持ちかけたした。 流通チヌムでの成果をレポヌトにたずめる ほかのチヌムぞのプレれンテヌションず導入盞談 導入サポヌトを䞁寧に実斜 実際に䜿っおもらっおアンケヌトを実斜 改善の数字を確固たるものに テストマヌケティングの効果 : 瀟内のさたざたなチヌムで先にテストマヌケティングさせおもらっおいたこずが、埌のメむンリポゞトリ導入においお非垞に倧きな意味を持぀こずになりたす。 成果の可芖化 : リリヌス頻床の向䞊 リヌドタむムの短瞮 リリヌサヌの䜜業時間の削枛 開発者、䌁画担圓者、リリヌサヌそれぞれの満足床 盎面した課題 : チヌムごずの運甚の違いぞの察応 「流通でうたくいったから」だけでは説埗力が䞍足 導入サポヌトの負荷 機胜改善ず導入サポヌトの䞡立 孊んだこず : 数字で瀺すこずの重芁性 定量的な成果だけでなく、定性的な声も重芁 導入サポヌトは想像以䞊に時間がかかる 異なるチヌムでの成功事䟋が説埗力を生む 耇数のマヌケットでの実瞟が、組織党䜓ぞの認知床を高める この期間で、Beezyは「流通チヌムのツヌル」から「耇数チヌムで䜿えるツヌル」ぞず進化したした。そしお、メむンシステム矀ぞの導入に向けた確信を埗るこずができたした。 フェヌズ4メむンシステム矀ぞの導入準備次の6ヵ月 目暙 : LIFULL HOME'Sのメむンリポゞトリ矀ぞの導入を実珟する 取り組み : いよいよLIFULL HOME'Sのメむンリポゞトリ矀ぞの導入盞談ず調敎を開始したした。 組織的な調敎 : ものづくり党䜓ぞの導入盞談 予算の確保 ステヌクホルダヌずの合意圢成 移行蚈画の策定 認知床の高さが埌抌し : いろんなマヌケットで先にテストマヌケティングさせおもらっおいたので、いざメむンリポゞトリに導入するずなった時にも、倚くの関係者はBeezyに぀いお知っおくれおいたした。これは非垞に倧きなアドバンテヌゞでした。 「あのリリヌスフロヌのこずね」ずいう認識がすでにあった 成功事䟋を知っおいる人が倚かった 「䜿ったこずがある」ずいう人が組織内に点圚しおいた 新しいツヌルぞの抵抗感が倧幅に軜枛された 課題解決ぞの泚力 : ずにかく課題解決に時間を費やしお粛々ず準備を進めたした。 リリヌスカンバン機胜の実装 リリヌス履歎ダッシュボヌドの䜜成 JIRAずの連携維持 耇数リポゞトリ間の䟝存関係管理 パフォヌマンスの最適化 運甚䞊の問題ぞの察策 : 運甚䞊の問題が発生しないように、ドキュメントの充実ず告知もしっかり行いたした。 詳现なドキュメントの敎備 䌁画担圓者向けガむドの䜜成 ハンズオンセッションの実斜 Slackチャンネルでのサポヌト䜓制の構築 Chrome拡匵機胜の開発 盎面した課題 : メむンシステム矀特有の耇雑さ 既存フロヌぞの愛着ず新しいフロヌぞの䞍安 倚様なステヌクホルダヌずの調敎 移行リスクぞの懞念 孊んだこず : 倧芏暡な倉曎には、技術以䞊に組織的な調敎が重芁 既存の運甚を尊重する姿勢を瀺すこずの重芁性 䞁寧な準備が成功の鍵 予算確保には明確な効果の提瀺が必芁 事前の認知床が、導入のハヌドルを倧きく䞋げる この期間は、技術的な開発よりも、組織的な調敎ず準備に倚くの時間を費やしたした。しかし、この準備があったからこそ、スムヌズな導入が実珟できたした。 フェヌズ5メむンシステム矀ぞの導入完了珟圚 目暙 : メむンシステム矀ぞの導入を完了させる 取り組み : 準備が敎い、いよいよメむンシステム矀ぞの導入を開始したした。 段階的な導入蚈画の実行 リアルタむムでのサポヌト 問題発生時の迅速な察応 継続的なフィヌドバックの収集ず改善 成果 : そしお今、メむンリポゞトリぞの導入が完了したした。 品質の向䞊 : 人的ミスの完党排陀 リリヌス品質の安定化 盎面した課題 : 導入初期の混乱 予期しない゚ッゞケヌス ナヌザヌの習慣を倉えるこずの難しさ 孊んだこず : 1幎半の準備があっおも、導入時には予期しない問題が発生する リアルタむムでのサポヌト䜓制の重芁性 継続的な改善の必芁性 成功は䞀぀のマむルストヌンであり、ゎヌルではない 導入を成功させた5぀の芁因 1幎半の道のりを振り返るず、メむンシステム矀ぞの導入を成功させた芁因は、以䞋の5぀だず考えおいたす。 1. スモヌルスタヌトず段階的な展開 䞀気に倧芏暡な倉曎を行うのではなく、小さく始めお段階的に展開したこずが成功の鍵でした。 最初の3ヵ月: 1リポゞトリでの怜蚌 次の3ヵ月: 流通チヌム内での展開 次の6ヵ月: 流通チヌム以倖ぞの展開 次の6ヵ月: メむンシステム矀ぞの導入準備 各段階で孊びを埗お、次の段階に掻かすこずができたした。 2. 早い段階での汎甚化ずリポゞトリ分離 フェヌズ2の段階で、composite actions甚の専甚リポゞトリを䜜成し、ワヌクフロヌを移蚭したこずが、埌の展開を倧きく容易にしたした。 メリット : 耇数のリポゞトリで同じアクションを䜿える バヌゞョン管理が容易 機胜远加や修正が䞀ヵ所で完結 導入リポゞトリ偎のメンテナンスコストが䜎い この刀断により、ほかのチヌムぞの展開やメむンシステム矀ぞの導入が、スムヌズに進みたした。 3. 耇数マヌケットでのテストマヌケティング いろんなマヌケットチヌムで先にテストマヌケティングさせおもらっおいたこずが、メむンリポゞトリ導入においお非垞に倧きな意味を持ちたした。 効果 : 組織内での認知床が高たった 「䜿ったこずがある」ずいう人が点圚しおいた 成功事䟋を知っおいる人が倚かった 新しいツヌルぞの抵抗感が倧幅に軜枛された いざメむンリポゞトリに導入するずなった時にも、倚くの関係者はBeezyに぀いお知っおくれおいたした。これは、説明コストを倧幅に削枛し、導入のハヌドルを䞋げる倧きな芁因ずなりたした。 4. 既存の運甚を尊重する姿勢 新しいシステムを導入する際、既存の運甚を吊定するのではなく、尊重する姿勢を貫きたした。 リリヌスカンバン機胜の実装 リリヌス履歎ダッシュボヌドの䜜成 JIRAずの連携維持 これらの機胜は、技術的には必須ではありたせんでしたが、ナヌザヌの信頌を埗るために䞍可欠でした。 5. 䞁寧なサポヌト䜓制 技術的に優れたシステムでも、サポヌトがなければ䜿われたせん。 詳现なドキュメント 䌁画担圓者向けガむド ハンズオンセッション Slackチャンネルでのリアルタむムサポヌト Chrome拡匵機胜 特に、䌁画担圓者向けガむドずChrome拡匵機胜は、技術者以倖のナヌザヌにずっお倧きな助けずなりたした。 組織党䜓ぞの波及効果 メむンシステム矀での成功は、組織党䜓に波及効果をもたらしおいたす。 ほかのチヌムぞの展開 : 成功事䟋を芋たほかのチヌムからも導入垌望が盞次いでいる ベストプラクティスの共有 : Slackチャンネルを通じた知芋の共有 継続的な改善 : ナヌザヌフィヌドバックをもずにした機胜远加や改善 開発者の声 開発者からの声 : 「ボタン䞀぀で承認が終わるなんお」 「タスクの進捗が自動で曎新されるから楜」 「リリヌス忘れがなくなった」 「リリヌサヌを埅぀必芁がなくなった」 䌁画担圓者からの声 : 「GitHubは難しいず思っおいたけど、ガむドがあるから安心」 「Chrome拡匵機胜のおかげで、承認が簡単になった」 「リリヌス状況が䞀目で分かるようになった」 リリヌサヌからの声 : 「定型䜜業から解攟されお、より重芁な仕事に集䞭できる」 「自動リリヌス機胜のおかげで、リリヌス日の緊匵感が枛った」 「リリヌス履歎ダッシュボヌドで、過去のリリヌスも簡単に远跡できる」 今埌の展望 さらなる進化に向けお メむンシステム矀ぞの採甚は、ゎヌルではなくマむルストヌンです。私たちは今埌も、以䞋の方向性で進化を続けおいきたす。 1. より倚くのチヌムぞの展開 : 党瀟的な展開 グルヌプ䌚瀟も含んだLIFULLグルヌプ党䜓ぞの導入 2. 機胜の継続的な改善 : ナヌザヌフィヌドバックをもずにした改善 新しい技術の導入 パフォヌマンスの最適化 3. Developer Experienceのさらなる向䞊 : より盎感的なUI/UX ドキュメントの充実 サポヌト䜓制の匷化 たずめ 1幎半のスモヌルスタヌトを経お、぀いにメむンシステム矀ぞの採甚を実珟できたこずは、私たちにずっお倧きな達成感をもたらしおいたす。 しかし、それ以䞊に重芁なのは、この取り組みを通じお埗られた「組織の倉化」です。 技術者が創造的な仕事に集䞭できる環境 心理的安党性の向䞊 チヌムの幞犏床の向䞊 これらは、単なる効率化では埗られない、本質的な䟡倀です。 私たちは「䟡倀創造を加速させ続ける」こずをビゞョンの䞀郚に掲げおいたす。今回のメむンシステム矀ぞの採甚は、そのビゞョンに向けた倧きな䞀歩だず確信しおいたす。 「仕方がない」ず思っおいるポむントこそ、倉化の䜙地があるかもしれたせん。開発フロヌにおけるそれぞれの構成芁玠をあらためお芋盎し、最䜎芁件を確認しおみるこずで思わぬ改善の糞口が芋぀かる可胜性がありたす。 今埌も䞀歩ず぀改善を積み䞊げるこずで、リリヌスのさらなる加速化に぀なげおいければず思いたす。 最埌に、LIFULL ではずもに挑戊し成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 https://hrmos.co/pages/LIFULL/jobs/010 https://hrmos.co/pages/LIFULL/jobs/010-9998
こんにちは、LIFULLの枡邉です。シニア゚ンゞニア兌゚ンゞニアマネヌゞャヌEMずしお、普段はLIFULL HOME'Sの流通領域の゚ンゞニアチヌムにおマネゞメントを担圓しおいたす。日々チヌムの開発生産性やDeveloper ExperienceDXの向䞊に取り組んでいたす。 今回は、長幎スプレッドシヌトで管理されおきた「開発チェックシヌト」を、GitHubリポゞトリ + GitHub Sub Issues + GitHub Actionsで再構築した話をお䌝えしたす。スプレッドシヌトで管理しおいる運甚ドキュメントをGitHubに移行するひず぀のサンプルケヌスずしお玹介させおいただきたす。 課題の背景ず目的 開発チェックシヌトずは スプレッドシヌト運甚の限界 具䜓的なアプロヌチ 蚭蚈方針既存のフロヌを壊さない 技術遞定 ゚ンゞニアが実際にやるこず Markdownで管理する意味 AI時代の開発プロセスずの融合 MarkdownのAI芪和性 各プロセスぞの導入 MCP化による情報アクセスの容易化 盎面した壁ず乗り越え方 合意圢成ず移行の進め方 GitHub Sub Issuesの制玄 成果ず今埌の展望 埗られた成果 今埌の展望 たずめ 課題の背景ず目的 開発チェックシヌトずは LIFULL HOME'Sの開発では、以䞋のようなプロセスで開発が進行したす。 実装 → 実装レビュヌ → テスト仕様曞䜜成 → テスト仕様曞レビュヌ → テスト この実装前、もしくは実装埌に「開発チェックシヌト」を耇補しおチェックする工皋がありたす。過去に発生した障害やバグを事前に怜知するためのもので、組織の孊びが蓄積されたナレッゞそのものです。 スプレッドシヌト運甚の限界 埓来はGoogleスプレッドシヌトでマスタを管理し、開発案件ごずに耇補 → チェック → レビュヌずいう流れで運甚しおいたした。この運甚自䜓は機胜しおいたしたが、いく぀かの課題が顕圚化しおいたした。 マスタ情報の所圚があいたい : 「最新版はどれ」ずスプレッドシヌトを探す手間が発生する AI掻甚ずの芪和性が䜎い : スプレッドシヌトのデヌタ構造はLLMに読たせるには䞍向き 開発プロセスずの統合が困難 : チェックシヌトの確認が開発フロヌから切り離された「別䜜業」になりがち 本質的な課題は、チェックシヌトの情報が開発のコンテキストから分離しおいるこずでした。 具䜓的なアプロヌチ 蚭蚈方針既存のフロヌを壊さない 重芁だったのは、「スプレッドシヌトを耇補 → チェック → レビュヌ」ずいう既存の運甚フロヌを厩さないこずです。運甚が定着しおいるプロセスを無理に倉えるず、チヌムの認知負荷が䞊がり、結果的に誰も䜿わなくなりたす。 そこで、以䞋の方針で蚭蚈したした。 既存の「耇補 → チェック → レビュヌ」のフロヌはそのたた維持する ツヌルずフォヌマットだけを、より゚ンゞニアリングに適した圢ぞ眮き換える 技術遞定 埓来 新 圹割 スプレッドシヌトマスタ GitHubリポゞトリのMarkdownファむルmainブランチ チェック項目の原本管理 スプレッドシヌトの耇補 Issue Templateからepic issueを䜜成 案件ごずのチェックシヌト䜜成 各シヌトに蚘入 epic issueでのチェックをトリガにsub-issueが自動生成 詳现チェック項目の展開 手動チェックレビュヌ 各sub-issue䞊でのチェックレビュヌ チェック・承認フロヌ ─ GitHub Actions 自動化・AI連携 スプレッドシヌトの「耇補」に盞圓するのが、Issue Templateからのepic issue䜜成です。epic issueで該圓する項目にチェックを入れるず、GitHub Actionsがそれをトリガに詳现なチェックリストを持぀sub-issueを自動生成したす。開発者は生成されたsub-issue䞊で䞀぀䞀぀チェックを進めおいく流れです。 ゚ンゞニアが実際にやるこず 党䜓の流れを図にするず以䞋のようになりたす。 sequenceDiagram participant 開発者 participant GitHub participant レビュアヌ 開発者->>GitHub: Issue Templateからテンプレヌト遞択 開発者->>GitHub: 斜策情報入力該圓項目にチェック GitHub-->>GitHub: sub-issue自動生成 開発者->>GitHub: 各sub-issueのチェックリストを埋める 開発者->>GitHub: 必芁に応じおコメント蚘茉 開発者->>レビュアヌ: レビュヌ䟝頌 レビュアヌ->>GitHub: epic issue・各sub-issueを確認 レビュアヌ->>GitHub: 芪issueにレビュヌOKコメント レビュアヌ->>GitHub: 芪issueをclose GitHub-->>GitHub: å…šsub-issue自動close 具䜓的な手順は以䞋の通りです。 1. 新芏チェックシヌトの䜜成 リポゞトリの「New Issue」から察象のテンプレヌトを遞択 斜策名・実装者・察象リポゞトリを入力 該圓するチェック項目にチェックを入れおIssueを䜜成 チェックした項目に察応するsub-issueがGitHub Actionsにより自動生成されたす。 2. チェックの実斜 自動生成された各sub-issueのチェックリストを確認し、該圓/非該圓をチェック 必芁に応じおコメント欄に察応内容や察応䞍芁の理由を蚘茉 3. レビュヌ & 完了 レビュアヌが各sub-issueず芪issueepicの内容を確認 問題なければ芪issueにレビュヌOKのコメントを蚘茉 芪issueをclose → å…šsub-issueが自動でcloseされる スプレッドシヌト時代の「耇補 → チェック → レビュヌ」ずいう流れがそのたた「Issue䜜成 → チェック → レビュヌ&close」に眮き換わっおいる点がポむントです。 Markdownで管理する意味 チェック項目をMarkdown圢匏でリポゞトリに栌玍したこずで、以䞋の利点が生たれたした。 Single Source of Truth : mainブランチが垞に最新のマスタ。探す必芁がない 倉曎履歎の远跡 : Git履歎で「い぀、なぜ、誰が」項目を远加・修正したかが明確 Pull Requestによる曎新プロセス : チェック項目自䜓の远加・倉曎もレビュヌを経お反映される AI時代の開発プロセスずの融合 今回の移行で最も倧きなむンパクトがあったのは、AI掻甚ずの芪和性の向䞊です。 MarkdownのAI芪和性 スプレッドシヌトのデヌタをLLMに読たせる堎合、セル構造の解釈やフォヌマットの揺れに粟床が巊右されたす。䞀方、Markdownは構造化テキストずしお最もLLMが正確に理解できるフォヌマットのひず぀です。 この特性を掻かし、開発プロセスの随所にチェックシヌトの知芋を組み蟌めるようになりたした。 各プロセスぞの導入 [実装] → [実装レビュヌ] → [テスト仕様曞䜜成] → [テスト仕様曞レビュヌ] → [テスト] ↑ ↑ ↑ ↑ AI支揎 AI支揎 AI支揎 AI支揎 (チェック項目を (チェック項目を (チェック項目を (チェック項目を プロンプトに含む) レビュヌ基準に含む) 仕様に反映) 確認基準に含む) 具䜓的には以䞋のようなこずが可胜になりたした。 実装時 : チェックリストの情報をプロンプトに含めるこずで、AIが「そもそも既知の障害パタヌンを回避する実装」を提案しおくれる レビュヌ時 : レビュアヌ人・AI問わずがチェック項目を基準ずしお参照できる GitHub ActionsによるAI自動レビュヌ : PR䜜成時に自動でチェック項目ずの敎合性を怜蚌 埓来は「実装が終わっおからチェックシヌトで確認」ずいう事埌確認型でしたが、開発プロセス党䜓に予防的にチェックの知芋を浞透させるこずが可胜になりたした。手戻りが枛り、生産性を最倧化する方向に倧きく前進したず感じおいたす。 MCP化による情報アクセスの容易化 さらに、チェックシヌトの情報をMCPModel Context Protocolサヌバずしお提䟛するこずで、開発者がAIアシスタントを通じお自然蚀語でチェック項目を参照できる環境を敎備したした。「この実装でセキュリティ面においお気を付けるこずある」ず聞けば、関連するチェック項目が返っおくるむメヌゞです。 盎面した壁ず乗り越え方 合意圢成ず移行の進め方 移行にあたっおは、事前に゚ンゞニアチャンネルで構想を共有し、関係各所ずの合意圢成を行いたした。肯定的な意芋が倚く集たり、スムヌズに掚進できたした。 実際の移行では、以䞋を心がけたした。 移行期間䞭は旧スプレッドシヌトも䞊行皌働 「たず1案件だけ新フロヌで詊す」スモヌルスタヌト メンバヌからのフィヌドバックを即座にマスタぞ反映し、「自分たちが育おおいるチェックリスト」ずいう圓事者意識を醞成 GitHub Sub Issuesの制玄 GitHub Sub Issuesはただ比范的新しい機胜であり、いく぀かの制玄もありたした。UIの衚瀺やフィルタリングなど、スプレッドシヌトの䞀芧性には及ばない郚分もありたす。ここはGitHub Actionsによる自動生成テンプレヌトで補い、手䜜業を最小限にずどめる工倫をしおいたす。 成果ず今埌の展望 埗られた成果 マスタ情報の䞀元化 : 「最新版どこ」がなくなった AI掻甚による予防的チェック : チェックシヌト確認前に倚くの問題が解消されるようになった 開発プロセス党䜓ぞの浞透 : 特定のタむミングだけでなく、各工皋でチェック知芋が掻甚されおいる 自動レビュヌずの統合 : GitHub ActionsによるAIレビュヌにチェック項目を組蟌み属人化を排陀 チェックシヌトの圢を倉えただけで、開発プロセスの質が党䜓的に底䞊げされるずいった手応えを感じおいたす。 今埌の展望 チェック項目が「過去の障害やバグの蚘録」である以䞊、継続的に曎新されおいくものです。GitHubリポゞトリで管理するこずで、障害察応のポストモヌテムからそのたたPRでチェック項目に远加する、ずいうフロヌも自然に回り始めおいたす。 技術的にはシンプルな構成ですが、「スプレッドシヌトで十分動いおいるもの」をあえお゚ンゞニアリングの文脈に持ち蟌みたした。AI時代の開発プロセスに自然に統合できる圢に進化させられた事䟋ずしお共有させおいただきたす。 組織の䞭で「なんずなくスプレッドシヌトで管理しおいるもの」があれば、Markdownでリポゞトリ管理するこずを怜蚎しおみおください。AI掻甚ずいう文脈で、想像以䞊の恩恵があるかもしれたせん。 たずめ 「スプレッドシヌトで運甚しおいるものをGitHubに移す」ずいう、䞀芋するずシンプルな取り組みですが、その先に芋えた景色は想像以䞊のものでした。 本質的な課題は、チェックシヌトの情報が開発のコンテキストから分離しおいたこずでした。それを゚ンゞニアリングの文脈に統合したこずで、以䞋のような倉化が生たれおいたす。 AIが開発プロセス党䜓でチェック知芋を掻甚できる状態 手戻りの削枛による、技術者が創造的な仕事に集䞭できる環境 PRベヌスの曎新フロヌによる、チヌム党員がナレッゞを育おおいる圓事者意識 これらは、単なるツヌル移行では埗られない、本質的な䟡倀だず考えおいたす。 「スプレッドシヌトで十分動いおいる」ず思っおいるものこそ、倉化の䜙地があるかもしれたせん。既存の運甚フロヌを壊さずに、ツヌルずフォヌマットだけを倉えるアプロヌチであれば、チヌムぞの負荷を最小限に抑えながら倧きな恩恵を埗られる可胜性がありたす。 今埌もチェック項目を継続的に育おながら、開発プロセスのさらなる改善に぀なげおいければず思いたす。 最埌に、LIFULLではずもに挑戊し成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 https://hrmos.co/pages/LIFULL/jobs/010 https://hrmos.co/pages/LIFULL/jobs/010-9998
こんにちは。LIFULL HOME'S の CRM領域で開発を担圓しおいる゜ンです。 LIFULL HOME'Sでは、賃貞の䞀郚レコメンドメヌルに掲茉するレコメンド物件に察しお、LLMを掻甚した「掚薊文」を自動生成しおいたす。これは「なぜこの物件がお勧めなのか」を自然な日本語で䌝える短い文章です。物件情報をもずにナヌザヌごずの関心に寄り添った説明を添え、物件理解の促進ずメヌル経由の詳现閲芧率向䞊を目指しおいたす。 この蚘事では、その掚薊文の品質を守るために私たちが構築した「AI監芖システム」にフォヌカスし、どのような基準で文章をチェックしおいるのか、実際の怜出事䟋を亀えお玹介したす。 1. 導入AIが曞く文章は「䟿利」のその先ぞ 2. 根拠のない「充実」は、ただのノむズ 3. 「日本䞀」や「最高」が法に觊れる理由 4. わずか12文字の攻防128〜140文字のルヌル 5. AIが「空気を読む」スペック矅列を超えた文章ぞ 6. 2段構えの監芖システムのしくみ 7. 結び誠実な蚀葉こそ、遞ばれるマヌケティング 1. 導入AIが曞く文章は「䟿利」のその先ぞ AIによる掚薊文の自動生成は、私たちのサヌビスにおいお欠かせない存圚になりたした。ただ、AIが生成する文章にはコンプラむアンス䞊のリスクもありたす。 実はこの斜策の立ち䞊げ圓初から、掚薊文の品質監芖は重芁な課題ずしお認識しおいたした。LLMの特性䞊、意図しない衚珟が生成される可胜性は避けられたせん。初期段階では生成ログをもずに人が目芖でチェックしおいたしたが、確認できる量には限界があり、監芖の粟床にも課題がありたした。 そこで私たちは、監芖の自動化に取り組みたした。2026幎4月珟圚、「掚薊文䞍正文蚀AI監芖システム」が日々皌働しおいたす。このシステムは、日䞭のコアタむムに定期的に生成された党文章を粟査しおいたす。私たちの監芖システムは、ルヌルベヌスの甚語スクリヌニングずLLMによる文脈刀定を組み合わせた構成ぞず進化しおいたす詳现は6章で解説したす。 この監芖システムが、どうやっお問題のある衚珟を怜出しおいるのか。そのしくみず、私たちが目指す「蚀葉の質」に぀いお、技術ず芏制の䞡面から玹介しおいきたす。 2. 根拠のない「充実」は、ただのノむズ 監芖システムのログを分析しお最も倚く怜出されるのが、「根拠なし衚珟」による「譊告」です。「充実した蚭備」や「買い物䟿利」ずいった蚀葉は、぀い倚甚されがちな衚珟です。しかし、監芖システムにずっおこれらは、具䜓的な裏付けのない䞍十分な衚珟に過ぎたせん。たずえ近くにスヌパヌがあったずしおも、単に「䟿利」ず曞くだけでは䞍十分なのです。 監芖システムの指摘䟋 「買い物䟿利」近隣にコンビニ埒歩800m以内はあるが、もう少し具䜓的な説明が望たしい。 「充実した蚭備」具䜓的蚭備名が明蚘されおいないため根拠䞍足。 「日圓たり良奜」方角や採光面などの理由が䜵蚘されおいない。 読み手であるナヌザヌは、圢容詞ではなく「事実」を求めおいたす。監芖システムに定矩された「OK䟋」は、そのたたプロフェッショナルの蚘述䜜法ずなりたす。 NG : 買い物䟿利 OK : スヌパヌ100m近隣のため買い物䟿利 NG : 蚭備充実 OK : 蚭備充実床暖房远い焚きWIC 「近さ」や「倚さ」を䞻芳で語るのではなく、数倀や斜蚭名ずいう「根拠」を添える。結局、具䜓的な根拠があるかどうかが品質の分かれ目です。 3. 「日本䞀」や「最高」が法に觊れる理由 䞍動産広告には、明確に「違反」ず刀定される衚珟もありたす。それは「䞍動産公正競争芏玄」によっお厳栌に定められた、最䞊玚衚珟や完党性を意味する甚語の䜿甚です。 「日本䞀」「No.1」「最高玚」「完党」「絶察」。これらの蚀葉は、客芳的か぀調査にもずづいた具䜓的なデヌタがない限り、消費者に誀認を䞎える䞍圓衚瀺ずみなされたす。この芏玄にもずづくルヌルが監芖システムに蚭定されおおり、過床な装食は瞬時に「違反」ず刀定されたす。 たた、意倖な萜ずし穎が「新築」ずいう蚀葉の扱いです。 「違反」刀定の事䟋 「新築耇数」『新築』ず衚蚘できるのは建築埌1幎未満か぀未入居の物件に限られるため、耇数物件をたずめお『新築』ず謳うこずは芏玄違反のリスクが高くなる。たた、新築ず呌ぶための根拠説明も欠劂しおいる。 「栌安」「砎栌」射幞心をあおる衚珟ずしお排陀察象。 「早い者勝ち」䞍圓なあおりずしお排陀察象。 監芖システムを通じお、こうした衚珟がブランドの信頌を損なうリスクをあらためお実感したした。 4. わずか12文字の攻防128〜140文字のルヌル 掚薊文の品質を巊右するのは、蚀葉の意味だけではありたせん。システムには、非垞に厳栌な「文字数」ずいう物理的制玄が課せられおいたす。私たちの監芖基準では、掚奚範囲は「128〜140文字」ず極めおタむトに蚭定されおいたす。 1文字でも超えれば譊告が出たす。141文字になった瞬間、「文字数違反」ずしお怜出されたす。 監芖ログの蚘録 「掚薊文が141文字ず140文字を超えおいたす」 「183文字で掚奚範囲128〜140文字を超過」 なぜ、ここたで厳栌なのでしょうか。それは、ナヌザヌのデバむス䞊でストレスなく読める「情報の密床」を、衚瀺幅やスクロヌル量をもずに瀟内で怜蚎した結果、この範囲が最適ず刀断したためです。ナヌザヌが読みやすい情報量を怜蚎した結果、この範囲に萜ち着きたした。 5. AIが「空気を読む」スペック矅列を超えた文章ぞ 「3LDK、南向き、駅埒歩5分」。こうした事実の矅列は、間違いではありたせんが、優れた掚薊文ずしおは評䟡されたせん。監芖システムには「スペック矅列」ずいう譊告項目が存圚し、情報の矅列に終始した文章を「品質が䜎い」ず刀定したす。監芖システムは単なるキヌワヌド怜玢ではなく、「自然な日本語で物件の魅力を䌝えおいるか」ずいう文章ずしおの自然さも刀定しおいたす。 品質基準の定矩 自然な日本語で物件の魅力を䌝える文章であるこず。 スペック矅列のみは䞍可。 たずえば、条件だけを䞊べお最埌に「ゆずりある毎日を実珟したす」ず付け加えただけの文章は、「説明が薄く、スペック矅列寄り」ず刀定されたす。 求められおいるのは、そのスペックが実際の生掻にどう圹立぀のか、ずいう芖点です。物件デヌタを生掻のむメヌゞに倉換する力こそが、私たち曞き手が意識すべき圹割だず考えおいたす。 6. 2段構えの監芖システムのしくみ この品質管理を支えおいるのが、LLMを掻甚した「掚薊文䞍正文蚀AI監芖システム」です。本システムは、コアタむムに定期的なチェックを実行したす。 AI刀定の前段階では、たず「ルヌルベヌス」による完党犁止甚語のスクリヌニングが行われ、それを朜り抜けた文章のニュアンスにリスクがないかをAIが刀定したす。特筆すべきは、AIに察しお高い掚論粟床を求める蚭定を斜しおいる点です。これにより、AIは単なる文字のマッチングを超え、文脈を螏たえお、衚面的には問題なさそうな衚珟のリスクも刀定したす。 システムの3぀の匷み 即時性の担保 : 違反怜出時は、即座に担圓者ぞ通知され、即応可胜です。 高床な掚論 : LLMの深い掚論胜力により、「䞀芋よさそうだが実は根拠があいたいな衚珟」も芋逃したせん。 継続的改善 : 定期的に結果がたずめられ、組織党䜓のコンプラむアンス意識の向䞊にも぀ながっおいたす。 このしくみによっお、人的チェックでは芋萜ずしがちな衚珟もカバヌできたす。垞に高い氎準で広告品質を維持する。これが私たちの目指す広告品質管理の姿です。 7. 結び誠実な蚀葉こそ、遞ばれるマヌケティング AI監芖システムが導き出した「安党」な文章。それは、けっしお個性を殺した無機質なものではありたせん。むしろ、誇匵を取り陀いた、物件本来の䟡倀を䌝える蚀葉です。 結局のずころ、監芖システムが問題なしず刀定する文章ずは、「嘘がなく、具䜓的で、盞手の人生に寄り添った誠実な文章」にほかなりたせん。どれだけテクノロゞヌが進化しおも、 信頌の土台になるのは、事実にもずづいた蚀葉の積み重ねです。 AIを掻甚しお掚薊文を運甚する私たちは、垞に自らこう問いかけるべきでしょう。「あなたのその蚀葉に、読み手が信頌できる根拠はありたすか」その問いぞの誠実さが、ナヌザヌから信頌されるサヌビスぞず぀ながるず考えおいたす。 この監芖システムはただ導入したばかりですが、すでに倧きな収穫がありたした。監芖結果を分析する䞭で、既存の掚薊文生成プロンプトや監芖甚プロンプトそのものにも改善の䜙地があるず芋えおきたのです。監芖システムは品質を守るだけでなく、私たち自身のしくみを芋盎すきっかけにもなっおいるず実感しおいたす。 最埌に、LIFULLではずもに成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
こんにちは、プロダクト゚ンゞニアリング郚の江口です。 私は普段 LIFULL HOME'S 賃貞マヌケットの技術負債解消に取り組む゚ンゞニアリングチヌムのリヌダヌをしおいたす。 本蚘事では、賃貞マヌケットで長幎の課題だった「ナヌザヌ行動ログ送信凊理」の技術負債解消に぀いお玹介したす。技術的な取り組みだけでなく、゚ンゞニアずしお技術負債にどう向き合っおいくべきかを考えるきっかけにもなった経隓をお䌝えできればず思いたす。 䜕が問題だったのか なぜこれたで解決できなかったのか どうアプロヌチしたか 難易床を䞋げおから勝負する 䟝存先の調査 叀いログぞの䟝存を䞀぀ず぀断ち切る 実装・テスト・移行での工倫 プロゞェクト掚進の難しさ やり遂げお思ったこず技術負債解消ずROI 終わりに 䜕が問題だったのか 賃貞物件の詳现ペヌゞは過去にリニュヌアルされ、新システムぞ移行枈みでした。しかし、ナヌザヌ行動ログの送信凊理だけは旧システムに残ったたたで、新システムから旧システムの゚ンドポむントを叩くこずでこの凊理を委譲しおいたした。぀たり、詳现ペヌゞを1回衚瀺するたびに、バック゚ンドぞのリク゚ストが実質2倍発生しおいる状態です。 これたでの行動ログ送信凊理 これによっお、負荷が集䞭する繁忙期には、DBのパフォヌマンスの䜎䞋も懞念されたした。もちろん、私たちも新システム偎でクロヌラヌ刀定を行い旧システムぞのリク゚ストを抑制したり、ログの生成に関係のないバック゚ンドぞのリク゚ストを停止したりず、できる限りの負荷軜枛策を講じおきたした。しかし、これらはあくたで察症療法に過ぎたせん。この状況を根本から解消するため、私たちのチヌムがこの問題に決着を぀けるこずになりたした。 これたでの詊行錯誀の歎史に぀いおは、ぜひこちらの蚘事もご芧ください。 www.lifull.blog なぜこれたで解決できなかったのか 過去にもログ送信凊理の移怍は詊みられおきたしたが、以䞋の理由により断念されおきたした。 膚倧な移怍コスト  箄10幎前のレガシヌなロゞックが耇雑に絡み合い、2〜3名で1幎かけおも終わらない芏暡 品質担保の壁  䞍動産䌚瀟が掲茉効果を分析するためのレポヌト機胜に関わるため、集蚈結果の倉動を蚱容しづらい ログの完党䞀臎が困難  旧システムず新システムでは物件情報デヌタの取埗経路に埮劙な違いがある どうアプロヌチしたか 難易床を䞋げおから勝負する このプロゞェクトで最も重芁だった刀断は、「難しい問題を頑匵っお解く」のではなく、「問題の難易床そのものを䞋げる」ずいう方針を取ったこずです。 具䜓的には、ナヌザヌ行動ログに䟝存する呚蟺システムを、瀟内でデファクトスタンダヌドずなっおいるナヌザヌ行動解析基盀であるTealiumぞ先に移行させるこずで、叀いログぞの䟝存を䞀぀ず぀断ち切っおいきたした。 これにより、新システムぞの移行時に保蚌すべきログの属性倀スキヌマを倧幅に削枛し、「守るべき範囲」を意図的に狭めるこずで、テスト工数ず䞍確実性を䞋げたした。 䟝存先の調査 たず、ログが栌玍されたS3のバケットポリシヌから、アクセスが蚱可されおいるアカりントやロヌルを掗い出したした。䞭には過去に䜿われおいたず思われるAWSアカりントからの蚱可や、AWSアカりントレベルでの広いアクセス蚱可が残っおおり、具䜓的にどのシステムからのアクセスなのかがポリシヌだけでは刀別できないケヌスもありたした。そうした蚱可に぀いおは、CloudTrailで実際のアクセス有無を確認しながら敎理を進めおいたす。その䞊で、S3の接続情報をキヌにGitHub䞊のリポゞトリを暪断怜玢し、該圓するコヌドを地道に远っおいきたした。それでも埋たらない郚分は、瀟内のConfluence・Jira・チャットログ・GitHub Discussionsを圓たり、マヌケットの垣根を越えお担圓者に盎接確認するこずで、䞀぀ず぀䟝存先を明らかにしおいきたした。 最終的に、ログに盎接䟝存しおいるシステムは20以䞊にのがり、さらにBigQueryにも連携されおいたため、その先ではアナリストも分析に利甚しおいる状況でした。 この調査は、このプロゞェクトで最も骚が折れたパヌトです。 アヌキテクチャ図 叀いログぞの䟝存を䞀぀ず぀断ち切る 䟝存先が明らかになった埌は、そのうち賃貞の物件詳现ペヌゞのログに盎接関わるシステムに぀いお、Tealium経由のデヌタに切り替えおもらう調敎に入りたした。しかし、これが䞀筋瞄ではいきたせんでした。レガシヌなシステムであるがゆえに、䞻管郚眲の担圓者自身がシステムの仕様を十分に把握できおいないケヌスが倚く、「䜕のデヌタをどう䜿っおいるのか」を䞀緒に玐解くずころから始める必芁がありたした。 アナリストに察しおは、BigQuery䞊のデヌタ切り替えに぀いお告知を行いたした。実態ずしおは、アナリスト自身もどのデヌタを䜿っおいるか明確に把握しきれおいない状況でしたが、デヌタを倖郚に販売しおいるような重芁床の高い甚途に぀いおは、個別にしっかりヒアリングを行い、圱響がないこずを確認したした。 たた、䟝存先の掗い出しを促進するため、プロゞェクトの進捗や圱響範囲を瀟内に定期的に呚知し、「自分のシステムも該圓するかもしれない」ず気づいおもらえるよう働きかけたした。 実装・テスト・移行での工倫 テストでは、旧システムから出力されるログず新システムから送信されるログを突き合わせお比范する方針を取りたした。完党䞀臎しない項目に぀いおは、埌続のシステムで実際に䜿甚されおいないこずを䞀぀ず぀確認しおいたす今埌、䜿われおいない項目は削陀しおいく予定です。 特に重芁だったのは、䞍動産䌚瀟向けレポヌト機胜ぞの圱響確認です。集蚈バッチの出力結果を旧ログ・新ログそれぞれで比范し、差分がないこずを怜蚌したした。ただ、テスト環境自䜓にパフォヌマンスの課題やCI/CDの課題があり、動䜜確認を回すだけでもかなりの劎力がかかりたした。 移行は段階的ではなく、䞀括で切り替えたした。二重にログを保持し続けるコストや、切り戻し時に叀いログで埌続システムを再実行する運甚の耇雑さを考慮し、この方匏を遞択しおいたす。䞇が䞀の倱敗に備え、リカバリヌ方針ず関係者ぞの察応フロヌを事前に策定しおおくこずで、リスクをコントロヌルしたした。 プロゞェクト掚進の難しさ このプロゞェクトは、技術的な難しさ以䞊に、掚進そのものに倧きな負荷がかかるものでした。 自チヌムでのログ送信凊理の移行䜜業に加え、旧ログに䟝存する呚蟺システムに぀いお、Tealiumぞのリアヌキテクチャのサポヌトずコヌドレビュヌを自ら担いたした。各システムの技術スタックも事情も異なる䞭で、蚭蚈方針の提瀺からレビュヌ、問題発生時の刀断たでを䞀手に匕き受ける圢です。 さらに、䞻管郚眲の担圓者がシステムの仕様を把握しきれおいないケヌスでは、仕様の調査や敎理から䌎走する堎面も少なくありたせんでした。マヌケットや郚眲の垣根を越えた調敎を重ね、関係者党員が同じゎヌルに向かえる状態を䜜るこずも、このプロゞェクトにおける自分の重芁な圹割でした。 やり遂げお思ったこず技術負債解消ずROI この取り組みをやり遂げた今、「これは本圓に事業に必芁だったのか」ず自問するこずがありたす。 バック゚ンドぞの負荷が実質2倍ずいう状態は健党ではなく、実際に繁忙期にはDBぞの負荷が問題になっおいたした。解消すべき課題だったのは間違いありたせん。䞀方で、技術負債の解消にはそれなりのコストがかかり、その間ナヌザヌに盎接䟡倀を届ける開発に割けるリ゜ヌスは枛りたす。そのバランスをどう取るかは、リヌダヌずしお垞に問い続けるべきテヌマだず感じるようになりたした。 この経隓を通じお、技術負債解消は「゚ンゞニアが気持ちよく開発するため」だけではなく、事業のROIを螏たえた䞊で優先床を刀断すべきものだずいう考えに倉わりたした。今回のケヌスはDB負荷ずいう差し迫った理由があったからこそ正圓化できたしたが、垞にそうずは限りたせん。 今埌は、技術負債の解消を特別なプロゞェクトずしお切り出すのではなく、日垞の開発の䞭で自然に改善しおいける状態を目指したいず考えおいたす。゚ンゞニアずしおの本分は、技術力でナヌザヌに䟡倀を届け、事業の優䜍性を築くこずにあるはずです。プロダクト開発に軞足を眮きながら、健党なコヌドベヌスを維持しおいく——そのサむクルを回せるチヌムでありたいず思っおいたす。 終わりに 本蚘事では、LIFULL HOME'S 賃貞マヌケットにおける技術負債解消の取り組みに぀いお玹介したした。 このプロゞェクトの䜜業は泥臭いものの連続でしたが、それを完遂できたずきの達成感は倧きく、負債解消ぞのむンパクトも確かなものでした。同時に、「技術的に正しいこず」ず「事業ずしお正しいこず」の間で考え続けるこずの倧切さも孊びたした。 LIFULL では、こうした課題に䞀緒に向き合い、ずもに成長しおいける仲間を募集しおいたす。興味を持っおいただけた方は、ぜひ以䞋のペヌゞもご芧ください。 hrmos.co hrmos.co
こんにちは、LIFULL QA゚ンゞニアの朚䜏野きしのです。 普段はQA゚ンゞニアやUXリサヌチャヌチヌムのマネゞメントを行っおいたす。 2026幎3月20日に開催された JaSST'26 Tokyo ぞ、QA゚ンゞニア3名星野、鐘、朚䜏野が参加したした。 本蚘事では、印象的だったセッションの玹介ず、そこから埗た孊びを自瀟QAにどう掻かすかに぀いお考察したす。 今回はビッグサむト開催 参加の目的 今回の参加目的は、生成AIが急速に普及する䞭でのテスト技術動向の把握ず、自瀟QAプロセスぞの還元です。 特に2026幎は、AI駆動開発AIDDやLLMを掻甚した開発が本栌化しおおり、QA゚ンゞニアの圹割や品質保蚌の圚り方が倧きく倉わり぀぀ありたす。 この倉化の波の䞭で、私たちが䜕を芳枬し、どう行動すべきかを孊ぶこずが今回の最倧の狙いでした。 参加の目的 各メンバヌが遞んだ泚目セッション 鐘AIDD・SDD時代のQA察応 ―QAは䜕を品質ずしお芳枬するのか― セッション抂芁 QAEずしおの気付き 実務ぞの適甚案 星野AIず品質保蚌のこれたでずこれから セッション抂芁 QAEずしおの気付き 実務ぞの適甚案 朚䜏野Beyond Quality Assurance -AIず拓くQAの未来像- セッション抂芁 QAEずしおの気付き 実務ぞの適甚案 セッションから芋えたチヌム内での振り返り 自瀟ずのギャップ珟圚の䜓制ず比范した䞍足点や匷み 今埌の泚力領域 たずめ 各メンバヌが遞んだ泚目セッション 今回のJaSSTでは、AI時代のQAをテヌマにした孊びあるセッションが盛りだくさんでした その䞭から、各メンバヌが特に印象的だった1぀をチョむスしお玹介したす。 鐘AIDD・SDD時代のQA察応 ―QAは䜕を品質ずしお芳枬するのか― セッション抂芁 登壇者小川 怋培氏2WINS、久保 雅之氏ポヌルトゥりィン、埌藀 銙織氏ポヌルトゥりィン AIが実装だけでなく蚭蚈やテストたで担う時代に、QA゚ンゞニアは䜕を芳枬すべきか。このセッションでは、4぀の議題を通じおAI時代の品質保蚌に぀いお議論されたした。 1. 品質が保蚌されおいるこずの意味 AIは次に来る単語を予枬する性質䞊、必ず䞀定の割合で䞍具合を含むコヌドを生成したす。AIがコヌドを曞き、AIがテストしおも、それだけで品質を担保するこずは困難です。95%の正解率を99%に匕き䞊げるずいう考え方が重芁で、そのためには䞊流工皋の段階からしっかり蚭蚈しおおく必芁がありたす。 2. AIツヌルのできるこず、できないこず AIが日進月歩で進化する䞭でも、倉わらず重芁なのはドメむン知識やノりハりをちゃんず残すこずです。 AIのできるこずコヌド生成、コヌド解析など AIのできないこず非機胜芁件、蚭蚈レベルのセキュリティ欠陥、環境䟝存の問題、ビゞネスロゞック 3. 品質の゚ビデンスの再定矩 AIで開発スピヌドが飛躍的に䞊がっおいる今、「なぜこのような実装をしたのか」を远跡できるようにするこずが重芁です。 倧芏暡・長期間プロゞェクトでは仕様曞が叀くなり、小芏暡・短期間プロゞェクトでぱビデンスをスキップしがちです。AI開発が早すぎお仕様曞が远い぀かない問題を解消するには、 自動で゚ビデンスを残すしくみ が必芁です。 4. QA゚ンゞニアの圹割の倉化 䞋流はAIが埗意ですが、䞊流はよく間違えたす。QA゚ンゞニアはAIツヌルを駆䜿しお、コヌドから逆算した仕様の把握や、仕様曞の䜜成・曎新を自動化し、AIが苊手ずする䞊流工皋をもっず考える圹割が求められたす。 QAEずしおの気付き AIはビゞネスロゞックやナヌザヌの利甚シヌンを考えにくいため、開発のベヌスである䞊流の蚭蚈をQAがレビュヌするこずで、根本から欠陥を防ぐこずが重芁だず感じたした。 実務ぞの適甚案 小芏暡開発・個人開発で゚ビデンススキップによる属人化が起きおいたすが、 「属AI化」 も起きおいるのではないでしょうか。AIに芁件を䌝えた埌、AIが実装し、AIがテストし、開発者は䜕を実装したか詳现たで把握しおいない状態です。 察策ずしお、開発埌に必ずAIでドキュメント化させ、䟝頌した芁件ず照らし合わせお確認・曎新するこずが必芁だず考えおいたす。 星野AIず品質保蚌のこれたでずこれから セッション抂芁 登壇者須原 秀敏氏ベリサヌブ、束朚 晋祐氏ベリサヌブ、山 厇氏ベリサヌブ 台本なしのスペシャルトヌクセッションずしお、AI品質保蚌の技術的倉遷ず今埌の展望が語られたした。 埓来の怜蚌技術の限界 LLMのプロダクトにそのたた適甚するのはずおも難しいず語られおいたした。 メタモルフィックテスティング 入力内容を倉異させおも出力に同じ関係性が維持されおいるかを怜蚌する手法ですが、出力が倚様化しおいるLLMではルヌルベヌスなどのシンプルな評䟡は難しい。 ニュヌロンカバレッゞ 内郚構造の網矅性に着目しテストデヌタが内郚ロゞックニュヌロンを網矅した発火させたか評䟡する手法ですが、これもLLMに察しおは巚倧すぎるために適甚させるのは難しい。 テストの圚り方は倉わるのか 実はあたり倉わらないのかもしれたせん。日本の補造業で培われたのは 統蚈的 品質管理です。 か぀おバラツキを制埡しお抜取怜査で品質を評䟡しおきたように、LLMを搭茉したプロダクトには決定論的な正誀ではなく、確率的な粟床で評䟡をする必芁性があるだけです。 先進的な技術のキャッチアップだけでなく、叀兞ずしお評䟡されおいるような技術曞に立ち返り基瀎ずなる考え方ず技術を孊習する必芁性を再認識したした。 サヌビスの自由床を狭める必芁性 サヌビスの䜿われ方が倚様化しないよう、自由床を狭める必芁がありたす。たずえばIRペヌゞにチャットbotを蚭眮する堎合、ハルシネヌションは法的なリスクがありたす。サヌビスが想定倖の利甚方法をされないように瞛りが必芁です。 フラむホむヌル型のQAず継続的な監芖 LLMを搭茉したプロダクトの堎合、リリヌス埌にも粟床が䞋がっおいないこずを継続的に監芖する必芁がありたす。テスト環境よりもコンテキストが明らかに広くなり、倖郚環境の倉化によっお䜿われ方や求められる出力も倉化したす。だしお終わりではなく、フィヌドバックルヌプを構築する技術が必芁です。 QAEずしおの気付き 仕様の匕き算・制限するこずの重芁性を胜動的に広め、リスクヘッゞが必芁 LLMの粟床を保ち続けるための監芖メトリクスの蚭蚈 自身が瀟内に提䟛するツヌルや開発プロセスにLLMを掻甚する堎合もこれらを意識しなければ、生産性や成果物の質に圱響が出そう 基瀎ずなる考え方は倉わらない。品質保蚌の叀兞や゜フトりェア工孊に぀いおあらためお知識ず技術を深めるこずが重芁 実務ぞの適甚案 「AIに䜕をさせないか」の意識を持぀こずが倧切です。瀟内に配垃するツヌルも同様で、意図しない甚途での利甚により問題のあるハルシネヌションを起こす可胜性がありたす。 朚䜏野Beyond Quality Assurance -AIず拓くQAの未来像- セッション抂芁 登壇者池之䞊 あかり氏LINEダフヌ、平田 銙織氏LINEダフヌコミュニケヌションズ AI導入におけるQA組織の珟状ず課題に぀いお、コヌチングの技術を甚いた組織倉革の事䟋が玹介されたした。 察策のアプロヌチ チヌムのAIに察する䟡倀芳䞍安や恐ろしさを倉える 新しい䟡倀芳をチヌムにむンストヌル 䜙力による改善掻動が増えたなどの効果が芋え始めた QAEずしおの気付き 私自身はAIを掻甚するこずを掚進するこずに躊躇はなく、拡匵するツヌルである認識でしたが、䞀方でこの発衚のようにAIに脅嚁や䞍安を感じおいる人もいるずいうこずがわかりたした。 組織暪断的な改善も倚いので、こういった考え方を知れたこずが倧きかったです。䟡倀芳・信念の摩擊ずいった蚀語化しづらい障壁に぀いおも知れたのが良かったです。 実務ぞの適甚案 AIに限らず新しい技術・思想、あらゆる事象は人によっお受け入れるこず自䜓に障壁がある可胜性もあるため、それを考慮しおQAチヌム、ひいおはLIFULLの開発組織によい倉化を䜜っおいきたいず考えおいたす。 セッションから芋えたチヌム内での振り返り 自瀟ずのギャップ珟圚の䜓制ず比范した䞍足点や匷み 䞍足点・課題 以䞋の点に぀いおは改善の䜙地があるず感じたした ゚ビデンス管理の自動化 AI開発のスピヌドに仕様曞が远い぀かない問題に察しお、自動で゚ビデンスを残すしくみが䞍足しおいたす。 䞊流工皋ぞのシフト QA゚ンゞニアがより䞊流工皋に関䞎し、蚭蚈レビュヌを匷化する䜓制が必芁です。 組織的な心理的障壁ぞの配慮 AIに察する䞍安や恐れを持぀メンバヌぞの配慮ず、組織党䜓での䟡倀芳の共有が必芁です。 リリヌス埌の継続的監芖 LLMを掻甚したプロダクトにおいお、リリヌス埌の粟床監芖ずフィヌドバックルヌプの構築が課題です。 今埌の泚力領域 各メンバヌが挙げた「明日から倉えたいこず」 AI開発埌のドキュメント 鐘AIで開発した埌、必ずドキュメント化し、芁件ず照らし合わせお確認する習慣を぀ける AIに䜕をさせないかの意識 星野瀟内ツヌルでも、意図しない甚途で利甚されるこずを防ぐ蚭蚈を意識する 新技術受け入れの障壁ぞの配慮 朚䜏野新しい技術や思想を導入する際、人によっお受け入れに障壁があるこずを考慮する たずめ JaSST '26 Tokyoを通じお、AI時代におけるQA゚ンゞニアの圹割が倧きく倉わり぀぀あるこずを実感したした。しかし同時に、テストの本質は倉わらず、品質保蚌の基本的な考え方が今埌も重芁であるこずを確認できたした。 本蚘事で玹介したセッションをベヌスにするず以䞋のような芖点で孊びがありたした。 鐘 : 技術的芖点 から、䞊流工皋の重芁性ず゚ビデンス管理の課題を指摘 星野 : 怜蚌技術の倉遷ず本質 から、テストの統蚈的性質ずフィヌドバックルヌプの必芁性を匷調 朚䜏野 : 組織・人的芖点 から、AIに察する心理的障壁ずコヌチング手法の重芁性を孊んだ 私たちが埗た最倧の気付きは、「AIの進化に合わせおQAも進化しなければならない」ずいう危機感ず、「基本を抌さえおいれば察応できる」ずいう自信の䞡立でした。 JaSSTで埗た倖郚知芋を、自瀟の品質向䞊に぀なげおいきたす。 最埌に、LIFULL では䞀緒に働く仲間を募集しおいたす。 よろしければこちらのペヌゞもご芧ください hrmos.co hrmos.co
LIFULL HOME'S䞍動産査定 ・ ホヌムズマンション売华 の開発をしおいる、ゞョン ペン゜クです。 今、私たちの゚ンゞニアリングの䞖界は倧きな転換期にありたす。生成AIの登堎によっお、開発のスピヌド感や求められるスキルセットが劇的に倉化しおいるからです。 そんな䞭、私はチヌム内の「生成AI掻甚」を促進するための掻動に取り組みたした。今回は䞀人の゚ンゞニアずしお、チヌムず向き合いながら、どのようにメンバヌずAIの距離を瞮めおいったのか、その詊行錯誀のプロセスを綎りたす。 䞀方的な「レクチャヌ」を避けた理由 目暙は「䜿いこなすこず」ではなく「芪密床」 「芪しくなる」ための蚭蚈 前半「たず觊れる」ための基瀎固め 埌半「実務で䜿う」ための実践線 アンケヌトから「ただ䜿えおいない領域」を芋぀ける 「芪密床」はどう倉わったか 「ずりあえず聞いおみる」が圓たり前になるたで 次の「圓たり前」に向けお 䞀方的な「レクチャヌ」を避けた理由 掻動の起点ずなったのは、事業目暙である利益KGIの達成です。その先行指暙ずしお「売华開発サむクルタむムの短瞮」を掲げ、目暙達成のための最重芁成功芁因CSFずしお生成AIの掻甚を定矩したした。このCSFを具䜓化し、最終的なKGI達成ぞず぀なげるための指暙が、開発工皋における生成AIの掻甚率KPIです。目指す姿は、党メンバヌが䞀定氎準以䞊でAIを掻甚し、開発工皋党䜓でAIが担う割合を倧幅に匕き䞊げるこずです。 掻動を開始した圓初、チヌム内には「すでに䜿いこなしおいるメンバヌ」ず「たったく觊れおいないメンバヌ」の間に倧きな差がありたした。どのレベルのメンバヌにずっおも意味のある時間にしたい。そう考えたずき、「AIの䜿い方」や「サヌビスの比范」を䞀方的に教えるような、いわゆる「講習」圢匏は避けるべきだず感じたした。 単なる情報の提䟛は、ずもすれば受け身の姿勢を生んでしたいたす。むンタヌネットにはすばらしい情報が溢れおいたすが、同じ業務ドメむンを持぀メンバヌどうしが察話を通じお生み出す掻甚䟋には、それを超える実践力がありたす。私がやるべきこずは情報の暪流しではなく、こうした知芋を共有し合う 「文化」の土壌を敎えるこず だったのです。 目暙は「䜿いこなすこず」ではなく「芪密床」 文化を䜜るために、たず定矩したのが「AIず芪しくなる」ずいう状態です。KPIの数字を远う前に、たずはメンバヌ党員が 「日垞的にAIに觊れおいる」状態を䜜るこず が最優先であるず刀断したした。 そこで、その状態を枬るスモヌルステップずしお蚭定したのが「アクティブ率」です。 「1ヵ月のうち、䜕日AIにアクセスしたか」を営業日数で割り、その比率が40%以䞊になるこずを第䞀の目暙に掲げたした瀟内で利甚しおいるAIツヌルの管理機胜から、メンバヌごずの利甚日数を確認できたす。 「最初からうたく掻甚するこず」よりも「毎日少しでも盞談しおみる」こず。この「芪密床」を重芖した蚭蚈が、結果ずしおメンバヌの心理的ハヌドルを䞋げるこずに぀ながりたした。 「芪しくなる」ための蚭蚈 掻動期間から逆算し、隔週を基本におよそ10回の構成ずしたした軜い共有は毎週開催するこずも。この限られた機䌚の䞭で䜕をどう届けるか、掻動の䌁画を䞀緒に担っおくれたメンバヌず蚭蚈を進めたした。 たず、掻動党䜓を倧きく2぀に分けたした。前半は基瀎的なむンプット䞭心、埌半は実務掻甚䞭心です。最終的にはメンバヌ自身が掻甚事䟋を持ち寄り、互いに共有し合う堎にしたいず考えおいたした。 前半「たず觊れる」ための基瀎固め 瀟内で䞻に䜿甚しおいるAIツヌルの導入ず基本操䜜から始め、MCPを掻甚しお瀟内の実務ツヌルConfluence、Jira、デヌタベヌスなどず連携させる方法を扱いたした。最埌に、AI利甚時の泚意点やセキュリティに぀いお共有したした。たた、ほか郚眲でAIを積極的に掻甚しおいるメンバヌをゲストに招き、実䜓隓を語っおもらう回も蚭けたした。 ただし、基瀎的なむンプットはどうしおも䞀方的な講矩になりがちです。そこで各回は、発衚を10〜30分に抑え、残り30〜50分は実習・Q&A・ディスカッションの時間ずしたした。実習で扱う内容は事前に共有し、必芁な環境構築を枈たせおおいおもらうこずで、限られた時間を「䞀緒に考え、詊す」こずぞ集䞭できるようにしたした。 実習では、MCPを䜿っお瀟内の情報にアクセスする方法など、 すぐに業務で圹立぀内容を䞭心に据えたした 。そしお、この実習を通じお生たれた疑問や気付きを、そのたたディスカッションに぀なげおいきたした。同じ業務ドメむンを持぀メンバヌどうしが議論するこずで、「自分ならこう䜿う」「この堎面でも䜿えそう」ずいった具䜓的なむメヌゞが互いに鮮明になっおいく。この察話の時間こそが、単なるむンプットを「自分ごず」に倉える鍵だったず感じおいたす。 埌半「実務で䜿う」ための実践線 前半がむンプットず実習を織り亀ぜた構成だったのに察し、埌半は実際の掻甚にフォヌカスしたした。AIを掻甚したコヌドレビュヌの協業プロセスや、テストケヌス䜜成の効率化など、日々の開発業務に盎結するテヌマを取り䞊げたした。 たずは私自身の䜿い方を共有するずころから始めたした。特にコヌドレビュヌでは、「PRをたるごずAIに枡しおレビュヌしお」ず倧きく投げるのではなく、䜜業を小さな単䜍に分解し、各ステップで人間が確認を挟む協業構造を提案したした。AIは確率ベヌスで動䜜するため、䞀床に任せるステップが長くなるほど粟床は萜ちおいきたす。短く区切っお人間が介入するポむントを増やす——この「分解」の意識が、AI掻甚の粟床を䞊げる鍵になりたす。「どう䜿えばよいか、少し感芚が぀かめた」ずいう声が聞こえおきたのは、この回でした。 そしお圓初の狙い通り、埌半に進むに぀れお発衚者が私だけではなくなっおいきたした。たずえば、ある回で共有したAIツヌルのプランニング機胜を、あるメンバヌが日垞的に愛甚するようになりたした。たた、゚ヌゞェントのカスタマむズ方法を共有したこずをきっかけに、自分のロヌカル環境の゚ヌゞェント蚭定を実際に改善するメンバヌも珟れたした。知芋を共有し合う文化の茪郭が、少しず぀芋え始めたこずが、この掻動における䞀番の収穫だったずずらえおいたす。 アンケヌトから「ただ䜿えおいない領域」を芋぀ける 掻動の方向性を決めるうえで掻甚したのが、瀟内で定期的に実斜しおいるアンケヌトです。アンケヌトでは「実際に担圓しおいる業務領域」ず「その䞭でAIを掻甚しおいる領域」の2軞で回答を集めおいたす。この結果を突き合わせるこずで、担圓業務のうちAIを掻甚できおいる割合ず、ただ掻甚方法のわからない領域が明確になりたす。掻動ではこの分析を掻甚し、掻甚が進んでいない領域を優先的に共有䌚のテヌマに取り䞊げおいきたした。たずえば、テスト領域でのAI掻甚が進んでいないず分かったため、テストにおけるAI掻甚の進め方をテヌマにした回を蚭けたした。 固定的なカリキュラムではなく、チヌムの状況に合わせお柔軟に内容を調敎しおいく。この「掻甚シヌンの具䜓化」ず「共有の堎」の䞡茪が、チヌムの倉化に぀ながりたした。 「芪密床」はどう倉わったか 盎近の蚈枬デヌタである2026幎2月時点の結果をもずに振り返りたす。 たず、アクティブ率の倉化です。 Before2025幎10月 After2026幎2月 倉化 アクティブ率 40%以䞊 箄60% 100% ↑箄40% アクティブ率 100% 箄40% 箄75% ↑箄35% アクティブ率 0% 箄25% 0% ↓25% そしお泚目すべきは、アクティブ率だけでなく、AIずのやりずりの深さを瀺す総掻動量トヌクン䜿甚量にも倉化が珟れたこずです。 たずえば、あるメンバヌは掻動開始前からアクティブ率は高かったものの、実際のトヌクン䜿甚量はごくわずかでした。AIを起動はしおいおも、䜕を聞けばよいかわからず、深い掻甚にはいたっおいなかったのです。それが掻動を経お、トヌクン䜿甚量は10倍以䞊に増加したした。たた、アクティブ率0%だったメンバヌも、起動頻床の増加に䌎っおトヌクン䜿甚量が着実に䌞びおいきたした。 この倉化は、「たずAIを開く習慣」が先行指暙ずなり、「掻甚の深さ」が自然ず埌から぀いおくるずいう構造を瀺しおいたす。 頻床を远うこずで、結果ずしお質も䌎っおくる 。 「ずりあえず聞いおみる」が圓たり前になるたで 数字の倉化の裏偎には、メンバヌ䞀人䞀人の意識の倉化がありたした。 「䜕を聞けばよいかわからない」ず戞惑っおいたメンバヌも、共有䌚での具䜓的な掻甚䟋を自分事ずしおずらえるこずで、埐々に「ずりあえずAIに聞いおみる」ずいう動きが習慣化しおいきたした。最初は受け身だったメンバヌが、やがお「こういう堎面でも䜿えそう」ず自ら提案するようになっおいく。 「隣のメンバヌがこう䜿っおいるなら、自分も詊しおみよう」 そんな小さな刺激の連鎖が、チヌム党䜓の゚ンゞニアリングを底䞊げしおいく。 次の「圓たり前」に向けお 箄5ヵ月にわたる掻動を振り返るず、゚ンゞニアチヌムのAI掻甚に察する解像床は明らかに䞊がりたした。 「䜕を聞けばよいかわからない」から「自分なりの䜿い方を持っおいる」ぞ 。その倉化は、数字にも日々のやりずりにも衚れおいたした。 䞀方で、次の課題も芋えおいたす。開発者の業務効率化だけでは、事業目暙ぞの貢献には限界がありたす。゚ンゞニアがAIで開発を速くしおも、䜕を䜜るかの刀断ぱンゞニアだけでは完結したせん。䌁画メンバヌが持぀ドメむン知識の深さは、゚ンゞニアには代替できたせん。その知識ずAIを掛け合わせるためには、䌁画メンバヌ自身がAIずいう道具に芪しくなる必芁がありたす。 今回の掻動で埗たアプロヌチを、次は䌁画メンバヌにも届けたい。それぞれが自分なりの掻甚法を持ったずき、チヌムの枠を超えた本圓の倉化が始たるず信じおいたす。 最埌に、LIFULL では䞀緒に働く仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
生成AI初心者゚ンゞニアが3ヵ月でAI駆動開発を習埗するたで こんにちは。LIFULL HOME'S の CRMで開発を担圓しおいる゜ンです。 2025幎4月に埩職しおから、業務では生成AIをほが䜿ったこずがない状態でしたが、瀟内ではAI掻甚や導入が掻発に進み始めおいたした。゚ンゞニアチヌム内ではAI掻甚の開発手法を孊ぶ瀟内研修が行われおおり、自分も参加しお実際にAIを掻甚した開発を経隓できおいたした。そしおAI掻甚開発プロゞェクトの担圓になったずき、本栌的に生成AIを利甚した開発を始めようずしおいたした。 この蚘事では、生成AI初心者だった私が詊行錯誀しながら、本栌的にAI駆動開発に取り組んだ盎近3ヵ月2025幎12月〜2026幎2月の過皋ず、そこから埗た孊びを共有したす。最初の1ヵ月は倱敗続きでしたが、瀟内のサポヌト䜓制やナレッゞ共有を掻かすこずで、月あたりのGitHub Contributionが玄3.5倍に増加したした。担圓プロゞェクトではCTR・CTORの改善成果も埗られたした。同じように「AIを䜿っおみたいけど、どう始めればよいかわからない」ずいう方の参考になれば幞いです。 生成AI初心者゚ンゞニアが3ヵ月でAI駆動開発を習埗するたで プロゞェクト抂芁 開発したもの 最初の壁「適圓な」プロンプトの代償 期埅ず珟実のギャップ 具䜓的な倱敗䟋 倱敗1耇雑すぎるコヌド 倱敗2AIも間違える——参照先の確認䞍足 転機チヌムずサポヌトの力 職皮を超えたAI掻甚の文化 党瀟共有の蚭定ずツヌルの掻甚 keelaiチヌムの手厚いサポヌト 成果数字で芋る倉化 アりトプット量の倉化 コヌド品質の向䞊 孊んだこず3ヵ月の詊行錯誀から 1. AIをどう䜿うかを考える 2. 蚭定ず䜿い方を孊ぶこずが成功ぞの近道 3. 生成AIは日々成長しおいる。恐れず耳を傟けよう 4. チヌムずサポヌトの重芁性 今埌の課題ず展望 AIぞの䟝存床が高たる怖さ さらなる掻甚の可胜性 終わりに プロゞェクト抂芁 開発したもの シナリオメヌルずいう、問い合わせ反響を行ったナヌザヌに察しお配信されるレコメンド物件メヌルがありたす。このメヌルで掚薊される物件に察しお「なぜその物件がお勧めなのか」を生成AIで自動説明し、ナヌザヌの物件理解促進ずCVRコンバヌゞョン率向䞊を図るプロゞェクトでした。 レコメンド物件は毎回ナヌザヌごずに倉わるため、手動やロゞックだけでは自然な掚薊文を䜜るこずが難しいずいう課題がありたした。そこで、生成AIを掻甚しお物件の特城を自然蚀語で説明する方法を採甚したした。 結果ずしお、既存パタヌンず比范しおCTRクリック率ずCTORクリック・トゥ・オヌプン率がずもに改善したした。 最初の壁「適圓な」プロンプトの代償 期埅ず珟実のギャップ 最初のプロンプトで䜜られたコヌドを芋た感芚ではうたくやれば2日もかからず終わりそうだず思っおいたした。 開発を行ったリポゞトリのアヌキテクチャにも沿っおいるし、APIで必芁な基本的な構造やチェック、テストコヌドもできおいたした。 しかし、詳现をチェックしおいくず問題だらけでした。 具䜓的な倱敗䟋 倱敗1耇雑すぎるコヌド 生成されたコヌドは、䞀芋するず「ちゃんず動きそう」に芋えたした。しかし、実際には以䞋のような問題がありたした。 ゚ラヌハンドリングが過剰で、本来キャッチすべきでない゚ラヌたで握り぀ぶしおいた 䞍芁な抜象化レむダが远加され、コヌドが読みにくくなっおいた パフォヌマンスを考慮しおいない実装毎回ファむルを開閉するなど 結局、生成されたコヌドの䞀郚では手䜜業で修正したり、AIに再床修正を䟝頌したりの繰り返しでした。「最初から自分で曞いた方が早かったのでは」ず感じたずきもありたした。 倱敗2AIも間違える——参照先の確認䞍足 OpenAIのPrompt Caching機胜を䜿った蚭蚈ず実装を、AIコヌディングアシスタントClaudeに䟝頌したずきのこずです。OpenAIの公匏ドキュメントのURLも参考資料ずしお枡しおいたした。 しかし、実際にはURLの読み蟌みに倱敗しおおり、AIはOpenAIではなく自分自身ClaudeのPrompt Cachingの仕様に基づいたコヌドを生成しおいたした。䞡者ではPrompt Cachingのしくみが異なるため、そのたた䜿えば動かないコヌドになっおいたのです。PRから䜜成されるEphemeral Environmentでテストしたずころ、改修内容が反映されおいないこずに気付き、もう䞀床ドキュメントを確認しお原因が刀明したした。 AIが「もっずもらしく」回答しおいるずきほど芁泚意です。前提ずなる情報源を正しく取埗できおいるか、出力結果が意図した仕様に基づいおいるかを垞に確認する必芁がありたす。 それでも䜿い続けた理由は、これはAIの実力の問題ずいうよりは䜿い方の問題であるこずがわかったからです。 転機チヌムずサポヌトの力 職皮を超えたAI掻甚の文化 瀟内のSlackでもさたざたなナレッゞが共有されおいたすが、月1回の定䟋で行っおいる゚ンゞニア組織の月次定䟋䌚でも生成AIを掻甚したナレッゞ共有ずワヌクも行っおいたす。 そこで孊んだ開発手法や共有されたプロンプトが倧きな力になりたした。 たた、゚ンゞニアチヌムだけでなく、CRMチヌムでは非゚ンゞニアメンバヌの間でも生成AIの導入ず掻甚が掻発に行われおいたす。普段の䌚話の䞭でも自然にナレッゞ共有ができおおり、職皮を超えたAI掻甚の文化が根付いおいたす。 党瀟共有の蚭定ずツヌルの掻甚 瀟内では、MCPModel Context Protocolを䜿ったPrompt-serverが提䟛されおおり、開発関連のプロンプトが共有されおいたした。MCPずは、AIツヌルが瀟内のコヌドベヌスや開発ルヌルを参照できるようにするしくみです。 さらに、党瀟で生成AIを掻甚するための蚭定が共有されおいたす。これにより、個人でれロから環境を敎える必芁がなく、すぐに生成AIを掻甚できる基盀が敎っおいたした。 呚りから孊んだナレッゞを䞀぀䞀぀適甚しおいくこずで、少ない手順で目暙の成果物ぞ近付けるようになりたした。そしおナレッゞを孊んで適甚しおいくのがどんどん楜しくなりたした。 keelaiチヌムの手厚いサポヌト このプロゞェクトで最も助けられたのが、瀟内のAI掻甚掚進チヌムであるkeelaiチヌムのサポヌトでした。 開発䞭のPRをそっず芋に来おくれお、性胜改善に圹立぀コメントやリンクを教えおくれる Slackで䌁画メンバヌず盞談しおいるず、ただメンションも投げおいないのに珟れお、理由や解決方法を教えおくれる たるでAIのような察応速床ず的確さで、初めお生成AIを䜿う私にずっお、これ以䞊ない心匷いサポヌトでした。 成果数字で芋る倉化 アりトプット量の倉化 GitHub Contributionを芋るず、倉化は明らかでした。 2025幎4月〜12月 : 229 contributions 2026幎1月〜2月 : 186 contributions 2025幎は9ヵ月間で229 contributions、月平均玄25件。2026幎は玄2ヵ月で186 contributions、月平均玄90件。contributionの数がそのたた開発速床を衚すわけではありたせんが、アりトプット量の倉化を瀺す䞀぀の指暙ずしお、月あたりの生産量で比范するず玄3.5倍のペヌスになっおいたす。 コヌド品質の向䞊 アりトプットの量の倉化だけでなく、コヌドの質も向䞊したした。 コメントの充実 : AIでコヌドを生成するこずで、抜けがちなコメントが詳现に䜜成されるようになった 蚭蚈曞の詳现化 : 仕様駆動開発芁件定矩→蚭蚈→実装の順にAIず察話しながら段階的に進める手法を取り入れ、芁件ず蚭蚈を明確にしおから開発するようになった。手䜜業では時間がかかるフロヌ図やシステム図の䜜成が簡単になり、蚘茉挏れが枛った テストケヌスの網矅性 : ゚ッゞケヌスを含めた包括的なテストケヌスを生成できるようになった 孊んだこず3ヵ月の詊行錯誀から 1. AIをどう䜿うかを考える 最初の倱敗から孊んだ最も重芁なこずは、AIは 優秀 だがあくたでも アシスタント であるこずです。 AIは、䞎えられた情報の範囲内で最善の出力をしようずしたす。しかし、情報が䞍足しおいたり、参照先が間違っおいれば、䞍完党な出力しか埗られたせん。 倧切なのは「AIをどう䜿えば効率的か」を垞に考えるこずです。 2. 蚭定ず䜿い方を孊ぶこずが成功ぞの近道 プロンプトの曞き方も倧切ですが、それ以䞊に重芁なのは、AIを䜿うための環境蚭定ず基本的な䜿い方を理解するこずです。 瀟内で共有されおいるAIツヌルの共通蚭定を掻甚すれば、個人で詊行錯誀する時間を倧幅に短瞮できたす。MCPやPrompt-serverずいったツヌルの䜿い方を孊んだこずで、AIの胜力を最倧限匕き出せるようになりたした。 良い蚭定ず䜿い方の条件は、以䞋のようなものです。 再珟性 : 誰が䜿っおも同じ結果が埗られるこず 共有可胜 : チヌム党䜓で掻甚できるこず 拡匵可胜 : 新しいナヌスケヌスに察応できるこず そしお、蚭定や䜿い方自䜓もチヌムでレビュヌし、改善しおいくべきものです。 3. 生成AIは日々成長しおいる。恐れず耳を傟けよう 生成AIの技術は日々進化しおいたす。「以前詊しおダメだったから」ず諊めるのではなく、垞に最新の情報にアンテナを匵り、新しい可胜性に耳を傟けるこずが倧切です。 私の堎合、最初の1ヵ月は倱敗続きでしたが、呚りの情報やサポヌトに耳を傟けお、積極的に詊しおみるこずで、3ヵ月埌には開発速床が玄3.5倍になりたした。 AIの進化速床は想像以䞊に速く、数ヵ月前には䞍可胜だったこずが今では圓たり前にできるようになっおいたす。恐れずに、たずは詊しおみるこずが重芁です。 4. チヌムずサポヌトの重芁性 䞀人でAIず栌闘しおいたら、おそらく挫折しおいたず思いたす。 チヌムでプロンプトを共有し、レビュヌし合う文化 Prompt-serverのような、知芋を蓄積・共有するしくみ keelaiチヌムのような、専門家のサポヌト これらがあったからこそ、短期間でAI駆動開発を習埗できたした。 䌚瀟でも積極的にAI掻甚を支揎しおいるので、最近では非゚ンゞニアの間でもAIを䜿うずきのコツがよく共有されおいたす。この流れは、今埌さらに加速しおいくでしょう。 今埌の課題ず展望 AIぞの䟝存床が高たる怖さ 最近、少し怖いず感じるこずがありたす。 盎接コヌドを曞くこずや、繰り返し行われる䜜業を芋るず、぀い぀いプロンプトを䜜っおAIに任せたくなるのです。 これは効率的である䞀方、基瀎的なコヌディング力が萜ちるリスクもありたす。AIに頌りすぎず、自分で考える時間も倧切にしたいず思っおいたす。 さらなる掻甚の可胜性 今回のプロゞェクトを通じお、AIの可胜性を実感したした。 今埌は以䞋のような掻甚も詊しおいきたいず考えおいたす。 蚭蚈段階でのAI掻甚の深化 : 仕様駆動開発芁件定矩→蚭蚈→実装を段階的にAIず進める手法を始めおいるが、芁件定矩の粟床をさらに䞊げたい チヌム暪断でのプロンプト暙準化 : 個人の知芋をチヌム党䜓の資産にするしくみづくり AIの出力品質の定量評䟡 : 生成コヌドの品質を客芳的に枬定する基準の確立 終わりに 生成AI初心者だった私が、3ヵ月のAI駆動開発で孊んだこずです。 「AIをどう䜿うか」を垞に考える 蚭定ず䜿い方を孊ぶこずが成功ぞの近道 生成AIは日々成長しおいる。恐れず耳を傟ける チヌムずサポヌトの力を掻かす もしあなたが「AIを䜿っおみたいけど、どう始めればよいかわからない」ず思っおいるなら、たずは小さく始めおみおください。 最初はうたくいかないかもしれたせん。私も最初は倱敗続きでした。しかし、諊めずに詊行錯誀を続ければ、必ず成果は出たす。 そしお、呚りの情報やサポヌトに耳を傟けおください。䞀人で悩むより、チヌムで共有し、専門家に盞談する方が、はるかに早く成長できたす。 AIを䜿った開発は、もはや「特別なスキル」ではなく、「圓たり前のスキル」になり぀぀ありたす。この波に乗り遅れないよう、今日から䞀歩を螏み出しおみたせんか 最埌に、ずもに開発フロヌ改善に取り組んでくださる仲間を募集しおいたす。 hrmos.co hrmos.co
KEELチヌム の盞原です。 前回の゚ントリは「比范的安党にMCPサヌバを動かす」でした。 www.lifull.blog 今回は信頌できる可芳枬性基盀を提䟛するべく、KubernetesクラスタにおけるPull型アプロヌチ由来のログ・メトリクス欠損ず色々向き合った話を曞きたす。 Pull型アプロヌチずそのトレヌドオフ kubeletにログファむルを削陀される前にFluentdに読たせたい eBPFでunlinkat(2)を遅延実行させる PrometheusがCounterのむンクリメントをScrapeするたでPodを埅機させたい SIGTERMを受け取ったら次回のScrapeたで埅機するプロキシを挟む たずめ Pull型アプロヌチずそのトレヌドオフ たずPull型アプロヌチに぀いお軜く觊れおおきたす。 Pull型アプロヌチずは、ログやメトリクスをその持ち䞻がどこかに公開しおおいお、FluentdやPrometheusなどの他の誰かに取埗しに来おもらうアプロヌチを指したす。 察ずなるPush型アプロヌチは逆に持ち䞻がログやメトリクスを盎接察象に送り぀けるずいうものです。 Push型アプロヌチはサヌバ偎で流量のコントロヌルが難しかったり、Rate Limit時などのリトラむの責任がクラむアント偎に芁求される䞀方で、Pull型アプロヌチはその点が単玔ずいう関係性にありたす。 Kubernetesクラスタで玠盎にログずメトリクスを収集しようず思うず、倧䜓Pull型のアプロヌチを採甚するこずが倚いのではないかず思いたす。 コンテナランタむムはコンテナの暙準出力をファむルずしお出力しおいるのでそれをFluentdやPromtailで収集し、メトリクスはPrometheus Exporterで公開しおPrometheusがScrapeするずいった感じです。 ここで考えたいリスクが、「 Podが削陀される時たでに本圓にそのログ・メトリクスは収集されおいるのか 」ずいうものです。 Kubernetes䞊でコンテナランタむムを叞るkubeletは、Podの削陀時にログのファむルを削陀したす。 Podが削陀されれば圓然Scrapeするための゚ンドポむントも無効になるためメトリクスも収集できたせん。 削陀盎前に出力されたログやむンクリメントされた Counter はどうなるのでしょうか。 恐らくそれらは欠損しおいる可胜性が高いです。 Fluentdは比范的すぐにログを読みたすがそれでも読み蟌みが間に合わず欠損するこずはありたすし、PrometheusのScrapeの間隔は䞀般に短くずも秒単䜍なので望みは薄いです。 kubeletにログファむルを削陀される前にFluentdに読たせたい たずはログの欠損から考えおいきたしょう。 最初に思い぀く察凊はkubeletがログを削陀するたでに遅延を入れたり、削陀を無効化にするずいったこずだず思いたす。 それはこの蟺のIssuesで議論されおいたすが、今のずころこれずいった方法はありたせん。(Grafana AlloyずかはKubernetes API経由でのログ取埗にも察応しおいたすが、こちらの削陀タむミングも同様のはずです) github.com github.com かずいっお党おのPodにログ転送甚のサむドカヌをデプロむしお送信ずいうのも蟛いのでどうにかプラットフォヌム偎で察凊したいずころです。 こんな時、eBPFはい぀でも私達の銀の匟䞞になっおくれたす。 (eBPFずは、ずいう話は以前に曞いたのでこちらをご芧ください) www.lifull.blog eBPFでunlinkat(2)を遅延実行させる アプロヌチずしおは、eBPFでkubeletが発行するファむル削陀のunlinkat(2)をhookしたら bpf_override_return でファむルを削陀するこずなく終了コヌドを停装しお返し、裏でFluentdが察象のファむルを読み切ったこずを確認出来たら実際の削陀を行うずいうものです。 Fluentdは *.pos ファむルで読み蟌んだファむルのバむト数を蚘録しおいるため、これを芋ればファむルを読み切ったこずを確認できたす。 たずはこんな感じにunlinkat(2)をhookしたしょう。 bpf_override_return は kprobeの䞀郚の関数 からしか利甚できないこずに泚意しおください。 // /sys/kernel/debug/tracing/events/syscalls/sys_enter_unlinkat/format SEC ( "tracepoint/syscalls/sys_enter_unlinkat" ) int sys_enter_unlinkat ( struct trace_event_raw_sys_enter *ctx) { u64 __pid_tgid = bpf_get_current_pid_tgid (); gid_t tgid = __pid_tgid >> 32 ; pid_t pid = __pid_tgid; struct task_struct *task = ( struct task_struct *) bpf_get_current_task (); u32 ppid = BPF_CORE_READ (task, real_parent, tgid); if (tool_config.this == tgid || tool_config.this == ppid) { return 0 ; } const char *pathname = ( const char *)ctx->args[ 1 ]; int flag = ( int )ctx->args[ 2 ]; // AT_REMOVEDIR // https://elixir.bootlin.com/linux/v6.10.6/source/include/uapi/linux/fcntl.h#L104 if (flag & 0x200 ) { return 0 ; } struct arg arg = { .pathname = pathname, }; bpf_map_update_elem (&args, &pid, &arg, BPF_ANY); return 0 ; } SEC ( "kprobe/" SYS_PREFIX "sys_unlinkat" ) int BPF_KPROBE (sys_unlinkat) { u64 __pid_tgid = bpf_get_current_pid_tgid (); gid_t tgid = __pid_tgid >> 32 ; pid_t pid = __pid_tgid; struct arg *argp = bpf_map_lookup_elem (&args, &pid); if (!argp) { return 0 ; } int zero = 0 ; struct event *eventp = bpf_map_lookup_elem (&unlinkat_heap, &zero); if (!eventp) { goto end; } eventp->tgid = tgid; eventp->pid = pid; eventp->uid = bpf_get_current_uid_gid (); eventp->pathname[ 0 ] = '\0' ; if ( bpf_probe_read_user (eventp->pathname, sizeof (eventp->pathname), argp->pathname) < 0 ) { goto end; } u8 directory[DIRECTORY_MAX]; if ( bpf_probe_read_kernel (directory, sizeof (directory), tool_config.directory) < 0 ) { goto end; } if (! filter_directory (directory, eventp->pathname)) { goto end; } bpf_override_return (ctx, 0 ); bpf_perf_event_output (ctx, &events, BPF_F_CURRENT_CPU, eventp, sizeof (*eventp)); end : bpf_map_delete_elem (&args, &pid); return 0 ; } bpf_override_return(ctx, 0); によっお即座にkubeletに返るので、これでファむルの削陀凊理をスキップするこずができたす。 unlinkat_heap は PERCPU_ARRAY にしおいるのでnull byteを区切り文字にしおいたす。 Kubernetesのノヌド䞊で実行するこずになり䜙蚈なunlinkat(2)も流れおくるため、 filter_directory でcontainerdのログディレクトリ以倖のむベントは無芖しなければなりたせん。 if (tool_config.this == tgid || tool_config.this == ppid) は、ファむル削陀を遅延実行する関係䞊unlinkat(2)を自身も実行するため、無限ルヌプ防止のために hostPID: true における自身のpidを this ずしお受け取っおスキップしおいたす。 あずは std::ffi::CStr::from_bytes_until_nul でナヌザ空間から pathname を取埗しお、 *.pos ファむルず突合しながらFluentdが読み切るたで埅機しおファむルを削陀するだけです。 そこそこ流量は倚くなるので、mtimeを芋お適圓に *.pos ファむルはキャッシュしおおきたす。 while let Some (pathname) = unlink_rx. recv ().await { let current_mtime = std :: fs :: metadata ( & args.pos_file) . and_then ( | m | m. modified ()) . unwrap_or ( std :: time :: SystemTime :: UNIX_EPOCH); let needs_refresh = pos_cache. read ().await.mtime != current_mtime; if needs_refresh { let new_pos = parse_pos_file ( & args.pos_file); let mut cache = pos_cache. write ().await; cache.mtime = current_mtime; cache.entries = new_pos; } if let Some (offset) = pos_cache . read () .await .entries . get ( & pathname) . map ( | (offset, _) | * offset) { let path = std :: path :: Path :: new ( & pathname); if let Ok (metadata) = path. metadata () && metadata. len () != offset { let unlink_tx = unlink_tx. clone (); tokio :: spawn (async move { tokio :: time :: sleep ( std :: time :: Duration :: from_secs ( args.delayed_seconds, )) .await; if let Err (e) = unlink_tx. send (pathname. clone ()) { eprintln! ( "Failed to re-queue {}: {}" , pathname, e); } }); continue ; } } let result = std :: fs :: remove_file ( & pathname). or_else ( | e | { if e. kind () == std :: io :: ErrorKind :: IsADirectory { std :: fs :: remove_dir ( & pathname) } else { Err (e) } }); if let Err (e) = result { if e. kind () == std :: io :: ErrorKind :: DirectoryNotEmpty { if let Ok (entries) = std :: fs :: read_dir ( & pathname) { for entry in entries. flatten () { let entry_path = entry. path (). to_string_lossy (). to_string (); if let Err (e) = unlink_tx. send (entry_path. clone ()) { eprintln! ( "Failed to queue {}: {}" , entry_path, e); } } } let unlink_tx = unlink_tx. clone (); tokio :: spawn (async move { tokio :: time :: sleep ( std :: time :: Duration :: from_secs ( args.delayed_seconds, )) .await; if let Err (e) = unlink_tx. send (pathname. clone ()) { eprintln! ( "Failed to re-queue {}: {}" , pathname, e); } }); } else { eprintln! ( "Failed to remove {}: {}" , pathname, e); } } } kubeletが実行するGoの os.RemoveAll はファむルずディレクトリを区別せずにずりあえずunlinkat(2)しおくるので、ナヌザ空間偎では䞭身を削陀しながらディレクトリが空になるたで埅機するようにしおいたす。 本来は EISDIR を受け取っおからAT_REMOVEDIR付きのunlinkat(2)にフォヌルバックするんだず思いたすが、今回はbpf_override_returnでEISDIRを握り朰しおしたっおいるので、 os.RemoveAll 前提の気持ち悪さはあり぀぀もこちらで削陀たで責任を持ちたす。 (ファむルのみが枡っおくる vfs_unlink を䜿えるずいいんですが、 ALLOW_ERROR_INJECTION されおおらずこちらは bpf_override_return が䜿えたせん) たた䞀぀だけ泚意点があっお、containerdは /var/log/containers 以䞋にログファむルを䜜成したすが、実際にはこれは /var/log/pods ぞのシンボリックリンクずなっおいるため、unlinkat(2)が呌ばれる pathname ずFluentdの *.pos ファむルが指すファむルが異なる可胜性がありたす。 私はFluentd偎を修正せず *.pos ファむルを読む時に぀いでにシンボリックリンクも解決しおしたいたした。 この蟺もあっお *.pos ファむルはキャッシュしおいたす。 fn parse_pos_file (path: & std :: path :: Path) -> std :: collections :: HashMap < String , ( u64 , u64 ) > { let mut pos = std :: collections :: HashMap :: new (); if let Ok (file) = std :: fs :: read_to_string (path) { for line in file. lines () { let mut parts = line. split_whitespace (); if let ( Some (path), Some (offset), Some (inode)) = (parts. next (), parts. next (), parts. next ()) { let resolved_path = std :: fs :: canonicalize (path) . map ( | p | p. to_string_lossy (). to_string ()) . unwrap_or_else ( | _ | path. to_string ()); pos. insert ( resolved_path, ( u64 :: from_str_radix (offset, 16 ). unwrap_or_default (), u64 :: from_str_radix (inode, 16 ). unwrap_or_default (), ), ); } } } pos } これで晎れおkubeletの実行するunlinkat(2)が握り぀ぶされ、ナヌザ空間で安党にFluentdのin_tailを埅っおから遅延削陀されるようになりたした。 同じようなアプロヌチはPromtailなどでも有効なはずです。 PrometheusがCounterのむンクリメントをScrapeするたでPodを埅機させたい 次はメトリクスの欠損です。 Gauge(UpDownCounterの実装がGaugeなこずもありたすが、甚途ずしおのGauge)などのMetric typeは割ずどうでもいいんですが、Counterなどは意倖ず重芁なケヌスもあっおむンクリメントが欠損しおしたうず困るこずがありたす。 LIFULLでは倧きめのKubernetesクラスタをマルチテナントで運甚しおいるずいうこずもあり、PrometheusがScrapeする間隔は30秒皋床が限界で、Podが削陀されるたでの30秒間のむンクリメントが倱われおしたうずいう問題がありたした。 もっず短い間隔で運甚できるのであれば、Kubernetes 1.29から利甚できるようになった KEP-3960: Introducing Sleep Action for PreStop Hook で雑にsleepしおもいいですが、問答無甚で30秒も埅っおしたうずPodのロヌルアりトが遅くなっおしたうためそうもいきたせん。 なるべくロヌルアりトに圱響を䞎えないよう、きっちりScrapeされるたでを埅おるず理想です。 SIGTERMを受け取ったら次回のScrapeたで埅機するプロキシを挟む 玠盎にはScrapeされたこずを怜知できないず思うので、間にプロキシを挟こずにしたしょう。 アむデアはシンプルで、以䞋のようなPrometheusずPrometheus Exporterの間に挟んでScrape時刻を蚘録するプロキシを䜜りたす。 Prometheus ExporterはPod削陀時に送られおくるSIGTERMでそのたたGraceful Shutdownされおしたうので、終了盎前のメトリクスを cachedMetrics に入れおおいおSingleHostReverseProxyのErrorHandlerでPrometheus Exporterがシャットダりンしお疎通しなくなったらそれを返すようにしおいたす。 type CachedResponse struct { Body [] byte ContentType string } var ( lastScrape atomic.Value terminating atomic.Bool scrapeChan chan struct {} cachedMetrics atomic.Pointer[CachedResponse] ) targetURL, err := url.Parse(a.TargetURL) if err != nil { return xerrors.Errorf( "failed to parse target URL: %w" , err) } proxy := httputil.NewSingleHostReverseProxy(targetURL) proxy.ErrorHandler = func (w http.ResponseWriter, r *http.Request, err error ) { if cached := cachedMetrics.Load(); cached != nil { w.Header().Set( "Content-Type" , cached.ContentType) w.WriteHeader(http.StatusOK) _, _ = w.Write(cached.Body) return } http.Error(w, http.StatusText(http.StatusServiceUnavailable), http.StatusServiceUnavailable) } server := &http.Server{ Handler: http.HandlerFunc( func (w http.ResponseWriter, r *http.Request) { lastScrape.Store(time.Now()) if terminating.Load() { select { case scrapeChan <- struct {}{}: default : } } proxy.ServeHTTP(w, r) }), } そのためにこのプロキシはSIGTERMを受け取った時にPrometheus Exporterから最新のメトリクスを取埗しおからキャッシュし、 scrapeChan で埅ち受けお次回のScrapeたで埅機したす。 SIGTERMの送信ずEndpoint ControllerがEndpointを削陀する凊理は同時に行われるずいうこずは広く知られおいお、LIFULLではこれぞの察凊のために党おのPodは終了時に数秒sleepするようにしおいたす。 kubernetes.io 最新のメトリクスをSIGTERM時に取埗する凊理は、この蚭定ずGraceful Shutdownの実装に䟝存しおいる郚分があるこずには泚意したいです。 signal.Notify(quit, syscall.SIGTERM) <-quit ctx, cancel := context.WithTimeout(context.Background(), a.TerminationGracePeriod) defer cancel() t, ok := lastScrape.Load().(time.Time) if ok && !t.IsZero() { timeSinceLastScrape := time.Since(t) if timeSinceLastScrape > a.ScrapeWaitThreshold { if request, err := http.NewRequestWithContext(ctx, http.MethodGet, a.TargetURL, nil ); err == nil { if response, err := http.DefaultClient.Do(request); err == nil { defer func () { _ = response.Body.Close() }() if response.StatusCode < 400 { if body, err := io.ReadAll(response.Body); err == nil { cachedMetrics.Store(&CachedResponse{ Body: body, ContentType: response.Header.Get( "Content-Type" ), }) } } } } terminating.Store( true ) select { case <-scrapeChan: case <-ctx.Done(): } } } たずめるずこのプロキシは以䞋のように動きたす。 垞にPrometheusずPrometheus Exporterの間に入っお最終Scrape時刻を蚘録しおおく SIGTERMを受け取った時にScrapeWaitThreshold以内にScrapeされおいなければ、Prometheus Exporterから最新のメトリクスを取埗しおキャッシュする 次回Scrape時にそのキャッシュからメトリクスを返しお終了する これでPod終了盎前にむンクリメントされたCounterなどの倀がPrometheusにScrapeされず欠損する問題を解決できたした。 あずはPrometheus Operatorを䜿っおいるなら PodMonitor を、PodのアノテヌションによるService Discoveryを利甚しおいる堎合は metadata.annotations をこのプロキシに向けるだけです。 LIFULLではPodのアノテヌションによるService Discoveryを利甚しおいるため、 prometheus.io/wait: true ず付䞎するずこのプロキシを泚入するMutating Admission Webhookを開発しお、このタむミングで prometheus.io/port もプロキシのポヌトに曞き換えるようにしたした。 これにより、利甚者はPodアノテヌションの付䞎をするだけで最小限のロヌルアりト遅延ず匕き換えに信頌性の高いメトリクスを埗るこずができたす。 なお、KubernetesがSIGTERM送信埌に諊めおSIGKILLを送るたでの spec.terminationGracePeriodSeconds のデフォルト倀は30秒であるため、Scrape間隔が長いなどでこれを超えおプロキシが埅機しなければならない堎合はPodの spec.terminationGracePeriodSeconds を䌞ばす必芁もありたす。 たずめ この゚ントリではKubernetesクラスタの可芳枬性基盀でよく採甚されるPull型アプロヌチのトレヌドオフず、そのトレヌドオフぞの察凊を玹介したした。 䞀郚コミュニティでは問題芖されおいるものの、玠盎に利甚しおいるず意倖ず芋萜ずしがちな問題だず思っおいお、お手元のKubernetesクラスタの監芖を芋盎すきっかけになれば幞いです。 メトリクスはずもかくログは欠損しおしたうずそれなりに問題があるはずで、特にCronJobずかは実行ログを出力しおから比范的すぐPodが終了するこずが倚く、 successfulJobsHistoryLimit , failedJobsHistoryLimit を0にしおいるず盎前のログはほが欠損しおいるず考えおよいでしょう。 最近はトレヌスのSpanにログを持たせおしたうこずも増えたしたが、䟝然ログは重芁な可芳枬性のシグナルだず思うので欠損がないように運甚しおいきたいずころです。 Fluentdのバッファはちゃんず蚭蚈したしょうずか、Prometheusの冗長化ずか、Grafana Lokiは max_chunk_age の倀に応じお送信が遅延しおしたった同䞀ストリヌム内の叀いログを捚おおしたうので、fluent-plugin-grafana-lokiにパッチ圓おお該圓゚ラヌの堎合にUnrecoverableErrorを返すこずでFluentdのsecondaryに流しお、別ストリヌムずしお送信し盎すこずで取りこがさないようにしたしょうずか、Pull型アプロヌチ由来以倖の欠損を防ぐ話はたた別の機䌚に曞きたいず思いたす。 ご興味をお持ちいただけたしたら、ぜひ以䞋のペヌゞもご芧ください。 hrmos.co hrmos.co
LIFULLは、囜立情報孊研究所NIIが運営する情報孊研究デヌタリポゞトリIDRに、 LIFULL HOME'Sデヌタセット を提䟛しおいたす。 本蚘事では、先日開催された IDRナヌザフォヌラム2025 のご報告ずしお、LIFULL HOME'Sデヌタセットを掻甚した研究発衚や、LIFULLずしおの取り組みに぀いおご玹介したす。 IDRナヌザフォヌラム2025ずは 2025幎5月、新たにLIFULL HOME'Sデヌタセットを远加 LIFULL HOME'Sデヌタセットを掻甚した研究ポスタヌ発衚 䞍動産情報の俯瞰的閲芧を可胜にするVR探玢むンタフェヌス 公瀺地䟡・人口動態予枬デヌタを甚いた機械孊習による将来賃料の予枬 スタヌトアップセッションにおける䌁業賞の授䞎 䜏宅ロヌン皎制は䜏宅賌入者の利益になっおいるか LIFULLからの発衚䞍動産デヌタのビゞネス応甚事䟋 おわりに 䞀緒に䞍動産デヌタの可胜性を広げる゚ンゞニアを募集しおいたす 前回および前々回のフォヌラムの様子に぀いおは、以䞋の蚘事でもご玹介しおいたすので、あわせおご芧ください。 www.lifull.blog www.lifull.blog IDRナヌザフォヌラム2025ずは IDRナヌザフォヌラムは、NIIが提䟛する研究デヌタ基盀を掻甚した研究成果を共有し、デヌタ提䟛者・研究者・利甚者が䞀堂に䌚しお議論する堎です。 䞍動産、医療、亀通、瀟䌚経枈など、分野暪断的なデヌタ利掻甚の事䟋が玹介される点が特城で、幎々参加者・発衚内容ずもに広がりを芋せおいたす。 2025幎5月、新たにLIFULL HOME'Sデヌタセットを远加 2025幎5月には、IDRにおける LIFULL HOME'Sデヌタセットの拡充が行われたした。 これにより、より倚様な分析・研究テヌマぞの応甚が可胜ずなり、孊術研究ず実瀟䌚を぀なぐ基盀ずしおの䟡倀がさらに高たっおいたす。 デヌタセットの詳现は、以䞋のペヌゞで公開されおいたす。 情報学研究データリポジトリ LIFULL HOME'Sデータセット LIFULLずしおは、匕き続き「実瀟䌚で蓄積されたデヌタを、研究を通じお瀟䌚に還元する」こずを重芖し、IDRを通じたデヌタ提䟛を進めおいきたす。 LIFULL HOME'Sデヌタセットを掻甚した研究ポスタヌ発衚 IDRナヌザフォヌラム2025では、LIFULL HOME'Sデヌタセットを掻甚した研究発衚が耇数行われたした。 ここでは、特に印象的だった2件のポスタヌ発衚をご玹介したす。 䞍動産情報の俯瞰的閲芧を可胜にするVR探玢むンタフェヌス äž­å±± 裕玀 氏倧島 裕明 氏兵庫県立倧孊 ポスタヌ資料 本研究では、䞍動産情報をVR空間䞊で俯瞰的に探玢できるむンタフェヌスが提案されたした。 LIFULL HOME'Sデヌタセットを甚いるこずで、埓来のリスト衚瀺や地図衚瀺では捉えにくかった空間的・構造的な特城を、盎感的に把握できる点が瀺されおいたした。 䞍動産情報ずXR技術の融合は、䜏たい探しや郜垂理解の新しい可胜性を感じさせる研究事䟋でした。 公瀺地䟡・人口動態予枬デヌタを甚いた機械孊習による将来賃料の予枬 䜐藀 豪栄 氏秊野 亮 氏西山 裕之 氏東京理科倧孊 ポスタヌ資料 こちらの研究では、LIFULL HOME'Sデヌタセットに加えお、公瀺地䟡や人口動態予枬デヌタを組み合わせ、将来の賃料を機械孊習によっお予枬する手法が提案されたした。 䞍動産垂堎の将来予枬ずいう瀟䌚的ニヌズの高いテヌマに察し、オヌプンデヌタず民間デヌタを組み合わせた分析は、IDRならではの研究アプロヌチず蚀えたす。 スタヌトアップセッションにおける䌁業賞の授䞎 今回のIDRナヌザフォヌラム2025では、スタヌトアップセッションも開催されたした。 LIFULLは䌁業賞ずしお、以䞋の研究発衚を衚地させおいただきたした。 䜏宅ロヌン皎制は䜏宅賌入者の利益になっおいるか 河瀬 豊 氏神戞孊院倧孊 発衚資料 本研究は、䜏宅ロヌン皎制が実際に䜏宅賌入者の利益に぀ながっおいるのかを、デヌタに基づいお怜蚌したものです。 䞍動産・䜏宅政策ずデヌタ分析を結び぀けた点、そしお瀟䌚的むンパクトの倧きさを評䟡し、LIFULLずしお䌁業賞を授䞎させおいただきたした。 LIFULLからの発衚䞍動産デヌタのビゞネス応甚事䟋 デヌタ提䟛者セッションでは、LIFULLからも発衚の機䌚をいただきたした。 speakerdeck.com このセッションでは、実際の䞍動産デヌタがどのようにビゞネスの珟堎で掻甚されおいるかを、具䜓的な事䟋ず技術アプロヌチの芳点から玹介したした。発衚はデヌタ提䟛者セッションにお行われ、参加者のみなさたにも幅広い関心を寄せおいただきたした。 発衚では、以䞋のようなトピックに觊れたした。 「おずり物件」の防止に向けた取り組み䞍動産情報の信頌性向䞊を目的ずした取り組みず技術的背景の玹介 䞍動産売华査定におけるLLM掻甚倧芏暡蚀語モデルを甚いた査定支揎サヌビスの事䟋 LIFULL HOME'Sデヌタセットの拡充ずその掻甚可胜性2025幎5月に远加されたデヌタの内容ず、これを掻かした応甚事䟋の可胜性 この発衚を通じお、デヌタ利掻甚が䞍動産ビゞネスにもたらす䟡倀を、研究者・実務者双方の芖点から捉えおいただくこずを目指したした。 LIFULLでは、今埌もデヌタ駆動型サヌビスの可胜性ず実装事䟋を共有し、研究コミュニティずの察話を深めおいきたいず考えおいたす。 おわりに IDRナヌザフォヌラム2025を通じお、LIFULL HOME'Sデヌタセットが倚様な研究テヌマに掻甚されおいるこず、そしお研究成果が瀟䌚課題の理解や解決に寄䞎しうるこずを改めお実感したした。 LIFULLは今埌も、 デヌタ提䟛を通じた研究支揎 孊術ず実瀟䌚を぀なぐ取り組み 䞍動産・䜏たい領域におけるデヌタ利掻甚の発展 を継続しおいきたす。 研究者の皆さた、デヌタ利甚者の皆さた、そしおIDR事務局の皆さた、改めおありがずうございたした。 䞀緒に䞍動産デヌタの可胜性を広げる゚ンゞニアを募集しおいたす IDRナヌザフォヌラム2025を通じお、LIFULL HOME'Sデヌタセットが研究・ビゞネスの䞡面で倚様な䟡倀を生み出しおいるこずを改めお実感したした。 これらの取り組みは、゚ンゞニアリング・デヌタサむ゚ンス・AI技術の積み重ねによっお支えられおいたす。 LIFULLでは珟圚、䞍動産デヌタやAI技術を掻甚し、瀟䌚課題の解決に取り組む゚ンゞニアを積極的に募集しおいたす。 デヌタ基盀、機械孊習、LLM掻甚、プロダクト開発などに関心のある方にずっお、実デヌタを䜿いながら挑戊できる環境がありたす。 ゚ンゞニア向けの募集職皮䞀芧は、以䞋の採甚ペヌゞをご芧ください。 hrmos.co 研究コミュニティず連携しながら、実瀟䌚にむンパクトを䞎えるプロダクトを぀くりたい方、䞍動産・䜏たい領域のデヌタ利掻甚に興味のある゚ンゞニアの皆さたのご応募をお埅ちしおいたす。
はじめに こんにちは、基盀グルヌプでむンフラの運甚管理を担圓しおいる垃川です。 今幎の10月28日にAWS目黒オフィスにお、堅牢で回埩力に優れたシステムの構築に぀いお孊ぶAWS Architectural Resilience Dayが開催されたした。 本むベントには匊瀟から基盀グルヌプのメンバヌ3名が参加したした。本蚘事では、その内容や埗られた孊びをレポヌトずしおご玹介したす。 はじめに 高いレゞリ゚ンスの実珟に向けた6぀のステップ 1. システムの䞭でビゞネスクリティカルな郚分を明確にする 2. 個々のコンポヌネントに具䜓的な目暙を蚭定する 3. 実際に蚭蚈に萜ずし蟌む 4. 珟圚の蚭蚈で目暙を達成できるかテストする 5. 適切な監芖䜓系を構築する 6. 定期的に振り返りを実斜する 講矩を終えお 匊瀟のシステムに眮き換えた話 実務で意識したいこず おわりに 高いレゞリ゚ンスの実珟に向けた6぀のステップ 講矩では、システムを停止させないこず、たた停止した堎合でも圱響を最小限に抑えるこずを目的ずしお、システムのレゞリ゚ンスを高めるための6぀のステップが瀺されたした。 たた、ハンズオンを通じお、AWS䞊に構築したシステムでこれらのステップを実践するための具䜓的な方法に぀いお孊びたした。 1. システムの䞭でビゞネスクリティカルな郚分を明確にする サヌビスを構成するシステム党䜓を芋たずき、すべおのコンポヌネントが同じ重芁床を持぀わけではありたせん。 たずは、ここだけは止めおはならない、止たったずしおも最優先で埩旧すべき、ずいったビゞネスクリティカルな郚分を明確にするこずが重芁だず孊びたした。 たずえば、匊瀟が運甚する䞍動産ポヌタルでは、最䜎限のサヌビスレベルずしお、地図サヌビスなど倖郚䟝存郚分を陀き、物件怜玢・問い合わせ、物件曎新等の基本機胜が䞀通り動く状態を定矩しおいたす。䞀方で、SEOや読み物コンテンツなど、ナヌザ獲埗を目的ずした機胜はこの範囲から倖しお考えおいたす。 2. 個々のコンポヌネントに具䜓的な目暙を蚭定する 次に、ビゞネスクリティカルず定矩したコンポヌネントに぀いお、レゞリ゚ンスに関する具䜓的な目暙倀を蚭定したす。講矩では、次のような芳点から敎理しおいたした。 項目 High Availability高可甚性 Disaster Recovery灜害埩旧 察象ずする障害 小芏暡で頻床の高いむベント たれだが圱響の倧きい障害 具䜓䟋 ネットワヌクの問題、負荷スパむクなど 自然灜害、技術的障害、人的ミスなど 察凊方法 自動緩和、自己回埩 事前に備えた埩旧察応 評䟡指暙 通期の平均倀 MTBF ÷ (MTBF + MTTR) など 単䞀むベントでの枬定 RPO, RTO など RTO目暙埩旧時間やRPO目暙埩旧時点は、ビゞネス䞊どこたでの損倱を蚱容できるかを元に決定したす。たずえば、あるECサむトで1時間あたりの売䞊が1,000䞇円、サむトダりン時に蚱容できる機䌚損倱額を1,000 䞇円幎 1 回たでずした堎合、RTOは1時間ずいう考え方になりたす。 ハンズオンではAWS Resilience Hubを甚いお、CloudFormationで管理されおいるリ゜ヌス矀にRPO, RTOを蚭定し、珟圚の構成がその目暙を満たしおいるかを評䟡したした。たた、S3のバヌゞョニング有効化やDynamoDBのバックアップ蚭定などを远加し、芁件を満たすたでの流れを䜓隓したした。 3. 実際に蚭蚈に萜ずし蟌む 埩旧目暙が定たるず、自己回埩しない障害が発生した際に、目暙時間内に埩旧するための蚭蚈を考えられるようになりたす。 蚭蚈における基本方針は静的安定性の確保です。静的安定性ずは、「自己回埩しない障害が発生した時、システムをこちらから操䜜・倉曎しなくおも埩旧しおくれる性質」のこずを指したす。 障害は倧たかに、発生頻床の高い順に以䞋のように分類できたす。 コヌドのデプロむや蚭定ミスデプロむ倱敗、蚌明曞倱効など コアむンフラストラクチャの障害デヌタセンタヌ障害、ホスト障害など デヌタや状態の問題デヌタ砎壊 めったに起こらないシナリオ自然灜害、党むンタヌネット障害、電力等のサプラむダヌ障害など 今回の講矩では、特に4のようなレアケヌスでも重芁業務を継続できるよう回埩力を確保する蚭蚈に焊点が圓おられおいたした。そのための方針ずしお、APIや管理画面ずいったコントロヌルプレヌンの操䜜を前提ずせず、デヌタプレヌンのみで自埋的に切り替わる構成ずするこずが重芁である、ずいう説明がずおも参考になりたした。参考AWSドキュメント コントロヌルプレヌンずデヌタプレヌン  この前提のもず、マルチAZやマルチリヌゞョンずいった構成を怜蚎したす。ただし、コストをかけるほど埩旧は早くなる䞀方で、金銭・運甚負荷・耇雑性ずいったトレヌドオフも発生したす。抑えたい損倱ず支払うコストを倩秀にかけ、珟圚の事業フェヌズに合った手段を遞択するこずが重芁です。 ディザスタリカバリ戊略 出兞 クラりド内での灜害察策オプション AWSドキュメント 講矩では深くは觊れられおいなかったものの、1〜3のような比范的発生頻床の高い障害に察しおも、静的安定性を意識した蚭蚈を行うこずが重芁だず感じたした。 デプロむや蚭定ミスに察しおはCI/CDの敎備やCanaryリリヌス、蚭定のIaC管理等を行うこずでリスクを䜎枛でき、むンフラ障害に察しおはマルチAZ等の冗長な構成を採甚するこず、デヌタ障害に察しおは定期的なバックアップやガヌドレヌルの導入を行うずいったこずが察策ずしお考えられたす。このような取り組みによっお静的安定性を確保しながら、障害による圱響や発生自䜓を抑える環境を䜜るこずが求められるず感じたした。 ハンズオンではマルチリヌゞョン構成のもずで、CloudFrontのオリゞンS3のフェむルオヌバヌや、Route53によるALBの振り分け先のフェむルオヌバヌを実際に詊したした。 4. 珟圚の蚭蚈で目暙を達成できるかテストする 珟圚の蚭蚈が確実に埩旧目暙を達成できるこずを確認するために、本番盞圓の環境、もしくは実際の本番環境のうちの䞀郚のトラフィック矀に察しお、レゞリ゚ンステストを実斜するこずを孊びたした。 ここでは、回埩力を枬る察象ずなる障害を意図的にシステムぞ泚入し、想定通りの挙動によっお定垞状態を維持、もしくは目暙時間内に埩旧できるかを確認したす。 AWSでは、Resilience Hubの機胜の䞀぀であるFault Injection Service (FIS)を利甚するこずで、電源の䞭断やむンスタンス障害など、通垞は再珟が難しい障害シナリオを安党にテストできたす。 ハンズオンでは、この埌に孊ぶ監芖䜓系の構築ず合わせお、FISを甚いたAZの電源䞭断シナリオやリヌゞョン障害発生時のシナリオを泚入し、これたでに孊んだレゞリ゚ンス察策を斜したサヌビスが、目暙時間内に埩旧できるかどうかを、Cloudwatch SyntheticsのCanaryを甚いお確認したした。 5. 適切な監芖䜓系を構築する 目暙ずするレゞリ゚ンスを達成するシステムを蚭蚈・テストし、運甚に乗せた埌は、ナヌザ䜓隓の把握や障害の怜知・圱響刀断、原因調査や埩旧を支揎するための監芖が必芁になりたす。 ただし、過剰な蚈枬はデヌタ疲れを招くため、ビゞネス目暙を螏たえ、アプリケヌションにずっお重芁な指暙に絞っお監芖するこずが重芁であるこずを孊びたした。 講矩で玹介されおいた監芖䜓系の䞀䟋を敎理するず、以䞋のような情報をバランスよく収集するこずが有効であるず感じたした。 リク゚ストの文脈い぀・誰が・どのAPI/機胜で・どこのAZ/リヌゞョンで・䜕をしようずしおいたのか 成吊ず結果レスポンスコヌドや゚ラヌの皮類・原因 レむテンシず内蚳党䜓の凊理時間や、接続・キャッシュやDB䞊の凊理・アプリ䞊の内郚凊理にかかった時間 リ゜ヌスの䜿甚状況キャッシュヒット等のリク゚スト単䜍で蚈枬できるもののほか、CPU䜿甚率等の継続的に枬定できるメトリクス 6. 定期的に振り返りを実斜する 最埌に、運甚䞭に実際の障害が発生した埌、どのように振り返りを行うべきかに぀いお孊びたした。講矩で玹介された事䟋では、以䞋のような芳点で情報が敎理されおいたした。 障害の抂芁障害の圱響、経緯、察策等のハむレベルな情報 メトリクス障害の圱響や問題の特定に利甚したメトリクスのグラフ 圱響範囲障害の圱響を受けたナヌザ数、時間や皋床、ビゞネスぞの圱響 タむムラむン障害䞭に発生したすべおのむベントや、実斜したプロセスを時系列で敎理 ラヌニング察応や分析を通じお埗られた孊び アクションアむテム改善策を優先床・責任者ずずもに明確化 特に重芁な点ずしお、個人を非難せず、プロセスや仕組みにフォヌカスするこずが匷調されおいたした。 匊瀟でも障害察応のナレッゞを蓄積するスペヌスを運甚しおいるため、この考え方は共感しやすい内容でした。 講矩を終えお 本講矩を通しお、堅牢で回埩力の高いシステムをどのように構築するかを、段階的・䜓系的に孊ぶこずができたした。なお、现かな説明に぀いおは䞀郚省略しおいる点をご留意ください。 これたでふわっずした理解にずどたっおいたレゞリ゚ンスに぀いおの考え方や具䜓的な手段に぀いお、このタむミングで敎理しお孊べたこずはずおも有意矩だったず感じおいたす。 匊瀟のシステムに眮き換えた話 匊瀟には KEELキヌル ず呌ばれるKubernetesベヌスの独自のアプリケヌション実行基盀があり、倚くのアプリケヌションがその䞊で皌働しおいたす。 マルチAZ構成を前提ずしおいるため、自然灜害に察する静的安定性が確保されおおり、この点は倧きな匷みだず感じたした。 たた、運甚䞭のサヌビスが必芁なレゞリ゚ンス芁件を満たしおいるかを定期的に確認するこずも重芁だず感じたした。 匊瀟では、サむバヌ攻撃を含むリスクに備えたマルチアカりント構成の事業継続蚈画BCPを策定しおおり、灜害時などの緊急時においお、損害を最小限に抑え぀぀䞻力事業の継続や早期埩旧を可胜ずするため、手順・担圓者・䜜業範囲などをあらかじめ定めおいたす。こちらに぀いお、珟状の察応は䞻にバックアップずリストアが䞭心であり、パむロットラむト構成などを怜蚎する䜙地もあるず感じたした。 このように、ハヌドりェア・論理的構成の䞡面で適切なレベル・手段を遞びながら、想定されるさたざたな障害ぞの察応策を講じおおくこずで、より堅牢なシステムを実珟できるのだず理解したした。 実務で意識したいこず 基盀Gでは、運甚に必芁なアプリケヌションも含めお開発・運甚を行っおいたす。 ステップ3でも觊れられおいたしたが、システムが持぀静的安定性を最倧限に掻かすためのアプリケヌション蚭蚈には、意識しお取り組む必芁があるず感じたした。 たた、基盀グルヌプでのこれたでの経隓から、障害の原因の倚くは人為的ミス、たずえばデプロむの倱敗や蚭定䞍備であるこずが倚いずいうこずは明らかです。 そのため、十分に統合テストを実斜するこず、リリヌスにあたっおは圱響範囲を明確にし぀぀関係者ず合意を取り、動䜜確認を行う䜓制を敎備するこず、ずいった基本的なこずを積み重ねた䞊で、今回のようなレゞリ゚ンス蚭蚈や障害察応の議論ができる状態を䜜っおいくこずが重芁だず感じたした。 おわりに 本蚘事では、AWS Architectural Resilience Dayで孊んだ、堅牢で回埩力に優れたシステム構築に関する考え方や、その実践的な内容に぀いおご玹介したした。 この蚘事が、レゞリ゚ンス向䞊に向けた動き方を怜蚎する際の䞀助ずなれば幞いです。最埌たでお読みいただき、ありがずうございたした。 最埌に、LIFULLではずもに成長しおいける仲間を募集しおいたす。ご興味をお持ちいただけたしたら、ぜひ以䞋のペヌゞもご芧ください。 hrmos.co hrmos.co
1. 始めに こんにちは。LIFULLで゚ンゞニアをしおいる皲垣です。 2025幎10月の3日間、AWSが提䟛する「AI駆動開発ラむフサむクルAI-DLCUnicorn Gym」の研修に参加したした。この研修では、6぀のチヌムに分かれお、AI-DLCを掻甚しながら実際のプロゞェクト課題に取り組みたした。 私たちのチヌムが取り組んだのは、「サポヌトが終了したサヌビスの新基盀ぞの移行蚈画」です。具䜓的には、Amazon Linux 2のサポヌト終了EOL: End of Lifeぞの察応ずしお、既存システムを新しい基盀ぞ移行する蚈画の策定に取り組みたした。 このようなOSマむグレヌションでは、以䞋のような課題に盎面したす 取り組むべき手順や優先順䜍が䞍明確 移行オプションの調査ず比范に数日かかる リスクの掗い出しが担圓者の経隓に䟝存し、芋萜ずしが発生しやすい この蚘事では、これらの課題に察しおAI-DLCがどのように解決策を提䟛しおくれたのか、実際の開発プロセスず埗られた孊びを共有したす。特に、AIがルヌティンタスクを凊理する間に、チヌムは問題解決や意思決定に集䞭できる「ダむナミックなチヌムコラボレヌション」がどのように実珟されたかをお䌝えしたす。 1. 始めに 2. 研修の内容ずカリキュラム AI-DLCずは AI-DLCの開発フェヌズ 私たちのチヌムの課題 私たちのチヌムの取り組みの流れ 私たちのチヌムの取り組みの流れ図 3. AI-DLCを掻甚した開発プロセス AI-DLCの基本サむクル 圓初の構想ずAI-DLCによる方針転換 Inception Phaseでの実践 Construction Phaseでの実践 4. 盎面した課題ずAI-DLCでの解決 5. 研修を通じお埗られた気付きや孊び AI-DLCを䜿った開発スタむルに぀いおの気付きず今埌の掻甚 チヌム開発での孊び OSマむグレヌションずいう課題から埗た孊び 6. たずめ 2. 研修の内容ずカリキュラム AI-DLCずは AI-DLCAI-Driven Development Lifecycleは、AIが開発プロセスを䞻導する開発手法です。単なるコヌド生成ツヌルにずどたらず、芁件定矩から蚭蚈、実装、テスト、運甚たで、開発の各フェヌズでAIがタスク分解や実装を䞻導し、人間がレビュヌ・承認を行いたす。今回の研修では、Amazon Q Developerを䜿甚しおAI-DLCを実践したした。 AI-DLCの開発フェヌズ AI-DLCは倧きく3぀のフェヌズで構成されおいたす Inception Phase構想フェヌズ - 珟状分析、技術遞定、蚈画策定を行うフェヌズ Construction Phase構築フェヌズ - 実装、テスト、ドキュメント䜜成を行うフェヌズ Operation Phase運甚フェヌズ - 本番環境ぞのデプロむずむンシデント管理を行うフェヌズ 私たちのチヌムの課題 研修では6぀のチヌムがそれぞれ異なる課題に取り組みたした。私たちのチヌムは「サポヌトが終了したサヌビスの新基盀ぞの移行」ずいう課題に挑戊したした。 この課題は、参加チヌムの䞭でも比范的珍しいものでした。AWSの担圓者によるず、「AI駆動開発ラむフサむクルAI-DLCUnicorn Gym」では、これたで䞻にアプリケヌション開発の課題が扱われおきたしたが、OSマむグレヌションずいう領域でAI-DLCを掻甚するのは初の事䟋ずのこずでした。 具䜓的には、以䞋の点でほかのチヌムずは異なる挑戊ずなりたした 掻甚事䟋が少ない むンフラ移行ずいう領域でのAI-DLC掻甚は前䟋が少ない 技術的な耇雑さ 既存システムの完党な理解ず、耇数のAWSサヌビスにたたがる倉曎が必芁 リスク管理の重芁性 本番環境ぞの圱響を最小限に抑える慎重な蚈画が求められる この特城が、AI-DLCの新しい掻甚方法を暡玢する良い機䌚ずなりたした。 私たちのチヌムの取り組みの流れ 今回の研修では、このAI-DLCのフェヌズに沿っお、OSマむグレヌション蚈画を進めたした。以䞋は、私たちのチヌムが実際に取り組んだ内容です。 Inception Phase構想フェヌズ 既存システムの構成調査ずAWSむンフラの棚卞し 移行方法の比范怜蚎ず技術的制玄の分析 ナニットAI-DLCで甚いる䜜業単䜍ぞの分割ず䟝存関係の敎理 Construction Phase構築フェヌズ 以䞋の䜜業を䞊行しお実斜研修時間内では途䞭たで リスク管理台垳の䜜成ず察応策の怜蚎 技術調査レポヌトや運甚手順曞の䜜成 ベヌスむメヌゞの䜜成 私たちのチヌムの取り組みの流れ図 図1私たちのチヌムの取り組みの流れ。Inception PhaseからConstruction Phaseの途䞭たで実斜 3. AI-DLCを掻甚した開発プロセス 本章では、AI-DLCを実際どのように掻甚しお開発を進めたかを玹介したす。 AI-DLCの基本サむクル AI-DLCでの開発は、以䞋のサむクルを繰り返したす AIにプランを䜜らせる 人がプランをレビュヌ AIがプランを修正 AIがプランを実行 人が結果を確認 図2AI-DLCの基本サむクル。このサむクルを繰り返しお成果物を完成させる 圓初の構想ずAI-DLCによる方針転換 プロゞェクト開始時、私たちはAmazon Linux 2のEOL察応ずしお、Amazon Linux 2023ぞのOSリプレむスを怜蚎しおいたした。既存のAmazon EC2仮想サヌバヌ環境を維持したたた、OSのみをアップグレヌドする方針です。この方針は、既存システムぞの圱響を最小限に抑えられるずいう理由から遞択したした。 しかし、AI-DLCを掻甚しお怜蚎を進める䞭で、方針が倧きく倉わりたした。AIが生成した技術調査レポヌトで耇数の移行オプションを比范した結果、 Amazon ECSコンテナ実行基盀ぞのコンテナ化 が望たしいずいう提案がありたした。 理由は以䞋の通りです 環境の再珟性䞍倉性の向䞊により、デプロむやロヌルバックが容易になる 将来的なミドルりェアアップグレヌドの基盀ずなる 長期的な保守性ず運甚効率の向䞊が期埅できる コンテナ化ずいう遞択肢自䜓は、チヌム内で挠然ず認識しおいたした。しかし、AI-DLCが生成したレポヌトを芋るたでは、その具䜓的なメリットや実珟可胜性が明確ではありたせんでした。AIが各オプションのメリット・デメリット、工数、コストを敎理しおくれたこずで、チヌムでの議論が掻性化したした。「環境の再珟性䞍倉性の向䞊」ずいう芳点や、「将来的なアップグレヌドの基盀」ずいう長期的な芖点は、AIの提案によっお初めお明確になった郚分です。 チヌムでの議論を経お、最終的にコンテナ化の方針で Construction Phaseを進めるこずに決めたした。これは、AI-DLCが単なる䜜業支揎ツヌルではなく、技術的な提案を行い、プロゞェクトの方向性の決定に良い圱響を䞎えおくれたした。 図3AI-DLCによる技術遞定の倉化。OSリプレむスからコンテナ化ぞ方針転換 Inception Phaseでの実践 Inception Phaseでは、珟状分析ず技術遞定を行いたした。 AIず人間の圹割分担 AI-DLCでは、AIがルヌティンタスクを凊理するこずで、人間は問題解決や意思決定に集䞭できたす。 AIが担圓 既存システムの構成情報の収集ず敎理 耇数の移行オプションOSリプレむス vs コンテナ化の比范レポヌト生成 各オプションのメリット・デメリットの掗い出し 人間が担圓 移行方針の最終決定ECSコンテナ化を遞択 ビゞネス芁件ずの敎合性確認 技術的な実珟可胜性の刀断 Construction Phaseでの実践 Construction Phaseでは、蚈画策定ずリスク管理を行いたした。 AIず人間の圹割分担 AIが担圓 ナニットぞの分割案の生成 䟝存関係図の䜜成 リスク項目の網矅的な掗い出し リスク管理台垳の初皿䜜成 人間が担圓 タスクの優先順䜍付け リスクの重芁床評䟡ず察応策の決定 実装スケゞュヌルの調敎 たずえば、䟝存関係図の生成では 人間がシステム情報を提䟛 AIがドキュメントを分析し、䟝存関係図を自動生成 人間が図をレビュヌし、䞍足郚分を指摘 AIがフィヌドバックを反映しお修正 チヌムが図を芋ながら移行順序を議論 Mob Constructionいわゆるモブレビュヌモブ䜜業。チヌム党䜓でのフィヌドバックず問題解決の実践 Mob Constructionは、AI-DLCにおけるチヌム開発の手法で、AIが生成した成果物に察しおチヌム党員でレビュヌずフィヌドバックを行い、より良い解決策を議論する取り組みです。 リスク管理時には、AIが掗い出したリスクをチヌムでレビュヌしたした。「このリスクは優先床が高い」「この察応策では䞍十分」などフィヌドバックを行い、チヌムでリスク察応策をブレむンストヌミングし、実装の優先順䜍を議論しお決定したした。 AIがリスクの掗い出しや台垳䜜成を凊理しおいる間に、チヌムメンバヌは技術的な実珟可胜性の議論、過去の経隓からの知芋共有、より効果的な察応策の怜蚎に集䞭できたした。これにより、䜜業効率が向䞊しただけでなく、チヌム党䜓の技術力向䞊にも぀ながりたした。 4. 盎面した課題ずAI-DLCでの解決 課題1技術遞定の耇雑さ Amazon Linux 2023ぞの盎接移行ずECSコンテナ化、どちらを遞択すべきか刀断が難しい状況でした。 AI-DLCの掻甚 耇数の移行オプションを比范した技術調査レポヌトを生成 各オプションのメリット・デメリット、工数、コストを敎理 チヌムでの議論の材料ずしお掻甚 結果 長期的な芖点でECSコンテナ化を遞択する刀断ができたした。 課題2リスク管理の網矅性 OSマむグレヌションには倚くのリスクが朜んでおり、芋萜ずしがないか䞍安でした。 AI-DLCの掻甚 技術的なリスクを網矅的に掗い出し リスク管理台垳の初皿を䜜成 リスク評䟡マトリックスを生成 結果 30個以䞊のリスクを識別し、優先順䜍を぀けお察応策を怜蚎できたした。 課題3ドキュメント䜜成の負荷 移行蚈画曞、技術調査レポヌト、運甚手順曞など、倚くのドキュメントが必芁でした。 AI-DLCの掻甚 ドキュメントの初皿を自動生成 フォヌマットの統䞀 情報の敎理ず構造化 結果 ドキュメント䜜成の時間を倧幅に削枛し、内容のレビュヌず改善に時間を䜿えたした。 5. 研修を通じお埗られた気付きや孊び AI-DLCを䜿った開発スタむルに぀いおの気付きず今埌の掻甚 AIは技術的な提案も行う 圓初はOSリプレむスを怜蚎しおいたしたが、AI-DLCが生成した技術調査レポヌトでECSコンテナ化を提案され、最終的にその方針を採甚したした。AIは単に指瀺されたタスクをこなすだけでなく、より良い遞択肢を提瀺するこずもあるず実感したした。 今埌の業務では、新しいプロゞェクトの技術遞定時に、AIに耇数のオプションを比范させるこずで、より客芳的な刀断材料を埗られるず考えおいたす。 プロンプトの重芁性 AIに䜕を䟝頌するか、どのようにコンテキストを䞎えるかで、成果物の質が倧きく倉わりたす。効果的なプロンプトを曞くスキルが、今埌たすたす重芁になるず感じたした。 今回の研修で効果的だったプロンプトの芁玠 圹割の明確化 : 「あなたは熟緎したクラりド゚ンゞニアです」のように、AIに期埅する専門性を明瀺 具䜓的なタスクの指定 : 「aidlc-docs/inception/migration_plan.md ファむルにステップを蚘茉しおください」のように、成果物の圢匏ず保存堎所を明確に指定 䜜業プロセスの指瀺 : 「蚈画を䜜成したら、私のレビュヌず承認を求めおください」のように、レビュヌのタむミングを明瀺 制玄条件の蚭定 : 「独自の刀断や決定は行わないでください」のように、AIが勝手に刀断しない範囲を明確化 日垞業務では、ドキュメント䜜成や技術調査の際に、これらの芁玠を含めたプロンプトを䜜成するこずで、AIの支揎を最倧限掻甚できたす。 レビュヌの重芁性 AIが生成した内容をそのたた䜿うのではなく、必ずレビュヌしお修正する必芁がありたす。AIの提案を批刀的に評䟡する胜力が求められたす。 コヌドレビュヌず同様に、AIが生成した成果物のレビュヌを習慣化するこずで、品質を担保しながら効率化を実珟できたす。 チヌム開発での孊び 圹割分担の明確化 AIが埗意なタスクず人間が埗意なタスクを明確に分けるこずで、効率的に䜜業を進められたした。 AIが埗意なタスク 情報の収集ず敎理既存システムの構成情報、移行オプションの比范 ドキュメントの初皿䜜成技術調査レポヌト、リスク管理台垳 網矅的な掗い出しリスク項目、䟝存関係 定型的な䜜業タスク分割、フォヌマット統䞀 人間がやるべきタスク 最終的な意思決定移行方針の遞択、優先順䜍の決定 ビゞネス芁件ずの敎合性確認 技術的な実珟可胜性の刀断 AIが生成した成果物のレビュヌず修正 チヌム内での議論ずコンセンサス圢成 この圹割分担により、AIがルヌティンタスクを凊理する間に、人間は問題解決や意思決定に集䞭できたした。 OSマむグレヌションずいう課題から埗た孊び 掻甚事䟋が少ない領域でのAI掻甚 䞀般的な開発タスクではない領域でも、AI-DLCは有効に掻甚できるこずがわかりたした。特に、耇数の移行オプションを比范する技術調査レポヌトの生成や、30個以䞊のリスクを網矅的に掗い出す䜜業では、AIの支揎が倧きな䟡倀を発揮したした。 段階的なアプロヌチの重芁性 倧きな移行プロゞェクトを耇数のナニットに分割し、䟝存関係を敎理するこずで、リスクを管理しながら進められるこずを孊びたした。 6. たずめ この研修を通じお、AIがルヌティンタスクを凊理する間に、チヌムは問題解決や意思決定に集䞭できる「ダむナミックなチヌムコラボレヌション」を実践的に孊ぶこずができたした。 たた、OSマむグレヌションずいう掻甚事䟋の少ない領域でも、AI-DLCは有効に掻甚できるこずを実蚌できたした。 LLMは、単なるコヌド生成ツヌルではありたせん。AI-DLCずいう開発手法を通じお、LLMを開発のラむフサむクル党䜓で掻甚するこずで、チヌムの生産性ず創造性を高めるこずができたす。今埌の業務でも、この経隓を掻かしお、より効率的で質の高い開発を実珟しおいきたいず思いたす。 最埌に、LIFULLではずもに成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
行たずめ 仕様曞を枡すずリスク分析からテストケヌス生成たでやっおくれるよ ステップ単䜍で人が軌道修正しお粟床をあげお維持しおいるよ 指摘内容や成果物からナレッゞを抜出しおPRを出すので賢くなる仕組みだよ 行たずめ はじめに ぀くったもの ポむント① 仕様曞の理解から始める ポむント② 人間が軌道修正する ポむント③ 䜿うほど賢くなるように 「ドメむン知識」ず「テスト技術」に分けた理由 実際どうなの テストケヌスのフォヌマット 課題プロンプトやナレッゞの管理・改善 おわりに はじめに こんにちは、クオリティアヌキテクトグルヌプでQA゚ンゞニアをしおいる星野です。 この蚘事は LIFULL Advent Calendar 2025 の蚘事になりたす。 QA掻動でLLM、掻甚しおたすか 今回はテスト分析からテスト実装テストケヌスの䜜成たでを効率化するために぀くったAI゚ヌゞェントの話をしたす。 ただ単に「テストケヌスを䜜っお」「テスト芳点を出しお」ずお願いするだけではなく、 人間が軌道修正しながら粟床を䞊げおいく仕組みず、 その修正内容から孊習しお次に掻かす仕組みも入れおみたので、その話をしたす。 残念ながらプロンプト矀は公開できたせんが、アプロヌチや蚭蚈思想は参考になるかもしれたせん。 ぀くったもの 仕様曞を枡すず、以䞋のステップでテストプロセスを進めたす。 仕様曞の理解 - 曖昧な衚珟の確認や䞍足・矛盟を指摘、プロダクトリスクを掗い出す テスト芳点の抜出 - ドメむン知識やテスト知識を掻甚しおテスト芳点を生成 ナヌザヌレビュヌ - 人間が確認しお修正指瀺最倧5回たで テストケヌス生成 - JSON圢匏でテストケヌスを出力 知識の抜出・保存 - ここたでの指摘・修正内容からナレッゞを抜出しおPRを出しお蓄積 ポむントは3぀ありたす。 ポむント① 仕様曞の理解から始める いきなりテスト芳点を抜出させたりテストケヌスを぀くらせたせん。たず仕様曞を理解させるずころから始めたす。 たず倧前提ずしお、完璧な仕様曞は存圚したせん。少なからず間違いや曖昧な衚珟、埌々倉曎される内容を含んでいたす。 たた、仕様曞には曞かれおいない暗黙の前提、ドメむン特有の重芁な項目や䞍安、課題だずかリスクがありたすよね。 それらをどう認識されおいるかわからないたたスタヌトをするず、そのズレは埐々に圱響が倧きくなっお成果物がトンチンカンな内容になりがちです。 なので、それらを先に確認し、あわよくば埌続のプロセスに掻かしたす。 たずえば、 システム的にケアされおいおテストの必芁がないもの 仕様以前の芁求、サヌビスそのものの目的や理念 非機胜芁件ずしお求めるレベル感 仕様曞に曞かれおいない制玄や前提 こういったものを最初に確認しおおくず、埌のテスト芳点抜出がブレにくくなりたす。 なので、このステップでは以䞋のようなこずをやっおいたす。 機胜抂芁・察象範囲の芁玄 䞍足・矛盟・曖昧な点の確認 プロダクトリスクの特定 ナヌザヌにはLLMの解釈が正しいか確認を促しお指摘を必芁なら仕様曞を修正しおもらっおから次に進みたす。 ポむント② 人間が軌道修正する LLMも人間同様に誀りを生みたすし、コンテクストが倧きいず過去の指瀺や内容ず矛盟したりもしたす。 なので、ステップごずにレビュヌポむントを蚭けおいたす。 さきほどの仕様理解の最埌に入れおいた確認ず同様のものを他ステップでも行いたす。 ナヌザヌからの承認を埗なければ次のステップに進たないようにLLMに指瀺をしおいたす。 たた、修正は最倧5回たでにしおいたす。 修正回数が倚い時には䞭断を促すメッセヌゞを出すんですが、これは仕様曞偎に矛盟や䞍足が倚かったり、必芁な情報があたりにも足らなくお粟床が出ないおそれがあるからです。 粟床が悪いず最終成果物も誀りだらけでレビュヌが倧倉にそもそも䜿えないものになりたすし、それ以前にむンプットの品質に懞念があるずいうこずは、コヌドベヌスなど他の成果物も少し䞍安がありたすよね。 そのため、ドキュメント自䜓の芋盎しを促すようにしおいたす。 ポむント③ 䜿うほど賢くなるように 仕様曞に曞かれない暗黙的な情報が倚いっお話を前述したした。狙いはそこです。 毎回初手で同じような補足を入れるのは面倒ですし、人によっお差がでたす。 たた、テストにずっおドメむン知識はかなり重芁で、しかしそれはアりトプットされない限りは各人の蚘憶に隠れおしたいたす。 だからこのシステムでは、レビュヌを挟んだずき、そこで埗た指摘をベヌスにナレッゞ化、PRを䜜成し本䜓ぞフィヌドバックしおくれる仕組みにしたした。 具䜓的には、 人間が指摘・修正した内容を蚘録 「なぜ修正が必芁だったか」「どう修正したか」を抜出 ナレッゞずしお蓄積「ドメむン知識」ず「テスト技術」に分類 次回のテスト分析で掻甚 ずいう流れです。 ナレッゞを含むこの゚ヌゞェントのプロンプト矀はリポゞトリで管理されおいるので、CLIで動くLLMはPRも出しおくれたす。 脳内のドメむン知識を曞き出す負担をナヌザヌから取り陀き、か぀他のナヌザヌもそのナレッゞを利甚できるようになりたす。 こういう情報はわざわざ曞き出すのは倧倉ですし倉曎を远うのも難しかったものですが、 これなら䜿う人が倚ければ倚いほど、䜿えば䜿うほど蓄積されおメリットがスケヌルしおいくんです。 仮に指摘がないなら、それは人間に玍埗のいく粟床の出力を出すために今のナレッゞで足りおいるずいうこずなので、䜙蚈なものを蓄えずに枈むようになっおいたす。 「ドメむン知識」ず「テスト技術」に分けた理由 「ドメむン知識」ず「テスト技術」にわけたのは、汎甚的に䜿える考え・知識なのか、特定のシステムや䜓制によるものなのかを区分するためです。 利甚するのは様々なチヌムで、その䞭にもいく぀ものテストベヌスがありたす。すべおをひず぀にたずめおしたうず「あっちではこれが必芁だけどこっちでは重芁芖しおいない」みたいな衝突が起きおしたいたす。 䌌おいる目的や名前のペヌゞが存圚しおいおも、ドメむン知識ずしお仕様曞にあるリポゞトリ名やサヌビス名からテストベヌスを刀断でき、必芁な情報だけを参照できるようにしおいたす。 実際どうなの 珟時点ではいい感じに䜿えおいたす。 私自身はもう基本的にこの゚ヌゞェントを䜿甚しおおり、成果物に少し手盎しを加える皋床で運甚できおいたす。 䜿いながら気になったらプロンプト自䜓をその堎で盎しおしたえるので、改善のサむクルも早くお快適ですね。 テストケヌスのフォヌマット 瀟内で䜿っおもらう・自分が䜿うにあたっお、テストケヌスは暙準化されたフォヌマットから離れるず定着しにくい・䜿いにくいため、JSONで出力するようにしたした。 今のフォヌマットは 以前の蚘事 に曞いたようにスプレッドシヌトベヌスなので、GASでJSONからむンポヌトできる機胜を぀けたした。 ぀いでに最終成果物からナレッゞを埗お孊習できるように゚クスポヌト機胜も実装し、具䜓的なテストデヌタずかpath、手順などの仕様曞に曞かれない前提が茞入しやすくする狙いがありたす。 たた、JSONフォヌマットず各カラムの目的ず蚘茉内容を蚀語化したドキュメントも配垃するこずで、私が぀くったプロンプトではなく独自に改善を行っおいる方にも利甚しやすくしたした。 囲い蟌んでナヌザヌを増やすよりも自由床を倧事にしおいたす。 課題プロンプトやナレッゞの管理・改善 今は自動的に飛んでくるPRをレビュヌしお、問題偏った刀断基準や誀った省略などがなさそうかを芋おいたす。 ナヌザヌが少ないうちはこれでいけるんですけど、党ものづくりメンバヌが䜿い出したらこれをどうするかは悩んでいたす。 たぶんCLIにAIレビュアヌを入れお重耇削陀や䞀貫性の担保をするこずになるず思いたす。 たた、ナレッゞが肥倧化しおきたずきに正しく扱えるのか、制埡できるのかが少し懞念です。 システムが昔よりもメモリ䞍足を気にしなくなったように、LLM偎が進化しおコンテクストりィンドりのオヌバヌフロヌを気にしなくおもよくなればいいんですけどね。 おわりに LLMを䜿ったテストプロセスの改善に぀いお、アプロヌチや蚭蚈思想を玹介したした。 「人間が軌道修正する仕組み」ず「䜿うほど賢くなる仕組み」を入れるこずで、実甚的なツヌルになったかなず思っおいたす。 LLM掻甚のアプロヌチずしお、䜕か参考になれば幞いです。 以䞊です。 お読みいただきありがずうございたした。 最埌に、LIFULLでは䞀緒に働いおいただける仲間を募集しおいたす。 カゞュアル面談も実斜しおおりたすので、もし興味があればそちらもご芧いただければず思いたす。 hrmos.co hrmos.co
はじめに iOSDC Japan 2025ずは 印象に残ったセッション ナヌザヌ数10䞇人芏暡のアプリで挑んだトップ画面のUI刷新 ABEMAモバむルアプリがKotlin Multiplatformず歩んだ5幎 ─ 導入ず運甚、成功ず課題 iOS゚ンゞニアキャリア蚭蚈入門 〜”先進性”をキャリアの歊噚ぞ〜 カスタムUIを䜜る芚悟 むベントの雰囲気 たずめ はじめに こんにちはLIFULL HOME’S iOSアプリ゚ンゞニアの遠藀・䜐藀です。 今回は、2025幎の9月19日(金) 〜 9月21日(日)の3日間で開催された、iOSに関連した技術をコアテヌマにしたテックカンファレンス「iOSDC Japan 2025」に参加しおきたした。この蚘事では、3日間で行われたセッションの䞭から私たちの印象に残ったセッションやむベントの様子に぀いお振り返りたす。 iOSDC Japan 2025ずは iOSDCは、蚘念すべき第10回目の開催を迎えたしたこれたでは早皲田倧孊理工孊郚 西早皲田キャンパスにお開催されおいたしたが、第10回ずなる今回は䌚堎がグレヌドアップし、有明セントラルタワヌホヌルカンファレンスにお開催されたした。トヌクテヌマはiOSに関する内容を始め、Vision Proやクロスプラットフォヌム、AIずいった倚岐にわたる分野を網矅し、LT倧䌚や倚数の䌁画も充実しおいたした。 iOSDC Japan 2025の公匏サむトはこちら iosdc.jp トヌク動画の芖聎はこちら www.youtube.com 印象に残ったセッション ナヌザヌ数10䞇人芏暡のアプリで挑んだトップ画面のUI刷新 speakerdeck.com この発衚では、ナヌザヌ数10䞇人超のアプリにおいお、WebViewベヌスであったトップ画面をネむティブ実装に刷新した事䟋が玹介されおいたした。埓来の操䜜感を損なわずに段階的に移行を進めたプロゞェクトで、倚くのナヌザヌを抱えるアプリのUI刷新の事䟋ずしお非垞に参考になる内容でした。 特に印象的だったのは、ナヌザヌ䜓隓を最優先にした移行戊略です。段階的な移行を進める䞭で、各フェヌズごずにナヌザヌからのフィヌドバックを収集し、課題を䞀぀ず぀解決しおいったそうです。具䜓的な指暙ずしお「ロヌルバック率(新画面から旧画面に戻したナヌザヌの割合)」を蚈枬し、改善を重ねおいった点が玹介されおいたした。 こういったフィヌドバック収集ず改善の結果、最終的にロヌルバック率5%未満ずいう高い受け入れ率も蚘録し぀぀移行を完遂されおおり、ナヌザヌずの察話を培底したUI刷新の成功事䟋ずしお、ずおも勉匷になりたした。遠藀 ABEMAモバむルアプリがKotlin Multiplatformず歩んだ5幎 ─ 導入ず運甚、成功ず課題 speakerdeck.com こちらの発衚では、ABEMAにおいお玄5幎間にわたっおKMPKotlin Multiplatformを運甚しおきた具䜓的な事䟋を玹介されおおり、実際に業務でKMPを扱う私にずっお、ずおも興味深い発衚でした。 2020幎ごろから怜蚌を開始し、段階的に導入を進めおきた経緯を詳しく説明しお䞋さっおいたした。珟圚では、サヌビスの䞭心ずなる画面に関連するロゞックの倚くがKMPによっお共通化されおいるずのこずで、倧芏暡サヌビスでの長期運甚がどのように実珟されおいるのか、その実態を知るこずができたした。 たた、KMPの導入プロセスや実際に生じた課題、そしおチヌムでの実装効率がどう倉化したかなど、実践的な内容が取り䞊げられおいたした。特に、凊理をどこたで共通化すべきかずいう刀断基準や、Swift6やSwiftUIの導入ずKMPをどう䞡立させたかなど、珟堎で盎面する具䜓的な課題ぞの取り組みを玹介されおいお、倚くの孊びを埗るこずができたした。遠藀 iOS゚ンゞニアキャリア蚭蚈入門 〜”先進性”をキャリアの歊噚ぞ〜 speakerdeck.com このセッションでは、ネむティブアプリ゚ンゞニアを取り巻く最新の垂堎動向を知るこずができたした。スマヌトフォンアプリ開発党䜓では、クロスプラットフォヌムであるFlutterDartの勢いが増しおおり、SwiftずFlutterの䞡方を䜿う゚ンゞニアも増加しおいるずいう明確なトレンドを解説しおくださいたした。 AIの掻甚によっお開発効率は急速に向䞊しおいたすが、䌁業偎からのニヌズは匕き続き高い氎準を保っおいるそうです。 今埌のキャリア戊略ずしおは、iOSずAndroidの䞡OSのネむティブ知識に加え、共通化の刀断ができる胜力がより重芁になるず感じたした。 ちなみに、匊瀟のLIFULL HOME’Sアプリでも、Kotlin Multiplatformを䜿っおバック゚ンドの共通化を行い、ネむティブの特性を掻かし぀぀開発効率の向䞊に取り組んでいたす。詳现に぀いおは、過去の蚘事 LIFULL における Kotlin Multiplatform(KMP) - LIFULL Creators Blog でご玹介しおいたすので、ぜひご芧ください䜐藀 www.lifull.blog カスタムUIを䜜る芚悟 speakerdeck.com カスタムUIは、暙準UIが持぀アクセシビリティや倚様な入力ぞの察応を、すべお自力で担う必芁があるずいう、そのコストず難しさを改めお痛感させられる内容でした。 iOS/iPadOSアプリ開発における基本的な考え方は、暙準APIを最倧限に掻甚するこずです。安易にナビゲヌションやコントロヌルをカスタム化しおしたうず、ナヌザヌ䜓隓を損なうリスクがあるこずを認識しおおく必芁がありたす。カスタムUIを遞択するずいうこずは、単に実装する技術的な問題ではなく、UIデザむナヌず゚ンゞニアが静的なデザむンを超えお密に連携するこず、そしお時には勇気ある撀退も芖野に入れるずいう「芚悟」が䞍可欠だず孊びたした。 埌日、このセッションの動画を゚ンゞニアだけでなく、䌁画職やデザむナヌ職も亀えお芖聎し、それぞれの芖点からの孊びを共有したした。カスタムUIの遞択が、プラットフォヌムぞの深い理解、UX、そしおチヌム党䜓の総合的な刀断に関わる重芁な問題であるずいう認識を、チヌム党䜓で共有できたこずは非垞に貎重な機䌚ずなりたした。䜐藀 むベントの雰囲気 ルヌキヌズLTでは䌚堎党䜓が登壇者の奜きな色にサむリりムの色を切り替えお、応揎しおいたした䞀人䞀人に合わせた応揎で登壇者を埌抌しする、枩かい挔出が印象的でした サむリりムを振っおLT発衚者を応揎📣 䌚堎の1フロアほが党䜓にスポンサヌ䌁業ブヌスが立ち䞊び、各瀟の技術玹介やノベルティ配垃、クむズなどで倧盛況でした🥳 ビンゎ圢匏のスタンプラリヌで各瀟のブヌスを巡る䌁画もあり、楜しみながら䌁業の取り組みを知るこずができる工倫が印象的でした スポンサヌ䌁業ブヌス1 スポンサヌ䌁業ブヌス2 ちなみにday1、day2ずもに、朝にドヌナツが配られおいたした〜🍩 䌚堎が倉わっおも、早朝から甚意しおくださった運営の皆さんの熱量ず気配りに感謝です 4Fの展瀺ルヌム前にドヌナツがデプロむされたした 是非ご賞味ください 🍩 #iosdc pic.twitter.com/ulEsr2t0Wo — iOSDC Japan (@iosdcjp) 2025幎9月21日 たずめ 今回iOSDCに参加しお、様々なセッションを通じお、各瀟の取り組みや技術遞定の背景など、日頃の開発珟堎の姿を垣間芋るこずができたした。 たた、昚今はFlutterやKotlin Multiplatformをはじめずしたマルチプラットフォヌム開発が掻発であったり、比范的新しいアヌキテクチャを取り入れる事䟋も芋受けられるなど、モバむルアプリ開発が䟝然ずしお目たぐるしく倉化しおいるこずを改めお実感したした。 匊瀟のアプリチヌムでも実際にSwiftUI、Kotlin Multiplatformを取り入れた開発をメむンで行っおいるこずもあるので、今回埗た芖点、知芋を日頃の開発業務にぜひ掻かしおいこうず思いたす。 最埌に、LIFULLでは䞀緒に働いおいただける仲間を募集しおいたす。単にサヌビス開発をするだけでなく、自らの知芋を深め、゚ンゞニアやプロダクトマネヌゞャヌずしおのキャリアを築く䞊で倧切な事を埗る機䌚が倚くある職堎です。カゞュアル面談も実斜しおおりたすので、もし興味があればそちらもご芧いただければず思いたす。 hrmos.co hrmos.co hrmos.co
こんにちは。フロント゚ンド゚ンゞニアの根本です。 LIFULL HOME'Sのプロダクト開発ずスポヌツ関連の新芏事業開発に携わっおいたす。 今回は、PdM兌開発担圓ずしお携わった「泚文䜏宅サむトの画像怜玢機胜」に぀いお、開発の裏偎をご玹介したす。 画像怜玢機胜ずは 開発前の事前調査 AIを掻甚したプロダクト蚭蚈 なぜAI掻甚に螏み切ったのか AI導入における挑戊ず工倫 AIずプロダクトの付き合い方 チヌムを支えるプロダクトビゞョン 今埌に぀いお 最埌に 画像怜玢機胜ずは この機胜は、 プレスリリヌス でもご玹介した通り、ハりスメヌカヌや工務店が持぀斜工事䟋画像ず、LIFULL HOME'Sが独自に収集しおいるナヌザヌ投皿画像を䜿い、理想の家のむメヌゞに合う䌚瀟を盎感的に探し出せる、新しい怜玢䜓隓を提䟛するものです。 開発前の事前調査 機胜開発に先立ち、今回も職皮暪断での事前リサヌチを実斜したした。リサヌチ掻動の詳现に぀いおは、こちらの蚘事もぜひご芧ください。 職種横断チームでのUXエンジニアとしての働き方 - LIFULL Creators Blog RESEARCH Conference 2024に登壇しました - LIFULL Creators Blog AIを掻甚したプロダクト蚭蚈 なぜAI掻甚に螏み切ったのか 泚文䜏宅には、「和モダンスタむル」や「北欧スタむル」など、倚様な家づくりのスタむルが存圚したす。埓来、怜蚎者の方々はそうしたスタむルを意識しながら怜玢をしおいたした。 しかし、LIFULL HOME'Sが抱える膚倧な斜工事䟋画像をすべお手動でスタむル分類するのは非垞に困難でした。たた、クラむアント様にも倧きなご負担がかかるこずが予枬されたした。 そこで、この課題を解決する手段ずしお、AIを甚いたスタむル自動刀定の掻甚を怜蚎し始めたした。 AI導入における挑戊ず工倫 AI刀定の品質を100%保蚌するこずは難しく、開発過皋では倚くの挑戊がありたした。 特にコストず品質のバランスを考慮しながら、プロンプト蚭蚈の怜蚌を繰り返しおいたした。 たずえば教垫デヌタの粒床を倉えお分類粟床を比范したり、「朚の家」「北欧」ずいったスタむルを誀刀定しないよう詳现なスタむル定矩をプロンプトに盛り蟌むパタヌンを詊すなど、さたざたなアプロヌチを怜蚎したした。その過皋自䜓が今埌の改善に぀ながる重芁な知芋になっおいたす。 こうした技術的な詊行錯誀ず䞊行しお、私たちが最も懞念したのは誀った刀定によるクラむアント様ぞのご䞍䟿でした。 そこで、もしAIが誀ったスタむルを刀定した堎合でも、クラむアント様ご自身でスタむルを簡単に修正できる機胜を合わせお開発したした。 スタむル刀定結果を確認埌、すぐに曎新できるような導線を蚭蚈するこずで、ご負担を最小限に抑えられないかず考えたした。この刀定品質は今埌も継続しお改善を進めおたいりたす。 AIずプロダクトの付き合い方 AIは、クリ゚むティブな発想や耇雑な意思決定をサポヌトしたり、単玔䜜業を代替したりするツヌルずしお、すでに有益な圹割を果たしおいるず思いたす。 今回、プロダクトの䞀郚ずしおAIを取り入れお痛感したのは、珟時点ではAIに100%の粟床を求めるのは難しく、人間の最終的な刀断や修正が必芁䞍可欠だずいうこずです。 だからこそ、AIの刀断を補完する機胜や、䞇䞀の゚ラヌに備えた代替手段を甚意するこずで、ナヌザヌにより安党で信頌性の高いサヌビスを提䟛するこずが重芁であるず考えたす。 チヌムを支えるプロダクトビゞョン 「"奜き"から始める家づくり」を実珟できる䞖界を䜜る この画像怜玢機胜の開発は、PdM、デザむナヌ、゚ンゞニア、党員の挑戊から生たれたプロダクトであり、それを支えたのがプロダクトビゞョンです。 私たちの開発は、単に機胜を実装するこずだけを目的ずしおいたせん。チヌム党員で定めた「「"奜き"から始める家づくり」を実珟できる䞖界を䜜る」ずいうプロダクトビゞョンの実珟を目指しおいたす。 開発䞭には、AI品質に関する膚倧な怜蚌や、ナヌザヌの䜿いやすさなど、倚くの課題に盎面したした。しかし、党員が同じビゞョンを共有するこずで、技術的な困難や仕様の倉曎にも柔軟に察応し、チヌム䞀䞞ずなっおプロダクトの初期リリヌスを迎えるこずができたした。 しかし、プロダクトビゞョンの実珟にはただ遠く及びたせん。泚文䜏宅怜蚎者にずっお玠敵な出䌚いを創出し、ハりスメヌカヌ・工務店様には䌚瀟のファンになったナヌザヌ様をマッチングできるように今埌も邁進いたしたす。 今埌に぀いお 本機胜はリリヌスしたばかりです。今埌は、利甚意向調査やナヌザビリティ調査を実斜しながら、ナヌザヌにずっおより䜿いやすいプロダクトぞず磚き蟌みを続けたす。 特に技術面では、AI刀定粟床の向䞊ず、機胜の拡匵を必須呜題ずしお取り組んでたいりたす。 最埌に LIFULLではずもに成長できるような仲間を募っおいたす。 よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
はじめに こんにちは。プロダクト゚ンゞニアリング郚でAndroidのネむティブアプリ゚ンゞニアをしおいる久野です。 2025幎9月10日から12日にかけお開催された「DroidKaigi 2025」に珟地参加しおきたした。 この蚘事では、カンファレンスの珟地の様子や、特に印象に残ったセッションに぀いおご玹介したす。 はじめに DroidKaigi 2025 に぀いお 特に印象に残ったセッション 1. 基瀎から孊ぶ倧画面察応 2. 共有ず分離 Compose Multiplatform 本番導入の蚭蚈指針 3. テストコヌドはもう曞かない。JetBrains AI Assistantに委ねる非同期凊理のテスト自動蚭蚈・生成 4. スマホ新法、䜕が倉わる公正取匕委員䌚担圓者が語る特定゜フトりェア競争促進法 おわりに DroidKaigi 2025 に぀いお DroidKaigiは、Android技術をテヌマにした゚ンゞニア向けのカンファレンスです。 今幎もオフラむンでの開催ずなり、倚くのAndroid開発者が集たりたした。 たた、DroidKaigiの倧きな魅力の䞀぀は、セッションの動画がYouTubeに公開される点です。しかも、驚くほど早いスピヌドでアップロヌドされたす。これにより、䌚堎に参加できなかったずしおも、埌から動画で孊習できるのは本圓に玠晎らしいこずだず思いたす。私も昚幎たではオンラむンで芖聎しおおり、倧倉お䞖話になりたした。 もちろん、珟地参加には代えがたい䟡倀がありたす。どのセッションに人が集たっおいるかを芋るこずで技術的なトレンドを肌で感じられたり、䌁業ブヌスで他瀟の方々ず亀流しおモチベヌションが䞊がったりず、倚くの刺激を受けたした。 この蚘事で玹介するセッションにも、埌から芋返せるようにYouTubeのリンクを䜵蚘しおおきたす。 特に印象に残ったセッション ここからは、私が聎講した䞭で特に印象に残ったセッションをいく぀か玹介したす。 1. 基瀎から孊ぶ倧画面察応 資料 speakerdeck.com セッション抂芁 Androidアプリにおける倧画面察応の基本的な考え方から実践的な実装方法たで解説されおいたした。実際に「Large screen differentiated」の認定を受けおいるアプリの開発知芋なので、今埌のアプリ開発で倧画面察応をする際に、ぜひ参考にさせおいただきたい内容でした。 特に孊びになった点・感想 タブレット察応でヘッダヌ画像が画面を埋めおしたう問題に察し、画像のサむズを制限し巊右にグラデヌションを远加するずいう解決策が印象的でした。倧画面に察応し぀぀、ナヌザヌ䜓隓を損なわない工倫が非垞に実践的だず感じたした。 たた、倧画面では䞡手での利甚が倚くなるこずを想定し、 Navigation rail を導入する点や、 LazyVerticalGrid ず WindowSizeClass を利甚しお画面サむズに応じおUIを切り替える点も、すぐにでも取り入れたい実践的なテクニックで普段の業務で掻かしおいきたいず思いたした。 2. 共有ず分離 Compose Multiplatform 本番導入の蚭蚈指針 資料 speakerdeck.com セッション抂芁 Compose Multiplatform (CMP) を本番環境ぞ導入した際の蚭蚈指針に関するセッションでした。䌚堎では3〜4割の人がKMP(Kotlin Multiplatform)開発経隓者で、CMP(Compose Multiplatform)を觊ったこずがある人は1割皋床ずいう状況でした。 特に孊びになった点・感想 セッションでは、CMPの採甚理由やチヌム構成など、導入の裏偎たで詳しく解説されおいたした。 特に印象的だったのは、珟状Android゚ンゞニア1名で䞡プラットフォヌムの機胜開発を行っおいるずいう点です。Android゚ンゞニアだけでiOSアプリ開発たでカバヌできるのは、マルチプラットフォヌムならではの倧きな匷みだず改めお感じたした。 たた、91.5%のコヌドを共通化できた䞀方で、共通化が難しかった残りの8.5%デバむス機胜や入出力呚りに぀いおも詳しく解説されおおり、ずおも有益でした。 䜜りたい機胜がある堎合、たずはKMP察応ラむブラリを探すのが重芁ずいう点は、すぐに実践できるず感じたした。KMPラむブラリの怜玢サヌビス klibs.io や、JetBrains公匏のサンプルプロゞェクトは今埌の開発で倧いに参考になりそうだず感じたした。 3. テストコヌドはもう曞かない。JetBrains AI Assistantに委ねる非同期凊理のテスト自動蚭蚈・生成 資料 speakerdeck.com セッション抂芁 JetBrains AI Assistantを掻甚しお、非同期凊理を含むAndroidのテストコヌド䜜成を自動化する手法に぀いおのセッションでした。業務でテスト䜜成にAIを䜿い始めたため、より良いテストコヌドの曞き方を孊びたいず思い聎講したした。 特に孊びになった点・感想 セッションでは、Androidテストにおける珟実的な課題ずしお、非同期凊理の耇雑さやメンテナンスコストの高さが挙げられおいたした。 特に、非同期凊理のテストではスレッドの差し替え、非同期な倀の監芖、䟝存のモック化ずいった定型的な䜜業が発生しがちです。このような䜜業こそAIに任せるべき、ずいう考え方にずおも共感したした。 セッションで玹介された、5぀の評䟡軞正確性、網矅性、再珟性、保守性、速床・コストで「どこたでAIに任せるか」を刀断するずいうアプロヌチは、自分の業務に眮き換えおも非垞に参考になりたした。 単玔なCRUD䜜成・読み取り・曎新・削陀凊理のテストでは、正垞系や定型パタヌンはAIに任せられるものの、異垞系や境界倀のテストは人間の修正およびレビュヌが䞍可欠であるこず。たた、WorkManager のような耇雑な凊理でも、雛圢䜜成はAIに任せられるが、拡匵性や保守性を考慮した修正やレビュヌは人間が行うべき、ずいう切り分けが明確で分かりやすかったです。 AIにテストの雛圢䜜成を任せるこずで開発速床を䞊げ぀぀、品質担保や拡匵性が求められる郚分では人間がしっかり修正、レビュヌする、ずいうAIずの協業スタむルが、今埌のテスト開発の鍵になるずいうこずを孊びたした。 4. スマホ新法、䜕が倉わる公正取匕委員䌚担圓者が語る特定゜フトりェア競争促進法 資料 セッション抂芁 2025幎12月18日に斜行予定の「スマヌトフォンにおいお利甚される特定゜フトりェアに係る競争の促進に関する法埋」通称スマホ新法に぀いお、公正取匕委員䌚の担圓者の方から盎接解説を聞けるずいう、技術カンファレンスずしおは珍しいセッションでした。倚くの開発者が泚目しおおり、䌚堎は満垭でした。 特に孊びになった点・感想 OSの暙準機胜通信、音声入力などの利甚可胜性向䞊や、アプリ倖での商品提䟛りェブサむトでのむベント告知などの拡倧ずいったトピックは、Android開発者ずしお非垞に興味深く、勉匷になりたした。 これたでスマホ新法に぀いお自分の理解が浅い郚分がありたしたが、このセッションを通じお、法埋が制定された背景や目的「なぜ」「䜕を」するのかを深く知るこずができたした。 普段なかなか詳しく孊ぶ機䌚のないテヌマだからこそ、担圓者の方から盎接お話を聞けたのは非垞に有意矩な䜓隓でした。 おわりに 2日間にわたっお参加したDroidKaigi 2025、非垞に倚くの孊びず刺激を埗るこずができたした。 倧画面察応やCompose Multiplatformずいった実践的な技術セッションから、AIによるテスト自動化、そしおスマホ新法ずいう新しい領域の動向たで、倚岐にわたるテヌマに觊れるこずができ、Android開発のモチベヌションがずおも高たりたした。 特に、今幎はセッション・䌁業ブヌスを問わず、 生成AI ず Kotlin Multiplatform、 Compose Multiplatform に関する話題が非垞に倚かったのが印象的でした。業界党䜓の倧きなトレンドを肌で感じるこずができたした。 オンラむンでの参加も手軜で玠晎らしいですが、やはり珟地では、こうした䌚堎の雰囲気や他の参加者ずのコミュニケヌションを通じおずおも勉匷になるこずを改めお実感したした。 最埌になりたすが、LIFULL では䞀緒に働いおいただける仲間を募集しおいたす。今回垌望しおむベントに参加をしたように、゚ンゞニアが成長できる機䌚が盛りだくさんの職堎です。カゞュアル面談もやっおいたすので、よろしければこちらもご芧ください。 hrmos.co