付録D:バージョン管理とUnity Version Control
バージョン管理とは?
Section titled “バージョン管理とは?”レポートを書いていて、こんなファイルが増えたことはありませんか。
レポート.docxレポート_修正.docxレポート_修正2.docxレポート_最終.docxレポート_最終_ほんとに最終.docx前の状態に戻せるように、自分でコピーを取っておく——これが手作業のバージョン管理です。 ただこの方法だと、どれが最新か分からなくなりますし、どこを変えたのかも思い出せません。
バージョン管理システムは、この作業を自動でやってくれる仕組みです。 ファイルをコピーする代わりに、区切りのいいところで「ここまでの状態を記録して」と伝えると、 そのときの内容が履歴として残ります。
バージョン管理でできること
Section titled “バージョン管理でできること”- 前の状態に戻せる:おかしくなっても、動いていたところまで戻れる
- 変更の履歴が残る:いつ・どこを変えたのかを後から確認できる
- 別のPCで続きができる:記録した内容をネット経由で取り出せる
- バックアップになる:PCが壊れてもプロジェクトは無事
バックアップとの違い
Section titled “バックアップとの違い”バックアップは「もしものときの保険」ですが、バージョン管理の恩恵はそれだけではありません。 普段の作り方そのものが変わります。
- 思い切って試せる
いつでも戻せると分かっていれば、「壊すかもしれないから触らない」がなくなります。 うまくいかなければ捨てればいいので、大胆な変更を試せます。 - 壊れた場所を見つけられる
「昨日は動いていたのに今日は動かない」というとき、履歴をさかのぼって比べれば、 どの変更が原因かを絞り込めます。 - 遊べる状態を壊さずに新機能を作れる
記録を枝分かれさせれば、完成している方はそのまま残したまま、 別の枝で新しい機能を試せます。うまくいったら合流させます。 - 複数人で同時に作れる
ゲーム開発の現場では、プログラマー・デザイナー・音楽担当が同じプロジェクトを 同時にさわります。誰がどこを変えたかが記録されるので、作業がぶつかりません。 - やってきたことが残る
どういう順番で作り上げたかが履歴に残ります。 作品を人に見せるときの説明にも使えます。
なぜこの授業で使うのか
Section titled “なぜこの授業で使うのか”学校のPCは、毎回同じ席・同じPCとは限りません。 またUSBメモリでプロジェクトを持ち運ぶのは、Unityのプロジェクトはファイル数が多く現実的ではありません。
そこで、Unityが公式に用意しているUnity Version Controlを使います。 作業内容をUnityのクラウドに記録しておけば、
- 次の授業で席が変わっても続きができる
- 家のPCからも同じプロジェクトを開ける
- PCの不調で作業が消えても、記録した時点まで戻せる
Unity Version Controlの使い方
Section titled “Unity Version Controlの使い方”第1週のとおり、プロジェクトを作るときにバージョン管理の一覧から Unity Version Controlを選んでいれば、準備は終わっています。
選び忘れた場合は、Unity Hubから後付けできます。
- Unity Hubの「プロジェクト」タブを開く
- プロジェクト名の左にあるソース管理のアイコンをクリック
(「プロジェクトはソース管理を使用していません」と表示されます) - 「ソース管理に接続」をクリック
- 内容を確認して「接続」
- ソース管理プロバイダー:
Unity Version Control - Unity 組織:自分の組織(自動で入ります)
- サーバーの場所:
Asia North East - Japan - すべての現在の変更をリモートにプッシュ:チェックしたまま
- ソース管理プロバイダー:
チェックイン(作業内容を記録する)
Section titled “チェックイン(作業内容を記録する)”チェックインは、「ここまでの状態を記録して」と伝える操作です。 授業の最後には必ず行いましょう。
- まずシーンを保存(Ctrl+S)
アスタリスク(*)が消えることを確認します - Unityのメニューバーから 「Window」→「Version Control」→「Unity Version Control」でウィンドウを開く
- 「Pending changes」タブを選択
- 変更されたファイルが一覧表示される
- すべてのファイルにチェックが入っていることを確認
- コメント欄に作業内容を記入(例:「円を追加」)
- 「Checkin changes」ボタンをクリック
別のPCから開く
Section titled “別のPCから開く”- Unity Hubを起動
- 左メニューの「プロジェクト」タブを選択
- 「クラウドプロジェクトを開く」をクリック
- 一覧から「MergePuzzle」を選択
覚えておく操作
Section titled “覚えておく操作”- Check in:ここまでの作業を記録する
- Update:別のPCで記録した最新の内容を取り込む
- Revert:記録した状態まで戻す(変更を捨てる)
- History:これまでの記録を一覧で見る
- 「Conflict」エラーが出た
- 2か所から同時に編集すると起きます。先生に相談してください
- アップロードが終わらない
- 画像や音声ファイルが大きすぎないか確認する
- どのファイルをチェックインする?
- 全部でOK。
.metaファイルも必ず含めます(Unityに必要なファイル) Libraryフォルダは自動的に除外されます(作り直せるため)
- 全部でOK。
発展:GitとGitHub
Section titled “発展:GitとGitHub”Unity Version Control以外にも、バージョン管理システムはいろいろあります。 なかでも世界で最も広く使われているのがGit(ギット)で、 その記録をインターネット上に置くサービスがGitHub(ギットハブ)です。
プログラミングを続けるなら、いずれ必ず出会う道具です。 授業では使いませんが、興味がある人は自宅で試してみてください。
Gitのインストール
Section titled “Gitのインストール”Windows の場合:
- Git公式サイト(https://git-scm.com)にアクセス
- 「Download for Windows」をクリック
- インストーラーを実行(デフォルト設定でOK)
macOS の場合:
-
ターミナルを開く
-
以下のコマンドを実行:
ターミナルウィンドウ git --version -
Xcodeコマンドラインツールのインストール画面が出たら「インストール」
GitHubアカウントの作成
Section titled “GitHubアカウントの作成”- GitHub(https://github.com)にアクセス
- 「Sign up」をクリック
- メールアドレス、パスワード、ユーザー名を設定
- 学生はGitHub Educationに申請するとPro版が無料になります
Unity用の.gitignore
Section titled “Unity用の.gitignore”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_StoreThumbs.dbプロジェクトの同期
Section titled “プロジェクトの同期”学校から自宅へ:
- 学校でプロジェクトをGitHubにプッシュ
- 自宅でGitHubからクローンまたはプル
- Unity Hubで「プロジェクトを開く」から選択
自宅から学校へ:
- 自宅で作業後、変更をコミット&プッシュ
- 学校でプルして最新版を取得
- コンフリクトが発生した場合は慎重に解決