Joy to the world

とある中小企業のしがない技術者でクリスチャンな人が書く日記。実はメビウス症候群当事者だったり、統合失調症のパートナーがいたりする。

MacでSubversion環境を整える(序論)

はじめに

普段パソコンを使う人なら、ファイルのバージョン管理をしたことがあるはずだ。

バージョン管理と書くと難しそうに見えるが、要するに

 企画書_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

となり。とても管理しきれなくなることがお分かりいただけるだろう。

最後に挙げる問題点として、差分の比較が煩雑な点が挙げられる。
これは最初の問題点と本質的には同じであるが、変更履歴がわかりにくいため、直前のバージョンとの比較を行うことに非常な労力を要する。

このような状態を回避するためのシステムが、「バージョン管理システム」なのだ。

バージョン管理システムの種類

近年よく使われているものは

が有名だろう。

両者の違いについては

tracpath.com

などが詳しいので、詳細について気になる方は参照されたい。

端的に説明すると、リンク先にも書いてあるように

と説明できるだろう。

Subversionは集中型なので、「サーバーにあるデータが最新版。ローカルはあくまで作業コピー」という、単純明快な運用ができる。

それに対して、Gitはサーバーにあるリポジトリをローカルにダウンロードして、作業の反映はローカルリポジトリに反映。その後開発者が時期を見て、サーバーにpushするという方法を採る。

つまり、Subversionはコミットがすぐ共通のリポジトリに反映されるのに対して、Gitはpushするまではサーバーに反映されないのだ。

したがって、Gitならたとえ動かないコードでも「とりあえずローカルリポジトリにコミットする」という運用ができるが、Subversionでは、せめて「とりあえず動く」コードをコミットしないと、他の人が迷惑してしまう。

このように、両者には一長一短があるので、プロジェクトの規模や管理方法に応じて、適切な方を使えばよいだろう。

Subversionを使う理由

では今回、なぜSubversionを使うかというと、お一人様バージョン管理には最適だと考えるからだ。

筆者の職業はプログラマではなく、プリント基板の検査装置 (Teradyne Test Station) の維持管理・運用である。Test Staion*1については、以下を参照されたい。

www.teradyne.com


Subversionを使う主な理由は、業務で検査プログラムのバージョン管理を行うためである。

同じ部署で技術者は私一人なので、必然的に「お一人様バージョン管理システム」を運用することになる。
そのような運用を想定した場合、Subversionのような中央集権型のシステムはわかりやすく、管理がし易い。

なお、表題に「Macで」と書いているが、これは筆者の趣味であり、業務とは直接関係ない(Teradyne TestStationの制御コンピュータは、Windowsである)。

ただし、マランツの画像検査装置等、一部Macを制御コンピュータとして動作する電子基板検査装置もあるので、そういった場合には役に立つかもしれない。

とにかく、この記事はプログラマではないけれども、検査プログラムのデバッグやバージョン管理をしなければならない技術者に向けた記事である。

そのため、Apacheを設定して、WebDAVと連携させて..なんて面倒なことはせず、とりあえず動いて、バージョン管理ができるようになることを目標とする。

したがって、この設定のまま外部に公開するとか、多人数でリポジトリを共有するとか、そういった運用は避けたほうが良いと思う。

以上を踏まえて、次回からは、実際の設定に進んでいくとしよう。

*1:このTestStationという装置、驚くほど高価であるが、驚くほど多彩な検査が可能である。 日置や新電子等が販売しているインサーキットテスタとは、比べ物にならない(もちろん価格も)。