menu

2021/08/26

エンジニアの心得⑤

皆さん、こんにちは!

当方、都内のとあるITベンチャー企業に勤める中堅エンジニアのオリハラです。

 

さて早速、エンジニア初心者の方々へ質問です。

Gitというツールをご存じでしょうか??

 

実はこのGitというツールですが、WEB業界で今では広く利用されていてメジャーになりつつあります。今は利用していない方でも、これからもWEB業界に携わるのであれば、おおいに利用する可能性があるでしょう。

ですので、今回はそのGitについてご紹介したいと思います!

 

- そもそもGitってなんなん??

 

Gitは、一般的に「分散型バージョン管理システム」と呼ばれています。

いやいや、分散型バージョン管理システムって言われても分からんよ。と思っていると思っている方もいらっしゃると思うので、かみ砕いて説明していきます。

 

- バージョン管理システム、、、はにゃ?

 

まず、こういった用語はまだ聞きなれない方は「分散型」については置いておいて、「バージョン管理システム」の概念を理解するところから始めましょう。

すでにバージョン管理システムについて知見がある方は飛ばしていただいて構いません。

アプリケーションソフトウェア(以下、アプリ)開発では一般的に、プログラミングによって生まれたソースコードによって、アプリというものが作られていきます。一度作られたアプリはバグ修正や機能追加ごとに何度もソースコードの修正を繰り返して、新しいバージョンへと更新していきます。その過程で、全体のソースコードの状態を記録し、それぞれのバージョンとして管理することが必要になります。

そういったソースコード(のバージョン)を管理するシステムが「バージョン管理システム」であり、今では組織開発が一般的なアプリ開発業界において必要不可欠なシステムとなっています。

 

、、、ととりあえず「バージョン管理システム」について説明してみましたが、「いまだにあんまり腑に落ちないな・・・」とまだ感じている方へ。すぐに理解できるものだという認識を一回捨てて、まあそういうもんなんだな、と何となく覚えておけばよいと思います。(笑)ここで説明したのはあくまで概念的なものですし、開発現場で先輩に「『バージョン管理システム』ってどういうものですか??」と聞いたとしても大体、ただなんとなくそれっぽい答えが返ってくるか、「ググれば?」って言い返されるだけだと思いますので。(笑)

 

一番良いのは、実際に開発現場で使うことです。今ではもう、ほとんどの開発現場で大体何らかのバージョン管理システムを利用していると思いますので、そこで実際に触ってみて、「ああ、こういうものなんだな」って感じてみるのが一番です。

 

 

- 「分散型」の「バージョン管理システム」

 

では、「バージョン管理システム」についての説明が完了したところで、次は「分散型」の部分に触れていきましょう。

そもそも、バージョン管理システムは二つのタイプに分かれています。その二つのタイプが、本記事で取り上げているGitが当てはまる「分散型」と、Gitが使われる前は一般的だったSVNなどが当てはまる「集中型」です。この二つのタイプの大きく違うポイントは、リポジトリを分散型は「複数」用意できて、集中型は「一つ」しか用意できないところ、です。

 

※「リポジトリ」というワードがそもそも見慣れないと感じている方もいらっしゃると思うので、説明しておきますと、「リポジトリ」とは、アプリを構築するためのソースコードや定義ファイル、またそれらに変更を加えたときの履歴情報などを保存する場所(貯蔵庫)のことを言います。

 

では実際にその「リポジトリ」が「複数」か「一つ」かでどのような違いがあるのか見ていきましょう。

 

まず、集中型は特定のサーバ上にリポジトリを「一つ」用意します。(ここで用意されたリポジトリは、「中央リポジトリ」とも呼ばれています。)開発者たちはそのサーバに置かれた中央リポジトリから対象のファイルを自分のローカル環境へ持ってきて、ソースコードの編集などを行って完了したら、また中央リポジトリに直接反映します。

 

次に、分散型も同じくサーバ上にリポジトリを「一つ」用意します。(ここで用意されたリポジトリは、「リモートリポジトリ」と呼ばれています。)そして、ここが集中型と大きく違うポイントですが、開発者たちはサーバに用意されたリモートリポジトリから、ローカルリポジトリと呼ばれる複製(ここでいう複製とは、ローカル環境へ持ってきたときのリモートリポジトリの完全な複製ということです。)を自分のローカル環境に作って、ソースコードの編集などを行います。そして、自分がきりがよいと思ったタイミングで、ローカルリポジトリで行った変更をリモートリポジトリにアクセスして反映します。逆に、リモートリポジトリで他の人が行った変更も、リモートリポジトリにアクセスをして、その状態をローカルリポジトリに反映させることで、互いのリポジトリを最新の状態に保つことができます。

 

 

- なぜ「分散型」のGitがメジャーになりつつあるか

 

それでは、どうして「分散型」のGitがWEB業界で今ではメジャーになりつつあるか解説します。

実はその秘密は上で説明した二つの「違い」の中に隠されています。「分散型」の場合、リポジトリをローカル環境にも持っていることで、常にサーバ上にあるリモートリポジトリにアクセスせずとも、ローカルリポジトリを使って開発を進めることができます。それに対して「集中型」は、常にサーバへアクセスして開発を進める必要があります。この開発環境の制約の違いが、「分散型」をメジャーにさせる要因となったと言えます。「分散型」は「集中型」よりも環境の制約が厳しくなく、大規模なアプリ開発をする際に、開発者同士の作業を柔軟に進めることができ、オープンソースのプロジェクトなどにも最適なのです。

また、元々はCUIでしたが、今ではGitの仕組むと連携して他のユーザとやり取りしやすくしてくれるGitlabやGithubのようなGUIのサービスも発展してきているので、使いやすさは増し、さらに利用される機会が増えていくと考えられます。ですので、初めましての方はこれを機にGitについてさらに知識を蓄えていきましょう!

 

さて、今回は「分散型バージョン管理システム」のGitについて触れてみましたが、いかがだったでしょうか。少しでも役立つ情報となれば、幸いです!

 

 

またの更新を楽しみにお待ちください!

 

ありがとうございました!