コンテンツにスキップ

付録D:バージョン管理とUnity Version Control

レポートを書いていて、こんなファイルが増えたことはありませんか。

レポート.docx
レポート_修正.docx
レポート_修正2.docx
レポート_最終.docx
レポート_最終_ほんとに最終.docx

前の状態に戻せるように、自分でコピーを取っておく——これが手作業のバージョン管理です。 ただこの方法だと、どれが最新か分からなくなりますし、どこを変えたのかも思い出せません。

バージョン管理システムは、この作業を自動でやってくれる仕組みです。 ファイルをコピーする代わりに、区切りのいいところで「ここまでの状態を記録して」と伝えると、 そのときの内容が履歴として残ります。

  • 前の状態に戻せる:おかしくなっても、動いていたところまで戻れる
  • 変更の履歴が残る:いつ・どこを変えたのかを後から確認できる
  • 別のPCで続きができる:記録した内容をネット経由で取り出せる
  • バックアップになる:PCが壊れてもプロジェクトは無事

バックアップは「もしものときの保険」ですが、バージョン管理の恩恵はそれだけではありません。 普段の作り方そのものが変わります。

  • 思い切って試せる
    いつでも戻せると分かっていれば、「壊すかもしれないから触らない」がなくなります。 うまくいかなければ捨てればいいので、大胆な変更を試せます。
  • 壊れた場所を見つけられる
    「昨日は動いていたのに今日は動かない」というとき、履歴をさかのぼって比べれば、 どの変更が原因かを絞り込めます。
  • 遊べる状態を壊さずに新機能を作れる
    記録を枝分かれさせれば、完成している方はそのまま残したまま、 別の枝で新しい機能を試せます。うまくいったら合流させます。
  • 複数人で同時に作れる
    ゲーム開発の現場では、プログラマー・デザイナー・音楽担当が同じプロジェクトを 同時にさわります。誰がどこを変えたかが記録されるので、作業がぶつかりません。
  • やってきたことが残る
    どういう順番で作り上げたかが履歴に残ります。 作品を人に見せるときの説明にも使えます。

学校のPCは、毎回同じ席・同じPCとは限りません。 またUSBメモリでプロジェクトを持ち運ぶのは、Unityのプロジェクトはファイル数が多く現実的ではありません。

そこで、Unityが公式に用意しているUnity Version Controlを使います。 作業内容をUnityのクラウドに記録しておけば、

  • 次の授業で席が変わっても続きができる
  • 家のPCからも同じプロジェクトを開ける
  • PCの不調で作業が消えても、記録した時点まで戻せる

第1週のとおり、プロジェクトを作るときにバージョン管理の一覧から Unity Version Controlを選んでいれば、準備は終わっています。

選び忘れた場合は、Unity Hubから後付けできます。

  1. Unity Hubの「プロジェクト」タブを開く
  2. プロジェクト名の左にあるソース管理のアイコンをクリック
    (「プロジェクトはソース管理を使用していません」と表示されます)
  3. 「ソース管理に接続」をクリック
  4. 内容を確認して「接続」
    • ソース管理プロバイダーUnity Version Control
    • Unity 組織:自分の組織(自動で入ります)
    • サーバーの場所Asia North East - Japan
    • すべての現在の変更をリモートにプッシュ:チェックしたまま

チェックイン(作業内容を記録する)

Section titled “チェックイン(作業内容を記録する)”

チェックインは、「ここまでの状態を記録して」と伝える操作です。 授業の最後には必ず行いましょう。

  1. まずシーンを保存(Ctrl+S)
    アスタリスク(*)が消えることを確認します
  2. Unityのメニューバーから 「Window」→「Version Control」→「Unity Version Control」でウィンドウを開く
  3. 「Pending changes」タブを選択
  4. 変更されたファイルが一覧表示される
  5. すべてのファイルにチェックが入っていることを確認
  6. コメント欄に作業内容を記入(例:「円を追加」)
  7. 「Checkin changes」ボタンをクリック
  1. Unity Hubを起動
  2. 左メニューの「プロジェクト」タブを選択
  3. 「クラウドプロジェクトを開く」をクリック
  4. 一覧から「MergePuzzle」を選択
  • Check in:ここまでの作業を記録する
  • Update:別のPCで記録した最新の内容を取り込む
  • Revert:記録した状態まで戻す(変更を捨てる)
  • History:これまでの記録を一覧で見る
  • 「Conflict」エラーが出た
    • 2か所から同時に編集すると起きます。先生に相談してください
  • アップロードが終わらない
    • 画像や音声ファイルが大きすぎないか確認する
  • どのファイルをチェックインする?
    • 全部でOK。.metaファイルも必ず含めます(Unityに必要なファイル)
    • Libraryフォルダは自動的に除外されます(作り直せるため)

Unity Version Control以外にも、バージョン管理システムはいろいろあります。 なかでも世界で最も広く使われているのがGit(ギット)で、 その記録をインターネット上に置くサービスがGitHub(ギットハブ)です。

プログラミングを続けるなら、いずれ必ず出会う道具です。 授業では使いませんが、興味がある人は自宅で試してみてください。

Windows の場合:

  1. Git公式サイト(https://git-scm.com)にアクセス
  2. 「Download for Windows」をクリック
  3. インストーラーを実行(デフォルト設定でOK)

macOS の場合:

  1. ターミナルを開く

  2. 以下のコマンドを実行:

    ターミナルウィンドウ
    git --version
  3. Xcodeコマンドラインツールのインストール画面が出たら「インストール」

  1. GitHub(https://github.com)にアクセス
  2. 「Sign up」をクリック
  3. メールアドレス、パスワード、ユーザー名を設定
  4. 学生はGitHub Educationに申請するとPro版が無料になります

Unityのプロジェクトには、自動で作り直されるフォルダが含まれます。 これらを記録から除外する設定ファイルが.gitignoreです。

# Unity generated files
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Uu]ser[Ss]ettings/
# Visual Studio cache
.vs/
# Autogenerated VS solution files
*.csproj
*.sln
*.slnx
*.suo
*.user
# OS generated
.DS_Store
Thumbs.db

学校から自宅へ:

  1. 学校でプロジェクトをGitHubにプッシュ
  2. 自宅でGitHubからクローンまたはプル
  3. Unity Hubで「プロジェクトを開く」から選択

自宅から学校へ:

  1. 自宅で作業後、変更をコミット&プッシュ
  2. 学校でプルして最新版を取得
  3. コンフリクトが発生した場合は慎重に解決