こんにちは、技術研究所(通称:技研)のむらたんです。

 

以前のエントリーで開発技術SIGの2つの取組みを紹介しましたが、今回のエントリーでは、そのうちの「プロジェクト管理基盤の標準化」の具体的な取り組みを紹介したいと思います。

まずは、前段として、簡単に弊社の事業領域を紹介します。
弊社は金融系、産業系、組み込み系、インフラ系、先端技術系の事業領域で、請負開発、技術支援、技術者派遣など、様々なエンジニアリングサービスを提供しており、事業横断的に開発手法を標準化することや汎用的な開発支援ツールを導入することが難しい業態です。
また、プロジェクトマネジメントに関しては、プロジェクトマネージャーに対して、Project Management Professional(PMP)の資格取得を義務付け、PMBOKの考え方に則ったマネジメントが行われていますが、標準化されているのは「考え方」だけなので、実務はプロジェクトマネージャに依存しています。

そこで、プロジェクト管理に必要となるツール群を標準化して提供してしまおうという発想の元で、「プロジェクト管理基盤の標準化」というタスクを立ち上げています。
概要については、「開発技術SIGの活動について」のエントリーをご覧ください。

「プロジェクト管理基盤の標準化」としては、標準化されたプロジェクト管理サーバを配布するところまでがスコープでしたが、
「何を配布するのか」を検討していく中で、弊社の品質管理部門からIPAがGPL v3ライセンスとして「定量的プロジェクト管理ツール(通称:EPM-X)」というツールを提供しているとの情報を入手しました。

こちらは、Redmine or Trac+SVN or Git+Pentaho+Eclipse BIRTというソフトウェア構成で
プロジェクト活動から発生するデータを自動収集・集計し、グラフやレポートを生成する機能を持っています。
ただ、残念なことにIPAによるメンテナンス更新が止まっており、上述のソフトウェアも古いバージョンが利用されています。
例えば、Redmineのバージョンは1.2.1が採用されており、不具合や脆弱性の残存、有用なプラグインが対応していないといった課題があります。

そこで、各プロジェクトでは最新のRedmineを利用してプロジェクト管理を行い、プロジェクト活動から発生したデータをEPM-Xに連携して、EPM-Xで集計・分析・レポーティングが実現できれば幸せになれそうなので、その実現に向けて試行錯誤しております。
データの連携方法はいくつかありますが、プロジェクト側に作業負荷のかからない「全自動」で「リアルタイム」な情報連携を実現するため、プロジェクト側のRedmineにチケットの作成・更新をフックして、EPM-X側のRedmineをREST APIで連携するプラグインとして実装することにしました。

導入した環境

【EPM-Xサーバ】※RedmineのAPIが呼ばれるサーバ
– OS:Windows 2008 R2
– Redmine:1.2.1
– Ruby:1.8.7
– Rails:2.3.11
– PostgreSQL:8.4.9

【プロジェクト管理サーバ】※RedmineプラグインでRedmineを呼ぶサーバ
– OS:Amazon Linux AMI release 2015.03
– Redmine:3.0.3 stable
– Ruby:2.2.2-p95
– Rails:4.2.1
– MySQL:Ver 14.14 Distrib 5.5.42

Redmine APIについて

Redmine本家サイトを参照すると、対応APIの一覧と使い方が出てきますが、若干、不親切です。
ここでは、私がハマったポイントを紹介したいと思います。

APIの仕様はRedmineに準拠している。

例えば、TimeEntries(作業時間)はRedmineで出来る操作は「登録」「削除」のみ。「編集」が出来ません。
APIについても、「POST」や「DELETE」は出来ますが、「PUT」は受け付けてくれません。

Redmine1.2.1のIssueAPIでは「カスタムフィールド」の「日付項目」はAPIで「登録」「更新」できない。

Redmine1.2.1のバグのようです。どのバージョンでBugFixしたかはおっていませんが、Redmine3.0.3では問題なく更新できました。

最後に

現状、IssueとTimeEntriesの連携しか行っていないため、EPM-XではEVMの分析しか利用できませんが、EPM-X側にもRedmineプラグインを導入し、
コードメトリクスも連携できるようにしていきたいと思います。いずれは。。。。