発注ラウンジは、システム開発の発注に必要な様々なノウハウや発注ナビで実際に開発された発注者様のインタビューなど、発注担当者様のための情報発信サイトです。

バージョン管理システムとは?管理方式の違いと履歴を管理する利点

バージョン管理システムは、システム開発などで特に重要なバージョン管理を補助するためのソフトウェアです。
対象となるファイルの構成が大規模になるほど、バージョン管理は複雑になります。
そんなときにバージョン管理システムを導入すれば、ファイルのバージョン管理を簡単かつ効率的に行うことができるでしょう。
今回は、バージョン管理の基礎知識や管理方式、システム導入のメリットなどについてご紹介します。

バージョン管理システム1-min 

目次

 

バージョン管理システムとは?

バージョン管理システムとは、その名の通り、データのバージョン管理を行うためのシステムです。特定のファイルに加えられていく変更履歴を記録・管理していくもので、ファイルの数やバージョンの更新回数、更新に関わる人数が多くなっても正確にデータの管理ができます。

バージョン管理自体は、特別な作業ではありません。例えば、新しく作成したファイルに「20180101_◯◯」など年月日を付けて管理し、ファイルを編集するたびにファイル名に付けられた年月日を更新していくといった作業もバージョン管理のひとつです。
しかし、ファイル名に年月日を付けるという手法は手軽に導入できますが、ファイル数や更新回数、あるいは更新に関わる人数が多くなってくると、ファイルをバージョンごとに正確に管理することが難しくなります。そのような状況で、人為的ミスが発生する可能性を減らして、バージョンを正確に管理するためにバージョン管理システムが必要になるというわけです。

バージョン管理は、特定のファイルに対して加えられていく変更を保存し、後からその当時の状態に戻れるように変更履歴を残します。ここでいう変更履歴とは5W1Hのような情報を指していて、「いつ」「誰が」「どのように」ファイルを変更したかを記録していくことが大切です。特にシステム開発など、複数人が同一のファイルを頻繁に更新するような状況で、ファイルをバージョン管理する必要がある場合に活用されます。
対象となるファイルの種類に制限はなく、ソースコードに限らずさまざまなフォーマットのドキュメントや画像・動画ファイル、音楽ファイルなども管理できます。変更履歴を逐一記録しておけば、内容を過去の状態に戻すこともできるようになり、ファイルの扱いやすさが飛躍的に向上します。

 

バージョン管理システムの管理方式

バージョン管理システムの管理方式は、「集中管理方式」と「分散管理方式」の大きく2つに分けられます。ファイルの管理方式について、それぞれの特徴を解説します。

 

●集中管理方式

集中管理方式とは、ファイルのバージョン管理を専用のサーバ(リポジトリ)で一元管理する方式です。サーバ上にリポジトリと呼ばれるバージョン管理専用のフォルダを作成し、ユーザーのPCにクライアントソフトウェアを導入します。クライアントPCからユーザーがそれぞれがサーバに接続するとファイルを利用できます。
集中管理方式では、コミット(チェックイン)するごとにバージョンが加算され、リポジトリ内のバージョンが自動的にひとつずつ増えていきます。
ここでいう「コミット」(バージョン管理ソフトによっては「チェックイン」ともいう)とは、ファイルをアップロードすることです。逆に、サーバからファイルをダウンロードすることを「チェックアウト」と呼びます。

集中管理方式ではサーバ上でファイル情報を一括管理するため、サーバにつながっていない状態ではファイルの変更情報を記録できません。以前は、集中管理方式の「CVS」や「Apache Subversion(SVN)」が多く利用されていました。

 

●分散管理方式

サーバ上に置いたリポジトリでファイル情報を一括管理する集中管理方式に対し、ユーザーがそれぞれPC内にリポジトリのコピーを持つ方式を分散管理方式と呼びます。ファイルが更新されると、まずそれぞれのPC内にあるローカルリポジトリでファイルの変更を記録します。ある程度作業が進んだら、サーバ上のリモートリポジトリに変更内容を反映させます。

ユーザーがそれぞれ自分のPC内にリポジトリを保持しているため、ネットワークにつながらずサーバにアクセスできなくても作業ができるのが特徴です。システム開発においては、複数人が分散して開発するという近年のニーズとマッチした、分散管理方式の「Git」や「Mercurial」などが主流になってきています。

 

バージョン管理システム導入のメリット

手作業でも行えるバージョン管理を、あえてシステムを導入することでどのようなメリットがあるのでしょうか。

 

●以前の状態に戻せる

バージョン管理システムを使うと、変更したファイルを過去の状態に復元したり、変更した内容を表示できたりします。これは、リポジトリに変更を行う前のファイル情報も蓄積されているためです。
手作業でバージョン管理していると、誤って上書きしてしまうことがあります。上書きされたファイルは元の状態に戻すことができませんが、変更前のファイル情報が保存されて残っているため、誤って上書きしても変更自体を取り消すことができます。

 

●変更履歴をすべて記録できる

ファイルの変更履歴がすべて記録されているため、どのような変更を加えたかをさかのぼって調査できます。記録される主な情報は、ファイルの作成者、作成日付、更新日付、更新者、変更履歴、コメントなどです。どこが変わったのかを調査し、特定部分の変更のみを取り消すといった作業もできます。

 

●デグレードの発生を防止する

デグレードとは、新しいバージョンのソフトウェアが、以前よりも品質を落としてしまうことです。原因のひとつに、バグのある古いバージョンのソースコードを反映してしまうといったバージョン管理の失敗によるものが挙げられます。複数人によるシステム開発を行う場合には、バージョン管理システムを導入すれば、古いバージョンのファイルに誤ってチェックインすることを防げます。

 

ブランチを使ったバージョン管理システム

多くのバージョン管理システムでは、リポジトリを分岐させることができる「ブランチ」と呼ばれる仕組みがあります。

ブランチとは、英語で「枝」という意味で、その名の通りリポジトリを枝分かれさせて管理する仕組みです。ブランチを分けることを、「開発ラインを分ける」と表現することもあります。
ブランチとして分岐した開発ラインは、互いに独立しており、更新内容による影響を受けません。そのため、機能追加やバグ修正などの複数の変更を、同時並行で安全に進めることができます。大規模な開発プロジェクトで特に有効な仕組みといえます。

また、修正ごとにブランチを分けることで、バージョンの流れがわかりやすくなります。修正が完了するまではブランチ内で開発を進め、修正が完了すれば変更内容をマージ(統合)するといった使い方が一般的です。
一方で、デメリットも存在します。具体的には、ブランチそのものの概念の学習コストがかかることや、ブランチを取り扱うための操作が複雑なことが挙げられます。ブランチの特徴とプロジェクトの状況をよく見極めてから、管理方式にブランチを導入するべきかどうかを検討すると良いでしょう。

 

バージョン管理システムを活用して効率的なシステム開発を

バージョン管理システム2-min

バージョン管理システムは、ファイルのバージョン管理をただ記録するだけでなく、開発の効率アップや安全なスケジュール進行をサポートしてくれます。
バージョン管理は、大規模な構成のファイルになるほど複雑になります。
特に、複数人が同時に複数の修正を加えるような開発プロジェクトではなおさらです。
そうしたときにバージョン管理システムを上手に活用すれば、より効率的にシステム開発を進められるでしょう。

 img02

 

発注先選びにお困りの方はこちら

具体的にシステム開発会社を探す

システム開発・改修・移行の発注先を「専門スタッフ」に相談する

関連する記事

PAGETOP