【Unity】Git管理の詳細

UnityのプロジェクトをGitで管理する場合の構成について学んでいきましょう

Unityが管理するフォルダ構成

Unityプロジェクトでは特定のフォルダ構成が用意されており、これに基づいてプロジェクトの管理が行われます。また、Gitなどのバージョン管理システムを使用する際には、プロジェクトの特定の部分を無視する設定が必要です。これを効果的に行うために、.gitignore ファイルを適切に設定することが重要です。

Unityプロジェクトの主なフォルダ構成

  1. Assets:
    • プロジェクトで使用する全てのリソースやソースファイルが格納されます。スクリプト、シーンファイル、3Dモデル、テクスチャ、オーディオファイルなどが含まれます。
  2. ProjectSettings:
    • プロジェクト全体に関わる設定が保存されるフォルダです。グラフィックス、ネットワーク、エディタ、ビルド設定などが含まれます。
  3. Library:
    • Unityエディタが内部的に使用する一時ファイルやキャッシュデータが保存されます。このフォルダは再生成が可能なため、バージョン管理には含めないのが一般的です。
  4. Temp:
    • ビルド時などに一時的に生成されるファイルが保存されるフォルダです。この内容は一時的なもので、プロジェクトの実行やビルドには直接関係ありません。
  5. Packages:
    • Unityパッケージマネージャを通じて管理される依存関係やライブラリが記述されたmanifest.jsonが含まれます。
  6. Logs:
    • Unityエディタやアプリケーションの実行ログが保存される場所です。
  7. UserSettings:
    • エディタのユーザー設定(レイアウト設定など)が保存される場所です。

Gitでの管理除外の設定

UnityプロジェクトでGitを使う場合、不要なファイルやディレクトリをGitリポジトリに含めないように設定することが重要です。以下はUnityプロジェクトのための一般的な.gitignore設定の例です:

.gitignoreの設定例

# バージョン管理に不要なディレクトリ
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Uu]ser[Ss]ettings/

# Visual Studio / Rider のキャッシュファイル
.vs/
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.userprefs
*.pidb
*.booproj
*.svd

# パッケージキャッシュ(manifest.json は除く)
[Pp]ackages/
!/[Pp]ackages/manifest.json

# OS によって生成されたファイル
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

この設定により、リポジトリのクリーンさを保ちつつ、必要なファイルのみがバージョン管理されるようになります。LibraryTempLogsなどのフォルダは再生成可能なため無視され、重要なAssetsProjectSettingsPackages/manifest.jsonは保持されます。

.gitignore ファイルは、Gitバージョン管理システムに、特定のファイルやディレクトリを無視するよう指示するために使用されます。Unityプロジェクトなどで.gitignoreを適切に設定することは、プロジェクトを整理し、リポジトリのサイズを適切に保つのに役立ちます。以下に、.gitignore ファイルの基本的な読み方と記述ルールを説明します。

基本的な構文

  • コメント: # で始まる行はコメントとして扱われ、無視されます。
  • パターンの指定: 特定のファイルやディレクトリを指定するためにパターン(ワイルドカードなど)が使われます。
  • 除外ルール: ! で始まるパターンは、それ以前の無視ルールから例外として扱われるファイルやディレクトリを指定します。

主なワイルドカードと記述例

  • *(アスタリスク): 任意の文字列にマッチします(例:*.log はすべての .log ファイルを指定)。
  • ?(クエスチョンマーク): 任意の1文字にマッチします。
  • [](角括弧): 括弧内の任意の1文字にマッチします(例:[Tt]empTemp または temp にマッチ)。
  • **/: 任意のディレクトリ階層にマッチします(例:**/temp はどの階層にある temp ディレクトリも指定)。

サンプルの .gitignore 設定の解説

以下の例から、いくつかのルールを取り上げて説明します。

# バージョン管理に不要なディレクトリ
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Uu]ser[Ss]ettings/

# Visual Studio / Rider のキャッシュファイル
.vs/
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.userprefs
*.pidb
*.booproj
*.svd

# パッケージキャッシュ(manifest.json は除く)
[Pp]ackages/
!/[Pp]ackages/manifest.json
  • [Ll]ibrary/: Library または library という名前のディレクトリを無視します。括弧内の [Ll]L または l にマッチすることを意味します。
  • *.csproj: 拡張子が .csproj のすべてのファイルを無視します。
  • !/[Pp]ackages/manifest.json: Packages ディレクトリ内の manifest.json ファイルは無視から除外します。これは、依存関係情報が重要であるため、リポジトリに含める必要があるためです。

このように.gitignore ファイルを設定することで、不要なファイルがリポジトリに含まれるのを防ぎ、プロジェクトをクリーンに保ちます。