1. トップ
  2. ノート
  3. ゲームを Cloudflare で運営する準備
開発記録 約11分で読めます(5,554字)

個人開発のブラウザゲームを、
Cloudflare で運営する準備をした記録

みんなで遊ぶブラウザゲームを、月0ドルの試験環境から、公開できる形へ。負荷テスト、料金、セキュリティ、広告。公開前にやったことを全部書きます。

この記事は 2026年10月22日時点の情報です

「ティア人狼」という、何人かで集まって遊ぶブラウザゲームを作っています。ルールはまだ秘密ですが、遊ぶ人が部屋を作り、お題を選び、写真を投稿したり投票したりする、いわゆる「みんなでワイワイ系」のゲームです。

ゲーム自体はひと通り遊べるところまで来ました。でも、友だちと遊べるのと、知らない人がたくさん来ても困らないのとは、まったく別の話です。このノートでは、公開に向けて AI と一緒に整えた「運営の土台」の話を書きます。

3行でいうと
  1. Cloudflare の4つのサービスを組み合わせて、試験環境は月0ドルで動かしている
  2. 100人分の負荷テストで遅さの原因を見つけ、書き込みを減らして、100人のときの応答を約20分の1に縮めた
  3. AI と点検したら、非公開の写真を他人が見られる穴が見つかった。広告は遊ぶ画面から離して置く

全体のしくみ

ゲームは、借りた1台のサーバーで動いているわけではありません。Cloudflare の4つのサービスを組み合わせています。

プレイヤーのスマホとPCはWorkersにつながり、WorkersがD1(記録)とR2(写真)を使う。運営者はZero TrustのAccessで本人確認してから運営画面に入る、という構成図 プレイヤー スマホ・PC 運営者(私) お題の審査など Access 本人確認の鍵 Workers ゲームを動かす D1 部屋・お題の記録 R2 投稿された写真
遊ぶ人の入口と、運営者の入口を分けている
  • Workers:ゲームのプログラムを動かす場所。投票を受け付けたり、進行を決めたりする
  • D1:文字や数字を保存するデータベース。部屋の参加者、お題、いいねの数など
  • R2:写真などのファイル置き場
  • Zero Trust(Access):運営画面に入る人の本人確認。プレイヤーには関係なく、私だけが使う

実はこのゲーム、最初は ChatGPT の中でサイトを作れる機能の上で作っていました。そこから、自分の Cloudflare のアカウントへ引っ越した形です。

100人で遊んだらどうなる? 負荷テスト

このゲームは、遊んでいる人のブラウザが、0.5〜3秒おきに「部屋の状態は変わった?」とサーバーに問い合わせる作りです。人数が増えると、問い合わせの数も一気に増えます。

そこで、実際のプログラムを手元で動かして、10人から300人までの「議論している状態」を再現しました。測ってみて分かったのは、何も変わっていない問い合わせのたびに、不正操作を防ぐためのカウンターをデータベースに書き込んでいたことです。書き込みは読み込みより重いので、人数が増えるとそこが詰まっていました。

直したのは主に3つです。

  • カウンターは、まとめて8回分を先に確保して、手元で減らしていく形に。書き込みが約85%減った
  • 何も変わっていないときは、写真や履歴など表示用のデータを作らない
  • カウントダウンの表示や効果音の時刻合わせは、ブラウザの時計で進める。毎秒聞きに行かない
手元のテスト(議論中)書き込み 直す前直した後95%が収まる応答時間
50人1,149回187回1,501 → 71ミリ秒
100人1,801回383回1,208 → 54ミリ秒
300人2,948回1,256回3,616 → 1,029ミリ秒
2026年10月12日、実際のゲームの処理を手元の PC で約12秒ずつ動かした結果。エラーはどれも0件

Cloudflare の上でも、100人分の問い合わせを8秒間流して比べました。95%が収まる応答時間は1,414ミリ秒から831ミリ秒に縮んでいます。

ただし、これは「100人で遊べる保証」ではありません。

手元の PC と Cloudflare の環境は違いますし、8秒の測定は長時間の運営とも違います。スマホの描画の重さや、通信の悪い場所での遊び心地も測っていません。記録にも「300人でエラー0でも、5ドルで300人を保証できるとは扱わない」と書いてあります。数字は、正しく読まないと自分をだますので。

負荷テストでは、うっかり本物の部屋を13個作ってしまいました。非公開なので他の人には見えませんが、閉じられない状態だったので、24時間で消えるのを待ちました。次からは、閉じられる待機室だけを使う形に直しています。

サーバーの料金を比べた

いまの試験環境は、Cloudflare の無料プランで動いています。ただ、無料の Workers は1日10万回までしか受け付けません。さっきの「数秒おきの問い合わせ」だと、100人が1時間遊ぶだけで24万〜72万回になる計算なので、公開するなら有料プランが必要です。

候補始まりの料金このゲームでの手間
Cloudflare Workers Paid月5ドル〜今の作りのまま使える
Fly.io月2.19ドル〜データベースや保存先を作り直す必要あり
Render月7ドル〜同上
Hetzner(VPS)月5.49ユーロ〜サーバーの保守も自分でやる。日本からは遠い
2026年10月12日時点の各社の公式料金ページから。税・為替は別

いちばん安いのは Fly.io ですが、作り直しの手間を考えると、Cloudflare の有料プランが第一候補になりました。月5ドルには1,000万回の受け付けと3,000万ミリ秒分の処理時間が含まれます。ただしこれは「最低料金」で、上限ではありません。超えた分は追加で払うことになります。

写真の置き場(R2)は、保存10GB分までは無料で、外への転送料もかかりません。1枚100KBに縮めて保存すると、お題1,000個分(写真1万1,000枚)でも約1.1GBです。そのため、写真は投稿する前にブラウザの中で小さくしてから送るようにしています。

AI と一緒にセキュリティを点検した

2026年10月8日、AI と一緒にコードを点検しました。いちばん大きかったのは、非公開の写真を、他人が見られてしまう穴です。

写真を見せていいかの確認が、「その写真の URL が、公開されているお題のどこかに書かれているか」で判定されていました。つまり、悪意のある人が、公開するお題の説明文に他人の非公開写真の URL を書き込めば、その写真が見られてしまう。直したあとは、表紙や項目の写真の欄だけを見て、そのお題が公開中か、自分が参加している部屋のものかを確かめるようにしました。

ほかにも、点検ではこんなことを確かめています。

  • 運営画面:Cloudflare が発行した入場証の署名・期限・宛先まで確かめる。メールアドレスが書いてあるだけの通信は信用しない
  • 投稿できる写真:PNG・JPEG・WebP だけ。縦横4,096ピクセル、600KB まで。SVG や HTML は受け付けない
  • ほかのサイトからの操作:ほかのサイトから勝手に投票や投稿を送らせる攻撃(CSRF)を断る
  • 連打への上限:1分間に送れる回数、1日に作れる部屋の数などに上限をつける

記録の最後には「これは範囲を決めた点検で、穴がないことの保証ではない」と書いてあります。AI に点検してもらうと速いですが、それで安心しきらないことも大事だと思っています。

遊ぶ人が投稿する画像と、権利の話

このゲームでは、遊ぶ人が自分でお題を作って、写真を添えて公開できます。ここで避けて通れないのが、投稿された画像の権利です。好きなお菓子の写真、好きな作品のキャラクターの絵。どこまでなら載せていいのか。広告を載せるなら、なおさら考えないといけません。

2026年10月8日、AI と一緒に、ほかのサービスの規約や文化庁の説明を読み比べて、運営の方針を決めました。法律の専門家の意見ではなく、私のサービスでの判断ですが、考え方はほかの投稿サービスでも使えると思います。

文字と画像を分けて考える

投稿の例私の方針
「好きなお菓子」で、商品名を文字で並べる名前が入っているだけでは禁止しない
好きな作品名やキャラクター名を文字で並べる名前で対象を指すのと、絵や台詞を写すのは別。名前だけなら禁止しない
自分で描いたオリジナルの絵、自分で撮った写真使ってよい
自分で描いた、既存のキャラクターのファンアート自作でも、元の作品の権利が残る。権利者のガイドラインの範囲かを確かめる
他人のファンアートを保存して投稿元の作品と、その絵の作者、両方の許可が要る
公式の画像、アニメの画面、漫画のコマ、通販サイトの商品写真「ネットで公開されているから」では使えない

ファンアートのところは、文化庁の説明がとても分かりやすかったです。元の作品に新しい表現を加えた「二次的著作物」には、描いた人の権利が生まれる。でも、元の作品の創作的な部分の権利は、元の作者に残ったまま。だから「自分で描いたから自由」にはなりません。

出典を書くだけでは、転載の許可を得たことにはならない。

通報されたら、どうするか

  • ふつうの通報は、10件たまったら運営の確認の一覧に載せる。運営が自分で気づいた問題は、10件未満でも対応する
  • 権利の侵害の通報は、件数に関係なく確認する
  • 通報されたというだけで、侵害だと決めつけない。内容を見て、確認・一時停止・削除を判断し、理由を記録に残す

広告を載せる画面には、確認済みのものだけ

AdSense のヘルプには、広告を載せたページに表示される利用者の投稿も、サイトの運営者がポリシーを守っているか確認する責任がある、と書かれています。なので、まずは運営が中身を確認できる公式のお題や遊び方のページだけを、広告の候補にしました。誰でも投稿できる部分を表示する画面は、確認の仕組みが整ってから広告を有効にします。

広告だけで運営する方針

このゲームは、遊ぶ人にお金を払ってもらわず、広告で運営費をまかなう方針です。そのために、Google の公式の案内を読んで、置き方を決めました。

  • 広告を置くのは、ホームのお題一覧と遊び方の下だけ。待機室・試合中・結果の画面には置かない
  • Google の案内では、ゲームから150ピクセル以上離すか、ゲームのページには置かないことを強くすすめている。そこで操作する場所から160ピクセル離した
  • プレイボタンのすぐ横に置いて、うっかり押させるような配置はしない

ちなみに「AI で作ったサイトは広告審査に通らないのでは?」という心配も調べました。Google のパブリッシャー向けポリシーを読んだ範囲では、AI でコードを書いたことを理由に一律で断る決まりは見当たりませんでした。見られるのは、作り方ではなく、訪れた人にとって価値があるかどうかです。だからこそ、遊び方の説明やお題の選び方は、実際に遊んだ結果をもとに自分で書くつもりです。

公開までに残っていること

  1. 独自ドメインを取って、有料プランに切り替える
  2. iPhone・Android・PC を混ぜて、何人かで実際に遊ぶ。切断や復帰、同時の回答も試す
  3. 10人 → 50人 → 100人と、段階的に負荷を測る
  4. お題の通報や削除を、実際に回せる手順にしておく
  5. 広告の審査を申し込む
つまり何?

このノートから持ち帰れること

ブラウザゲームに限らず、個人で Web サービスを公開するときに使える考え方です。

  1. 遅さの原因は、まず「書き込み」を疑う何も変わっていないのに、毎回データベースに書いていた。読むより書くほうが重いので、人数が増えるとそこから詰まる。アクセスが増えてきたサイト、ログやカウンターを記録している仕組み
  2. テストの数字は、保証ではない手元で300人がエラー0でも、本番で300人を保証するものではない。どこで、何秒、何を測ったかを数字と一緒に書いておく。負荷テスト、ベンチマーク、AI が出した性能の数字
  3. 「最低料金」は「上限」ではない月5ドルは始まりの値段で、超えた分は追加になる。予算の通知は、止めてはくれない。クラウドの料金、AI の API の料金
  4. 投稿された画像は、文字と分けて考える名前を書くのと、絵を写すのは別。自分で描いたファンアートでも、元の作品の権利は残る。投稿型のサービス、SNS 運用、ブログの画像選び
  5. 広告は、確認できる画面にだけ載せる広告のある画面の投稿は、運営者に責任がある。未確認の投稿が出る画面には、広告を置かない。広告で運営するサイトやアプリ全般
個人で Web サービスを公開する前の、5つの確認
  • 無料枠を超えたとき、止まるのか、請求されるのかを知っているか
  • 運営画面に、本人確認の鍵がかかっているか
  • 投稿できるファイルの種類と大きさを、サーバー側でも制限しているか
  • 通報を受けて、確認・削除できる手順があるか
  • 広告を置く画面と、置かない画面を決めたか

やってみよう

記事と同じことを、手元の AI で試せる指示文です。ChatGPT・Gemini・Claude のどれでも使えます。AI は毎回ちがう答えを返すので、記事とまったく同じ条件にはなりませんが、考え方の練習にはしっかり使えます。実際にやってみてください。

練習1公開前のチェックリストを作る

個人で次の Web サービスを公開しようとしています。 (例:みんなで写真を投稿して遊べるゲーム / 予約フォームつきの店のサイト) 公開の前に確かめるべきことを、「お金」「セキュリティ」「投稿の管理」「広告」の4つに分けて、それぞれ5個ずつ挙げてください。

「上限を超えたら止まるのか、請求されるのか」が入っているか。

練習2投稿された画像、載せていい?

次の画像を、私のサービスで利用者に投稿してもらうことを考えています。 (例:好きなお菓子の写真、好きなアニメのキャラクターの絵、自分で撮った風景写真) それぞれについて、どんな権利の確認が必要か、日本の著作権の考え方にそって説明してください。法律の専門家ではないので一般論で構いません。最後に、確かめるべき公式の情報源も挙げてください。

「出典を書けば大丈夫」と言っていないか。言っていたら、それは間違いです。

練習3テストの数字を正しく書く

次のテスト結果を、読んだ人が誤解しないように、条件つきの文章に書き直してください。 「100人で遊んでもエラー0、応答は約0.05秒でした」 (テストは手元の PC で、約12秒間、議論中の状態だけを再現したものです)

「100人で遊べることを保証するものではない」が入っているか。

出典・参考にした情報

  1. Cloudflare Workers の料金(英語)
  2. Cloudflare R2 の料金(英語)
  3. Cloudflare Zero Trust のプラン(英語)
  4. Google AdSense ヘルプ:ゲームのページへの広告の配置
  5. Google パブリッシャー向けポリシー
  6. Google AdSense ヘルプ:ユーザー作成コンテンツの概要
  7. 文化庁:著作権に関する FAQ(二次的著作物)
  8. pixiv 共通利用規約(投稿者の責任と運営の対応の参考に)
  9. 負荷テストとサーバー選定、セキュリティ点検、運営方針の記録(2026年10月8日〜14日、自分の作業記録)

Cloudflare の料金は 2026年10月22日に確認しました。Fly.io・Render・Hetzner の料金は10月12日の記録の値です。ゲームのルールは公開前のため書いていません。下書きや図づくりには AI を使っていますが、事実関係は自分で確かめてから公開しています。

ウスイのアイコン

ウスイ福岡で個人開発をしています。アプリやゲームを作りながら、分かったことをこのノートに書いています。運営者・編集方針

次に読むなら

  1. 開発記録

    個人開発の Web ゲームを、月0ドルで動かしている。使っているサービスと「費用の台帳」

    どのサービスを、何のために、いくらで使っているか。1枚の台帳にまとめておくと、知らないうちにお金が出ていく事故を防げます。

  2. 疑問

    AI 系の個人開発者って、ぶっちゃけ稼げるの?【前編】

    AI のおかげで、作るのは本当に速くなりました。でも、それと稼げるかどうかは別の話です。まずはお金が出ていくところから、正直に書きます。

  3. はじめての開発

    GitHub と Cloudflare って何が違う? 個人サイトを20分で引っ越して分かったこと

    コードの置き場所と、サイトを配る仕組みは別もの。このサイトを実際に引っ越したときの手順とつまずきから、2つの違いを説明します。