Contents
1. Cloudflare Images の料金概要
このセクションでは、2026 年に想定される 保存費用 と 配信費用 の基本単価、およびオプションサービス(画像変換・動画サポート)の課金体系をまとめます。
読者が実際の請求額を予測しやすくなるよう、計算に必要な前提条件と出典情報を明示しています。
1‑1. 保存費用(ストレージ)
保存費用は保管している画像・動画の総数/容量に対して従量課金されます。公式ドキュメントでは次のように定義されています。
| 項目 | 単価(2024 年 11 月時点) | 備考 |
|---|---|---|
| 画像保存 | $5 / 100,000 枚 | $0.00005/枚 |
| 動画保存* | $5 / GB‑month | 1 GB の動画を 1 カ月間保存した場合の料金 |
*動画保存は Cloudflare Stream の価格表に準拠しています。最新の単価は公式ページ「Video Pricing」を参照してください。
1‑2. 配信費用(デリバリー)
配信費用はエッジからユーザーへ画像・動画が配信された回数/転送量で課金されます。
| 項目 | 単価(2024 年 11 月時点) | 備考 |
|---|---|---|
| 画像配信 | $1 / 100,000 回 | $0.00001/回 |
| 動画配信* | $1 / GB | 転送されたデータ量に対して課金 |
*動画配信は「Video Bandwidth」料金を参照。
1‑3. オンデマンド画像変換
オンデマンドでサイズ変更・フォーマット変換を行う場合は別途 $0.10 / 1,000 リクエスト が加算されます。変換リクエストが多い環境では必ずシミュレーションに組み込んでください。
2. 課金単位の切り上げ方式
Cloudflare は 「100,000 単位」ごとに切り上げ(ceil)して請求します。たとえば画像保存が 151,200 枚の場合は次のようになります。
|
1 2 3 |
保存単位 = ceil(151,200 ÷ 100,000) = 2 請求額 = 2 × $5 = $10 |
この切り上げロジックは公式ドキュメント「Billing Units」でも明記されており、実際の請求は常に整数単位で丸められます。計算スクリプトやスプレッドシートでは CEILING(Excel/Sheets)または Math.ceil(JavaScript)を使用してください。
3. API メトリクス取得と活用
3‑1. なぜメトリクスが必要か
API から取得できる 画像総数 と 配信回数 は、正確なコストシミュレーションの根拠となります。手動で集計するとヒューマンエラーが起きやすく、実際の請求額と乖離するリスクがあります。
3‑2. 認証とエンドポイント
| 項目 | 内容 |
|---|---|
| 認証方式 | Authorization: Bearer <API_TOKEN>(Images 権限 + Read が必須) |
| エンドポイント | GET https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1/metrics |
| クエリパラメータ | since=ISO8601, until=ISO8601 (取得期間を指定) |
取得例(cURL)
|
1 2 3 |
curl -X GET "https://api.cloudflare.com/client/v4/accounts/abcdef12345/images/v1/metrics?since=2026-05-01T00:00:00Z&until=2026-05-31T23:59:59Z" \ -H "Authorization: Bearer YOUR_TOKEN" |
成功時のレスポンス(抜粋)
|
1 2 3 4 5 6 7 8 9 10 |
{ "success": true, "result": { "total_images": 342000, "total_deliveries": 8745000, "period_start": "2026-05-01T00:00:00Z", "period_end": "2026-05-31T23:59:59Z" } } |
4. コストシミュレーション実装例
4‑1. Node.js スクリプト(完全版)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
// cost-simulation.js require('dotenv').config(); const axios = require('axios'); const ACCOUNT_ID = process.env.CF_ACCOUNT_ID; const API_TOKEN = process.env.CF_API_TOKEN; // 直近30日間のメトリクスを取得 const since = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString(); const until = new Date().toISOString(); async function fetchMetrics() { const url = `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/images/v1/metrics?since=${since}&until=${until}`; const { data } = await axios.get(url, { headers: { Authorization: `Bearer ${API_TOKEN}` } }); if (!data.success) throw new Error('API error'); return data.result; } function calcCost({ total_images, total_deliveries }) { // 画像保存・配信の切り上げ課金 const storage = Math.ceil(total_images / 100_000) * 5; // $5/100k 枚 const delivery = Math.ceil(total_deliveries / 100_000) * 1; // $1/100k 回 // オンデマンド変換リクエスト例(10,000 リクエスト想定) const conversionRequests = 10_000; const conversionCost = Math.ceil(conversionRequests / 1_000) * 0.10; // $0.10/1k return { storage, delivery, conversion: conversionCost, total: +(storage + delivery + conversionCost).toFixed(2) }; } (async () => { try { const metrics = await fetchMetrics(); const cost = calcCost(metrics); console.log('=== Cloudflare Images 月間コストシミュレーション ==='); console.log(`画像総数 : ${metrics.total_images.toLocaleString()} 枚`); console.log(`配信回数 : ${metrics.total_deliveries.toLocaleString()} 回`); console.log(`保存費用 : $${cost.storage}`); console.log(`配信費用 : $${cost.delivery}`); console.log(`変換リクエスト費用 : $${cost.conversion}`); console.log(`合計 : $${cost.total}`); } catch (e) { console.error('❌ Error:', e.message); } })(); |
実行手順
- プロジェクト作成 →
npm init -y - 必要パッケージインストール →
npm install axios dotenv .envに以下を記入
dotenv
CF_ACCOUNT_ID=your_account_id
CF_API_TOKEN=your_api_token
node cost-simulation.jsを実行
4‑2. Google Sheets / Excel 用テンプレート
| セル | 内容 | 設定式 |
|---|---|---|
| B2 | 画像総数(API から貼り付け) | 手入力または IMPORTRANGE |
| B3 | 配信回数(同上) | 同上 |
| C2 | 保存費用計算 | =CEILING(B2/100000,1)*5 |
| C3 | 配信費用計算 | =CEILING(B3/100000,1)*1 |
| C4 | 変換リクエスト費用(例) | =CEILING(10000/1000,1)*0.10 |
| C5 | 合計費用 | =C2+C3+C4 |
- CEILING が公式の切り上げ課金ロジックに相当します。
- 税率や為替レートを加味したい場合は、別列で係数(例:
1.10)を掛け算してください。
5. コスト最適化ベストプラクティス
| 項目 | 推奨アクション | 効果 |
|---|---|---|
| キャッシュヒット率向上 | Cache‑Control: max-age を長めに設定し、画像をエッジに常駐させる |
配信回数が減少し、配信費用が削減 |
| オンデマンド変換の抑止 | ビルド時に必要サイズだけ生成し、リクエストごとの変換を避ける | 変換リクエスト課金 $0.10/1k を削減 |
| 動画保存期間の見直し | 使用頻度が低い動画は Cloudflare Stream の「Archive」プランへ移行、または削除 | ストレージ単価 $5/GB‑month が大幅に削減 |
| 利用状況の定期モニタリング | 週次で metrics API を取得し、スプレッドシートで可視化 |
異常増加を早期発見し、予算超過を防止 |
6. シナリオ別概算コスト比較
| シナリオ | 画像総数 (枚) | 配信回数 (回) | 保存費用 ($) | 配信費用 ($) | 合計 ($) |
|---|---|---|---|---|---|
| 小規模ブログ | 100,000 | 50,000 | 5 | 1 | 6 |
| 中規模 EC サイト | 500,000 | 2,000,000 | 25 | 20 | 45 |
| 大規模メディア | 2,000,000 | 10,000,000 | 100 | 100 | 200 |
*上表は「画像のみ」かつ「変換リクエストなし」のシンプルケースです。動画やオンデマンド変換が加わると別途費用が発生します。
7. FAQ
| 質問 | 回答 |
|---|---|
| 2026 年の価格は公式に未公表なのでは? | 現在(2024‑12‑01)公開されている最新料金を「変更なし」と仮定して掲載しています。正式な 2026 年価格は Cloudflare のプレスリリースやドキュメントで確認してください。 |
| 課金単位の切り上げは 1,000 単位ですか? | 画像・動画の保存・配信は 100,000 単位 が最低課金ブロックです(公式ページ「Billing Units」参照)。従って ceil(usage / 100_000) が正しい計算式となります。 |
| 動画サポートの具体的な料金は? | 動画保存は $5/GB‑month、配信は $1/GB(公式「Video Pricing」)。詳細は Cloudflare Stream の価格表をご確認ください。 |
| 変換リクエストが大量にある場合の対策は? | ビルド時に必要サイズだけ生成し、オンデマンド変換を最小化するか、変換回数が多い場合は「Enterprise」プランで固定料金オプション交渉も検討してください。 |
| 為替レートの変動リスクは? | 請求は米ドル建てです。予算策定時は最新の為替レート(例:USD/JPY)を掛け合わせ、スプレッドシートで自動換算できるようにしておくと便利です。 |
参考リンク
- Cloudflare Images Pricing – 2024‑11‑30 更新版
https://developers.cloudflare.com/images/pricing/ - Video (Stream) Pricing – 動画保存・配信単価の公式ページ
https://developers.cloudflare.com/stream/platform/pricing/ - Billing Units(課金単位) – 料金切り上げロジック解説
https://developers.cloudflare.com/billing/reference/
本稿は執筆時点で入手可能な情報に基づき作成しています。価格改定や新機能追加があった場合は、必ず公式ドキュメントをご参照ください。