LFSのSaaSを作ってプロジェクト管理する話
この記事はUnreal Engine (UE) Advent Calendar 2025シリーズ3 23日目の記事です。 この記事は#PRです。
ソース管理何使ってますか?
みなさんUnrealEngineなプロジェクトのソース管理に何を使っているでしょうか。GitやSVN、Perforceなど様々あると思います。
Git
Gitでソース管理をしたい場合、多くの場合GitHubでソース管理をすると思います。その時、通常のテキストファイルであればリポジトリ自体に容量制限は基本ないので問題にならないのですが、単一ファイルの容量上限が100MBになっています。3Dモデルデータなどでこれらの制限に引っ掛かります。その為、これの回避のためにLFSが用いられます。
LFS
LFS(Large File Storage)とは、実体の大きなファイルをポインターファイルとして参照し、実体を分離するGit 拡張機能システムです。
version https://git-lfs.github.com/spec/v1
oid sha256:4cac19622fc3ada9c0fdeadb33f88f367b541f38b89102a3f1261ac81fd5bcb5
size 84977953
このように一意なoidを元に、独立したLFSサーバーから実態をダウンロードします。

GitHub LFS、高い
そして当然GitHubはこのLFSのシステムも提供しているのですが、こちらの値段が大変高いのです。
https://github.com/pricing/calculator?feature=lfs

例えば少人数で作業しているとして、50GBのストレージと280GBのダウンロードを月にすると、4000円程かかります。特にダウンロード料金が異常なほど高く、CI/CDでなんらかのデカデータを落とすと金額が爆発する可能性があります。

またお金を払っても単一ファイルの上限が2~5GBと、微妙に引っ掛かる制限があります。
LFSを作る
https://github.com/git-lfs/git-lfs
GitLFSは完全にオープンソースなもので、仕様も決まっているため、自分で作成することが可能です。
例えば、電通総研さんのブログではAWS S3を用いて独自で建てていました。 https://tech.dentsusoken.com/entry/s3-lfs-setup
そこでこれはSaaSとして需要があるのではないかと考えました。
candylfs
candylfsというLFS SaaSを作りました。S3ではなくCloudflare R2を使うことや、完全サーバーレスで組むなどした結果、ほぼほぼ原価で提供できるLFSになっています。又、ダウンロードは無制限に無料となっています。

またLocking APIにも対応しています。 単一ファイルの容量上限は10GBにしています。
UEのプロジェクトを管理しよう
サインアップ


https://candylfs.stream/ にまずサインアップします。その後、Create Tenantから新規でTenantを作成します。 TenantはGitHubでのorgやユーザー名に当たる概念になります。
GitHub統合


個人の場合は、GitHubのユーザーIDを追加します。
- Permission: ReadOnlyかRead and Write
- Token Scope: 全てのテナント内のリポジトリか、特定のリポジトリか
- Token Expiration: 発行されるトークンの有効期限

組織の場合は、Add OrganizationよりAuthorize candylfsをします。

その後、一覧で追加したい組織を選択します。

- Permission: ReadOnlyかRead and Write
- Allowed Teams (optional): カンマ区切りでTeamを指定
- Token Scope: 全てのテナント内のリポジトリか、特定のリポジトリか
- Token Expiration: 発行されるトークンの有効期限
CLIでログインする
https://github.com/candylfs/candylfs-cli/releases
より最新のCLIバイナリをダウンロードしてください。cliのコードはすべて公開されているので、怖い場合はご自身でご確認頂くことが可能です。

candylfsで出力があればパスが通っています。

candylfs login <tenant id> でログインをします。

https://github.com/login/device
を開き、コードを入力します。

成功すると、
✓ Logged in as mizuamedesu (rw)
✓ Token stored for 0 repositories in tenant: test
のような表記がでます。この時点で、git credential helperに認証情報が流し込まれ、意識することなく認証を通せるようになります。

管理画面から確認/管理することが可能です。
リポジトリのセットアップ


まずGitHubなどでリポジトリを作成し、ローカルに空の状態でcloneします。

各種設定ファイルを書き、初期コミットをします。lfsconfigの設定はwebコンソールから確認できます。
.lfsconfig
url = https://lfs.candylfs.stream/<tenant-name>/<repo-name>
.gitattributes
Content/** filter=lfs diff=lfs merge=lfs -text
.gitignore
Binaries
DerivedDataCache
Intermediate
Saved
.vscode
.vs
*.VC.db
*.opensdf
*.opendb
*.sdf
*.sln
*.suo
*.xcodeproj
*.xcworkspace
UEプロジェクトの追加


UEプロジェクトを初期化したリポジトリに全て入れます。ignoreが機能していればキャッシュ用のフォルダーなどはグレーアウトするはずです。

そのままプッシュできるはずです。初回のプッシュには5~10分以上かかる可能性があります。
https://github.com/mizuamedesu/ue-lfs-demo
CI/CDから使用する

TokensのCreate Tokenから作成が可能です。 CI/CDで使用する際はhogehogeのようなユーザー名(任意)と共に、発行されたトークンをパスワードとして送信します。(LFSの仕様がBasic認証のため)
疑問など
GitHubのLFSから変えられるか?
変えられます。ローカルに一旦全てのLFSも含めたデータをCloneした後、lfsconfigで設定しpushすれば変更されます。
個人がやっているサービスで継続性に不安なんだが
コミット履歴などは外部サービスで管理されると思うので、あくまでこのサービスは実体を預ける器でしかありません。その為、不安な場合は前述の通りCI/CDなどで実態をフルバックアップ取って頂くことも可能です。又私が普段個人開発しているゲームもすべてこちらのインフラに乗せています。
最後に
いかがでしたでしょうか。まだバグがある可能性がありますので、問題などありましたら[email protected]もしくはXのDMを下さると幸いです。
又2026/01/31まで使用可能な25%オフクーポンUEQiita2025を発行しました。
良ければお使いください。