1565 文字
8 分
Cloudflare を無料枠だけで運用する実践ガイド

はじめに#

Cloudflare は無料枠が異常に太いことで知られています。
Pages、Workers、R2、D1、KV——個人開発で使うサービスのほとんどが Free プランで提供されており驚きを隠せません。

ただし「無料で使える」と「無料枠で収まる設計にする」は別の話です。上限を知らずに設計すると、思わぬところで課金が発生します。

この記事では各サービスの Free プラン上限を整理し、個人開発で無料枠に収まる構成パターンを紹介します。

この記事で登場する Cloudflare 用語
  • R2: 画像・動画・PDF などを置く S3 互換オブジェクトストレージ。egress(下り転送量)が無料で CDN 的な配信にも向く
  • D1: SQLite ベースのリレーショナル DB。JOIN やトランザクションが必要なアプリで、従来の RDB と同じ感覚で使える
  • KV: キーに対して値を返す超軽量な Key-Value ストア。設定値やキャッシュなど「読み取りが多く書き込みは少ない」データ向け

無料枠の上限一覧#

2026 年 4 月時点の主要サービスの Free プラン上限です。最新情報は公式の Plans ページ で確認してください。

サービス主な上限超過時の挙動
Pages無制限のサイト、500 回/月ビルドビルド失敗
Workers10 万リクエスト/日、10ms CPU 時間/リクエストリクエスト拒否
KV10 万読み取り/日、1,000 書き込み/日リクエスト拒否
R210 GB ストレージ、100 万 Class A/月、1,000 万 Class B/月課金開始
D15 GB ストレージ、500 万行読み取り/日、10 万行書き込み/日リクエスト拒否
Queues100 万オペレーション/月課金開始

Pages のホスティング自体は事実上無制限です。制限があるのはビルド回数(月 500 回)ですが、個人ブログで月 500 回デプロイすることはまずありません。

構成パターン#

パターン 1: 静的サイト(このブログの構成)#

Pages(Astro SSG)→ 静的 HTML/CSS/JS を配信

最もシンプルな構成で、Workers も KV も使いません。ビルド回数以外に上限を気にする要素がなく、無料枠を超える心配は事実上ゼロです。

ブログ、ポートフォリオ、ドキュメントサイトはこの構成で十分です。

パターン 2: 静的サイト + 簡易 API#

Pages(フロント)+ Pages Functions(API)+ KV(データ)

お問い合わせフォームやアクセスカウンターなど、軽量な動的機能を追加するパターンです。Pages Functions は Workers と同じリクエスト上限(10 万/日)を共有します。

KV の書き込み上限は 1,000 回/日とやや厳しいため、書き込み頻度が高い機能には不向きです。閲覧カウンターのように読み取りが中心のユースケースに適しています。

パターン 3: アプリ + DB + ストレージ#

Pages(フロント)+ Workers(API)+ D1(DB)+ R2(ファイル)

フルスタックの個人開発アプリ向けです。D1 の読み取り上限は 500 万行/日と余裕がありますが、書き込みは 10 万行/日です。

R2 はストレージが 10 GB まで無料で、egress(下り転送量)は無制限です。画像や PDF のホスティングに向いています。S3 互換 API なので、既存の S3 クライアントがそのまま使えるのも利点です。

無料枠に収めるための設計のコツ#

Workers のリクエスト数を減らす#

10 万リクエスト/日は多いように見えますが、SPA のバックエンド API として使うと意外に消費します。以下の工夫で節約できます。

  • 静的化できるレスポンスは Pages で配信する。Workers を経由させない
  • Cache API を使う。Workers 内で caches.default にレスポンスをキャッシュすれば、同じリクエストに対する Workers の実行回数を減らせる
  • バッチ API を設計する。フロントエンドから 10 回 fetch する代わりに、1 回のリクエストでまとめて取得できる API を作る

KV の書き込み上限に注意する#

KV の読み取りは 10 万回/日ですが、書き込みは 1,000 回/日です。2 桁違います。

セッション管理のように頻繁に書き込むユースケースには向きません。設定値やキャッシュのように「書き込みは稀、読み取りは頻繁」なデータに使います。頻繁な書き込みが必要なら D1 を検討してください。

D1 は行数ベースで考える#

D1 の制限は「リクエスト数」ではなく「行数」です。SELECT * FROM users が 100 行返せば、100 行分の読み取りとしてカウントされます。

-- 悪い例: 全件取得して JS で絞り込む
SELECT * FROM logs
-- 良い例: WHERE で絞ってから取得する
SELECT * FROM logs WHERE created_at > date('now', '-7 days') LIMIT 100

不要な行を読まない設計が、そのまま無料枠の節約になります。

R2 の Class A / B を理解する#

R2 の操作は Class A(変更系 + LIST: PUT, POST, DELETE, LIST)と Class B(読み取り系: GET, HEAD)に分類されます。

Class無料上限主な操作
A100 万回/月PUT, POST, DELETE, LIST
B1,000 万回/月GET, HEAD

画像を CDN 的に配信する場合、読み取り(Class B)は 1,000 万回/月あるので十分です。一方で LIST 操作(ファイル一覧の取得)は Class A にカウントされるため、管理画面でファイル一覧を頻繁にリロードすると消費が早まります。

モニタリング#

無料枠の消費状況は Cloudflare ダッシュボードの Analytics セクションで確認できます。Workers の場合は Workers & Pages → 該当 Worker → Metrics から日次のリクエスト数を見られます。

上限に近づいたときにアラートを受け取りたい場合は、ダッシュボードの Notifications から設定できます。無料枠でも通知設定は利用可能です。

まとめ#

  • Cloudflare の無料枠は個人開発には十分すぎる水準だが、サービスごとの上限は把握しておく必要がある
  • 静的サイトなら Pages のみで事実上無制限。動的機能を追加する場合は Workers のリクエスト数と KV の書き込み上限がボトルネックになりやすい
  • D1 は行数ベース、R2 は操作クラスベースの課金体系。不要なデータを読まない設計がそのまま節約になる
  • Pages と Workers の使い分けについては前回の記事を、Pages そのものの詳細は Cloudflare Pages 入門を参照
Cloudflare を無料枠だけで運用する実践ガイド
https://blog.c12o.net/posts/cloudflare-free-tier-guide/
作者
Seu (c12o)
公開日
2026-04-17
ライセンス
CC BY-NC-SA 4.0