コロプラでは、日々のタイトル運用を円滑に行うため、ゲームアプリケーションを支える多くのツール群を用意しています。
以前「コロプラのゲーム開発/運用におけるツール/機能の一部を紹介」という記事で開発を支援するツール・機能を紹介しました。
前回はゲーム開発者向けのツールについての話が中心でしたが、今回は「マスターデータ操作」「お問い合わせ・調査対応」といった機能を提供するゲーム運用者向けのツール(以下:管理ツール)について取り上げたいと思います。
管理ツールについて
コロプラでは運用チームが、ゲームデータの設定や調査業務などの運用作業を画面上で行えるようにするための「管理ツール」と呼ばれる運用ツールが存在します。
管理ツールでは業務システムやWEBアプリケーション等における管理画面の機能に加えて、デバッグ機能や補填機能のようなモバイルゲーム特有の要件の機能にも対応しています。
以降の章では、管理ツールの個別の機能とそれにより解決される運用上の課題について紹介します。
マスターデータ管理機能
モバイルゲームにはイベントの開催期間やその内容、キャラクター・アイテムとその属性値といった、マスターデータと呼ばれるゲーム内の共通パラメータ群のデータがあります。
マスターデータの詳細については過去の記事もご覧ください。
マスターデータは施策リリースやゲーム内バランス調整に合わせて追加・更新を行います。特にモバイルゲームでは運用上1施策当たりで更新するデータの量が非常に多いことと、短いリリースサイクルで頻繁に更新しなければならないという特徴があります。
過去にコロプラではマスターデータの入力をExcelで行い、バージョンをGitで管理し、また自身が更新した差分のみをデータベースに投入してゲームに反映していました。
しかしながらこの方法では、担当者が増えるにつれて以下のようにデータ設定作業がスケールしないという問題に突き当たることになりました。
- 1つのテーブルにつき1つの Excel を用意していたため、各施策がどのExcelを利用しているか判別し辛く、これに起因するデータ反映漏れの発生
- Git管理された単一のExcelを複数人が編集することによるコンフリクトが頻発し、修正作業にかかる時間の増加
- 各担当者が自身の更新差分のみ抜き出し反映することによる作業時間の増加
- 一連の運用フローの習得コストが高いことによる、プロジェクト参画者がデータ入力作業に着手するまでの期間の増加
そのため、現在はデータの入力ソースをGoogleSpreadsheetに移行しデータの共同編集に対応すると共に、以降のデータ変換・反映処理を管理ツールで実施できるようにしています。
GoogleSpreadsheetではデータのオンライン編集によりそれまでリモートレポジトリとのフェッチ毎に発生していたコンフリクトを防ぐと共に、施策毎にデータをまとめることで必要なデータを管理し易くしています。
管理ツールでは画面上で指定したワークシート内の設定値をGoogleWorkspaceAPI経由で読み出し、既にゲームに反映されているデータとの整合性や型をチェックした上で、データベースのスキーマに対応するデータ構造にマッピングし直した上で保存するようにしています。*1
データ反映時には既にデータベースに反映されているデータとの差分を抽出・画面上で表示し、反映漏れや意図しない差分が発生していないかの確認を行えるようにしています。
この時点で依存関係にあるデータが足りない場合や、アプリケーションで個別に設定しているルールを逸脱した値が設定されている場合は警告を表示するため、データの設定不備も未然に防いでいます。
施策機能毎のマスターデータはリリースまでに複数の検証環境でデバッグを行うため、各検証環境へのデータ反映をスムーズにするための環境間のデータ差分抽出・同期機能も管理ツール上で提供しています。
転送元・転送先の検証環境を指定して実行することで、一方の環境のデータベースのマスターデータをdumpし、もう一方の環境のデータベースに転送してデータの同期を行います。
こちらも同様に反映前に画面上で環境間のデータ差分を確認できるようにしています。
開発中に先行して本番リリースされたマスターデータを取り込んだり、複数の環境上に同じデータを展開してデバッグを行うケースで利用しています。
ゲームバージョン管理機能
モバイルゲームの運用中にはアプリのアップデートを頻繁に行います。
アップデートには新しいゲーム内コンテンツの反映や不具合修正などが含まれます。
運営としてはユーザーに最新のアプリバージョンを提供したい一方で、いきなりアップデートを強制すると一部のユーザーはゲームを中断しなければならず、外出中のユーザーはモバイルデータ通信下で大容量データのダウンロードが発生するという不都合があります。
そういったケースへの配慮として、強制バージョン・推奨バージョンの2種類の状態を管理ツールで設定し、順次最新のアプリバージョンが行き渡るようにしています。
強制バージョンとは、それ未満のアプリではゲームを遊べない"必須バージョン"の状態ですが、推奨バージョンは一定のタイミングで最新のアプリバージョンへ更新を促すメッセージを表示する一方で下位バージョンのアプリでも引き続きゲームを遊べるという状態です。
はじめは推奨バージョンを設定し、ユーザーが任意のタイミングでアプリバージョンを更新するのを伺いつつ、全体のアプリバージョンの引き上げが必要になったタイミングで強制バージョンを設定し切り替えるという運用を行っています。
このように一度に最新のバージョンを強制するのではなく、推奨バージョンによる移行期間を間に設定することでゲーム体験を維持しつつユーザーに最新のアプリバージョンを提供できるようにしています。
ログ管理機能
モバイルゲームの運用では Webサーバーが残すアクセスログ、エラーログといったログの他に、 ユーザーの行動ログやクライアントアプリのパフォーマンス監視用のログ等を大量に収集しています。
これらはログの種類によってDBやBigQueryといった複数のデータストアに格納されており、施策の分析や不具合・トラブルの調査に活用されます。
しかし、各ログを収集するにはサーバーエンジニアがサーバやログサービスの管理コンソールにログインして調べる必要があり、
実際にはマスターデータを含む復数のデータを突き合わせての整形作業が伴うため、調査依頼の度に実施するには作業コストが高く、結果を得るまでに時間もかかってしまいます。
そのため、よく参照するログに関しては管理ツール上で表示できるようにしています。
例えば、ユーザー毎の詳細画面からは、ユーザーのクエストの進行状況やアイテムの消費履歴といったゲーム内の行動履歴を引けるようにし、ログの情報にユーザーデータやマスターデータを併せて表示することで、関連する情報をすぐに参照できるようにしています。
これにより運用チームがエンジニアを通さずに必要なログを参照することができたり、簡単な不具合調査やデバッグ中の挙動確認を行うことができたりと、非エンジニアでも必要なログを簡単に得られるため双方の業務効率化に役立っています。
補填機能
ゲーム内で不具合が発生してしまった際に修正対応の後で影響範囲内のユーザーにお詫びとしてアイテムを補填する場合がありますが、影響範囲がシンプルに抽出できるものに関しては管理ツールから対象範囲を選択して補填作業を行えるようにしています。
それまではログやデータベースから影響範囲内のユーザーを手動で割り出し、都度補填用のプログラムを作成していたため、対応を終えるまで時間がかかる上にエンジニアが開発作業を止めて補填作業に専念しなければならないという課題がありました。
そのため、同等の作業を画面上で完結できる仕組みを管理ツール上に実装し、抽出条件のテンプレート(対象期間・ユーザーIDの個別指定等)を選択し、具体的な数値と補填内容を指定することで一括で補填を行えるようしています。
この機能によって補填対応が発生してしまった場合でも、担当者が開発作業を止めることなく短い時間で作業を行えると同時に、一連の不具合対応を完了するまでのリードタイムを短縮しています。
最後に
いかがでしたでしょうか。
今回記事で取り上げなかった機能も多くありますが、エンジニアが介在せずとも運用作業ができたり、定型作業を簡単に実行できたりと管理ツールだけでも運用に大きく貢献していることを理解いただけたかと思います。
管理ツール以外にも多くの運用支援ツールが存在するため、これらもまたの機会に紹介していく予定です。
*1:最終的にアプリケーションサーバーのキャッシュに保存し負荷軽減を図っています。