ガントチャート(タスクを横棒にして日付の軸に並べた工程表)の平準化(リソース平準化、英語では resource leveling)は、担当者に割り当てた作業量が、その期間の稼働可能量を超えている状態(過剰割り当て)を、タスクの開始を遅らせるか作業を分割して解消する機能です。負荷の山は消えますが、代わりにプロジェクトの終了日が延びることがあります。この記事では、平準化の意味を生産管理の「平準化」と切り分けたうえで、終了日がどれだけ延びるかを5タスクの計算例で示し、Microsoft Projectの平準化オプションの効き方と、2026年10月時点で平準化を自動実行できるツールを整理します。
まとめ:平準化の意味と使う前に決めること
- プロジェクト管理の平準化は、担当者の過剰割り当てを解消するためにタスクを遅らせる・分割する操作です。タスクを短くしたり人を増やしたりはしません。
- 余裕(フロート)を超えて動かすと終了日が延びます。終了日を動かさない範囲で負荷をならすのは「平滑化」(resource smoothing)で、別の操作として扱います。
- どのタスクを先に遅らせるかで結果が変わります。下の計算例では、同じ5タスクでも優先順位の付け方しだいで終了日が10日にも11日にもなります。
- Microsoft Projectの平準化は既定で手動実行です。実行後は「平準化ガントチャート」で延期量を確かめ、納得できなければ「平準化のクリア」で戻します。
- Project Onlineは2026年9月30日に提供を終えました。デスクトップ版のProject(Standard/Professional 2024など)は対象外で、平準化機能も引き続き使えます。
平準化の意味:プロジェクト管理と生産管理で動かすものの違い
「平準化」という語は、プロジェクト管理と生産管理で指すものが違います。検索結果では両方の解説が混ざって出るので、どちらの文脈かを先に決めておくと読み違えません。
| 文脈 | ならす対象 | 動かすもの | 定義の出どころ |
|---|---|---|---|
| プロジェクト管理 | 担当者・設備の負荷 | タスクの開始日・作業の分割 | PMI(PMBOKガイド) |
| 生産管理 | 工程の作業負荷と引き取る部品 | 生産する品種と量の順序 | JIS Z 8141:2022 番号1213 |
生産管理用語を定めたJIS Z 8141:2022は、番号1213の平準化を「作業負荷を平均化させ,かつ,前工程から引き取る部品の種類と量とが平均化されるように生産する行為」と定義しています。トヨタ生産方式の平準化生産はこちらの意味で、詳しくはジャストインタイム(JIT)の解説で扱っています。同じJISの番号4103「余力管理」は、各工程または個々の作業者について現在の負荷と能力を比べ、「作業の再配分を行って能力と負荷とを均衡させる活動」と定義しており、プロジェクト管理のリソース平準化はこちらに近い考え方です。工場の負荷計画で使う山積み・山崩しは工程管理の手法を計画の階層で選ぶ|山積み山崩しとシステム要件への翻訳にまとめています。
以下はプロジェクト管理ソフトの平準化機能に絞って説明します。
リソース平準化とリソース平滑化:クリティカルパスに触れるかどうか
PMIの用語集「PMI Lexicon of Project Management Terms」(2024年のVersion 4.0と、2026年1月更新のVersion 5.0で同じ定義)は、担当者の需要と供給を釣り合わせるために作業の開始日・終了日を調整する手法をまとめて resource optimization technique(リソース最適化技法)と呼び、その中で次の2つを分けています。
| 項目 | リソース平準化 | リソース平滑化 |
|---|---|---|
| 英語 | resource leveling | resource smoothing |
| 使う余地 | スケジュール全体 | フリーフロートと総余裕の範囲内 |
| クリティカルパス | 変わることがある | 変えない |
| 終了日 | 延びることがある | 延びない |
| 超過の解消 | 制約・設定によっては残る | 余裕で吸収できない分は残る |
用語集の定義では、平準化は「may affect the critical path」(クリティカルパスに影響することがある)、平滑化は「free and total float are used without affecting the critical path」(フリーフロートと総余裕だけを使い、クリティカルパスには影響させない)です。ガントチャートツールの「平準化」ボタンは前者、Microsoft Projectの「利用可能な余裕期間内でのみ平準化」をオンにした実行は後者に近い動きになります。
どちらを選ぶかは、納期と負荷のどちらを先に守るかで決まります。終了日を延ばせない計画では平滑化から試し、残った超過を人の割り当て直しで解きます。担当者の稼働上限を守ることが先なら平準化を使い、延びた終了日を関係者と合意します。
平準化で終了日が延びる仕組み:5タスクの計算例
平準化の結果は「どのタスクを遅らせるか」の順番で決まります。担当者2人・5タスクの小さな計画で確かめます。各担当者は1日に1タスクだけ進められるものとし、休日・半日稼働・作業の分割は扱いません。後続タスクは先行タスクの終了後に始まり、出力の開始日0は1日目を表します。
| タスク | 日数 | 担当 | 先行タスク | 総余裕 |
|---|---|---|---|---|
| A 設計 | 3日 | 田中 | なし | 0日 |
| B 画面実装 | 4日 | 佐藤 | A | 0日 |
| C API実装 | 3日 | 田中 | A | 1日 |
| D テスト仕様 | 2日 | 田中 | なし | 5日 |
| E 結合テスト | 2日 | 田中・佐藤 | B・C・D | 0日 |
依存関係だけで最早開始日に並べると、全体は9日で終わります。ただし1〜2日目は田中さんにAとDが重なり、1日に2タスク分の負荷がかかっています。この重なりを、タスクを1日ずつ後ろへずらして解消するのが平準化です。下のPythonは、優先順位の高いタスクから順に「担当者が空いている最初の日」に置いていく単純な方式(直列スケジュール生成)で、平準化ソフトの基本的な動きを再現したものです。
from collections import defaultdict
TASKS = { # 名前: (日数, 担当, 先行タスク) 先行→後続の順に並べる
"A 設計": (3, ["田中"], []),
"B 画面実装": (4, ["佐藤"], ["A 設計"]),
"C API実装": (3, ["田中"], ["A 設計"]),
"D テスト仕様": (2, ["田中"], []),
"E 結合テスト": (2, ["田中", "佐藤"], ["B 画面実装", "C API実装", "D テスト仕様"]),
}
def cpm(tasks):
es, ef = {}, {}
for t, (d, _, pred) in tasks.items():
es[t] = max((ef[p] for p in pred), default=0)
ef[t] = es[t] + d
end = max(ef.values())
lf = {}
for t in reversed(list(tasks)):
succ = [s for s in tasks if t in tasks[s][2]]
lf[t] = min((lf[s] - tasks[s][0] for s in succ), default=end)
slack = {t: lf[t] - ef[t] for t in tasks}
return es, slack, end
def peak(start, tasks):
load = defaultdict(int)
for t, s in start.items():
d, res, _ = tasks[t]
for r in res:
for day in range(s, s + d):
load[(r, day)] += 1
return max(load.values())
def level(tasks, key):
used, start, finish = set(), {}, {}
while len(start) < len(tasks):
ready = [t for t in tasks
if t not in start and all(p in finish for p in tasks[t][2])]
t = min(ready, key=key) # 優先順位が最も高いタスクから置く
d, res, pred = tasks[t]
s = max((finish[p] for p in pred), default=0)
while any((r, day) in used for r in res for day in range(s, s + d)):
s += 1 # 担当者が空くまで1日ずつ遅らせる
used.update((r, day) for r in res for day in range(s, s + d))
start[t], finish[t] = s, s + d
return start, max(finish.values())
es, slack, end = cpm(TASKS)
print("平準化前 :", end, "日 / 1日あたり最大", peak(es, TASKS), "タスク")
print("総余裕 :", {t[0]: v for t, v in slack.items()})
st, end1 = level(TASKS, key=lambda t: (slack[t], es[t]))
print("余裕順 :", end1, "日", {t[0]: s for t, s in st.items()})
st, end2 = level(TASKS, key=lambda t: (t != "D テスト仕様", slack[t], es[t]))
print("D最優先 :", end2, "日", {t[0]: s for t, s in st.items()})
Python 3.9で実行した結果です。
平準化前 : 9 日 / 1日あたり最大 2 タスク
総余裕 : {'A': 0, 'B': 0, 'C': 1, 'D': 5, 'E': 0}
余裕順 : 10 日 {'A': 0, 'B': 3, 'C': 3, 'D': 6, 'E': 8}
D最優先 : 11 日 {'D': 0, 'A': 2, 'B': 5, 'C': 5, 'E': 9}
余裕の少ないタスクから先に置くと、余裕5日のDが後ろへ回り、終了は1日延びて10日です。Dは余裕を5日持っていましたが、田中さんの手が空くのはCが終わる7日目以降なので、Dの余裕だけでは吸収しきれませんでした。逆にDを最優先にすると、クリティカルパス上のAが2日遅れ、そのまま後続のB・C・Eが押されて11日になります。平準化で終了日をなるべく延ばさないには、余裕の大きいタスクから遅らせるのが基本で、Microsoft Projectの既定の並べ方「標準」も総余裕の大きいタスクを先に遅らせます。
この例では、田中さんの負荷を解消したまま9日で終える並べ方はありません。9日を守る必要があるなら、平準化ではなく、Dを別の担当者に渡す・Cの範囲を削るといった計画側の変更が必要になります。
Microsoft Projectの平準化オプションと実行手順
Microsoft Projectでは、[リソース]タブの[平準化]グループにある[平準化のオプション]で設定し、[すべて平準化]で実行します。Microsoftのサポート文書が対象として挙げているのは、Project Standard/Professionalの2016・2019・2021、Project Standard 2024、Project Online デスクトップ クライアントです。
平準化のオプション画面で結果を左右する設定
| 設定 | 既定値・選択肢 | 効果 |
|---|---|---|
| 平準化計算(自動/手動) | 手動 | 自動は割り当て超過が起きるたびに再計算 |
| 割り当て超過の判定単位 | 分〜月の5段階 | 単位が粗いほど超過と見なされにくい |
| 平準化の前に平準化値をクリアする | オン | 前回の平準化による延期を消してから再計算 |
| 平準化の順序 | 標準 | ID のみ/標準/優先度・標準の3種 |
| 利用可能な余裕期間内でのみ平準化 | オフ | オンで終了日を延ばさない |
| 個々の割り当ての調整 | オン | 同じタスクの担当者ごとに作業時期をずらす |
| 残存作業時間の分割 | オン | タスクを途中で中断させて分割する |
判定単位の違いは、サポート文書の例がわかりやすいです。同じ日に始まって終わる1日タスク2本を1人に割り当てると、8時間の超過になります。判定単位が「日単位」なら平準化されますが、「週単位」で週40時間働ける人なら、週の合計16時間は40時間に収まるため超過と見なされず、平準化されません。日単位の計画を立てているなら、判定単位も日単位にそろえておかないと、重なりが残ったまま「平準化済み」に見えます。
平準化の順序は、タスク情報の[全般]タブで付ける優先度(0〜1000、既定500)と組み合わせて効きます。「標準」は先行関係・総余裕・開始日・優先度・制約の順に見て遅らせるタスクを選び、「優先度、標準」は優先度を最初に見ます。「ID のみ」はIDの大きいタスクから遅らせます。
平準化しても動かないタスクの条件
次のタスクは平準化の対象外で、開始日は動きません。
- 制約が「指定日に開始」または「指定日に終了」のタスク
- 開始日基準のプロジェクトで制約が「できるだけ遅く」のタスク(終了日基準のプロジェクトでは「できるだけ早く」)
- 優先度が1000のタスク
- 実績開始日が入っているタスク(残存作業の分割は可能)
重要なマイルストーン前のタスクを守りたいときは優先度を1000にします。ただし、平準化で遅れたあとに優先度を1000へ変えたタスクは、[平準化のクリア]を押しても延期や分割が残る点に注意が必要です。
Microsoft Projectの平準化実行・結果確認・取り消し手順
- [リソース]タブ→[平準化のオプション]で、判定単位・平準化の順序・余裕期間内に限るかを決める
- [すべて平準化]を押す(リソースビューで実行すると、全リソースか選択したリソースかを選ぶ画面が出る)
- [表示]タブ→[ガントチャート]→[その他のビュー]→[平準化ガントチャート]を開き、各タスクに付いた延期量と終了日の変化を確かめる
- 結果に納得できなければ[平準化のクリア]で延期と分割を外し、優先度や設定を変えて再実行する
大きなプロジェクトで平準化計算を「自動」にすると、編集のたびに再計算が走って動作が重くなります。自動にする場合は「平準化の前に平準化値をクリアする」をオフにすると、既に平準化したタスクはそのままで新しい超過だけを再スケジュールする増分平準化になります。
平準化を自動実行できるツールと2026年10月時点の提供状況
ガントチャートを描けるツールは多いものの、過剰割り当てを検出してタスクの開始日まで自動で動かせるものは限られます。各社の公式ドキュメントで確認できた範囲をまとめます。
| ツール | 自動平準化 | 確認できた設定・特徴 | 提供状況 |
|---|---|---|---|
| Microsoft Project(デスクトップ) | あり | 平準化の順序3種・余裕期間内のみ | 2024版などで継続 |
| Project Online | - | - | 2026年9月30日に終了 |
| Microsoft Planner(Premium) | 比較表に記載なし | People viewで過剰・過少割り当てを表示 | Project for the webの移行先 |
| Oracle Primavera P6 Professional | あり | 優先度の多段指定・総余裕内に限定 | Version 26 |
| OmniPlan 4 | あり | 有効化すると利用率100%以内に配置 | Mac・iPhone・iPad |
| ProjectLibre Cloud | あり | 動くタスクを適用前に確認 | 2026年9月22日に追加 |
| GanttProject | なし | 公式FAQで「No」と回答 | 無料のデスクトップ版 |
出典:Microsoft「Resource Leveling dialog box」/Planner Blog「Microsoft Project Online is retiring」/Microsoft「Planner Basic と Premium の比較」/Oracle P6 Professional ヘルプ/OmniPlan 機能一覧/ProjectLibre 2026年9月22日の告知/GanttProject 公式FAQ
Microsoft Project・Project Online・Plannerの線引き
MicrosoftのPlanner Blog(2025年9月5日)によると、Project Onlineは2026年9月30日で提供を終え、新規顧客向けのProject Online単体SKUは2025年10月1日に販売を終えています。同じ告知は、デスクトップ版のProject、Project Server Subscription Edition、Plannerは影響を受けないと明記しています。Project for the webとTeamsのProject/Roadmapアプリは2025年8月にPlannerへ統合済みです。
Planner Premiumの公式比較表に載っているリソース関連機能は、メンバーの過剰・過少割り当てと負荷調整の候補を表示する「People view」です。デスクトップ版のように平準化の順序や余裕期間を指定してタスクを一括で動かす機能は比較表に挙がっていません。Project Onlineから移る組織で平準化を続けるなら、デスクトップ版のProject(Project Standard/Professional 2024、またはサブスクリプションのデスクトップ クライアント)を使う前提で計画します。
Primavera P6・OmniPlan・ProjectLibreの平準化
Primavera P6 Professional(Version 26のマニュアル)は、平準化の優先条件を複数のフィールドで上から順に指定でき、他プロジェクトの割り当ては1(最高)〜100(最低)のプロジェクト平準化優先度で考慮範囲を決めます。「Level Resources Only Within Activity Total Float」をオンにすると総余裕の範囲でしか延期しないので、前述の平滑化に相当します。スケジュール計算のたびに自動で平準化する設定と、計算済みの最早・最遅日付を残す「Preserve Scheduled Early and Late Dates」もあります。
OmniPlanは、プロジェクトで平準化を有効にすると、リソースが利用可能な単位の100%を超えないようにタスクを自動配置すると説明しています。ProjectLibreは2026年9月22日の告知で、Cloud版に平準化(過剰割り当ての検出、移動するタスクと延期量の事前確認、プロジェクト・タスク優先度の考慮)を追加しました。告知の対象はCloud版で、無料のデスクトップ版に同じ機能が入ったとは書かれていません。
Frappe Ganttのような描画ライブラリで自社システムにガントチャートを組み込む場合は、上の計算例のように開始日を計算してから描画側へ渡す構成になります(描画側の実装はFrappe Ganttの使い方|v1.2.2の導入・タスク定義・イベントとReact連携)。
自動平準化に任せない場面と手で直す判断基準
平準化は「過剰割り当てを消す」計算であって、「計画として正しい形にする」計算ではありません。次の3つの場面では、ボタン1つの結果をそのまま採用しないほうが安全です。
納期が契約で固定されている計画
平準化ではタスクの延期や残存作業の分割を行いますが、納期内に負荷を収められる配置がなければ、超過の解消には終了日の延長か計画条件の変更が必要です。納期が動かせないなら、まず「利用可能な余裕期間内でのみ平準化」をオンにして実行し、それでも残った超過を一覧にします。残った超過は、担当の付け替え・範囲の削減・人の追加で解く問題で、平準化の設定を変えても消えません。計算例でも、9日を守る並べ方は存在しませんでした。
見積もりが粗い段階の計画
平準化は見積もり日数を正しいものとして計算します。作業の分解が粗く、1タスク10日以上のかたまりが並んでいる段階で平準化すると、分割を許可しない設定では担当者に10日連続の空きができるまでタスクが後ろへ押し出され、終了日が大きく延びます。先にWBSでタスクを数日単位まで割ってから平準化します(分解の手順はWBSとは?作り方5ステップとガントチャートとの違いを具体例で解説)。
複数プロジェクトで同じ人を共有している計画
1つのプロジェクトファイルの中だけで平準化すると、他のプロジェクトでのその人の割り当ては見えません。ファイル単体で「超過なし」になっても、実際の稼働は超えている場合があります。複数案件に同じ人が入る体制なら、Microsoft Projectではリソースを共有した複数のプロジェクトに[プロジェクト情報]の優先度(0〜1000)を付け、案件間の順位を決めてから平準化します。ツールで束ねられない場合は、案件横断の負荷表で確認します。横断管理の進め方は複数プロジェクト管理とは?進捗・リソース・優先度の横断管理と仕組み化の判断で扱っています。
平準化のあとは、クリティカルパスが入れ替わっていないかも確認します。計算例では、平準化前は余裕5日だったDが、平準化後はEの直前に置かれて余裕0日になりました。平準化前の「どのタスクが遅れると全体が遅れるか」という判断は、平準化のあとには通用しなくなります。
平準化についてよくある質問
平準化とは簡単に言うと何ですか?
負荷の偏りをならすことです。プロジェクト管理では、同じ人に同じ日のタスクが重なったときに、片方の開始を遅らせたり作業を分けたりして重なりを消す操作を指します。生産管理では、作る品種と量の順序を均して工程の負荷をそろえる意味で使います。
業務の平準化とリソース平準化は同じ意味ですか?
目的は近いですが、動かすものが違います。業務の平準化は、特定の人や時期に集中した仕事を分担の見直しや前倒しでならす取り組み全般を指します。リソース平準化は、すでに決まったスケジュールの中でタスクの開始日をずらして担当者の過剰割り当てを解消する、スケジュール計算上の操作です。
平準化と標準化の違いは何ですか?
平準化は量や負荷のばらつきをならすこと、標準化は作業の手順や方法をそろえることです。手順が標準化されていると作業ごとの所要時間が読みやすくなり、平準化の計算に使う見積もりの精度も上がります。
リソース計画の手作業を減らすにはどうすればよいですか?
担当者・稼働時間・タスクの依存関係をツールに入れ、重なりの検出と開始日の調整を平準化機能に任せます。人が手で直すのは、平準化後に残った超過と、納期や優先度の判断が要るタスクだけに絞れます。平準化しても終了日が許容範囲を超えるなら、担当の付け替えや範囲の調整を検討します。
ガントチャートの平準化で終了日を延ばさない方法はありますか?
Microsoft Projectなら「利用可能な余裕期間内でのみ平準化」をオンにすると、終了日を延ばさない範囲でしかタスクを動かしません。その代わり、余裕で吸収できない重なりは超過のまま残ります。残った超過は、担当の付け替えや範囲の削減など、計画そのものを変えて解消します。