【TECH BLOG #2】長年運営してきたタイトルに発生した問題をGit LFSを利用して解消した話

ファンプレックス株式会社 エンジニア部 アンドゥです。
弊社の扱うタイトルには、長年運営してきたゲームアプリが沢山あります。
同様に、長年運営してきたことによって初めて発生するトラブルや弊害も沢山あります。
今回はそんなトラブルの1つをGit LFSで解消した!!というお話です。
発生していた問題
ファンプレックスが運営していた某タイトルのプロジェクトで、ゲームアプリに使用するデータをExcelで管理&編集していました。
そして、そのExcelファイルを共有&保存する為にGitを利用していたのです。
長年運用してきたExcelファイルのGitリポジトリですが、
私がそのプロジェクトにJoinする頃にはリポジトリサイズが13GBを超えていました。。。
(全Excelファイルの合計サイズは2GBくらいしかないのにリポジトリサイズは13GBです!! )
HDDの容量も勿体無いですし、Excelファイルを全てダウンロード(git clone)するだけでも半日かかってしまい、皆に無駄な時間を発生させていました。
解決方法とその結果
この問題の解消方法として上がってきたのが“Git LFS”です!!
Git LFSは簡単に言うと大きいサイズのバイナリファイルを扱うためのGitの機能です。
仕組みは以下のようなイメージとなりますが、ここでGit LFSの詳細を説明するよりは専門のWebサイトなどで詳しく説明されていますので、興味のある方はそちらを検索してみてください。
!!導入結果!!
Git LFSの導入結果は以下の通りとなりました!!
・Excelファイルのダウンロード(git clone)時間が短縮
半日 -> 数分
・リポジトリのサイズが減少
約13GB -> 約2GB
本結果に関してはGitリポジトリを新しく作り直した場合でも同じですが、この方法ではまた数年後に同様の問題が発生してしまいます。
(実際にこのプロジェクトでは過去3回リポジトリを作り直していました。。。)
しかし、Git LFSを使用するとリポジトリのサイズが再肥大化することもありません!!
問題解決です!!
Git LFSの導入は難しいのか?
弊社ではGitHubを使用したGit運用を行なっているのですが、Git LFSの導入時にGitHubの設定を追加したり、変更したりする必要はありませんでした。
導入したいリポジトリのみをGitLFS化するだけです!!
リポジトリをGit LFS化するには以下の2つの方法があります。
・リポジトリをミラー(コピー)する
・既存のリポジトリを利用する
ミラーの方が何かあった場合に巻戻しする事ができますので、こちらをオススメします。
コマンドについてはそれぞれの環境によって異なるので割愛しますが、基本的な git lfsのコマンドで対応できますし、オープンなツールなども存在していますので高度な知識は必要ないかと思います。
導入までの苦労話
正直Git LFS導入までには苦労や困難がたくさんありました。
1番はエンジニア以外のメンバーに理解してもらう事だったと思います。
基本的にGitのコマンドやツールの操作を新しく覚えてもらう必要はなかったのですが、
Git LFSを皆が扱っている個々のPCへインストールする必要があり、インストール手順書を準備したり、トラブルが発生するとサポートしたりと苦労がありました。
また、対象のリポジトリが様々な開発ツールで使用されており(開発ツールが乱立していたとも言う)、それらの環境へのインストールも長年運営したプロジェクトならではの問題だったかと思います。
(このあたりの苦労話についてはまたの機会に・・・)
最後に
これらの経験を基に、今では弊社の様々なプロジェクトでGit LFSが活躍しています!!
トラブルに対応するノウハウなども蓄積&共有され、今では皆が当たり前に使う機能となりました。
新しいツールや機能を導入するには苦労が伴いますが、導入後は快適な環境が待っていますので、今後も新しい知識や技術の導入を積極的に進めていきたいと思います。
次回以降のエントリーでは弊社の運営タイトルである”NARUTO -ナルト- 忍コレクション 疾風乱舞”(通称:ナルコレ)や”戦国アスカZERO”などで使用されている技術についてもご紹介できればと思います。
ご高覧いただきありがとうございました。
※2021年7月1日よりファンプレックスはグリーエンターテインメントへ商号変更いたしました。
※2021年6月30日以前の記事においてファンプレックスという表記がある場合がございますが、ご了承ください。
information
本件に関するお問い合わせ先
グリーエンターテインメント株式会社 広報担当
東京都港区六本木6-10-1 六本木ヒルズ森タワー
E-mail:info-ent@ml.gree.net