ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-06-02上級

本番に触れる前にエージェントの操作を空振りさせる — 副作用ゼロのドライラン層をどう設計するか

シャドウ実行やカナリアでも防げない事故があります。エージェントが外部APIに初めて触れる、その一回目を安全にするための「副作用ゼロのドライラン層」を、Antigravity の並列エージェントに後付けで差し込む設計と実装を、6サイト自律運営の実数値とともに共有します。

antigravity435エージェント64ドライラン副作用2運用設計23アーキテクチャ9信頼性5

プレミアム記事

ある日、Remote Config の本番値を書き換えるエージェントを走らせていて、肝が冷えました。意図したのは「キャンペーンフラグを1つ true にする」だけだったのに、エージェントは古いキーをいくつか掃除しようとして、まだ生きている設定まで消す計画を立てていたのです。幸いそのときは手元のログを見ていて、適用される直前に止められました。けれど、もし夜間の自動ジョブだったら、運営している壁紙アプリ群の表示が一斉に壊れていたかもしれません。

私は個人開発で iOS / Android アプリを作りながら、運用の定型作業の多くを Antigravity の並列エージェントに任せています。ただ、エージェントが「外部に対して何かを変える」操作だけは、ずっと怖さが抜けませんでした。コードの変更ならレビューもロールバックもできます。けれど AdMob の設定、App Store Connect のメタデータ、Remote Config の本番値、Cloudflare の DNS — これらは一度叩いてしまうと、なかったことにするのが難しいものばかりです。

木工の世界に「測るのは何度でも、切るのは一度だけ」という言い回しがあります。寸法は納得がいくまで確かめてよい、けれど鋸を入れるのは最後の一度だけ、という考え方です。エージェントに外部操作を任せるようになってから、私はこの感覚を仕組みとして取り戻したいと思うようになりました。このノートは、そのために組んだ「副作用ゼロのドライラン層」の設計と実装の記録です。実際に動く TypeScript の最小実装を載せていますので、同じように外部副作用を伴うエージェントを運用している方の参考になればと思います。

シャドウ実行やカナリアでは「一回目」を守れない

エージェントの安全装置として、シャドウ実行やカナリアはよく知られています。私も最初はそれで足りると思っていました。けれど運用してみると、どちらも「初めて本番に触れる、その一回目」を守ってはくれないことに気づきました。

シャドウ実行は、エージェントを本番と並走させつつ、その出力を実際には反映しない手法です。観察には向いていますが、副作用を伴う操作にはそのまま使えません。「Remote Config を書き換える」という操作のシャドウは、書き換えないなら観察になりませんし、書き換えるなら本番が変わってしまいます。読み取り中心のエージェントには有効でも、書き込みエージェントの一回目は守れないのです。

カナリアは、変更を一部のユーザーや一部の対象にだけ先に適用し、問題なければ広げていく手法です。これは「適用後」に効きます。けれど私が怖かったのは、適用そのものが間違っているケースでした。さきほどの Remote Config の例で言えば、「生きている設定を消す」という計画自体が誤りで、それを1%に適用しようが100%に適用しようが、間違いは間違いです。カナリアは正しい変更の影響範囲を絞りますが、誤った変更を事前に弾いてはくれません。

私に必要だったのは、適用の前に「これから何が起きるか」を完全な形で、しかし副作用なしに、目で確かめられる仕組みでした。これがドライランです。エンジニアリングの言葉でいえば、terraform planterraform apply の関係に近いものを、エージェントの任意の外部操作に対して用意したい、ということでした。

ドライランが成立する条件は「副作用の集約」

ドライランを後から足そうとすると、たいてい最初の壁にぶつかります。副作用がコードのあちこちに散らばっていて、「ここを止めればすべての変更を止められる」という一点が存在しないのです。エージェントのツール実装が、それぞれ勝手に fetch を呼んだり SDK を叩いたりしていると、ドライランのために全箇所へ条件分岐を足すことになり、抜け漏れが必ず出ます。一箇所でも素通りすれば、ドライランは嘘をつきます。

ですから設計の出発点は、ドライランの仕組みそのものではなく、外部に変化を起こす操作を一箇所に集めることです。私はこれを「副作用境界(SideEffectBoundary)」と呼んでいます。エージェントのツールは、副作用を自分で実行せず、必ずこの境界に「こういう変更をしたい」と申告する。境界は、本番モードならそれを実行し、ドライランモードなら実行せずに記録だけする。この一本化ができて初めて、ドライランは信頼できるものになります。

// effect.ts — 外部副作用を表す「計画されたアクション」の型
export type EffectKind =
  | "http"          // 外部APIへの書き込みリクエスト
  | "kv-write"      // KV / Remote Config などの書き込み
  | "file-write"    // リポジトリやアセットの書き込み
  | "delete";       // 何かの削除(最も危険なので独立させる)
 
export interface Effect {
  kind: EffectKind;
  // 人間が読んで「何が起きるか」を理解できる一行サマリ
  summary: string;
  // 実際に実行するときに使う、構造化された詳細
  target: string;                 // 例: "remote-config/campaign_flag"
  before?: unknown;               // 変更前の値(取得できる場合のみ)
  after?: unknown;                // 変更後の値
  // 本番適用時に呼ばれる実行関数。ドライランでは呼ばれない
  commit: () => Promise<void>;
}

ポイントは、Effect が「やりたいことの宣言」と「実際にやる関数(commit)」を一つにまとめている点です。宣言部分はドライランで人間に見せるために使い、commit は本番適用のときだけ呼びます。両者を同じオブジェクトに閉じ込めることで、「計画では消すと言っていたのに、実行では別の値を消した」という乖離が起きにくくなります。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
外部副作用を一箇所に集める SideEffectBoundary と、計画を記録する Effect レコーダーの全実装コード(TypeScript)を取得できます
ドライランがシャドウ実行・カナリアと何を解決するかが違うのか、状況別にどれを選ぶかの判断基準が分かります
ドライラン層を入れてから、エージェントの本番誤操作が月あたり数件からゼロに変わった、運用の実数値と落とし穴を学べます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Agents & Manager2026-06-17
Managed Agents の無人バッチを再実行で壊さない — 冪等性とチェックポイントの設計
Antigravity 2.0 の Managed Agents API で夜間バッチを組むと、途中失敗からの再実行が必ず問題になります。二重実行で投稿が重複した失敗を起点に、冪等キー・チェックポイントストア・再開ロジックの実装を、個人開発の運用実数値とともに共有します。
Agents & Manager2026-06-12
依存ライブラリの更新を Antigravity エージェントに任せる運用設計 — リスク階層・検証・巻き戻し
溜まり続ける依存更新の通知を、Antigravity のエージェントにどこまで任せられるか。semver を実績で補正するリスク4階層、worktree によるロット隔離、検証と巻き戻しの定型化まで、複数アプリ運用で固めた設計を実物のスクリプトつきで共有します。
Agents & Manager2026-04-29
Antigravity エージェントの『失敗から学ばせる』を仕組み化する — 失敗履歴を次のタスクに活かす設計
Antigravity エージェントは同じ失敗を繰り返すことがあります。失敗履歴を構造化して次の実行に渡すことで、個人開発の運用コストを抑えながら賢く育てる方法を、廣川政樹の運用例とともに解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →