スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Redmineバーンダウンチャート表示プラグイン

前回に続いて再びRedmineのプラグインを公開。

バーンダウンチャートはアジャイルの開発によく使用されているもので、進捗率に比べて、実際に進捗状況がより可視化される点が利点となっている。

burndown.png

Redmineにもいくつかバーンダウンチャートのプラグインがあるが、2系でしか動かなかったり、有償だったり、何よりも残工数の計算の仕方が気になる。

私自身のバーンダウンチャートの理解では、日々の進捗報告の際、そのタスクに対して、あとどのくらいかかかるかの見積りを行い、それを記録し、グラフ化して理想的な進捗と比較するというものである。残作業については、時間で計算するタイプと、ストリーポイントで計算するタイプのものがあるが、ここでは前者に絞る。

例えば、あるタスクに最初15時間を見積もっていたが、開始してみると思ったよりもボリュームや難易度が高くて、その日6時間かけたものの、残り9時間では住みそうではなく、あと12時間必要となったら、それを書き入れる。それを日々更新していくと、実際に手をつけているので、より正確になる。途中でスコープが追加になったとしても、それを残工数に組み入れる形になる。

これは進捗率と比べると優位性が明らかになる。進捗率は見た目、ほぼ完了となって90%とやったとしても、実際そこから完成に持っていくためには結構時間がかかる。そうすると、後もうちょっとが延々と続くことになる。そうすると実際それがいつ完了するのかが見えてこない。

ところが、世の中のツールを見ていると、必ずしも私の理解とは一致しない。他のRedmineのプラグインもチケットの進捗率をベースにしているものが多い。先の例でいうと、1日で進捗が20%だった場合、残工数は12時間と判断する。進捗90%までいくと、残り1.5時間となる。多くの場合プロジェクトでまとめて集計するため、全て合計して残り時間を算出し、それをグラフ化する。
正直これでは、進捗率を横軸に日にちを置いたグラフと変わらない。これを逆にして進捗率が上に上がっていくようにすればバーンアップチャートになる。
進捗率の変動をグラフにして見るのはありだろうが、これは正確に物事を反映しているといは言えない。先の例にあるように、90%から先進まないというケースもあり、そもそも進捗率などテキトーなものである。それに対して、残工数は、進捗率に比べて言い訳ができない。
全体の進捗であれば、Redmineで開発フェーズを親チケットととして切って、その下に各機能を子チケットとすれば、全体の進捗は自動的に計算されるので、これらのプラグインは不要である。

この計算方式は、Redmineと並んで有名なプロジェクト管理ツールのBacklogでも同じだった。残工数を入力するようなところはなく、こちらはむしろ、チケットが完了しないと、バーンダウンチャートに反映されないようになっている。これは結局、グラフを下に向けて、進捗の可視化を強化したものに過ぎない。

さらには、かけた工数を減らしていくような計算式もある。これは全くナンセンスである。単純作業で時間と成果が比例しているのであれば、事故がない限り、残り時間も正確に見れる。これは、むしろ仕事をしたかしていないかということにチェックの重点が置かれる。ところが、ソフトウエアの開発作業は創造的な作業であり、進めるうちに予期せぬことが多発するため、見積りを正確に行うことは不可能である。

正直、自分の理解が正しいのかどうか、かなり不安になってきて調べたものだ。

ということで、今回自分で作成した。
そして、他のプラグインが、プロジェクト単位で集計するのに対して、私が作成したものは、チケット単位で集計が可能である。もしそのチケットに子チケットがあれば、それら全て含めて集計する。つまり単一の機能開発単位でも見れるし、それを集めたグループ単位で見ることもできる。

重要なのは、以下の二つを必ず入力することである。
・初期の見積り(予定工数)
・期日
・残工数
 これは作業をした場合、日々入力する必要がある。
 進捗がなければ、入力する必要はない。前回の値がそのまま使用される。

標準では、残工数を入力するフィールドはないため、このプラグインを入れると自動的に、残工数のカスタムフィールドが追加される。そしてプロジェクトでこのモジュールを使用するようにすると、このカスタムフィールドをプロジェクトのチケットで入力可能になる。

チャートでは、指定チケット(子孫チケット含む)の予定工数合計を出発点として、期日に残工数が0になるように理想的な進捗工数のグラフが表示され、日々の残工数の入力を合計して、それをその間の日付に実残工数としてプロットする。

プラグインの入手先は、こちら。
https://github.com/dayan888/redmine_issue_burndown_chart

ここから開発の話:

開発においては、チャートの描画は、chartkickを使用した。これはRailsで簡単にチャートを扱えるもので(実際はJSで稼働)、いろんなチャートが作れるが、今回は複数のラインチャートのみを使用した。
ここまで行けば、あとは簡単だと思ってしまうのだが、いつものごとく周辺周りで異常に時間がかかった。最初新規の管理テーブルを追加しようと思ったが、チケット登録時にそこに残工数の入力を入れなければ行けないのが面倒なのでカスタムフィールドを使うことにしたが、プラグインのインストール時にどうやってテーブルに値を入れるか、またプロジェクト用のフックは用意されていないため、Rubyのクラス拡張ミックスインで元のProjectControllerには手を加えずに機能追加した。こういうあたりが時間がかかった。
あとは、developmentにしているのに、
Unable to autoload constant...のエラーが出て、unicornの再起動を気なくされ、これが起動に時間がかかり、本当はささっと試したいのだが、一つ一つ時間がかかり、生産性はガタ落ちだった。
結局のところ、この原因は、ProjectControllerの拡張のところと、Controllerのunloadableだった。前者は、マイグレーションのところでしか使わないので、その実装が終わったら、開発中はコメントアウトした。後者は、これまでおまじないとして何の疑問もなく入れていたが、文字通り、これが入っているとauto reloadはできないようだ。そこからはだいぶ楽になった。あとは、Railsの2系と3系の違いが多すぎで、2系で作られたプラグインはあまり参考にならないこと。
スポンサーサイト

Redmineチケット一括作成プラグイン

RedmineのチケットをWeb画面上から一括して作成するプラグインを作成した。
これまでチケットを一括で登録するには、標準のインポート機能を利用して、CSVを作成して、アップロードするか、
エクセルで作成して、APIで登録するアプリの二種類があった。


前者は、親子関係は定義できないし、アップロードしてから項目のマッピング設定が面倒、後者はWindows版のみでMac版は提供されていない。

いずれもローカルで、CSVやエクセルで編集してからという形で、Web画面上から入力するタイプのものは存在しない。
ということで、自分で作ることにした。

bulkcreate.png

カテゴリやバージョンなどは今回のものでは設定できない。Redmineには一括して修正することは容易にできるので、厄介なチケット作成を一回でやってしまうのが目的。
チケットの親子関係も何階層にも渡って可能。

プラグインのインストールは以下から。
https://github.com/dayan888/redmine_issues_bulk_create

今回初めてGitHub上にソースコードを含めて公開した。
が、もう3週間近く経つのに、なぜかGoogleの検索エンジンには引っかからない。どころかGitHub上で検索しても出てこない。どこかにIndex拒否の設定があるのだろうかと思ったが、そうでもなさそう。なのでなんとか、このブログのリンクで貼って欲しいところ。

今後の修正予定:
・カテゴリやバージョンも必要であれば項目を表示し登録できるようにする。
・トラッカーや担当者、開始日、期日に同じ値を入れられるようにする。
・プロジェクトのテンプレートは似ているので、基本的なパターンをテンプレートとして登録して登録し、デフォルトでその形を登録できるようにする。
・登録を通常のフォームSubmitで行なっているため、サーバ側でエラーがあった場合に、入力内容が全て失われるので、バックグラウンドでSubmitするようにする。
・時々なぜか開始日・期日の値が入らないことがある問題の修正。

フィジー旅行記(12) 第9日目 離島ティヴュア島

最終日、晴れると分かっていた日は最後のチャンスとして離島に行くことにした。
行ったのは、送迎サービスの会社に一番のおすすめとされたTivua Island。地図に載っていないから、どこにあるのかと思ったら、ナンディというかラウトカ寄りの本島のそばにある。写真を見る限り白浜である。

元々1日は離島に行こうと思っていたが、そもそも6日も雨になるとは思ってもいなかったので、十分にシャングリラホテルを利用した気がしないのに、離島に行くのは中途半端でもったいない気がして迷ったが、結局行くことにした。
事前にハリケーンの影響を確認したところ、昨日のうちに奇麗に清掃して、今日はツアーが行われるとのこと。
ツアー会社に申し込んで、ホテルでピックアップをしてもらった。デナラウの港まで1時間で行けるはずだが、余裕をもって2時間前にピックアップするとのこと。

ところが、約束した時間に車は来ず、30分遅れてやってきた。それでも間に合うだろうと思ったが、なんと途中で大渋滞。ナンディのかなり手前で止まっている。歩いたほうが速いと思うぐらいにしか進まない。今回の旅はなんとツイていないことかと落胆した。せっかく晴れたのにこれか。このペースでは2時間ぐらい遅れ、さすがにそこまで待ってくれないだろうと思った。
が、思ったよりも早く抜けた。抜けた時には他の乗客から拍手が沸き起こった。渋滞したポイントは、道路がデコボコになっているところ。これで渋滞を引き起こしているのなら、さっさと修復しろと思う。もともと一本しか道がないところに、車が増えてきているので当然渋滞になる。

港

とはいってもすでに船の出発時間を過ぎている。15分遅れでデナラウ港に着くと、他の乗客はそれぞれ別の行先に向かった。つまりティヴュア島に行くのは自分たちだけ。どこに行けばいいのかわからないまま、進んでいくとチケットを見せろと言われて、無事船に乗り込むことができた。

港

すぐに船は出発。

港

船にはたくさんの客が乗っている。アメリカから来た人も多い。中国人もそれなりにいる。日本人はたぶん他にいない。
船の中では、飲み物やお菓子が提供され、スタッフが話をしたり歌を歌ったりして飽きないようにしている。

1時間ほどで、やがてTivua島が見えてくる。あとで、こんなに近い場所で1時間以上もかかっていたのでは、他の離島にはどうやって行けるのか聞いたら、この船は超スローだからだとのこと。そこまで遅くは見えないが、もっと速く行けるのがあるのだろう。ツアーとしてはこの船でも時間が十分だから使っている模様。

Tivua

ところは桟橋はハリケーンで壊れ、使えないため、ミニボートに乗り換えて順次送られていく。これは結構時間がかかる。

Tivua

海はエメラルドグリーン。砂はまだまだ茶色が入るが十分白い。

Tivua

完全にリゾート気分満開。着いたら、それぞれが自由行動。無料でスノーケリング、カヌーができ、飲み物は自由に飲める。
一周10分で回れる小さな無人島。

Tivua

Tivua

Tivua

海水は透明だがシュノーケリングをしてみると、浅瀬では砂が混じって透明には見えない。少し沖まで行くと透明度を増す。やはりシュノーケリングは砂浜ではなく、サンゴのビーチで行った方がよさそう。魚も浅瀬にはあまりいなくて、少し離れたところで大群に遭遇した。

Tivua

ランチビュッフェがあったが、種類は少なく、味もいまいち。毎度運んできているのだからこれは致し方ない。

Tivua

疲れたらハンモックで休める。
再び、船に乗り込んで港に戻る。

港

帰りのバスはさほど渋滞はしなかったが、酒に酔った若者が騒いで結構厄介だった。

◆最終日(10日目)
最終日は日本に帰るのみの活動。
朝早く起き、朝食のビュッフェが始まる前に出発。今回は、車は時間通りに迎えに来た。ルームチャージでホテル内で購入したものについては前日に精算しておいたおかげで、チェックアウトはほとんど時間がかからず、借りていたがほとんど使わなかった電源変換プラグを返却して終わり。

車の中で、フィジーの人の困窮ぶりについて聞かされた。物価は高いのに給料は低いので生活が厳しいと。それでも皆楽天的に幸せに暮らしている。それを思うと外国人はリゾートに来て遊んで贅沢しているように思えたが、フィジーは観光業が大きな産業なので、私たちのような外国人が旅行に来ないと仕事がなくなってしまうとのこと。自分たちの贅沢がフィジーの人の生活を支えているという何とも言えない構造。この運転手は自分の車を持つことが夢だそう。会社ではなく自分で車を持てるのはそれなりに稼いでいる人でないと駄目のようだ。

再度ナンディの手前で渋滞した。ただし昨日よりは先まで進んでいるし、時間も余裕があったので心配はしなかった。
空港のVodafoneでバスカードの精算をしてお金を払い戻してもらおうとしたら、ナンディの街ならできると言われ拒否された。
機内泊だった行きと違い、帰りは日中に移動するので楽だった。機内泊できちんと寝れる人はその方が時間を有効活用できると思うが、自分の場合は横になって寝たい。日本に着いたときは夜9時半、そこからスカイライナー・電車・タクシーと乗り継いで帰る。一日が移動で終わった。単に座っていただけなのに結構疲れる。

総括としては、天気が重要、行く時期はよくよく検討すべし。

以上、旅行記終わり。

フィジー旅行記(11) 第8日目 ナンディ

今日も朝から雨と強風、さすがにプールで遊ぶ人はいない。
が、午後から晴れることは分かっている。なので、昼からナンディに行くことにした。
翌日は離島に行くのを決めたため、ナンディに行くののは今日しかない。

バス停で待っていると雨が強くなってきた。そこでまたタクシー運転手がしつこく誘ってくる。
バスがなかなか来ない。ちょうどバス停に着く前に通り過ぎてしまい、その後30分待っても来ない。そこでタクシー運転手から提案で、乗り合いで割り勘にして、かつ安くするとのこと。他の待っている客から持ち掛けられたが断った。せっかくあるバスカードを使うという、くだらない拘りがあった。

そこにやっとバスが来た。バスといっても、バンをバスに変えただけで、外側にそれっぽく、SUVA-NADIを巡回している旨書いているだけ。中にはすでに10人ぐらい乗っている。幸いあと2人入れそう。車さえ持っていれば、あとは巡回して客を乗せればいいので誰でもバス業界に参入できそうである。
それでバスカードが使えるかと思ったら、現金でないとダメ。なんだ、結局バスによって現金だったり、バスカードだったりする。こういう小型では現金が必要。迷ったが1人5ドルでOKだったので、そのバスに乗り込んだ。タクシーなら100ドルかかるところである。

フィジーの道はところどころ穴が開いていて、その手前は車は減速して通る。これが渋滞を引き起こしたりする。
ナンディに到着するころには天気はすっかり晴れた。たぶんこの日シャングリラで過ごすべきだったと後で思った。

ナンディ

バスターミナルで帰りの最終便を確認。これはバス会社ごとに異なるので、本当の最終便を知るには全部調べる必要がある。幸い、とある会社でちょうどいい時間だったので、その時間に戻ってくることにした。

ナンディ

ナンディは都市といっても、特に高層ビルはない。2階建ての建物が並び、街全体もそれほど大きくはない。食堂は多いが、中国人が経営している店が多く、メニューは似たり寄ったり。

ナンディ

ナンディ

土産を買うことが目的だったが、そもそも旅行者向けの店など空港でないとない。観光地ならそれが当たり前だが、ここは通常の都市。東京でも店はいくらでもあるが、そんな店を探すのは実は難しい。土産物屋といえば、いろんな飾りを作っている店。その店に入ると、店主からKavaでもてなすと言われ、ここでもKavaを飲んだ。折角だから、何か買っていこうと思ったが(この見返りが店主が期待しているところだが)、結構高い。これならシャングリラホテル内の店で買った方がいい。困ってしまい、後で来ると言ってうまく逃げようとしたが、ドネーション!と言われ、Kavaを飲んだお礼として、2ドルを入れて店を出た。

20180411_150608.jpg

中華料理店で食事をとった。味は良かったがとにかく量がびっくりするぐらい多い。
ついでに土産をどこで買ったらいいか聞くとTAPPOで買うといいと言われ、行ってみたら5時ちょうどで店が閉まってしまった。シャングリラホテルに戻ると、同じ店が出店していて、結局土産はシャングリラホテルで買ったので、ナンディに行く意味がなかった。単に街をぶらぶらして終わった。

◆バスで帰る
バス停に戻り、そこでバスカードを渡すと一人当たり4.6ドル取られた。ミニバスが5ドルなので、大体相場をそろえている模様。そこそこ大きいバスだが、出発するとすぐに渋滞に巻き込まれた。
バスは次の停留所の案内などしてくれないので、自分で判断して行う必要がある。最初は運転手が全部覚えてくれると思ったが、今回は支払いはバスターミナルで行ったので、やはり自分の判断となる。夜で暗いので外を見ただけでは、自分の目的地に近づいたかどうかはわからない。このとき役立ったのがGPSである。WIFIはつながらないものの、一度DLした地図はGoogle Mapで残っているおかげで、大方の場所は分かる。そこで目的地に近づいた段階でSTOPボタンを押し、無事降りることができた。GPSがなければ、まず不可能だった。

フィジー旅行記(10) 第7日目 ハリケーン

今日は朝から強風。すごい雨だ。

ホテル

この日は何もできず、部屋で一日過ごす。この雨をものともしない、他の客(子供たち)たちがプールで遊んでいるのが聞こえてくる。土砂降りの中、あたかもシャワーを浴びているかのように雨に当たりながら遊んでいる。雨だと気温が低いのによくできると感心する。

流石に雨が強くなり続けて、プールから誰も居なくなったが、従業員たち?が遊んで水たまりにダイブしている。
後で知ったのは、台風で流されないようにマリン施設を片づけていたようだ。

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。