Gadget 35:Workers 基礎
Cloudflare Workers のランタイム・バインディング・デプロイの基本を深掘り
Workers 基礎
Cloudflare OS を含む「Workers アプリ」を理解するための土台です。
目的
- Workers の実行モデル(エッジ・Isolate・イベント駆動)を理解する
- バインディング(KV/D1/R2/AI など)の概念を掴む
- 最小の Worker をデプロイできる
前提条件
- 公式ドキュメント: https://developers.cloudflare.com/workers/
- Cloudflare アカウント(無料枠で可)
手順
1. 最小の Worker を作る
npm create cloudflare@latest hello-cf -- --template hello-world
cd hello-cf
npx wrangler dev # ローカル実行
npx wrangler deploy # 公開2. 実行モデルを理解する
- エッジ実行: 東京・大阪など最寄りのエッジで動作
- Isolate: V8 の分離領域。コールドスタートがある
- イベント駆動: リクエストごとに handler が走る(常駐サーバーではない)
export default {
async fetch(request, env, ctx) {
return new Response("Hello from Workers!", {
headers: { "content-type": "text/plain" },
});
},
};3. バインディングを知る
| バインディング | 用途 | 主要 Doc |
|---|---|---|
env.KV_NAMESPACE |
高速読み書きキャッシュ | 40 |
env.DB |
SQLite データベース | 38 |
env.R2 |
オブジェクトストレージ | 39 |
env.AI |
AI 推論(Workers AI) | 37 |
env.VECTORIZE |
ベクトル検索 | 43 |
env.CF_OBJECT |
永続状態(DO) | 36 |
wrangler.toml で宣言:
name = "hello-cf"
main = "src/index.js"
compatibility_date = "2024-11-01"
[[kv_namespaces]]
binding = "KV_NAMESPACE"
id = "<namespace-id>"4. ローカル開発とデプロイの流れ
npx wrangler dev # http://localhost:8787(CFOS と同じポートの偶然の一致に注意)
npx wrangler deploy # 本番公開
npx wrangler tail # 本番ログを見るよくある失敗
| 症状 | 原因 | 対処 |
|---|---|---|
| コールドスタートで遅い | 初回実行のオーバーヘッド | コードを軽く・事前に warm |
| バインディングが null | 未宣言 or 環境不一致 | wrangler.toml とローカル設定を確認 |
| デプロイに失敗 | アカウント/課金設定 | wrangler login と whoami を確認 |
| ローカル 8787 と競合 | CFOS の run-local |
どちらかをポート変更 |
確認
次に読む
- 状態を持つ → 36-durable-objects
- AI → 37-workers-ai
- 全体像 → 34-cloudflare-overview