君は Review Board を知っているか
Review Board というwebコードレビューツールがあります。
特徴として、コードレビューに特化して必要十分の機能をコンパクトに提供しています。
Review Boardではコードの差分を投稿するとリクエストとして扱われ、リクエストに対してコメント、コード差分上に指摘を入れていく形になっています。また、差分そのものを後から登録する事で、差分の世代管理・比較もできるようになっています。
デモサイトで実際に動いてる内容が見れます。
現在、Gitとこれを組み合わせてレビュー環境として利用しています。
導入手順
CentOSを想定します。あとApacheとMySQLも入っている想定です。
バージョンが一世代古い時の内容なので、今は勝手が違うかも・・・
1. yumでインストール
yum install ReviewBoard
2. MySQLの準備
DBの文字コードをutf-8に設定しておけば日本語が使えます。
設定後はmysqlのリスタートが必要。
[mysql]
default-character-set=utf8
[mysqld]
character-set-server = utf8
公式の手順にはないですが、事前にDB管理用のユーザ、スキーマの作成が必要でした。
# mysql
mysql> CREATE DATABASE reviewboard;
mysql> GRANT ALL ON reviewboard.* TO reviewboard@localhost;
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR reviewboard@localhost=password('reviewboard');
mysql> exit
3. Review Board 初期化
rb-site install /var/www/reviewboard
基本的に指示に従えばいいです。DBは先ほど作成した物を指定。
memcacheの選択肢が出てくると思いますが、入れていなくても動きます。数人で使う程度であれば、パフォーマンス上も問題は出ていません。
4. Apache設定
3.で作成したサイトにアクセスしたら諸々設定をするよう出ると思われます。
自分が必要だったのは以下のとおり
権限付与
# chown -R apache:apache /var/www/reviewboard/
生成されたファイルを配置
# cp /var/www/reviewboard/conf/apache-wsgi.conf /etc/httpd/conf.d/apache-reviewboard.conf
httpdリスタート
5. 初期設定
これでとりあえず動くところまでは来たと思います。後はadminでログインしてリポジトリを追加したり色々することになります。
自分がした設定は以下のとおり
- Generalから Time Zone を Asia/Tokyo に変更
- Emailから Send e-mails for review requests and reviews にチェック、Senderを設定
- Loggingから /var/www/reviewboard/logs に Error で出力するよう設定
- グループにITメンバー用のMLを追加
- SSHから Gitリポジトリアクセス用のSSH秘密鍵を登録
6. Gitとの連携
GitリポジトリごとにReviewBoardにリポジトリ登録をして、差分を取ってこれるようにする形です。
リポジトリ登録はGithubとかも指定できる……らしい。ローカルのリポジトリも指定できます。Review Boardが接続するときに使う鍵は、前述のとおり管理画面から登録できます。
開発しているGitリポジトリのリモートのURLと、Review Boardに登録しているリポジトリのPath かMirror Path が同じでないとうまく動かないと思われます。gitwebが入っていればリモートアクセスできるんですが、今の環境だとReview Boardのサーバにミラーを置いてそれを見る形にしています。
使用しての雑感
利点
- コードレビューツールとしては申し分ない
- UIが作りこまれている(状態更新の通知など)
- レビューが独立しているため自由度が高い
欠点
- リポジトリ登録がめんどくさい
- 差分の登録がめんどくさい
- 他のシステムと連動させられない
- 英語表記
- 日本語のドキュメントがない
まとめ
コードレビューツールとして完全に独立しているので自由度が高く、入れることでめんどくさくなる事はないけど、面倒見るのがめんどくさいという感じでしょうか。
ワークフローを新規構築し、github、bitbucket、ローカルでgerritやgitlabなどを使ってやるのであればそれで良いのではないかと思います。あとはGitに縛られないので、アイデア次第で色々使い道があるかもしれません。
- 運用が軌道に乗った状態を活かしつつ、レビューをツールをつかって効率化する。
- レガシーな環境で、自分のPCに入れて小さく始めてみる。
なんて用途にはうってつけの、小回りの効く良いツールではないかと思います。