開発者ブログ

みんなで麻雀帳などWEBアプリのアップデート情報や、開発で活用しているAIツールでの試行錯誤の記録を発信します。

※当ブログの内容や技術情報については、公開時点の情報や個人の見解・見識に基づくものであり、特定の組織や団体を代表するものではありません。また、掲載情報の利用については自己の責任においてお願いいたします。

AI/技術情報

「しれっとデータ削除」「勝手に本番デプロイ」AIの暴走を防ぐための3つの施策

🤖 自律型AIと開発する楽しさ、そして背中合わせの恐怖


最近のAI開発ツール(AIエージェント)は要件を伝えるだけで、コードの修正からテストコードの追加、さらには本番サーバーへのデプロイまで自律的にこなしてくれて、日々進化をしています。

しかし、その便利さの裏には「恐怖」も潜んでいます。
「テストデータをクリーンにするついでに、本番データベースのデータをしれっと物理削除してしまった」
「十分に検証が終わっていないコードを、確認なしで勝手に本番環境へデプロイしてしまった」

こうしたAIの「良かれと思ってやった暴走」は、人間が開発を管理する上で最も恐ろしいシナリオです。実際、私も自律型AIツールと日々協働する中で、冷や汗をかくような場面を経験したことも・・・

そこで今回は、AIがどれだけ自律的に動くようになっても、本番環境のデータや稼働状態を絶対に壊さないようにするための「3つの防衛施策」をご紹介します。個人開発者からチーム開発まで、AIエージェントを導入する際の参考になれば幸いです。


  • --



🛡️ 施策1:AIエディタ設定ファイルでのルール縛り


最初の防衛ラインは、AIツール自身に「やってはいけないこと」や「遵守すべき大原則」を最初に叩き込んでおくことです。
「多くのAI開発ツール(Antigravity、Cursor、Cline、Claude Codeなど)では、プロジェクトのルートディレクトリにルール設定用のテキストファイルを置いておくことができます(ツールによってはカスタムインストラクション設定などを利用します)。」
AIエージェントは作業を開始する前に必ずこれらのファイルを読み込むため、ここに強力な制約条件を記述しておきます。

# 私が設定している主なルール内容


  • 本番データの削除は事前承認が必須:データを物理削除するような処理を行う場合は、必ず日本語で「削除する対象」と「その影響範囲」を開発者(人間)に明示的に確認し、承認を得るステップを踏むこと。

  • バックアップの最優先化:データベースの操作やソースコードの大きな変更を行う際は、作業前に必ず【バックアップ取得 ➔ 作業開始】の順序を徹底すること。作業後にバックアップをとるのでは意味がありません。

  • 破壊的コマンドの制限:rm -rf などの破壊的なシェルコマンドは使用しないようにすること。

  • 環境変数の秘匿: 本番環境のトークンやパスワードが含まれる .env などのファイルを、ターミナル上にすら不用意に出力(cat 等)しないこと。(Git管理外にするのは大前提)



このようにルールを明文化しておくことで、AIが「気が利く作業員」として暴走し、勝手にデータやファイルを吹き飛ばすようなリスクを大幅に下げることができます。


  • --



📋 施策2:本番デプロイ手順書(DEPLOYMENT.md)の明文化とAIへの読み込み


2つ目の施策は、プロジェクトのリポジトリ内に本番デプロイ専用の手順書(`DEPLOYMENT.md`)を用意し、AIにそれを忠実に実行させることです。

AIは非常に頭が良いですが、時に「自己流のやり方」で作業をショートカットしようとすることもあります。そこで、デプロイやシステム変更の標準フローを厳密に文書化し、リポジトリにコミットしておきます。

この手順書を書く上でのポイントは、特定のプロジェクトに依存しすぎない「汎用的なステップ」で整理することです。他の開発者や異なるAIツールでも参考にできるような、以下のような標準的な流れを記述します。

# DEPLOYMENT.mdの基本構成イメージ

1. 前提条件の確認(ローカルの変更がすべてリモートにプッシュされているか、テストが完了しているか)
2. 本番データベースのバックアップ取得(自動スナップショットのトリガーや、安全なクラウドストレージへのダンプエクスポートを確実に実行し、データ破壊に備える)」
3. 本番サーバーのコード更新(リモートから最新コードを取り込む)
4. データベースのマイグレーション適用(必要に応じてスキーマ変更などの反映)
5. 静的ファイルなどの集約と、アプリケーションサービスの再起動
6. 稼働ステータスとログの確認
7. 動作確認の実施と確認結果の報告

AIにデプロイを指示する際は、まず「この `DEPLOYMENT.md` に書かれているステップを順番に踏んで実行して」と指示します。AIはドキュメントの指示に従うのが非常に得意なため、この手順書があるだけで、デプロイ漏れやバックアップ忘れといった人為的(あるいはAI的)なミスがほぼゼロになります。


  • --



🤝 施策3:「Human in the Loop(人間の介入)」を強制する確認フロー


最後の防衛ラインは、ツールやシステムの連携設計において、「ここから先は人間の承認ボタンがないと進めない」という関門(ゲート)をあえて物理的に設けることです。

自律型AIは素晴らしい技術ですが、すべての権限をAIに委ねてしまうのは現時点ではリスクが高すぎます。特に以下のような操作の前後には、人間が介入する余地を残します。


  • Gitでの本番環境へのプッシュ時:コードの変更はAIが行っても、本番への反映(Gitのメインブランチへのマージやプッシュ)は人間がレビューして手動で行うか、明示的に人間の承認を得ること。

  • 本番環境内での実行コマンドの承認: Git pullなど、AIがターミナルでコマンドを叩く際、ツールの「実行承認(Yes/No)」を人間が目視で確認し承認をすること。



さらに一歩進んだ防衛策として、「AIに渡す権限そのものを最小限にする」ことも重要です。万が一AIが暴走しても本番環境のコア(ネットワーク設定や認証基盤など)を吹き飛ばせないよう、AIが利用するAPIキーやIAMロールの権限をあらかじめ絞っておいたり、本番への反映は必ずGitHubのPull Requestを経由させ、人間のマージ(CI/CDの着火)を必須にしたりする「物理的な関門」を設けるのが最強のセーフティネットになります。


  • --



💡 まとめ:人とAIが安全に協働するための「境界線」


AIエージェントとの協働は、開発スピードを数倍〜数十倍に引き上げてくれる魔法のような体験です。しかし、彼らは「言われたことを愚直に、超高速で実行する」だけでなく、「禁止されていなかったら実行する」という特性を持っています。だからこそ、人間がしっかりと安全な枠組み(サンドボックス)を用意してあげることが不可欠です。

1. 設定ファイルによる「ルールの強制」
2. ドキュメントによる「手順の標準化」
3. 人間による「最終承認の実行」

この3つのバランスをとることで、AIを恐れることなく、最も強力な「チームリーダー」として迎え入れ、安全に大きな挑戦を続けられるようになります。皆さんの開発環境でも、ぜひ安全第一の「AIガイドライン」を作ってみてください!

← 次の記事 AI開発でのデバッグ、不具合修正のコツ
前の記事 → 作業者からチームリーダーになったAIツール