共同開発を効率よく行う方法
尾藤正人です。
ウノウではおかげさまで順調にエンジニアの数が増えてきました。エンジニアが増えてくると、共同開発をいかに効率よく行うかが問題になってきます。n人の開発者がいれば開発スピードはn倍にはならず、n倍よりも落ちます。人数が多ければ多いほど、共同開発は難しくなり、ひどい場合には人数が増えたから開発スピードが落ちたということになりかねません。
ウノウでは共同開発を効率よく行うために様々な工夫を用いています。今回はウノウでどのようなステップで開発を行っているか紹介したいと思います。
subversion でソースコードを管理
ソースコード管理ソフトがなくては話になりません。ウノウではソースコードの管理に subversion を使ってます。subversion を使うことで過去の状態に簡単に戻すことができますし、個人の環境を完全に分離することができます。
subversion のコミットログをMLに流す
subversion のコミットの差分をMLに流すようにしています。コミットログのMLには開発者全員がsubscribeします。誰が何をコミットしたのかすぐ分かるので、開発がどのように進んでいるのか把握できて便利です。
開発者個人に独立したバーチャルドメインを設定
各開発者ごとに独立したバーチャルドメインを与えて、完全に独立した環境で開発を行います。他の開発者による影響が全くないので、自分の案件に集中して開発を行うことができます。
最新版を確認できるテスト環境を用意
subversion にコミットが行われるとテスト環境の方に自動的に反映されるようになります。案件が終わると我らがテスト番長が確認してくれるようになっています。
案件は全てBTSで管理する
ウノウでは案件管理に影舞を使用しています。シンプルで分かり易く便利です。以前 trac を導入しようとしたのですが、テスト待ち状態がなくて断念しました。テスターのいる環境ではテスト待ちにできないと意味がないので。
テスト番長が入念にチェック
開発主体の企業でもテスト専門のテスターがいるところは少ないんじゃないでしょうか。ウノウではテスト番長が終了案件を入念にチェックしてくれます。まず開発環境でテスト、本番環境にアップデートしてもう1回テスト。この段階を経て案件が完全にクローズされるようになってます。
開発サーバのファイルはsambaで共有
開発サーバのホームディレクトリはsambaで共有できるようにしています。僕は個人的には vim しか使わないので全然問題ないのですが、エディタは開発者にとっては重要なツールなので慣れてるものを使ってもらいたい。sambaでファイルを共有すれば、クライアントで好きなエディタを使って効率よく開発してもらうことができます。
情報はwikiで共有
細かい情報は全部wikiで共有。ウノウでは事務員さんもwiki使ってます。
本番環境へのアップデートは subversion で
本番環境へのアップデートは svn update するだけ。アップデート後はもちろんテスト番長によるテストを行います。エラーがあった場合にメールが飛ぶようになっているので、何か問題があった場合には過去の状態に戻します。subversion を使うとリビジョンを指定してアップデートすることができるので、いつでも元の状態に戻すことができます。
まとめ
アジャイルな開発には効率のよい共同開発方法が必要不可欠です。上記のような手法はたとえ共同開発でなくて個人で開発していても役にたつと思います。
他にもいい方法があれば、ぜひ教えていただきたいと思います。

コメント
tracのチケット状態はいくらでも追加できますよ。
投稿者: 通りすがり | 2006年8月23日 17:27
Trac のチケットの状態の (値の) 変更は本体 (ソース) の改変が必要なので少々面倒だと思います。
http://trac.edgewall.org/changeset/2846
これって本体に取り込んでも良い機能だと思うんですけどね...
影舞も良いツールですが、Subversion と連携できる Trac は一度使うと止められません。
投稿者: やまざき | 2006年8月23日 17:51
ソースコードを改変しないといけないというのが断念した理由です。python 使いがいなかった(今はいますが)ので、メンテナンスできるかどうかも分からないので。
subversion との連携は魅力的ですよね。プライベートでは trac 使おうと思ってます。
投稿者: masato | 2006年8月23日 18:24
TracWebAdminプラグインを組み込めばブラウザから管理可能ですよ。
投稿者: 通りすがり | 2006年8月23日 18:46
そのようなプラグインがあったんですね。知りませんでした。今度よく調べてみます。
投稿者: masato | 2006年8月23日 19:01
PHPベースのmantisがオススメですよ~
Subversionとの連携も出来るし設定もかなり細かくできますし。(ただしコードの改変は必要かも)
投稿者: Anonymous | 2006年8月24日 20:05
ありがとうございます。
mantis も検討しようという話になってました。
結局は現状の影舞で問題ないので、そのままいこうという話になりました。
投稿者: masato | 2006年8月24日 20:47