結論(おすすめ1つ)
個人・小規模チームには Cloudflare Pages を推奨する。
無料枠の帯域制限がなく、エッジ関数(Workers)との統合がシームレスなため、Next.js 以外のフレームワークや静的サイト中心のプロジェクトであれば移行コストに見合うリターンが得やすい。一方、App Router や Server Actions を深く使い込んだ Next.js プロジェクトは Vercel に留まる方が現実的だ。
比較表(料金/無料枠/移行コスト/対応言語)
| 項目 | Vercel | Cloudflare Pages |
|---|---|---|
| 無料枠 | あり(帯域・ビルド分数に上限あり) | あり(帯域無制限、ビルド上限あり) |
| 有料プラン料金 | 公式の料金ページで要確認 | 公式の料金ページで要確認 |
| チーム機能 | 無料プランは個人利用のみ | 無料プランでも複数メンバー可 |
| サーバーレス実行時間上限 | プランにより異なる(公式要確認) | Workers の制約に依存(公式要確認) |
| Next.js サポート | ネイティブ(開発元) |
@cloudflare/next-on-pages 経由で対応 |
| 対応フレームワーク | Next.js/Nuxt/SvelteKit 等 | 同左+静的サイト全般 |
| カスタムドメイン | 無料枠でも利用可 | 無料枠でも利用可 |
| エッジ関数 | Edge Runtime | Cloudflare Workers |
| 移行コスト | — | 低〜中(フレームワーク依存) |
移行手順
1. Cloudflare アカウントと CLI を準備する
npm install -g wrangler
wrangler login
2. プロジェクトをリポジトリに接続する
Cloudflare ダッシュボード → Workers & Pages → Create → Pages → Git に接続し、対象リポジトリを選択する。
3. ビルド設定を指定する(Next.js の例)
Framework preset : Next.js
Build command : npx @cloudflare/next-on-pages@1
Output directory : .vercel/output/static
Node.js version : 20.x
@cloudflare/next-on-pagesは全 API を網羅しない。next/imageの最適化やISRの完全互換は現時点で保証されないため、事前に互換チェックを実施すること。
4. 環境変数を移行する
Vercel ダッシュボードの .env をエクスポートし、Cloudflare Pages の環境変数セクションへ手動で貼り付ける。機密値は必ず「暗号化」オプションを有効にする。
# ローカルで差分確認する場合
wrangler pages dev .vercel/output/static --compatibility-date=2024-09-23
5. カスタムドメインを切り替える
1. Cloudflare Pages のカスタムドメインを設定(CNAME 自動生成)
2. DNS レジストラで CNAME を Cloudflare の値へ変更
3. Vercel 側の[ドメイン](https://px.a8.net/svt/ejp?a8mat=4B3XB4+4VMW8I+50+2HU3GX)を削除
4. TTL 伝播(数分〜数時間)を待って動作確認
6. Vercel プロジェクトを削除する(確認後)
vercel remove <project-name> --yes
向き不向き
Cloudflare Pages が向くケース
- 静的サイト・JAMstack 構成がメインで、動的処理が軽微なプロジェクト
- SvelteKit・Nuxt・Astro など Next.js 以外のフレームワークを使うチーム
- 個人開発者や少人数チームで無料枠のコスト効率を重視する場合
- Cloudflare DNS をすでに使っており、ネットワーク管理を一元化したい場合
- エッジでのリクエスト処理(地理判定・A/B テスト等)を Workers で細かく制御したい場合
Vercel に留まるべきケース
- Next.js の App Router・Server Components・Streaming を本番で深く使っている
-
next/imageの自動最適化や ISR をそのまま動かす必要がある - プレビューデプロイをチーム全員のコードレビューフローに組み込んでいる
- Vercel Analytics や Speed Insights をモニタリングの中核に据えている
避けるべきパターン
- 移行先の制約を検証せずに本番ドメインを即切り替える(ステージング環境で必ず先行検証する)
-
next export相当の完全静的化ができないページを含む状態で移行を急ぐ - Workers のコールドスタート特性を考慮せず、レスポンスタイム SLA が厳しいサービスに適用する
Top comments (0)