コラム【WEB編】
Xux Column
ギットとは?ギットとギットハブの違いは?【初心者向け】
ギットは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。
Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。
Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。現在のメンテナは濱野純 (英語: Junio C Hamano) で、2005年7月から担当している。
Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。
したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
(参考:ウィキペディア(Wikipedia)
つまり、Gitとは、分散型バージョン管理システムの1つの種類です。Linuxのソースコードを効果的に管理するために作られました。
Gitは、近年多くの開発現場で使われています。Gitを利用すれば、ファイルの状態を好きなときに更新履歴として残すことが可能です。
さらに他人の編集した最新ファイルを上書きしようとした際に警告がでるため、他人の編集内容を上書きしてしまう心配もありません。
バージョン管理とは
ソースコードをはじめとしたファイルの変更履歴(バージョン)を管理することを「バージョン管理」と呼びます。
ファイルの追加や変更の履歴情報を管理することで、過去の変更箇所を確認する、特定時点の内容に戻す、などの「バージョン管理」という作業が可能となります。
このバージョン管理という概念が存在しない状況下での開発作業を考えた場合、
バグ発生時には混入時期が分からず、修正が遅れる、発生したバグによる影響度が不明確になる、結果としてユーザーの満足度低下につながるなどのリスクが高まります。
また後述するチームでの開発においても、メンバー間での開発内容を連携することが難しくなり、開発の生産性を大きく損なうことにつながります。
以上のことより、ソフトフェアの開発において、バージョン管理への理解は必須となります。
リポジトリとは
バージョン管理によって管理されるファイルと履歴情報を保管する領域を、リポジトリと呼びます。
リポジトリの配下でファイルやディレクトリを操作することで、私たちはバージョン管理を行うことができます。
分散型のバージョン管理システムであるGitでは、まず個々人のマシン上にあるリポジトリ上で作業を実施後、
作業内容をネットワーク先のサーバー上などにあるリポジトリに集約する流れで開発を進めていきます。
この個々人のリポジトリを「ローカルリポジトリ」、集約先となるリポジトリを「リモートリポジトリ」と呼びます。
Gitを使った開発ではこの区別が重要となるため、しっかり理解いただければと思います。
Gitが必要となった理由
Gitが必要となった理由は、これまでのバージョン管理システムでは、リポジトリが全体で1つしかなかったため使いにくかったからです。開発者が少ない時は問題がありませんでしたが、人数が増えると変更箇所が重なり不具合を落とすことも少なくありませんでした。
さらにGitはネットワークが繋がらない環境でもバージョン管理ができます。全体の整合性を保ちやすく、作業しやすいGitは、導入しようとする現場も多いです。
GitとGitHubの違いは?
GitHubは、Gitをより使いやすくするために作られたWebサービスです。Gitとは違い、開発者に便利な機能が追加されています。
GGitの仕組みを利用して、世界中の人々が自分の作品(プログラムコードやデザインデータなど)を保存、公開することができるようにしたウェブサービスの名称です。
GitHubはGitHub社という会社によって運営されており、個人・企業問わず無料で利用することができます。
GitHubに作成されたレポジトリは、基本的にすべて公開されますが、有料サービスを利用すると、指定したユーザーからしかアクセスができないプライベートなレポジトリを作ったりすることができます。
Gitの特徴1:分散型バージョン管理システム
Gitの特徴の1つ目は、分散型バージョン管理システムである点です。
そのためリモートサーバなどにある中心リポジトリの完全なコピーをローカル環境に作り出し、ローカルリポジトリを使って作業できます。
Gitを使えば、開発者間の共同作業を柔軟に行えます。
さらに大きな規模のソフトウェアの場合に個人や小さなチームで実装を進めて、親のリポジトリや他の開発者のリポジトリに反映するという使い方もできるでしょう。
Gitの特徴2:GitはCUI仕様
Gitは、CUI仕様です。CUIツールとは、キーボードで入力するコマンドによって操作するツールのことです。
CUIは、マウスの動きやクリックなどでダイレクトに使うGUIと対義語として使われます。さらにCUIツールであれば、GUIツールとは違い、共有されたコマンドを入力すれば同じ事象が再現されます。
そのため、複数人で同じ事象を共有することに役立てられます。
Gitの特徴3:セキュリティが高い
Gitの特徴の3つ目は、セキュリティの高さです。Git は、管理ソースコードの整合性を大事にして作成されています。
Gitでは、ファイルのコンテンツやファイルとディレクトリ、バージョン間、タグとコミットの間の真の関係は、SHA1と呼ばれる暗号化された安全なハッシュアルゴリズムで守られています。
さらにソースコードの本物のコンテンツ履歴も確認できます。
Gitの特徴4:柔軟性が高い
Gitは、柔軟性が高いことが特徴的です。
Gitを使えば、色々な種類の非線形開発ワークフローのサポート、小規模および大規模両方のプロジェクトでの効率性、さらに数種類の既存システムおよびプロトコルとの互換性と柔軟な使い方が期待できます。
GitはSVNとは違い、ブランチングやタグ付けしやすいように作られています。 ブランチやタグに影響を与える操作も変更履歴の一部として保存できるため、使いやすいでしょう。
Gitでは下記のようなことが出来ます
①新旧のファイルを一括管理できる
②簡単に昔のファイルに戻せる
③チームでファイルの変更履歴を共有できる
④チームで修正した部分を統合できる
⑤チームでの業務を効率化できる
⑥様々なファイルを管理可能
⑦レビューがわかりやすくできる
上記のように、gitを使うことで、チームでの作業効率化につながり、作業がはかどるわけです。
今では必須となっているgit。
ウェブプログラマーやウェブデザイナーの方は是非利用してみてください。