Unityプロジェクトの.gitignoreファイル解説

この.gitignoreファイルは、Unityプロジェクトのルートディレクトリに配置し、Gitで管理する必要のないファイルやフォルダを除外するための設定ファイルです。以下、各セクションごとに何が除外され、なぜ除外するのかを詳しく説明します。


# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/

# Recordings can get excessive in size
/[Rr]ecordings/

# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*

# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*

# Visual Studio cache directory
.vs/

# Gradle cache directory
.gradle/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Unity3D generated file on crash reports
sysinfo.txt

# Builds
*.apk
*.aab
*.unitypackage
*.app

# Crashlytics generated file
crashlytics-build.properties

# Packed Addressables
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*

# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*

基本情報

  • コメント部分
    ファイル冒頭のコメントには、Unityプロジェクト用の最新の.gitignore設定がGitHubの公式リポジトリから取得できることが記載されています。
    また、このファイルはプロジェクトルートに配置することが推奨されます。

除外対象のフォルダ

  • /[Ll]ibrary/
    • 役割: Unityがアセットのキャッシュやコンパイル済みデータを保存するフォルダです。
    • 理由: このフォルダは各開発環境で自動生成されるため、Gitで共有する必要がなく、またサイズが大きくなりがちです。
  • /[Tt]emp/
    • 役割: 一時的なファイルが保存されるフォルダ。
    • 理由: ビルドやエディターの動作に必要ですが、再生成可能なためバージョン管理には不要です。
  • /[Oo]bj/
    • 役割: コンパイル済みの中間オブジェクトファイルを格納。
    • 理由: 自動生成されるため、管理対象にする必要はありません。
  • /[Bb]uild/ および /[Bb]uilds/
    • 役割: 最終的なビルド成果物やビルドに関連する一時ファイル。
    • 理由: 生成された成果物は再生成可能であり、リポジトリを肥大化させないために除外します。
  • /[Ll]ogs/
    • 役割: ログファイルの保存場所。
    • 理由: ログはデバッグ用であり、永続的に保存する必要がないため除外されます。
  • /[Uu]ser[Ss]ettings/
    • 役割: ユーザーごとのエディター設定などが格納されています。
    • 理由: 各ユーザーの個別環境に依存するため、共有する必要はなく、Git管理の対象から外します。

その他の除外対象

  • /[Mm]emoryCaptures/
    • 役割: メモリキャプチャのデータが保存されるフォルダ。
    • 理由: サイズが大きく、場合によっては機密性の高い情報が含まれるため除外されます。
  • /[Rr]ecordings/
    • 役割: 録画データなどの保存先。
    • 理由: ファイルサイズが大きくなりやすく、共有する必要がないため除外対象です。

ツールやIDE関連の除外設定

  • Asset Store Tools(コメントアウト)
    • 必要に応じて、Asset Store Toolsプラグイン関連のファイルを除外できます。
  • /[Aa]ssets/Plugins/Editor/JetBrains*
    • 役割: JetBrains Riderなど、JetBrains製エディターの自動生成プラグインファイル。
    • 理由: 自動生成されるファイルのため、共有する必要はありません。
  • .vs/
    • 役割: Visual Studioのキャッシュや設定ファイルが格納されるディレクトリ。
    • 理由: 各ユーザーごとに生成され、環境依存のため除外します。
  • .gradle/
    • 役割: Gradleのキャッシュディレクトリ。
    • 理由: ビルドプロセスで使用される一時データで、バージョン管理に不要です。
  • ExportedObj/ と .consulo/
    • 役割: 自動生成されたプロジェクトファイルや一時ファイルの保存場所。
    • 理由: これらも環境固有で、再生成が可能なため除外されます。
  • Visual Studio/Unity関連の各種ファイル
    • 対象: *.csproj, *.unityproj, *.sln, *.suo, *.tmp, *.user, *.userprefs, *.pidb, *.booproj, *.svd, *.pdb, *.mdb, *.opendb, *.VC.db
    • 理由: これらはプロジェクトやIDEの自動生成ファイルであり、ユーザーごとに異なるため、共有する必要はありません。
  • Unity3D生成の.metaファイル(特定の拡張子)
    • 対象: *.pidb.meta, *.pdb.meta, *.mdb.meta
    • 理由: 一部の自動生成される.metaファイルは、各環境で再生成可能なため除外されます。
  • sysinfo.txt
    • 役割: Unityのクラッシュレポートなどのシステム情報。
    • 理由: デバッグ用の一時ファイルであり、共有する必要がないため除外します。

ビルド成果物と関連ファイル

  • ビルド成果物
    • 対象: *.apk, *.aab, *.unitypackage, *.app
    • 理由: 生成されたアプリケーションファイルはリポジトリで管理する必要がなく、再ビルドが可能なため除外します。
  • crashlytics-build.properties
    • 役割: Crashlytics(クラッシュレポートツール)によって生成されるビルド情報。
    • 理由: 自動生成されるため、Gitで管理する必要はありません。
  • Packed Addressables
    • 対象: /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
    • 理由: アセットバンドルのように、パッキングされたデータファイルは、再生成可能で管理の必要がないため除外されます。
  • Temporary auto-generated Android Assets
    • 対象: /[Aa]ssets/[Ss]treamingAssets/aa.meta/[Aa]ssets/[Ss]treamingAssets/aa/*
    • 理由: Android向けに自動生成される一時的なアセットは、共有の必要がなく毎回再生成されるため除外します。

まとめ

この.gitignoreファイルは、Unityプロジェクトにおいて以下の点を実現するために設計されています。

  • 不要なファイルの管理排除: 自動生成や環境固有のファイルを除外することで、リポジトリが不要に肥大化しないようにする。
  • 環境依存の排除: 開発環境ごとに異なる設定やキャッシュデータを共有しないことで、各ユーザーが独自に最適な環境を構築できるようにする。
  • ビルド成果物の除外: 生成物は再ビルド可能なため、ソースコードと必要な設定ファイルのみをGitで管理する。

この設定により、プロジェクトがクリーンな状態で管理され、チームでの共同開発やバージョン管理がスムーズに行えるようになります。

Unity

Posted by hidepon