スキップしてメイン コンテンツに移動

Redmineで計測するEVM その4 (チャート表示をHighchartsへ)

先週の残課題だった、グラフ表示をHighchartsへ変更する対応をしてみました。
Highchartsは見栄えの良いグラフを、簡単に表示させる事ができるのでお気に入りです。

http://www.highcharts.com/demo


デモで色々なグラフをみる事が出来るので興味のある方はどうぞ。
グラフのプロパティなどの設定値はオンラインですぐに確認できるデモ?もあるので日本語で解説されなくとも試行錯誤しながら、表示させたい設定を探せると思います。


redmine_evmのチャート表示部分をHighchartsのFunctionへ差し替えるくらいの簡単な対応でチャート表示可能でした。


https://github.com/momibun926/redmine_evm/tree/change_graph



こんな感じで表示されます。
下段の凡例をクリックすると、グラフ線の表示と非表示が切り替える事が出来ます。
右上のボタンでグラフを画像でダウンロードできます。



Hoverで値が表示されます。特に難しい設定もなく、こんな見栄えのグラフができるなんて最高です。

期間の長いプロジェクトでは、1~2週間だけ見たい場合もあると思います。
そんな時には、グラフの拡大したい期間を選択するとズームすることもできます。



 拡大されて表示されます。戻したいときは右上の「Reset Zoom」ボタンを押すと元の表示戻ります。






コメント

  1. あまりにも本家からかけ離れてきたので、新しいリポジトリに移動します。

    返信削除
  2. 新しいリポジトリはこちら
    https://github.com/momibun926/redmine_evm_custom

    返信削除
  3. 管理人様
    どうもはじめまして。そろそろRedmineをプロジェクト管理ツールとしてちゃんと使ってみようと思い、つい先日からRedmine環境の構築を始めたばかりの者です。
    それに合わせてEVMでの管理もやってみたいなと思いプラグインを探していたところ、こちらのサイトに辿り着きました。
    早速インストールしてみましたが、本家のものと比較して一画面上から拾える情報量の多さとグラフの見易さが断然にイイですね。
    まだ全然使い倒せていないですが、今後是非使っていきたいなと思いました。

    ただ一点、気の付いたことがありましたので、失礼かとは思いましたが書き込ませていただくことにしました。
    動作確認をするためにアクセスログを確認している中で、404エラーが発生していることに気付きました。
    jqueryのjsファイルのファイル名が間違っている箇所があるようです。
    該当ファイルは以下だと思われます。

    redmine_evm/app/views/baselines/show.html.erb

    上記ファイルの6行目、正しくは'jquery.1.9.1.min.js'と思われますので、ご確認いただければと思います。
    このエラーがどのように影響があるのかはわかっていませんが、やはり精神衛生上良くないので。。。


    このような非常に素晴らしいカスタム版を公開して頂き、本当にありがとうございます。
    いくつかチケットを試しに登録してみる中で何度かInternl errorが発生し、ベースラインを登録し直さないと直らないケース等にも出くわしていますが、今後も更なる安定性向上、そして機能アップがされていくことを期待して止みません。
    今後も積極的に使っていきたいと考えていますので、何卒よろしくお願いします。

    返信削除
  4. Goshima様
    コメント頂き有り難うございます。
    jqueryのパスが誤っている件のご指摘ありがとうございます。
    近いうちに直しておきます。
    私、rubyやWeb系の知識がほとんどなく、カスタマイズするのに非常に苦労しております。故に対応も非常に遅くなっていますが、ご容赦ください。
    ※デバッグ環境も構築出来ず、productionのままソース直してredmine再起動して動作チェックの繰り返し(笑)

    もう一点、ベースラインを設定し直さないといけないケースがある事象については、私も経験したことがあります。本家にissueを書き込んだのですが、違う話題になってしまい原因は特定できておりません。進展がありましたら修正しておきます。
    本家が日毎のEVM値計測に対応したり、小さなバグを修正していますので、取り込んで修正し直そうかとおもっています。
    しばらくお待ちください。

    取り込み直しをするにあたって一番悩んでいるのがEVM値をどう見せるべきか?という点です。
    各値は使う人によって見るべきポイントが違うので、今までどおり表示していくのですが、サイドバーに表示するかメインにするべきなのか?
    参考までに、レイアウトについてご意見頂ければと思います。

    返信削除
  5. Nakagama様
    早速の修正、ありがとうございました。

    エラーになる件ですが、ちょこちょこと試している中では今のところ原因の特定ができていません。
    ただ、Redmine試用中ということでテストプロジェクトにちょっとずつチケットを追加しつつ試している中では、結構頻発しています。
    何となくプロジェクト最終日(一番期限の遅いチケットの期限日当日)に新たなチケットを追加してEVMを表示するとエラーになるケースに出くわしたりしますが、これも再現性があるやらないやらで・・・。
    このエラーが取れないと、実プロジェクトへの適用は難しいかなぁという気がしているのですが。(メンバーが混乱すると思うので。)
    確かに本家のissueに書き込んでいらっしゃいますね。原因特定できると嬉しいのですが。

    レイアウトについては、私的にはこれ以上の要望はあまりないですかね。
    個人的に敢えて挙げるとすると、(短期プロジェクトのケースだけなのかも知れませんが)横軸に時刻が出てくるのが違和感があるのと、グラフが曲線であること、くらいですかね。
    日単位・週単位で計測・分析することが多い現状だと、横軸の目盛りは最低スパンが「日」だと見易いかな、というのがあります。
    それをベースに「折れ線グラフ」になると「日(週)毎の集計」という感じで管理し易く、加えて報告もし易いかな。。。と。

    あと、サイドバーは個人的にはありかと思います。
    ただ、サイドバーを隠せるプラグイン等を導入していることが前提かも知れません。
    でも、今の状態も結構見易いですよ。

    返信削除
  6. Goshima様
    返信有り難うございます。
    グラフの横軸の件ですが、全く気付きませんでした。有り難うございす。
    Highchartsの仕様を探って、日毎の表示になる様に調整してみます。
    もしかすると、グラフ表示用データの横軸はUNIX時間?で渡していることが原因かもしれません。原因がわかったら、修正しておきます。
    カスタマイズ中は長い期間のプロジェクトでテストしていたもので、横軸はちゃんと日毎に表示されていると思い込んでいました。

    エラーの件ですが、現段階では正直どこがおかしいのか全く分かりません。
    ただ、ベースラインが確定してその後チケットを登録するとエラーになるパターンがあるというのは、同じ認識です。

    表示の件ですが、サイドバーに表示するかのオプションを選択できるようにしたいと思います。ご意見ありがとうございました。
    また、グラフの件も折れ線に変更しておきます。

    もともと、個人的に利用するためにカスタマイズを始めましたが、本家よりもリッチになってきたので、カスタム版として公開しました。
    せっかく公開したのだから、いろいろ意見を伺いたいなと思って質問をしました。返答頂き有り難うざいます!
    励みになります。



    返信削除
  7. Nakagama様
    お返事ありがとうございます。
    私の意見は少数派かも知れませんので、要望そのまま採用されるとちょっと心苦しいものもあるのですが、素直に嬉しいです。
    既に本家を使う気がないほど感情移入もしてしまっているので、今はカスタム版ではありますが、より沢山の方々に使われるメジャーなプラグインに成長することを願っています。

    会社にEVMな人が何名かいるので、環境構築が落ち着いたところでちょっと使ってみてもらえるように働き掛けてみようと思っています。
    EVMツールって、実はExcelなものしかなかったりするし、管理が面倒だったりで、なかなか浸透しないようなんです。
    かく言う私もまだ実践経験がないので、ちゃんと使いこなせるようにならねば、と思っています。

    返信削除
  8. Nakagama様

    EVM表示時にInternal errorが発生する件についての続報です。
    プログラムロジック上のエラー箇所は追えていませんが、データベース内のデータ的にエラーになる原因がわかったかも知れません(現時点では「推測」の域ですが・・・)。

    【エラーになる再現手順】
     ①. ベースラインを登録する      ⇒EVM表示:OK
     ②. 新たなチケットを登録する     ⇒EVM表示:OK
     ③. ②のチケットの実績時間を登録する ⇒EVM表示:エラー

    ログ出力レベルを"DEBUG"に変更してEVMタブをクリックしてエラーを発生させた後、production.logファイルを参照して実行されたSQLを見てみましたが、②のチケットのIDを用いて以下のテーブルを参照していました。
     ・baseline_issues
     ・time_entries
     ・journals
     ・issues

    上記①のタイミングで"baseline_issues"テーブルにその時点で"issues"テーブルに登録されているエントリーを登録しているようですが、②で新たに登録したチケットに関する情報は"baseline_issues"テーブル内に存在しない状態になります。
    恐らくですが、EVM表示の際、②で新たに登録したチケットの情報も含め"baseline_issues"テーブルから情報を引っ張ろうとしてエラーになる(nil参照している?)のではないかとの結論に至りました。
    ここで試しに、"baseline_issues"テーブルに②で新たに登録したチケットに関するレコードを手でINSERTすると、無事EVMが表示されることを確認しました。

    (ということは、ベースラインを登録した時点で「実績がまだ登録されていない(=終了になっていない)チケット」においてその後実績を登録して終了とした分の実績時間は、例えCurrentのベースラインが未来日であってもEV、AC等に反映されないのかな・・・?)

    先にも記したようにプログラムロジック上で実際にそうなっているのか確認していない(できていない)のであくまでも推測の状態ですが、実際にデータを手挿入するとエラーが出なくなるので、直接的な原因はこの辺りだと思われます。
    Nakagama様の方で、この辺りで何かお気付きになることはございませんでしょうか?


    グラフの方は着々と修正されていらっしゃいますね。issueに挙がっている対応が完了するのが楽しみです。

    返信削除
  9. Goshima様
    連絡有難うございます。
    なるほど、なんとなく状況は理解しました。本家できちんと対応してほしい内容ですね。直し方?がわかったら本家へ要望出します!

    返信削除
  10. もともと、ベースラインを設定した後のチケット登録は計画変更されたという認識で、再度ベースラインの設定しなおしするというのが、根本的な仕様だと推測できます。
    が、しかし、ベースラインを設定しないとEVMの表示ができないので、早い段階でベースラインをせっていすると思われます。
    となると、ベースラインを設定後、チケットはどんどん追加される事が想定されますが、現在の仕様ではかなり精緻化されたチケットの登録が必要となってしまいますよね。あまり現実的ではないですね。。。
    ソースを調査して対応を検討します。と同時に本家へリクエストもしたいですね。
    ご連絡有り難うございます。

    返信削除
  11. 根本的な仕様をあくまでも採用すべきかどうかは、有識者のご意見も伺ってみたいところですね。各プロジェクトマネージャーによってもやり方・考え方がわかれるかも。

    ソース調査と本家へのリクエストの検討、ありがとうございます。
    該当issueが止まったままになってしまっていたので、進展があると嬉しいです。

    返信削除
  12. Goshima様
    1点お願いがあるのですが、よろしいでしょうか?
    先日ご連絡いただいた、チケット登録、実績入力後のエラーの件ですが、よろしければログをコメント欄へもしくはGitHUBのissueへ貼っていただけませんでしょうか?
    こちらでの状況の再現と改善に向けた対応で是非参考にさせてください。
    よろしくお願いいたします。

    返信削除
  13. Nakagama様
    ログの件ですが、少々お時間ください。
    Redmineを入れたPCは会社、会社は外部掲示板への書き込みを禁止しているので直接投稿できず、自宅からorスマホからしかできないのです。
    ログは膨大な量でしたので、どうやってアップしよう・・・。
    場合によっては直送もアリですかね?

    返信削除
  14. Goshima様
    logの件、了解です。
    ご報告いただいたエラーの再現が出来ませんでした。登録するチケットの開始日、期日もエラーの発生する条件にかかわっているのかもしれません。詳細はlogを見て状況を解析してみたいとおもいます。
    送付先は、hajime.nakagma@gmail.com
    へ。
    お手数ですが、よろしくお願いいたします。

    返信削除

コメントを投稿

このブログの人気の投稿

Redmineで計測するEVM

プロジェクトによっては、EVMによって進捗を測っているところもあります。 Redmineでタスク管理をして、作業時間をつけるのですから、EVMも計測可能だと思います。 チケットの作業予定のFromToと、見積もり、完了のステータス、作業時間を利用してEVMを算出するプラグインがありました。 ※EVMについては http://www.itmedia.co.jp/im/articles/0903/31/news118.html に概要がのっています。 EVMプラグイン redmine_evm https://github.com/tksmkw/redmine_evm  DBのマイグレーションもないので手軽に導入できます。本家からフォークされたものですが、HightChartを使っていて、表示されるグラフが洗練されている感じがします。 時間軸は1週間ごとで表示されます。短期間のプロジェクトでは、適用しづらいかもしれません。 PV,EV,ACだけでは物足りないので、以下の指標も表示させるようにしてみました。 PV Planned Value 出来高計画値(計画時点で見積 もった予算コスト) - EV Earned Value 出来高実績値(現時点までに完成 した作業の予算コスト) - AC Actual Cost 出来高実績値(現時点までに完了 した作業の実コスト) - SV Scheduled Variance スケジュール差異 EV-PV CV Cost Variance コスト差異 EV-AC SPI Schedule Performance Index スケジュール効率指数 EV÷PV CPI Cost Performance In

要件定義~基本設計フェーズでRedmineを利用したい

Redmineを要件~設計フェーズで利用したい。 用意するトラッカーは 業務要件 機能概要 お客様とのヒアリングの結果を「業務要件」トラッカーでチケット登録。 内容は、要件の業務背景、目的、期待するアウトプットなど、テストフェーズで業務を意識したテストケースが作成できることをイメージする。 作成したチケットの内容を、お客様とコメントもしくはワークフローでQAのやり取りを行い、要件をFIXしていく。 業務要件の概要がまとまり始めたら、「機能概要」 トラッカーで実装する機能の概要を記述して、「業務要件」トラッカーの子チケットとする。これで要件-機能マッピングが完成。 機能概要が業務要件と視覚的に結びつくことで、機能設計時にお客様の要件を常に意識しながら、作業を行なうことができる。

Pluginのインストール

Pluginをインストールして少し便利にしてみます。Redmineのヴァージョンは2.4.2です。 2.4.2で動作するPluginを探すのに苦労しました。本家のプラグインリストから気になったものをピックアップして、Github等から、2.4.2で動きそうなもの(2.3対応しているもの)を探してインストールしました。 インストール時に、すごく悩んだのがDBのマイグレートが必要なプラグインのときに実行する rake redmine:plugins:migrate RAILS_ENV=production ってコマンド。Redmineのルートフォルダで実行するとエラーで実行ができない。。。 色々と調べては見たのですが、そもそものベースとなる知識が全くないので、苦労しました。 上記のコマンドでなぜエラーになるのかは、まったく理解はしていないのですが、以下のコマンドでインストールすることができました。 bundle exec rake redmine:plugins:migrate RAILS_ENV=production インストール時に少し手間がかかったもの ※とはいってもRailsの知識全くないので苦労しただけだとおもいますが、、、 Knowledgebase Redmine Charts 以下のプラグインは特に悩まず順調にインストールできました。 Paste cropped image Gompertan plugin Progressive Gantt Modifications Redmine Auto Done 100% Redmine Code Review Redmine EVM ezFAQ Redmine Glossary Issue Importer Redmine Issue Checklist Redmine Issue Detailed Tabs & Time Redmine Issue Templates Redmine Local Avatars Redmine Wiki Extensions plugin Redmine Work Time plugin Sidebar Hide