February 25, 2022

バイナリファイルのバージョン管理にベストな選択を

*本記事は Perforce Software 社の以下のブログ記事(2022年2月25日時点)の参考訳です。
 Version Control for Binary Files: Your Best Options
*ブログの内容は更新されている可能性があります。また、記事内のリンク先は別途記載がない限りは英語ページになります。

現在、多くの開発チームがバイナリファイルのバージョン管理方法を模索し始めています。ゲームエンジン技術の導入が進むにつれ、今まで以上に沢山のアートアセットが作り出され、その保管やトラッキングが必要になってきているのです。

しかし、多くのバージョン管理ツールは、ゲームエンジンファイルのような大きなバイナリファイルのバージョン管理や保存はあまり得意としていません。チームやプロジェクトが大きくなるほどに、これらのファイルを効率的に管理することは非常に難しくなってきます。

大きなバイナリファイルを管理するには、適切なバージョン管理ツール選びが重要になります。では、どのツールが最適なのでしょうか?

バイナリファイルとは?

バイナリファイルとは、画像、動画、3Dモデル、ゲームアセットなど、テキスト以外のあらゆるファイルを指します。そのデータはバイナリ('1'と'0')で保存され、そのバイナリファイルを開くには、中の情報の正しい読み方を理解しているプログラムが必要になります。

バイナリファイルをテキストエディタで開こうとすると、ランダムな文字や記号の羅列のようなものが表示されるでしょう。

Adobe などのアート系プログラムで作られるアセットは、テキストへの変換には適していないため、一般的にバイナリファイル(単に「バイナリ」または「バイナリアセット」とも呼ばれる)として保存されます。

バイナリファイル管理の課題

バイナリファイルのバージョン管理は、使用するツールによっては不可能ではないものの、かなり手間がかかるものとされています。一般的なバージョン管理システムのほとんどは、バイナリファイルをうまく扱うことができません。なかには、全く対応していないものもあります。(詳細は後述しますが、その点で Helix Core は"例外"と言えるでしょう。)

バイナリファイルのバージョン化と管理の難しさには、主に次のようなものがあります。

  1. マージができないため、複数人/チームがひとつのアセットで作業することが難しい
  2. そもそも、バイナリを保存できるほどに強力なバージョン管理システムが少ない
  3. バイナリの保存には大きなスペースが必要になる(ビデオゲームのような大規模プロジェクトの場合は特に)
  4. バイナリは多くのプログラムで利用されており、業種・業界を問わずに一般的に使われるようになってきている

バージョン管理システムのなかにも、バイナリアセット管理の得意・不得意があります。ここからは、バイナリファイル管理にどのようなバージョン管理システムがよく使用されているか、そして、どのシステムが最適なのかを見ていきましょう。

主要なバージョン管理システム

まず最初に、よく使われているバージョン管理システムにはどのようなものがあるでしょか。皆さんも、次の名前は聞いたことがあるのではないでしょうか。

  1. Git
  2. Perforce Helix Core
  3. Subversion (SVN)

主要バージョン管理ツールを比較

上記3つを含む、各種バージョン管理ツールを Perforce Software 社が比較した結果を以下のページにまとめています。ぜひ参考にして、御社に最適なものを選んでください。

ツール比較結果まとめ

大容量バイナリファイルのバージョン管理に対応できるシステムは?

その答えは簡単に言ってしまえば、Perforce Helix Core と Suversion の2つです。

その理由は以下の通りです。

  1. Git はバイナリ管理向きではない – Git に大きなバイナリファイルを保存することはできません。大きなファイルの変更やコミットが行われるたび、Git のリポジトリはどんどん大きくなっていきます。大容量ファイルの管理に Git LFS を使っているチームもいますが、Git LFS を使った場合、バイナリファイルがテキストファイルとは別のシステムに格納されるため、リポジトリが複雑になってしまいます。Git リポジトリには、バイナリファイルへのリンクのみが格納されることになります。
  2. Subversion もバイナリ管理に関しては理想的とは言えない – バイナリファイルのバージョン管理は可能。しかし、SVN の動作はあまり速くなく、ブランチのシステムも複雑なため、非常に大きなバイナリを管理しようとすると、パフォーマンスに影響が出てきます。また、チームやプロジェクトの規模が大きくなった際の対応が難しいという、拡張性の問題もあります。
  3. Perforce Helix Core は大容量バイナリファイルの管理に最適 – Helix Core は非常に大きなバイナリファイルをはじめ、どんなデジタルアセットでも格納・バージョン管理することができます。ペタバイト級のデータも高速に処理できるよう設計されているため、バイナリファイルも容易く管理できます。

バイナリファイル向けバージョン管理:Helix Core と Subversion のどちらを選ぶか

大容量のバイナリファイルをバージョン管理する必要があるチームにとって現実的に選択肢となるのは、Perforce の Helix Core と Apache の Subversion(SVN)の2つです。では、どちらがより適しているのか、その理由と共に考えてみましょう。

端的に言ってしまえば、Helix Core の方が優れています。

もう少し詳しく説明させていただくと、バイナリファイルの管理という点では、Helix Core は SVN より優れていると言えます。複数の小さなバイナリファイルであれば、SVN も問題なく扱うことができます。また、大きなバイナリファイルでも単独であれば問題ありません。しかし、大容量のバイナリファイルが複数となると、パフォーマンスの低下や問題が生じてきます。そのため、大容量なアートアセットを大量に扱うゲーム開発チームやバーチャルプロダクションチームには、Subversion は不向きということになります。

Helix Core と SVN の違いについて、詳しくはこちらをご参照ください。

バイナリファイルに最適なバージョン管理システム:Helix Core

Perforce の Helix Core が大容量バイナリファイルアセットのバージョン管理に最適な理由

パフォーマンス

現在、市場に出回っているバージョン管理ツールのなかで、バイナリファイルをはじめとする大容量ファイルを大量に処理できるだけの性能を持っているのは、Helix Coreだけです。

信頼できる唯一の情報源("Single Source of Truth")

バイナリアセットを扱うことのできるバージョン管理システムでも、そのほとんどで、バイナリファイルはテキストファイルなどとは分けて保存することを余儀なくされます。その点、Helix Core ではバイナリファイルはソースコードと同じデポに格納されます。必要なファイルを簡単に見つけて更新できるため、ビルドプロセスの効率化にもつながります。さらに、チーム全体の "信頼できる唯一の情報源" としての役割を果たすことで、時間や労力の浪費を防ぎます。

ファイルのロック機能

バイナリファイルはマージができないため、この機能は欠かせません。Helix Core はファイルのロック機能だけでなく、排他チェックアウト機能も備えています。これにより、複数人が気づかずに同じファイルに変更を加えてしまい、その変更結果をマージできないがために、かけた作業時間が無駄になってしまった、というような事態を防止できます。

セキュリティ

Helix Core のセキュリティは、ユーザーやファイル単位で細かく設定可能です。また、Perforce Software 社はアメリカ映画協会(MPAA)のコンテンツセキュリティ基準に則した、TPN(Trusted Partner Network)の審査を受け、メンバーとして認められています。

Git との連携

Helix Coreは、よりスケーラブルなバージョン管理ツールを必要としつつ、Git の使用を続ける必要があるというケースに適しています。無償アドオン「Helix4Git」を使えば、開発者は好みの Git ツールと連携させて Helix Core を利用することができます。

どんなファイルタイプにも対応

Helix Core が管理するのは、ソースコードだけではありません。あらゆる種類のファイルを管理することができます。つまり、チームの全メンバーが Helix Core を活用することができるのです。

クラウドデプロイメントが簡単

現在使用しているシステムがオンプレミスであっても、費用対効果やメンテナンスのしやすさ、遠隔地やグローバルなチームメンバーとのコラボレーション強化を目的に、業界を問わず多くのチームがクラウドでのバージョン管理を検討し始めています。Helix Core はお好みのクラウドにデプロイすることができ、AWS や Azure ですぐに使い始められるように設定された環境も用意されています。また、DigitalOcean でも 5 ユーザーまで無料で利用することができます。

大容量バイナリファイル対応のバージョン管理ツールの無償トライアル

Helix Core は、5 ユーザーまでの小規模なチームであれば無料でご利用いただけます。

ゲーム開発チームなど、大規模なバイナリアートアセットを扱うチーム向けに、必要になるツールをまとめた「Perforce Indie Studio Pack」を無償で提供しています。ゲーム開発チームにおすすめの、業界最高レベルのバージョン管理ツール、コードレビューツール、プロジェクト管理ツールをぜひお試しください。このパックは、Azure、AWS、またはオンプレミスですぐにデプロイ可能です。

無料 Indie Studio Pack を入手