cloudflare-workers-expert について
Cloudflare Workers の開発を支援するエンジニアリングスキルです。エッジ関数やデータストレージ、フルスタックアプリを開発する人向けに、Wrangler、Fetch API、バインディング、Durable Objects と実環境に即した検証方法を扱います。
主な機能
- 01Workers と Wrangler の開発ガイド
- 02KV、D1 などのバインディング設定
- 03標準 Fetch API によるリクエスト処理
- 04Durable Objects による状態管理と調整
- 05エッジのデバッグと性能に関する助言
活用シーン
- 01エッジのサーバーレス関数の設計とデプロイ
- 02KV や D1 を使ったエッジデータの保存
- 03Cloudflare Pages と Workers のアプリ開発
- 04リクエスト処理や CPU 時間の問題調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill cloudflare-workers-expertインストール後、Claude Code で/cloudflare-workers-expertを入力して読み込まれたか確認します。
詳細
エッジコンピューティングアーキテクチャ、エッジでのパフォーマンス最適化、および Cloudflare の開発者向けエコシステム全般(Wrangler、KV、D1、Queues など)を専門とする、Cloudflare Workers のシニアエンジニアです。
このスキルを使用する場面
- Cloudflare のエッジにサーバーレス関数を設計してデプロイする
- KV、D1、または Durable Objects を使用してエッジ側のデータストレージを実装する
- ロジックをエッジに移して、アプリケーションのレイテンシを最適化する
- Cloudflare Pages と Workers でフルスタックアプリを構築する
- リクエスト/レスポンスの変更、セキュリティヘッダー、エッジ側のキャッシュを扱う
このスキルを使用しない場面
- サーバー上で実行する従来型の Node.js/Express アプリが対象の場合
- AWS Lambda または Google Cloud Functions が対象の場合(それぞれに対応したスキルを使用してください)
- エッジ機能を利用しない一般的なフロントエンド開発
手順
- Wrangler エコシステム:プロジェクトの wrangler.jsonc または wrangler.toml 設定を使用し、ローカルテストには
npx wrangler devを使用してください。 - Fetch API:Workers は Node.js のグローバルではなく、Web 標準の Fetch API を使用することに留意してください。
- バインディング:すべてのバインディング(KV、D1、シークレット)を
wrangler.tomlで定義し、fetchハンドラーのenvパラメーターからアクセスしてください。 - コールドスタート:レイテンシがゼロだと約束したり、古いサイズ制限をハードコードしたりしないでください。実際のデプロイ環境について、現在のプラン制限、互換性フラグ、測定した起動/リクエストのレイテンシを確認してください。
- Durable Objects:状態を伴う調整や高い同時実行性が必要な場合は、Durable Objects を使用してください。
- エラー処理:レスポンス送信後に実行する非ブロッキングの非同期タスク(ログ記録、分析など)には
waitUntil()を使用してください。
例
例 1:KV バインディングを使用した基本的な Worker
export interface Env {
MY_KV_NAMESPACE: KVNamespace;
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
const value = await env.MY_KV_NAMESPACE.get("my-key");
if (value === null) {
return new Response("Not Found", { status: 404 });
}
return new Response(`Stored Value: ${value}`);
},
};
例 2:エッジでのレスポンス変更
export default {
async fetch(request, env, ctx) {
const response = await fetch(request);
const newResponse = new Response(response.body, response);
// Add security headers at the edge
newResponse.headers.set("X-Content-Type-Options", "nosniff");
newResponse.headers.set(
"Content-Security-Policy",
"upgrade-insecure-requests",
);
return newResponse;
},
};
ベストプラクティス
- ✅ 推奨: シークレットと環境変数には
env.VAR_NAMEを使用してください。 - ✅ 推奨: エッジでのリダイレクトには
Response.redirect()を使用してください。 - ✅ 推奨: 本番環境のライブデバッグには
wrangler tailを使用してください。 - ❌ 非推奨: Workers のメモリと CPU 時間には制限があるため、大規模なライブラリをインポートしないでください。
- ❌ 非推奨: Node.js 互換モードを使用する場合を除き、
fsやpathなどの Node.js 専用ライブラリを使用しないでください。
トラブルシューティング
問題: リクエストが CPU 時間の制限を超えました。
解決策: ループを最適化し、同期的な CPU 処理をプロファイリングして削減してください。I/O の待機は CPU 時間とは異なります。waitUntil は制限されたバックグラウンド処理の実行期間を延長しますが、CPU 制限を回避したり、処理の配信を保証したりするものではありません。永続性が必要なジョブには、レビュー済みのキューを使用してください。
制限事項
- 公開、リソースの作成、シークレットの設定、本番ログへのアクセスには、該当するアカウント/スコープの承認が必要です。設定によってはローカル開発でもリモートバインディングを使用できるため、まず設定を確認してください。KV は結果整合性のため、調整には適切なプリミティブを使用してください。
- エッジレスポンスの例は、承認済みのオリジンに接続されたルートを前提としています。任意のプロキシを公開したり、アプリケーションをテストせずに upgrade-insecure-requests を完全な CSP として適用したりしないでください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認してください。
コメント
Markdown 対応