Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Redmineでメトリクスを見える化する方法

15,853 views

Published on

2016/5/14 第10回 Redmine.tokyo勉強会 発表資料
チームパフォーマンスや品質を評価をするためにメトリクスを活用することは重要です。
REST API、周辺ツール等を活用し、基本機能では実現が困難なメトリクスを見える化する方法をご紹介します。
(平均完了日数や放置日数の分布、信頼度成長曲線やバグ収束率など)

Published in: Technology

Redmineでメトリクスを見える化する方法

  1. 1. 2016年5月14日 松谷 秀久(@mattani)
  2. 2.  分析していない? ◦ せっかくのデータなのにもったいない・・・  標準機能のサマリは見ている ◦ 充分な分析はできないですね  CSVでエキスポートしてExcelで分析? ◦ 分析には毎回稼働がかかりますよね もうちょっと楽できる 方法を紹介します
  3. 3.  リアルタイム分析 ◦ 現時点のデータを使って分析 ◦ 基本機能の「サマリー」も一種のリアルタイム分析 ◦ プラグインを使えば、より柔軟な分析が可能  ヒストリカル分析 ◦ 過去からのデータを使って分析 ◦ 外部ツールによって実現 本日のメイントピック 後で詳しく説明します
  4. 4. トラッカー、優先度、担当者、 作成者、バージョン、カテゴ リ毎のステータスのサマリー を確認できる
  5. 5. リアルタイムにピボット分析 できます。 あらかじめ分析対象をクエリ で絞っておくこともできます。 棒グラフで表示も可能。 デモ
  6. 6.  REST APIでデータを取得 ◦ REST APIの特徴 ◦ スクリプトの紹介  外部ツールでデータを加工 ◦ Gnuplotでグラフを描画  ユーザへの見せ方 ◦ Wikiを活用  定期的な分析の実行 ◦ Jenkinsを活用
  7. 7. 管理ー設定ーAPIで 「RESTによるWebサービスを 有効にする」にチェックを いれておく
  8. 8. URLの後ろに .json をつけると、チケット情報を JSON形式で取得できる
  9. 9. 認証用にAPIアクセスキーが必要
  10. 10.  URLとAPIアクセスキーを指定して、チケットの データに外部プログラムからHTTPでアクセス  デフォルトでは1回のアクセスで、25件分の データを取得 (全データ取得にはページネーション制御要) ちょっとハードル高いかな
  11. 11.  REST APIを意識せずにJSONを取り出すツール  動作イメージ API_KEY,URL インスタンス作成 コールバック登録 全チケット処理実行 REST APIでチケット情報取得 コールバック実行 (1チケット毎) 集計ファイル (TXT) 出力処理 月別完了日数クラスや 放置日数クラスなどの 処理を登録(複数可) MetricsTools_for_Redmine RestIssues クラス(perl) ユーザ カスタマイズ部(perl) 実行sh REST APIの複雑な制御 を隠ぺい
  12. 12.  ユーザがやること ◦ URLとAPIキーを指定してオブジェクトを作る ◦ 1チケットのJSONを処理する集計関数をコールバックメ ソッドとしてオブジェクトに登録  ツールがやってくれること ◦ REST APIで取得したJSONをチケット毎に分解して コールバックメソッドに渡す ◦ 完了日数、放置日数などの集計メソッドを提供  拡張性 ◦ ユーザカスタマイズ部を作れば拡張可能  GitHubで公開しました https://github.com/Mattani/MetricsTools_for_Redmine
  13. 13.  チケット起票から完了までの日数  チケットがうまく捌けていることの目安になる ◦ チケットが多いと短期間で捌けない ◦ チケットが放置されると平均完了日数も長くなる ◦ 平均完了日数が短い=品質がよい
  14. 14.  REST API(Perlスクリプト)イメージ  出力される集計ファイルイメージ # 年月 未完了件数 完了件数 完了日数の和 2016-04 0 34 251 2016-05 0 78 2115 2016-06 0 41 2248 2016-07 0 12 1005 平均完了日数=完了日数の和/完了件数 # ライブラリを読み込む use RestIssues; # URLとAPIキーを指定してオブジェクトをインスタンス化 my $issues = RestIssues->new(Url =>$url, Apikey => $apikey); # チケットを集計するコールバックメソッドを登録 $issues->addAggregateProc(&ClosedInEachMonth::aggregate); # 全チケットを処理するメソッドを呼び出す $issues->processAllIssues(); # 集計結果を出力する &ClosedInEachMonth::putResult($opath,$queryname); 月別完了日数クラス ClosedInEachMonth を使用
  15. 15.  放置された日数毎にチケット件数を集計  どのくらい放置チケットがあるかを知る ◦ 長期間放置されているチケットを見つけて 対応することで、チケットの捌きが早くなる ◦ 平均完了日数も短くなる→品質の向上につながる
  16. 16.  REST API(Perlスクリプト)イメージ  出力される集計ファイルイメージ # 集計対象のトラッカーを設定 &UntouchedDays::setTargetTracker(['バグ']); # 集計除外するステータスを設定 &UntouchedDays::setExcludeStatus(['破棄','終了']); # チケットを集計するコールバックメソッドを登録 $issues->addAggregateProc(&UntouchedDays::aggregate); # 全チケットを処理するメソッドを呼び出す $issues->processAllIssues(); # 集計結果を出力する &UntouchedDays::putResult($opath,$queryname); # 放置日数 バグ 問合せ 0 30 0 1 25 0 ~中略~ 12 50 0 13 32 0 放置日数クラス UntouchedDays を使用 放置日数毎の件数が取得できる
  17. 17.  週毎に累積バグ数を集計  累積バグ数から信頼度成長曲線を求め、 バグ収束率を計算する
  18. 18.  REST API(Perlスクリプト)イメージ  出力される集計ファイルイメージ # カウント開始日を設定 &CountEachWeek::setStartDate('2016-4-2'); # チケットを集計するコールバックメソッドを登録 $issues->addAggregateProc(&CountEachWeek::aggregate); # 全チケットを処理するメソッドを呼び出す $issues->processAllIssues(); # 集計結果を出力する &CountEachWeek::putResult($opath,$queryname); 件数(週毎)クラス CountEachWeek を使用 # week 未完了 件数 累積件数 2016-04-02 0 3 3 2016-04-09 0 5 8 2016-04-16 0 4 12 2016-04-23 0 21 33
  19. 19.  集計結果をグラフとして見える化する方法の1つ  FSFのGNUプロジェクトとは無関係  学術分野でよく使われる  30年前からあるグラフ描画ソフト
  20. 20. 平均完了日数を描画する gnuplotスクリプト 「ClosedInEachMonth.gp」 で描画 この例では以下のようなことがわかる ・4月はチケット少ないが平均完了日 数が長い ・5月がチケット多いが、4月より平 均完了日数短くなっている
  21. 21. 放置日数を描画する gnuplotスクリプト 「UntouchedDays.gp」 で描画 この例では以下のようなことがわかる。 ・問合せは6日以内に回答できている ・20日間放置されたバグが2件ある
  22. 22. 信頼度成長曲線を描画する gnuplotスクリプト 「Gompertz.gp」 で描画 gnuplotにより、 信頼度成長曲線(ゴンペルツ 曲線)にfitさせる 𝒇(𝒙)=𝑲𝒃 𝒆−𝒄𝒙 バグ収束率= バグ数(実績) 𝑲 × 100(%)
  23. 23.  gnuplotを使用すれば関数fitができる ◦ fitする関数を修正すればロジスティクス曲線 f x = 𝐾 1+𝑏𝑒−𝑐𝑥 にすることも可能  定期的に描画すれば徐々に収束率が高くなってい くのがわかる
  24. 24.  Gnuplotでグラフ画像をhttpサーバ配下に出力  画像へのURLを、RedmineのWikiから外部参照
  25. 25.  Wikiでグラフ表示した下に、 注目すべきチケットにすぐアクセス可能にする (Redmine_Wiki_Listsの活用)
  26. 26.  縮小表示機能をつかってダッシュボードを作成  Redmine_Wiki_Extensionプラグインで ダッシュボードにショートカットアクセス デモ
  27. 27.  Jenkinsで毎日集計スクリプトを実行 ◦ RedmineのRest APIにより取り出される  gnuplotでグラフ化  RedmineのWikiが更新される!
  28. 28.  実行するツールをリポジトリから取り出せる  柔軟なスケジュールを定義できる  エラー時にメール通知できる  様々なプラグインにより動作を拡張できる
  29. 29. Perlスクリプト (Rest API) 集計ファイル (TXT) gnuplotWikiから http参照 画像ファイル 毎日実行 (Jenkins) Excelで集計 PPTに貼付け 高機能BIツール
  30. 30.  ハンドルネーム @mattani  所属 NTTコムウェア(株)  Redmine歴 ◦ Redmine管理者歴 約4年 ◦ 第6回勉強会(2014/2)からredmine.tokyo運営スタッフ ◦ ユーザ数120名。プロジェクト数 15~20 ◦ タスク管理、課題管理、インシデント管理、検証設備利用申 請管理、工事管理、ヘルプデスク問合せ管理、 脆弱性管理 他  業務経歴 ◦ 開発経験17年、運用経験5年 ◦ 現在は、某システムの運用担当(SE)でRedmine管理者 ◦ Redmine経験を活用して社内で導入コンサル対応やってます

×