Kuwataさんと僕は、Catyの作業のために、分散バージョン管理システムMercurialと、オンラインMercurialリポジトリを提供しているサイトBitbucketを使っています。使い始めた頃の感想は「ナルホドー! 使って分かった Mercurial と Bitbucket の便利さ」、最近知った小ネタは「分散バージョン管理系Mercurial こんなことも知らなかったの?>自分」に書きました。
10月3日・土曜日、かなり長時間にわたってbitbucketが落ちていました。原因は、AmazonのWebサービスEC2, EBSのトラブルだったようです。インフラの問題だったにしろ、このダウンで迷惑をこうむった人は多いだろうし(有料版をビジネスで使っている人々もいます)、bitbucekt自身も随分と痛手を受けたでしょう*1。
僕もbitbucket利用者ですが、「あー、そうなの」という程度の反応でした。僕がたいして気を揉むことがなかったのは、先週の中頃(9月エンド)はCatyのリリース作業で頻繁にbitbucketを使っていたけれど、週末はたいして使う必要がなかったこともあります。しかし、しかしですね、もしbitbucketがCVSやSubversionのホスティング・サイトだったら青くなっていたでしょう。大事なリポジトリが無くなったらどうしよう、と気が気じゃないですよ。「もしデータがロストしたら訴えてやろう」とか思うでしょうね。
でもね、Mercurialならデータ・ロストの心配なんて一切ないんです。データはぜーんぶ手元にあるもんね。bitbucketがこの世から永久に消失したところで無問題。Kuwataさんと若干の食い違いが生じているかもしれませんが、応急処置としては、メールでdiffかバンドル(差分交換用バイナリ)ファイルを送れば同期を取れます。代替のホスティング・サービスを探すか、自前でサーバーを上げれば今までどおりに作業を継続できます。*2
bitbucketはWikiシステムを持ってますが、WikiもMercurial管理下に入っているので、Wikiページも手元に全てあります。イッシュートラッカーは残念ながらMercurialと連動してないので、データを失うことになるかもしれません。ですが、これはさほどのダメージじゃありません。
データは手元にある。それも、「たまたまバックアップしていた」とかの僥倖とは無関係で、常にどんなときでもデータは必ず手元にあるのです。この事実は、心理的にものすごい安心感と余裕をもたらします。もちろん、それでもバックアップ(clone一発、超簡単)をしたほうがいいのですが、bitbucketと僕とKuwataさんのリポジトリが同時に失われる確率は低いでしょう。どれか1つが生き残っていれば、最後の変更以外は再現できます。
データの保全だけでなく、Mercurialは、間違いに対する不安や恐れも軽くしてくれます。例えば、Catyのリリース版を作る作業は、リポジトリをcloneしてやったのですが、僕がどんなヘマをしでかそうともKuwataさんに迷惑はかからないし、どの時点にでも戻すことができます。ビクビクせずに作業を進めることができます。実際に間違いをやらかしましたが、やり直しのコストは極小でした。
分散バージョン管理という概念はかなり分かりにくいもの(特にCVS、Subversionなどのユーザーには)で、使い始めるまでの敷居が高い*3かもしれません。「ナルホドー! 使って分かった Mercurial と Bitbucket の便利さ」で言ったことをもう一度繰り返します:
- 「四の五の言ってないで、使ってミソ」
*1:代替インフラを持ってなかったのが悪いとも言えますが、小規模ベンチャーでしょうから、ちょっと可哀想な気がします。
*2:アリャー、このエントリーを書いている最中もbitbucket落ちてるしぃー^^;、シャレになんねーよ。
*3:本来の意味は「不義理や不面目のため、訪問しにくくなる」なんだそうです。が、みんなが同様に誤用していれば意味は通じるんだから、本来の意味なんてどうでもいいんです。http://d.hatena.ne.jp/m-hiyama/20070927/1190855998 参照。)