0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Gitをやる前に】VCS入門

Posted at

#書こうと思った背景
会社でGit・GitHubでソースコードのバージョン管理を行うにあたり、そもそも**「バージョン管理する理由ってなんだっけ??」**ってなったので、会社が紹介してくれた「VCS入門」という資料を読んでみました。その印象に残った点について自分用メモとして引用&記載させていただきます。

※VCS:Version Control System

#印象に残った点

###VCSはルールと対になって初めてその真価を発揮する

VCSを使えばハッピー・・・なはずでしたが、どうやらVCSを使った「だけ」では、そうはならないようです。

問題を整理してみると、リポジトリへの反映時に次のようなことが起きているようです。

1.「とりあえず」反映している
2.「どうやったのか」をメッセージに書いている
3.動かないものも反映している
4.複数の変更を盛り込んでいる

[・・・]

そこで、まずは最低限作業フォルダーの内容をリポジトリに反映する際のルールを決めましょう。先ほどの良くない例を見れば、守るべきルールが見えてきます。それが次のルールです。

・「時間」ではなく「作業」の単位で行う
・「どのように」ではなく、その作業を「何故」「何を」「何のために」行うかをメッセージに残す
・動かない成果物はリポジトリに反映しない
・一度に一つの変更だけ反映する

これらのことから、VCSのVersion(バージョン、版)とは「ファイル単位の改訂内容」を表すのではないことがわかると思います。Versionとは「作業単位の変更内容」を表すのです。このことを忘れないようにしてください。

これまで「実務で絶対使うから!」ということで、なんとなくGitを使っていたのですが、その目的を実現するにも、きちんとしたルールを設定しないといけないということですね。

###VCSのルールを設定するための考え方(SCM)を意識して運用せよ

ここで最初に立ち戻り、VCSを導入することで何がしたかったのか、考えてみることにしましょう。

VCSがない状態では、次の問題がありました。

・作業履歴が残らない
・他の人と作業がぶつかる

また、VCSを導入した後、ルールが無ければこんな問題がありました。

・履歴から目的の変更を探せない
・履歴の一つが、どういったきっかけで変更されたかわからない

以上の問題から、VCSを使って行いたかった事とは、

・各バージョンを識別したい
・特定のバージョンを再現したい
・何故変更が行われたのか知りたい
・他の人と連携して作業を行いたい

ともいえると思います。

これらを実現するための考え方が「SCM(Software Configuration Management、ソフトウェア構成管理)」です。

[・・・]

では、構成を管理するとはどういうことかを、そもそもの目的から導くと、次のようになります。

ある時点でのソフトウェアを構成する要素すべてを、識別、再現、追跡出来るようメンバー間で成果物を共有し、連携を促すための仕組み、ルール、プロセスを構築し、運用する

このためには、最低限その変更がどのような「依頼」によるものなのかを、それぞれの要素に紐付け、その組み合わせの履歴を残していかなければなりません。

###GitHubのissueがなぜ機能として存在しているのか

SCMは「変更依頼」の管理も含めてSCMである、と説明してきました。主な変更依頼のトリガーとしては、「バグ」、「仕様変更」等があります。

こういったものは、多くの組織ではそれぞれ「バグ管理票」、「QA票」などで管理されていると思います。しかし、もともとはそれぞれが別文書であるということもあり、「どこからきてどこへ行くのか」追跡がしにくいという問題があります。

このケースへの対応としては、変更依頼のトリガーとなる事象を一元管理する必要があります。ただ、その数は膨大で、とても手書やExcelシートで管理できるものではありません。

そこで、変更依頼を管理するためのツールの出番です。こういったツールは一般的に「ITS(Issue Tracking System、課題管理システム)」と呼ばれます。

ITSでは、Issue(課題)を「Ticket(チケット)」という単位で登録します。このチケットには一意となる番号(チケット番号)が振られ、担当者を割り当てたり、関連する内容をコメントしたりする機能があり、課題を完了したらチケットを「閉じる(クローズする)」決まりになっています。

これにより、今残っている課題、終わった課題、誰が担当しているかなどが明確になり、管理が容易になります。

また、ITSにはVCSと連携する機能があり、チケット番号をメッセージに入れてそのチケットに関連する履歴を参照したり、完了したことを表すメッセージを入れると自動的にチケットをクローズしたり、といったことが可能になります。

こういった機能を活用することで、その変更が何を起点に誰が作業し、今終わっているのかどうか、そして作業履歴がどうなっているかを、一気通貫で追跡できるようになります。

GitHubのissueがなぜ機能として存在しているのか、理解しました。。。!

#参考
VCS入門

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?