コンテンツにスキップ

2-1 Workers とは

Plan: Free費用: 0円Wrangler 4.126.0公式ドキュメント取得日 2026-08-26
受付カウンターに置かれた対応マニュアル
スタッフは窓口のマニュアルに沿ってお客さんへ返事をします。

受付に人がいても、答え方が決まっていなければ返事は毎回ばらばらです。用件ごとの対応を書いたマニュアルがあれば、同じ決まりで返せます。

いま読んでいるこのサイト(Cloudflare Lab)では、すべての用件を一度スタッフが受けます。そして棚からページを取り、対応済みの印を付けて返します。

ここでは、用件票、マニュアル、返事、引き出し、片付けメモの順に見ます。最後に、Cloudflare Lab のマニュアル全文を日常語へ直します。

Learning goals

この節でできるようになること

  • Worker の役割を受付マニュアルとして説明できる
  • 用件票から返事が作られる流れを説明できる
  • 引き出しと片付けメモの違いを説明できる
  • Cloudflare Lab のコードが何をするか一行ずつ話せる

1. 窓口に置く対応マニュアル(Worker)

Section titled “1. 窓口に置く対応マニュアル(Worker)”

たとえるなら、スタッフ本人ではなく、スタッフが読む指示書が Worker です。同じ指示書を各地の窓口に置けば、どこでも同じ対応ができます。

Cloudflare では、このコードを Worker と呼びます。Cloudflare のネットワーク上で、届いた出来事に応じて実行されます。

実物では、src/worker/index.ts が Cloudflare Lab のマニュアルです。全国の窓口へ配ると、ページを求める通信に対して同じ処理が動きます。

マニュアル本を読む受付スタッフ
Worker は窓口で使う対応マニュアルに当たります。

本の中身がコードで、読む役は Cloudflare の実行環境です。お客さんはスタッフのいる建物を選ぶ必要がありません。

つまり、Worker は一台の機械ではなく、窓口で実行される対応の決まりです。

2. お客さんが来たら(fetch handler)

Section titled “2. お客さんが来たら(fetch handler)”

スタッフは、お客さんから用件票を受け取ります。マニュアルの「お客さんが来たら」の章を開き、品物と控えを添えて返します。

Cloudflare では、入口を fetch handler、用件票を Request、返事を Response と呼びます。fetch handler は Request を受け、Response を返します。

実物では、URL、求め方、付属情報などが Request に入ります。Worker はそれを読み、ページ本体と状態などを Response に入れます。

用件票から返答の袋を作るスタッフ
お客さんの用件を受け取り、決められた返答を作ります。

矢印は、用件票がマニュアルへ渡り、返事が出ていく流れです。返事には品物だけでなく控えも付きます。

ここからは正式な名前で確認します。

fetch handler の流れRequest受信した HTTP リクエストfetch(request, env, ctx)request: 入力env: bindingsctx: 実行コンテキストResponse返す HTTP 応答

つまり、Worker の中心は「受け取る、決める、返す」の三段階です。

3. 引き出しと片付けメモ(env と ctx.waitUntil)

Section titled “3. 引き出しと片付けメモ(env と ctx.waitUntil)”

スタッフは、鍵や倉庫の場所を自分のポケットへ勝手に入れません。店が用意した引き出しから取り出し、返事の後に行う作業は片付けメモへ残します。

Cloudflare では、引き出しを env(設定された接続先の集まり) と呼びます。片付けメモには ctx.waitUntil(返事の後まで続ける作業) を使います。

実物では、env.ASSETS が棚から取るときの窓です。ctx.waitUntil() は、返事を待たせずに続けたい Promise を登録します。

鍵の引き出しと片付け用の付箋
仕事に必要な物は引き出しから出し、後仕事はメモに残します。

左の引き出しは仕事中に使う物、右の片付けメモは返事の後の作業です。どちらもスタッフが自由に作った隠し場所ではありません。

つまり、接続先は env から受け取り、後仕事は ctx へ明示します。

店の無料枠には、来客数とスタッフが手を動かす時間の上限があります。待ち時間と手作業の時間を同じものとして数えません。

Cloudflare の公式料金ページでは、Free plan の Worker requests と CPU time が次のように示されています。Static Assets への requests は free and unlimited と記載されています。

Worker requests
100,000 / 日
CPU time
10 ms / invocation
Static Assets requests
Free and unlimited

ここで CPU time は、スタッフが実際に手を動かしている時間に当たります。外部から返事を待つ経過時間全体とは別です。

つまり、無料枠を見るときは、来客数と実作業の時間を分けます。

ここで紹介した fetch handler と env が、いま読んでいる Cloudflare Lab でどう使われているかを、マニュアル全文で見ます。

次のコードは「棚からページを取り、対応済みの印を付けて返す」命令です。記号を読めなくても大丈夫です。

export default {
async fetch(request, env): Promise<Response> {
const assetResponse = await env.ASSETS.fetch(request);
const headers = new Headers(assetResponse.headers);
headers.set('x-clf-lab', '1');
return new Response(assetResponse.body, {
status: assetResponse.status,
statusText: assetResponse.statusText,
headers,
});
},
} satisfies ExportedHandler<Env>;

export default は、この本を受付のマニュアルとして渡します。fetch は、お客さんが来たときに開く章です。

env.ASSETS.fetch(request) は、用件票を棚の窓へ渡します。new Headers は、棚から受け取った返事の控えを写します。

headers.set は、控えへ x-clf-lab: 1 の印を足します。最後の new Response は、品物、状態、控えを新しい返事としてまとめます。

つまり、このコードは棚の返事を壊さず、対応済みの印だけを加えます。

  • Worker は、窓口に置かれた対応マニュアルです。
  • fetch handler が用件票を受け、Response という返事を作ります。
  • Cloudflare Lab は棚のページへ対応済みの印を付けます。

この節で出てきた言葉を、つながりの順に並べると次のようになります。

図のラベル: 用件票 Request / 対応マニュアル Worker / お客さんが来たら fetch handler / 引き出し env 片付けメモ ctx.waitUntil / 返事 Response / 対応済みの印 x-clf-lab

次の節では、店を作る C3 と運営する Wrangler を分けます。

この節のチェック

問 1Worker を「対応マニュアル」にたとえたとき、マニュアルを読んで動く役は誰ですか?

問 2fetch handler が受け取るものと返すものの組み合わせで正しいのはどれですか?

問 3店が用意した接続先(このサイトなら ASSETS)が入っている引数はどれですか?

問 4返事を待たせずに、返した後まで作業を続けたいときに使うものはどれですか?

問 5Free plan の Worker で、公式料金ページに書かれている上限の組み合わせはどれですか?

最終更新日: