Git / GitHub

この記事はgit及びgithubについて解説した記事です。会話形式のやさしい文章で「git」の用語のイメージを紹介した後に,採用に役立つgit及びgithubの知識を解説しています。

1分で分かる!Git / GitHub

ジャバ―ド先生~!助けて~!

どうしたの?ことりん君?

ちょっと前にSwiftの勉強してたんだけど三日坊主になってたから、また勉強始めたんだ!

おぉ、ことりん君すごいね!とってもいいことだと思うよ!

いま「ヒヨコでもできる!Webアプリをつくる本!」って本が人気らしいんだ!だから、その本を買って勉強してたんだけど、もう少しでWebアプリケーションが完成するってところで、気付かない間にどこかのプログラムを変更しちゃったみたいで、エラーがでるようになってしまって…。修正したいんだけど、どこを変えたか記憶にないんだよね…。

ことりん君、バージョン管理システムはつかってないの?

バージョン管理システム??ってなに?

バージョン管理システムっていうのは、ファイルに対して、誰が、いつ、どのような変更をしたかを管理するシステムだよ!

え、そんなシステムがあるの?

開発現場では当たり前に使っているシステムだからね!もし、これからバージョン管理システムをおぼえるならGit(ギット)っていうやつがいいよ!

Git?

そう!バージョン管理システムはいくつかあるんだけど、いま最もシェアを獲得しているのはGitだからね。ことりん君も、もう少し前からGitを使っていれば、いつ、どのような変更したかを調査することができたし、問題が起きる前の時点までファイルを巻き戻すこともできたのになぁ。残念。

Gitってそんなことができるの?

もちろん!実際のプロジェクトでは開発メンバーが何人もいるよね。当然、各メンバーは並行していろんな改修をやることになるんだ。そうすると、ことりん君に起こったような「いつのまにか変更しちゃった」とか「ほかのひとが不具合を埋め込んじゃった」みたいなトラブルがたくさん起こっちゃうよね。こういう問題もGitを入れていれば防げるんだよ!

なるほど…。開発現場ってほかにどんな感じでGitを使っているの?

そうだなぁ…。GitをさらにパワーアップさせるGitHubっていうサービスを良く使っているよ。

GitとGitHub…。なんか似たような名前だね。どういう風に違うの??

さっき説明したように、Gitはバージョン管理システムのことだよ。GitHubは、Gitをさらに使いやすくするためのWebサービスなんだ。GitHubを使う事で、インターネット上でファイル管理ができたり、日tが修正したプログラムにコメントできたりするんだ。

Gitがバージョン管理システムで、GitHubはGitをパワーアップさせるWebサービス…だね!とりあえずボクもGitをつかうようにするよ!ジャバ―ド先生ありがとう!

はーい!勉強続くといいね!

Git / GitHubとは? Git / GitHubの基礎知識

Gitは、バージョン管理システムです。バージョン管理システムとは、ファイルの変更履歴を管理するシステムです。具体的には、ファイルの変更日時、変更者、変更内容などを管理することができます。Gitの詳細な仕組みについてはここでは割愛しますが、複数人が同一ファイルを変更した場合、かつ既に他の人が変更を反映・確定させていた場合、後から変更を反映・確定させようとした人に対して、他人の変更内容を削除しないように警告を表示することができます。このような機能により、意図しない変更を防ぐことができます。

また、GitHubはGitホスティングサービスと呼ばれるものです。通常は、Git利用者がGit用のサーバーなどを用意して、対象ファイルを管理する必要があります。Gitホスティングサービスを使用すると、Web上ですべてを管理することができます。また、Gitホスティングサービスにしかない便利な機能も用意されているため、Gitとともに導入する企業が多いです。

Git / GitHubを使うエンジニア

10~15年ほど前までは、バージョン管理システムであるSubversion(SVN)というものが高いシェアを獲得していました。その後、新たな管理方法を実装したバージョン管理システムであるGitおよびGitホスティングサービスの登場により、Subversionは急激にシェアを落とすことになりました。

現在、Git / GitHubはIT業界におけるバージョン管理システムのデファクトスタンダードとなりつつあります。未だに特別な理由がない限り、Subversionを利用している企業(あるいはエンジニア)の場合、最新の技術のキャッチアップが遅い企業である可能性があります。

※ Google Trendsの比較結果を見せると、シェア(≒ 検索ボリューム)の遷移がイメージしやすいかもしれません。

https://trends.google.co.jp/trends/explore?date=all&geo=JP&q=Git,SubVersion

Git / GitHubを使うエンジニアの特徴と在籍業界

前述したとおり、どの業界であってもIT企業(あるいはエンジニア)であれば、Gitを利用していることが多いでしょう。そのため、Git / GitHubを使うエンジニアの特徴と在籍業界に特筆すべき点はございません。前述したように、Gitは複数人がプログラムを改修しても、ファイルの整合性を保つことができるように設計されています。また、生産性を上げる仕組みも実装されているという特徴もあります。

そのため、IT業界の中でも特にスピード感があるWeb業界は、Git / GitHubを利用しているケースが高いです。

採用する時に知っておくとよいこと

Gitの経験について

これまで前述してきたとおり、バージョン管理システムはGit以前にもさまざまなものがありました。Gitが流行する前はSubversionというバージョン管理システムが高いシェアを獲得していました。ただ、SubversionとGitはバージョン管理に対する考え方が大きく変わっています。そのため、Subversionに慣れた人は、Gitを理解するまでに多少学習コストがかかります。

バージョン管理はファイルの変更を管理する便利なシステムですが、使い方を誤ってしまうと管理しているファイルが不正な状態(他人の変更点を消失するなど)となるリスクもあります。

また、こちらも前述したとおりですが、現時点でGitの経験がないエンジニアは、モダンな開発手法自体も知見がない可能性があります。

そのため、候補者にはGitの経験を確認しておきましょう。

求人のポイント

求人を作成する時は、下記の内容を求人に入れるとよいです。

1システム(サービス)の詳細
※特にそのシステム(サービス)をなぜ作っているのかを熱量をもって記載する。
2開発環境
3現在のエンジニア組織の体制
4現行システムの課題と募集の背景
5求められる業務と期待値
6エンジニアとしてのスキルアップ支援制度の有無と詳細
7エンジニアチーム内での相互成長のための仕組み(勉強会やLT会など)の有無と詳細
8選考フロー
9待遇
10キャリアパス

Git / Github の豆知識 

Gitのクライアントソフト

Gitは基本的にコマンドで操作します。ただし、人によってはコマンドでの操作が苦手という方も少なくありません。そのような方に向けて、GUI(画面で操作が可能)のクライアントソフトが公開されています。代表的なGitクライアントソフトとしてはSourcetreeがあります。

GitHubの競合(Gitホスティングサービス)

今回はGitホスティングサービスとして、GitHubをご紹介しました。ただし、Gitホスティングサービスは、GitHubだけではありません。競合として有名なサービスは下記の通りです。

関連記事

  1. VirtualBox

  2. RSpec

  3. MongoDB

  4. Docker

  5. cloud9

  6. サーバーサイドエンジニア