IT系の会社では当たり前になってきたソースコードのバージョン管理に用いられる「Git(ギット)」ならびに「GitHub(ギットハブ)」。ただ一旦、世の中にでると、そもそもソースコード管理って何?という会話は少なくない。
ソースコード管理とは、そもそも誰が何を変更したかの履歴を管理することによって変更によるトラブルが回避できたり、共同作業を可能にするものです。
そこで今回は、そんなソースコード管理の中でも一般的になっているGitについて解説します。Gitを使ったことないけど、使ってみたい!というデザイナー、ディレクター、新人エンジニア向けに、GitとGitHubの概要と違いについて解説します!
Gitとは?

「Git」は、「ソースコードのバージョンを管理するツール」の名前。システム開発では複数の開発者によってソースコードが書き換わります。いつ誰がどこを変えたのか? 最新のバージョンはどれか? など、ソースコードのバージョンを把握する必要があります。このバージョン管理をするツールの1つが「Git」です。
Gitが広まった理由とは?
ソースコードのバージョンを管理するGit、正確には「分散バージョン管理システム」と呼ばれています。実はGit以前にも、CVSやSubversionなどバージョン管理に用いられたツールがありました。これらを差し置いて、近年Gitが広く受け入れられている理由が「分散」にあります。
バージョン管理システムでは、ソースコードの履歴を「リポジトリ」と呼ばれる場所で管理しています。ソースコードを変更したら、開発者はリポジトリに履歴を記録します。全ての変更が記録されるため、過去のある時点にソースコードを戻す、ということも可能になります。
これまでのバージョン管理システムは、リポジトリは全体で1つだけでした。そのため、開発者が増えるとそれぞれの変更箇所がぶつかるなど、リポジトリに不整合が起こることもありました。
2005年に開発されたGitは、リポジトリを「分散」するようにしました。全体を統括する「リモートリポジトリ」の他に、開発者ごとに「ローカルリポジトリ」を持つ仕組みになっています。
Gitでは、自分のマシンの中にあるローカルリポジトリに変更を記録し、しかるべきタイミングでリモートリポジトリに変更履歴をアップします。これにより、ネットワークが繋がらない環境でもバージョン管理ができ、全体の整合性を保ちやすくなったのです。
GitHubとは?

対して「GitHub」は、「Gitを利用した、開発者を支援するWebサービス」の名前です。GitHubは、クラウド上でGitを用いたバージョン管理をすることができ、さらにGitには無い、開発者に便利な機能を追加しています。いまやユーザ数は1000万人を超え、世界中のソフトウェア開発に利用されているサービスです。
GitHub のようなGitのホスティングサービスは、他にもBitbucketやBacklogなど複数存在しています。Gitを使うためには必ずGitHubを使わねば……というわけではありません。
Gitはツールの名前で、GitHubはWebサービスの名前。この2つの関係は「メールとGmail」の関係に似ています。Gmailはメールを利用するためのWebサービスですし、メールのWebサービスはGmail以外にもYahoo!メールやHotmailなどがありますよね。
ホワイトハウスも利用しているGitHub

GitHubは、Gitをより使いやすくすることを目的に、2008年に開発されました。クラウド上でGitの「リモートリポジトリ」を提供することにより、遠く離れた開発者同士でも、GitHubを介して効率よく開発を進められるようになりました。まさにGitのハブ(Hub)の役割なんですね。
また、Gitには無い機能も追加されています。特にプルリクエスト(Pull Request)は、ソースコードの変更点について他のメンバーにレビュー依頼ができる機能。レビューがOKとなったソースコードだけを反映させることができるので、品質の向上に役立ちます。
GitHubには無料と有料の2つのプランがあります。無料プランでは、クラウドにアップされたソースコード全てがGitHubの利用者に公開されます。オープンなプロジェクトであれば、自分のソースコードについて他の技術者に助言をもらったり、また逆に他の技術者を助けたりもできます。技術力があれば自分の名前を売ることもできるわけです。ソースコードを介して世界とつながれることが、GitHubの魅力でもあります。
有料プランでは、メンバーのみに公開できるプライベート設定を利用することができます。また、社内のソースコードをクラウドで公開することに抵抗がある企業のために、パッケージ版の「GitHub Enterprise」もリリースされており、社内ネットワーク上でGitHubと同等の機能を利用することができます。
GitHubではソースコード以外にも、デザインデータや文書などのバージョン管理に利用されています。ホワイトハウスや国土地理院など、行政機関の文書管理に利用するケースも増えているのだとか。
実際の開発の流れ
それではGitを使っての実際のソースコード管理の基本的な流れを簡単に説明します。
1.リポジトリを作成する
2.ソースコードの作成、編集を行う
3.新規作成、変更、削除をGitのインデックスに追加する
4.インデックスに追加された内容をローカルリポジトリにコミットする。
5.ローカルリポジトリの内容をリモートリポジトリ(GitHub)にプッシュする
2.で登場する「インデックス」は、ローカルリポジトリにコミットする前に一時的に変更内容を保存しておく場所です。ファイルを編集し、最終的にGitHubに変更が反映されるまでにはインデックス→ローカルリポジトリ→リモートリポジトリ(GitHub)という3段階を踏むようになっています。
また、ローカルリポジトリに変更内容をアップすることを「コミット」、リモートリポジトリに変更内容をアップをすることを「プッシュ」と呼びます。逆に、他の開発者がリモートリポジトリに追加した内容をローカルリポジトリに反映させる操作は「プル」と呼ばれます。
こうして複数の開発者がリモートリポジトリに最新の状態をプッシュしていき、ソースコードのバージョン管理を行います。
GitHubのはじめかた
さっそくGitHubを使ってみましょう。まずはトップページの「Sign up」からアカウントを作成してログインします。
GitHubで新しく開発を始めるには、リポジトリを新規に作成する必要があります。ログイン後の画面の「New repository」からリポジトリを作成することができます。
リポジトリの名前や内容の説明、パブリックかプライベートか(プライベートにすると有料プランになります)などを記入し、Create repositoryをクリックすれば新規リポジトリが作成できます。
これでGitHub上にリモートリポジトリが作成されました。自分のマシンにもGitが使える環境(コマンドラインやGitHub DesktopなどのGUIツール)を整えれば準備完了です。
初心者向けのおすすめサイト
もっと知りたい!という方は、こちらのサイトも見てみてくださいね。
・Git
—サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
→かわいいイラストでわかりやすいGit入門です。まずはここから。
—本当の初心者向け!Git入門のための概念から基本用語まで | Git編:一歩踏み出すフロントエンド入門
→Gitの概念を「写真・カメラ・アルバム」などに例えて解説しています。
・GitHub
—Gitを触ってみよう。GitHubとソースツリーを使用した基本操作 | Git編:一歩踏み出すフロントエンド入門
→コマンドラインではなく、GUIツールを使ったGitHubの使い方が解説されています。
いかがでしたか?GitHubは機能も豊富なので最初は分かりづらいかもしれませんが、これを使いこなせるかどうかでキャリアに凄い影響があるかも?!って言われると使わざるを得ないでしょ?(笑)
ぜひ一度、実際に試してみてくださいね。

[…] 『広報を立ち上げて見えた4つのあたりまえ業務と3つのmessage』 ライフスタイル株式会社 高津亜沙美 『広報とSNSの効果の“最大化”と”可視化”~広報の威力を社内に浸透させるために~』 株式会社DMM.comラボ 長瀬七夕 『エンジニアがイベント&メディア運営している話』 株式会社パーソンリンク 高木彩香 『\広報でもできる!/GitHubでらくらく原稿確認!』 GMOペパボ株式会社 今岡佐知子 『広報業務のいろんな面倒を解消してくれた愛用しまくりの便利ツールまとめ』 レバレジーズ株式会社 吉田ハルカ 『年間200件以上掲載の裏で助けられたツール公開します』 フェンリル株式会社 藤本陽子 『プレスリリース配信、辞めました。最も効果的な情報配信って?』 READY FOR株式会社 大久保彩乃 この中でも、特に公開OKなものはスライドもご紹介しています! __________________ ■『広報を立ち上げて見えた4つのあたりまえ業務と3つのmessage』 □ライフスタイル株式会社 高津亜沙美さん 新規アポを獲得するべく、「電話をして会いに行く」ということを重要視しているとのこと。社内でも、企画書はキーマンについても伝える、代表や役員とのロープレ、ランチ会を開催するなど、明日から使えそうなノウハウが満載のLTでした。何より広報も営業力が大事というのは目からウロコ。また「成功イメージを詳しく、できるだけ細かく持つ」「広報は自分がいる空間を次々と変えていかなければいけない」という言葉も心に刺さりまくり、今後も大事にしていきたい言葉となりました。 ■『広報とSNSの効果の“最大化”と”可視化”~広報の威力を社内に浸透させるために~』 □株式会社DMM.comラボ 長瀬七夕さん 常に上司から「で、結果はどうなの?」と聞かれたとき、どう答えるか。 やみくもに指標を出すのではなく、「現在の自社に合った指標を作って、社内に浸透させていく」ことが大事とのこと。私も、目的の共有と結果のフィードバックを、社内で積極的に行っていきたいと思いました。 ■『エンジニアがイベント&メディア運営している話』 □株式会社パーソンリンク 高木彩香さん 「あやたか」さんのLT。25回目の開催を迎える「ゆとりエンジニア交流会」を開催し、それを発信するメディアもやっているとのこと。インタビュー記事を載せるときは、インタビューする人と記事を書く人を分けるのはなるほどなぁ……となりました。イベント運営もしながらメディア発信している先輩として、背中を追いかけていこうと思います。 ■『\広報でもできる!/GitHubでらくらく原稿確認!』 □GMOペパボ株式会社 今岡佐知子さん クラウド上でバージョン管理ができるGitHubでロングインタビュー(しかも複数人)の原稿確認プロセスについて。エンジニアが使っているツールで協力を呼びかけるスタイル、衝撃でした。私もやりたい、初心者でもできるかな……という人に向けて\でも大丈夫!/という話も入っており、とても聞きやすいLTでした! 思いっきり宣伝なのですが……!GitHubを詳しく知りたい、という方はin-Pocketのこちらの記事もご参照ください☆ ▼過去の記事はこちら▼ 2016-06-20いまさら聞けないGitとGitHubの違いって何?IT系の会社では当たり前になってきたソースコードのバージョン管理に用いられる「Git(ギット)」ならびに「GitHub( ■『広報業務のいろんな面倒を解消してくれた愛用しまくりの便利ツールまとめ』 □レバレジーズ株式会社 吉田ハルカさん ペコッター…!このLTでペコッターを知れたことがこの日一番の衝撃だったかもしれません。ペコッターはグルメコンシェルジュアプリで、人力(+テクノロジー)で飲食店探しと予約までやってくれるアプリです。キャラクターもゆるく、かつふわふわでかわいいのですが、ちょっと敏腕すぎませんか?他にも便利ツールが紹介されていました。 ・Photoscapeは写真加工がサクッとできるソフト ・Googleカレンダー経由でスケジュール調整ができるCu-hacker など。即日役立つ、生きた便利な広報ハックをLTしていただいて……本当に本当にすごい……、と拝むような気持ちで聞いておりました。 ■『年間200件以上掲載の裏で助けられたツール公開します』 □フェンリル株式会社 藤本陽子さん 「6インデックスフォルダが便利」とこのLTの中でおっしゃっていて、後ほど実際にそのフォルダから今度開催されるセミナー(Browser Brothers #1)のご案内が出てきたときは「本物だー!」とついつい言ってしまいました。他にもLT内に役立つ情報を教えていただきました。 ・新聞はCUTPENというアプリでスキャンする ・RSSリーダーのFeedlyでタイトルだけでも流し見をする。(後にプレスリリースのタイトル付けの参考にする) ・ブラウザSleipnirで必要なタブを開いたまま作業 など、あれよあれよという間に広報ハックがたくさん。インプットをし続ける事、秘書からも学べる細やかな気配り、そして「いつかこの想いが誰かに届けばいいんです……!」という、クリスマスカードを手書きで250通書くような根気で藤本さんの広報ができ上がっているということがこのLTでわかり、ワカタビは感動の嵐に包まれたのでした……。そんな広報に、私もなりたい。 ■『プレスリリース配信、辞めました。最も効果的な情報配信って?』 □READY FOR株式会社 大久保彩乃さん プレスリリースよりも、会見・プレス説明会を積極的に開催してみた!というお話。会見・プレス説明会は、まずは外向けにイベントを行ったというファクトを作れることが大きい、そしてインパクトが大きく効果が高いとのこと。「切り口が2つ以上あるネタが会見となりやすい」「一人で判断しない」などの言葉は、今後の広報業務でも常に心に留めておきたいメッセージでした。 […]
[…] in-pocket いまさら聞けないGitとGitHubの違いって何? fetch と pullの違い GitHub Pagesを使ってサクッとWebページを公開する […]
[…] in-pocket いまさら聞けないGitとGitHubの違いって何? fetch と pullの違い GitHub Pagesを使ってサクッとWebページを公開する […]