SourceTree for Windowsで始める非プログラマのためのバージョン管理入門

みなさんこんにちは、id:gigi-netです。ゲーム開発してますか?

ゲーム開発をしているときに困るのは、ファイルのやりとりです。多くの場合は、プログラマはバージョン管理を使い、素材屋さんにはDropboxでファイルを入れて貰い、プログラマが手動でゲーム内に使える形で取り込む、という形が多いと思います。

しかし、この方法だと、プログラマの作業工数が増えたり、変更が入ったときに差し替えの手間が発生したり、前のファイルに更新したかわかりにくい、古いファイルに書き戻ってしまう(デグレード)などの問題がつきまといます。

ところで、最近、Windowsでgitと呼ばれるバージョン管理システムを簡単に利用できるアプリケーション、SourceTreeが公開されました。

これを使うと、従来敷居が高かったバージョン管理が、プログラマ以外でも割と簡単に利用できるようになるため、ご紹介します。

この記事の対象

  • プログラマがバージョン管理を利用していて、そこにファイルを更新する必要がある非プログラマが対象
  • ツールの使い方のみでバージョン管理の概念は少なめ
  • 自分でリポジトリを作って利用する場合は想定していない

事前準備

ダウンロードとインストール

Free Mercurial and Git Client for Windows and Mac | Atlassian SourceTree

こちらのサイトからダウンロードしたインストーラーを起動してインストールしましょう。

.NETのインストールが別途必要なのですが、勝手にインストールされます。

無事にアプリケーションが起動して以下のような画面が起動すれば成功です。やったね!

f:id:kawazblog:20130402224129j:plain

以後、起動したい場合は全てのプログラム>atlassian>SourceTreeから起動できると思います。

暗号鍵の生成

無事に起動できたら、認証用のキーを生成します。上のメニューからTools > Create or Import SSH keysを選択しましょう。以下のようなツールが立ち上がります。

f:id:kawazblog:20130402224643j:plain

ウィンドウ中段右側の方にある「Generate」のボタンをクリックすると、上の方にゲージのような物が表示されます。

マウスの挙動を元にキーを生成するようなので、ウィンドウ上の何も無い空間で適当にマウスを動かしましょう。ゲージがいっぱいになるまで動かせば完成です。

f:id:kawazblog:20130402230857j:plain

完成したら以上のようにキーが表示されるので、「Save public key」、「Save private key」2つのボタンを押し、必ず2つの鍵を保存しましょう。これらの鍵をペアで扱うことによって認証します。割印みたいな物です。 publicの方はあとで使うので、区別が付く名前で保存しておきましょう。

また、必要であればPass Phraseの欄にパスワードを設定することもできます。これを設定しておくと、鍵を使うときにさらにパスワードが求められて安全性が高まりますが、ここでは特に設定しませんし、設定しなくとも大丈夫です。

これらのキーは好きなところに保存しても大丈夫ですが、あとで使う可能性ので、必ずなくさないところに大切に保管しましょう。

githubアカウントの取得

次にgithubと言われるホスティングサービスに登録します。デザイナーの人に説明するときは面倒だから「プログラマ版Pixivです」みたいな適当な説明をしています。

簡単に言うと、プログラマが自分のソースコードをアップしておいて、お互いのソースコードを見あって星を付けたりハァハァしあうサービスです。

ソースコードを取ってきて、ハァハァするためにアカウントの取得が必要です。

GitHub

f:id:kawazblog:20130402231528p:plain

githubにアクセスし、トップページにあるフォームにユーザー名、メールアドレス、パスワードを入力して、下のボタンを押しましょう。アカウントが取得できます。

無事に取得できたら、画面上部のSign inボタンからサインインしましょう

鍵の登録

ここで、githubにあなたが先ほど作成した2つの鍵のうち、「公開鍵」と言われている片方の鍵を登録します。

この作業を行うことで、あなたの手元の変更を簡単にgithub上に公開することができます。

githubにログインした状態で、ページ上部右上に3つ並んでいるアイコンの真ん中をクリックすると設定画面に入れます

f:id:kawazblog:20130402232250j:plain

設定画面左側のメニューからSSH Keysを選び、鍵の設定画面に入ります。

f:id:kawazblog:20130402232742p:plain

右上の「SSH Key Add」をクリックするとフォームが出てきます。

ここで先ほどの暗号鍵の生成で説明した「Public Key」を登録します。先ほど保存した「Public Key」を右クリック>プログラムから開くでメモ帳か何かを使って開いてください。

ファイルの中身をそのままコピペすればOKだったのであれば簡単だったのですが、コピペしただけではダメで、若干加工してあげる必要があります。

具体的には

  1. 開いたファイルの中で"rsa-key-00000000"のあとに続く部分を---- END SSH2 PUBLIC KEY ----までコピーします
  2. コピーした部分の手前にssh-rsa を付けます(要スペース)
  3. すなわちssh-rsa AAAAA....となればOKです

すなわち以下のような感じでフォームを埋めます。Titleの部分は自分の好きな名前を付けましょう。

f:id:kawazblog:20130402233647p:plain

正常に登録できたら完了です。

リポジトリのclone

ここまでで初期設定は完了です。次に、自分のプロジェクトのリポジトリをcloneしてあげる必要があります。

リポジトリとは、プロジェクトのファイル一式だと思ってください。

そのリポジトリをサーバー(今回はgithub上)から、手元にダウンロードしてくる行為をclone(クローン)と呼びます。

SourceTree左上のClone/Newというボタンを押すことで、プロジェクトをSourceTree上に追加することができます。

Source Path / URLというフォームに、自分のプロジェクトのリポジトリのURLを入力します。詳しくはご自分のプロジェクト内のプログラマに聞いてください。

ちなみに、github上から持ってくる場合は、githubのリポジトリのページに行き、上の方に表示されているURLをコピペすればOKです。

今回はこのリポジトリを例に取ります。

giginet/VOXCHRONICLE · GitHub

f:id:kawazblog:20130402234627j:plain

保存場所は自分のわかりやすい場所に変更して大丈夫ですが、デフォルトだとホームのドキュメント以下に入ります。

cloneを選択すると以下の画面のままcloneが始まります。重たいリポジトリであっても、特に進捗が表示されずに、終わるまでずっとこのままなので、失敗したと思わずに辛抱強く待ち続けましょう。

f:id:kawazblog:20130402235136j:plain

実際に使ってみよう

ここまでが事前準備です。みなさま面倒でしたか?僕は面倒でした。

初期セットアップがなかなか大変なのですが、以後この記事を見ればバッチリですね!

上記の設定は一度終わらせてしまえば、あとは他のプロジェクトに携わっても、別のリポジトリをcloneしてくれば良いだけなので、お手軽です

変更を取ってこよう

まず、作業を始める前にはpullを押しましょう。これはサーバー上にあるリポジトリの変更点を手元に取り込むことができます。

ここでpullをしないと、後ほどあなたの更新をサーバー上に反映するときにエラーが出て泣きを見る羽目になるので、必ず作業を始める前にpullをすることをオススメします。

作業します

pullが終わった後にあなたの作業をします。デザイナーはリポジトリ内に新しい画像を追加したり、ライターは文章を加筆したり、いつも通り好きなように作業をしましょう。

プロジェクトのファイルはデフォルトの場合、Documents以下にフォルダが作られているので、そこに新しく作ったファイルを追加したり、元のファイルを変更しましょう。

変更を登録しよう

作業の一区切りが付いたら、その作業内容をサーバー上に反映させましょう。バージョン管理の世界では作業の小単位を「コミット」と呼びます。

SourceTreeのメニューバー左から2番目のCommitボタンを押しましょう。

f:id:kawazblog:20130403000351j:plain

このとき、画像のようにCommit modeをSelected filesにしておくのが直感的でわかりやすいです。

上の部分のテキストフィールドは「コミットメッセージ」と呼ばれ、あなたの更新内容を書くことができる場所です。gitはコミットメッセージがないとコミットすることができないので、必ず何か書きましょう。

下の部分には変更があったファイルが表示されます。今回はREADME.mdを変更し、new_text.txtを追加しています。横のチェックボックスでコミットするファイルを必ず選択しましょう。

その後、Commitボタンを押すと、コミットすることができます。おめでとう!

しかし、コミットしただけでは、変更はサーバー上に反映されません。その後、Pushボタンを押しましょう。PushとはPullとは逆の行為であり、こちらの変更をサーバー側に送信する行為です。

特に問題がなければ何事もなくPushできると思います。 また、pushには権限が必要なので、ここで上手くいかなかった場合は権限周りの問題だと思うので、プロジェクト内のプログラマに自分のgithubIDを伝えて権利を貰うか、鍵の設定を見直してみてください。

過去に一度はpushできたのに何かエラーが起きたら、もう一度PullをしてからPushをしましょう。それでもエラーが出る場合は次の項目を参照してください。

なにかエラーが出たら元に戻そう

基本的には上の更新の取得と反映を抑えておけばOKなのですが、PushやPullが上手くいかないことが起こります。

これは、あなたが作業している間に、他の人がサーバー上に別の更新を加えてしまい、あなたのデータとサーバー上のデータに整合性が取れなくなってしまったときに起こるエラーであることが多いです。 これをコンフリクトと呼びます。

プログラマではあれば、コンフリクトが起こったときに、stashで変更を対比させ、手動でmergeを行う、などのことが可能なのですが、初心者にはやや敷居が高いですし、説明が面倒なのでここでは割愛します。

オススメなのは、何か困ったらひたすら、上にあるDiscardボタンを押すことです。このボタンを押すと、あなたの変更を強制的に前回コミットしたところまで書き戻してしまいますが、何か困ったときはとりあえず押しておくと楽に対処できます。

エラーが出たときに

  1. あなたの変更したファイルをリポジトリ外の別の場所にコピーする
  2. とにかくDiscardボタンを押しまくって前回の状態に戻す
  3. Pullボタンを押して最新版に更新する
  4. 1で退避したファイルを元に戻す
  5. コミットする
  6. 神頼みしながらPushする

この方法は非常にカッコ悪く、プログラマならまずこの方法は取りませんが、非常に楽なのでオススメです。困ったときはぜひ。

まとめ

基本的にはこの3つだけ抑えておけばOKです。stashやbranchなどが扱えるといざというときに便利なのですが、面倒なのでこれ以上の解説は他の方にお任せします。

また、以下の記事もプログラマじゃない人に優しそうです

WebデザイナーもGit使うといいよって話 - Cherry Pie Weblog

この記事を読めば、何となくはgitを使えるようになるはずです。プログラマ以外のデザイナさんやスクリプターさんがバージョン管理を使えるようになると、プログラマの差し替えなどの手間が激減します。是非とも習得して楽しくゲーム開発を行いましょう!