バージョン管理

2016.02.15

バージョン管理とは

コンピューター上で扱われるファイルの更新履歴を管理すること。ソフトウェアの開発やデジタルコンテンツの制作において、多人数で複数のファイルを変更したり修正したりする場合、その更新の履歴に関する情報を保存することで、のちに任意の日時に変更されたファイルを復元したり、変更内容を確認したりできる。

もっと詳しく!

バージョン管理には2つの種類がある。一つのファイルの変更履歴の管理と、同じコンテンツをもとに配信先のシステムなどに応じて異なる形式で出力されたファイルなど、分岐ファイルの管理である。

変更履歴を管理する

ファイルの変更履歴の管理は、書籍の改訂にあてはめて考えるとわかりやすい。ある学術書が刊行されてから月日が経ち、新しい学説の発表による内容の書き換えや研究成果の補足などが必要になった場合には、改訂版が刊行されることが多い。これはコンピュータのソフトウエアやOSの開発における「メジャーバージョンアップ」にあたる。大規模な改訂を行うほどではない誤記や誤植の訂正などが、増刷にあわせて行なわれることもある。これはITの世界で言う「マイナーバージョンアップ」にあたる。

こうした内容の更新(バージョンアップ)のたびに、変更前→変更後のファイルで何が追加/削除/変更されたのか、という履歴をなんらかの形で残しておくことで、将来的に不具合が起きたときの原因究明を容易にしたり、削除や変更が誤りであった場合に簡単にもとの形に戻せるように備えておくことが、変更履歴の管理の目的である。

変更の履歴は、ファイルの中にコメントアウトして記述する、更新前のファイルと更新後のファイルの差分を別ファイルとして保管するなどの方式で、記録・保存できる。ファイルの中に変更履歴を記述する方式では、管理するファイルが一つですむというメリットがあるが、作業中に誤って履歴の記録じたいを削除してしまうリスクが高まる、ファイルの容量が膨らむといったデメリットがある。

ファイルを参照する際どれが最新版なのかがすぐ分かるように、更新ファイルの名前のつけ方のルールを決めておくとよい。バージョンが改まるたびに、

ファイル名の末尾に更新年月日をつけ足す(AAA150224.txt、AAA151022.txt…)、
番号をつけ足す(AAA_10.txt、AAA_11.txt…)、
アルファベット(a-z)をつけ足す(AAA_a.txt、AAA_b.txt…)

など、さまざまなやり方がある。バージョンが異なる同じ名前のファイルを、異なる名前の別のフォルダにそれぞれ保管するというやり方は、操作ミスによる上書きのリスクが高まるため避けたほうがよい。

分岐ファイルを管理する

あるコンテンツを電子化してユーザに提供しようとする場合、提供媒体によって異なる形式(フォーマット)のデータを要求されることはしばしばある。同じ一つのコンテンツから、「CD-ROM版」「電子辞書版」「webサービス版」「スマートフォン・アプリ版」「音声つき版」…といった、さまざまな媒体向けのさまざまなフォーマットの版(バージョン)が派生して分岐ファイルが出来た場合に、それらのファイルの管理が必要となる。

コンテンツの内容が更新されないデータの場合は、ファイルの分岐はおもに形式上の派生に留まるため、管理も比較的容易である。形式変換の際にどのようなルールで変換がなされたかを記録し、あとから参照できるようにしておけばよい。問題は、もとになるコンテンツや分岐したファイルの側で記述内容が変更されるケースである。

かつての印刷書籍では、もとになる版木は一つなので、この版木に変更を加えれば、記述内容の変更はその版木を使って印刷されるすべての紙に対しても同じように反映された。これに対し、フォーマットが異なる分岐ファイルが複数存在する状態というのは、大きさや素材の異なる版木がいくつも同時に存在するようなものである。これらの版木のどれかに変更があった場合、放っておけば他の版木にはその変更内容は反映されず、それらの版木で印刷される紙にも変更内容は反映されない。そのため、同じコンテンツのはずなのに内容が異なるものが、同時に複数世の中に出回ることになってしまう。

こうした事態を避けるため、ある形式のファイルに変更があったとき、その変更内容が同じコンテンツの他の形式のファイルにも同じように反映される=同期のとれた状態を保つことが、分岐ファイルの管理においては重要である。変更があった個々のファイルについては、前段で解説したファイルの変更履歴の管理も並行して行なわれることになる。

大切なのは「おおもとのマスターファイル」を見失わないことである。どのファイルを「親」とし、その他のファイルを「子」とするのかをあらかじめ決めておき、「親」ファイルが常に最新版であるようにしておくことで、複数の「子」ファイルの間で記述内容に矛盾があった場合にも、「親」の記述に基づいて迷わず統一を図ることができる。「おおもとのマスターファイル」とは、書籍の訂正原本のような存在なのである。
修正更新を施すのは「おおもとのマスターファイル」のみとし、「子」ファイルについては各々の要求仕様に対応した変換フィルタを通して生成処理する、というのが理想である。

意識と情報共有の徹底が必要

更新ファイルの管理であれ、分岐ファイルの管理であれ、増えていくファイル群について、ファイル名、タイムスタンプ、更新分岐の目的(内容修正か外部提供か)、修正担当者といった情報を一元的に管理する台帳は必要だろう。
ルールを決めてもバージョン管理の意識が希薄だと「あ、上書きしちゃった」は頻繁に起きるだろうし、漠然とコピーファイルを増やしていくだけでは、いざ遡及調査という際に効率的に結果を得ることはできない。
データファイルに触れることができる関係者全体での、ルールの理解と管理意識の高さが何よりも求められる。

[永田 健児/株式会社ディジタルアシスト/20160210]