redmine_date_independent プラグイン 解説
はじめに
Redmineのプラグイン「redmine_date_independent」の解説です。
このプラグインにより「親チケットの値の算出方法」の期日に関する連動設定をプロジェクトやステータスごとに設定することが可能になります。
ダウンロードはこちらからどうぞ。
以降では、期日の連動設定を使い分ける必要性について説明した上で、具体的なプラグインの設定方法を解説していきます。
是非、最後までお付き合いください。
チケットの親子関係の役割の違い
親チケットと子チケットの関係性に注目して整理していきたいと思います。通常、作業を親チケットと子チケットに分けて表現した場合、そこには包含関係があると思いますが、厳密には以下の2種類の分け方ができるでしょう。
- WBS方式(Work Breakdown Structure)
- WBSとは「一つの作業(Work)を複数の詳細なタスクに分割(Breakdown)し、構造化(Structure)する」という意味です。
- WBS方式では、全体の作業を表す親チケットに対して、作業を詳細に分割し子チケットとして追加していきます。この時、親チケットの作業を子チケットが過不足なく分割していることが重要です。
- この場合、子チケットと親チケットは連動します。例えば、子チケットは親チケットの作業を分割したものなので、子チケットがすべて終了すれば、親チケットも自動的に終了ですし、子チケットの期限が変化したら、自動的に親チケットの期限も変化することになります。
- ToDo方式
- ToDo方式では、WBSの場合と違い、もっとラフに子チケットの追加を行います。例えば、特定の作業をやり忘れないために子チケットを作ったり、慎重に議論が必要そうなトピックがあったため子チケットとして抜き出す、といった感じです。
- この場合、子チケットの作業は親チケットの作業の一部ではありますが、子チケットは親チケットの作業内容を過不足なく分割したものではないため、子チケットと親チケットは連動しません。例えば、失念防止のため子チケットにしていたものが完了したからと言って、親チケットは終了できませんし、その子チケットの期限と親チケットの期限は別個に扱う必要があります。
WBS方式とToDo方式の違いを具体例で見てみましょう。
たとえば、新規の開発は「機能仕様」「設計」「実装」「テスト」という4つの工程を踏まなければならないと定められているとします。ここで「Basic認証対応」という新規の案件があったとすると、以下のようなチケットが作られることになるでしょう。
ここで「#1347 Basic認証対応」とそれぞれの「機能仕様」「設計」「実装」「テスト」のチケットの関係はWBS方式になっています。つまり、「テスト」まで終了すれば「Basic認証対応」は完了ですし、「テスト」の期日が伸びてしまうと、「Basic認証対応」の期日も自動的に伸びてしまいます。
では、ここで「機能仕様」の検討中に「実装方法について〇〇部署に確認する必要がある」という意見が上がったため、忘れないよう「#1349 設計」の子チケットとして「#1352 〇〇部署への確認」というチケットを作ったとします。
この場合、「#1349 設計」と「#1352 〇〇部署への確認」の関係はToDo方式となっています。なので、「設計」を完了するまでに「〇〇部署への確認」を行う必要はありますが、「〇〇部署への確認」が完了しても「設計」が完了するわけではありませんし、期日も別のものとなるでしょう。
プラグイン「redmine_date_independent」の強み
このように一つの案件の中でも親チケットと子チケットを「連動させたい(=WBS方式)」場合と「連動させたくない(=ToDo方式)」場合が混在することがよくあると思います。しかし、Redmineの設定では「子チケットの値から算出(=連動させたい)」か「子チケットから独立(=連動させたくない)」のどちらか一方を選択する必要があり、この設定はプロジェクトやトラッカーに関わらず、すべてのチケットに一律に適用されます。
つまり、設定で「子チケットの値から算出(=連動させたい)」となっていると、先ほどの「〇〇部署への確認」のような子チケットの追加はできません。逆に、「子チケットから独立(=連動させたくない)」が選択されていると、子チケットの期日の変化に対して、手作業でそれを親チケットに反映する必要が出てきて、煩わしく感じる場面もあるでしょう。
そこで、「redmine_date_independent」の出番というわけです。
これを使えば「親チケットの値の算出方法」をプロジェクトやステータスに応じて柔軟に設定することができるようになります。
以降ではその具体的な設定方法を見ていきましょう。
やりかた
プラグインのインストール
Redmineのプラグインのフォルダにredmine_date_independentを配置して、DBのマイグレーションを行った後、Redmineを再起動してください。以下のようなコマンドで実行することができます。
$ cd /var/lib/redmine/plugins
$ git clone https://github.com/RedminePower/redmine_date_independent.git
$ bundle exec rake redmine:plugins:migrate NAME=redmine_date_independent RAILS_ENV=production
$ httpd -k restart
設定の方法
インストールが成功すると管理画面に「開始日/期日の独立」という項目が表示されます。ここから「親チケットの値の算出方法」を細かく設定するための設定を追加してください。
「新しい開始日/期日の独立」をクリックすると「開始日/期日の独立」の追加画面を開くことができます。本プラグインでは、全体の設定として「開始日/期日」が「子チケットの値から算出(=連動させたい)」が設定されていることを想定しています。そして、そこに個別に「子チケットから独立(=連動させたくない)」のプロジェクトを追加していく、という形で設定を行っていきます。
各項目の設定が完了したら「作成」をクリックして「開始日/期日の独立」の設定を追加してください。
- 有効
- チェックを外すと本設定が動作しなくなります。設定は削除したくないが一旦無効にしたい、といった場合にお使いください。
- 対象プロジェクト
- 対象とするプロジェクトの識別子を指定して下さい。指定されたプロジェクトでは、「開始日/期日」が「子チケットから独立」に設定されます。また、正規表現で使って指定することができます。同じ設定を複数のプロジェクトで使いたい場合などにご活用ください。
- 適用しないステータス
- 対象外とするステータスを設定してください。設定されたステータスを持つチケットは、上記のプロジェクトのチケットであったとしても、「開始日/期日」が「子チケットの値から算出」に設定され、子チケットに連動するようになります。
- 「子チケット連動」のような“個別の期日を持たず子チケットの期日に連動する”ことを表すステータスを追加しておくと便利です。
さいごに
以上でプラグイン「redmine_date_independent」の解説は終了です。
いかがでしたでしょうか?
機能としてはそこまで複雑ではないのですが、文章で説明するとなると少し長くなってしまいましたね。
チケット駆動開発においては、親チケットと連動させたい場面、させたくない画面、その両方が必ず出てくると思います。しかし、設定がすべてのチケットに一律に適用されるため、安易に変更はできないと断られる。その言い分も十分理解できますが、やっぱりもどかしいですよね。
このプラグインがそんな悩みを抱えた人の一助になれば幸いです!
今回は期日についてのお話でしたが、Redmine Powerでは『子チケットがすべて終了したら、親チケットを終了する』プラグイン(redmine_auto_close)も提供しています。
是非そちらもお試しください!