ポノス株式会社:『にゃんこ大泥棒』小規模体制のゲーム開発の課題を Google Cloud で解決
Google Cloud Japan Team
「ななめ上を行く」夢中になれるコンテンツにより、世界中に笑顔をもたらすことを目指すポノス株式会社(以下、ポノス)。企業スローガンである「常識から 45 度ななめ上いけてるか?」な発想により生み出された新感覚のスマートフォン向けゲームアプリ「にゃんこ大泥棒」のプラットフォームに Google Cloud を採用。開発プロジェクトについて、リード エンジニアに話を伺いました。
利用している Google Cloud サービス:App Engine、Cloud SQL、Cloud Storage、BigQuery、Firebase
Google Cloud で小規模ゲーム開発の課題をクリア
「『にゃんこ大泥棒』の開発においては、たくさんの課題がありました。ユーザー対戦型というゲームの仕様は決まっていましたが、開発用のサーバーのめどが立たず、サーバー エンジニアも、開発メンバーも少なく、さらに開発コストも限られている。まさにないないづくしのスタートの中で開発に参加しました。」
こう話すのは、にゃんこスタジオ リードエンジニアである佐々木聡さんです。2019 年 10 月にリリースされた『にゃんこ大泥棒』は、『にゃんこ大戦争』と同じにゃんこのキャラクター、同じ世界観で開発されたスマートフォン向けゲームアプリです。他者のお城に忍び込んでお宝を盗み、自城では罠を仕掛けてお宝を守る、アクション性とストラテジー性を組み合わせた新感覚を楽しむことができるゲームとして人気を博し、現在は香港、台湾、日本で展開されています。
『にゃんこ大泥棒』では、当初、Firebase だけで開発する計画で進められていましたが、テストの段階で Firebase Realtime Database のパフォーマンスと対応するコスト感に課題が生じたことから再検討、ここで採用されたのが Google Cloud でした。
Google Cloud の採用を決めた理由を佐々木さんは、「Firebase との親和性が高い点と、コストの課題解決を優先し、Google Cloud を選択しました」と話します。
「小規模ゲーム開発ではよくある話かもしれませんが、まさに我々も、少人数、低コスト、サーバーレス、開発スピード の4つの条件をクリアしながら開発する必要がありました。これまでの開発の中で他社クラウド サービスも経験していましたが、費用対効果の良さ、サーバーのパフォーマンス、デプロイのやり易さや運用の安定感などから、Google Cloud は開発者にとっても安心感が高く、小規模体制のゲーム開発にも相性が良いと考えたのです。」(佐々木さん)
App Engine と Cloud SQL の組み合わせでメリットを最適化
2019 年 6 月から Google Cloud による開発を開始。Firebase Realtime Database の弱点であるクエリ機能の改善を第一に、リレーショナル データベースには Cloud SQL を選択、クライアントと通信するサーバー プラットフォームには、Cloud SQL に合わせる形で App Engine が選択されました。ユーザーデータの処理、ユーザーのマッチング処理、ユーザー対戦の勝利時、敗北時の処理、課金処理、フレンド協力バトルの操作処理などのすべてを App Engine 上で処理。Cloud SQL は、App Engine と常にコネクションを張っている状態で、Cloud SQL に蓄積されているデータをもとに、ユーザーデータのアップデートも行っています。
さらに、『にゃんこ大泥棒』で頻度高く利用される機能の一つでもある「相手のリプレイを見る」ためのデータは Cloud Storage で管理しています。「リプレイデータは圧縮しているので 1〜4KB 程度のサイズですが、プレイ中のアップロード頻度、ダウンロード頻度は高く、ある程度の速度が必要でした。Cloud Storage では、安定して 0.3〜1 秒ほどでのリプレイ再生を実現できており、ユーザーから速度に対するネガティブなフィードバックもほぼありません。」(佐々木さん)
ゲーム開発に数多く関わった自身の豊富な経験や知見から、常に最適を求めた選択を重ねてきた佐々木さんですが、今回導入したプロダクトについて次のように振り返ります。「実運用においては、Cloud SQL のコネクション数の上限を考慮する心配もなく、アクセス数が増えるほど App Engine のコストメリットを享受できるこの組み合わせは、結果的に良い選択だったと思います。開発の細かい点については随時 Google Cloud の担当者に相談できたのも助かりました。プロダクトの特性など的確な提案も受けられ、ゲームの環境や開発運用体制にあったプロダクトの選択が短時間で決断できたと思います。」
「実は機会に恵まれて、E.G.G. というゲーム業界で働くエンジニア向けの学習プログラムに参加して、Google Cloud 認定資格である Professional Cloud Architect を取得しました。ある程度 Google Cloud を理解していた私でしたが、改めて体系的に幅広く学ぶことで Google Cloud に対する理解が大幅に向上しました。こうした学習の機会を増やしてもらえると、サーバー開発エンジニアにとって非常に有益で、Google Cloud の利用の幅を広げていきやすくなるとも感じました。」(佐々木さん)
パフォーマンス・安定性を犠牲にすることなくコストに大きな効果
Google Cloud による実際の開発においては、特に大きな苦労や複雑な工夫に悩まされることはなかったという佐々木さん、サーバーレスによってインフラの手間が省ける恩恵は間違いなく大きいと語ります。
「オンプレミスで開発していたときには、規模に応じた台数のサーバーを調達し、時間をかけてデプロイするといった苦労を経験してきました。運用スケジュールと費用を考慮し適切なサーバー台数を決めるといったような作業に時間を割かざるを得ず、ゲームのクオリティーを上げるためのクリエイティブな開発に十分向き合えない状況がありました。Google Cloud では、デプロイもコマンド一つで、しかもかなり高速です。突然のスパイク発生には、App Engine がインスタンスの数を増やしてくれるので非常に安心ですし、安定時ではインスタンスの数を減らしてくれるので余計な費用が発生することもありません。このような”必要だが省略したい作業”を App Engine が自動化してくれたおかげで、エンジニア 1 人でもなんとかなったと考えています。」
コスト面に関しては、費用対効果の高さを一番のメリットだと佐々木さんは話します。「過去に経験したオンプレミスでの開発に比べ、実装コストで 50% 以上の人月をカット、インフラ費用も 1/100〜1/300 に削減できたほか、インフラ管理コストはほぼゼロにできました。また、実装コストが安いということは空いた時間分だけ別の対応が可能ということ。開発効率を最大限に高められたと思っています。特にユーザー対戦やマッチング、フレンドなどソーシャル要素があるゲームにおいて、パフォーマンスや安定性などを犠牲にせずに、費用を破格とも言える金額に抑えることができたのは大きな成果だと考えています。」(佐々木さん)
『にゃんこ大泥棒』の開発チームは、兼任メンバーも含めて 4~5 名の少数チーム。佐々木さんは「エンジニアは 2 名、私はリード エンジニア 兼 フルスタック エンジニアとして設計、クライアント実装、サーバ実装、ツール実装、分析、調査など、何でも対応しているのですが、Google Cloud の力を借りなければとてもじゃないですが業務が回らなかった」と笑います。
「Google Cloud がなければこのゲームは存在しなかった。それくらい選択した各プロダクトの機能、パフォーマンス、実装コスト、費用対効果、インフラ、などが優れていたからこそ、リリース及び安定運営できていると考えています。」(佐々木さん)
最後に今後の展望について話していただきました。「現在、Firebase と Google Analytics で連携しているデータを BigQuery 上で分析しています。今後は、Cloud Storage から Pub/Sub を経由して、BigQuery にデータを蓄積し、ユーザーのより詳細なアクションを分析することで、ユーザー体験の向上やシステムの改善につなげたいと思っています。また、現在の、香港、台湾に加え、マルチ リージョンもフル活用して、ヨーロッパ、アメリカにも展開を予定しています。」(佐々木さん)
にゃんこスタジオ リードエンジニア 佐々木 聡 氏
1990 年、画像処理技術会社として大阪市で創業。「求められるモノは創らない、それ以上を創り出す。」というビジョンに基づいて、スマートデバイス向けのオリジ ナルゲーム開発を核に事業を展開。求められるモノの中に、自分たちしか創れない価値をプラスしていくことを大切にしながら、ゲームを通してエンターテインメントという文化の発展に貢献することを目指しています。代表タイトルである『にゃんこ大戦争』は、2020 年 8 月現在で累計 5,400 万ダウンロードを超えています。
その他の導入事例はこちらをご覧ください。