何が起きたか:Cloudflareがブランチごとの独立環境「Worker Previews」を発表

Cloudflareは2026年9月22日、Gitブランチごとに本番環境に近い独立環境を作成できる新機能「Worker Previews」を発表しました[1]。本機能は、AIエージェントや開発者が変更内容を本番環境へ投入する前に安全に検証するための基盤です[1]。従来の仕組みと異なり、同じWorkerの配下で本番環境と並行して各ブランチ固有の環境を作成できます[2]。各環境には固有のコードや設定、専用URL、可観測性、状態が割り当てられます[2]。

Worker Previewsの導入手順は簡潔です。開発者は公式CLIツールのWrangler 4.135.0以降をプロジェクトに導入し、設定ファイルへpreviewsブロックを追加します[3]。その上で対象のGitブランチから「npx wrangler preview」コマンドを実行します[3]。新規作成のWorkerでも既存のWorkerでも、本番へ先行デプロイすることなくPreviewを作成できます[4]。また、Gitリポジトリと接続されたWorkers Buildsを利用すれば、コードのpush時にPreviewが自動作成されます[4]。開発者はローカル環境からも既存のCIワークフローからも同一コマンドでデプロイできます[10]。

作成されたPreview環境には、ブランチごとに安定した専用URLが発行されます[5]。変数や秘密情報であるシークレット、各種リソースのバインディングは本番設定から分離されます[5]。さらにカスタムドメインやアクセス制御機能のCloudflare Accessにも対応しています[5]。ログやエラー、メトリクス、トレースといった運用監視機能であるWorkers Observabilityも、本番環境から独立して利用可能です[5]。

Worker PreviewsがサポートするWorkersの機能は広範です。環境変数やシークレットのほか、KVやD1、R2、Hyperdrive、Vectorize、Analytics Engine、Pipelines、Queue producer、Secrets Store、Durable Objects、Containersなどの各種リソースを構成できます[6]。さらにAI処理やヘッドレスブラウザ操作を行うBrowser Run、Images、Stream、Media、動的にWorkerを読み込むDynamic Worker Loaders、Version MetadataといったAPIバインディングも幅広くサポートされています[6]。

各Preview環境には、最新のデプロイ結果を指す安定したPreview URLと、特定のデプロイを恒久的に指すDeployment URLの2種類が発行されます[8, 12, 15]。これにより、最新状態を継続的に確認しながら、プルリクエストのレビュー時には特定バージョンの動作を固定して検証できます[14]。Preview内の設定は本番設定を自動継承せず、設定ファイルのpreviewsブロックを基準に構築され、個別ブランチごとに上書きすることも可能です[9]。同じWorkerの管理下でブランチごとに独立環境を立ち上げることで、共有ステージング環境の競合を防ぎます[7, 11, 13]。

なぜ今なのか:AIエージェントの急増と「ADLC」への開発パラダイム転換

Cloudflareが今回Worker Previewsを提供した背景には、AIエージェントの普及に伴うコード生成量の急増があります[16]。エージェントの支援によって一度に生成されるコード量や変更規模が拡大し、本番リリース前に検証すべき対象範囲が大幅に広がりました[16]。

開発現場におけるAIの浸透は各種調査でも裏付けられています。Anthropicが実施した2026年の調査によると、回答した組織の約90%がコーディング支援にAIを利用しています[17]。さらに、コード生成、ドキュメンテーション、テスト、コードレビューの各工程において、それぞれ59%の組織が時間を創出できたと回答しました[17]。また、OpenAIの社内事例では、エージェント中心の開発手法を導入することで、3人のエンジニアにより約5カ月でリポジトリが約100万行となり、約1,500件のプルリクエストが作成・マージされたと報告されています[18, 24]。

コードの生産量が飛躍的に向上した一方で、従来の開発プロセスは検証工程で深刻な停滞に直面しています。静的なコードレビューだけでエージェントが生成したコードの正しさを判断することは極めて困難です[21]。認証や認可、OAuthリダイレクト、Cookie、CORS、状態変更、データベースのマイグレーション、UIの挙動など、実際に動かしてみなければ検知できない問題が数多く存在します[21]。

こうした課題に対し、Cloudflareは「ADLC(Agent Development Lifecycle)」という新たな開発概念を提唱しています[19]。ADLCは、コードの実装だけでなく、レビュー、テスト、デプロイ、運用、障害修正に至る全工程を、エージェントが扱えるようプログラム可能かつ水平スケール可能にする構想です[19]。エージェントの実装速度を人間のレビュー能力に合わせて制限するのではなく、隔離環境と自動検証を組み合わせて処理能力全体を拡張する狙いがあると解釈されています[22]。従来の共有ステージング環境では複数人の変更が衝突していましたが、ブランチごとの独立環境により並列検証が可能になります[20, 23]。

後輩AIがコードを速く書けるようになったなら、テストもローカルで済ませればいい気がするんですが、なぜインフラ側の独立環境が求められるんですか?

先輩ローカルの単体テストだけでは、OAuth連携やCookieの挙動、分散状態の同期といった実行時特有の問題までは拾いきれないからだね。

後輩たしかに、認証や外部連携は実際にデプロイしないと動かない部分が多いです。でも、従来のステージング環境を共有すれば足りませんか?

先輩生成されるコード量が増えると、1つのステージング環境では順番待ちや設定の上書き競合が起きて、開発の流れが止まってしまうんだよ。

後輩だから環境そのものをブランチ単位で並列に量産して、検証の詰まりを解消しようとしているわけですね。

何が変わるのか:従来手法との違いとリソース分離の仕組み

従来のCloudflare Workersにおける検証手法と比較すると、Worker Previewsの技術的な位置づけが明確になります。これまで提供されていた「Version URLs」は、アップロードされた単一のWorkerバージョンを実行する機能でした[25]。しかし、Version URLsは本番用に設定されたリソースをそのまま参照して動作するため、ブランチ単位でのリソース分離や独立した検証環境を構築することはできませんでした[25]。そのため、本番データへの誤変更や状態共有のリスクが存在し、プルリクエストごとの安全なテストには適していませんでした[26]。

一方、別名環境を作成する「Wrangler environments」は、本番用とは別に「my-worker-staging」といった独立したWorkerを新設するアプローチです[27]。この方式は永続的な開発環境やステージング環境の運用には向いているものの、ブランチごとに無数のWorkerを作成・管理することは運用の煩雑さを招きます[27]。Worker Previewsは、単一のWorkerの傘下において、Gitブランチごとに軽量な本番類似環境を柔軟に作成できる点が大きく異なります[26, 27]。

リソースごとに異なる分離境界:自動分離と手動設定の切り分け

Worker Previewsを利用する上で重要なのは、連携するリソースによって分離の挙動が異なる点です。状態を保持する「Durable Objects」や、コンテナを実行する「Containers」は、Previewを作成するたびに専用の名前空間、ストレージ、コンテナアプリケーション、インスタンスが自動的にプロビジョニングされます[28, 29, 32, 35]。これにより、セッション管理やメモリ状態、同時実行処理、内部マイグレーションのテストを行っても、本番環境や他のブランチに影響を与える心配がありません[29, 32, 35]。

これに対し、アカウントレベルで管理されるリソース群は自動的には分離されません。キーバリューストアのKV、リレーショナルデータベースのD1、オブジェクトストレージのR2、Hyperdrive、Vectorize、Analytics Engine、Pipelines、Secrets Storeなどは、設定ファイルで明示的にPreview用の別リソースを指定しなければデータを共有してしまいます[28, 30, 33, 36, 37]。本番データが安全に自動複製されるわけではないため、Preview用の安全なデータベースやテスト用APIキーへ明示的に差し替える運用が必要です[38]。設定を誤ると本番データへの書き込みが発生する注意点があります[38]。

実行時の状態を監視するWorkers Observability(ログ、メトリクス、トレース、Tail Workers)は、Preview環境ごとに独立して設定可能です[31, 34]。本番環境の監視設定に影響を与えることなく、Preview環境だけでサンプリング率を100%に引き上げて詳細なテレメトリデータを収集できます[31, 34]。

リソースごとの分離仕様の違いは以下の通りです[28, 29, 30, 32, 33, 57, 65, 67, 68]。

リソース種別分離方式挙動の詳細
Durable Objects自動分離Previewごとに固有の名前空間とストレージを自動作成 [28, 29]
Containers自動分離Previewごとに専用のコンテナアプリとインスタンスを自動作成 [28, 29]
KV / D1 / R2手動設定(別リソース指定)同一IDの場合は共有。設定ファイルで別リソースをバインドして分離 [28, 30, 33]
Hyperdrive / Vectorize手動設定(別リソース指定)明示的にPreview用の安全な接続先を指定して分離 [28, 30]
Workers Observability個別独立ログ、トレース、メトリクスを本番から分離し高サンプリング率で取得可能 [31]
Service Binding未分離(提供時点の制約)接続先Workerの本番デプロイメントを呼び出す [57]
Queue送信のみ可能(受信未分離)送信は可能だがPreviewをconsumerに指定不可。本番Queueへの混入に注意 [65, 66]
Workflow未分離(既存利用)既存のWorkflowを利用し、Preview専用Workflowは自動作成されない [67]
Cron Trigger / ルート未分離(本番対象)本番環境のみが対象。Previewのscheduledハンドラーは実行されない [68]

後輩Durable Objectsは自動で新しい箱が作られるのに、D1やKVが自動分離されないのはどうしてですか?

先輩Durable ObjectsはWorkerのコードとライフサイクルが強く結びついているけれど、データベースやストレージはアカウント全体で共有されるリソースだからだね。

後輩ということは、設定を書き換えないままテストを実行すると、Previewから本番のデータベースを更新してしまう危険もあるわけですか?

先輩その通りだよ。本番データを勝手に複製してくれる仕組みではないから、設定ファイルで検証用リソースを明示的に指定するルール作りが欠かせないね。

後輩自動で守られる領域と、人間の設定責任が残る領域の境界をチーム内で正しく把握しておく必要がありますね。

具体的に何ができるのか:実践的なユースケースと検証パターン

Worker Previewsを活用することで、従来のローカルテストや静的解析では難しかった多角的な実行時検証が可能になります[39]。実際のリクエストに対するHTTPレスポンスの検証、Webブラウザを用いたUI表示の確認、ログインやOAuth認可フローの疎通、Durable Objectsを組み込んだステートフルな処理の検証、コールドスタートやウォーム時の性能測定まで、多岐にわたるシナリオを本番投入前に網羅できます[39, 40, 41]。状態を持つアプリケーションでも、失敗の影響を本番や他ブランチへ波及させずに安全な試行錯誤が行えます[41, 43]。

Web UI・認証認可・データベース移行の事前動作検証

代表的なユースケースの一つが、認証プロバイダーやCookie、CORS(Cross-Origin Resource Sharing)、OAuthリダイレクトの事前検証です[40, 44]。Preview環境をカスタムドメインで公開し、Cloudflare Accessを組み合わせることで、本番と同一のホスト名体系およびアクセス制御下で認証フローをテストできます[44]。これにより、ローカル環境では見落としがちだったコールバックURLの不一致やCookieの属性エラーを未然に防ぎ、手戻りを大幅に削減できると期待されています[44, 47]。

リレーショナルデータベースD1のスキーマ移行(マイグレーション)検証でも効果を発揮します。Wrangler設定ファイルのpreviewsブロックで検証用またはステージング用のD1データベースをバインドし、マイグレーションスクリプトを適用してからPreviewをデプロイします[45]。本番データを一切変更することなく、新規テーブルの作成やクエリの互換性を安全にテストできます[45]。Cloudflare自身の社内基盤である「CloudflareOS」と「Gatekeepers」の開発でも、変更ごとにPreviewを構築し、OAuthコールバックや権限管理、承認フロー、状態遷移の一連の流れを結合テストしています[46]。

CI/CD自動E2Eテスト・性能比較・AIエージェント自律デバッグ

CI/CD(コードの変更を継続的に統合し、テストや配備を自動化する仕組み)との統合により、テスト自動化が進みます。Gitリポジトリへのpushを契機にWorkers BuildsがPreviewを自動生成し、GitHub ActionsなどからPreview URLに対してHTTPプローブやPlaywrightによるE2E(画面操作を含め、システム全体の動作を確かめるテスト)を自動実行できます[49]。ブラウザの操作画面をスクリーンショットとしてキャプチャし、結果をプルリクエストのコメントへ自動投稿する運用も容易です[49]。また、複数のブランチに異なる設定を施して並列デプロイすることで、Sandbox環境におけるコールドスタート時間やウォーム実行時のレイテンシを直接比較し、最適な構成を迅速に特定できます[48]。

さらに進んだ活用パターンが、AIエージェントによる自律的なデバッグループの構築です[42, 50, 51]。AIエージェントは自らPreview環境をデプロイし、Playwright MCP(AIと外部ツールを接続する規格であるModel Context Protocol)を通じてヘッドレスブラウザでPreview URLを操作します[50, 51]。ログイン画面のクリックやDOM(画面上の要素をプログラムから扱う仕組み)イベントの取得、画面キャプチャを行いながら、Workers Observability MCP(AIと外部ツールを接続する規格)サーバを経由して実行時トレースやエラーログを照会します[50, 51]。エージェント自身が障害原因を特定してコードを修正し、再度Previewへデプロイして検証を完了させるという自律的なループがブランチ内で完結します[50, 51]。

AIエージェントによる自律的な検証と修正のサイクルは以下の流れで進行します[50, 51]。

後輩AIエージェントがブラウザを操作してログまで調べるのって、開発者が手動でやっていた動作確認を丸ごと任せるイメージですか?

先輩その通りだね。これまでは人間がプレビュー画面を開いて、動かない原因をログから探してエージェントに伝えていたけれど、その往復を自動化できるんだ。

後輩エージェントが画面崩れやエラーを自分で見て、直して、再デプロイまで完結させてくれるなら、レビュー依頼が届く時点では動作確認済みになりますね。

先輩ただし、エージェントが自由に外部サービスを叩ける状態だと予期しない副作用も起きるから、検証環境の安全設計が前提になるよ。

後輩自律性を高めるほど、環境側の権限分離が重要になってくるわけですね。

誰に影響するのか:開発者からQA・セキュリティ担当者までの恩恵

Worker Previewsの導入は、開発組織における多様な役割に恩恵をもたらします。個々の開発者にとっては、共有ステージング環境の空きを待つ必要がなくなり、複数ブランチで並列作業を進められるようになります[23]。ローカル環境では再現が難しい認証フローやCORS設定、状態変化を本番同等の環境で即座に確かめられるため、実装から検証までの手戻りを大幅に低減できると期待されています[47]。また、AIエージェントにとっては、ブランチの隔離境界の中で安全に自律デバッグを反復できる実行基盤となります[51]。

コードレビューを担当するエンジニアにとっても、作業効率と検証精度の向上が見込めます。プルリクエストごとに最新状態を追従するPreview URLと、特定デプロイを指すDeployment URLが共有されるため、コード差分だけでなく実際の画面表示やAPIのレスポンス、実行時ログを突き合わせて確認できます[52]。これにより、レビュー作業の迅速化と再現性の確保に寄与すると考えられています[52]。

QA(品質保証)やSRE(サイト信頼性エンジニア)は、本番テレメトリに一切ノイズを与えることなく、Preview専用のログ、エラー、メトリクス、トレースを100%のサンプリング率で取得できます[53]。リリース前の障害再現や複数ブランチ間の性能ベンチマーク、回帰テストの自動化が大幅に容易になると考えられます[53]。

企業のセキュリティ担当者にとっても、環境分離とアクセス制御の強化は大きな利点です。変数やシークレット、バインディングが本番環境から分離されているため、開発中の誤操作による本番への影響を抑えられますが、アカウントレベルのリソースやService Bindingなどは別途分離設定が必要です[54]。ただし、Preview URLはデフォルトでパブリックに公開される仕様となっているため、社外秘の情報や未公開機能を扱う場合はCloudflare Accessを用いた認証設定が不可欠です[54, 55]。AIエージェントに自動検証を行わせる際も、公開URLやトレースに含まれる機密情報の漏洩を防ぐため、最小権限の資格情報割り当てと厳格なアクセス制御が求められると考えられています[56]。

導入前の確認点:提供開始時点における機能制限と運用の注意点

Worker Previewsの導入を検討する際には、提供開始時点における技術的な制約事項を正確に理解しておく必要があります。最大の制限事項は、複数Worker間の通信に用いられる「Service Binding」の挙動です。現時点では、Preview環境からService Binding経由で他のWorkerを呼び出すと、接続先Workerの「本番デプロイメント」が呼び出されます[57, 58, 59, 63]。相手側Workerのブランチ環境に自動バインドされるわけではないため、複数Workerで構成される分散アプリケーション全体の完全なブランチ分離は行えません[57, 60, 62]。接続先Workerが本番デプロイメントの場合、テストが本番コードやデータ経路を通るため、完全な再現性は保証されません[64]。

非同期処理やイベント駆動型の機能にも制約が存在します。メッセージキューであるQueueは、Previewからメッセージを送信(producer)することは可能ですが、Previewをメッセージの受信者(consumer)として登録することはできません[57, 65]。Queueのconsumerはシステム全体で1つに限定されているため、Previewから本番Queueへメッセージを送信すると本番のconsumerによって処理されてしまいます[65, 66]。完全な隔離テストを行うには、Preview専用のキューを別途用意しなければなりません[66]。

さらに、Workflow bindingはPreview専用のWorkflowを自動生成せず、既存のデプロイ済みWorkflowを利用する仕様です[57, 67]。また、定時実行を行うCron TriggerやURLルーティング機能は本番環境のみを対象としており、Preview環境のscheduledハンドラーが自動実行されることはありません[57, 68]。したがって、非同期ワークフローや定期バッチ、複数サービス連携を含むシステムでは、Preview環境でのテスト結果だけをもって本番投入後の安全性を断定することはできず、個別の検証計画が必要とされています[61, 69]。

クォータ上限・長寿命環境の課題・コスト管理

環境の保持数やデプロイ回数にはプランごとの上限が設けられています。Freeプランでは1つのWorkerにつき最大100件のPreviewを保持可能で、Paidプランでは最大500件まで保持できます[70, 71, 72, 73, 74, 75]。また、1つのPreviewあたりに保持できるデプロイ履歴の上限はいずれのプランも100件です[70, 71, 72, 73, 74, 75]。これらの一連の上限に達した場合、Cloudflareのシステムは最も古いPreviewやデプロイ履歴を自動的に削除して空きを作成します[76]。

プランごとの保持上限と自動削除の仕様は以下の通りです[70, 71, 76]。

項目FreeプランPaidプラン上限到達時のシステム挙動
1 Workerあたりの保持可能Preview数最大100件 [70]最大500件 [70]最も古いPreviewを自動削除 [76]
1 Previewあたりのデプロイ履歴数最大100件 [70]最大100件 [70]最も古いデプロイ履歴を自動削除 [76]

運用面では、長期間維持する環境の扱いに留意する必要があります。長期間維持するステージング環境やQA環境への対応は、今後の課題として挙げられています[77]。恒久的な検証環境では自動削除のリスクを避ける管理が求められるため、従来通りのWrangler environmentsを用いた別名Worker構成の方が適する場合があると考えられています[78]。また、費用面においてはPreview固有の料金体系が明示されていないため、利用量に応じて費用が増える可能性があります[79]。AIエージェントによる自動デプロイやテストを頻繁に実行すると、ブランチ数に比例してインフラ利用料が増加する可能性があるため、適切なコスト監視が推奨されます[79]。

後輩Preview環境でテストが通ったからといって、本番デプロイも100%成功するとは言い切れないんですか?

先輩Service Bindingが接続先Workerの本番環境を呼んでしまう仕様があるからね。外部Workerとの連携部分は完全には隔離されていないんだよ。

後輩ということは、非同期処理のQueueにメッセージを流したら、本番のコンシューマーが拾って処理してしまうこともあり得ると。

先輩その通りだね。単一Worker内のロジック検証には優れているけれど、マイクロサービス全体の結合テストにはまだ制約が残っているんだ。

後輩どの処理がPreview内で閉じていて、どの処理が本番リソースに繋がっているのか、境界を意識してテストを設計する必要がありますね。