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

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

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

antigravity464エージェント74ドライラン副作用運用設計27アーキテクチャ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 plan と terraform 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-08-16
Canary 継続配信になった Android 17 で、エージェントには「報告しない条件」から先に渡しました
Android 17 が Developer Preview をやめて Canary の継続配信に切り替わり、検証の締め切りが自分の側に移りました。更新を追う担当をエージェントへ渡すにあたり、報告の条件ではなく沈黙の条件から設計した記録です。
◈ Agents & Manager2026-06-01
並行エージェントのトークンコストを予算で抑える — 暴走を止めるバジェットガードの設計
複数のエージェントを並行で走らせると、トークン費は気づかないうちに膨らみます。トークンを減らす最適化ではなく、予算で消費を遮断するガバナンス層を Antigravity の並列エージェントに組み込む設計と実装を、運用で決めた閾値とともに共有します。
◈ Agents & Manager2026-04-27
Antigravity を個人開発の「夜のもう1人」として迎え入れる運用モデル
Antigravity のエージェントを、個人開発者にとっての「夜のもう1人」として運用するための設計指針。タスクの渡し方・境界線の引き方・朝の3点確認をスクリプトにする方法まで、実際に運用して整えてきた手順を書き残します。