Google謹製 ソースコードレビューシステム rietveld(オープンソース版 Mondrian)を動かしてみましょう
前回のネタの続きです。
前回では、以下のリンクを見て、ソースコードレビューソフトを入れてみました。
- 【レポート】オール・アバウト・Google Chrome - Google Developer Dayセッションレポート (2)
http://journal.mycom.co.jp/articles/2009/06/15/gdd2/001.html
Chromeの開発に使用されているツール・・・自動ビルド・自動単体テストのためにBuildbot、コードレビューのためにrietveldというツールが使用されている
今回は、実際に rietveld を入れて動かしてみます。
Google社内で使われているコードレビューシステムと同じようなソフトを手元で動かしてみるなんて、何かワクワクしますよね?
実際、下図のように、結構簡単に動かせますので、興味の沸いた方は、以下をどうぞ。
1 posted by (C)wacky
前情報
rietveld の本家は、以下にあります。
- rietveld - Google Code
http://code.google.com/p/rietveld/
このソフトがどんなものかについては、以下が参考になると思います。
- MOONGIFT: ≫ GoogleのソースレビューシステムMondrianのオープンソース版「Rietveld」:オープンソースを毎日紹介
http://www.moongift.jp/2008/05/rietveld/ - steps to phantasien t(2007-01-11)
http://www.dodgson.org/omo/t/?date=20070111 - Google 工藤拓さん講演「大規模ソフトウェア開発を支えるGoogleのテクノロジー」 - ninjinkunの日記
http://d.hatena.ne.jp/ninjinkun/20081024/1224831012
要するに、
- Google社内では、ソースコードレビューシステムに、Python作者のGuido van Rossumさんが作った、Mondrianを使っている
- このMondrianをオープンソース化したものが、rietveld である。
- rietveldは、Google App Engine上で動く。
って事です。
前準備
rietveld を動かす為に、まずは以下の環境を揃えて下さい。
1.Python 2.5
Google App Engineは、Python 2.5が必要と書いてありますので、入れましょう。
私の環境では、Python 2.5.4を入れています。
2.Google App Engine for Python
当然ながら、Google App Engine SDK for Pythonが必要です。
ちなみに、2009/7/20時点で以下の公式サイトで入手できるのは、1.2.0ですが、
実は、以下のサイト(のDownloadsページ)なら、1.2.3を入手できます。
- googleappengine - Google Code
http://code.google.com/p/googleappengine/
私は、1.2.3を入れています。(GoogleAppEngine_1.2.3.msi)
3.Django
Google App Engine SDKにもDjangoが入っているのですが、どうもバージョンが古い。(0.96?)
readmeには、1.0.2を使え。と書いてあるので、入手してインストールしてください。
- Django を体験しよう | Djangoと日本の仲間たち
http://djangoproject.jp/
私は、Django-1.0.2-final.tar.gz を入手してインストールしました。
4.rietveld
rietveldは、zipやtar形式で配布されておらず、Subversion管理されたソースコードを直接ゲットしていってね。です。
以下を参考にして、TortoiseSVNからcheckoutなりしてソースコードを入手してください。
- Source Checkout - rietveld - Google Code
http://code.google.com/p/rietveld/source/checkout
5.その他
もしかしたら、以下のソフトを入れるべきかも知れません。
- Python Imaging Library (PIL)
http://www.pythonware.com/products/pil/ - EasyInstall - The PEAK Developers' Center
http://peak.telecommunity.com/DevCenter/EasyInstall
rietveldを動かす
rietveld をローカルで動かすなら、実は上の準備を行うだけで動いてしまいます。
設定ファイルや何やらいじくり回す必要は一切ありません。(前回のあの苦労を返してくれぇ…)
rietveldをチェックアウトしたフォルダに行って、ただ「dev_appserver.py .
」を打ち込むだけでローカルの開発サーバーが起動し、早速使える状態になります。
後は、Chromeだろうが、IE(Sleipnir)だろうが動きます。(多分、FireFoxでも動くでしょう)
IEは動きません(動かしません)といった、意地悪は一切無しです。うひょー。
Chromeで動かしている様子:
2 posted by (C)wacky
IE(Sleipnir)で動かしている様子:
3 posted by (C)wacky
ちなみに使い方なんですが、おおよそ以下の感じに進めるようです。
1.コードレビューを受けたい人は、メインラインのコードと、自分が作ったコードの差分を作る。
svnを使っているなら、自分の作ったコードの差分を'svn diff ほげほげ
'という風にして作成する。
例えば、下図のindex.yaml というファイルの差分を取得しようとする場合、
4 posted by (C)wacky
以下のようにします。
$ svn diff index.yaml > index.yaml.diff
2.左上の「Issues」の下の「Create Issue」をクリックします。
5 posted by (C)wacky
次に、「Go to the Create Issue Form」ボタンをクリックし、以下のページに遷移します。
ここで、ソースコードレビューを受けるファイルを以下のように指定します。
- 「Subject」と「Description」に、件名とコードの解説を入れる
- 「SVN base」を「[See Base]」とし、「Base:」欄に、1.のメインラインのコードのリポジトリのトップURLを入力
- 「Data」に1.で作った差分ファイル(index.yaml.diff)を指定
入力したら、「Create Issue」ボタンを押す。
すると、次のように、ソースコードレビューを受けるページが登録されます。
7 posted by (C)wacky
3.上のページで、左上の方にある「Start Review」をクリックすると、ソースコードレビューの開始です。
8 posted by (C)wacky
rietveld の内部では、http経由で元コードを取得し、登録されたdiffコードを元に、左右のペインに差分情報を表記していくれているようです。
コメントの付加は、気付いた所のコード位置でダブルクリックする事で、以下の入力画面が出て来ます。
9 posted by (C)wacky
入力して保存すると、以下のようにコメントがコードに付加されて表示されるようになります。
10 posted by (C)wacky
Subversionの他に、Git、Mercurialをサポートしている?(未確認)
「Create Issue」を開始した時、以下の画面が出てきて、Webフォーム以外に upload.py スクリプトを使って、レビューの受付が出来るよ。
とメッセージが出て来ます。
11 posted by (C)wacky
ここに、サポートしているバージョン管理システムとして、以下の3種類が列挙されています。
- Subversion
- Git
- Mercurial
確かに、コード(upload.py)を見ると、上記をサポートしているようです。hgやgitを呼び出している箇所がありました。
69:# Constants for version control names. Used by GuessVCSName. 70:VCS_GIT = "Git" 71:VCS_MERCURIAL = "Mercurial" 72:VCS_SUBVERSION = "Subversion" 73:VCS_UNKNOWN = "Unknown"
メールの送信(未確認)
ソースコードレビューを依頼する際、メールを自動的に送信する機能が搭載されているようです。
この機能を動かすには、以下の条件を満たす必要があるようです。
- サーバーを動かす時、'
--enable_sendmail
'を指定する - sendmailコマンドが使えるようにする
まとめ
恒例のまとめです。
- インストールが非常に簡単です。
設定ファイルも無しで動くのは、感動すら覚えます。(面倒な設定を必要とする、Unix系が異常なんでしょうけど) - 開発サーバー(dev_appserver.py)を使う事で、ローカル環境でシステムを動かす事が出来ます。
最初、Googleにアップロードして使わざるを得ないのかと思っていましたが、とりあえず使えちゃいます。 - Windows上で動かせます。
というか、今回は終始Windows上で作業しています。Python上でサーバーを動かしているので、当然と言えば当然ですね。 - 開発サーバー上でも十分な速度が出ます。
手元のP4な数世代前の型落ちマシンでも十分な表示速度です。 - ユーザーインタフェースはGoogle風で使いやすいです。
ごちゃごちゃしていないし、入力補完は効くし、入力エリアを簡単に広げられるし、便利です。
という訳で、あまりのインストールの簡単さに、他のコードレビューシステムをいじる気がしなくなってきました。
ちなみに、rietveld をチェックアウトすると判るんですが、思ったよりコード(ファイル数)が少ないんですよね。
たったの19ファイルで構成されているのは、びっくりです。(まぁ、Google App EngineやDjangoフレームワークの力なんでしょうけど)