初心者向け！Unity Collaborateを使ってみる

## Unity Collaborate って何？

Unityを多人数で使う場合、これを導入しているとスムーズにファイルのやりとりができます。しかもUnity単体で動く（SourceTreeとか外部アプリケーションを使うことなく）ので、改めてインストールする必要もありません。Unity 5.5以降であれば、既に利用可能になっているんですねー。いやー、楽になったわー。おじさんUnity3.5の時代では、協力作業の環境づくりが大変だったからなー。だからゲームジャムとかその場限りの多人数プロジェクトとか、効果発揮しますよ。なんせセットアップが超楽だから。

## Unity Collaborate のセットアップ

１、 準備として
　Unity アカウント作成をしておきましょう。わからない人は[ここらへん](http://hiromart.com/blog/from_installation_to_start/) を参考にしてアカウントを作ってみてください。 
　あと、とりあえず適当なプロジェクトを作成します（もちろん既存のプロジェクトでも構いません）。

２、 Serviceウィンドウを立ち上げる
　Unityエディタで一番上のメニューから「Window」→「Services」を選択して、Serviceウィンドウを出してください。
　Unityアカウントにログインしていない場合は、そこに「Sign In」と出るので、クリックしてログインしてください。
![UnityCollabo01.gif](https://qiita-image-store.s3.amazonaws.com/0/72960/fcf919d6-3d10-c21e-00b8-971c23bcdc35.gif)

３、　プロジェクトを登録＆Collaborateをオンに
　「Create a Unity Project ID」で「Create」をクリックすると、現在のプロジェクトをServiceに登録されます。

## Unity Collaborate 使ってみる

じゃあまず、使ってみましょう！

１.　Collaborateをオンに
上の部分の「Collab」ボタンを押すと、タブが開いて「Start now!」を押すことで、Collaborateが利用できるようになります。
![UnityCollabo02.gif](https://qiita-image-store.s3.amazonaws.com/0/72960/f9f23a2c-cebb-5955-70aa-2cb8d1b01381.gif)

２.　はじめてのアップロード
　「Collab」ボタンの横に「↑」が出ているときは「サーバーにアセットをアップロードが可能な状態」です。というわけで、これをクリックして早速アップロードしてみましょう。
　クリックするとコメントを求められるのですが、これはあとで何をアップロードしたかわかるためのもので、大切なものですのでちゃんと書いておきましょう。そして「Publish now!」をクリックしてアップロードします。数秒後には完了した画面が出るはずです。
![UnityCollabo03.gif](https://qiita-image-store.s3.amazonaws.com/0/72960/e51d15f2-657f-2cf3-ae3d-3875b8b808c2.gif)

３.　メンバーの追加
　多人数でゲーム作るということなので、誰か他の人を同じプロジェクトに入ってもらいましょう。
　「Collab」ボタンを押して、ウィンドウの下の「Invite teammate(チームメイトを誘う)」をクリックします。
　右のサービス画面でメンバーの追加ができるので、招待したい人のUnityアカウントのメールアドレスを入力して「Invite」クリックしてください。すると招待した人へメールが飛んできます。
　招待された人は新たにUnityを開いてみると、「In The Cloud」タブがあってそこを選択すると、クラウド上のプロジェクトが開けるようになっているはずです。
　そこの中の該当のプロジェクトを選択すると、晴れてプロジェクトが共有となりました。
![UnityCollabo04.gif](https://qiita-image-store.s3.amazonaws.com/0/72960/7fe6b478-5633-9d74-82dc-0e960265bf82.gif)


４. アップデート
　とりあえず何かファイルを作ってみましょう。ここではSampleScriptというC#スクリプトを作ります。
　するとCollabボタンが青くなって、「↑」となるので、これを押してアップロードします。
　一方、他の開発者のUnity画面では、Collabボタンがオレンジ色になって「↓」となっているはずです。これを押すと、先ほどアップロードしたSampleScriptがクラウドを通じてダウンロードされるはずです。
![UnityCollabo05.gif](https://qiita-image-store.s3.amazonaws.com/0/72960/7560e31a-72a8-31cc-69c4-7ba2554e045d.gif)

５. コンフリクト！
　では、同時に同じファイルを修正してたら、どうなるか？
　基本的に修正箇所が違っていれば勝手にマージしてくれるんですが、動画のように全く同じ箇所を修正してたりすると「コンフリクト」が起こります。このままではプロジェクトを前に進めないので、コンフリクトを解決する必要があります。
　コンフリクトの解決方法としては、

　・外部マージツールでうまくマージする「Launch external tool」
　・相手の修正をなかったことにする（自分ので上書き）「Choose mine」
　・自分の修正をなかったことにする（相手ので上書き）「Choose theirs」

　があります。その時々で適切なものを選択してください。特に「Choose mine」は注意が必要ですよ！黙ってやるとケンカ上等ですヨ！
![UnityCollabo07.gif](https://qiita-image-store.s3.amazonaws.com/0/72960/1fa77f5b-5dc3-5f54-c872-90f385f66e32.gif)



## Unity Cloud Build を動かしてみる

実は Unity Collaborate をしていると Unity Cloud が簡単に動くんです。
Unity Cloud Build とは、通常は自分のPCとかでしているビルドが、オンライン上のクラウドでビルドしてくれるサービスです。
定期的にビルドしたり、iOS/Androidとかプラットフォーム別でビルドできたりすることができるので、凄く便利です。

やり方はとっても簡単で、ServiceウィンドウでCloud Buildの設定していくだけです。

まずはPlatformを選択して、どのUnityバージョンでビルドするか選択して、「Next: Build→」を押すだけです。

しばらくするとビルド完了のメールが飛んできます。その中の「INSTALL」リンクをクリックすると、ダウンロードサイトに行くので、そこからZIPをダウンロードすれば、実行できるようになります。
![UnityCollabo08.gif](https://qiita-image-store.s3.amazonaws.com/0/72960/d656ee99-7623-620c-0632-5840593a2ef9.gif)

## Q&A

Q. Gitで言うところのbranch ってないの？
A. 今のところ(2016/12/7現在)、まだ実装されていません。でも考えていないわけじゃないので、今後に期待です。

Q. PrefabとかSceneとかちゃんとマージしてくれるんの？
A. 結構、ちゃんとマージしてくれますよ！もちろん違う人が同じ箇所を変更していれば、コンフリクトすることはありますが、「自分の変更を生かす」「相手の変更を生かす」「手動で変更」と選択ができます。

Q. Diffツール変更できる？
A. できます。

Q. Unity Personal ユーザーでも使える？
A. 使えますよー！よっしゃー！

Q. Binary マージしてくれるの？
A. それは無理っす。

Q. GitHubのリポジトリは使える？
A. できないです。今のところUnity Technologies が用意したサーバーで一括管理しています。サーバー設定とかの手間をしなくていいので、楽チンです。

Q. 容量制限は？
A. 各プランによって違います。 Unity Personal:5GB、Unity Plus:15GB、Unity Pro:25GB、です。追加容量も25GBごとに月額$5でできる

Q. え？最大1プロジェクト25GB？小さくない？
A. あ、Plus/Pro ユーザーに限り、「一人あたり」の容量です。つまりUnity Proで５人プロジェクトの場合は 25GB×5＝125GB ということです！さすがにこれだけあれば大丈夫でしょう！

Q. 社内ローカルサーバーで使えないですかね？
A. 今のところできませんが、検討中です。できるようにしたいですねー。

## 感想

　5.4あたりはまだまだ、という感じがしたのですが、5.5で確認したところ意外と使えるな！というのが印象です。
　Unity CollaborateはまだΒなので、まだまだなところがあると思いますが、とりあえずゲームジャムとかで使ってみてはどうでしょうかね。Cloud Buildと連携するのは本当楽なので、試しに使ってみることをオススメしますよ！