3件を別々に計算すると、全部納期内。同じ担当者が順番に進めると、2件が遅れました。
僕は納期を返す前に、既存作業も足して確認したいです。「2日で終わる」と「金曜までに渡せる」は、間にある仕事の分だけ離れます。
納期の前に、1日に使える時間を置く
検証用の入力は3件。開始日は2026年10月1日、木曜。担当者は1人で、上から順に進めます。
| 案件 | 残り作業 | 約束した納期 |
|---|---|---|
| A | 4時間 | 10月1日 |
| B | 8時間 | 10月2日 |
| C | 4時間 | 10月2日 |
作業に使えるのは平日1日4時間。会議や問い合わせもあるので、ここに勤務時間の8時間をそのまま入れると予定が楽観的になります。作業は日をまたいで続けられ、途中の空き時間を次の案件に使う前提です。
金曜までの枠は8時間。約束した作業は16時間あります。
全件の納期を守る計画は組めません。担当者を替えるのか、範囲を減らすのか。先に相談する根拠になります。
Pythonで個別計算と順番待ちを比べる
delivery.pyとして保存し、python3 delivery.pyで実行します。追加ライブラリは不要。Python 3.14.6で動作確認済み。時間は正の整数で入力します。
from datetime import date, timedelta
START = date(2026, 10, 1)
DAILY_HOURS = 4
DAYS_OFF = set() # 祝日・休暇の日付を追加する
jobs = [
("A", 4, "2026-10-01"),
("B", 8, "2026-10-02"),
("C", 4, "2026-10-02"),
]
def finish(hours):
if hours <= 0 or DAILY_HOURS <= 0:
raise ValueError("作業時間と1日の枠は正数にする")
day = START
while True:
if day.weekday() < 5 and day not in DAYS_OFF:
hours -= DAILY_HOURS
if hours <= 0:
return day
day += timedelta(days=1)
total = late = 0
for name, hours, due in jobs:
total += hours
alone, queued = finish(hours), finish(total)
delayed = queued > date.fromisoformat(due)
late += delayed
status = "遅れ" if delayed else "納期内"
print(f"{name}: 個別={alone} 順番={queued} {status}")
print(f"納期遅れ: {late}件")
出力です。
A: 個別=2026-10-01 順番=2026-10-01 納期内
B: 個別=2026-10-02 順番=2026-10-05 遅れ
C: 個別=2026-10-01 順番=2026-10-06 遅れ
納期遅れ: 2件
出力で確認したのは、Bが月曜まで延びるところ。8時間だけなら金曜に終わります。
Aの4時間を足すと3営業日になり、土日を挟む。Cはその後の火曜です。
足すのは作業時間。土日は枠に入れない
finish(hours)は、その時間を消化し終える日を返します。weekday()は月曜が0、日曜が6なので、< 5の日だけ作業時間を引きます。手元のPythonの説明文で値も確認済み。date.weekdayの仕様と合わせて読めます。
finish(total)へ渡すのは、前の案件を含む累計時間です。今回の前提なら、累計を消化した日がその案件の終了日になります。4時間ちょうどを木曜に終えた境界も確認しました。翌日へ余計に送っていません。
祝日は自動取得しません。休暇を含め、DAYS_OFFに日付を入れます。依頼元の確認待ちや、日ごとに違う稼働時間は別に見積もります。
カレンダーの空白って、つい全部使えそうに見えるんですよね。
遅れる2件を、納期の相談に変える
ChatGPTに相談文を頼むなら、計算結果と変更できる条件を渡します。社名や顧客情報は要りません。
担当者1人、平日4時間、A→B→Cの固定順です。
納期と計算上の終了日:A 10/1→10/1、B 10/2→10/5、C 10/2→10/6。
BとCの納期を相談する社内メッセージを150字以内で書いてください。
増員は未承認です。短縮できる作業も未確認です。
日付を変えず、承認済みのような約束を足さないでください。
僕なら依頼が増えるたび、この表を更新します。既存作業を入れて納期を返せるのが、ここ地味に効きます。作業が途中なら、残り時間で再計算します。依頼が増えるほど、担当者に聞く内容も「間に合いますか」から「何時間の枠を移せますか」に変わっていくと見ています。