はじめに Source Treeが必要なワケ

ぎええええええ!!!

どうした、ずいぶんと面白い悲鳴だな。

5時間に及ぶ、私の血と汗と涙の結晶の制作データが、ツクールMVのフリーズで消えた!!!

おおう……お気の毒様。バックアップは取ってあるのか?

ハッ! そうだった。バックアップ!ちゃんと取ってあるよ!

やばい。どれがどの時点でのバックアップか分からない……

まさかの手動バックアップか……いやそれ以前に、なんなんだよそのゲームタイトルは

王に弱みを握られたイケメン勇者が、あれやこれやとお使いを頼まれて、見事こなすと褒美として王と2人で

あーもういいわ。

ひどい……。

まあそんなわけで、手動でバックアップを取ると、いざ戻したい時にどのファイルだったか忘れてしまう。どの日付でどのファイルが修正されたか、逐一記録してチェックするなんて面倒だよな?

そうなんだよねー。だから、実装できるか分からない機能を、とりあえずお試しで作ってみて、やっぱりダメだったので前に戻したい……ってことができない。

そこでSource Treeの出番だ!

ソースツリー?

Source Treeでバージョン管理をすると、こんな感じでバージョンを管理し、好きなタイミングで戻せるようになる! しかも操作もべらぼうに簡単で超初心者向けだ!


▲すこぶる管理が苦手な僕でもこんな感じでスッキリ利用できる。日付や変更箇所・説明文などを頼りに、戻したいところまで戻すことができる。

うわすごい……整頓魔のA型が神経質に管理してるかのような……。

実際に僕がやっているのは、「保存したいタイミングで、説明文を記載してボタンを押す」ただこれだけだ。日付とか、どのファイルが変更されたかなどは、Source Tree側で全部自動で検出してくれる。

すごいね……。至れり尽くせり。

Source Treeの偉大さが分かったところで、導入方法と使い方を解説していくぞ。これで君も今日から、不安定で煩わしいバックアップ環境からおさらばだ。

Source Treeのインストール

インストールは簡単……と言いたいが、初心者には少々設定で戸惑うところがある。
だが、ツクールでとりあえずバージョン管理をする上では全部不要なので、そこらはスキップして後から設定しても問題ないのだ。

そこで、「後から設定していい部分」をスキップした分かりやすい初心者向けのサイトがあるので紹介する。

Gitを視覚的に操作できる「SourceTree」のインストール方法

まずはこのサイトを参考に、インストールを終わらせてしまおう。

SourceTreeでツクールMVのプロジェクトを管理する

Gitも含めてインストールが終わったところで、いよいよツクールMVの制作データを管理してみよう。

制作フォルダを指定して読み込む

この手順は一回だけでいいので、面倒臭がらず済ませてしまおう。
(ただし新しく他のゲームを作る場合は、当然また同じ手順で指定する必要がある。)


▲「新規/クローンを作成する」をクリック


▲「リポジトリを作成」をクリック。



▲「保存先のパス」の右にある「…」を押し、ツクールで作業中のフォルダを指定する。


▲「リポジトリをブックマーク」の欄で、自分が分かるプロジェクト名を入力する。Source Tree上で表示される。日本語が不安なら、ゲーム名を英語やローマ字で表記すればいいだろう。


▲設定した名前でリポジトリが作成されれば成功だ。

スクショを見ると、他にも2つ「HighSpeed TPS」「HouchiApp」ってリポジトリがあるみたいなんだけど……。

それは、僕がUnityで作成中の別のゲームだ。Source Treeでは、複数のゲームを読み込んで個別に管理できるんだ。

また新しくゲームを作る時は、同じ手順で追加すればいいわけね。

Source Treeでバージョン管理する

Source Treeに作業場所を教えたので、ここからバージョン管理が行えるようになる。
さっそく、現在のプロジェクトの状態をSource Treeに登録してみよう。

Source Treeでは「更新されたファイル」は自動で検出するが、その更新を記録するのは手動で行なう必要がある。
自分の意思で記録しない限りバックアップが作られないので、リポジトリだけ作って安心して放置していてはダメなのだ。

えー、なんか面倒くさい……

逆に言うと、「好きなタイミングで記録できる」ってことだ。誤字を修正しただけでいちいち登録されていては、後で見返す時に細かすぎて見つけにくくなるだろ?

「よしここまで完成!一区切りついたので、Source Treeに記録しよう」と自分で決めるわけ。コメントを記載してボタンを1回押すだけなので、面倒臭がらずやっていこう。

コミットでSource Treeに記録

Source Tree(正確にはGit)では、変更箇所をリポジトリに記録することを「コミット」という。
ライザップのCMぐらいでしか聞かない単語だが、「成果をコミットする」などで無理やりにでも覚えてもらうしかない。

コミットの仕方は非常に簡単だ。

  • 記録したいファイルを指定し
  • どこを変更したかコメントを残し
  • コミットボタンを押す
  • これだけ。順に画像つきで解説する。


    ▲対象のリポジトリであることを確認したら、上の「コミット」ボタンを押す。


    ▲「作業ツリーのファイル」欄に、対象のファイルが一覧で並ぶ。今回は初めてのコミットなので、プロジェクト内の全ファイルが対象になっているが、次回からは更新されたファイルのみが表示される。


    ▲「Stage All」を押すと、表示された全ファイルがコミット対象として上部へ移動する。


    ▲下の入力欄に、どのような理由でコミットするのか記述する。このコメントは必須で、記述しないとコミットができない。後で見返した時に分かりやすくするための仕様なので、「ああああ」などテキトーに入力しないように。Source Treeを使う意味が全く無いからだ。


    ▲コミット完了……だが、なにも表示されていない。詳細は省くが、「ブランチ」の下の「master」をクリックすると表示される。


    ▲コミット完了! 無事、先ほどのコミットが表示された。

    以上が一連の流れだ。

    思ってたより簡単だね。作業日誌をつける感覚で、こまめに登録していこうかな。

    変更箇所をコミットする

    具体的にどうやってコミットを使うか書いていく。
    やっていることは先ほどと同じだが、いまいち実践的な使い方が分からない人は読んでみよう。

    例えばこのマップに、おっさんキャラを追加したいと思ったとする。

    どういう風の吹き回しでおっさんを……。


    無事、ハゲのおっさんが追加された。スクショを撮り忘れてしまったが、イベント名は「EV16」という名前ではなく「おっさん」にリネームしてある。理由は後述。


    ▲Source Treeの画面に戻ると、「コミットされていない変更があります」と表示される。先ほどのおっさんの追加を、Source Treeが自動で検出したのだ。


    ▲「作業ツリーのファイル」を見てみると、「Map002.json」が対象になっている。先ほどのおっさんはID:2のマップに追加したので、その部分が更新されたのだ。ファイルをクリックしてみると、ご丁寧に緑部分で「おっさん」キャラが追加されたことが分かる。

    なるほど。だからさっき、EV16みたいな初期名じゃなくて、分かりやすくイベント名を設定したんだね。

    そういうこと。変数名・スイッチ名・コモンイベント等でも同様だ。Source Tree関係なく、分かりやすい名前は制作をスムーズにするぞ。


    ▲変更箇所を確認したら、「Stage All」でファイルを上に移動させ、どのようなコミットなのかコメントを記載してから「コミット」ボタンを押す。


    ▲これで、「おっさんを追加」という進捗が無事Source Treeにコミットされた。

    以前のバージョンへ戻す

    さて、おっさんを追加したはいいが、「やっぱりこいつ要らないので、前の状態に戻したい」ってこともあるよな。

    不憫なおっさんだ……。

    たった1人のイベントの削除ならツクール側の操作だけで問題ないが、もっと規模が膨れ上がると「どのマップのどのキャラを削除すれば元に戻るか分からない」といった状態になる。

    また、データベースやイベントの中身までは戻せないので、これらを前に戻したくなった時にどうするか、先ほどのおっさんを削除する例で説明しよう。


    ▲コミット一覧で、戻したいところまでカーソルを持っていって選択する。今回はおっさんが追加される前の状態まで戻したいので、「おっさんを追加」ではなく、その前の「初めてのコミット」を選択する。ここでテキトーなコメントをつけていると後悔する。


    ▲右クリックし、「現在のブランチをこのコミットまでリセット」を選択。ブランチという聞きなれない言葉が新しく出てきたが、今は無視していい。要はこのバージョンまで戻すということだ。



    ▲このような画面が現れるので、Mixedを選択してHardに変える。


    ▲仰々しいメッセージが表示されるが、要するに「もうおっさんが追加された状態には戻せないぞ」という警告メッセージだ。今回はおっさんを追加する前に戻したいので、Yesを押す。おっさんは永遠に消え去る。

    お、おっさーん!


    ▲成功。「おっさんを追加」のコミットが跡形もなく消え去っている。


    ▲しかし、この状態でツクールのエディタに戻っても、相変わらずおっさんは存在している。

    おっさん!? 生きてたのね!


    ▲ここでツクールを再起動すると、晴れておっさんが消えて前の状態に戻る。Source Treeでバックアップされることをツクール側は想定していないため、コミットを打ち消した後は必ずツクールを再起動しよう。
    ちなみに、Unityではこの作業は必要なく、Unityエディタに戻った時点で即座に反映される。

    これで、めでたくおっさんが完全消滅し、おっさんが出現する前の状態まで巻き戻ったことになる。

    おっさんのご冥福をお祈りします……。

    以前のバージョンに戻した後、再度最新バージョンに戻したい場合は?

    さて、ここまで読んで疑問に思った人がいるかもしれない。

    やっぱりおっさんを追加した状態に戻したくなったらどうするのか、とね。

    消されたり戻されたり、忙しいおっさんだなあ……。

    だがしかし、先ほど説明したように、今の戻し方は破壊的なものであるため、再びおっさんを追加した状態に戻すことはできない。

    ぎゃー!おっさーん!

    それじゃ困る、という人も多かろう。ごもっともだ。Git(Source Treeの機能を担う根本のソフト)では、全ての記録を残しておくべきだということで、Hardリセットは極力使うべきではないとの意見もある。いざという時に巻き戻しの聞かないバックアップなんて危ういもんな。

    そこで必要になってくるのが、先ほどチラッと出てきた「ブランチ」という機能だ。

    ブランチ……


    ▲コミットを打ち消す際に出てきた、ブランチという概念が鍵になる

    これを使うと、「やっぱこのコミットは無かったことにしたい」となった時に、そのコミットを消さずに以前の状態に戻すことが可能になる。

    おお!おっさんを救う鍵がブランチなんだね!

    Hardリセットで戻してしまったので、今回のおっさんは二度と復活しないけどな。予めブランチを使っておっさんを追加しておけば、今回の惨劇は回避できた。

    記事が長くなってしまったので、次回はブランチを使って、より安全にコミットと打ち消しを行なえる方法を説明する。

    まずはこの記事を読み返しながら、Source Treeの仕様や動作に慣れてみよう。ゲーム制作がより楽しくなるぞ!