Vercel Hobby プランで1年間、複数の個人サービスを運用してみた。結論から言えば、大半の個人開発には十分な無料枠がある。ただし、踏みやすい地雷もいくつか存在する。本稿では「この線を越えると課金通知が飛ぶ」というラインを7つに分けて共有する。料金体系は随時変わるので、数字は執筆時点(2026年4月)のものとして読んでほしい。
使った構成
- Next.js 15 (App Router)
- Vercel Hobby プラン (無料)
- Supabase (DB)
- 月間 PV 合計 約 20万 / サービス3つ
越えてはいけないライン7つ
ライン1: 帯域 100GB/月
Hobby プランの帯域は月 100GB が目安。動画や画像を大量配信すると一瞬で溶ける。
回避策: 画像は Cloudflare R2 or Supabase Storage、Vercel は HTML/JS のみにする。
ライン2: Serverless Function の実行時間
Hobby では1リクエストあたりの最大実行時間が比較的短い。重い処理を Vercel Function に押し込むと timeout でエラーになる。
回避策: 長時間ジョブは GitHub Actions もしくは Cloudflare Workers Cron へ外出し。
ライン3: ビルド時間
# ビルド時間を削る工夫
# next.config.js
module.exports = {
experimental: {
optimizePackageImports: ['lucide-react', 'date-fns']
}
}
不要なパッケージのインポートを削るだけで、ビルド時間が半分になることがある。
ライン4: 同時実行数
同時接続が一定を超えるとキューに入る。バズると突然遅くなる体験をすることがある。
回避策: キャッシュ可能なページは全部 revalidate を設定する。
// app/posts/page.tsx
export const revalidate = 300 // 5分キャッシュ
ライン5: Image Optimization の変換回数
next/image の最適化はリクエスト単位でカウントされる。画像サイトだと簡単に上限に到達する。
回避策: 自前で WebP を事前生成してしまうか、unoptimized: true を使う。
import Image from 'next/image'
<Image src="/hero.webp" width={1200} height={600} alt="" unoptimized />
ライン6: Analytics のイベント数
Vercel Analytics は無料でもイベント数に上限がある。SPA で細かくトラッキングすると1週間で使い切ることもある。
回避策: 本格的な分析は Umami / Plausible を別ホストで立てる。
ライン7: 商用利用の制約
Hobby プランは「商用利用不可」が原則。アドセンスやアフィリエイトが乗った時点で規約違反になりうる。この線を踏むと Pro (月20ドル) に上げる必要がある。
実際にぶつかったトラブル
ある月、画像LPが Twitter でバズって半日で 60GB の帯域を使った。Vercel Analytics のアラートで気づいて画像を慌てて Cloudflare R2 に逃がした。対応が遅れていたら課金突入していた。
構成変更のコード例
// 画像URLを環境変数で切り替えられるようにしておく
const CDN = process.env.NEXT_PUBLIC_CDN_BASE ?? ''
export function Hero() {
return <img src={`${CDN}/hero.webp`} alt="" />
}
これをやっておけば、いざというとき画像配信先を1行の環境変数変更で切り替えられる。
コスト試算
月間 PV 20万、画像は R2 配信、分析は Plausible Cloud 無料枠。この構成なら Vercel の課金は発生しない。逆に全部 Vercel に寄せるとライン1(帯域)で簡単に溶ける。
まとめ
- Vercel の無料枠は広い。ただし画像配信を Vercel 内で完結させない
- 長時間ジョブを Vercel Function に入れない
- 商用利用は Pro からという規約を忘れない
Vercel は「Next.js が一番速く動くプラットフォーム」という立ち位置は揺るがない。無料枠の境界を意識しつつ、重い処理は外部に逃がす設計で運用すれば、個人開発の 9割は Hobby プランで足りる。