見出し画像

第171回: 「統計の実務」31 EVM その2(EVM とは)

◀前の記事へ   次の記事へ▶

≡ はじめに

前回は、「EVM その1(イントロ)」でした。

EVMの軽い紹介のつもりでしたが、EVMが、Earned Value Management(アーンド・バリュー・マネジメント)の略であることすら書いていませんでした。

そこで、今回は、EVMの説明です。グラフは一番基本的なものをggplot2とExcelで描いてみます。



≡ EVMとは

前回ご紹介した、経産省が発行した『 EVM活用型プロジェクト・マネジメント導入ガイドライン』(以下、EVMガイドラインと略す)をもとに概要について書きます。

EVMは「イー・ブイ・エム」と読みます。EVMは“Earned Value Management”の略です。こちらは、「アーンド・バリュー・マネジメント」と読みます。

日本語で言うと「出来高管理」ですが、出来高管理と言うと公共事業の会計システム(EVMS)のことを指してしまいます。(こちらがオリジナルです)
ですから、ソフトウェアのプロジェクトマネジメントで使うときにはEVMあるいはアーンド・バリュー・マネジメントと言うほうが良いです。

EVMガイドラインでは、EVMのことを以下のように定義しています。

プロジェクトの進捗や作業のパフォ ーマンス、今後の予測などを、出来高の価値(通常は金額換算)によって把握・管理する方法。具体的には以下に示す BAC~EAC 等の指標を用いて、 進捗の把握・分析を行う。

EVMガイドライン p7

上の説明にある「出来高の価値」のことを“Earned Value”といいます。

EVMガイドラインの説明を一言でいえば、「プロジェクトの進捗管理をお金1本で行う」ということです。

「お金1本で」というところがポイントです。

週報会などで、「プロジェクトのQCDはどうなっている?」と質問されたことがあるかもしれません。
その質問に対して、例えば、「まず、品質ですがバグが出続けています。予算は残りわずかです。納期はギリギリ間に合いそうです」などと答えたりします。
私は何も疑問に思わなかったのですが、よく考えるとプロジェクトの進捗について3軸で聞かれて、それぞれに答えています。

プロジェクトのQCDの進捗

絵にするほどのものではないのですが、プロジェクトの進捗確認の質問が3つもあるというふうにも見えます。
さて、品質と納期はトレードオフと言っても単位が違いますから比較は困難です。また、気が短い偉い人は『結局のところ間に合うのか、間に合わないのか? 間に合わないとしたら納品の期日までにどこまでできるのか? 当初に計画したものを完成させるには、あとどのくらいかかるのか?』が簡単にはわからないので、イライラします。

それならいっそのこと、QもCもDもすべてお金に換算してしまえというのがEVMの発想です。そうすれば、横軸に日付をとって、縦軸をお金にしたグラフがかけて、それを見たら一目で状況を把握できるのではないかということです。
そうしてできたものが前回のキャッチイメージの「EVMグラフ(PV、EV、ACの推移グラフ)」です。

EVMガイドライン p3



≡ EVMの3つの柱

EVMによって分かることは、
  1. 現時点でプロジェクトがどれだけ進行したのか
  2. 計画と実績との乖離の大きさ
  3. このまま推移するとどうなるのか
の3点です。

EVMでは、PV(計画)とEV(実績)とAC(費消済コスト)を入力として、「進捗の分析」と「今後の予測」を行います。
ですから、まずは、PVとEVとACについて知る必要があります。データを用意できなければ、始まりませんから。

今回用意したデータはこちらです。EVMガイドラインのグラフから読み取ったものです。
PV/EV/ACについて全てお金で表現されていることに注意してください。また、EVとACについて途中までしかデータが無いのは、実績値だからです。(2022/5/27あたりに作った表と考えてください)

EVMガイドライン p3のグラフから読み取った値

入力の手間を省くためCSVファイルを置いておきます。


■ PV(出来高計画)

PVは“Planned Value”のことで、出来高の計画値です。

さて、上の表のPV列をどうやって作るかですが、最初と最後の行が大切です。

PVの最初の行(開始日と金額=0円)
PVの最後の行(完成日と金額=35万円)

EVMは、「プロジェクトの進捗管理をお金1本で行う」と上で書いたとおり、「プロジェクトありき」です。
さて、プロジェクトの定義は以下の通りです。

PMBOKのプロジェクトの定義

ここにある「有期性」というのは、「開始時点と終了時点が定義される」ことを意味します。つまり、プロジェクトである限り、PVの開始日と終了日は明確であるはずです。
次に終了日の金額が35万円なのは、プロジェクトが完成するまでにいくらコストをかける計画なのかということです。
例えば、仕様書を書くのに20時間かける計画だったとします。仮に要員単価を時給5,000円としますと、5,000円/時間×20時間=10万円となります。ほかにも、コーディングやテストの時間を足してプロジェクト全体で35万円の計画ということです。(まともなWBSであれば、各行(各タスク)には、そのタスクの作業成果物が書いてあります)

作業工程ごとに分けて、出来高計画を立てます。例えば、こんな感じです。

工程ごとのPV(出来高見積)

上の表では、工程ごとに必要とする時間が出ていますので、あとはカレンダーに割り振れば、PVの作成は完了です。

割り振りは週単位程度の粒度が使いやすいです。


■ EV(出来高実績値)

EVは“Earned Value”のことで、出来高実績、すなわち、仕事によって作り出した価値の実績値です。これをどうやって求めるかというと、上の表に進捗率を入力するだけです。

進捗率を入力して求めたEV(出来高実績値)

進捗率の合計は、合計の行にあるEV/PVとなる点に注意してください。

■ AC(コスト実績値)

ACは“Actual Cost”のことで、実際にかかった費用です。これをどうやって求めるかというと、「勤務時間×要員単価」です。

ACの計算は簡単ですが、複数業務を掛け持ちのときどうするか? とか、要員単価が違う人複数で作るときにはどうするか? とか、それ以前に「要員単価はマネージャーしか知りません」といった問題は発生しがちです。


≡  EVMグラフ

EVMグラフは、描かなくてもよいのですが、描くとしたら上のCSVをRコマンダーで読み込んで、ggplot2パッケージを使って、サクサクっと描くのが良いと思います。(本当は、WBSと連携したEVMを描けるプロジェクトマネジメントツールを使うべきです)

さて、ggplot2ですが、まずはオプションのRパッケージなので、「install.packages("ggplot2", dependencies=TRUE)」でインストールしておきます。(もちろんRのメニューからインストールしても構いません)

あとは、CSVを読み込んでから下記のようなスクリプトを実行します。

library(ggplot2)

EVM <- Dataset

library(tidyr)
EVM <- gather(EVM, key = "Type", value = "Cost", PV, EV, AC)

# 年数を削除
a <- format(as.Date(EVM$day, format = "%Y/%m/%d"),"%m/%d")
library(dplyr)
EVM = mutate(EVM, day = a)


g <- ggplot(EVM, aes(x = day, y = Cost, color = Type, group = Type)) +
     geom_line(size = 1) +
     xlab("Date") + #x軸の軸ラベルを指定
     ylab("金額") + #y軸の軸ラベルを指定
 theme(
  axis.text.x = element_text(angle = 30, hjust = 1),
  axis.text.y = element_text(size = 10),
  axis.title = element_text(size = 10),
  legend.text = element_text(size = 10),
  legend.title = element_text(size = 10)
 )

plot(g) #作ったグラフを画面に表示

ggsave(plot = g, file = "EVM.png", w = 6, h = 3, dpi = 600#pngでグラフを保存

すると、こんなグラフが現れます。ggplot2は凝りだすと切りがないのでやめどきが難しいです。

EVMグラフ(PV、EV、ACの推移グラフ)

Excelでも構いません。選択して「お勧めグラフ」を選ぶとこんなのを描いてくれます。
X軸についてカレンダースケールになっているところが良いですね。ggplot2でも出来ますが、上のグラフではしていません。


≡  おわりに

今回は、EVMの紹介でした。

次回は、EVMの使用上の注意点について書きます。
使い始めるとすぐに悩みが出るので、その辺についてです。

◀前の記事へ   次の記事へ▶

この記事が気に入ったらサポートをしてみませんか?