この環境を導入したきっかけは、転勤で勤務地が変わったことである。
これまで、東京でチームを組んでソフトウェア開発をしており、その仕事を引き続き仙台で行うことになったが、今までの開発プロセスだと不都合が出始めた。
タスクカードを使った「かんばん方式」とスクラムをベースにした開発プロセスを組み合わせて使っているのだが、物理的に開発拠点が分離してしまい、タスクカードが使いにくくなってしまったのである。
いいタイミングなので、周囲の評価が高いので試してみようと構築していたtracにバーンダウンチャートのプラグインを導入して、全面的に移行することにしたという訳だ。
tracにTracBurndownプラグインを導入すると、どうなるのかを簡単に説明しておく。
まず、メニューバーにBilling And EstimationとBurndownという項目が追加される。
このBurndownをクリックすると次のようにバーンダウンチャートが表示される。
また、工数を入力するところはチケットの詳細ページに追加される。
チケットを登録するときにEstimated Hours?に見積もり時間を入力する。後は、1日ごとに実際にかかった工数をHours to Addに入力していくと、Total Hoursに加算される。このデータがバーンダウンチャートに反映されていくことになる。
実際に使ってみての印象だが、スクラムをベースに開発をしているなら、かなり使いやすいのではないだろうか。
特にExcelでバックログとバーンダウンチャートを管理していたときは、タスクカードの状態をバックログに反映するのが手間だったのだが、tracに移行してからは自動化されたので助かった。
もともとtrac自体が非常に使いやすいし、動作も安定しているようなので、trac + TracBurndownプラグインの環境はおすすめである。
構築したときに手順をメモしたので、ここで公開しておく。
私の場合、tracの環境はDebian sargeがインストールしてあるサーバで、ここで説明している手順の中にはDebian特有のものもあるので注意してほしい。
tracを更新する
古いバージョンのtracでは、この後必要になるTiming And Estimationプラグインが動かないためtracのバージョンを0.10b1に更新する。
$ wget http://ftp.edgewall.com/pub/trac/trac-0.10b1.tar.gz
$ tar zxvf trac-0.10b1.tar.gz
$ cd trac-0.10b1
$ python setup.py install --force
更新後、tracのページにアクセスするとエラーメッセージが出るはず。
Available Projects
* プロジェクト名: Error
(The Trac Environment needs to be upgraded. Run trac-admin プロジェクトのパス upgrade")
メッセージのとおりにtrac-adminを使って環境を更新する。
$ trac-admin プロジェクトのパス upgrade
python-setuptoolsを入れ替える
Debian sargeに入っているpython-setuptoolsだと、WebAdminプラグインなどを正常にインストールできないようなので、python-setuptoolsを入れ替える。
まず、インストール済みのpython-setuptoolsを削除する。
$ apt-get remove python2.3-setuptools
新しいsetuptoolsをダウンロードしてインストールする。
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
WebAdminプラグインをインストールする
WebAdminプラグインは、trac-adminの機能をブラウザから操作出来るようにするtracプラグインで、これをインストールしておくと、後の作業が楽になる。
WebAdminプラグインをwgetなどを使ってダウンロードする。
$ wget http://trac.edgewall.org/attachment/wiki/WebAdmin/TracWebAdmin-0.1.1dev_r2765-py2.3.egg.zip?format=raw
$ mv TracWebAdmin-0.1.1dev_r2765-py2.3.egg.zip\?format\=raw TracWebAdmin-0.1.1dev_r2765-py2.3.egg
eggをpythonのsite-packagesディレクトリにコピーする。
$ cp TracWebAdmin-0.1.1dev_r2765-py2.3.egg /usr/lib/python2.3/site-packages/
tracプラグインを有効にするため、trac.iniに以下を追記する。
[components]
webadmin.* = enabled
後は、WebAdminを利用したいユーザにWebAdminのパーミッションを次のように追加する。
$ trac-admin プロジェクトのパス permission add ユーザ名 TRAC_ADMIN
これで、パーミッションを持ったユーザでアクセスすると、メニューバーに「Admin」が追加されているので、クリックすると管理画面が表示される。
Timing And Estimationプラグインを導入する
Timing And Estimationプラグインは、tracのチケットに見積もり時間と実績時間などを追加するtracプラグインで、TracBurndownプラグインで利用する。
$ unzip timingandestimationplugin.zip
$ cd timingandestimationplugin
$ python setup.py install
後は、WebAdminの管理画面でプラグインを有効にすればいい。
TracBurndownプラグインを導入する
TracBurndownプラグインは、tracにバーンダウンチャートを表示する機能を追加するtracプラグインで、今回の目的はこれである。
TracBurndown-01.00.10-py2.3.eggをダウンロードしてpythonのsite-packagesディレクトリにコピーする。
$ cp TracBurndown-01.00.10-py2.3.egg /usr/lib/python2.3/site-packages/
Timing And Estimationプラグインと同様に、WebAdminの管理画面からTracBurndownプラグインの機能にチェックを付けて有効にする。
後は、TracBurndownプラグインを利用するユーザにパーミッションを追加すれば、TracBurndownプラグイン自体のインストールは完了である。
参照だけのユーザにはBURNDOWN_VIEW、管理ユーザにはBURNDOWN_ADMINを追加すればいい。
パーミッションはWebAdminで追加することができる。
Subjectにユーザ名を入力して、Actionから追加するパーミッションの種類を選べばいい。
WebAdminを使わずにコンソールからtrac-adminで設定する場合には、次のようにする。
$ trac-admin プロジェクトのパス permission add ユーザ名 BURNDOWN_VIEW
$ trac-admin プロジェクトのパス permission add ユーザ名 BURNDOWN_ADMIN
cronを設定する
実はこれだけだとバーンダウンチャートが更新されない。cronなどを利用して更新するためのスクリプトを定期的に実行する必要がある。
※最新版では、cronの設定は不要になっているとのこと。コメントありがとうございます。>Yuito Kanzakiさん
バーンダウンチャートを更新するスクリプトをpythonで実行可能なディレクトリにコピーしておく。
$ cp burndown_job.py /usr/lib/python2.3/
次に、cronから実行するスクリプトを用意する。ここでは一日一回、更新されるようにcron.dailyにスクリプトを記述する。
$ emacs /etc/cron.daily/trac
#!/bin/sh
/usr/bin/python /usr/lib/python2.3/burndown_job.py プロジェクトのパス
実行権限を付けるのを忘れずに。
$ chmod 755 /etc/cron.daily/trac
これでtrac + TracBurndownプラグインの環境構築は完了である。興味のある方はぜひ試してみてほしい。