D1データベース作成とテスト環境構築の手順 【CFW P2P心理戦ゲーム開発記】 #2

前回はゲームの構成アイデアと開発のベースとなるCloud Flare Workersのセットアップまでをまとめました。今回からゲームのベースとなるデータベースやマッチングシステムの開発に進みます。

開発フロー、データベース周りを作る

全体のデータフローイメージ図(今回はD1関連)

1. D1データベース作成とテスト環境構築

今回はD1データベースを設計していきます。Cloudflare D1は「SQLを用いたデータの検索・更新」ができるリレーショナルデータベースです。
実環境にいきなり実装すると修正や更新が大変なので、しばらくはローカル環境で開発しテストしていこうと思います。

ステップ 1:Cloudflare上にD1データベースを作成する

プロジェクトのルートディレクトリで、以下のコマンドを実行して、Cloudflare側に実体となるデータベースを作成します。

npx wrangler d1 create logic-buckshot-db

ここで、デフォルトのままでも動作しますが、デフォルト名だと少し長くてTypeScriptで毎回打ち込むのが面倒です。そのため、今回はシンプルに「DB」へと書き換えておきます。これで env.xxxx-xxxx-db のような長いコードではなく、Workerから env.DB という短い名前でスマートにアクセスできるようになります。

✅ Successfully created DB 'logic-buckshot-db'

[[d1_databases]]
binding = "DB" <-ここをデフォルトではなくDBとする。
database_name = "logic-buckshot-db"
database_id = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

ステップ 2:wrangler.json へバインディング設定を追加する

wranglerが、気を利かせて自動書き込みしますか?と提案してくれるのでyesで進めると.,wrangler.jsonに追記してくれます。確認するには、エディタで wrangler.json を開けば確認できます。
ここで、デフォルトでもよいですが、デフォルトだと”binding”が少し長く、typescriptで毎回打ち込むのが面倒なので、DBに変えておきます。これで env.~~~~-~~~-db のような長いコードではなく、WorkerからD1データベースに「env.DB」という名前でアクセスできるようなります。

{
  "name": "logic-buckshot-backend",
  "main": "src/index.ts",
  "compatibility_date": "2026-05-17",
  "durable_objects": { ... },
  "migrations": [ ... ],
  
  "d1_databases": [
    {
      "binding": "DB",<-ここがデフォルトだと長いので複数DBを使うとかではないなら短くしておくとよい
      "database_name": "logic-buckshot-db",
      "database_id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
  ]
}

ここで設定した名前とtypescriptでの呼び出し名が一致しないと以下のようにデータベースが見つからないとエラーが出ます。

名前が一致しないとデータベース接続エラー

ステップ 3:TypeScriptの型定義(Env)にD1を追加する

TypeScriptが「env.DB って何?」とエラーを出さないように、src/index.ts(または型定義ファイル)の Env インターフェースに D1 の型を追加します。

export interface Env {
  // 💾 D1データベース
  DB: D1Database;
  MY_DURABLE_OBJECT: DurableObjectNamespace<MyDurableObject>;
  
  // Assets配信用の内部バインディング
  ASSETS: Fetcher;
}

ステップ 4:ローカルテスト環境の疎通確認

スクリプトを更新し、接続結果を返すようにして確認してみました。

ローカルエミュレートDBとの接続成功

接続成功!

D1 Connection Success!
Response Result: 1

[logic-buckshot-backend] データベースとの通信に成功しました!

最後に

今回はデータベース作成とローカルでの接続チェックまでを行ってみました。次回はこの中身の設計をリレーショナルデータベースの理論をもとに考えてみようと思います。

関連記事と関連記述

CloudFlare Workersセットアップ
Cloudflare Workersの始め方:Wranglerによるローカル環境構築と世界公開の手順
【第1回】P2Pゲーム構成アイデア
Cloudflare Workers + WebRTCで創るP2P心理戦ゲーム開発記【第1回:構想編】

PR

もう一つの選択肢:VPSで自由なゲームサーバー構築

本連載ではCloudflare Workersを活用したP2P実装を進めていますが、もし環境の制約がなく、
「もっと使い慣れた言語で自由にゲームサーバーを立てたい」
「WebSocketなどの常駐プロセスをガッツリ回したい」

という場合は、VPS上に独自のシグナリングサーバーを構築するのも強力な正攻法です。

「テキストを読んで知識として知っていること」と、「実際に手元でLinuxサーバー(Ubuntuなど)を叩いて構築した経験」とでは、バックエンドへの理解の深さに大きな差が生まれます。

最近の海外サービスは「最初は無料・格安で普及させ、定着したタイミングで一気に値上げや制限強化に踏み切る」という戦略が多く、個人開発での新規参入や継続運用のハードルが高くなりがちです。

その点、日本の老舗である さくらのインターネット(さくらのVPS) は価格面でも運用の面でも圧倒的な安定感があり、個人的にとても信頼して推しています。

「海外サービスの急な仕様変更に振り回されたくない」「自分のインフラ拠点を国内に1つ持っておきたい」という方は、ぜひ一度触ってみてください!

次回予告

一意性とか正規化など理論では学んだことがあるという人は多いと思いますが、実際に作ってみる実例を見るとまた1つ面白いと思うので、お楽しみに。

次回D1データベーススキーマの設計
関連記事は、2026年6月11日に公開予定 (あと29分)

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero