こんにちは、キノトロープアカデミーです。
「キノトロープアカデミー」は、Web業界のトップランナーである株式会社キノトロープの社員が講師を務めるオンラインアカデミーです。リモートワーク時代に不可欠な「個のスキル」を高め、職人のような「匠」を目指す人を増やしたい。そんな願いを込め、基礎から経営判断、業務フローまで、一生モノのナレッジを惜しみなく公開していきます。
<中級編 第15回>
システム開発のバージョン管理とGit
についてお伝えします。
担当は高橋です。
システム開発におけるバージョン管理システムには、中央のサーバーで一元管理するサブバージョン(SVN)などの集中型と、各自が複数のリポジトリを持つギット(Git)やマーキュリアルなどの分散型があります。
分散型であるギットは、ネットワークに接続できない環境でも手元のローカルリポジトリで作業を進められる点が大きなメリットです。
ギットのリモートリポジトリをホスティングする主要サービスには、世界中で使われているGitHub、マーキュリアルにも対応するBitbucket、オンプレミス運用が可能なGitLabなどがあります。
また、操作ツールには黒い画面でコマンド入力を行うCUIと、ソースツリー(SourceTree)のように直感的なGUIの2種類が存在します。
第1回目は、バージョン管理がどのようなものかについてお届けしましたが、今回は、第2回目としてバージョン管理システムであるGitについての概念と基本操作について、詳しくお話していきます。
”システム開発のバージョン管理とGit”をテーマに、
今日お伝えしたいことは3つあります。
バージョン管理システムには、
・CVS(コンカレント バージョン システム)
・SVN(サブバージョン)
・Git
・マーキュリアル
などがあります。

SVNは集中型、又は中央型とも言われるバージョン管理システムです。
ファイルそのものや変更の履歴などを保存する場所を「リポジトリ」(貯蔵庫)と呼びますが、SVNの場合は(ソフトウェア1つにつき)1つのリポジトリを使い、参加するメンバーは、中央リポジトリからファイルを持ってきて編集し、編集が終わったら中央リポジトリに直接反映します。

先程の集中型バージョン管理システムのSVNに対し、Git/Mercurial(マーキュリアル)は分散型のバージョン管理システムと呼ばれています。
リポジトリを複数持つことができ、開発の形態や規模に合わせてソースコードの管理ができます。リポジトリを複数用意できるので「分散型」と呼ばれています。
普段はローカルリポジトリを使って作業し、ある程度作業できたらリモートリポジトリに反映するといった使い方ができます。
リモートリポジトリにアクセスできない環境でも作業を進めることができるというメリットもあります。

GitはGitでもいろいろなものがあります。ここで言うGitの種類とはホスティングサービスのことを指します。費用や運用管理や会社の管理状況によって適切なサービスを選ぶ形にはなるかと思います。

次にGitのクライアントツールについてです。
Gitクライアントツールは大きく分けると2種類あり、CUIとGUIのツールがあります。
CUIについては黒い画面で文字ばかりのものです。高度なGit操作を行う場面がある場合や、Gitの理解が深まったら使用するとよいかとは思います。
この後説明する操作説明では、ソフトウェアで比較的直観的に操作のできるGUIで説明をしてきます。具体的にはソースツリーというツールを利用してご説明します。
説明する基本操作のStepとしては次の1から6までがあります。今回はStep2までの基本の部分について説明します。
【Git・基本操作】
Step1:リポジトリからクローンする
Step2:コミット(commit)
Step3:ブランチを切る
Step4:プッシュ(push)とプル(pull)
Step5:マージ(merge)
Step6:リバート(revert)とリセット(reset)
はじめに、Step1:リポジトリからクローンするについてです。
そもそもクローンとはリモートリポジトリからローカルリポジトリを作る事を言います。


このクローンをまず行います。
その後、保存先に指定したディレクトリを見に行きましょう。
すると、「.git」というディレクトリが出来ています。
この「.git」ディレクトリが何なのかといいますと、
「.git」ディレクトリがあるディレクトリ配下をファイル管理してくれる物になります。
つまり、青色で囲った箇所はすべて「.git」のテリトリーとなり、
ファイルの追加、削除、更新、リネームをすべて検出するようになります。
逆に管理下に入れたくない場合は「.gitignore」というファイルを作成し、
入れたくないファイルを記載すれば管理対象から除外されます。

例えば、「管理対象外」というディレクトリを作成し、この配下はgitの管理対象外にする場合は、「.gitignore」ファイルを作成します。
中には「管理対象外」と1行追加します。
この、.gitignoreに記述したディレクトリ、ファイル名は管理対象外となります。
こちらの図では紫色で囲った「管理対象外」というディレクトリ配下はGit管理対象外となります。

続いてStep2:コミットについてです。
コミットはビジネス用語としては、「約束」や「目標に対して責任を持つ」などとなりますが、システムやバージョン管理においては、トランザクション処理による内容の更新を恒久的なものとして確定することをさします。
ですが、この説明ではわかりにくいと思いますので、「コミット=歴史を刻む」または、「履歴に保存する」という意味合いで覚えるのが理解しやすいかと思います。







ここで思い出してください。
バージョン管理システムでは、いつ、誰が、どこを、何のために変更したかが分かります。

これにより、「問題点1:いつ誰がどんな理由で手を加えたのか追えない」という問題が解決できます。
なお、コミット時の注意点として、「何のために」だけは、コンピュータが把握出来ないので、必ず人が入れてあげるという点に気を付けてください。
最後までご覧いただきありがとうございました。

の3点についての内容でした。





