MY-NOTEBOOK

Wednesday, February 20, 2008

Subversion vs Time Machine ファイル管理の悩み

先日、客先で雑談していたところ、

FTPサーバに置いていた大事なファイルを誤って消しちゃってたいへんな目にあった・・・こういうときなんかいい方法ないの?

というお話をうかがいました。

ポイントを整理すると、

  • 大容量のFTPサーバに大事なファイルを保存して管理している
  • 人為的なミスでFTPサーバ上の大事なファイルを削除してしまうことがある

ということを防ぎたいとのこと。

FTPサーバ自体の単純なバックアップ(ミラーリング)は行っているのだが、あくまでミラーしているだけなので、大事なファイルを消してしまった、ということにだれも気づかないままに、次のバックアップを行ってしまうと、誤って削除されたデータは永遠に入手できなくなる...

rsync
良く考えてみると、差分バックアップを頻繁にしておけばいいという話かも...

Subversionはどうか

その場では、自分が日常的に使っているSubversionを説明して、Subversionでファイルを管理しておけば、 過去のどの時点にも戻ることができるから、誤って消してしまって困る というトラブルから解放されるだけでなく、 ほとんど不要とわかっているファイルだけど万一に備えて消せないという事態 からも解放されるんです。
だから、思いきってファイルを消せるから、レポジトリをいつもきれいな状態(で不要ファイルがない状態)に保つことができるんです、などと説明した。

しかし、実際のところ、Subversionというのは、使うには、Subversionのサーバも用意しなければならないし(それは、FTPサーバのように
レンタルサーバのサービスを契約すればすぐ使えるといった簡単な状態になっていないし)サーバの問題に目をつむったとしても、使用するユーザにとっては、Subversionの専用のクライアントソフトを導入する必要がある上に、Subversion自体の概念を理解しないと上手に使えない、ということで、ただファイルを管理したいだけの普通のユーザにとっては敷居が高すぎる。

もし、何かファイル管理で深刻なトラブルに陥って、 なんとかしなくちゃモチベーション が十分高まっていればいいものの、そういう状況は個々の人では発生しても、チーム全体でそういう意識を持つというのは考えにくいので、なかなか難しいですね。

そういえば、Time Machine(MacOSX Leopard) があった

でも「バージョン管理」でググっていて、Time Machine を使う、という解があることに気づいた。なんで思いつかなかったんだろう。

以前からLeopardの新機能として取り上げられていたので、存在自体は良く知っていたのだが、Time Machineの機能は、個人レベルで使うもの、という勝手な思い込みが あったから全くSubversionの代わりになるという発想がなかった。
でも、Time Machineを使えば、MacOSX(Leoparad)にTime Machineをセットアップして、FTPサービスを稼働させておくだけで、この問題が解決することになる。
(もちろん、実際にやってみると何か別の問題があるのかもしれないですが)

この解決方法のうれしいことは、Subversionと違って、ユーザに負担をかけないこと。ユーザはいままで通りのファイルオペレーションをすればよい。チーム全体で導入する場合、学習コストが一切かからないのが、すごく気が楽です。(彼らはファイル管理以外にやるべき仕事があるから、ファイル管理ごときに気を取られることを避ける)
何か新しいことを覚えてもらうには、それに見合った見返りがあると納得しないと人はなかなか動いてくれないですから。 (理解・納得・行動の間には大きな隔たりがある)

Time Machine は Subversionの代わりになるのか?

プログラマのように大量のソースコードのバージョンを含めて管理する必要が場合、Time MachineはSubversionと比べてなんの役にも立たないのだが、単にファイルを管理する必要がある、というひとにとっては、Subversionの概念や操作は負担なだけなので、TimeMachineはよい選択になりますね。(マックを導入しないといけない、ということが障害になるかも知れないですが)

でも、ファイルの管理・バックアップの問題をいつも考えるときに思うのは、

  • 妥当なコストで、データを失わないように管理・バックアップできるか?
  • 必要なデータを少ないコスト(少なくとも妥当なコスト)で探しだすことができるか?
  • 本当に管理するべきデータは何か?

ということです。
Subversionのようなファイルオペレーションに負担がかかる(add,commit,checkout)システムの場合、日常的に「本当に管理すべきデータか?」ということを考えるわけですが、TimeMachineのようなシステムでは、そのようなファイルオペレーションの負担がないので、データ・ファイルに対する意識が低いままです。

ま、「本当に管理すべきデータか?」などということを考えること自体が、増井氏のいうところの「 貧乏根性 」にすぎないのかもしれません。そんなことは、考えるべきではないと。

© 2006-2012 Tomoaki Oshima