👌

AIレビューでインシデントを未然に防ぐ仕組みづくり

こちらは primeNumber AI Native Summer Calendarの記事です。

本日の担当は、CTO の kekekenta (@kekekenta) です。
他の記事も読みたい人は カレンダー を見てください!


はじめに

インシデントの再発防止策として「レビューで注意する」「チェックリストに追加」といったアクションを決めても、時間とともに形骸化してしまう経験はありませんか?

TROCCO/COMETAの開発チームでは、AIエージェント(Claude Code)を活用して、過去のインシデントから学んだ知見をもとに、AIのレビューで事前に問題を検知することを試しています。

課題:人の記憶に頼る再発防止策の限界

primeNumber では、インシデントやヒヤリハットが発生した場合にポストモーテムを実施し、再発防止のアクションを決定しています。しかし、以下のような課題がありました。

  • 属人化:対応したメンバーは覚えているが、他のメンバーや新メンバーへの浸透が困難
  • ドキュメントの肥大化:チェックリストやガイドラインが増え続け、実用性が低下
  • 実装コスト:CIでの自動検知は理想的だが、工数対効果を考えると優先度が上がりにくい

解決策:AIのメモリファイルを活用した自動レビュー

Claude Codeのメモリファイル(CLAUDE.md)に過去のインシデントから学んだ観点を蓄積することで、開発時とPRレビュー時の両方で自動的に問題を検知できるようにしました。

実装手順

  1. インシデントの優先度付け
    過去のポストモーテム資料を確認し、影響度や発生頻度から対応優先度を決定

  2. メモリファイルへの反映
    各インシデントから一般化した観点をCLAUDE.mdに追加

  3. 効果検証
    過去の問題のあるPRで検知できるかテストし、必要に応じて調整

メモリファイル更新の具体的な流れ

メモリファイルは人間が書くよりも、Claude Code自身に書かせることが最も効率的で実用的です。

1. バグを内包するPRを選ぶ

まず、対象のPRを選択します。

2. Claude Codeで問題のあったPRをレビューさせる

prompt例:
> 以下のPRの問題点を指摘して
> https://github.com/your-org/your-repo/pull/12345

この時点で問題を指摘できれば、CLAUDE.mdの修正は不要です。

3. 検知できない場合は、インシデントの原因を伝える

prompt例:
> このPRはインシデントに繋がりました。
> 原因としては、xx機能の有無を問わず /api/internal/yy APIを叩き、
> xx機能無効されているアカウントについては 401が返却されることでエラーとなっていたことです。
> もう一度レビューしてみてください。

ここでClaude Codeがコード上の問題箇所を正確に指摘できることを確認します。

4. CLAUDE.mdの更新をClaude Code自身に依頼する

prompt例:
> このインシデントを防ぐために、CLAUDE.mdを充実させてください。
> この問題に特化せず、同様の問題に気づけるようになるべく一般化してください。
> 変更したCLAUDE.mdをもとに、この問題をレビューで気づけるようにしてください。

ポイント

  • 特定の問題に特化せず、一般化した観点として記述してもらう
  • 冗長になりすぎないよう、シンプルな記述を心がけてもらう

5. 更新後のCLAUDE.mdで検知できるか検証

重要: /clear コマンドでセッションをクリアした上で、再度同じPRをレビューさせます。

prompt例:
> 以下のPRの問題点を指摘して
> https://github.com/your-org/your-repo/pull/12345

検知できない場合は、手順4と5を繰り返してCLAUDE.mdを改善していきます。

実際の効果

TROCCO/COMETAの開発では、Claude Code Actionsを使用しています。
実際に問題のあるPRを作成し、レビューで指摘してもらった様子です。

Claude Code Actions を利用することで、開発中もGitHub上のPRレビューでも同じメモリファイルを参照して問題を検知できます。
Claude Code が cli である強みをひしひしと感じます。

学びと今後の展望

AIとの適切な役割分担

AIは非決定的な性質があるため、すべてをAIに任せるのではなく、決定的に判定できる部分はスクリプト等で実装することが重要です。
CIで決定的に検知するようなスクリプトは、これまでは開発に時間がかかっていましたが、AIによって高速化できる部分です。
どこをAIに任せるべきかを判断することは、AI時代のソフトウェアエンジニアにとって必須なスキルだと感じます。

エンジニアリングの新たな価値

ドキュメント整備はこれまでもチームスケールの要でしたが、AI時代においてはさらに重要性が増しています。AIにとってドキュメントが唯一のコンテキストであることを考えると、構造化された知識の蓄積がそのまま開発生産性に直結する時代になったと感じます。

ドキュメントの文化を築いてきた開発チームには大変感謝です!

株式会社primeNumber

Discussion