Edge Functionsとは

Edge Functionsは、CDNに近い拠点でリクエストごとの小さな処理を動かす仕組みです。利用者に近い場所で応答できる可能性はありますが、常に高速になるわけではなく、処理内容・データの場所・プラットフォームの制約で決まります。
向く処理と向かない処理
| 向く処理 | 理由 |
|---|---|
| リダイレクト、ヘッダーの調整 | 小さく、リクエスト単位で完結する |
| キャッシュの分岐 | 利用者に近い場所で判断できる |
| 軽い認証の入口 | トークンの形式確認などを早く行える |
| A/Bテストの振り分け | ルールが小さく、状態を持たない |
重い画像変換、長時間の計算、強い一貫性が必要な書き込みは、一般的なサーバーや専用のバックグラウンド処理の方が合う場合があります。
実行環境の差を前提にする
Edge runtimeはブラウザに近いWeb標準APIを中心にし、Node.jsの全APIがそのまま使えるとは限りません。地域情報や待機処理などの拡張APIも、サービス固有です。例えばCloudflare Workersのrequest.cfはCloudflareの実行環境でだけ使えます。
export default {
async fetch(request) {
const country = request.cf?.country ?? "unknown";
return Response.json({ country });
},
};
このコードを別のEdge環境へ移す時は、同じプロパティがあると仮定せず、各サービスの公式ドキュメントと型定義を確認します。
安全なリダイレクトの例
リダイレクト先を利用者の入力でそのまま作ると、外部サイトへ誘導する脆弱性になり得ます。移行用の固定パスは同じオリジンのURLとして作ります。
export default {
async fetch(request) {
const url = new URL(request.url);
if (url.pathname === "/old-page") {
return Response.redirect(new URL("/new-page", url), 308);
}
return fetch(request);
},
};
制約は数値を決め打ちしない
CPU時間、メモリ、リクエスト数、外部通信数、実行可能なAPIは、プランとサービスで異なり変更されます。設計前に採用するプラットフォームの現在の制限を確認し、失敗時の応答、タイムアウト、観測方法を決めます。
導入前の確認
- 利用者に近くても、データ取得先が遠くないか
- 必要なNode.js APIやネイティブモジュールが使えるか
- 失敗時にキャッシュまたはオリジンへ安全に切り替えられるか
- 地域情報やIPを扱う目的・保存期間が適切か
まとめ
Edge Functionsは、軽いリクエスト処理を利用者に近い場所へ置く選択肢です。速度だけを目的にせず、データの場所、実行環境の互換性、現在の制限と失敗時の動作を確認して採用します。