Gerritを約1年運用してみて

Gerritを利用して拙作のLhazをオープンソース化してから,1年が過ぎようとしています。ここで,Gerritの良い点,悪い点をまとめます。GitHubやSourceForgeを使用した経験はないので,他の開発プラットフォームと比較した結果ではありません。運用中のレビューサイトはこちらになります。

良い点

gitが身についた

Gerritはgitベースですので,gitの使い方が身につきました。add, commitなどの基本的なコマンドはgitのみの運用でも身につくかと思いますが,Gerritではpushやコンフリクトの解決にrebaseが必要だったりして,やや進んだ使い方が身につきます。また,Lhazの開発では,zlib等の外部ライブラリを使用しており,mergeも使ったりしました。

ブランチがGerrit上で可視化されるのも良いと思います。具体的には,zlib等をmasterブランチ,lhazブランチと分けて,開発元の更新はmaster,自分で手を加えた部分はlhaz,でトラッキングしていますが,このような感じで流れが分かります。

コラボレーション

Gerritでは複数人で開発を進めていきますが,コードレビューしたりされたりで,人の書いたコードをじっくり見ることができ,たいへん参考になります。2ペインで左に更新前,右に更新後,と差分が見やすいのも気に入っています。自分のレビュースタイルは,動いてるならいいんじゃない?,といったあっさりしたものですが,1ライン単位でレビューコメントを記載できるので,ネチネチ派?の方も使い出があるのではと思います。

Lhaz開発メンバーから文字列クラスのリノベーションをご提案頂き,1プロジェクトとしてインテグレートさせて頂いたのですが,自分には馴染みの少ないテンプレートが駆使されているC++らしいコードで,とても勉強になりました。

仕事(Androidスマートフォン開発)でもGerritを使用していますが,コミットのアップロードやマージがあった際にメールで通知を受けることができるので,相当広い範囲に目を配ることができます。

モチベーション

Gerritにpushして,レビューして,+1 Verified,+2 Looks good to me, approved,のスコアがついた後,「Submit Patch Set」というボタンを押して,変更がブランチにマージされます。この瞬間,小さな達成感があり,気持ちよいです。早く次の変更を入れたくなるので,開発が継続していきます。

そして,過去のコミットを振り返ると,開発の歴史そのものですので,「よくがんばったな」「続けていこう」という気になれます。この辺りは特にGerrit固有ということはないですが。

悪い点

とっつきにくい?

こちらのWikiにてLhazの開発参加方法を説明していますが,自分で見ても始めるのが面倒くさそうです(実際はそうでもないと思いますが…)。Lhazでこれまでコミット頂けたのもまだ4名の方で,あまり気軽にトライできないのかな,と思われます。

また,GitHubのように自分で試せる公開Gerritサーバといったものはないので,自分でサーバを用意してGerritをインストールしていくのも,ひと手間いります。 review.chitora.com でホスティングすることも可能ですので,使ってみたい方はご連絡ください。

 コードレビュー専用

Gerritは純粋なコードレビューツールですので,設計に使用することは難しいです(全てテキストファイルで設計すれば可能かもしれませんが)。また,タスク管理やプロジェクト管理,バグ管理もできません。この辺りは,SourceForge等の方が強いと思います。Lhaz開発では,別途Redmineを使用して,それらの管理を行っています。逆に,コードレビュー専用だけに,セットアップさえ済めば,運用上はボタンを押すだけのシンプルさ,とも言えるかもしれません。