Agentive
AIエージェント活用

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全変更本番障害タグ地点まで完全ロールバック

実装のポイント

  1. テスト駆動ロールバック: テストが通らなければ自動で巻き戻す。人間の判断を待たない
  2. ドライラン機構: ロールバック自体をまずドライランで検証する
  3. 通知連携: ロールバックが発生したらSlack/メールで即座に通知する
  4. 監査ログ: いつ・なぜ・どこまで巻き戻したかを記録する

よくある失敗パターン

  • チェックポイントを作り忘れてエージェントを実行してしまう
  • ロールバック対象にデータベースのマイグレーションを含めていない
  • 環境変数の変更を追跡していない
  • 部分ロールバック後の整合性チェックを省略する

まとめ

AIエージェントのロールバック戦略は「git + ランタイム + 段階的判断」の3層で構築する。自動テストと組み合わせることで、エージェントの自律性を維持しながら安全性を確保できる。

関連記事

A

Agentive 編集部

AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。