私を含め、いろんな人が共同開発するときにまず最初に行き詰まるのがgitではないでしょうか。
実際、チームで開発を進めていく中で、探り探りでいろんな事を試していくことでなんとか基本的な使い方がわかる様になってきました。
このシリーズでは、はじめてgitに触れる人が少しでもわかりやすく理解できるように、かみ砕きながら紹介してみようと思います。
今回は、とりあえず最低限の言葉の意味をわかる様になるところまでを目標にします!
この記事の目次
gitとは
gitってなによ
gitは「ぎっと」と読み、いわゆるバージョン管理ツールと呼ばれる物です。
何が便利なのかというと、「あー、ミスったー!」と思ったときに、そのときまで遡らせてくれるタイムマシンのような物です。
…と単純に書きましたが、そのためには、過去の自分が優秀である必要がありますし、ツールとして使いこなせる必要がありますが、最低限のことを知っていれば、とりあえずgitで管理しているチームに入って重大なミス(=他の人の変更を破棄してしまう)ということは起こらないと思います。
そのためにどんなふうに管理されているのか、今回はそこまでをイメージできるようにしたいと思います。
何でgitを使うの?
バージョン管理ツールとしては、subversion等の他のツールもありますが、githubというサービスによってgitが広まっているような気がします。
この流れは、おそらくオープンソースという枠の中で、いろいろな人が1つのソフトウェアの開発を手伝っていくという仕組みが出来てくる中で流行ってきた物だと思っています。
聞いたところによると、小説家さんでもgitを使って原稿管理をする方がいらっしゃるとか。凄い時代です。
github自体は無料で使えますが、必ず公開プロジェクトとなってしまいます。
社内や案件の都合で公開してはいけないようなモノを扱うときにはローカルにgitサーバを立てるなどして対応しましょう。(このあたりも追々書いていきたいと思っています。)
実際に僕が関わるチームでは、チーム専用のgitサーバを構築し、そこでファイルのやり取りをしています。
何でチームで使うの?
チームで使うという話が出てきましたが、そもそも何でチームで使うのでしょうか。
社内のファイルサーバであるあるな事象として、あの人と私で同時にエクセルいじっちゃってどうしようー!みたいな事がありませんか?
僕はよくそういうシーンに出くわしていたのですが、残念ながらエクセルさん自信でどうにかする方法はありません。人間がぜーんぶチェックして、違うところを付き合わせて調整していかないといけません。場合によってはファイルが壊れる何てこともあったりします。
そんなことが起こらないようにしてくれるのがgitさんです。
万が一そのような事が起こっても「ここ違うけどどうする?」って聞いてくれるやさしい子です。
仲良くなれば便利なことは間違いありません。
チームでの開発などでよく使われるのは否めないのですが、自分一人で使う事も勿論出来ます。
まずは自分だけで使って慣れていくのが理想的だと思いますので、そこからお話しを始めようと思います。
参考になりそうなリンク集
以下のサイトはよく見かける気がしますし、実際私も見たりしたページたちです。
すこし慣れてきたら、これらのページを見るだけでもわかる様になるかもしれません。
- サルでもわかるgit入門 ~バージョン管理を使いこなそう~ / backlog by nulab
- 本当の初心者向け!Git入門のための概念から基本用語まで / LIG inc.
- 初心者の初心者による初心者のためのGit入門 / Qiita
イメージしてしまおう
何が起こっているのか
バージョン管理なので、バージョンを管理できるのですが…。
あるあるなネタとして、ファイル名でバージョン管理している何てことありませんか?
特にExcelさんなんかはそうなりがち…。課長さんは後ろに日付付けるけど、部長さんはファイル名に-2とか付けるし、新人君は「完成」とか「修正済」とか付けちゃって、もう何が何だか!ってことありません?
それをタイムラインに乗せて管理してくれるのがgitさんです。
- コレがこうなって、その後こうなってるよ。
- それぞれここが変わってるよ。
- 誰が変えたよ。
と言うような事を管理してくれます。
つまり、ファイルの状態管理、全部お任せ!なツールです。
使いこなした方がゼッタイ良い!って事なのです。
よく出てくる言葉(の前に)
ここなんですよね。最初に躓くのは言葉の意味。
コミットってなに? リポジトリってなに? ってなってしまうところだし、それぞれの言葉の説明をしてくれる所なんてあまりない(あるいはよくわからない)って事が多い気がします。
とはいえ、何が起こっているのかわからないとその話も出来ないのでちょっとかみ砕いてみましょうか…。
(註: わかりやすくするために、本来のgitの動きとは違うような表現も出てきます。一旦どんな物か掴むため…という程度で読んでみてください。)
- とりあえず、ファイルを作ります。
- コレをgitで管理してもらうようにgitの入れ物を作ります。(最初だけやる。ファイルを作る前にやっても良い。)
- 作ったファイルを「管理対象だよー」とgitに教えます。
- gitさんは「オッケー」と言ってとりあえず対象に加えてくれます。
- ファイルに変更を加えて保存します。
- gitさんに「はい、今の状態覚えておいて!」って伝えます。
- gitさんは「オッケー」と言って対象になったファイルを全部現状保管してくれます。
- 5-7を繰り返します。
- (必要に応じて)外部のgitサーバにgitさんの情報をコピーして送り出します。
- 5-9を繰り返します。
という感じです。どうでしょうわかったかなぁ。わからなかったかなぁ。何にせよ、この流れをいきなり専門用語で説明されるから良くわからん。
そしてなぜかこういう系統の情報ってなかなかかみ砕いてくれない。なんか「コレみてわからねぇなら入ってくるな」みたいな空気感じますよね…。
というところで挫折していた僕ですが、なんとかなったので、コレでわかってもらえたら良いなぁ。
で、よく出てくる言葉
- コミット
- 一番よく出てくる言葉。コミットって何だよ。結果にコミットするのかよ。と思われる方もいるかもしれませんが、「ハイここまででひと区切り(バージョン)です」ってしてあげることです。
料理のレシピで言うと、作り方の各ステップの切れ目を作ってあげる感じです。
先の例で言えば6のステップです。gitさんに「はい、今の状態覚えておいて!」って伝えることです。 - リポジトリ
- あぁ、これも何のこっちゃですよね。リポジトリ?レポジトリ?なんじゃらほい。
結局の所、リポジトリって言うのが正しいみたいなんですが、大っきい入れ物みたいなもんです。
この入れ物がないとgitさんは何も出来ません。雑な言い方をすれば、ファイル置き場です。 - 先の例で言えば、2で登場した「入れ物」です。
- 手元の環境(たいていの場合は自分のPCの中)にあるリポジトリをローカルリポジトリと言って、サーバにあるリポジトリをリモートリポジトリといいます。
- ブランチ
- この言葉もよく出てきます。なんだよ朝飯食ってこなかったのかよ的なブランチではなく、英語で言うところの枝分かれなどを示す表現です。英語だと支店とかもブランチって言うんですよね。
いきなり支店が出てきたら、本店どこなんだよって話なんですが、本店も支店の1つという考え方にしておきましょう。本店は大抵masterというブランチになります。masterブランチさんは、リポジトリを作ると自動的に出来ます。
このブランチをうまく活用することで「あの人と同じファイルいじったけど大丈夫?!」って言ってくれるようになります。
こんな感じです。とりあえずここまでわかれば、最初のページのリンクをみていってもわかるはず!
ということで、一旦ここまで。
次回はこれらを改めてどういう風にやっていくのか、まずはこの言葉を使って「ひとりgit」をする所までを紹介しようと思います。
シリーズの内容はこちらから。
ちなみに、私がメンターを務めているTechAcademyでは「Githubトレーニングコース」もありますので、良かったら下のバナーから辿ってみて下さい。(私の担当コースではありません。)
他のコースでもgitに触れているコースはたくさんありますので、気になるものがあれば、是非。