お友達のあきらさんに、GitHubを使うべきかSourceTreeを使うべきか聞かれたのでまとめました。
対象
本職エンジニアではなく、Gitも(ほぼ)触ったことないけど、個人でゲーム作ったりしてる人
要約
- Gitというシステムがあるよ
- GitHubはWebのソフトウェア開発プラットフォーム、SourceTreeはGitのGUIツール(ソフトウェア)だよ
ファイルはローカルに置いておきたい + 一人での開発 -> SourceTree(ソフトウェア)を使うのがおすすめ!
ファイルはリモートに置いておきたい + 共同開発(みんなで別々のファイルを同時にいじりたい) -> Github+GitHub Desktopがおすすめ!
*あくまでもおすすめで、使い方次第でどうとでもできます。
SourceTree以外のツールを使うこともできます。
解説
Gitっていうシステムがあるよ
まず、Git(ギット)という技術があります。
分散型バージョン管理システムというやつです。
すごくざっくりいうと、作業のセーブポイントをいくつも作ってけるような、便利な仕組みです。
(もう少しちゃんと言うと、ファイルをどう変更していったかの履歴が連なっています。)
Gitは、Linuxを作った人が、ソースコード管理のために開発したものです。LinuxはオープンソースのOSですが、Gitもオープンソースで、タダで配布されています。
Git for Windowsとかね。
Gitの何がうれしいか
少人数の、個人開発におけるGitの威力は、作ったプログラムをバージョンアップで思いがけずバグを出した時に発揮されると思っています。
Ver1.3で何事もなかったけどVer1.4にアップデートしたときに急にバグが起きた場合、おそらくはVer1.3での変更が引き金になっています。
けど、どのバージョンでファイルをどんなふうにいじったか、いちいち覚えてない……。
そんなとき、Gitで管理しておけば、誰がどこをどう変更したのかが履歴に残っています。最悪バグを直せなくてもVer1.3に戻せば一時的に対処できます。
私はティラノスクリプトでゲームを作りましたが、プレーンテキストで記述されているので、かなりダイレクトに変更箇所がわかります。ウディタとかツクールだと、プレーンなテキストの部分以外はせいぜい変更されているファイルくらいかもしれませんが、何をしたのかというログと、ファイル名がわかるだけでもお役に立つものだと思います。
以下は、SourceTreeのスクリーンショットです。
赤いところが削ったところで、緑のところが足したところです。
とにかく、「Git」っていうのがあります。
初心者にとってとっつきにくいのは、素のGitというのはコンソールで操作するものだということです。いちおうGit Guiなんてのもありますが、なかなかね……。
GitHubはGitのWebサービス
GitHubはとっても有名なソフトウェア開発のプラットフォームです。
主に「Gitをつかった、リポジトリ(ファイル置き場みたいなもの)のWebサービス」です。
いろいろ機能がありますが、「Git置き場やさん(Webサービス)」かもしれない。ソースコードお預かりサービスです。
GitHubはgitの技術を用いた「Gitを使った有名なサービス屋さん」であって、GitHubはGitではないんです。
違うんですが、「すみません、Gitがあるって聞いたんですが……」って感じで探すと、「はい! うちでやってますよ!」ってなります。
初心者さんがGitを始めようとして導入記事を探すと、Git+GitHubの構成のものがひっかかりがちです。
GitHubはかなり有力な選択肢なので、間違いはないんですけれどもね。
Gitだけを使いたいならGitHubを使わなくてもいいのです。
無料プラン/有料プランがありますが、個人だったらFreeで間に合うんじゃないでしょうか。
基本的には、Web上のGitHubのところにコードを置かせてもらって、作業することになると思います。
急にサービスが終了したら阿鼻叫喚ですが、はるかにでっけぇ数々の企業のデファクト・スタンダードですし、いまのところそういうことはないです。
パソコンがぶっ飛んでも安心。
(まあ、でも、営利企業なので、プライベートリポジトリを作れる上限の個数が制限されたり、みたいな可能性はありますね。前は上限があったんです。)
SourceTreeはGUIツール
一方でSourceTreeは「GitのGUIツール」です。
超見栄えがいいですし、結構使いやすいです。
SourceTreeだけでいうなら単なるソフトウェアです。
ですので、「GitHubにソースを預けておくけど、ローカルでは、SourceTreeでコミット&プッシュするぜ!」ってややこしいこともできます。
また、GitHubにはGitHub Desktopというソフトウェアがあります。これでも「GitHubにソースは預けないけど、使うんだぜ!」ってことができますが、GitHubはWebサービス屋さんなので標準のファイル置き場はGitHubになっており、ちょこちょこ気を付けて使っていく感じになります。
実はSourceTreeを買収したAtlassianがBitbucketというサービスもやってて、そっちがお預かりサービスをやっているのであった……。
GitHubはWebサービス、SourceTreeはツール(ソフトウェア)だよ
開発コードをどこにしまっておくか……。
人の家(GitHubなど)か、自分のPCだけか、バックアップ込みか……。
みんなでの共同製作を行いたい場合、便利なのはGitHubです。ほかの人はGitHubにおいておいたのを引っ張ってきて見ればいいので、いちいちソースコードを渡さなくって済みます。
ファイルをいじるのが実質一人で、出来上がったファイルをアップロードしたり、管理するのが自分だけなら、GitHub使わなくてもいいです(便利なので、使ってもいいです)。
われわれに特有かもしれない、ちょっとヘンな使い方
有料素材、暗号化してない状態で人の家にアップロードするの怖いじゃん???
(きちんと.gitignoreでアップロードしないようにして、プライベートリポジトリにしておけば大丈夫ではあります。)
あとは、年齢制限のあるコンテンツについて……人の家に預ける以上規約があります。
これは主にポルノ置き場とかにならないように、違法行為とかされないようにだと思いますが、全然悪いことしてなくても、二次元オタクでも、急にGoogleDriveをBANされたりする恐怖におびえる我々はやっぱり気を付けないとなりません。
GitHubの規約です。
じぶんのところにリポジトリを作って、じぶんのところでクローンする。
こうすると、差分だけは見れるようになります。
これだけでもかなりアドです。
(*バックアップがないならPCが壊れたら吹っ飛びます。)
自分のところだけにがっつりファイル置きっぱなしにしたいなら、安全なのはSourceTreeだと思います。
余談と補足
Gitの「分散型」ってどういうことか
Gitの優れた点で、それまでのバージョン管理システムと違う点は、「分散型のバージョン管理システムである」という点でした。
みんなが持っているファイルにはどれがマスターがなく、どれからでもくっつけたり足したり引いたりできます(ファイルの変更が衝突することをコンクリフトといいますが、そういうときは誰かが泣きながらマージします)。
分散型じゃないバージョン管理システムもあります。Subversion(SVN)です。私は使ったことがありませんが、一人しかコードをいじらない場合は便利だそうです。
素材ファイルとかはgitではあんまり管理しない
Git、とくにGitHubでは重いファイルは管理しません。
GitHubの無料プランでは、1ファイルの上限は300MBまでです。
ボタンの画像とか、ちょっとしたやつならいいんですが、圧縮前の画像とか、BGM素材とかはアップロードせず、管理から外しておきます。
また、ツール自体とか、ビルド後のファイルとか、「開発環境」とか、「環境さえあれば生成できるやつ」は通常あんまりアップロードしません。ティラノスクリプトでいったら、プロジェクトファイルだけ管理します。
GitHubのリポジトリのパブリック/プライベート
GitHubのリポジトリには、パブリックとプライベートがあります。
(オープンソースのソフトウェアをみんなでわ~って弄るときは、パブリックを使う)
パブリックにするということは、インターネットに公開するのとおんなじです。とくに、パスワードの混じったテキストファイルや、有料の素材などには気を付けないと怒られが発生します。
きちんとプライベートリポジトリにしておけば大丈夫ですし、素材も.gitignoreに登録してアップロードしなければだいじょぶなんですが、うっかりやらかしそうな予感がある場合はローカルだけに置くのがおすすめです。
つまり、ほんとうに心配だったら、ソースコードお預かりWebサービスのGitHubは使わず、SourceTreeだけ使うのがおすすめです。
続きの記事
参考リンク
公式ドキュメント。日本語化もされている!
(とはいえ、GitHubのサービス形態への言及などが最新ではない)