はじめに
普段パソコンを使う人なら、ファイルのバージョン管理をしたことがあるはずだ。
バージョン管理と書くと難しそうに見えるが、要するに
企画書_20170502.doc 企画書_20170503.doc 企画書_20170504.doc ...
こんな感じで、作業に進捗があった毎にファイルを新しくするのも、言ってみればバージョン管理なのだ。
さて、この方法を採るとすると、どのような問題が生じるだろう。
まずはじめに挙げられるのが、煩わしさだ。作業が進む毎に同じようなファイルが増えて、煩わしくて仕方がない。
そのうちめんどくさくなって、こんな状態になるかもしれない
企画書_最新.doc 企画書_最新(2).doc 企画書_最新版修正.doc ...
こうなってしまうと、もはやどれが最新版なのかさえわからない。
次に挙げられるのは、複数人での編集の困難さだろう。
例えば、A,B,Cの3人で共通のファイルを編集することを考えよう。
命名規則を
[ファイル名]_[タイムスタンプ]_[編集者(編集毎に追記)].doc
とし、タイムスタンプが最新のファイルを最新版だとすると
企画書_201705122130_A.doc 企画書_201705122130_AB.doc 企画書_201705122130_ABA.doc 企画書_201705122130_ABAC.doc
となり。とても管理しきれなくなることがお分かりいただけるだろう。
最後に挙げる問題点として、差分の比較が煩雑な点が挙げられる。
これは最初の問題点と本質的には同じであるが、変更履歴がわかりにくいため、直前のバージョンとの比較を行うことに非常な労力を要する。
このような状態を回避するためのシステムが、「バージョン管理システム」なのだ。
バージョン管理システムの種類
近年よく使われているものは
- Git
- Subversion
が有名だろう。
両者の違いについては
などが詳しいので、詳細について気になる方は参照されたい。
端的に説明すると、リンク先にも書いてあるように
- Gitは分散型
- Subversionは集中型
と説明できるだろう。
Subversionは集中型なので、「サーバーにあるデータが最新版。ローカルはあくまで作業コピー」という、単純明快な運用ができる。
それに対して、Gitはサーバーにあるリポジトリをローカルにダウンロードして、作業の反映はローカルリポジトリに反映。その後開発者が時期を見て、サーバーにpushするという方法を採る。
つまり、Subversionはコミットがすぐ共通のリポジトリに反映されるのに対して、Gitはpushするまではサーバーに反映されないのだ。
したがって、Gitならたとえ動かないコードでも「とりあえずローカルリポジトリにコミットする」という運用ができるが、Subversionでは、せめて「とりあえず動く」コードをコミットしないと、他の人が迷惑してしまう。
このように、両者には一長一短があるので、プロジェクトの規模や管理方法に応じて、適切な方を使えばよいだろう。
Subversionを使う理由
では今回、なぜSubversionを使うかというと、お一人様バージョン管理には最適だと考えるからだ。
筆者の職業はプログラマではなく、プリント基板の検査装置 (Teradyne Test Station) の維持管理・運用である。Test Staion*1については、以下を参照されたい。
Subversionを使う主な理由は、業務で検査プログラムのバージョン管理を行うためである。
同じ部署で技術者は私一人なので、必然的に「お一人様バージョン管理システム」を運用することになる。
そのような運用を想定した場合、Subversionのような中央集権型のシステムはわかりやすく、管理がし易い。
なお、表題に「Macで」と書いているが、これは筆者の趣味であり、業務とは直接関係ない(Teradyne TestStationの制御コンピュータは、Windowsである)。
ただし、マランツの画像検査装置等、一部Macを制御コンピュータとして動作する電子基板検査装置もあるので、そういった場合には役に立つかもしれない。
とにかく、この記事はプログラマではないけれども、検査プログラムのデバッグやバージョン管理をしなければならない技術者に向けた記事である。
そのため、Apacheを設定して、WebDAVと連携させて..なんて面倒なことはせず、とりあえず動いて、バージョン管理ができるようになることを目標とする。
したがって、この設定のまま外部に公開するとか、多人数でリポジトリを共有するとか、そういった運用は避けたほうが良いと思う。
以上を踏まえて、次回からは、実際の設定に進んでいくとしよう。
*1:このTestStationという装置、驚くほど高価であるが、驚くほど多彩な検査が可能である。 日置や新電子等が販売しているインサーキットテスタとは、比べ物にならない(もちろん価格も)。