ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

「残存作業時間を優先」設定を理解する

はじめに

Microsoft Project 及び ProjectLibre にはタスクに「残存作業時間を優先」設定があります。この設定は挙動が分かりにくく、予期しない結果になりやすい設定でもあります。このエントリでは様々な資料からその仕様を解き明かすことを目標としています。

挙動の確認を ProjectLibre v1.6.2 で行いました。
あいにく Microsoft Project を持っていないため、挙動の確認はできませんでしたが、できる限りの範囲でサイトや書籍を参考にし、相違ないことの確認を行いました。

説明

「残存作業時間を優先」設定はタスクの種類の設定に加え、タスクにアサインするリソース数の増減に対してタスクの作業時間を固定とする設定です。

ここでポイントとなるのが、「リソース数の増減」です。タスクにアサインするリソースを追加もしくは削除する場合は「リソース数の増減」に当たります。タスクにアサイン済みのリソースの単位数を変更する場合は該当しません。

以下に挙げる項目の変更については「残存作業時間を優先」設定が適用されません。
・作業時間
・期間
・アサイン済みリソースの単位数

タスクの種類が「作業時間固定」の場合、「残存作業時間を優先」設定はON固定となります。なぜなら、作業時間固定のタスクではツールが自動で作業時間の値を変更できず、必然的に残存作業時間を優先することになるためです。

タスクの種類と[リソース数/単位数/期間/作業時間]を変更した場合に再計算される項目を以下の表にまとめます。

タスクの種類 リソース数変更(※1) 単位数変更(※2) 期間変更 作業時間変更
期間固定
[残存作業時間を優先]ON
単位数 作業時間 作業時間 単位数
期間固定
[残存作業時間を優先]OFF
作業時間 作業時間 作業時間 単位数
単位数固定
[残存作業時間を優先]ON
期間 期間 作業時間 期間
単位数固定
[残存作業時間を優先]OFF
作業時間 期間 作業時間 期間
作業時間固定 期間 期間 単位数 期間

※1 リソース数変更:タスクにアサインするリソースを追加もしくは削除する。
※2 単位数変更:タスクにアサイン済みのリソースの単位数を変更する。

Microsoft Project のヘルプでは「残存作業時間を優先」設定を以下のように説明しています。

タスクにリソースを割り当てたり削除したりすると、Project では、割り当てられたリソースの数に基づいてタスクの期間だけが変更され、タスクの作業時間の合計は変更されません。これは残存作業時間を優先するスケジュール方法と呼ばれ、リソースをタスクに割り当てるときに Project でよく使われる設定です。

タスクの種類の残存作業優先設定を変更する - Project

実例

Microsoft Project での実例を示した資料を参考に説明します。
http://www.projectlearning.net/pdf/D2.2.pdf

リソースアサインされておらず「残存作業時間を優先」設定ONのタスクにリソースを追加した場合(資料P4)

タスクの作業時間は最初にアサインされたリソースの作業時間の合計となります。

以下のタスクを考えます。

項目
タスクの種類 単位数固定
残存作業時間を優先 ON
期間 10日間
リソース アサイン無し。

このタスクにAさんとBさんを単位数100%で追加します。すると、タスクは以下のように変更されます。

期間 10日間(変わらず)
リソース Aさんの単位数100%、作業時間80時間。
Bさんの単位数100%、作業時間80時間。

このタスクの作業時間は160時間です。

リソースアサイン済みかつ「残存作業時間を優先」設定ONのタスクにリソースを追加した場合(資料P3)

「残存作業時間を優先」設定に基づき、リソースが追加されてもタスクの作業時間を固定にして計算します。

以下のタスクを考えます。

項目
タスクの種類 単位数固定
残存作業時間を優先 ON
期間 10日間
リソース Aさんの単位数100%、作業時間80時間。

このタスクの作業時間は80時間です。

このタスクにBさんを単位数100%で追加します。すると、タスクは以下のように変更されます。

期間 10日間

5日間
リソース Aさんの単位数100%、作業時間80時間。

Aさんの単位数100%、作業時間40時間。
Bさんの単位数100%、作業時間40時間。

このタスクの作業時間は80時間です(変更無し)。

リソースアサイン済みかつ「残存作業時間を優先」設定OFFのタスクにリソースを追加した場合(資料P7)

このケースでは追加されたリソースの作業時間がタスクの作業時間に加わります。

以下のタスクを考えます。

項目
タスクの種類 単位数固定
残存作業時間を優先 OFF
期間 5日間
リソース Aさんの単位数100%、作業時間40時間。

このタスクの作業時間は40時間です。

このタスクにBさんを単位数50%で追加します。すると、タスクは以下のように変更されます。

期間 5日間(変わらず)
リソース Aさんの単位数100%、作業時間40時間。

Aさんの単位数100%、作業時間40時間。
Bさんの単位数50%、作業時間20時間。

このタスクの作業時間は60時間に変更されます。

注意点

「残存作業時間を優先」設定ONの作業時間は最初のリソース割り当てで決まる

Microsoft Project のヘルプには以下の記載があります。

例外 説明
最初の割り当て 残存作業時間を優先する計算が適用されるのは、最初のリソースをタスクに割り当ててからになります。一度リソースが割り当てられると、同じタスクにさらに新しいリソースを割り当てたり削除したりしても、作業時間が変更されないようになります。
タスクの種類の残存作業優先設定を変更する - Project

この仕様を説明した記事があります。この記事をベースに以下で説明します。
Fixed Duration and Effort Driven Task in Project 2013 | MPUG

まず、以下のタスクを作成します。

項目
タスクの種類 期間固定
残存作業時間を優先 ON
期間 5日間

このタスクにリソース4名(記事ではJohn,Mary,Peter,Paula)を「一度に」アサインします。
この結果として、4名共に単位数100%、作業時間40時間となります。また、タスクの作業時間は4名×40時間で160時間となります。

ここでタスクに割り当てたリソースを全て削除し、リソース4名を「1名ずつ」アサインします(John,Mary,Peter,Paulaの順)。
この結果は4名共に単位数25%、作業時間10時間となります。先ほどとの違いは最初にJohnのみをタスクにアサインしたことで、タスクの作業時間が1名×40時間で40時間となったことです。その後、リソースを追加するごとにこの40時間が分割され、3名追加(計4名)された時点で単位数25%、作業時間10時間となったのです。

Project 2010 以降の単位数の動作

Project 2010 以降、単位数の動作が変更されたそうです。

[期間固定]で[既存作業時間を優先するスケジュール方法]が有効なときの単位数の動作が、Project 2010以降では変更されています。従来は、割り当て単位数そのものが100%→50%という動作でしたが、Project 2010および2013では単位数は100%のまま変更されません。割り当ての割合自体は変更されていますので、リソースグラフなどの最大使用数で確認することができます。
引用元:ひと目でわかる Project 2013 (ひと目でわかるシリーズ)

ひと目でわかる Project 2013 (ひと目でわかるシリーズ)

ひと目でわかる Project 2013 (ひと目でわかるシリーズ)

"Dynamic Scheduling With Microsoft Project 2013: The Book by and for Professionals" の "Chapter8: Entering Assignments" にタスクの種類と[リソース数/単位数/期間/作業時間]を変更した場合に再計算される項目をまとめた表がありますが、そこでも再計算される項目は単位数(Units)ではなく、最大使用数(Peak)となっています。

Dynamic Scheduling With Microsoft Project 2013: The Book by and for Professionals

Dynamic Scheduling With Microsoft Project 2013: The Book by and for Professionals

この動作変更に関してMicrosoft Project のヘルプで関連すると思われる記載がありましたので、引用いたします。

注: [最大使用数] の値が [割り当て単位数] フィールドにも反映されていないでしょうか?
この場合の答えは「いいえ」です。 Project 2010 より前のバージョンでは、[割り当て単位数] フィールドは、プロジェクトのタスクに割り当てられたリソースの時間がどのくらいかを示すのに使用されていました。 また、このフィールドは、リソースがタスクの作業をしていたときのそれぞれの時点での最大値を反映するよう、プロジェクトの進捗に合わせて更新もされていました。 その結果、スケジュールの問題が発生したため、[割り当て単位数] フィールドは、実際の作業がプロジェクトに追加されても、同じ値を維持するよう調整されていました。 [最大使用数] フィールドは、割り当ての最大単位数を示すもので、割り当て超過量を特定するのに使用できます。

最大使用数 (タスク フィールド) - Project

まとめ

プロジェクトの計画段階で「残存作業時間を優先」設定をONにすることはあまりお勧めしません。プロジェクトの計画段階でリソースの追加・削除を繰り返し行う内に、単位数や期間が意図せず変更されてしまうことがあるためです。
「期間固定」「単位数固定」のタスクにおいては「残存作業時間を優先」設定OFFを基本とし、必要に応じて変更することをお勧めします。