Unityの.gitignoreファイルの基本と使い方
はじめに
ゲーム開発において、Unityを使ったプロジェクトをGitで管理するケースは多いでしょう。 しかし、はじめてGitを使う方は「.gitignoreファイルとは何なのか?」と悩んでしまいがちです。 このファイルを適切に設定しておくと、不要なファイルをGitの管理対象から外せます。 その結果、リポジトリの容量を抑えたり、チームでの作業衝突を防いだりできるのがポイントです。 ここでは、Unityプロジェクトでどのように.gitignoreを設定し、どんなファイルを除外するのが一般的なのかを見ていきましょう。
Gitと.gitignoreの概要
まずは、Gitそのものをざっくり理解しておくと安心ですね。 Gitはバージョン管理システムの一種で、チーム開発や個人開発の履歴管理に使われます。 コードを変更した履歴を残しながら、必要なときに過去の状態へ戻すこともできます。 ただし、管理するファイルが膨大になると、リポジトリが大きくなり操作に時間がかかる可能性があります。 そこで活躍するのが「.gitignore」という設定ファイルです。
.gitignoreに記載したパターン(フォルダやファイル名)に一致するものは、Gitの管理対象から外されます。 例えば、大きなキャッシュデータやOS固有のファイルなどは不要ですよね。 これらをGitリポジトリに含めてしまうと、他の開発者との衝突や無駄な容量消費の原因になります。 このファイルをうまく活用することで、プロジェクトをよりスッキリと管理できるようになるでしょう。
Unityプロジェクトで.gitignoreを設定する理由
Unityを用いた開発では、プロジェクトにさまざまなファイルやフォルダが生成されます。 たとえば、ライブラリやキャッシュファイルなどはプロジェクトを動かすうえで一時的に必要となるものです。 しかし、これらはGitに含めてしまうと更新頻度が高く、差分が大量に発生します。 また、プラットフォーム別のビルド成果物や個人の環境設定ファイルも、チームで共有する必要はありません。 そういったものは.gitignoreで排除しておくのが一般的な運用です。
チーム開発の場合、それぞれの開発者が異なるOSや開発環境で作業することもあります。 すると、OS固有の設定ファイル(macOSの.DS_Storeなど)がリポジトリに入ることがあるでしょう。 これは他のメンバーにとって不要な情報なので、Gitの管理下に含めないようにすることが推奨されます。 また、Unityではメタファイルが重要な役割を果たすため、誤って.gitignoreで除外しないよう注意が必要です。 こうしたポイントを意識することで、プロジェクトを円滑に進められるのではないでしょうか。
Unity特有のファイル構成を理解する
Unityプロジェクトは、主に以下のようなディレクトリ構造を持ちます。 Gameのシーンやスクリプト、アセット類の配置を考えるとき、この構成を知っておくと.gitignoreの設定もしやすいですね。
- Assets
- Library
- Packages
- ProjectSettings
- UserSettings(最新のUnityバージョンではUserSettingsフォルダも生成されることがあります)
- そのほかに、ビルドした成果物が配置されるフォルダ
Assetsフォルダには、ゲームに使うスクリプトや画像などが含まれます。 Libraryフォルダは、Unityが自動生成するキャッシュやバイナリデータが格納されます。 Packagesフォルダには、プロジェクトで利用するパッケージ関連の情報が置かれます。 ProjectSettingsフォルダには、プロジェクト全体の設定が入っています。 このうち、LibraryのようにUnityがビルドや編集時に再生成するフォルダは、Gitで管理する必要がないとされています。
基本的な.gitignoreの例
ここからは、実際にUnityで使われることが多い.gitignoreの例を見ていきましょう。 これは一例ですので、プロジェクトの状況やチームの方針に合わせて適宜カスタマイズしてください。
# MacやWindowsの自動生成ファイル .DS_Store Thumbs.db # Unityによる自動生成フォルダ Library/ Temp/ Obj/ Build/ Logs/ MemoryCaptures/ # ビルド成果物を除外 *.apk *.aab *.unitypackage *.app *.exe *.ipa # Visual StudioなどIDE関連 .vs/ *.csproj *.sln *.userprefs # UserSettingsや個人の設定 UserSettings/ *.user # 重要なUnityファイルは除外しない # *.meta は含める必要があるため記載しない
上記のように、LibraryやTempといったUnityが再生成するフォルダは除外するのが一般的です。 さらに、個人のIDE設定ファイルやOS固有のキャッシュファイルを排除しておけば、リポジトリが混乱しにくくなります。 もし特殊なフォルダやファイルを追加で管理したくない場合は、同様の形で追記します。
フォルダごとの役割と.gitignore設定の注意点
先ほど示した.gitignoreの内容を、フォルダごとに少し細かく見てみましょう。
Libraryフォルダ
Unityでプロジェクトを開くと自動的に生成され、コンパイルされたアセットやキャッシュが格納されます。 これをGitで追跡してしまうと、プロジェクトサイズがかなり大きくなるケースが多いです。 チーム開発では、他のメンバーと衝突しやすいファイルが大量に入る場所でもあります。 そのため、.gitignoreで除外するのが定番です。
Temp、Objフォルダ
TempやObjも、Unityがビルドや実行時のプロセスで使う一時ファイルが含まれます。 これらがGitに含まれていると、ビルド前後で差分が大量に発生するでしょう。 エラーの原因になることもあるので、基本的には不要なものとして.ignoreに入れます。
Buildフォルダ
プラットフォーム別のビルド成果物(.exeや.apkなど)が配置されるフォルダです。 ビルド成果物はサイズが大きくなる傾向があり、Gitで管理するとアップロードに時間がかかります。 また、ビルド成果物は更新のたびに差分が生成されるため、ほとんどメリットがありません。 チームに配布する場合は別の方法を使うほうが多いでしょう。
ProjectSettingsフォルダ
ここにはUnityプロジェクト全体の設定ファイルが含まれます。 たとえば、入力設定やレンダリング設定など重要な設定があるため、基本的にはGit管理の対象になります。 もし無視してしまうと、チームメンバー全員で同じ設定を共有できなくなるので、.gitignoreから外しておきます。
UserSettingsフォルダ
個人のエディタ設定が含まれることがあり、必ずしもチーム共有したい内容ではありません。 複数のメンバーが編集するとコンフリクトしがちなフォルダなので、.gitignoreに含める場合があります。 メンバー同士で必要なファイルがあるかどうかを相談してから決定すると良いですね。
メタファイルの扱いに要注意
Unityプロジェクトでは、.metaファイルが各アセットに関連して生成されます。 これはアセットのIDや依存関係を管理する重要なファイルです。 たとえば、シーン上に配置した画像やスクリプトの紐付け情報は.metaファイルに記録されます。
もし「*.meta」を.gitignoreに追加してしまうと、アセットの参照関係が壊れる可能性があります。 結果的に、プロジェクトを開いたときにアセットが失われてしまうかもしれません。 このため、.metaファイルはGitで管理するのが一般的です。 誤って除外しないよう、記載内容をよく確認しておくと安心でしょう。
.metaファイルを除外すると、アセットとの参照関係が壊れる恐れがあります。 プロジェクトを破損しないよう、.metaファイルはGit管理することが推奨されます。
チーム開発での活用シーンと運用方法
チーム開発では、複数人が同時にコードを編集し、アセットを追加したり更新したりします。 すると、Libraryフォルダなど一時的なデータを含めると頻繁にコンフリクトが発生するでしょう。 その結果、コミットのやり直しやマージ作業が増えることになります。 .gitignoreをしっかり設定すれば、これらの衝突や無駄なファイルの更新を避けられます。
また、ビルド成果物や個人設定ファイルをリポジトリに含めてしまうと、リポジトリが肥大化します。 少人数なら対応可能な場合もありますが、プロジェクトが大きくなると作業効率の低下につながります。 複数人でスムーズに作業を進めるためには、何が必要で何が不要なのかを洗い出して.gitignoreに反映することが重要です。 この運用ルールをチーム内で共有し、合意を得ておくと混乱が減るのではないでしょうか。
実務で気をつけるポイント
実務でUnityを使う場合、プロジェクト構成が多彩になりがちです。 VR機能や外部プラグインを導入するケースもありますし、アセットストアから取得したデータを組み合わせる場合もあるでしょう。 こうした追加要素によって、新たに生成されるフォルダやファイルが増えることがあります。 そのため、常にプロジェクトのフォルダ構成を確認し、必要に応じて.gitignoreを更新してください。
プラグインや外部ライブラリが生成するキャッシュやログファイルも、リポジトリに含めるメリットはあまりないでしょう。 チームで作業を始める前に、メンバー間で「追加されたフォルダやファイルの役割は何か」を確認し合っておくと安心です。 そのうえで、不要なら.gitignoreに追加し、必要であればGitで管理するという判断を行います。
プロジェクトごとに「何を管理したいか」は変わります。 一度決めても後から変わることもあるので、定期的に.gitignoreを見直すと良いでしょう。
まとめ
Unityプロジェクトでは、.gitignoreファイルを適切に設定するだけで開発やチームコラボがスムーズになります。 不要なファイルや大きなキャッシュを管理対象から外すことで、リポジトリサイズを抑えられるでしょう。 メタファイルのように重要な役割を持つファイルは除外しないことが肝心です。 また、チーム開発の際には、メンバーと相談しながら運用ルールを固めていくと混乱が少なくなるでしょう。
.gitignoreは一度設定すれば終わりではなく、プロジェクトに新しい要素が加わるたびに見直す習慣が大切です。 自分の環境だけで動けばいいというわけではなく、チーム全体の開発効率を考えて管理を行うのがポイントですね。 皆さんもこれを機に、Unityプロジェクトの.gitignoreを見直してみてはいかがでしょうか。