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は機能も豊富なので最初は分かりづらいかもしれませんが、これを使いこなせるかどうかでキャリアに凄い影響があるかも?!って言われると使わざるを得ないでしょ?(笑)
ぜひ一度、実際に試してみてくださいね。