ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

Google謹製 ソースコードレビューシステム rietveld(オープンソース版 Mondrian)を動かしてみましょう

前回のネタの続きです。
前回では、以下のリンクを見て、ソースコードレビューソフトを入れてみました。

Chromeの開発に使用されているツール・・・自動ビルド・自動単体テストのためにBuildbot、コードレビューのためにrietveldというツールが使用されている

今回は、実際に rietveld を入れて動かしてみます。


Google社内で使われているコードレビューシステムと同じようなソフトを手元で動かしてみるなんて、何かワクワクしますよね?
実際、下図のように、結構簡単に動かせますので、興味の沸いた方は、以下をどうぞ。
1
1 posted by (C)wacky

前情報

rietveld の本家は、以下にあります。


このソフトがどんなものかについては、以下が参考になると思います。


要するに、

って事です。

前準備

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を入手できます。

私は、1.2.3を入れています。(GoogleAppEngine_1.2.3.msi)


3.Django
Google App Engine SDKにもDjangoが入っているのですが、どうもバージョンが古い。(0.96?)
readmeには、1.0.2を使え。と書いてあるので、入手してインストールしてください。

私は、Django-1.0.2-final.tar.gz を入手してインストールしました。


4.rietveld
rietveldは、zipやtar形式で配布されておらず、Subversion管理されたソースコードを直接ゲットしていってね。です。

以下を参考にして、TortoiseSVNからcheckoutなりしてソースコードを入手してください。


5.その他
もしかしたら、以下のソフトを入れるべきかも知れません。

rietveldを動かす

rietveld をローカルで動かすなら、実は上の準備を行うだけで動いてしまいます。
設定ファイルや何やらいじくり回す必要は一切ありません。(前回のあの苦労を返してくれぇ…)


rietveldをチェックアウトしたフォルダに行って、ただ「dev_appserver.py .」を打ち込むだけでローカルの開発サーバーが起動し、早速使える状態になります。
後は、Chromeだろうが、IE(Sleipnir)だろうが動きます。(多分、FireFoxでも動くでしょう)
IEは動きません(動かしません)といった、意地悪は一切無しです。うひょー。

Chromeで動かしている様子:
2
2 posted by (C)wacky
IE(Sleipnir)で動かしている様子:
3
3 posted by (C)wacky


ちなみに使い方なんですが、おおよそ以下の感じに進めるようです。


1.コードレビューを受けたい人は、メインラインのコードと、自分が作ったコードの差分を作る。
svnを使っているなら、自分の作ったコードの差分を'svn diff ほげほげ'という風にして作成する。


例えば、下図のindex.yaml というファイルの差分を取得しようとする場合、
4
4 posted by (C)wacky

以下のようにします。

$ svn diff index.yaml > index.yaml.diff


2.左上の「Issues」の下の「Create Issue」をクリックします。
5
5 posted by (C)wacky

次に、「Go to the Create Issue Form」ボタンをクリックし、以下のページに遷移します。
ここで、ソースコードレビューを受けるファイルを以下のように指定します。

  1. 「Subject」と「Description」に、件名とコードの解説を入れる
  2. SVN base」を「[See Base]」とし、「Base:」欄に、1.のメインラインのコードのリポジトリのトップURLを入力
  3. 「Data」に1.で作った差分ファイル(index.yaml.diff)を指定

6
6 posted by (C)wacky

入力したら、「Create Issue」ボタンを押す。
すると、次のように、ソースコードレビューを受けるページが登録されます。
7
7 posted by (C)wacky


3.上のページで、左上の方にある「Start Review」をクリックすると、ソースコードレビューの開始です。
8
8 posted by (C)wacky
rietveld の内部では、http経由で元コードを取得し、登録されたdiffコードを元に、左右のペインに差分情報を表記していくれているようです。


コメントの付加は、気付いた所のコード位置でダブルクリックする事で、以下の入力画面が出て来ます。
9
9 posted by (C)wacky

入力して保存すると、以下のようにコメントがコードに付加されて表示されるようになります。
10
10 posted by (C)wacky

Subversionの他に、Git、Mercurialをサポートしている?(未確認)

「Create Issue」を開始した時、以下の画面が出てきて、Webフォーム以外に upload.py スクリプトを使って、レビューの受付が出来るよ。
とメッセージが出て来ます。
11
11 posted by (C)wacky


ここに、サポートしているバージョン管理システムとして、以下の3種類が列挙されています。


確かに、コード(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"

メールの送信(未確認)

ソースコードレビューを依頼する際、メールを自動的に送信する機能が搭載されているようです。
この機能を動かすには、以下の条件を満たす必要があるようです。

  1. サーバーを動かす時、'--enable_sendmail'を指定する
  2. sendmailコマンドが使えるようにする

Cygwinをぶち込むか、コードをいじれば、Windows上でも簡単に動かせそうです。

まとめ

恒例のまとめです。

  • インストールが非常に簡単です。
    設定ファイルも無しで動くのは、感動すら覚えます。(面倒な設定を必要とする、Unix系が異常なんでしょうけど)
  • 開発サーバー(dev_appserver.py)を使う事で、ローカル環境でシステムを動かす事が出来ます。
    最初、Googleにアップロードして使わざるを得ないのかと思っていましたが、とりあえず使えちゃいます。
  • Windows上で動かせます。
    というか、今回は終始Windows上で作業しています。Python上でサーバーを動かしているので、当然と言えば当然ですね。
  • 開発サーバー上でも十分な速度が出ます。
    手元のP4な数世代前の型落ちマシンでも十分な表示速度です。
  • ユーザーインタフェースはGoogle風で使いやすいです。
    ごちゃごちゃしていないし、入力補完は効くし、入力エリアを簡単に広げられるし、便利です。


という訳で、あまりのインストールの簡単さに、他のコードレビューシステムをいじる気がしなくなってきました。


ちなみに、rietveld をチェックアウトすると判るんですが、思ったよりコード(ファイル数)が少ないんですよね。
たったの19ファイルで構成されているのは、びっくりです。(まぁ、Google App EngineDjangoフレームワークの力なんでしょうけど)