Cloudflare Workers
概要
Cloudflare Workers を使うと、JavaScript、TypeScript、WebAssembly を 1 つのリージョンではなく Cloudflare のグローバルネットワーク(300 を超える都市)上で実行できます。各リクエストは 1 ミリ秒をはるかに下回る速さで起動する軽量な V8 アイソレートの中で実行されるため、実質的にコールドスタートがありません。fetch ハンドラーを書き、コマンド 1 つでデプロイすれば、コードは自動的にすべてのユーザーの近くで動きます。
強み
- フルコンテナではなく V8 アイソレートを使うため、コールドスタートがほぼゼロ。
- デフォルトでグローバル。コードはすべての Cloudflare ロケーションに一斉にデプロイされる。
- 寛大な無料枠。アイドル時間ではなく、リクエストと CPU 時間に対して課金される。
- D1、R2、KV、Queues、Durable Objects、Workers AI へのファーストクラスのバインディング。
- 単一の
wranglerCLI が開発、シークレット、デプロイをすべて扱う。
トレードオフ
- ランタイムは Node.js ではないため、ネイティブ依存やファイルシステム依存を持つ多くの npm パッケージは動きません(ただし Node 互換性は向上しつつあります)。
- リクエストごとの CPU 時間とメモリに上限があるため、重い計算処理には不向きです。
- ローカルディスクや長命なプロセス内状態はなく、代わりにバインディングを使います。
- 分散実行のため、リージョンをまたいだステップ実行デバッグは難しくなります。
使いどころ
高速でグローバルに分散された API、エッジミドルウェア、認証チェック、リダイレクト、Webhook ハンドラー、あるいは Cloudflare のストレージや AI バインディングに依存するフルスタックバックエンドが欲しいときに Workers を使いましょう。
バイブコーディングとの相性
Workers は AI 主導のコーディングにとって最も扱いやすいデプロイ先の 1 つです。プロジェクトは 1 つの設定ファイルとハンドラーで構成され、エージェントはスキャフォールド、サービスのバインド、デプロイまで一貫して行えます。(Node ではなく)Workers を対象にしていることを最初にエージェントへ伝えておけば、ランタイムの制限を尊重し、たとえば fs の代わりにバインディングを使ってくれます。次の例では Worker を KV ネームスペースに接続しています。
# wrangler.toml
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2026-06-01"
[[kv_namespaces]]
binding = "CACHE"
id = "your-kv-namespace-id"
npx wrangler dev # ローカルのエッジランタイム
npx wrangler deploy # グローバルネットワークへデプロイ