バージョン管理システムとは何ですか?

バージョン管理システム(VCS)は、ソースコードへの変更を追跡して管理するのに不可欠です。以下で、分散型、集中型、ローカルのバージョン管理システムの基本について説明します。

詳説・バージョン管理システム

バージョン管理は、ソースコードやアセットに対するアップデートを追跡して管理する体系的なプロセスです。バージョン管理システムは効率的なワークフローの基盤であり、プログラマー、アーティスト、その他チームメンバーにとって信頼できる唯一の情報源として機能する一方で、各自が独立して共有コードベースに貢献できるようにします。また、これらはセーフティネットとしても機能し、開発中に壊滅的なエラーが発生した場合にコードのアップデートを「取り消す」ことができます。

チームの規模や地理的分布などの要因は、ゲーム開発者がどのバージョン管理システムを実装すべきか選択に影響を及ぼす場合があります。個人開発者にとってはローカルソリューションで十分であるかも知れませんが、チームの規模が大きくなると、さまざまなタイムゾーンや地理的地域にわたってコラボレーションを行うのに役立つよう、より堅牢でスケーラブルなバージョン管理システムを探す必要が出てきます。

バージョン管理システムを使用する理由

バージョン管理システムは DevOps の中核を成し、チームがプロジェクトのソースコードに協力して取り組み、短時間でイテレーションを行えるようにします。

バージョン管理を使用することで、常にバックアップが確保されます。個々のプロジェクトのアップデートは、メインのソースコードにマージされる前に、「コミット」と呼ばれる単一のグループに定期的に収集されます。アップデートによってエラーが発生した場合は、プロジェクトを以前のバージョンに戻し、コミットを調べて問題を診断することができます。

バージョン管理システムを使用すると、プロジェクトの全履歴にアクセスし、ミスを取り消すことができるので、バグの追跡や以前に削除した機能を復元することが簡単になります。

集中型バージョン管理システム

分散型バージョン管理システム

分散型バージョン管理システムを使用すると、メインサーバーに接続せずに、チェックイン、ブランチ作成、マージを行うことができます。各貢献者は、クラウドに保存されている複製されたリポジトリから作業します。主な利点は、低速なネットワークや VPN について心配することなく、チームメイトが各自で作業し、作業スピードを高めることができる点です。プロジェクトをオフラインで作業することもできますが、アップデートをプッシュまたはプルするにはインターネット接続が必要です。

分散型バージョン管理システムでは、特に変更履歴が広範囲にわたる大規模なプロジェクトで、プロジェクト履歴全体をダウンロードする必要がある場合に、待ち時間が長くなる可能性があります。大量のバイナリファイルを扱うスタジオは、空き容量がすぐに埋まってしまうため、ストレージの使用状況を注意深く監視する必要があります。

高い柔軟性を求めており、生産力が高くなるポテンシャルを秘めているスタジオは、分散型バージョン管理を採用することを検討してください。

ローカルバージョン管理システム

ローカルバージョン管理システムは、最もシンプルな形式のバージョン管理システムであり、チームよりも主に個人開発者によって使用されます。ローカルバージョン管理では、プロジェクトのすべてのデータが 1 台のコンピューターに保存され、プロジェクトのファイルに加えられた変更はパッチとして保存されます。各パッチには、前のパッチ以降に実装されたアップデートのみが含まれています。プロジェクトのある特定のバージョンで問題が発生した場合は、パッチのコレクション全体を調べ、ある特定の時点でプロジェクトのファイルがどのような見た目であるかつなぎ合わせることで、問題を診断する必要があります。

これらは 1 台のコンピューターに紐付けられているため、ローカルバージョン管理システムは、分散型システムや集中型システムよりも本質的に柔軟性が低くなります。チームメイト同士でのコラボレーションは難しく、データベースが危険にさらされた場合に、失った情報を復元することは不可能ではないにしても難しくなるおそれがあります。

一般的に、最初はローカルバージョン管理で問題ありませんが、チームの規模が拡大するのに合わせて(たとえ 1 人から 2 人に増えるだけでも)、分散型または集中型で作業を進め始めることをお勧めします。

分散型バージョン管理システム

集中型バージョン管理システム

集中型バージョン管理システムは、チェックイン/プッシュワークフローを使用してメインサーバーに接続します。ソースコードに対する変更つまりアップデートは、新しいバージョンとしてリポジトリに自動的に保存されます。集中型バージョン管理システムには、リポジトリを複数のマシンに複製する必要のない強力なブランチ作成機能とマージ機能が備わっています。そういった意味で、潜在的により安全です。

集中型バージョン管理システムには、ネットワーク接続が必要です。チーム全員が 1 つのサーバーに格納されている単一のバージョンに紐付けられているため、サービスの中断が発生すると大幅な速度の低下につながるおそれがあります。集中型バージョン管理のもう 1 つの欠点は、拡張性が低いことです。プロジェクトに貢献する開発者の数が多ければ多いほど、安定した環境で変更をプッシュする機会が減り、マージの競合などの問題につながるおそれがあります。

セットアップが簡単で使いやすいバージョン管理システムに関心をお持ちの方は、集中型ワークフローの採用を検討してください。

ローカルバージョン管理システム

ローカルバージョン管理システムは、最もシンプルな形式のバージョン管理システムであり、チームよりも主に個人開発者によって使用されます。ローカルバージョン管理では、プロジェクトのすべてのデータが 1 台のコンピューターに保存され、プロジェクトのファイルに加えられた変更はパッチとして保存されます。各パッチには、前のパッチ以降に実装されたアップデートのみが含まれています。プロジェクトのある特定のバージョンで問題が発生した場合は、パッチのコレクション全体を調べ、ある特定の時点でプロジェクトのファイルがどのような見た目であるかつなぎ合わせることで、問題を診断する必要があります。

これらは 1 台のコンピューターに紐付けられているため、ローカルバージョン管理システムは、分散型システムや集中型システムよりも本質的に柔軟性が低くなります。チームメイト同士でのコラボレーションは難しく、データベースが危険にさらされた場合に、失った情報を復元することは不可能ではないにしても難しくなるおそれがあります。

一般的に、最初はローカルバージョン管理で問題ありませんが、チームの規模が拡大するのに合わせて(たとえ 1 人から 2 人に増えるだけでも)、分散型または集中型で作業を進め始めることをお勧めします。

Benefits of version control

Modification Tracking

Easily track modifications and merge across the project

File Comparison

Enables file comparison and identifies the differences between files

Troubleshooting

Easy troubleshooting due to the full archive of changes recorded within the VCS

Central Repository

The central repository allows seamless collaboration without impacting individual performance or code changes

File Sharing

Free up space and time by seamlessly sharing files with developers and stakeholders without having to constantly save copies of code adjustments

Distributed Development

Distributed development allows developers to work anywhere at their convenience

Version Control e-Book

Should you work centralized or distributed? Each has its advantages and disadvantages – learn which approach to version control will work best for your team in this free e-book.

類似のリソース

バージョン管理システムとその他 DevOps ツールやプロセスについて学べるさまざまなリソースが見つかります。

アジャイルと DevOps の比較

アジャイルと DevOps の目標は同じであり、定期的なリリーススケジュールを通じて顧客価値を提供することです。しかし、そのアプローチは少し異なります。これらがどのように連携するかをご覧ください。

DevOps の原則

すべてのゲームスタジオは、クランチ(過重労働)を減らしつつ制作をスピードアップしたいと考えており、DevOps はそれを実現するために最適な方法です。DevOps の方法論の背後にある重要な原則を学ぶことから始めましょう。

DevOps を採用するメリット

DevOps プラクティスを実装すると、開発パイプラインが合理化され、チームとユーザーの満足度を高めることができます。DevOps がどのように役立つかをご確認ください。

ゲーム開発のためのバージョン管理

Unity のバージョン管理なら、分散型でも集中型でも作業を進めることができます。ファイルベースや変更セットベースのワークフローにより、サイズの大きなバイナリファイルを管理します。ソースコードとアセットを格納し、あらゆるエンジンに対応する安全なバージョン管理システムを使用して変更を追跡します。

弊社のウェブサイトは最善のユーザー体験をお届けするためにクッキーを使用しています。詳細については、クッキーポリシーのページをご覧ください。

OK