手組みゼロ中小企業のAI導入支援|シフト作成の自動化からシフト作成の自動化 専門

コラム勤務表の研究

看護師の勤務表は、自動で作れるのか?ナース・スケジューリングの論文3本と再現実験

看護師の勤務表は、自動で作れるのか?(記事の表紙)

看護師の勤務表を自動で作る研究(ナース・スケジューリング)は1970年代から続いており、近年は汎用のソルバーで解くこと自体はほぼできるようになりました。残っている難しさは、どの条件を「必ず守る」側に置くかと、できた表に現場が納得できるかです。論文3本の数字を原文で確かめ、架空の病棟(看護師18人・4週間)で条件の置き方を変えて解き直しました。(2026年10月時点)

全体の流れと費用はシフト作成の自動化のページにまとめています。

要点

  • 看護師の勤務表を自動で作る研究は1970年代に米国で始まり、2004年の総説は約40年分の論文を整理しています。
  • 池上らが使った25人の病棟の例では、現場で作った表は人数の条件39件と個人の条件71件を満たしていませんでした。
  • 架空の病棟18人で解くと、人数を必ず守る形では希望休54件中5件が落ち、個人の条件を守る形では人数がのべ5人欠けました。
  • 夜勤回数の公平さを目的に入れると、夜勤は1〜12回から9〜10回にそろい、希望休の通った数は変わりませんでした。
目次
  1. ナース・スケジューリングとは、どんな研究ですか?
  2. 論文の数字では、どこまで解けるようになったのですか?
  3. なぜ「希望休を必ず守る」形を勧めているのですか?
  4. 夜勤の偏りは、どう扱えばよいですか?
  5. 介護やお店のシフトに、取り入れない方がよい所は?
  6. このサイトで相談するには?
  7. よくある質問

ナース・スケジューリングとは、どんな研究ですか?

ナース・スケジューリングは、病棟の看護師の勤務表を数理の方法で作る研究です。毎日の勤務を、日勤・準夜勤・深夜勤・休みから1つずつ決めます。1970年代に米国で始まり、1998年ごろから日本・英国・カナダでも論文が増えました。今回読んだのは、総説1本と、日本の研究室による2本です。

3本の位置づけを、書誌と主な数字で並べると次のとおりです。総説は分野全体を、日本の2本は同じ研究を別の読者向けに書いています。

論文 掲載誌・年 中身 この記事で使う数字
Burkeほか「The State of the Art of Nurse Rostering」 Journal of Scheduling 7巻、2004年 約40年分の手法の総説 例の病棟は21人・4週ごと
秋田・池上「…解空間のネットワーク表現」 統計数理 61巻1号、2013年 1人分の勤務の候補を網の目で表す 25人の病棟、構築20〜30秒
池上・田中「ナース・スケジューリングへの再挑戦」 オペレーションズ・リサーチ 59巻1号、2014年 上の研究を一般向けに紹介 ソルバーで解くこと自体はほぼ可能

日本の2本は、条件を2種類に分けています。1つは毎日の人数やベテランの数を決める「シフト制約」です。もう1つは、一人ひとりの勤務回数・希望休・禁止の並びを決める「ナース制約」です。勤務表で言えば、前者が縦の並び、後者が横の並びの条件です。

勤務表の格子で見た条件の分け方。縦の並びはシフト制約で毎日の人数とベテランの数、横の並びはナース制約で勤務回数・希望休・準夜の翌日に日勤を入れないなどの禁止の並び
図1 シフト制約(縦)とナース制約(横)。秋田・池上(2013)と池上・田中(2014)の分け方を、説明用の架空の勤務表に重ねました。

論文の数字では、どこまで解けるようになったのですか?

1つの病棟の1か月分なら、条件さえ決まれば解くこと自体はほぼできる、というのが池上・田中(2014)の見方です。汎用のソルバーの性能が上がり、目的と条件を決めれば厳密な最適解も得られるようになったと書いています。

秋田・池上(2013)は、先行研究の数字を紹介しています。看護師25人の3交替の例では、病院で実際に作られた勤務表が、シフト制約39件とナース制約71件を満たしていませんでした。池上・丹羽(2003)の方法は、シフト制約6件だけを満たさない表を出しています。ただし解くのに100時間(Pentium II 266MHz)かかりました。

秋田・池上はこの重さを減らそうとしました。1人分の1か月の勤務の候補は数百万通りあると見積もり、それを網の目(ネットワーク)の形にまとめています。1人分の網を作るのに20〜30秒、そこから一番よい勤務を探すのに平均0.065秒でした。

一方、Burkeほか(2004)は、実際の病棟の難しい問題をそのまま解ける手法は「ごく少ない」と書いています。研究のモデルが単純すぎて、病棟にそのまま当てはめられないという指摘です。解く速さの問題は小さくなり、現場の条件をどう書くかの問題が残っている、と私は読みました。

なぜ「希望休を必ず守る」形を勧めているのですか?

池上らは、看護師の体調や事情を知っている人でなければ、個人の条件をうまく緩められないと考えているからです。そこで、ナース制約は必ず守り、シフト制約を破る度合いをできるだけ小さくする形を勧めています。池上・丹羽(2003)が病院で観察したところ、この形の表のほうが、あとで人が直しやすかったそうです。

Burkeほかの例は逆で、人数の条件を必ず守り、個人の条件を「なるべく」にしています。必ず守る側の選び方は、論文によって分かれます。そこで、架空の病棟(看護師18人・4週間・3交替、ベテラン7人)で、同じデータを2通りに解きました。

解き方 必ず守る条件 破れたもの 夜勤回数の幅
A 毎日の人数・ベテラン1人以上 希望休54件中5件 1〜12回
B 希望休・休日数・禁止の並び 毎日の人数がのべ5人不足 2〜12回

どちらの形も、どこかが破れます。違うのは、しわ寄せが誰に見えるかです。Aでは5人の希望休が消え、Bでは管理者が足りないコマを見て、応援や残業で埋めるかを決めます。

架空の病棟18人・4週間の比較。毎日の人数を必ず守る形では希望休54件のうち5件が通らず、一人ひとりの条件を必ず守る形では毎日の人数がのべ5人足りない
図2 「必ず守る」側を入れ替えた結果(架空の病棟)。OR-ToolsのCP-SATで、どちらも1秒以内に最適解が出ました。

夜勤の偏りは、どう扱えばよいですか?

夜勤回数の最多と最少の差を、目的に入れて小さくします。Burkeほかが紹介するWarner(1976)の評価の観点にも、表の公平さが入っています。目的に入れないと、ソルバーは条件を満たす表のうち、たまたま見つけた1つを返します。

架空の病棟の解き方Aで試すと、公平さを入れない表の夜勤(準夜と深夜の合計)は1〜12回でした。差1回を希望休0.2件分とする重みを入れると9〜10回にそろい、標準偏差は3.35回から0.47回になりました。重みを50に上げても同じで、希望休の通った数は54件中49件のまま変わりませんでした。

夜勤回数の標準偏差の比較。公平さを入れないと3.35回で夜勤は1〜12回、重み2と重み50ではどちらも0.47回で9〜10回。希望休はどれも54件中49件
図3 公平さの重みと夜勤回数のばらつき(架空の病棟)。この例では、公平さを入れても希望休は減りませんでした。

公平さの部分のコードは、次の数行です。全体はscripts/figs/fig_nurse_rostering_papers.pyにあります。

nights = [sum(x[i, d, '準'] + x[i, d, '深'] for d in range(D)) for i in range(N)]
hi, lo = m.NewIntVar(0, D, 'hi'), m.NewIntVar(0, D, 'lo')
m.AddMaxEquality(hi, nights); m.AddMinEquality(lo, nights)
m.Maximize(10 * sum(got) - fair_w * (hi - lo))   # 希望休1件=10点

限界もあります。データは架空で、希望休は連休と週末に集まるよう乱数で作りました。CP-SATは並列で解くため、別の計算機では夜勤の幅などが少し変わることがあります。

介護やお店のシフトに、取り入れない方がよい所は?

病棟の3交替に合わせた細かい作りは、そのまま持ち込みません。秋田・池上のネットワークの方法は、7日ごとに候補を並べ、100時間かかった計算を速くするための工夫です。私が試した架空の介護施設(42人・30日)では、汎用のソルバーを使い、約5秒で解けました。私の仕組みでも、この方法は使っていません。

取り入れたいのは、条件の分け方と、人が直す前提の作り方です。池上・田中は訪問介護の勤務の研究にも触れています。そこでは、条件の入力と修正の手間が、仕組みを使ううえで大きな障害になっていました。秋田・池上も、自分で選んだ表だという納得感がなければ現場では使われない、という先行研究を引いています。

私が勤務表の仕組みを作るときは、最初に「必ず守る条件」と「なるべく守る条件」を施設の方と一緒に書き出します。解けない月は、ぶつかっている条件と、通らなかった希望を一覧で返します。条件の書き出し方はシフトの制約条件とはにまとめています。

このサイトで相談するには?

勤務表のどの条件を必ず守り、どれを「なるべく」にするかは、相談の中で一緒に整理できます(無料で相談する)。勤務表をお見せいただかなくても、人数と決まりをうかがえば目安をお答えします。実物で試すときは、先に秘密保持契約(NDA)を結べます。

よくある質問

論文の方法をそのまま介護施設の勤務表に使えますか?
そのままは使いません。論文は病棟の3交替を前提にしています。考え方は使えますが、条件は施設ごとに書き出し直します。
希望休はすべて通せますか?
通せない月があります。今回の架空の病棟では54件中5件が通りませんでした。通らない希望と理由を示し、人が決めます。
このサイトの仕組みは論文のネットワークの方法を使っていますか?
使っていません。汎用の制約ソルバー(OR-Tools の CP-SAT)で解いています。論文は、条件の分け方と目的の決め方の参考にしています。

出典

  1. Burke, E. K., De Causmaecker, P., Vanden Berghe, G., Van Landeghem, H.「The State of the Art of Nurse Rostering」Journal of Scheduling 7(6), 441–499, 2004(著者公開版)(2026年10月16日確認)
  2. 秋田博紀・池上敦子「ナース・スケジューリングにおける部分問題実行可能解空間のネットワーク表現」統計数理 61(1), 79–95, 2013(成蹊大学)(2026年10月16日確認)
  3. 池上敦子・田中勇真「ナース・スケジューリングへの再挑戦」オペレーションズ・リサーチ 59(1), 26–33, 2014年1月号(2026年10月16日確認)
  4. Google OR-Tools「Employee Scheduling」(CP-SAT で看護師の勤務表を作る例)(2026年10月16日確認)