【Unity】Sourcetreeを使ってプロジェクトのバージョン管理&バックアップを行う方法

Sourcetreeでバージョン管理する方法 Unity

今回はUnityのプロジェクトの管理に関する話題で、

Sourcetreeでプロジェクトのバージョン管理とバックアップを簡単に行う方法

をご紹介するという内容になっています。

ゲーム開発のみならずプログラミングの世界では今やバージョン管理は当たり前のように行われているのですが、初心者の方からしたら

  • バージョン管理って何?
  • Unityのプロジェクトのバックアップのやり方がよくわからん!

という方も多いのではないでしょうか。そこでここではその辺について詳しくご説明するとともに、Sourcetreeというソフトを使ってUnityのプロジェクトを手軽に管理する方法をご紹介しますね。

Unityのプロジェクトのバックアップ、どうしてる?

まずはじめに、バージョン管理がどうのという以前の話なのですが、あなたはUnityのプロジェクトのバックアップをきちんと取っていますか?当然ながらしっかりバックアップを取っておかないとプロジェクトが破損した場合にリカバリーが効かないのでとんでもなく危険ですよね。

ただUnityのプロジェクトはファイル数が非常に多いですし、サイズも巨大になりがちなのでバックアップするといっても「一体どうやってバックアップしたらいいの?」と困ってしまう初心者の方は多いかと思います。

すぐに思いつく方法としてはプロジェクトを丸ごと複製して別の場所に保存するやり方ですが、結論から言うとこれは悪いやり方です。なぜなら

  • 複製するのに時間がかかる
  • 複製をいくつも保存する場合、「どれがどの状態のプロジェクトか」を把握するのが難しい
  • バックアップするほど容量がかさむ

といったデメリットばかりだからです。他にはプロジェクト全体をunitypackage形式で書きだすやり方もあり、そちらのほうが多少はマシですがやはり上記の問題をクリアすることはできません。

そこでお勧めしたいのが今回の主役であるバージョン管理システムです。バージョン管理システムを使うと上記のお悩みを丸ごと解消することができます。

バージョン管理システムとは?

ではバージョン管理システムとは一体何なのでしょうか?これは簡単に言うと

  • どういう変更を行ったのかを記録して
  • 元に戻したくなった時に簡単に復元できるようにする

というようなシステムです。詳しい話はWikipediaとかに書いてあるのでご興味のある方は読んでみてください。

代表的なバージョン管理システムとしては「Git」等があります。少しでもプログラミングをかじったことのある方であれば聞いたことがあるのではないでしょうか?

このバージョン管理システムを使うと、次のようなメリットを得ることができます。

  • 何らかの理由でプロジェクトを元に戻したくなった時に簡単に復元できる
  • いつ・誰が・どのような変更を行ったのかを簡単に確認できる(※これは個人開発の場合はもちろん、特にチーム開発の場合に役立つ)
  • プロジェクトで問題が発生したときの原因究明に役立つ

また、外部のドライブやクラウドストレージ等と併用することで効率よくバックアップを取ることも可能です。

Sourcetreeって何?

さてそんなバージョン管理システムですが、今主流のGitを使うとなるとコマンドラインをたたく必要があるので初心者の方にとってはちょっと敷居が高いと思います。

そこでGUIで直感的にGitを使える「Sourcetree」という無料ソフトがオススメです。

Sourcetree | Free Git GUI for Mac and Windows
A Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac.

Sourcetreeのインストール方法や基本的な使い方はパソコン工房様のページが詳しいのでそちらをご覧いただければと思います。

非エンジニアに捧げるSourceTreeを使ったはじめてのGit | パソコン工房 NEXMAG
Gitを簡単に利用できる「SourceTree」というツールを使って基本的な操作方法についてご説明したいと思います。SourceTreeは非エンジニアの方でも操作できるGitです。

以下、Sourcetreeをセットアップ済として話を進めますね。

Sourcetreeを使ってUnityのプロジェクトのバージョン管理&バックアップを行う方法

では前置きが非常に長くなってしまいましたが、ここからが本題で「Sourcetreeを使ってUnityのプロジェクトのバージョン管理とバックアップを行う方法」を順を追ってご説明します。なお、今回は自分のPC上にバックアップを取るための「ローカルリポジトリ」を作ってバージョン管理を行う方法をご紹介します。

主な手順は次のとおりです。

  1. ローカルリポジトリを作成する
  2. ローカルリポジトリに開発環境の変更を反映(=コミット)する
  3. ローカルリポジトリを別のストレージにクローンする
  4. クローンしたリポジトリに元のリポジトリの変更を適用(=プル)する

それぞれ詳しく見ていきましょう。

手順1:ローカルリポジトリの作成

まずはSourcetreeを起動してローカルリポジトリを作成します(※リポジトリとは一言でいえば「データの保管場所」のようなものです)。最初の画面で「ローカルリポジトリ」になっていることを確認したら「Create」を押しましょう。

ローカルリポジトリの作成(1)

すると「Create a repository」という画面になるので、

  • バージョン管理を行いたいUnityプロジェクトフォルダの「Assets」フォルダを選択
  • 適当なリポジトリ名を入力

したら「作成」ボタンを押しましょう。これでリポジトリが作成されました。

なお、Unityプロジェクト全体をバージョン管理の対象にしてもよいのですが、そうすると余計なファイルが山ほど含まれてしまい面倒なのでここではAssetsフォルダ以下を対象としています。

手順2:コミット

さてリポジトリを作ったのですが、このままの状態だとリポジトリは空の状態です。なのでここに「コミット」という作業を行い、実際の開発環境の状態をリポジトリに反映させる必要があります。

コミットするには次の手順を踏む必要があります。

  1. リポジトリに反映させたいファイル等をインデックスする
  2. コメントをつける
  3. コミットボタンを押して、インデックスしたファイルをコミットする

手順2-1:反映させたいファイルを選んでインデックスする

まずはリポジトリに反映させたいファイルを選んでインデックスを行う必要があります。リポジトリ画面で「ファイルステータス」のところを選択すると、まだリポジトリに反映されていないファイルの一覧が左下に表示されるので、そこから必要なファイルを選んでインデックスに追加します。

とりあえず、今回は最初なので「全てインデックスに追加」ボタンを押します。

Sourcetree ファイルのインデックス

すると一覧にあったファイルが「Indexにステージしたファイル」欄に移動します。これでインデックスは完了です。

Sourcetree インデックスへのステージ

手順2-2:コメントをつける

次に画面の一番下にコメント欄があるので、具体的にどんな変更を行ったのかをしっかりと書いておきます。適当なコメントをつけると後で苦労するかもしれません。分かりやすく簡潔に書きましょう。

ちなみにコメントの一行目はコミットの履歴の一覧に表示されるので、一行目を見たら概要が分かるように書くとよいかと思います。

手順2-3:コミットボタンを押す

ここまでできたら後は右下のコミットボタンを押すだけです。ボタンを押すと即座にコミットが実行され、Historyにコミットの履歴が表示されます。

手順3:リポジトリのクローン

さてここまでがSourcetreeの基本なのですが、現状プロジェクトフォルダ内にバージョン管理用のファイルが作られているのでバックアップという観点から見るとこのままでは不十分です。そこでリポジトリを外部のストレージ等にクローンしてきちんとバックアップを取れるようにしておきます。

やり方は簡単で、クローン画面を開いたら

  • クローン元のリポジトリ
  • クローン先のフォルダ

を選んで「クローン」ボタンを押すだけです。

Sourcetree リポジトリのクローン

これで指定した場所にリポジトリの複製が作成されます。

手順4:プル

最後に、クローンしたリポジトリに元のリポジトリの変更を反映させるには「プル」という操作を行う必要があります。

元のリポジトリで新しいコミットを行ったら、クローン先のリポジトリ画面で「プル」を押してその変更をクローン先にも適用します。

Sourcetree プル

これでバックアップ先も最新の状態にすることができました。

おわりに

以上、Sourcetreeを使ったUnityのプロジェクトのバージョン管理方法についてご紹介しました。

基本的にバージョン管理システムを使うことはメリットしかないので、まだ使ったことがないよ、という方はぜひ上記の内容を参考にして使ってみて頂ければと思います。

この記事がUnityでのゲーム開発のお役に立てば幸いです。