AIエージェントのロールバック戦略 — 変更を安全に巻き戻す
約5分で読めます
AIエージェントのロールバック戦略 — 変更を安全に巻き戻す
AIエージェントが自律的にコードを変更する時代において、「元に戻す」仕組みは生命線だ。本記事では、gitチェックポイント・ランタイム状態復元・段階的ロールバックの3層構造で安全網を構築する方法を解説する。
なぜロールバック戦略が必要か
AIエージェントは人間よりも高速に大量の変更を加える。しかしその変更が常に正しいとは限らない。誤ったリファクタリング、壊れたテスト、意図しない依存関係の削除など、問題は多岐にわたる。手動で差分を確認して戻すのは非現実的であり、自動化されたロールバック機構が必須となる。
第1層:gitチェックポイント戦略
エージェントが作業を開始する前に、必ずgitのチェックポイントを作成する。
# エージェント作業開始前のチェックポイント
git stash push -m "agent-checkpoint-$(date +%Y%m%d-%H%M%S)"
git tag "agent-pre-$(date +%Y%m%d-%H%M%S)"
# 作業完了後、テストが通らなければ即座にロールバック
if ! npm test; then
git reset --hard HEAD~1
git stash pop
echo "ROLLBACK: テスト失敗のため変更を巻き戻しました"
fi
重要なのは、チェックポイントの粒度を適切に設定することだ。ファイル単位ではなく「論理的な変更単位」でコミットを分ける。1つのコミットに複数の無関係な変更を混ぜると、部分的なロールバックが困難になる。
第2層:runtime_status復元
コード変更だけでなく、実行時の状態(設定値、環境変数、データベース状態)も追跡する必要がある。
import json
from datetime import datetime
class RuntimeCheckpoint:
def __init__(self, config_path="runtime_status.json"):
self.config_path = config_path
self.history = []
def save(self, label: str):
"""現在のランタイム状態をスナップショットとして保存"""
snapshot = {
"label": label,
"timestamp": datetime.now().isoformat(),
"env_vars": self._capture_env(),
"config": self._capture_config(),
"db_schema_hash": self._get_schema_hash()
}
self.history.append(snapshot)
with open(self.config_path, "w") as f:
json.dump(self.history, f, indent=2)
def restore(self, label: str):
"""指定ラベルの状態に復元する"""
target = next(s for s in self.history if s["label"] == label)
self._apply_env(target["env_vars"])
self._apply_config(target["config"])
print(f"RESTORED: {label} ({target['timestamp']})")
この仕組みにより、コードのgit履歴だけでなく、ランタイム状態も含めた完全な復元が可能になる。
第3層:段階的ロールバック
すべてを一度に巻き戻すのではなく、影響範囲を段階的に切り分ける。
| ステージ | 対象 | 判定基準 | アクション |
|---|---|---|---|
| Stage 1 | 直近の1コミット | ユニットテスト失敗 | git reset --soft HEAD~1 |
| Stage 2 | 機能ブランチ全体 | 統合テスト失敗 | ブランチ破棄・再作成 |
| Stage 3 | ランタイム設定 | ヘルスチェック異常 | runtime_status復元 |
| Stage 4 | 全変更 | 本番障害 | タグ地点まで完全ロールバック |
実装のポイント
- テスト駆動ロールバック: テストが通らなければ自動で巻き戻す。人間の判断を待たない
- ドライラン機構: ロールバック自体をまずドライランで検証する
- 通知連携: ロールバックが発生したらSlack/メールで即座に通知する
- 監査ログ: いつ・なぜ・どこまで巻き戻したかを記録する
よくある失敗パターン
- チェックポイントを作り忘れてエージェントを実行してしまう
- ロールバック対象にデータベースのマイグレーションを含めていない
- 環境変数の変更を追跡していない
- 部分ロールバック後の整合性チェックを省略する
まとめ
AIエージェントのロールバック戦略は「git + ランタイム + 段階的判断」の3層で構築する。自動テストと組み合わせることで、エージェントの自律性を維持しながら安全性を確保できる。
関連記事
A
Agentive 編集部
AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。