members

members

【初心者向け】バージョン管理システムを分かりやすく説明してみた

Tweet

こんにちは!2021年新卒入社でコーダーの今井です。
今回は、サイト運用で開発には欠かせないバージョン管理システムについてです。
『バージョン管理システム』とは、いつ、誰が、どのファイルを、どのように変更したのかを記録してくれるシステムのことです。バージョン管理システムを利用することで、ファイルの状態を復元することができたり、開発者同士で同じファイルを同じタイミングで触らないようにしてくれたりなど、プロジェクトの進行をスムーズにしてくれるメリットがあります。

覚えておくべき基本用語

次にバージョン管理システムを扱っていく上での基本用語を少しだけ例えを混ぜながら紹介します。

リポジトリ
ファイルやフォルダを格納する場所のことです。
引っ越しする際、箱の中に物を詰めていくかと思いますが、リポジトリは箱のようなものだとイメージしていただければ分かりやすいかと思います。

リモートリポジトリ
サーバー上に存在する、複数人で共有するリポジトリのことです。リモートリポジトリ上での作業は開発者全員に反映されます。
リモートは英語で『離れた』という意味がありますが、海外のような離れた場所に行くには、飛行機に乗らないと行くことができないように、リモートリポジトリはネットワークに繋がないと接続できないリポジトリです。

ローカルリポジトリ
各々のPC上に存在するリポジトリのことで、他の開発者には影響を与えない自分だけのリポジトリです。
ローカルは英語で『地元の、局地的な』という意味がありますが、家から数分の近場であれば公共交通機関を使わなくとも行き来することができるように、ローカルリポジトリはネットワークに繋がなくとも作業をすることができるリポジトリです。

クローン
リモートリポジトリを複製することです。複製したリポジトリはローカルリポジトリとして自分だけのものとなります。

プル
リモートリポジトリの最新情報をローカルリポジトリに取り込むことです。
クローンと少し意味が似ているように思われますが、クローンはリモートリポジトリを丸ごと落とし込むのに対して、プルは変更された内容だけを落とし込んでくるという違いがあります。

フェッチ
リモートリポジトリの最新情報を取得することです。この作業をしただけでは、リモートリポジトリの最新情報はローカルリポジトリに反映されないです。

コミット
追加したり変更したりしたファイルやフォルダを保存することです。
例えばゲームをやるとき、本体の電源を切る前などのタイミングでセーブしますよね。セーブに当たるのがこのコミットという作業です。初めにバージョン管理システムはいつ、誰が、どのファイルにどのような変更を加えたのかを記録してくれるツールであると説明しましたが、コミットせずPCの電源を切ってしまうと、変更記録が残りません。

実際のコミット画面

『作業ツリーのファイル』に変更・追加したファイルが並び、『全てインデックスに追加』をクリックしてから左上のコミットボタンを押すとコミット が完了します。
また、ファイル名をクリックすると右側に変更内容が出力されます。

プッシュ
ローカルリポジトリで加えた変更内容をリモートリポジトリに反映させることです。
下書きを原稿に反映させるようなイメージです。

ブランチ
プロジェクト本体(master)から枝分かれさせることです。ブランチを作成してから作業をすることで、プロジェクト本体に変更の影響を与えることなく作業を進めることができます。
また、ブランチを作成することを「ブランチを切る」と言います。

マージ
作成したブランチをmaster(大元のブランチ)に結合させることです。

分散管理方式と集中管理方式の違い

バージョン管理システムを利用する上で覚えておくべき用語を説明しました。上記を踏まえてバージョン管理システムの管理方式について説明していきます。
バージョン管理システムには管理方法が分散管理方式と集中管理方式の2種類あります。
『集中管理方式』とは、開発者全員が同じリポジトリ(リモートリポジトリ)に接続して作業を進めていく管理方式で、代表的なツールにはSubVersion(SVN)があります。

1つのリポジトリでファイルやフォルダが管理されているため、次に紹介する分散管理方式と比べると管理は容易でありますが、作業をする場合は常時ネットワークに接続する必要があります。また、1つのリポジトリを複数の開発者で共有するため、同じタイミングで同じファイルに変更を加えてしまう競合のリスクがあります。
『分散管理方式』とは、開発者それぞれがPC上にリポジトリを持ち、それぞれのリポジトリで変更履歴を管理する管理方法です。代表的なツールにはGitがあります。

ローカルで作業した内容を都度リモートリポジトリにプッシュしないといけないので、一見面倒で複雑な管理方式に思われます。しかし、例えば作文を書くときに下書きの段階では原稿に影響を及ぼさないのと同じように、ローカルリポジトリで誤って変更を加えてしまったりファイルを削除したりしても、リモートリポジトリに反映させなければ全体へ影響を与えることはありません。また、オフライン状態でも作業を進めることができるメリットもあります。

どのようにバージョン管理システムを理解したのか(体験談)

僕はコーディング未経験で入社したので、バージョン管理システムという言葉を初めて聞きましたし、横文字ばかりで何も分からない状態から始まりました。
そんな僕がどのようにバージョン管理システムを理解したのかをここでは紹介していきます。
結論は、

  • 実際に使ってみる
  • 分からないことを都度調べる

この繰り返しであると個人的には思います。
実際バージョン管理システムを使う前にいろいろな記事を読んだり教えてもらったりしましたが、作業のイメージが湧かなかったので僕は完全に理解することができませんでした。
実際に使ってみることで必ず疑問が生まれるので、その都度調べたり先輩に聞いたりしてということを繰り返して理解してきました。
また、作業手順をただ教わるだけではなく、初めのうちは今の操作を実行したことでどのようなことが起きたのかを自分で想像しながら作業をすることがバージョン管理システムをマスターする近道なのではないかと個人的には考えています。

終わりに

いかがだったでしょうか。
コーディング未経験で入社した新卒がバージョン管理システムについて説明してみました。
サイトを運用する上でバージョン管理システムについての知識は必須ですので、ぜひ今回の記事を参考にしていただければと思います。

 

 

コラム執筆

今井 颯太郎
2021年4月入社。Webサイト運用でコーダーを担当しています。
趣味は格闘技観戦。