Vercel Proの月額$20はプラットフォーム利用料であり、支出の上限ではない。Spend ManagementのPause機能を有効にしなければ、従量課金に上限は設定されず、デフォルトの閾値は$200だ。
Vercel Proに課金した初月、請求画面を見て「え、$20じゃないの?」と思った。原因はSpend Managementの仕組みを理解していなかったことだった。
この記事では、Vercel Proの従量課金がどう動くか、デフォルト設定の何が危ないか、そして請求を確実にコントロールする方法を解説する。Hobbyプラン(無料)のユーザーも、Proに上げる前に知っておくべき内容だ。
Vercel Proの料金は「$20固定」ではない
Vercel Proは月額$20だが、これはプラットフォーム利用料 であって上限ではない。$20に含まれるのはこれだけだ。
| リソース | Hobby(無料) | Pro($20/月) | 超過単価 |
|---|---|---|---|
| Fluid Active CPU | 4時間/月 | $20クレジットで相殺 | $0.128/CPU時間〜 |
| Provisioned Memory | 360 GB-hrs/月 | $20クレジットで相殺 | $0.0106/GB-hr〜 |
| Fast Data Transfer(帯域) | 100 GB/月 | 1 TB/月 | $0.15/GB |
| Edge Requests | 100万/月 | 1,000万/月 | $2/100万リクエスト |
| Function Invocations | 100万/月 | 100万/月 | $0.60/100万 |
| Monthly Credit | — | $20 | — |
$20の月額クレジットは、含まれる量を超えた分の支払いに充てられる。クレジットを使い切ると、その先は従量課金(on-demand) に切り替わる。
ここが落とし穴だ。1TBを超えた帯域は1GBあたり$0.15 で課金される。100GBの超過で$15、500GBなら$75。バズったり、ボットにクロールされたりすると、あっという間に膨らむ。
見落としがちな「Fluid Active CPU」の罠
2025年以降、Vercel FunctionsはFluid Computeモデルに移行した。ビルドだけでなく、SSR(サーバーサイドレンダリング)やAPI Routeの実行もCPU時間として課金される。
Hobbyプランは4時間/月が上限。 これを使い切ると100%の警告メールが届き、超過すると プロジェクトが一時停止 される。
Fluid Active CPUの課金対象:
- SSR(App Routerのサーバーコンポーネント)
- API Routes(
/api/*)の実行 - Middleware(next-intlのロケール判定など)
- ISR(Incremental Static Regeneration)の再生成
課金されないもの:
- I/O待ち時間(DBクエリ、外部API呼び出しの待ち時間)
- 静的アセット配信(CSS、画像、JS)
generateStaticParamsで事前生成されたページの配信
つまり記事ページをSSRからSSG(静的生成)に変えるだけで、Active CPUの消費を劇的に減らせる。
generateStaticParamsだけでは不十分
generateStaticParams でビルド時に全ページを静的生成しても、それだけでは完全な対策にならない。デフォルトでは dynamicParams = true になっており、静的パラメータに存在しないURLにアクセスがあると、Next.jsはSSRで動的にページ生成を試みる。
例えば、ボットやクローラーが /en/security/nordvpn-hacked-2024 のような存在しないURLを叩くと:
- Next.jsが「静的リストにないが、動的に生成してみよう」とSSRを実行
- データ取得 → 記事なし →
notFound()→ 404 - 結果は404でも、SSR実行分のCPU時間は消費済み
WordPressからの移行サイトや、SEOクローラーが旧URLを巡回するケースでは、これが積み重なってCPU使用率を押し上げる。
対策: dynamicParams = false を追加する。
// app/[locale]/[category]/[slug]/page.tsx
export const dynamicParams = false;
export async function generateStaticParams() {
// ... 全記事の静的パラメータを返す
}
この1行で、静的パラメータに存在しないURLへのアクセスは SSRを一切実行せず即座に404を返す。 ボットが何万回アクセスしてもCPU消費はゼロだ。
Spend Managementのデフォルト設定は本当に安全か?
2025年9月以降、新規Proチームには**Spend Managementがデフォルトで有効** になっている。一見安心だが、デフォルト設定の中身を正確に理解しておく必要がある。
デフォルトの状態:
- Spend Management: ON
- 通知の上限額: $200(on-demand使用分)
- 50%・75%・100%到達時にメール通知
問題は「通知が来るだけ」で止まるかどうか だ。
つまり、デフォルトのまま何もしなければ:
- $100を超えたあたりで通知メールが来る
- $200に達しても通知が来るだけ
- サイトは止まらない
- 課金は続く
- 月末に予想外の請求が届く
実際にいくら請求された事例があるのか?
「まさか自分に」と思うかもしれないが、実際に起きている。
2024年6月、MetaのAIポリシー変更に反発したアーティストがInstagramからCaraに大量移住。1週間でユーザーが4万→65万人に急増し、Vercel Functionsの請求が約$96,000 に達した。この事件はInfoQやHacker Newsでも大きく取り上げられ、サーバーレス課金のリスクを象徴する事例になった。
Metaクローラーによる請求スパイク
Middlewareを使っているサイトで、Metaのクローラーが1,100万リクエストを発生。Middlewareは全リクエストで実行されるため、Function Invocationsが爆発的に増加した。
9,000PVで$250/月
月間9,000PVしかないサイトが年間$3,000の請求。原因はボットトラフィックとMiddlewareの組み合わせだった。
共通する原因は3つ:
- ボット・AIクローラーの大量アクセス
- Middlewareが全リクエストで実行される設計
- Spend ManagementのPauseが未設定
請求を確実にコントロールする設定手順
Spend Managementを正しく設定する
- Vercelダッシュボード → Settings → Billing
- Spend Management セクションを見つける
- On-Demand Budget を
$1に設定する - 「Pause Production Deployments」を必ずONにする
- チーム名を入力して確認 → Save
Pause をONにすると、上限額に達した時点で全プロジェクトの本番デプロイが自動停止する。訪問者には503エラーが表示されるが、追加の課金は発生しない。
復旧の注意点: 停止後の再開はプロジェクトごとに手動で行う必要がある。自動では復旧しない。
Webhookは空欄でいい
Spend Managementの設定画面には Webhook の入力欄がある。これは予算上限に達したときに、指定したURLにHTTP POSTリクエストを自動送信する機能だ。たとえばSlackやDiscordに「予算超過しました」と通知を飛ばしたり、サーバー側で自動復旧処理を走らせたりできる。
個人サイトなら不要。空欄のままでいい。 メール通知(Manage Notificationsで設定)で十分だ。Webhookは自前の監視システムを持っているチーム向けの機能であり、設定しなくてもSpend ManagementのPause機能は正常に動作する。
DDoS対策: Attack Challenge Mode
Vercelは全プラン(Hobbyを含む)で**DDoS軽減機能を無料提供** している。
- 自動DDoS軽減: L3/L4/L7レベルの攻撃を常時自動で検知・軽減(全プラン、設定不要)
- Attack Challenge Mode: 手動でONにすると、全訪問者にチャレンジ画面を表示してボットを遮断
攻撃を受けていると感じたら:
- Vercelダッシュボード → Settings → Security
- Attack Challenge Mode をON
- 攻撃が収まったらOFFに戻す
HobbyプランとProプランの違い
| Hobby(無料) | Pro($20/月) | |
|---|---|---|
| 帯域 | 100 GB/月 | 1 TB/月 |
| 超過時 | サイト停止(課金なし) | $0.15/GBで従量課金 |
| 商用利用 | 不可(個人・非商用のみ) | 可 |
| DDoS対策 | 自動軽減 + Challenge Mode | 同じ |
| Spend Management | なし(不要) | あり(要設定) |
Hobbyプランのユーザーは高額請求の心配は一切ない。100GBの上限に達したらサイトが停止するだけで、課金は発生しない。ただし商用利用は規約違反になる。
「Hobbyで十分なのにProにしてしまった」ケースが意外と多い。個人ブログや趣味プロジェクトなら、月100GBを超えることはまずない。
自分のサイトが月何GBを使うか計算する方法
Proが必要かどうかを判断するには、自分のサイトの帯域消費を概算する。
月間帯域 ≒ 月間PV × 1ページあたりの平均サイズ
目安(Next.jsの静的サイト):
1ページ ≒ 500KB〜2MB(画像含む)
月間1万PV × 1MB = 約10GB
月間10万PV × 1MB = 約100GB(Hobby上限)
月間50万PV × 1MB = 約500GB(Pro範囲内)
月間100万PV × 1MB = 約1TB(Pro上限ギリギリ)
月間10万PV以下ならHobbyで十分。100万PVを超えるなら、Proでも超過が発生する可能性がある。帯域の超過コストが気になる場合は、さくらのVPS や XServer VPS への移行も選択肢だ。
Vercelの料金が高いと感じたら
Spend Managementを正しく設定しても「$20/月にしては機能が少ない」「スケールすると割高」と感じるかもしれない。その場合はVPSへのセルフホストが選択肢になる。
月額¥500〜1,500程度で、Vercel Proと同等以上のスペックが手に入る。帯域制限もない。さくらのVPSなら月¥590〜、XServer VPSなら月¥990〜で始められる。ただしインフラ管理は自分でやる必要がある。Vercelの「git pushだけでデプロイ」という体験には代えがたいものがあるから、何を優先するかで判断が変わる。
国内シェアNo.1のエックスサーバーが提供する高性能VPS
- NVMe SSD・AMD EPYC搭載の高速サーバー
- 2GBプラン 月額990円〜(3コア / 50GB SSD)
- 初期費用無料
FAQ
Vercel Proは月額$20以上請求されることがあるの?
ある。$20はプラットフォーム利用料であって上限ではない。$20の月額クレジットと含まれる利用枠(帯域1TB、Edge Requests 1,000万)を超えた分は従量課金になる。Spend ManagementのPauseを有効にしなければ、自動的に課金が止まることはない。
Spend Managementの一番安全な設定は?
On-Demand Budgetを$1に設定し、Pause Production Deployments を有効にする。$1に設定すれば、超過分は$20の月額クレジットで完全に吸収されるため追加請求は発生しない。Pause機能は上限到達時にすべての本番デプロイを自動停止する。
Hobbyプランに高額請求のリスクはある?
ない。Hobbyプランにはハードリミットが設定されている。帯域100GBまたはActive CPU 4時間に達するとサイトが停止し、課金は発生しない。ただし商用利用は許可されていない。
Spend Managementでサイトが停止したらどうなる?
訪問者には503 DEPLOYMENT_PAUSEDエラーが表示される。追加の課金は発生しない。復旧はプロジェクトごとに手動で行う必要がある。上限額を引き上げても自動では復旧しない。ダッシュボードまたはVercel REST APIから再開できる。
SSRはFluid Active CPUの課金対象?
対象だ。Fluid Computeモデルでは、SSRのページレンダリング、API Routeの実行、Middlewareの実行、ISRの再生成がすべてActive CPU時間を消費する。I/O待ち時間(DBクエリや外部API呼び出し)は除外される。静的生成ルートに dynamicParams = false を設定すれば、ボットが不要なSSRを発火させることを防げる。
Webhookの設定は必須?
必須ではない。Webhookは予算上限到達時にHTTP POSTを送信する機能で、Slack通知や自動復旧スクリプトに使える。個人サイトならメール通知で十分。Pause機能はWebhookの設定なしでも正常に動作する。
DDoSによる課金スパイクはどう防ぐ?
Vercelは全プランで無料のDDoS軽減を提供している(L3/L4/L7)。攻撃を受けている場合は、ダッシュボード → Settings → Securityから Attack Challenge Mode を手動でONにする。Spend ManagementのPauseと組み合わせれば、「DDoS → 帯域爆発 → 高額請求」のシナリオは防げる。
まとめ
| やること | 理由 |
|---|---|
| Spend ManagementのPauseをONにする | デフォルトでは通知のみ。課金は止まらない |
| 上限額を自分の許容範囲に設定する | デフォルト$200は多すぎるかもしれない |
| Attack Challenge Modeを知っておく | DDoS時にすぐONにできるように |
| Hobbyで足りるか計算する | 月10万PV以下ならProは不要 |
| Middlewareの使い方を見直す | 全リクエストで実行=全リクエスト課金対象 |
Vercel自体は優れたプラットフォームだ。ただし料金体系の理解なしに使うと、予想外の請求が来る。この記事の設定を5分でやっておけば、安心して開発に集中できる。
エッジコンピューティングの従量課金モデルとVPS・オンプレミスの固定費モデルの違いはエッジコンピューティングのコスト構造比較で詳しく解説している。VPSへのセルフホストに興味があるならCoolify + VPSでNext.jsをセルフホストする全手順も参考になる。
関連記事: