シリコンバレーの某社のエンジニアさんと話をしていて、私の想像以上にリポジトリホスティングサービスが普及していることに気がつきました。自分の書いたコードを晒すかどうかは別途考えるとしても、私もとりあえずリポジトリホスティングサービスを利用しても良いんじゃないかと考えるようになってきたわけです。
ということで、Bitbucketはじめました。
これまで、私が自分で開発しているプロジェクトのコード類などをどうやって管理しているかというと、さくらインターネットのVPSサービスを利用し、Subversionとtracをインストールして、クライアントとしてはTortoiseSVNを、Eclipseから利用する際はSubclipse、Visual Studioから利用するときはAnkhSVNを利用しています。
多人数で開発をするときはプロジェクトに応じて各メンバーにアカウントを発行し、post commit hookでコミットメールを飛ばしたり、Web開発プロジェクトだったりする場合は同じくpost commit hookでsvn updateをかけたりとかもしています。
全員が同じ開発室に居て開発をしているときは、「○○をコミットしたよー」とか声を掛けて確認することも出来たりするのだけど、実際にはなかなかそうも行かないことが多いのでコミット時にはメールが飛ぶようにしているのです。
また、Web開発プロジェクトにおいては、開発者にとって最新のリビジョンを動作させるとどうなるのか?ってのは非常に気になるところです。そのため私は、常に最新リビジョンの動作の様子を確認できるWebサイトを立ち上げながら開発を進めることが多いです。post commit hookで設定しておけば、サーバにコミットするだけで最新リビジョンをテストサーバにデプロイすることが出来るので非常に便利ですし。
さて。リポジトリホスティングサービスを利用するにしても、現在、各社から様々なリポジトリホスティングサービスが提供されています。例えば、有名どころではGitHubがあります。私も当初はGitHubでアカウントを作成しようかと思ったのだけど、調べてみると他のサービスのほうが魅力的に思えてきてしまいました。
例えば、私が実際にアカウントを作成したのはBitbucketというサービスなのだけど、無料でプライベートリポジトリ(自分だけが利用できるリポジトリ)を作成することが出来る。GitHubの場合はプライベートリポジトリを作成するためには有料プランを申し込まねばならず、無料で利用しようと思うと基本的に全てのコードが公開されてしまう。これはこれでGitHubの面白さなのだろうけど、オープンにしたくないプロジェクトというのも世の中にはあるわけで、そのためにGitHub以外のリポジトリサービスを使うのはなんだかなぁとも思ってしまいます。
また、BitbucketはバックエンドでMercurialを利用しており、GitHubはバックエンドでGitを利用しているのですが、Webで情報を調べてみるとクライアントソフトとしてはMercurial用のもののほうがこなれている印象を受けました。私は基本的に、コマンドラインで操作することにそれほど拘りがないので、GUIで楽に操作できるなら、そのほうが嬉しいです。
ちなみに、Bitbucketでpost commit hookのようなことが出来るのかどうか調べてみたところ、管理画面からserviceと言うものを追加できるようになっており、そこからメールを送信したり、Twitterに投稿したり、特定のURLにアクセスしたり出来るようになっている。特定のURLにアクセスがあった際にpull、updateコマンドを実行してやれば、最新バージョンをテストサーバにデプロイできそうなので、私が今利用している環境からスムーズに移行することが出来そうです。