開発基盤としてのRedmine
〜Redmineをカスタマイズするポイント

2014/2/15
あきぴー@品川Redmine

copyright2014 akipii@XPJUG関西

1
• ハンドルネーム

自己紹介

• あきぴー

• 所属

• XPJUG関⻄、SEA関⻄、RxTStudy、品川Redmine

• 著書

• 「Redmineによるタスクマネジメント実践技法」
• 「チケット駆動開発」
• 「Redmine超入門」(品川Redmineスタッフと共著)

copyright2014 akipii@XPJUG関西

2
Agenda
• Redmineの現状と課題
• Redmineのカスタマイズポイント
•
•
•
•

外部接続I/F
パラメータ設定
プラグイン登録
モディフィケーション

• まとめ

copyright2014 akipii@XPJUG関西

3
Redmineの現状と課題

copyright2014 akipii@XPJUG関西

4
Redmineの現状①
• 日本のSIでRedmineが普及している
• Redmineの利⽤率は40.4%
•

記者の眼 - 「新3種の神器」で開発現場を改革しよう:ITpro
http://itpro.nikkeibp.co.jp/article/Watcher/20130521/478496/

• 現場向けのプロジェクト管理ツールとして使われている

赤:Trac、青:Redmine、黄:Mantis

※2014年の日本のGoogleトレンドから
copyright2014 akipii@XPJUG関西

5
Redmineの現状②
• 日本では、Agile開発よりも従来のWF型開発に
適⽤している事例が多い
• WF型開発の内部にある小さな開発サイクル
• WF型開発で管理しきれない細かな作業管理

アダプタブルWF(WF型開発を補完するチケット駆動開発)
アダプタブル
の適用が多い
【例】「チケット駆動開発」の適用について考える
|コラム「ITよもやま話」|特集│株式会社JSOL
http://www.jsol.co.jp/column/2011/201111.html

copyright2014 akipii@XPJUG関西

6
【参考】アダプタブルWF

(@sakaba37)

WF型開発
型開発

設計

要件
定義

シス
テム
テス
ト

開発
テスト

リリース

補完型
TiDD

補完型
TiDD
設計

設計

開発

開発

テスト

テスト

課題・レビュー管理

障害管理

WF型開発の各⼯程で管理しづらい作業をチケット駆動開発(TiDD)で補完する
copyright2014 akipii@XPJUG関西

7
Redmineの課題
@akipii: Redmineを運用して改めて思うのは、
RedmineやTrac、Jira、GitHubなどのチケット駆動ツールは
開発者のためのツールであって、マネージャのためのツール
ではないこと。
マネージャ視点では、進捗やコスト(工数)やリスクの観点で
もっと見える化して欲しい要望が多い

@fmkt: この @akipii さんのツイートRTされまくってて
(Redmineユーザに)マネージャ多いんだなとかおもったり

マネージャの観点で
Redmineを機能拡張するポイントは何か?
を機能拡張するポイント
を機能拡張するポイントは何か?
copyright2014 akipii@XPJUG関西

8
Redmineの2つの顔
表の顔

裏の顔

OSSの
プロジェクト管理ツール

業務アプリケーションの
開発基盤
(プラットフォーム
プラットフォーム)
プラットフォーム

・プロジェクト管理で使われる機能が
一通りそろっている。
・外部システムとの接続 が豊富
外部システムとの接続I/Fが豊富
外部システムとの接続
(REST、Webサービス、rakeによる
バッチ処理 etc.)

・ソフトウェア企業(日本では主にSI)を
ターゲットにしている。

・機能のカスタマイズが容易
機能のカスタマイズが容易
・プラグインによる機能追加
・パラメータ設定
(プロジェクト、ワークフロー、権限 etc.)

・世界中で使われている。
・タスク管理以外にも運用保守や
ヘルプデスク管理、工数管理にも
使われている。

copyright2014 akipii@XPJUG関西

9
Redmineを
カスタマイズするポイント

copyright2014 akipii@XPJUG関西

10
開発基盤としてのRedmine
Redmineを開発基盤(プラットフォーム)と⾒なしてカスタマイズする場合、
4種類の手法がある。
外部接続I/Fを通じて
外部接続 を通じて
データ操作だけを行う
(REST, Webサービス,
rake etc.)

パラメータの設定だけ
で機能拡張する
(プロジェクト、ワークフ
ロー、権限など)

標準機能のソースを
修正する事無く追加開
修正する事無く追加開
発で機能拡張する

③プラグイン
(アドオン
アドオン)
アドオン

アプリケーション層
(カスタマイズ箇所
カスタマイズ箇所)
カスタマイズ箇所

①外部接続I/F ②パラメータ設定
外部接続

標準機能のソースを
直接修正して
機能拡張する
(EPM-X, Lychee etc.)

④モディフィケーション

ソースを直接修正

プラットフォーム層
(Redmine)

フレームワーク層
(Rails)

copyright2014 akipii@XPJUG関西

11
【1】外部接続I/F ①REST編
HTTPによる
Redmine操作

RedminePM:
(Redmineの
iPhone/Android
アプリ )

PC

XML/
JSON

http://redminepm.jp

スマートフォン

HTTP
による
リアル連携

サーバー

管理画面で「RESTによるWebサービス」を有効に
設定。「JSONP」にも対応している。
http://www.r-labs.org/projects/r-labs/wiki/Redmine_REST_API
copyright2014 akipii@XPJUG関西

12
【1】外部接続I/F ②構成管理ツールと連携
リポジトリ情報取得

バージョン管理リポジトリへコミット時、「refs #12」「fixes
#13」でチケットと相互リンクできる
http://redmine.jp/tech_note/subversion/

管理画面で「リポジトリ管理用のWeb
サービス」を有効に設定
→http://Redmineサーバ名
/sys/fetch_changesets?key=APIキー
&id=プロジェクト識別子
で取得可能
(http://blog.redmine.jp/articles/redmine-0_9-url-tofetch-changesets/)
copyright2014 akipii@XPJUG関西

13
【1】外部接続I/F ③メールによるチケット登録
チケット登録用
メールアドレス
①メール発行

②通知

@
ユーザ

③チケット
登録
④チケット確認
他に下記のrakeコマンドもある。
rake redmine:email:read
rake redmine:email:receive_imap
rake redmine:email:receive_pop3

管理画⾯で「受信メール⽤Webサービス」を有効に設定
http://www.redmine.org/projects/redmine/wiki/RedmineReceivingEmails

copyright2014 akipii@XPJUG関西

14
【1】外部接続I/F ④他ITSからのデータ移⾏
データ移行

下記のrakeコマンドでデータ移⾏できる。
rake redmine:migrate_from_mantis # Mantis migration script
rake redmine:migrate_from_trac # Trac migration script
RedmineMigrate
http://www.redmine.org/projects/redmine/wiki/RedmineMigrate

外部接続I/Fは他にも存在する。
【参考1】期日が間近のチケットをメールで通知する(リマインダ機能): Redmine.JP
http://redmine.jp/faq/issue/send_reminders/
【参考2】 Redmine Rake - Batch job tasks
http://www.redmine.org/projects/redmine/wiki/RedmineRake#Batch-job-tasks
copyright2014 akipii@XPJUG関西

15
【2】パラメータ設定
ワークフロー機能で多種多様な運⽤が可能。
(障害、課題、タスク、問合せ、PC資産など)
他に、プロジェクト単位に権限やワークフローも設定できる。

ステータスの移行先

現
在
の
ス
テ
ー
タ
ス
【参考】第3回SRA関⻄セミナー(2013/9/12)
「Redmineの運⽤パターン集〜私に聞くな、チケットシステムに聞け」
http://www.slideshare.net/akipii.oga/sea-west-ogawa201309open
copyright2014 akipii@XPJUG関西

16
【3】プラグインで機能追加
プラグインは、Railsフレームワークの一部として開発できる。
(1)Railsフレームワークは次の特徴を持つおかげで、開発しやすい。
・CoC:設定より規約(Convention Over Configuration)
・DRY:繰り返しの禁止(Don't Repeat Yourself)
(2)プラグインのインストールの基本は、ソース配置後、下記コマンドを実⾏するだけ。
rake redmine:plugins:migrate RAILS_ENV=production

View

参照・更新
操作・依頼

アクセス

DB

Controller
ユーザ

Model
プラグイン

【参考1】プラグイン開発ガイド - r-labs
http://www.r-labs.org/projects/r-labs/wiki/プラグイン開発ガイド
【参考2】プラグインの開発〜Redmine.JP
http://redmine.jp/tech_note/plugins/developer/
copyright2014 akipii@XPJUG関西

17
【4】モディフィケーションで機能拡張①EPM-X
Redmineプラットフォーム上でBI/ELTツールを追加開発して機能拡張している。

※BI(Buisiness Inteligence):業務システムなどから蓄積される企業内の膨大なデータを、蓄積・分析・加
工して、企業の意思決定に活用しようとする手法。
ELT:企業の基幹系システムなどに蓄積されたデータを抽出(extract)し、データウェアハウスなどで利
用しやすい形に加工(transform)し、対象となるデータベースに書き出す(load)こと。

定量的プロジェクト管理ツール(EPM-X):IPA
http://www.ipa.go.jp/about/toolcatalog/sec/sec-2-1.html

copyright2014 akipii@XPJUG関西

18
【4】②Lychee Enterpriseシリーズ
Lychee Enterprise シリーズは、マネージャの観点で
ソフトウェア開発のプロジェクト管理のQCDを支援している

スケジュール(D)
Lychee Gantt Chart
(& Lychee Actual Date)

品質(Q)

コスト(C)

Lychee
Association Chart

Lychee EVM

Lychee Enterprise : アジャイルウェア(株)
http://lychee-redmine.jp/
copyright2014 akipii@XPJUG関西

19
まとめ

copyright2014 akipii@XPJUG関西

20
Redmineカスタマイズ手法比較
No カスタマイズ手法

⻑所

短所

1

外部接続I/F

APIを⽤いて、Redmineから
自由にデータの取得・更新が
できる
(例:REST、JSONP、
rake)

・外部接続⽤プログラムの開発工数が
発生する
・通信要件や性能要件でボトルネック
が発生する場合がある

2

パラメータ設定

フィットギャップ分析結果を
Redmineの設定に反映す
れば、十分に運⽤可能

・機能拡張できる範囲が小さい

3

プラグイン追加

Redmine本体に手を加えず、・プラグイン開発のコストが発生する
容易に機能追加できる
・RedmineのVerUpに追随するため
に回帰テスト工数が発生する

4

モディフィケーション Redmine本体の機能を自
由に修正・追加できる

・4種類のカスタマイズ手法のうち、最
も開発工数がかかる
・RedmineのVerUpに追随するコス
トが大きい

copyright2014 akipii@XPJUG関西

21
まとめ
• RedmineはOSSのプロジェクト管理ツールの開発
基盤として使える
• ソースが公開されているので、自由にカスタマイズできる
• マネージャを顧客に⾒⽴てて、アジャイルに改善しよう

• RedmineのVerUpに追随する⽅が良い
• 細かな機能やUIがどんどん改善されている
• セキュリティパッチも素早くリリースしてくれる

• Redmineの外部接続I/Fを有効活⽤しよう

• プラグイン追加やモディフィケーションでも、RESTやJSONP、
rakeのI/Fを流⽤する⽅が安全
copyright2014 akipii@XPJUG関西

22
ご清聴
ありがとう
ございました

copyright2014 akipii@XPJUG関西

23

第6回品川Redmine勉強会発表資料「開発基盤としてのRedmine~Redmineをカスタマイズするポイント」