Cloudflare Workers 入門2026 — 無料でサーバーレスAPIを作る方法
Cloudflare Workersは、世界中のCloudflareのエッジサーバーでJavaScript/TypeScriptを実行できるサーバーレスプラットフォームです。無料枠が充実しており、個人開発やサイドプロジェクトでの利用に最適です。
Cloudflare Workersの特徴
| 項目 | 内容 |
|---|---|
| 実行環境 | V8 Isolates(Node.jsではない) |
| 無料枠 | 1日10万リクエスト、CPU時間10ms/リクエスト |
| レイテンシ | 世界中のエッジで実行(低遅延) |
| 対応言語 | JavaScript/TypeScript(Rust/Python等も一部対応) |
| 料金 | 無料〜$5/月(Paid plan: 1000万リクエスト/月) |
Cloudflare Pages vs Cloudflare Workers
混同されやすい2つのサービスの違い:
| 項目 | Cloudflare Pages | Cloudflare Workers |
|---|---|---|
| 用途 | 静的サイトのホスティング | サーバーレスAPI・ミドルウェア |
| 実行 | ビルド済みHTMLをCDN配信 | リクエストごとにコード実行 |
| 主な利用 | Astro/Next.js等の静的サイト | API・Webhook・Bot |
Pages Functionsを使うと、PagesプロジェクトにWorkersの機能を組み込むことも可能です。
セットアップ
前提
- Node.js v18以上
- Cloudflareアカウント(無料)
- wrangler CLIのインストール
npm install -g wrangler
wrangler login
プロジェクト作成
npm create cloudflare@latest my-worker
cd my-worker
テンプレートから「Hello World Worker」を選択するとすぐに動かせる状態になります。
最初のWorkerを書く
src/index.ts:
export default {
async fetch(request: Request): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === '/api/hello') {
return Response.json({ message: 'Hello from Cloudflare Workers!' });
}
return new Response('Not Found', { status: 404 });
},
};
ローカル開発
npm run dev
# → http://localhost:8787 でアクセス可能
デプロイ
npm run deploy
# → https://my-worker.your-subdomain.workers.dev に公開
Hono.jsとの組み合わせ(推奨)
Cloudflare Workers向けのWebフレームワーク「Hono」を使うと、ルーティングやミドルウェアが簡単に書けます。
npm create hono@latest my-hono-app
# → Cloudflare Workers を選択
import { Hono } from 'hono';
const app = new Hono();
app.get('/', (c) => c.text('Hello Hono!'));
app.get('/api/user/:id', (c) => {
const id = c.req.param('id');
return c.json({ userId: id });
});
app.post('/api/data', async (c) => {
const body = await c.req.json();
return c.json({ received: body });
});
export default app;
HonoはWorkers以外にNode.js・Deno・Bunでも動作するため、コードの再利用性が高いです。
KV(Key-Value ストレージ)の利用
WorkersにはCloudflare KVというKey-Valueストレージが使えます。
// wrangler.toml
[[kv_namespaces]];
binding = 'MY_KV';
id = 'xxxxxx';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
// 保存
await env.MY_KV.put('key', 'value');
// 取得
const value = await env.MY_KV.get('key');
return new Response(value ?? 'not found');
},
};
KVの無料枠:読み取り10万回/日、書き込み1,000回/日。
D1(SQLiteデータベース)
WorkersからSQLiteベースのD1データベースも利用可能(2024年以降GAに移行)。
wrangler d1 create my-database
const result = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId).first();
無料枠:5GBストレージ、500万行読み取り/月。
ユースケース例
| 用途 | 実装方法 |
|---|---|
| APIプロキシ | Workers でバックエンドAPIを中継 |
| Webhookハンドラ | LINEBot・SlackBot・GitHubWebhook |
| 認証ミドルウェア | JWT検証・IP制限 |
| URLリダイレクト | パスに応じてリダイレクト |
| エッジキャッシュ | 高負荷APIのレスポンスをキャッシュ |
まとめ
- 無料枠で1日10万リクエストまで対応
- TypeScriptで書いて
wrangler deployだけで世界中にデプロイ - Hono.jsとの組み合わせでExpressライクなAPI開発が可能
- KV・D1でデータ永続化も無料枠内で実現できる
個人開発やBot・Webhookハンドラの用途なら、Cloudflare Workersは無料で始められる最良の選択肢のひとつです。
関連記事