9/29の水曜日に、Atlassian社がBitbucketを買収するというニュースがありました。これにより、今まで有料だったようなサービスが無料で提供されるようになりました。買収したのは、Jiraなどの開発ツールで有名な会社です。とはいえ、Python界隈の人以外にはあまり注目されてこなかったサイトだとは思うので、BitBucketを紹介します。僕はソースコード管理ではメインで使っています。
買収されたBitbucketって何ですか?
Bitbucketは何者か?一言で言えば、Mercurial版のgithubです。以上。
これで分かる方はここの説明はすっとばしてくれて構いません。いわゆる、プロジェクトのホスティングサービスの一つです。ソフトウェア開発に必要な仕組みが備わっています。
バージョン管理
ソフトウェア開発をやるからには、バージョン管理はやっていますよね?中にはフォルダの中に人名のフォルダを作ってやっている人もいるようですが・・・BitbucketはMercurialというシステムを使います。さまざまなホスティングサービスがあり、それぞれサポートしているバージョン管理のシステムが違います。今時人気なのは分散バージョン管理です。
分散バージョン管理固有の機能として、他の人の作ったプロジェクトの複製が簡単に作れるようになっています。例えば、このSphinx日本語検索対応と、Sphinxドキュメント翻訳は、Sphinx本体を分岐させて作ったプロジェクトです。複製は簡単。ページの上の方にあるfolkボタンを押すだけです。複製したあとも、元のプロジェクトの最新バージョンを取り込んだり、他の人が分岐して作ったパッチをまとめて取り込んだりできます。
他のホスティングサービスは何を使っているんでしょうか?
- Mercurial: Bitbucket, Sourceforge, CodePlex, GoogleCode
- Git: github, Sourceforge
- Bazaar: launchpad
圧倒的ではないか我が軍は
ということで、Mercurialは覚えておいて損はないと思います(僕の知らないサービスもあるかもしれませんけど。あったらこっそり教えてください)。
差分ビューア
バージョン管理の一部といえば一部ですが、ウェブ上で、それぞれの差分の更新情報を確認することができます。
一般的なビューアは行ごとの差分だけの表示のものも多いのですが、行の中の違う箇所も便利に見つけてくれます。微妙に誤字を修正しました、みたいなケースは行ごとの差分だけ見ても見落としがち(どこを直したのかわからない)ことが多いのですが、Bitbucketなら、多い日も少ない日も安心です。
Wiki
オンラインドキュメントといえばWiki。Bitbucketももちろんサポートしています。Wikiの文法としては、様々に分岐したWikiフォーマットを統一するために作られたというCreole記法が採用されています。まぁ、あんまり使ってないのですが・・・
Issueトラッカー
Trac並にシンプルなやつが付いています。なお、バージョン、マイルストーン、コンポーネントなどの項目は自分で追加したりもできます。Ubuntuみたいに、バグレポートと、Issueトラッカーが別システムになっていて、途中にトリアージを行う専門チームがいるような大規模案件には向かないと思います。ちょっとしたToDoとか、他の人からパッチをもらう情報交換手段(ファイルが貼り付けられる)として使う感じですね。
管理ツール
シンプルに見えますが結構色々できます。
- リポジトリを公開リポジトリにしたり、非公開にしたりできる
- Wiki/IssueトラッカーをOFFにしたり、メンバー限定にしたりできる
- Issueトラッカーに変更があったときにメールしたりできる
- ソースに変更があったときにTwitterなどにツイートしたり、どこかにメールしたり
- 読み/書き/管理 権限を追加したり外したりできる
Sphinx-Users.jpでは、この最後のアカウント管理を利用しています。ウェブサイト(Sphinxでできている)のソースはまるごとBitbucketに載せています。「ページを作りたい」と手を挙げてくれた人がいたら、bitbucketのアカウントを作ってもらって、IDを教えてもらい、管理画面のWritersの所に追加しておしまい。なお、1時間に一回、このリポジトリからソースをpullして、ビルドするような仕組みをさくらインターネットのサーバ上に作ってあります(なんてことはないシェルスクリプトをcronで動かしているだけですが)。なので、Writersに登録した人が、手元で修正してpushすればOK。不要になった人の権限も外せますし、別に僕がパスワードの管理とかをする必要もないし、超ラクラク運営をしています。もしパスワードの使い回しとか、公開FTPサイトに乗っけちゃったりとか、20世紀ぐらいでしか許されないようなレトロな共有サーバ運営している人がいたらオススメしたいです。
そういえば、前は自分のドメインの下で動いているように見せかけるような設定ができたはずですが、今はどうなっているんだろう?
で、買収されて何が変わったの?
容量制限がなくなりました
今までは無料で150MBぐらいだったかな?まぁ、テキスト主体ではそれでも個人レベルでは十分な量でしたが・・・今では無限大です。
プライベートリポジトリが作り放題です
今までも無料プランで1つは可能でした。今ではいくらでも作れます。本を書いたり、いろんな原稿を書いていたりすると、仲間内だけで使えるリポジトリが欲しくなりますが、これで安心です。今取り組んでいる2冊はさっそくBitbukcetに移行しました。
今まではびくびくしながら、Dropboxの中にリポジトリを作って運用とかしてましたが(複数人で同時にコミットするとリポジトリが壊れたりする)、これで安心です。
なお、現在課金対象となっているのは、プライベートリポジトリで一緒にチーム開発を行う人数です。5人までは無料です。10人までの場合は、現在1年間無料キャンペーンをしています。
(10/4補足:キャンペーンは10/3まででした。
今後は積極的に機能拡張されていく模様
開発者数が3倍になって、今後はいっぱい改良していくよ!とアナウンスがありました。今のシンプルなのも好きですけどね。Sphinxのドキュメントをアップするとビルドしてくれたりするようになるとうれしいんですけどねー
Mercurialってどうなの?
とはいっても、気になるは、使用が強制されるMercurialのこと。慣れるとSubVersionよりも簡単です。商用サポートもあるらしいです。ちなみにPythonで書かれていて、Pythonからライブラリとして色々操作することができます。Mercurialをバックエンドにして、Wikiのシステムを作ったりもできます。Python温泉系の人には「まずはimport mercurial」と言っている人もいます。変態ですね。
ただし、バージョン管理システムとしての完成度はBazaarの方が上な気はしています。SubVersionのような、中央管理っぽく動くモードを備えていたり、OS問わず、日本語ファイル名OKだったり、完成度がTortoiseSVN並に高い、WindowsのクライアントのTortiseBZRがあったり・・・もうね、MicrosoftがVisual Source Safe 7.0という名前でリリースしちゃってもいいと思うよ!というぐらいです。僕はコマンドラインで使うので、Mercurialでも別にストレスは感じませんが、やはり人に勧めたり、仕事で使うなら、Bazaarがいいかなぁ、と思ったりもします。
とはいえ、日本語の本も出ていたりしますし、日本語のドキュメントも充実しています。できるPythonプログラマーはみんな持っている?エキスパートPythonプログラミングの中でも使い方の解説があります。サーバなしで、ローカルのファイルの管理にも簡単に使えます。/etc/とか、設定ファイルがあるようなホームディレクトリなどで、$ hg initとタイプして、設定ファイル群をまとめて入れておくのとかオススメです。失敗しても戻せますしね。差分も取れるようになるし。
Mercurialが他の分散バージョン管理システムに比べて圧倒的に優れていると思う点は、タイプのしやすさ。アプリ名はMercurial(水銀/水星/神話のマーキュリー)ですが、コマンド名はhg(水銀の元素記号)。右手と左手の人差し指で1本ずつです!Emacs病やVi病を煩っている人は小指を酷使して疲れていると思うので、Mercurialがオススメです。
初出では、人差し指でなく、親指になっておりました。お詫びして訂正します。