Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】[TypeScript]Cloudflare WorkersとDurable Objectsでオンラインゲーム作った(WebSocket)

2025年09月29日に「Zenn」が公開したITニュース「[TypeScript]Cloudflare WorkersとDurable Objectsでオンラインゲーム作った(WebSocket)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Cloudflare WorkersとDurable Objects、WebSocketを活用し、複数人で遊べるオンラインゲームを開発した。これはテトリスバトルで、これらの技術でオンラインゲームを比較的手軽に作れることを実証。ソースコードも公開している。

ITニュース解説

このニュース記事は、Cloudflareが提供する「Cloudflare Workers」と「Durable Objects」という技術を使い、WebSocket通信を利用してマルチプレイヤーのオンラインゲームを開発した事例について解説している。具体的には、テトリスバトルゲームが実際に作成され、そのソースコードも公開されている。この記事の狙いは、これらの技術がオンラインゲーム開発、特にリアルタイム性が求められるアプリケーションにおいて、いかに有効であるかを示すことにある。

まず、「Cloudflare Workers」について説明する。これは、ウェブサイトやアプリケーションの処理を、ユーザーに最も近い場所にあるサーバーで実行する仕組みである。通常、ウェブサイトにアクセスすると、世界のどこかにあるメインのサーバーにリクエストが届き、そこで処理されて結果が返される。しかし、遠いサーバーとのやり取りは通信の遅延(レイテンシ)を引き起こすことがある。Cloudflare Workersは、世界中に分散配置された「エッジ」と呼ばれる多数のデータセンターでプログラムを実行するため、ユーザーのリクエストは常に地理的に近い場所で処理される。これにより、非常に高速な応答が可能となり、ユーザーは快適な体験を得られる。さらに、Cloudflare Workersはサーバーの管理を開発者が意識する必要がない「サーバーレス」な環境を提供するため、インフラの構築や運用にかかる手間を大幅に削減し、開発者はアプリケーションのロジック開発に集中できるというメリットがある。

次に、「Durable Objects」について解説する。これはCloudflare Workersの上で動作する特別な機能で、特定の「状態」を永続的に保持し続けるオブジェクトを作成できる。一般的なWorkersは、個々のリクエストごとに独立して動作し、以前のリクエストの状態を直接引き継ぐことはない。しかし、オンラインゲームのように複数のプレイヤーが同じゲームの状態(例えば、テトリスのブロックの配置やスコア、チャット履歴など)を共有し、リアルタイムに同期させる必要がある場合、この「状態を保持する」機能が不可欠となる。Durable Objectsは、特定のIDを持つインスタンスが一つだけ存在し続けることを保証する。これにより、複数のWorkersのリクエストやWebSocket接続が、その一つのDurable Objectインスタンスに集約され、そのオブジェクトが持つ共有された状態を安全に読み書きできる。これにより、分散システムでありながら、まるで単一のサーバー上でプログラムが動いているかのように、一貫性のある状態管理を実現できるのである。オンラインゲームでは、各ゲームセッションに固有のDurable Objectを割り当てることで、そのセッションに参加するすべてのプレイヤーが共通のゲーム状態を参照し、操作できる仕組みを効率的に構築できる。

そして、「WebSocket」について理解することは、リアルタイムなオンラインゲームを開発する上で非常に重要である。従来のウェブ通信の主流であるHTTPは、クライアント(ウェブブラウザなど)がリクエストを送り、サーバーがそれに応答するという一連の流れが基本であり、サーバーから能動的にクライアントへデータを送ることはできない。しかし、WebSocketは、一度クライアントとサーバー間で接続を確立すると、その接続が維持され、双方向でリアルタイムにデータをやり取りできるプロトコルである。これにより、プレイヤーの操作(キー入力など)がサーバーに瞬時に伝わり、サーバーでのゲームの状態変化(ブロックの落下、相手の操作結果など)も即座にすべての接続中のクライアントに通知される。オンラインゲームでは、プレイヤーのアクションやゲームの進行状況を毫秒単位で共有する必要があるため、WebSocketのリアルタイム性と双方向性は不可欠な技術である。

これらの技術を組み合わせることで、オンラインゲーム開発は非常に効率的かつ強力なものとなる。Cloudflare Workersのエッジ処理能力によって、ユーザーは低遅延でゲーム操作を行える。Durable Objectsは、その低遅延の環境下でゲームセッションごとの永続的な状態管理を可能にし、複数のプレイヤーが同期してゲームをプレイするための土台を提供する。そしてWebSocketは、プレイヤーとゲームサーバー(Durable Object)間のリアルタイムなデータ交換を担い、ゲーム体験の没入感を高める。記事で紹介されているテトリスバトルゲームは、まさにこれらの技術が連携して動作する具体例であり、99人同時接続が可能かは不明とあるものの、この技術スタックがマルチプレイヤーゲームを「簡単に作れる」とされている理由を実際に示したケースである。ソースコードが公開されていることも、これらの技術を学習し、実際にオンラインゲーム開発に挑戦したいと考える初心者にとって大きな助けとなるだろう。このように、Cloudflare Workers、Durable Objects、そしてWebSocketの組み合わせは、リアルタイム性の高いアプリケーション開発において、今後ますます注目される技術スタックである。

関連コンテンツ

関連IT用語