「APIをちょっとだけ動かしたい」「サーバーを立てずに軽い処理を世界中で高速に実行したい」——そんなときに強いのが Cloudflare Workers です。
Workersは、Cloudflareの世界中のネットワーク(エッジ)上でコードを実行できるサーバーレス環境です。サーバーの管理が不要で、リクエストが来たときだけ、訪問者の最寄りの拠点で動きます。
この記事は Cloudflareとは?初心者向けに使い方・設定・料金をわかりやすく解説 の関連記事です。Workersの仕組みから、wranglerで最初のWorkerを作ってデプロイするまでをハンズオンで解説します。
[目次を開く]
Cloudflare Workersとは?
Cloudflare Workersは、サーバーを用意・管理せずに、コードを世界中のエッジで実行できるサーバーレスプラットフォームです。主にJavaScript / TypeScriptで書きます(WebAssemblyも可)。
最大の特徴は、一般的なサーバーレス(AWS Lambdaなど)と違い、V8 isolateという軽量な仕組みで動くため、起動が非常に速く(コールドスタートがほぼ無い)、訪問者の最寄りの拠点で実行されるため低レイテンシだという点です。
サーバーレスとは?
サーバーレスとは、サーバーの調達・運用・スケーリングをクラウドに任せ、開発者はコード(関数)だけを書けばよいという考え方です。アクセスが無ければコストはかからず、急なアクセス増にも自動で追従します。
| 従来のサーバー | Workers(エッジ) | |
|---|---|---|
| サーバー管理 | 必要 | 不要 |
| 起動速度 | 遅いことも | 高速(isolate) |
| 実行場所 | 特定リージョン | 訪問者の最寄り |
| 課金 | 稼働時間 | リクエスト数ベース |
何に使える?(ユースケース)
- APIサーバー: 軽量なREST/JSON API、BFF(フロント専用バックエンド)
- リダイレクト・A/Bテスト・認証: エッジでリクエストを加工
- 画像・HTTPのプロキシ: 外部APIを隠して中継
- 定期実行: Cron Triggersでバッチ処理
- フルスタックアプリ: Honoなどのフレームワークで本格的なアプリも構築可能
料金
個人の学習や小規模な用途なら無料枠で始められます。
| プラン | 目安 |
|---|---|
| Free | 1日あたり10万リクエストまで、リクエストあたりのCPU時間に上限あり |
| 有料(月額) | 大量リクエスト・長いCPU時間・各種拡張機能 |
最新の無料枠・上限は公式ドキュメントで確認してください。
事前に準備するもの
- Node.js(LTS推奨)と npm
- Cloudflareアカウント(無料)
- コマンドラインツール wrangler(Cloudflare公式CLI。以下のスキャフォルドで自動導入されます)
ハンズオン:最初のWorkerを作る
1. プロジェクトを作成する
Cloudflare公式のセットアップツール(C3)でひな形を作ります。
npm create cloudflare@latest my-worker 対話式で「テンプレートの種類」や「言語(TypeScript推奨)」を聞かれるので、「Hello World」系のシンプルなテンプレートを選べばOKです。
2. Hello Worldを確認する
生成されるコードの核心は、fetch ハンドラーだけです。リクエストを受け取ってレスポンスを返します。
export default {
async fetch(request, env, ctx) {
return new Response('Hello from Cloudflare Workers!')
},
} 3. ローカルで動かす
プロジェクトディレクトリで開発サーバーを起動します。
cd my-worker
npx wrangler dev 表示されるローカルURL(例 http://localhost:8787)にアクセスし、Hello from Cloudflare Workers! が返れば成功です。
4. デプロイする
準備ができたら、コマンド1つで世界に公開されます。
npx wrangler deploy 初回はブラウザでCloudflareアカウントの認証(OAuth)が開きます。認証後、https://my-worker.あなたのサブドメイン.workers.dev のURLで公開されます。
設定ファイル wrangler.jsonc
Workerの設定は wrangler.jsonc(または wrangler.toml)で管理します。最低限は次の3つです。
{
"name": "my-worker",
"main": "src/index.ts",
"compatibility_date": "2026-06-01"
} - name: Workerの名前(URLに使われる)
- main: エントリポイントのファイル
- compatibility_date: ランタイムの振る舞いを固定する日付(互換性維持のため重要)
バインディング:他サービスとつなぐ
Workersの強みは、Cloudflareの他サービスとバインディングで簡単に連携できることです。設定すると、コード内では env 経由でアクセスできます。
| バインディング先 | 用途 |
|---|---|
| KV | キーバリュー型の高速ストア(設定・キャッシュ等) |
| R2 | オブジェクトストレージ(画像・ファイル) |
| D1 | SQLiteベースのデータベース |
| Secrets / 変数 | APIキー等の機密値・設定値 |
機密値(APIキーなど)はコードに直書きせず、次のように登録します。
npx wrangler secret put MY_API_KEY 一歩進んで:CronとHono
- Cron Triggers:
wrangler.jsoncにスケジュールを記述すると、定期実行(バッチ処理)ができます。 - Hono: Workers上で動く軽量なWebフレームワーク。ルーティングやミドルウェアを簡潔に書け、本格的なAPI構築に人気です。
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Hono on Workers!'))
app.get('/api/users/:id', (c) => c.json({ id: c.req.param('id') }))
export default app よくあるつまずき(FAQ)
Q. wrangler deploy で認証エラーになる
初回はブラウザ認証(OAuth)が必要です。ヘッドレス環境などで開けない場合は、APIトークンを発行して CLOUDFLARE_API_TOKEN 環境変数に設定するとヘッドレスでデプロイできます。
Q. ローカルでは動くのに本番でエラーになる
バインディング(KV/R2/Secrets等)が本番側で未設定な可能性があります。wrangler.jsonc の設定と、本番のSecrets登録を確認しましょう。
Q. Node.jsのライブラリがそのまま使えない
Workersはブラウザに近い実行環境のため、一部のNode.js固有APIはそのまま使えません。compatibility_flags で Node 互換を有効化するか、Workers対応のライブラリを使います。
まとめ
Cloudflare Workersは、サーバーを持たずに、世界中のエッジでコードを高速実行できるサーバーレスプラットフォームです。要点を振り返ります。
- isolate で起動が速く、訪問者の最寄りで動く
-
npm create cloudflare@latest→wrangler dev→wrangler deployの3ステップ -
env経由のバインディングで KV / R2 / D1 / Secrets と連携 - CronやHonoで、定期実行・本格的なAPIまで
まずは Hello World をデプロイして、*.workers.dev で動く感覚を体験してみてください。
あわせて読みたい:
