CEDEC 2025 レポート:サーバー未経験でもOK!GS2で支える100万DAU大型IPゲームのアウトゲーム開発秘話

CEDEC 2025 レポート:サーバー未経験でもOK!GS2で支える100万DAU大型IPゲームのアウトゲーム開発秘話

100万DAU規模のゲーム開発を支える「Game Server Services」について 、SDKの選び方や 、開発・運用を効率化する具体的なノウハウを解説します
2025.07.28

こんにちは。ゲームソリューション部の出村です。

本記事では、「サーバー未経験でもOK!GS2で支える100万DAU大型IPゲームのアウトゲーム開発秘話」というセッションに焦点を当て、その内容をレポートします。GS2を利用した大規模ゲームのサーバーサイド開発にご興味のある方におすすめです。

セッション内容

100万DAUを記録した大型IPゲームのサーバー側を支えているGame Server Services。
Game Server Servicesがどういうサービスかの説明に加えて、開発を通じて遭遇した様々な課題を乗り越えた過程と、リリース後安定して運営するために工夫した点について説明します。

内容について

本セッションは、Game Server Services様が開発する「Game Server Services (GS2)」を実際に利用して、大規模な放置型RPGを開発・運用した際の実践的なノウハウが共有されました。

サービス紹介

まず、GS2がどのようなサービスであるかが紹介されました。GS2は、Unityと組み合わせて利用されることが多く、特にモバイルゲームのサーバー機能開発を強力にサポートするBaaS(Backend as a Service)です。セッションでは、同様のサービスであるPlayFabやUnity Gaming Servicesとの比較も交えながら、GS2の立ち位置や特徴が説明されました。サーバー開発の経験がないチームでも、複雑なアウトゲーム(ゲーム本編以外の要素)を効率的に実装できる点が大きな魅力であるとのことです。

開発・運用フェーズの知見

セッションの核心部分である、開発・運用フェーズで得られた具体的な知見について、非常に詳しく解説されました。

どのSDKを利用するべきか

GS2では、用途に応じて複数のSDKが提供されており、プロジェクトの特性に合わせて最適なものを選択することが重要です。

Unityで利用できるSDKとしては、手軽に扱える順に「GS2 UIKit for Unity」、「GS2 SDK for Unity」、「GS2 SDK for CSharp」の3つがあります。

これらの3つのSDKの使い分け方について説明します。
コードの記述を最小限に抑え、コンポーネントの調整で開発を進めたい場合は「GS2 UIKit for Unity」が最適です。

一方、データのキャッシュ処理や認証などをSDKに任せつつ、コードでの柔軟な実装も行いたい場合は「GS2 SDK for Unity」が推奨されます。

そして、キャッシュ管理などをすべて自前で実装し、最大限のパフォーマンスと自由度を求める場合は、APIのみを提供する「GS2 SDK for CSharp」を選択することになります。

今回のプロジェクトでは、キャッシュ制御を独自に行いたいという要件があったため、「GS2 SDK for CSharp」を採用したそうです。

GS2 Scriptの活用

GS2には、サーバー上でLuaスクリプトを実行できる「GS2 Script」という強力な機能があります。これは、PlayFabで例えるならばCloudScriptに相当するものとなります。

この機能を活用することで、クライアント側の実装を複雑にすることなく、安全にサーバー権限での処理を実行できます。例えば、API呼び出し時の検証や、キャラクターのレベルアップ時に複数の報酬を付与するといった処理を、トリガースクリプトとして設定することが可能です。

疑似個人サーバーの作成

ゲーム開発では、エンジニアだけでなくプランナーなどの他職種のスタッフが、開発中のゲームデータを確認・調整する場面が頻繁に発生します。その際、各々が独立した環境で作業できることが望ましいです。

この課題を解決するため、GS2のNamespace機能を活用して、開発者ごとに「疑似的な個人サーバー」を構築する方法が紹介されました。具体的には、クライアント側で参照する環境名(例:dev1)を指定すると、ベースコードが自動的に対応するNamespace(例:CharacterShop_dev1)のデータを参照しにいく、という仕組みを構築したとのことです。これにより、他の開発者の作業に影響を与えることなく、安全にデータ調整が可能になります。

ユーザーデータインポートの活用

運用フェーズにおいて、ユーザーからの問い合わせ対応は非常に重要です。特に、特定のユーザーデータでしか再現しない不具合の調査は困難を極めます。

GS2には、特定のユーザーデータをエクスポートし、別のユーザーアカウントにインポートする機能があります。この機能を活用することで、不具合が発生しているユーザーのデータを開発環境にコピーし、原因調査を効率的に進めることができます。また、プロジェクトを跨いでデータをインポートすることも可能なため、本番環境のデータを開発環境で再現するといった対応も容易です。

GS2 Logの活用

デバッグから運用中のユーザーサポートまで、サーバーログは安定したサービス運営に不可欠な要素です。

GS2では、各サービス(機能)ごとにログ設定を行うことができ、セッションでは基本的に全てのコンテンツでログ設定を有効にすることを推奨していました。特に、課金などのセンシティブな情報を扱う場合は、専用のログNamespaceを区切って管理することが望ましいとのことです。

また、取得したログはAWS FirehoseやGCP BigQueryといった外部サービスに連携させることも可能で、高度なデータ分析にも対応できます。

CDK (Cloud Development Kit) + Gs2Deployの活用

開発、ステージング、本番といった複数の環境を管理する上で、各環境の再現性を担保することは非常に重要です。

この課題に対し、GS2ではCDKとGs2Deployというツールを用いて、インフラ構成やマスタデータをコードで管理する方法を推奨しています。

CSVなどのマスタデータファイルを元にCDKでGs2用の設定ファイル(Yaml)を生成し、それをGs2Deployで各環境に適用します。この一連の流れをJenkinsなどのCI/CDツールを利用して自動化することで、ヒューマンエラーを防ぎつつ、迅速かつ正確にデータ更新をデプロイすることが可能になります。

感想・雑感

今回のセッションは、GS2という具体的なサービスを題材に、大規模ゲーム開発の裏側にある非常に実践的な知見が数多く共有されており、そういう意味では貴重な講演でした。サーバー開発の経験が浅い開発者でも、GS2のようなBaaSを活用することで大規模プロジェクトを成功に導ける環境が構築できるのは、うれしい人も多いかと思います。

SDKの選定方針から、ログ設計、CI/CDによるデプロイの自動化まで、開発から運用までの一連のフェーズで役立つ具体的なノウハウが満載でした。同様の課題を抱えているプロジェクトや、これからGS2の導入を検討しているチームにとって、非常に参考になるセッションだったと感じます。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.