ひとことで言うと
Cloudflare R2はS3互換のオブジェクトストレージです。ファイルをバケットに入れてパブリックアクセスを許可するだけで、`https://<カスタムドメイン>/index.html` のようなURLで誰でも閲覧できる静的ファイルホスティングが成立します。サーバーを立てる必要がないため、AIが出力したHTMLをそのままアップロードして即時公開できます。
S3と最大に違う点はデータ転送料(エグレス)が無料であることです。S3では外部への転送量に応じて課金されますが、R2はCloudflareのネットワーク上で配信するためエグレス課金が発生しません。月10GBまでの保存と100万回のクラスAオペレーションが無料枠に含まれており、小規模なHTMLプレビュー配信ならほぼ費用がかかりません。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
HTML共有で関係する場面
デザインレビューや提案資料として単一HTMLファイルを関係者に送る場面でR2がよく使われます。ファイルをバケットにアップロードしてパブリックURLをSlackやメールで共有するだけでよく、受け取る側はCloudflareアカウントを持っていなくてもブラウザで開けます。ギガサイト便のような共有サービスはこのR2の仕組みを内部で利用しています。
AIツール(Claude・ChatGPT・v0など)が生成したHTMLを試験的に公開するケースでもR2は有効です。一時的なプレビューURLを発行して確認が終わったらオブジェクトを削除するサイクルが低コストで回せます。ただしバケットをパブリックにした場合はURLを知っていれば誰でもアクセスできるため、機密性の高い内容にはアクセス制限の追加が必要です。
よくある誤解
「R2はデータベースとして使える」という誤解が初心者に多く見られます。R2はあくまでファイル(オブジェクト)の保存場所であり、SQLクエリや行単位の検索はできません。HTMLに動的なデータが必要な場合は別途Cloudflare D1やWorkers KVを組み合わせる必要があります。
もう一つよくある誤解は「バケット名がURLに含まれない」という思い込みです。R2のデフォルトドメイン(`*.r2.dev`)を使う場合はバケット名がURLに現れますが、カスタムドメインを設定すればシンプルなURLにできます。また、`*.r2.dev` の公開アクセスはCloudflareのダッシュボードで明示的に有効化しないと機能しません。
安全に使うための注意点
HTMLファイルにAPIキーや個人情報が含まれていないかをアップロード前に必ず確認してください。R2でパブリック公開したオブジェクトはURLさえ分かれば誰でも取得できるため、ソースを開けばそのまま機密情報が見えてしまいます。テキストエディタで `api_key` や `Bearer ` などのキーワードを全検索する習慣をつけましょう。
不要になったオブジェクトは速やかに削除することも重要です。R2にはオブジェクトの有効期限(TTL)を設定するライフサイクルルールがあり、「30日後に自動削除」のような設定が可能です。共有期限が決まっているレビュー用HTMLなら、ライフサイクルルールを最初から設定しておくと削除忘れを防げます。
よくある質問
R2のパブリックバケットに置いたHTMLはGoogleにインデックスされますか?
URLがクロールされれば原則インデックスされます。不要な場合はHTMLの`<head>`に`<meta name="robots" content="noindex">`を追加するか、バケットへのアクセスをパスワード認証付きのサービス経由にしてください。
複数のHTMLファイルをまとめてアップロードしてZIP展開することはできますか?
R2自体にZIP展開機能はありません。展開済みのファイル群をそのままアップロードするか、ギガサイト便のようにZIPを受け取って展開・配信してくれるサービスを利用してください。
R2の無料枠を超えた場合の料金はどのくらいですか?
保存料金は月10GBを超えた分について1GBあたり約0.015ドル、クラスAオペレーション(書き込み)は100万回超で1万回あたり4.50ドルです。エグレスは引き続き無料のため、読み取りが多いHTMLサイトでもコストは抑えられます。