アーティスト向けUnityのGitリポジトリセットアップ方法

はじめに

ここ数年、VTuberの黎明を筆頭に、Unityでの個人ないしチーム開発が盛んになってきたように思います。

おかげさまで、アーティストの方々と連携して開発を行うことが増え、Gitを使用していただく必要が頻繁に発生することになりました。

そんな中で、実際に自分でプロジェクトを立ち上げたいという声も上がりつつあるため、普段自分が行っているセットアップ作業について、一貫して解説するような記事があっても良いのかなと感じ、今回の執筆に至りました。

ご不明な点はなんなりとご連絡ください。
尚、Gitについての詳しい解説は省いており、あくまでもUnityの初期セットアップに重点を置いています。

導入

よく巷に落ちているGitのセットアップ方法は、エンジニアに向けたものがほとんどであるという体感です。

しかし、CGを扱うとなると、一般的なエンジニア用途のGit設定とは少しだけ異なってきます。なぜなら、CGではバイナリファイル(画像やFBXなどのデータ)を多く扱うからです。そもそもGitというものは、文字の差分を記録するのに長けたツールですので、このような用途とは相性が悪いのです。

そのため、バイナリファイルを扱うGitの使い方、特にUnityの場合は、
秘伝のタレ的手順があります。

大事なこと

Gitに含まれるすべてのファイルやフォルダは、半角アルファベット表記で作成することを徹底してください。日本語などのマルチバイト文字がGitに含まれると、Gitでは以下のように文字化けしてしまいます。

画像11

Gitに限らず、マルチバイト文字はいろいろなところで弊害を生んでしまうため、コンピュータを扱うプロとして、ファイル名やフォルダ名は普段から半角アルファベットで表記するよう徹底しましょう。

Git関連のインストール

使用するOSは、Windowsの場合を想定しています。
まずはじめに、Gitを使用する上で必要なソフトウェアをダウンロード、
インストールしていきます。

順番が大事なので、この順番通りにインストールしてください。

- Git for Windows (https://gitforwindows.org/)
- Git LFS (https://git-lfs.github.com/)

それぞれのインストール方法は、基本的に全部デフォルト設定ではいを押しておけばOKです。

インストールが完了したら、それぞれきちんとインストールされたかを確認します。コマンドプロンプトを立ち上げて(Windowsキーを押してcmdで検索すると出てきます)、以下のコマンドを入力してエンターキーを押してください。
(C:\Users\user> は、はじめから書かれているので入力しない)

C:\Users\user>git --version
C:\Users\user>git lfs --version

それぞれ、このようなバージョン番号が返ってきたらインストールが成功しています。

git version 2.30.0.windows.2
git-lfs/2.13.2 (GitHub; windows amd64; go 1.14.13; git fc664697)

逆に、何かしらエラーっぽいメッセージが返ってきていればインストールは失敗しています。まずはそのままPCを再起動して、再度このコマンドを入力してみると、きちんと返ってくる場合があります。それ以外の場合はちょっとわからないので質問を投げてください。

ツールのインストール

次に、僕が愛用しているソフトをインストールします。
- Fork Git Client (https://git-fork.com/)

これは、Gitをグラフィカルに操作できるGUIアプリケーションです。
Gitは元々、先程のようにコマンドから制御するソフトウェアなのですが、そのままでは扱いづらいので、様々なGUIアプリケーションがリリースされています。その中でもForkは比較的最近作られたものではあるのですが、動作が軽く機能がシンプルなので、愛用しています。こんな感じ。

画像1

Unityプロジェクトの用意

Unityプロジェクトを作成する前に、少しフォルダ階層について思いを馳せてみます。
これは僕の好みではあるのですが、特定の案件のフォルダを作ってから、その中にUnityのプロジェクトを作成するようにしています。
このような感じ。

なにかしらの案件フォルダ
├─── Unityプロジェクトのフォルダ

この案件のフォルダを、リポジトリにしてしまおうという魂胆です。
なぜなら、案件を進めていくにあたり、必ずUnityとは関係のないファイルも管理したくなる場合があるからです。こんな感じで。

なにかしらの案件フォルダ
├─── Unityプロジェクトのフォルダ
├─── サムネイル
│    ├─── thumbnail.jpg
│    └─── animation.gif
├─── ドキュメント
│    ├─── 使い方.pdf
│    └─── 渡し方.pdf

Unityプロジェクトのフォルダをそのままリポジトリ管理してしまうと、Unityプロジェクトの中に関係ないファイルを入れないといけなくなり、
まとまりが悪くなってしまいます。

そのため、案件フォルダを先に作成し、その中にUnityプロジェクトを作成します。Unityが起動したら、一旦ここで作業を止めてください。

Gitリポジトリの作成

Forkを使って、Gitリポジトリを作成していきます。
Forkを起動したら、以下の操作を行ってください。

File > Init New Repository

スクリーンショット (189)

そして、先程作成した案件フォルダを選択して、OKを押します。

すると、案件フォルダに.gitフォルダが作成され、Forkには以下のようなGitのリポジトリの初期画面が表示されます。

ちなみに、先頭にドットのついているファイルやフォルダは、隠しファイルとして扱われるのでOSの標準設定では見ることができません。
Windowsの場合は、エクスプローラーの表示設定で表示することができるようになります。

画像3

Git Ignoreの設定

ForkのChangesの項目をクリックしてみると、今現在のファイル差分を見ることができます。リポジトリ初期化状態だと、ゼロからの差分になるので、大量のファイル差分があると思うのですが、実はこの中でGitできちんと管理しなければならないものはそんなに多くありません。
(特にLibraryフォルダなんかは一時的なファイルが沢山作られます)

今の状態では、管理しなくても良い余計なファイルまで差分として出てきてしまっているため、これを無視するような設定を行います。

特定のファイルの無視設定は、Gitでは、「.gitignore」というファイルを配置することによって行うことができます。

「.gitignore」は、フォルダのどこに置いても機能するので、基本的には案件のフォルダの中と、Unityプロジェクトのフォルダの中の2箇所に配置します。

案件のフォルダの中には、この「.gitignore」を配置してください。

Unityプロジェクトのフォルダの中には、この「.gitignore」を配置してください。

中身の詳しい解説は行いませんが、基本的に、無視したいフォルダとファイルを列挙しているイメージです。

「.gitignore」を配置したら、もう一度Forkに戻り、Changesを見てみると、
先程よりも大幅に差分のファイルが減っていることがわかるかと思います。
この差分が、まさに管理するべきファイルということになります。

ちなみに、Forkの初期状態だとファイル差分がフォルダ階層で表示されていて見づらいので、自分はList表示にしています。

スクリーンショット (193)

次の工程に移りましょう。

Git LFSの設定

次に、画像やモデルなどのバイナリファイルを、Gitで管理しやすくするために、GitLFSの設定を行います。

この設定を忘れて、すでにコミットしてしまって、あとからLFS化しようとすると、とてもとても手間なので、コミットをする前に、漏れがないように設定しておきます。最初に全部列挙しろというわけではなく、「コミットする前に」なので、これだけ肝に銘じておいてください。

では、実際に設定に入ります。
Forkで、以下の操作を行ってください。

Repository > Git LFS > Initialize Git LFS

スクリーンショット (191)

これで、リポジトリがGit LFSに対応しました。

そしてこれも「.gitignore」と同じように、どのファイルがLFSの対象になるかを設定する必要があります。

LFSの設定は、「.gitattributes」というファイルをリポジトリ直下(.gitフォルダと同じ階層)に置くことで行うことができます。自分の経験則から、以下の「.gitattributes」を作ったので、リポジトリ直下に配置してください。

配置した後、ForkのChangesで、バイナリファイルを選択すると、「LFS」と表示されるようになっているかと思います。

自分の環境では動くのに、他の人がリポジトリを引っ張ってくるとうまく行かない、などの問題は大体「.gitignore」または「.gitattributes」の設定が間違っていることが多いです。

パスの最大文字数制限を無効にする

Gitでは、デフォルトではファイルのパスの長さに260文字制限があります。
Unityは、たまに階層が深くなったり、パッケージによってはえらく名前の長いファイルなどが存在するので、たまにこれに引っかかるのを回避します。

Forkの右上に、Consoleというものがあるので、クリックして開きます。
先程のコマンドプロンプトのような画面が出てくるので、以下のコマンドを入力してエンターキーを押してください。

git config core.longpaths true

これで260文字以上のパスをGit上で扱えるようになりました。

コミットする

ここまで設定したら、一旦コミットを行います。
Changesにある全てのファイルをStagedにして、コミットします。
慣習的に、

Initial commit (Unity2020.2.2f1)

のように、Unityのバージョンを添えてコミットメッセージを打ちます。
これは、リポジトリを受け取った人が、ひと目見てどのバージョンで開けばよいかがわかりやすいからです。

GitHubにもリポジトリを作る

自分のGitHubページのRepositoriesページに行くと、
Newというボタンがあるので、押します。

画像6

画像7

基本的に、最初にリポジトリを作成する場合はPrivateから始めるようにしてください。RepositoryNameは英語じゃないとだめです。(自分はC#の規則に則ってキャメルケースで作りがちです。Webの人は全部小文字のハイフンつなぎが多いイメージです。)

リポジトリを新規作成すると、このような画面になるので、赤で囲んだ部分のURLをコピーします。

画像8

次の工程で最後です。

プッシュする

Forkに戻り、Remotesの上で右クリック > Add New Remote を押します。

スクリーンショット (195)

すると、以下のようなモーダルが出てくるので、

画像10

Remoteをorigin、Repository Urlに先程コピーしたURLを入力します。
Add New Remoteボタンを押してモーダルを閉じます。

そのままプッシュすることで、GitHubの方にリポジトリが同期されます。
GitHubのリポジトリのページが初期状態から変化していれば、プッシュ成功です。

おわりに

お疲れさまです。

この記事が気に入ったらサポートをしてみませんか?