メインコンテンツにスキップ

パート5: レビューとリリース

エージェントがコードの80%を書くとき、あなたは著者よりもレビュワーになります。作業はタイピングから判断へとシフトし、その判断はこれまで以上に鋭くなければなりません。なぜなら、生成コードは人間のコードよりも静かに失敗するからです。

エージェントに一次レビューをさせる

人間が何かを見る前に、エージェントを一次レビュワーとして使いましょう。エージェントは機械的なレイヤーが得意です:よくあるバグ、スタイル違反、セキュリティの匂い、パフォーマンス問題の検出。これによってノイズが除去され、人間のレビュワーが実際に人間を必要とするもの — 設計、保守性、この変更がシステムの方向性に合っているか — に注意を集中できます。

この分担が重要です。一次レビューは機械的であり、委任できます。設計に関する最終的な判断はそうではありません。

リリースするすべての行をレビューする — 適切な疑いを持って

コードが動くから信頼するという反射は、生成コードにとって全く間違った反射です。本番環境に入るすべての行をレビューし、AIアウトプットが失敗する具体的な方法に疑いを向けましょう:

  • 巧妙なコードには懐疑的になる。 生成された解決策は、退屈な抽象化が正しかったところで、巧みな抽象化に手を伸ばすことがあります。巧妙さは褒め言葉ではなく、フラグです。
  • インポートが実在することを確認する。 モデルは尤もらしい聞こえるパッケージを幻覚します。正しく見えるインポートが、存在しないパッケージである場合があります — さらに悪いことに、モデルがよく作り出す名前を悪意を持って先取りしたスクワッティングパッケージである可能性もあります。
  • 現実的な障害に対するエラー処理を確認する。 生成コードはハッピーパスをよくカバーし、失敗パスが不十分な傾向があります。ネットワーク呼び出しがタイムアウトしたとき、入力が空だったとき、行が見つからなかったとき、何が起きるかを問いましょう。

これをスキップするコストは具体的です:チームが理解していないコードは、チームが負担できないデバッグコストになります。速い生成によって得られた節約は、誰もレビューしなかった巧妙なブロックをリバースエンジニアリングするために誰かが3日費やした最初の瞬間に消えてしまいます。

フック:忘れてしまうルールをマシンに強制させる

いくつかのルールはレビューに頼るには重要すぎます。それらをフックとしてエンコードしましょう — ライフサイクルの固定されたポイント(ツール呼び出し前、ファイル編集後、コミット前)で実行し、悪いアクションを自動的にブロックする決定論的なコードです。

ハードコードされたシークレットのコミットを拒否するpre-commitフック:

#!/usr/bin/env bash
# .git/hooks/pre-commit
if git diff --cached | grep -E -i '(api[_-]?key|secret|password|token)\s*=\s*["'\''"][^"'\'']+'; then
echo "Blocked: looks like a hard-coded secret. Remove it before committing."
exit 1
fi

フックは、エージェント(または人間)が「絶対に忘れてはならないが、しばしば忘れる」ものを置く場所です。ファイルのルールとは異なり、フックは説き伏せることができません。

オブザーバビリティ:エージェントが実際に何をしたかを見る

見えないものは管理できません。エージェントがより多くの作業を担うにつれて、「何をして、なぜそうしたか」に答えられるようにオブザーバビリティを立ち上げましょう。以下を追跡します:

  • 各実行のトレース — ステップとツール呼び出しの完全なシーケンス。
  • 時系列でのエバリュエーション結果 — 品質の低下が早期に表面化するように。
  • トークンコストとレイテンシ — 静かに高額になったワークフローが見えるように。
  • ドリフト — 明確な原因なしに時間とともに動作が変化すること。

これがなければ、問題を起こしているエージェントはブラックボックスであり、唯一のデバッグツールは推測になります。

見落とされがちな勝利:保守性

今や能力が向上したワークフローを、ずっと避けてきた作業に向けましょう。元の作者しか理解していなかったために「触るには危険すぎる」レガシーコードは、まさにエージェントが真価を発揮する場所です。コードを読み、パターンを推測し、関連するファイルを見つけ、そこにあるものを尊重する変更を加えることができます。

これにより、以前は面倒でリスクが高すぎて実現しなかった作業が解放されます:フレームワークの移行、廃止API の更新、古いテストスイートのモダナイゼーション。誰も四半期を費やしたくなかったマイグレーションが、最後にレビュー可能なPRを返す仕様の明確なバックグラウンドタスクになります。

自分のワークフローをセットアップする

  • 人間のレビュー前に一次レビューステップ(エージェントがdiffをレビュー)を追加する。
  • 生成コードのレビューチェックリストを書く:巧妙な抽象化、幻覚されたインポート、弱いエラー処理。
  • 少なくとも1つのフックを追加する — 上記のシークレットブロッカーから始める。
  • エージェント実行のトレーシングを有効にし、トークンコストとエバリュエーションスコアを時系列で観察する。
  • 「触るには危険すぎる」レガシーコードを1つ選んで、スコープが明確でレビュー可能なタスクとしてエージェントに渡す。