Upgrade to Pro — share decks privately, control downloads, hide ads and more …

komatsuna「分散システムにおけるバグ分析手法」

 komatsuna「分散システムにおけるバグ分析手法」

Avatar for こまつな

こまつな

July 28, 2026

Other Decks in Programming

Transcript

  1. なぜこの話か システム複雑化に抗う前提: AI(コーディングエージェント)を指揮する新たな QAスタイル  現状の課題:混迷する調査と対話  大前提: AIエージェントの指揮・活用 システム複雑化でバグ調査難易度が指数関数的に上昇

    「コードを追えない」常識を AIが覆す マイクロサービス、複数フロント、複数環境、外部連携が混在し、どこで何が 起きているか把握困難。 Claude Code等に広大なコードベースを読ませ、ログ基盤も接続。人力読 解の限界を突破。 「再現不可」「情報不足」の不毛なラリー QAが「指揮官」として AIを動かす 開発者との往復で何日も浪費し、現場が疲弊。 QAは自ら詳細コードを精読せずとも、AIに指示を出すことでシステム全体 の振る舞いを探求可能に。 AIをバディに、 QAが「原因の構造」まで踏み込めると、  不毛なラリーは消失し、バグ調査のあり方は劇的に変わる
  2. QA がこの手法を持つ価値 「バグを見つける QA」から「原因の構造を語れる QA」へ  Before (現状)  After

    (この手法を持つと ) QA「決済できません」 → 開発者「再現できない」 「情報ください」の不毛なラリーが発生   数日のタイムロス バグの再現手順と構造が明確になり即座に修正可能 QA「画面が表示されません」 ⇄ 開発者「設定ミス?」 事実確認を疑う不毛なやり取り  数時間のロス 修正サイクル短縮  誤った Pass 判定の防止 ロジックの理解に基づき、表面的な挙動に騙されない  修正漏れの発見 影響範囲を特定し、類似箇所の修正漏れまで見抜く
  3. QA がこの手法を持つ価値 修正への貢献まで踏み込める 簡単なバグ 複雑なバグ — QA が直接 PR を出す

    — 修正候補を構造化して議論材料を提供 • typo、null チェック漏れ、 log メッセージ修正、明ら かな 1 行 fix • 「どのマイクロサービスで治すか」が論点になるケー ス • 開発者のレビュー工数も最小、その場で完結 • BE で fix する案 / FE で fix する案 / proto から直 す案、トレードオフを整理 • 開発者・PMが判断に集中できる状態を作る → バグ報告:「 TODOの追加」 →「意思決定の開始」
  4. 調査フレームワーク 6 ステップ 漠然とした症状を根本原因に到達させ、修正まで繋ぐ定型手順 STEP 01 STEP 02 STEP 03

    症状の構造化 観測軸の特定 観測 / 期待 / レイヤーを分離 どの ID で追うか決める ログ集約 → 絞り込み STEP 04 STEP 05 STEP 06 コード参照との突合 仮説 → 検証 → 報告 修正への貢献 異常の根拠を読む 1 つずつ潰す まず分布、次に個別 PR作成や議論材料提供 3
  5. Step01: 症状の構造化 01. 観測 (Observation) 02. 期待 (Expectation) 03. レイヤー

    (Layer) 事実をありのまま捉える 本来の正しい姿を定義 境界線を見極める 先入観を排除し、エラーメッセージ、 ログ、発生した数値などの「実際に 起きている事象」のみを書き出す。 仕様や要件に基づき、「本来どう動 くべきだったのか」という期待値を明 確にし、観測された事実との差分を 浮き彫りにする。 クライアント、 APIゲートウェイ、マイ クロサービス、 DBなど、システムス タックのどこで不整合が発生してい るかを切り分ける。
  6. Step02: 観測軸の選択(最重要ステップ) 何を key にして追うかで、見える景色が全然変わる 間違った材料を渡すと AIすら誤誘導されるため、最初の「軸の固定」は人間が決めるべき絶対の要所 ⚠ RISK /

    ユーザーID・時刻のみで追うリスク DECISION / 人間が軸を決定する 並行セッションによる「ログの混線」 状況に応じた最適な「観測軸」の選択 • 同一ユーザーが複数セッションを並行して走らせている場合、ユー ザーIDで追うとリクエストが混線して混乱を招く • Aさんのリクエストを追うつもりが、同時刻の Bさんのログを誤認する 事態が容易に発生する SITUATION / 状況 個別リクエストの追跡 trace ID / セッションID AIによる誤解の組み立て AIは渡された情報が混線していても、持ち前の推理力でもっともらしい虚偽のス トーリーを組み立ててしまうため、調査全体が無駄になります。 SITUATION / 状況 ルーティング問題を疑う SITUATION / 状況 全体傾向を掴みたい デプロイメント軸 API メソッド軸
  7. Step03: ログ集約から絞り込み ログ調査は「まず全体分布、次に個別追跡」の順番を徹底する PHASE 01. 分布の把握 (AIに集計させる ) PHASE 02.

    個別の追跡 (代表値を固定する ) 観測軸で集計し、偏りを見つける 1リクエストを「頭から尻尾まで」追う • 1件ずつ読む前に、まずはマクロな視点から集計させる • 偏りから代表となる 1件の「trace ID」を選択して固定 • 特定環境・特定 API・特定バージョン等の「偏り」を可視化 • 「EntranceからDBまで」1つのリクエストを完璧に追わせる • 分布が「これは異常だ」と言い切るための比較対象(基準)を 提示 • 正常時ログとの差分比較で、真のバグ箇所を突き止める 【分析観点】 • エラーは特定環境(カナリア、特定クラスタ)のみか? • 特定のAPIメソッド、特定のリリースバージョン以降か? ⚠ いきなり個別ログに入ると危険 正常・異常の判断基準がないまま個別ログに入ると、何が異常なのか判断できず にAIも人間も時間が溶けます。 ⚠ よくある失敗 : Step 1・2を飛ばしてここから始めてしまう 「とりあえずAIに投げる」と何時間も無駄に。必ず事前に構造化と観測軸の選定を行う
  8. Step04: コードとの突合 「どこで」から「なぜ」へ。ログの事実とコードの条件を重ねて原因を特定する PHASE 01. 出力箇所の特定 PHASE 02. 到達条件の解読 ログのエラー文言でコードを検索

    その行に達する「分岐と設定」を追う • ログ単体で判明するのは「エラーが発生した場所」という事 実のみ • 特定した出力行に到達するためのロジック(コードパス)を 読み解く • ログに記録されたエラーメッセージや例外スタックトレース をキーに、コードベースを検索 • どのような条件分岐(if文の評価)を通ってそこへ至ったか を調査 • 実際に出力処理が実行されている「具体的な該当行」をピ ンポイントで特定する • 影響を与えているシステム設定値や機能フラグ(Feature Flag)の状況を整理 Goal: 原因の構造化 「ログで観測された事実」と「コード上の到達条件」が重なった瞬間、真の障害原因が明らかになる
  9. Step05: 仮説検証と報告 仮説出し・ドラフト作成は「 AI」、白黒つける現物検証は「人間」が主導する PHASE 01. AIによる仮説立案と1要素ずつの検証 PHASE 02. AI下書きによるフォーマット報告

    複数仮説を確からしい順に出し、検証 「事象・原因・根拠・修正案」をセットで報告 • 構造把握後、AIに原因の仮説を複数出させる(1つに決め打ち しない) • 「設定変更で再現するか」「フラグをオフにして挙動が変わるか」 等を検証 • ⚠ 必ず 1要素ずつ実施: 同時に変更すると影響因子が特定 できなくなるため避ける • 検証は人間が主導:AIの自信満々な説明ではなく、現物での 検証で白黒つける • 白黒ついた段階で、曖昧さを残さず即座に報告フェーズへ移行 • 報告のドラフト作成(事象・原因・根拠・修正案)も AIに実行させ る • QAが事実確認して提出:AIが作成したドラフトを、QA自身が 検証結果と照らして最終確定 • 確定した原因・対策をセットでドキュメント化し、次の迅速な意思 決定へ Goal: 事象・原因・根拠・修正案のパッケージング 「AIを活用した仮説立案・ドラフト作成」と「現物による事実確認」で、迅速かつ正確な報告を実現する
  10. Step06: 修正への貢献 報告して終わりではなく、もう一歩踏み込んでバグを確実に解消する 01. 簡易なバグの直接修正 02. 複雑なバグの解決支援 03. 類似箇所の修正確認 直接PRを出して解決

    修正案と議論材料の整理 横展開と網羅性の検証 • Typo(誤字脱字)や単純な nullチェック漏れなどの簡易な バグが対象 • 「どのマイクロサービスで修正 すべきか」が論点となる複雑な 問題に対応 • 「同じ構造のバグが他の箇所 に潜んでいないか」を徹底的に 疑う • QA自身が直接プルリクエスト (PR)を作成・送付する • 具体的な複数の修正案とその トレードオフを論理的に整理 • • 開発チームに負担をかけず、 迅速な修正サイクルを実現 • 関係者が意思決定しやすい議 論のたたき台を提供する 類似ロジックやコンポーネント における修正漏れの有無を確 認 • 根本からバグを根絶し、調査タ スクを完全な形で完了させる