Trac+SubversionのようにJIRA+Gitで作業時間を記録する

エアーズではこれまでプロジェクト管理ツールとしてTracとそのScrumプラグインの Agilo を使っていたのですが、今年の春から Atlassian社のJIRAGreenHopper も使い始めました。

理由はAtlassian社のツールの方が操作が軽快で機能も優れていたこと、10ユーザー以下であれば各ツールのライセンスをわずか1,000円で購入できる スターターライセンス を利用できたことなどからです。JIRAとGreenHopper以外に、 ConfluenceBambooFishEyeCrowd も導入済みです。

現在は、お客様のプロジェクトはTrac(Agilo無し)、社内プロジェクトはJIRA+GreenHopperを使って管理しています。

今回やりたいコト

Tracでは Timing and Estimation Plugin というプラグインとSubversionのフックスクリプトを使って、コミットメッセージに特定の書式を含めると自動的に作業時間を記録できるようにしています。

例えば、チケットNo.3で1時間半の作業をしたら、以下のようにコミットすることで該当するチケットに作業時間が追加されます。

% svn commit -m "refs #3 (1.5) テストデータを追加"

これと同じような機能をJIRAで探してみましたが無いようでしたし、Gitを使ってローカルコミットのタイミングでこまめに作業を記録したかったので、カスタムスクリプトを作成して対応することにしました。

具体的には、例えばDragonプロジェクト(キー:DRA)のチケットNo.3で30分の作業をしたら、以下のようにコミットすることで該当するチケットに作業時間が追加されるようにします。

% git commit -a -m "DRA-3 (.5) テストデータを追加"

jira4rのインストール

今回のカスタムスクリプトはRubyで作成しました。JIRAのSOAPサービスのドライバであるjira4rが必要になりますので、あらかじめgemでインストールしておきます。

% gem install jira4r

JIRAのSOAPサービスはデフォルトで有効になっているのでJIRA側で特別な設定は必要ありませんでした。JIRAのSOAPサービスやjira4rの使い方については以下のドキュメントが参考になります。

git configにJIRA連携用の設定を追加

次にgit configにJIRA連携用の設定を追加します。JIRAでは複数プロジェクトを管理できるので、URLとユーザー名とパスワードはグローバルに設定できます。

% git config --global jira.url https://www.example.com/jira/ # JIRAサイトのURL
% git config --global jira.user kato # JIRAユーザー名
% git config --global jira.pass foobarbaz # JIRAログインパスワード

各プロジェクトのリポジトリでは、プロジェクトのキーの設定を追加するだけです。

% git config jira.project DRA # JIRAプロジェクトのキー

JIRA連携用のRubyスクリプトの作成と配置

JIRA連携用のRubyスクリプトを作成し適当なディレクトリに配置します。このスクリプトはどのプロジェクトでも共通で使用できるのでプロジェクト毎には必要ありません。僕はパスが通してある $HOME/bin に実行権限付きで置いています。

作成した後に気づいたんですが、 Grit のようなRubyからGitリポジトリを操作できるライブラリがいくつかあるので、それらを利用した方がスマートでしたね。今回は取りあえずgitコマンドを呼び出した結果を読み込んで処理しています。

プロジェクトのpost-commitフックに連携用スクリプトの呼び出しを追加

最後にプロジェクトのpost-commitフックに連携用スクリプトの呼び出しを追加します。

#!/bin/sh
# /path/to/project/.git/hooks/post-commit
# An hook script that is called after a successful commit is made.
...
# Add worklog to JIRA project.
$HOME/bin/git-jira-post-commit.rb

連携がうまくいっていれば、以下のようにコミットと同時にJIRAに作業ログが追加されます。

まとめ

今回の作業で、jira4rを使えば(インターフェイスはイマイチだけど)Rubyから簡単にJIRAのデータを操作できることがわかりました。レポートの作成にも使えそうなので、今後はお客様にも提案していきたいです。

あとJIRAはインストールやアップデートが結構面倒なのですが、それらがネックになる場合はGoogle Appsと連携できる JIRA Studio というホスティングサービスがあるので、予算があえばそれを使うのも良いと思います。

製品紹介を見る限りとても魅力的な製品で、エアーズでも有料版のGoogle Appsを使っているのでぜひ導入したいと思ったのですが、購入単位が5users、10usersと5人単位だったので断念しました。

1ユーザーあたり月額$25は高いとは思いませんが、うちのような小さな会社では取りあえず2、3人で使うため利用料が半分ぐらい無駄になるのは勿体無いので、1ユーザー単位でも購入できるようになったら検討してみたいと思います。

オススメ書籍


アジャイルな見積りと計画づくり <価値あるソフトウェアを育てる概念と技法>
JIRA+GreenHopperを使ったプロジェクト管理をおこなうならマストな1冊。
ただただしさんのAmazonレビューが秀逸。


Bookmark and Share