【CEDEC 2020】『Fate/Grand Order』で並行開発時に1日3回のブランチ間マージを自動化した手法とは…定期的なコンフリクトの解消方法も
コンピュータエンターテインメント協会(CESA)は、9月2日~4日の期間、国内最大のゲーム開発者向けカンファレンス「コンピュータ・エンターテインメント・デベロッパーズ・カンファレンス 2020」(CEDEC 2020)をオンラインで開催した。
本稿では、9月4日に行われた講演「『FGO』並行開発時の自動マージ gitブランチ間マージ、コンフリクト解消とその自動化」についてのレポートをお届けしていく。
本セッションには、ディライトワークス・エンターテインメント事業本部第2クリエイティブスタジオ(FGOスタジオ)技術セクションの石井淳氏が登壇。『Fate/Grand Order』(以下、『FGO』)で行ってきたイベントなどの並行開発について説明し、実際のgitブランチ間のマージ作業や起きた定型的なコンフリクトケースを紹介した。
石井淳氏
ディライトワークス株式会社
エンターテインメント事業本部第2クリエイティブスタジオ(FGOスタジオ)技術セクション
まず石井氏は、『FGO』ではプログラムとアセットをGitHub Enterpriseを利用して開発を行っていると話を切り出した。モバイルゲーム開発では、リリース時期の異なるブランチを複数並行して管理しており、だいたい2ヶ月先までの配信予定イベントをブランチを分けて開発しているのだという。
また、新規イベントには日付指定リリースが在り、1イベントで最大9ブランチに分かれていることもあるのだとか。これらを合わせると、開発中にアクティブとなるブランチはアセット側で10~25ほど、プログラム側で3~8ほどになると説明した。
▲さらに、コンフリクトが発生した場合には、その解決作業も必要となる。本講演では、解消法方法や自動的に解消する際の実現方法を解説した。
マージの頻度は毎日、朝・夕方・深夜の3回になる。これを人力手作業で続けるとなると相当に大変な仕事となるが、ディライトワークスではこれを実現。
以下、いくつか定期的なコンフリクトについて、発生状況とそれぞれの解消方法を紹介していった。
自動化にはgit mergeコマンド実行後にコンフリクトを検出し、上記の解決方法をスクリプトなどで実装している。元々、石井氏が引き継いだ際には全てマウス操作でマージをしているという状況だったが、そのままでは時間がかかってしまうため、徐々に自動化を始めていったのだという。
続いて、そのままでは実装が難しかった事例を紹介。どのように対応を行ったかについても内容を説明している。
▲コードの実例も公開。そのまま実装しても動かないが、要点としては異常系のチェックやパッチ起動時のパラメータの受け渡しなど、必要なところを別途追加していく必要があると注釈を加えた。
こうして自動化を行うことで、毎日、朝・夕方・深夜と3回のブランチ間マージを実現しているのだと石井氏は述べて講演を終えた。
また、講演後に行われた質疑応答では、1日3回の定期的なマージ以外にも要望があれば実行していることや、半年ほどをかけて今は8割~9割のコンフリクトを自動化で解決していることを明かした。なお、残る1~2割については、何を適応するべきかをそれぞれの担当者が判断しなければならないため、自動化は見送っていると説明した。
(取材・文 編集部:山岡広樹)
■『Fate/Grand Order 』
(C)TYPE-MOON / FGO PROJECT
会社情報
- 会社名
- ディライトワークス株式会社
- 設立
- 2014年1月
- 代表者
- 代表取締役 庄司 顕仁