2015年11月28日
松谷 秀久(@mattani)
 カスタマイズ事例とノウハウ
 Excelからのインポート
 Redmine+Subversionを使いこなそう
いずれも、ちょっとしたコツが必要です。
そのコツをお伝えします。
 ハンドルネーム
@mattani
 所属
NTTコムウェア(株)
 担当業務
◦ あるシステムの運用担当(SE)でRedmine管理者
 Redmine歴
◦ 約3年
◦ Bitnami Redmineを利用。(今使っているのは3.0.3)
◦ ユーザ数80名。プロジェクト数 10~15
◦ タスク管理、課題管理、インシデント管理、検証設備利用申請管理、工事管理
◦ ヘルプデスク問合せ管理、脆弱性管理 他
 利用しているプラグイン
◦ clipboard_image_paste
◦ redmine_comment_only
◦ redmine_importer
◦ redmine_information
◦ redmine_issue_templates 他
 私が行ったインシデント管理のカスタマイズ事例を
ご紹介します
 インシデントとは
◦ 商用システムで発生した申告や監視アラーム事象のこと
◦ すべてが問題とは限らないが、適切に対処しないと
お客様クレームにつながります
 Excelで管理すると・・・
◦ だれがどこを変えたかわからない
◦ だれが何を判断して完了にしたのかわからない
◦ 更新頻度が遅くなり、書き忘れも多い
 状態遷移図
◦ 最初に管理する対象の状態遷移図を書きます
新規 調査中 対処待ち
完了
調査着手 調査完了 対処完了
対処不要
再対処要
再調査要
対応が不十分な
場合を追加
完了
破棄
リーダが確認
リーダが確認
完了待ち
リーダの確認を追加
完了の前に完了待ちを追加
保留
保留/保留解除
保留/保留解除
を追加
状態遷移図を書いた結果、インシデントの管理には「新規」、
「調査中」、「対処待ち」、「完了待ち」、「完了」、「破棄」、
「保留」の7つのステータスが必要
 チケットのステータス設定
◦ 作成した状態遷移図に従ってステータスを設定します
既存のステータスで使わないも
のは削除してもOK
(使っているものは消さない)
必要に応じてステータスを作成
設定後は
こんな感じ
 トラッカー設定
◦ トラッカーはチケットの大分類
◦ トラッカー毎に、ワークフローの定義や使用するカスタ
ムフィールドを変えられる
トラッカー「故障」では、
親チケット、予定工数を使わない
のでチェックしない
インシデント管理プロジェクトを選択
まだプロジェクトを作っていない場合は、
後で設定してもよい
インシデント管理のワークフロー
を識別するトラッカー「故障」を
作ります
 ワークフロー設定
◦ 管理者はどのステータス間でも遷移できるようにする
管理者は、どんなス
テータスにでも変更
できるようにします
 ワークフロー設定
◦ 報告者は「完了」「破棄」はできないようにする
「完了」「破棄」にできな
いようにします
「新規」にできる必要はないの
で、チェックを外します
 カスタムフィールド設定
◦ チケットに追加したいカスタムフィールドを追加します
テキストの書式をチェック
するとフィールド中でWiki
フォーマットを使用可能
チケット一覧のフィルタと
して使用する場合チェック
検索対象にしたい場合のみ
チェック
(性能低下につながるので
必要な場合のみ)
 よくある質問
プロジェクトでカスタムフィールドにチェック入れたのに
チケット入力画面に表示されない
 回答
トラッカーのカスタムフィールドもチェック入れたか?
プロジェクトの設定で、使用するカ
スタムフィールドにチェック
トラッカーの設定でも、使用するカ
スタムフィールドにチェック
 追加したカスタムフィールド例
カスタムフィールドを増やすのは、Excelでいうとカラムを増やすイメージ。
増やしすぎると煩雑なので、基本機能の注記も有効活用を!
名称 書式 テキストの書式 フィルタとして使用 検索対象 意味
申告者 テキスト - レ レ 申告者名
サービス影響有無 リスト - レ - サービス影響の有無
影響内容 長いテキスト レ レ レ 影響内容
影響ゲスト 長いテキスト レ レ レ 影響をうけるゲスト
エスカレ有無 リスト - レ - 一次受付完結かエスカレしたか
センタ名 リスト - レ - インシデントの発生したセンタ
調査・対応状況 長いテキスト レ レ レ 調査・対応状況
結果 長いテキスト レ レ レ 調査状況・結果
対処内容 長いテキスト レ レ レ 対処内容
備考 長いテキスト レ レ レ メモ
 親プロジェクトの設定
親プロジェクトの識別子
は後で作成するリポジト
リと同じ名前にします
使わないモジュールは
オフにします
使用するカスタムフィー
ルドを選択します
親プロジェクトにチケッ
トを発行できないように
するためオフにします。
 子プロジェクトの設定
使わないモジュールはオフにします
(リポジトリは親プロジェクトで管理
するのでオフ)
プロダクト全体の子プロジェクトに
しています
使用するカスタムフィールドをチェッ
クします
親プロジェクトのメン
バを引き継ぎます
 バージョンとロードマップ
新しいバージョン
を作成すると・・
ロードマップも
セットで作られます
親プロジェクトで作成
して、子プロジェクト
に共有できます
バージョン・ロード
マップのWikiページに
は、そのバージョンの
体制、計画などを記述
私の場合、四半期毎に
インシデントの分析を
するので四半期に対応
したバージョンを作っ
ています
 グループとユーザ
おすすめできない例
課題管理PJ
Aさん(管理者)
Bさん(報告者)
Aさん(管理者)
Bさん(報告者)
Aさん(管理者)
Bさん(報告者)
Cさん(報告者)Cさん(報告者)
Cさん(報告者)
・グループを使っていない
・子プロジェクトでユーザの継承を行っていない
→ユーザと権限の管理が煩雑になる
インシデント管理PJ
〇〇プロジェクト
課題管理PJインシデント管理PJ
Aさん
○○_リーダG
(管理者)
○○_運用G
(報告者)
Bさん
Cさん
親プロジェクト
の
ユーザを継承
親プロジェクト
の
ユーザを継承
• グループを使うとまとめてユーザを登録できる
• 権限の設定変更も容易
• 親プロジェクトのユーザ継承を行うと管理が楽
おすすめ例
〇〇プロジェクト
 まとめ
◦ まず管理対象を明確にして状態遷移図を書く
◦ 状態遷移図でわかったステータスを登録
◦ ワークフローを識別するトラッカーを作成
 私の経験上、トラッカー作り過ぎはNG(1~2/PJ)
◦ ワークフローは管理者用と報告者用
 管理者は制限なし、報告者は必要最小限の制限をつける
◦ 親プロジェクトは子プロジェクトを束ねる
 親プロジェクトにトラッカーは登録しない
 リポジトリは親プロジェクトで作成
◦ バージョンとロードマップはセットで作られる
 見通しが良くなるのでなるべく作成する
◦ グループ作成で管理を省力化する
 現在のRedmineでは、インポートはプラグインが
必要です。
◦ 次リリースされるRedmine3.2.0では、
標準機能でCSVインポートがサポートされるかも・・・
 インポートプラグインは開発が活発です。
◦ Redmine.JPの紹介(※1)によると、※2が近年活発に更新
されている、と紹介されていますが、こちらはまだ
Redmine3.0に対応していないようです。
◦ ※2からフォークした※3が2015/4月以降も活発に更新
されています。Redmine3.0以降に対応しています。
※1 http://redmine.jp/faq/issue/csv/
※2 https://github.com/zh/redmine_importer
※3 https://github.com/stateio/redmine_importer 以前はInternal
Errorが良く出
て困った。
最近は安心。
 Redmine_importerプラグインのインストール
◦ Githubから、zipファイルをダウンロードして、redmineの
pluginsフォルダに展開します。
名前はredmine_importerというフォルダ名にします。
 bitnamiの場合
にredmine_importerを展開します。
◦ 以下のコマンドでDBのマイグレーションを行います。
◦ Redmineを再起動します。
◦ Redmineの管理メニュー→プロジェクト→設定→モジュールか
ら、モジュールを有効にします。
◦ 管理メニュー→情報で、インストールされていることを確認。
 インストール詳細はプラグインの指示に従ってくださ
い。
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
/opt/redmine-X.X.X-X/apps/redmine/htdocs/plugins/
 Excelでインポート用データを準備
◦ そのファイルをCSV形式で保存します
担当者を読み込む場合は、RedmineのIDにす
る。
→上記の×は匿名ユーザになる
日付を読み込む場合は、YYYY-MM-DD形式
でないと読み込めない場合も。
(最近は改善された)
×
×
〇
×
△
〇
〇
×
×
 Redmineにインポート
◦ プロジェクト→インポートからアップロードします
SJISを選択
作成したExcelファイルを選択
 各列のフィールドとの対応を指定します。
◦ ExcelとRedmineのカラム名が同じ場合はデフォルトで対
応されています。
必須フィールドは必ず指定すること。
例)題名や必須にしたカスタムフィールド
いろいろと読み込み時のオプションを指定できます
「未登録のユーザーは匿名ユーザーに~」を有効に
しないと、未登録のユーザーがあるとInternal Errorが
発生します
Excelのカラム情報
Redmineのカラム情
報
 インポート結果が表示されます
◦ 正しく読み込めた行数、エラーメッセージとそれに対応
する行の情報が表示されます
正しく処理された行数を表示
エラーメッセージを表示
失敗した行の情報
 まとめ
◦ 現在はRedmineのインポートはプラグインが必要
◦ プラグインは開発が活発なので、最新のフォークを確認
してインストールする必要がある
◦ 担当者をインポートする場合は、Redmine IDを指定
 なぜgitでなくてSubversion?
集中型 分散型
 なぜgitでなくてSubversion?
チーム全体での成果管理
チーム全体の成果管理
+
個人の構成管理
構成管理
対象
使用
ディスク量
集中リポジトリ:大
ローカルエリア:小~大
集中リポジトリ:大
ローカルリポジトリ:大
コミット
方法
集中リポジトリへのコミット
ローカルコミットでテストし
集中リポジトリにコミット
私の場合、管理対象は作成資料や運用マニュアル(バイナリファイル)
→ファイル間のマージはしないし、個人環境でのテストをする必要もない
→ローカル領域にリポジトリを作る必要性がない。
→Subversionを選択
 RedmineとSubversionの認証連携について
◦ 認証連携させないと、Redmineのユーザが増えるたびに、
リポジトリのユーザ管理も必要。
◦ 試行錯誤したノウハウをr-labsのWikiにまとめました。
 Pre-commit hook
◦ Subversionのコミットコメントに
「refs: #チケット番号」がないとコミット不可
◦ これにより、「No Ticket, No work」を実現する
◦ カスタマイズ例は、こちらのサイト参照
 Post-commit hook
◦ Post-commitで、Subversionのコミットと同時にRedmineに
反映する
◦ 「リポジトリ」タブをクリックしないと取り込まれない
◦ カスタマイズ例は、こちらのサイト参照
 まとめ
◦ ユーザ管理を楽にするために、RedmineとSubversionの認
証連携を設定
◦ No Ticket, No workを実現する手段として、
Pre-commit hookを活用
◦ Subversionのコミットと同時にRedmineにデータを反映す
るために、Post-commit hookを活用
 カスタマイズ事例とノウハウ
 Excelからのインポート
 Redmine+Subversionを使いこなそう
参考にしていただければ幸いです。
ありがとうございました。

講演2 実例に基づくRedmine管理者入門 r2