MS Project と Redmineの連携
MS Project と Redmine を連携させてみた
はじめに
プロジェクトの管理をしなければならなくなった。
これまでは一開発者だったんだけど、プロジェクトの同時進行が増えてきたために、ついにそのお役が回ってきてしまった感じ。
まぁいい機会なので頑張ってみようと思う。
で、Redmineは高機能だけど、プロジェクト管理には痒いところに手が届かない感がある。
プラグインもいろいろあるけど、なかなかうまく動いてくれなかったり、自動計算とかはあんまりやってくれないし。
ということで、MS Projectと連携させてみることにした。
方法
まずMS ProjectでWBSを作った。
バージョンを工程とし、詳細設計、製造/単体試験に分けて、さらに機能毎などタスクに落としこむ。
一通りタスクが出来上がったらExcelに貼っつけてRedmineにインポートする。
CSVとかでやってもいいけど、今回はこの便利ツールを使った。
Redmineチケット★一括★の詳細情報 : Vector ソフトを探す!
で、登録されたチケットのIDをMS Project側にも書いておく。
(そういう意味でも上記ツールが楽)
MS Project側はマクロを設定し、REST API経由でチケットの情報を取得してくるように設定。
取得した情報は適宜MS Project側に貼り付けていく。
自分が取得しているのはとりあえず作業時間とトラッカーとステータスくらい。
まだ他にも必要になるかも。
運用
運用イメージはこんな感じ。
こうすると、作業管理はRedmineでやりつつプロジェクトの状況を可視化したいときはMS Projectから素敵レポートを出力することができる。
とはいえ、MS Projectの使い方自体を勉強中なのでこれでうまくいくのかは未知数。
情報取込のマクロはこんな感じ。
拾い物を切り貼りしたやっつけです
Const API = "http://server/redmine/" Const Key = "key=aaaaabbbbbccccc1234567890123457890" ' ################################################################### ' # ' # Redmineから情報を取得する。 ' # ' # チケット番号が入力されたタスクを、Redmineの情報で更新する ' # チケット番号が入力されていないタスクは無視される ' # ' ################################################################### Sub ImportRedmineData() Dim prj As Project Set prj = ThisProject Dim tsk As Task Dim ticket As Object ' すべてのタスクを対象に動かす For Each tsk In prj.Tasks ' チケット番号が入力されている場合 If tsk.Text1 <> "" Then Set ticket = GetXmlData(API + "issues/" + tsk.Text1 + ".xml?" + Key) '説明 tsk.Text6 = ticket.getElementsByTagName("description").Item(0).text 'トラッカー tsk.Text2 = ticket.getElementsByTagName("tracker").Item(0).getAttribute("name") 'ステータス tsk.Text4 = ticket.getElementsByTagName("status").Item(0).getAttribute("name") 'トラッカー tsk.ActualWork = ticket.getElementsByTagName("spent_hours").Item(0).text If ticket.getElementsByTagName("parent").Length > 0 Then tsk.Text5 = ticket.getElementsByTagName("parent").Item(0).getAttribute("id") End If End If Next End Sub