ソフトウェア保守にRedmineを導入して改善した８のコト

## 記事の背景

自分が管理するソフトウェア保守を任されるようになり、解決した課題を他のRedmineユーザー、もしくはRedmine(BTS)を導入してみようかな、という方の参考になればとおもって記事にしました。

※ ここの記事では具体的に「バージョン」をどう使ったといったことは記載せず、別の記事にまとめたいと思います。

Redmine利用バージョン:  Bitnami Redmine4.1 (Dockerに移行予定)

## ソフトウェア保守作業での課題
メールやExcelなどを使って管理していたのですが、以下の課題がありました

1. メールでやりとりするため、アクションの管理が個人任せ（アクションとして認識していない場合がある）
2. メールでやりとりするため、過去の対応履歴が新しいメンバーが参照できない（古いメンバーも参照しにくい）
3. 作業計画が不明瞭
4. 作業計画が更新されなくなる
5. 作業計画が納期に対して合致しているか、わかりにくい
6. 作業計画に対して順調か見えにくい
7. 定期的にリリースする累積パッチのコンテンツリストが、一部の人しか見えていない
8. 定期的にリリースする累積パッチのコンテンツリストが、リリース前にリポジトリを確認しないと確信がもてない

## 保守作業の解決策

ソフトウェア保守作業での課題を、Redmineの以下の機能を使って解決しました。

1. 「チケット」の担当者で管理する
2. 「チケット」のコメントで管理し、Redmineの検索機能で発見できるようにする
3. 「チケット」の開始日、終了日で管理し、「ガントチャート」から計画を見えるようにする
4.  終了日がすぎた「チケット」は、リマインダーで通知し、更新を促す
5. 「バージョン」で納期（計画上の完了日）を管理（終了日に設定）し、「ロードマップ」から確認する
6. 「ロードマップ」から、残りのチケットや、そのチケットが計画から遅れているかを確認する
7. パッチコンテンツは「チケット」（デプロイ）を、「バージョン」（リリースバージョン）に登録し、参照してもらうようにする
8. 「リポジトリ」の機能で、キーワードと共にコミットされると「チケット」（デプロイ）を完了するようにする

特に1, 2, 7, 8は効果は抜群でした。（POK〇MONではないが）
3, 4, 5, 6はより良い方法を求めて試行錯誤中です。

## 追い解決施策（プラグインの設定、導入によるサポート）

素のRedmineだと使いにくいこともあり、以下のプラグインや設定を行い
円滑に進められるようにしています。

### Redmine Issue Badge plugin
+ http://www.redmine.org/plugins/redmine_issue_badge
+ https://github.com/akiko-pusu/redmine_issue_badge
+ 概要
    * 担当しているチケットを上部のバッジとして表示できます。スマホの通知の⑤みたいなことが表示でき、そこから担当チケットに移動できます。
+ 導入の目的：
    * 課題１を徹底できるよう、担当チケットを意識してもらうため。
    * 担当チケットの素早くアクセスさせるため。
+ 導入した結果：
    * どのページからでも担当チケットを確認して移動ができるため、AIを持っている数を認識でき、消化率が変わると思います。
    * メール通知機能などは便利ですが、数が多いと、担当がわりあてられいることを見落としてしまうため

###  View Customize plugin
+ http://www.redmine.org/plugins/redmine_view_customize
+ https://github.com/onozaty/redmine-view-customize
+ 概要
   * かゆいところに手が届くカスタマイズができるプラグインです。
+ 導入の目的
   * 使い方にあわせて、ちょっとしたカスタマイズをするため。
   * 課題5を直感的に確認できるようにするため。
+ 使っているカスタマイズ
   * 「ロードマップ」から、納期から遅れているかどうかを簡単できるように以下のようなことも行っています。
        * https://qiita.com/taka-vagyok/items/c77fabaf697d0a567608
   * 「ファイル」のアップロードの削除（Redmineに添付させず、ファイルサーバーに格納させています）
+ 導入した結果
   * 開いてすぐ色がついている、などカスタマイズにより、見せたいものにフォーカスさせられているように思います。

### Easy Gantt
+ https://www.easyredmine.com/redmine-gantt-plugin
+ 概要
    + 少しリッチなガントチャートで、Redmineのオリジナルのガントチャートでできない、開始日や終了日をガントチャート上で変更できる。
+ 導入の目的
   * 課題5を直感的に確認できるようにするため。
   * 作業計画を考えるときにはガントチャートなどで他の作業との兼ね合いを考えてに計画を立てれるようにするため。（Redmineのオリジナルのガントチャートとではドラッグ＆ドロップで開始日や終了日を変更できない）
+ 導入した結果
   * 計画を変更するのに使っていますが、結局チケットの開始日・終了日を変更して使うことが多い気がします。

### checklists
+ https://www.redmineup.com/pages/ja/plugins/checklists
+ 概要
    + チケットにチェックリストを導入できます。
+ 導入の目的
    * 放置チケットを減らすため。
        * 原因調査など、サブタスクは、子チケットで管理していたのですが、リスケ時に放置されることが多く、見通しをよくするため結局１障害１チケットで管理し、開始日・終了日を変更することにしました。
+ 導入した結果
    * チケットの数が減らせて、これはどの子チケットの書かれていたのか、ということが減らせ、放置チケットも減りつつあります。（単純に法チケット群から、放置チケットになっただけですが、見通しはよくなりました）
    * 次は誰に担当者を変えるというのを少し悩むので、コメントで指示をしていましたが、チェックリストに名前をいれておけば、それをもとに遷移を判断できる、という良い効果があり、手放せなくなりました。

## （おまけ）そのほか導入したプラグイン達の紹介

### Redmine Banner
+ https://github.com/akiko-pusu/redmine_banner
+ 概要
    + Redmineの画面上にお知らせを表示できます。
+ 導入の目的
    * 新しいルールの周知徹底や慣れていないユーザー向けにアナウンスするため。
+ 導入した結果
    * ちゃんと確認されて利用してもらえています。
  
### Redmine Default Custom Query
+ https://github.com/hidakatsuya/redmine_default_custom_query
+ 概要
    + チケット一覧のデフォルトのカスタムクエリを設定できます。
+ 導入の目的
    * Redmineをあまり使ってきていない一部のユーザ向けに、いろいろ設定しなくてもチケットが見やすくするため。
    * 使い方について質問などを減らすため。
+ 導入した結果
    * 狙い通り、最初にデフォルトクエリとしておけば、それなりに使ってもらえています。

### redmine_issue_templates
+ https://github.com/akiko-pusu/redmine_issue_templates
+ 概要
    + チケットのテンプレートを作成することができます。
+ 導入の目的
    * トラッカー別にテンプレートが作り、記載してほしいことを抜け漏れがなくチケットが作れるようにするため。
+ 導入した結果
    * 報告が一定のレベルでできたり、毎回同じ作業を入力しなくてよいのは便利です。
    * 地味に便利なのは、チェックリストも自動で作るテンプレートとできるのでCheckListプラグインがさらに輝きます。

### Redmine Wiki Extensions
+ https://www.r-labs.org/projects/r-labs/wiki/Wiki_Extensions
+ https://github.com/haru/redmine_wiki_extensions
+ 概要
    + Redmineのwikiを拡張するプラグインです。
+ 導入の目的
    * Metabaseで集計したデータをRedmine上で表示するため。
+ 導入した結果
    * ほかのシステムのデータを集計してiframe機能をつかって表示させたり、Redmineのチケットをいい感じに集計しています。

### Redmine Pivot Table
+ https://github.com/deecay/redmine_pivot_table
+ 概要
    * チケットをRedmine上でピボット集計ができるようになります。
+ 導入の目的
    * 放置チケットがないかなど、簡単な集計をするため。
+ 導入した結果
    * 毎日使うってものではありませんが、放置チケットの数を調べたり、Excelにおとすまではしたくないな、って時の集計に使っています。

## 変更履歴
* プラグイン周りの説明が、概要や何のために導入したがぐちゃぐちゃだったので整理＆追記しました。