From:リスキルテクノロジー 高坂一城 新宿本校にて
ソフトウェア開発ではソースコードを作成しながら ソフトウェアを作っていきます。 ソフトウェア開発の現場では、 バグ(不具合)の修正や機能の追加ごとに、 その時のソースコードの状態を記録し、 それぞれの版(バージョン)を管理することが 必要になります。 このソースコードのバージョンを管理するソフトウェアを 「バージョン管理システム」と言います。 「Git」とは、バージョン管理システムの一つで、 ここ数年で非常によく使われるようになってきました。 ちなみに「ギット」と発音します。
なぜバージョン管理が必要か
突然ですが、あなたはゲームをしますか。 「ドラゴンクエスト」に代表される 古典的なRPG(ロールプレイングゲーム)では、 プレイの途中でそこまでの状態をセーブ(保存) することができます。 なぜソフトウェア開発に バージョン管理が必要なのか、 その理由は、 ゲームをセーブする理由と同じなのです。 ゲームをセーブする理由は、 ①もう寝るから(今日はここまで) ②途中でプレイヤーが死んでしまっても やり直しができるから この2つが大半だと思います ソフトウェア開発にバージョン管理が必要な理由は、 上記の②に相当します。 例えば、 あるソフトウェアに新しい機能を追加します。 しかし、その機能を使わなくなった。 そういった場合、このソフトウェアを 新しい機能を追加する前の状態に 一瞬で戻せると便利ですよね。
Gitの登場
そこで「Git」の登場です。 Gitは、 世界最大のオープンソースソフトウェアである Linuxカーネルのソースコードを 効率的に管理するために作られました。 Gitの特徴は、 ①動作速度が速い ②分散型である です。
特徴① 動作速度が速い
Gitは Linuxカーネル開発で培われたノウハウを活かし、 大規模プロジェクトにも対応できるように 設計されています。 大規模プロジェクトでは 多数のソースコードを管理する必要があります。 ソースコードの変更点を抽出したり、 「リポジトリ」と呼ばれるソースコードや 変更履歴を保存する場所への操作が 高速にできる必要があるため、 動作速度に重点が置かれています。
特徴② 分散型である
Gitが登場する前は、 「Subversion(SVN)」に代表される 「集中型バージョン管理システム」が 広く使われてきました。 「集中型バージョン管理システム」では、 開発対象のソフトウェア一つにつき 「リポジトリ」を一つだけ持っています。 ソフトウェア開発に参加するメンバは、 この一つのリポジトリから ソースコードを持ってきて編集し、 編集が終わったらリポジトリに反映します。 これにより、 リポジトリが置かれたマシンに接続できない環境では、 最新のソースコードを取得したり、 編集したソースコードの反映ができないことになります。 この問題点を解決したものが、 Gitに代表される 「分散型バージョン管理システム」です。 「分散型バージョン管理システム」では、 メインとなるリポジトリ以外に、 自分のマシンにもリポジトリを持つことができます。 リポジトリをマシン毎に持つことができるので 「分散型」と呼ばれています。 自分のマシンにもリポジトリがあるため、 いつでもどこでも作業ができ、 かつ自分のマシンである程度作業が進んだ時点で、 メインとなるリポジトリに反映する、 といったことができます。
Gitはバージョン管理だけではない
Gitは分散型であることをメリットに、 近年、システム開発の現場で 広く使われるようになってきました。 このGitですが、 バージョン管理だけではとどまらず、 Gitの仕組みを利用した「GitHub」(ギットハブ) というサービスにも使われています。 「GitHub」とは、 世界中の人々が、自分の作品 (ソースコードやデザインデータ)を 保存・公開することができるようにした Webサービスです。 GitHubは GitHub社という会社が運営しており、 個人・法人問わず無料で利用できます。 あなたもぜひ使ってみては いかがでしょうか。 --------------------------------------------- PS.選ばれ続けて15年には理由があります。 卒業生5,000名以上! プログラミングスクールなら実績豊富なIT専門スクールで ----------------------------------------------