Gadget 53:workerd ランタイム素振り
Cloudflare の worker ランタイム workerd を単体で触って内部を理解する
workerd ランタイム素振り
pnpm run-local が裏で使う workerd を単体で動かし、ランタイムの挙動を体感します。
目的
- workerd とは何か、Cloudflare OS がどう使っているかを理解する
- Worker 単体の挙動を「最小構成」で再現する
前提条件
- Workers 基礎(35-workers-basics)
- 解剖知識(45)を推奨
workerd とは
- Cloudflare Workers ランタイムの本体(オープンソース)
wrangler devの「裏」で動いているプロセスrun-localは workerd 上に Router + backend + 各 Gatekeeper をまとめて 起動する
# 起動中のプロセスを確認
ps aux | grep -E "workerd|wrangler" | grep -v grep手順(最小の触り)
1. プロセスとフラグを観察
run-local 起動中に、workerd が受けている引数を確認します(構造理解のため)。
ps -o command -p <pid> # コマンドラインを表示2. Worker 単体で wrangler dev
# 自作の最小 Worker を別ディレクトリで
mkdir tiny && cd tiny && npx wrangler init
npx wrangler dev # workerd 上で単体起動- 単体と
run-local(マルチコンフィグ)の違いを体感 - ポートが 8787 と衝突しないよう、別ポートで試す
3. 挙動を確認する
- リクエストを投げて応答・エラーを見る
- workerd のログ出力・リスタート挙動を観察
よくある失敗
| 症状 | 原因 | 対処 |
|---|---|---|
| ポート衝突 | 8787 と競合 | 別ポート(例: 9797)へ |
| 「workerd が見つからない」 | PATH が小さい環境 | wrangler 経由・node_modules 経由で起動 |
| behavior が違う | run-local 特有のマルチ構成 |
単体は単体、本番は本番で評価 |
| 壊れて戻すのが困難 | 実験で .wrangler を汚染 |
実験は別ディレクトリ(49) |
確認
次に読む
- run-local 解剖 → 45-internals-run-local
- 自作 Gatekeeper → 46-custom-gatekeeper
- Workers 基礎 → 35-workers-basics