【TECH BLOG #46】タイムマシン運営とコードマージ

グリーエンターテインメント株式会社 エンジニア部のM.Sです。
今回は「タイムマシン運営」の具体的なクライアント作業についてお話しいたします。
タイムマシン運営とは、既存のゲームタイトルを別のプラットフォームや地域などで運用する際に、開発元の運用状況と時差が発生する場合の運用を指します。
例えば、開発元との運用開始が1年分ずれていた場合、そのままゲーム内のイベントやアップデートを1年分ずれたまま運用する手法です
コードマージ運用について
私たちが手掛けるあるプロダクトでは半年ごとにコードマージ作業を行なっております。
コードマージとは、ソースコードやリソースデータを、運用中のコードに取り込む作業となります。
半年分の未来の施策が含まれるため、コードマージに加えて、施策のリリース時間を制御する仕組みなどを実装し運用していました。

大まかなコードマージの手法として、半年の間に新たに追加された開発元のデータをベースに、弊社で開発した内容を移植するという対応を行なっていました。
これまでに弊社にて追加実装した分を抽出し、新しいバージョンにマージを行います。
開発元のデータをベースとすることのメリットとしては、コード上で競合となる事象が発生した時に考慮すべき内容が弊社内で開発した内容が中心になるため、確認が容易になることです。
コードマージ作業の工夫
競合に備えたマーキング
マージを行う時に最も注意が必要なことは、マージの際に競合が発生することです。
弊社内でイベントの時限公開の追加実装等を行なった箇所とバージョン更新で開発元のコードが変わった箇所が競合するケースがありました。
そこでポイントとなるのが、弊社で実装するときにできるだけ元のコードを残すということです。
具体的な例をご紹介いたします。

こうして元のコードを残しつつ、弊社内でどのような対応をおこなったかを分かりやすくすることによって、競合が発生したときの対応の判断を正確に速く行うことに役立ちます。
実装項目の管理
施策のリリースの制御の管理も重要です。
新しいバージョンでは既にリリース済みの施策が前提となるコードとなっている場合があるため、以前の制御が不要な場合は削除を行う必要がありました。これにより、不要な制御処理によって予期せぬ動作を起こすリスクを防ぎます。
これらの管理のために、リリースの制御を行なった施策などを管理し、コードマージごとに確認すべき項目をシートにまとめていたりしています。
ライブラリの更新
また、タイムマシン運用において注意が必要な箇所として使用ツールやライブラリのバージョン問題が発生します。
これは、タイムマシン運用でマージ元のライブラリが古いことにより発生します。
各プラットフォームから求められるSDKのバージョンなどにより、新しいバージョンのライブラリに更新が必要になる場合がありました。
代表的な例で言えば、AndroidのGooglePlay BillingLibraryのバージョンです。
ただライブラリを更新するだけでなくGradle等のビルドツールも併せて更新が必要になり、それに伴い別のライブラリとの互換性がなくなる、ということがありました。したがって、影響が広範囲になることを考慮して十分なスケジュールを確保する必要があります。
このように弊社ではコードマージを行う際に、マージ作業の他に、ライブラリの調整やゲーム内を十分に動作検証できる期間を考慮して半年前にはスケジュールを計画し、3〜4ヶ月前には作業を開始していました。
最後に
このように、タイムマシン運用は一般的な開発運用とは異なる作業や、タイムマシン運用ならではの問題がありました。
このような経験を積み重ね、次の機会やその他の案件にも活かせるようになることで、より柔軟な運用に対応できる体制へ強化してまいります。
様々な形態の運用を行う事で、ゲーム市場を盛り上げていくことに貢献していきたいと考えています。
本件に関するお問い合わせ先
グリーエンターテインメント株式会社 広報担当
東京都港区六本木6-11-1 六本木ヒルズゲートタワー
E-mail:info-ent@ml.gree.net