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

コラム組み方の手順

シフト作成を自動化する方法制約条件の洗い出しから試作まで

シフト作成を自動化する方法(記事の表紙)

シフト作成を自動化する方法は、先月の勤務表と組む人の決まりから条件を書き出し、「必ず守る条件」と「できれば守る条件」に分けてから、制約ソルバーに解かせることです。架空の介護の職場(20人×30日)で7つの条件を入れて解くと、どの段も3秒以内に勤務表ができ、希望休は80件中77件が通りました。(2026年10月時点)

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

要点

  • シフト作成の自動化は、条件の洗い出し、ソルバーでの試作、解けないときの見直しの3つで進みます。
  • 架空の20人×30日で7つの条件を入れて解くと、どの段も3秒以内に終わり、希望休は80件中77件が通りました(試算)。
  • 夜勤の枠60を1人月5回までで割ると12人が下限で、実際に11人以下では勤務表が作れませんでした。
  • 作る前に、希望を聞く方法と確定したシフトを知らせる期限を、職場で決めておきます(厚生労働省の留意事項)。
目次
  1. シフト作成を自動化するには、何から始めますか?
  2. シフトの制約条件は、どうやって洗い出しますか?
  3. 条件を入れると、自動でどこまで作れますか?
  4. 勤務表が作れないときは、どこを見直しますか?
  5. シフトを自動で作る前に、職場で決めておくことは?
  6. このサイトで相談するには?
  7. よくある質問

シフト作成を自動化するには、何から始めますか?

先月の勤務表を1枚用意し、そこに表れている決まりを書き出すところから始めます。ソフトを選ぶのはその後です。条件が書き出せていないと、どの方法を選んでも「結局手で直す」状態になります。

私がシフト作成の自動化を手伝うときは、次の4段階で進めます。表のとおり、最初の2段は道具を使わずにできます。

段階 やること 使うもの 時間の目安(主宰の場合)
1. 書き出す 先月の勤務表から、守っている決まりを全部挙げる 先月の勤務表、組む人への聞き取り 1〜2時間
2. 分ける 必ず守る条件と、できれば守る条件に分ける 紙かExcel 1時間
3. 試作する 条件を1つずつ入れて解き、先月の表と比べる 制約ソルバー(OR-Tools など) 最短当日
4. 使い始める 来月分を作り、組む人が直した所を条件に戻す 今のExcelの形で書き出し 最短その週から

制約ソルバーは、「この条件をすべて満たす割り当て」を探す計算の道具です。GoogleのOR-ToolsにあるCP-SATは無料で使えます。公式の例題では、看護師4人×3日×3交代の勤務表を作っています。看護師の勤務表づくりは研究も多く、2004年には学術誌に総説が載りました。

シフトの制約条件は、どうやって洗い出しますか?

「人」「枠」「つなぎ方」「希望」の4つの箱に分けて書き出すと、漏れが減ります。組む人の頭の中にしかない決まりも、この順で聞くと出てきやすくなります。

シフトの条件を洗い出す4つの箱の図。人(資格・常勤かパートか・契約の日数)、枠(必要人数・リーダーの数・配置の基準)、つなぎ方(夜勤→明け→休み・連勤の上限・遅番の翌日の早番)、希望(希望休・夜勤の回数をそろえる)
図1 条件は4つの箱に分けて書き出す。白の3つは必ず守る条件、金茶の箱はできれば守る条件になりやすい分け方です。項目は例です。

「人」は資格と夜勤の可否、常勤とパートの別、契約の日数です。「枠」は、時間帯ごとの必要人数と、リーダーや有資格者の数です。「つなぎ方」は日をまたぐ決まりで、夜勤の翌日は明けにして次の日は休む、連続勤務は5日まで、などです。

書き出したら、1つずつ「破ったら困るか」を聞きます。破れないものは必ず守る条件、破ってもよいが避けたいものはできれば守る条件にします。希望休を必ず守る条件にすると、希望が重なった月に表が作れなくなるので、私は原則「できれば守る」側に置きます。用語の違いはシフトの制約条件とはにまとめています。

条件を入れると、自動でどこまで作れますか?

架空の介護の職場(常勤14人とパート6人、30日)で試すと、7つの条件をすべて入れても勤務表が作れました。どの段も3秒以内に解け、希望休は80件中77件が通っています。

条件を1つずつ足して解いた結果の表。必要人数だけでは希望休79/80件、夜勤→明け→休みを足すと77/80件で、その後の連勤・遅番の翌日の早番・パートの時間帯を足しても77/80件。夜勤の回数は公平さを足すと3〜5回から4〜5回にそろった
図2 条件を足しても、解ける状態は保たれた。架空のデータで計算した値です。秒数は手元のPC(8スレッド)の値で、PCによって変わります。計算は scripts/figs/fig_shift_automation_how_to.py で再現できます。

条件は1つずつ足し、そのたびに解けるかを見ました。必要人数だけなら希望休は79件通り、夜勤の後に明けと休みを置く条件を足すと77件に減ります。そこから先は、連勤の上限や遅番の翌日に早番を入れない条件を足しても77件のままでした。

公平さの条件も足せます。夜勤の多い人と少ない人の差を小さくするよう重みを付けると、夜勤の回数は3〜5回から4〜5回にそろいました。コードの中心は数行で、1日1人に1つの勤務を割り当て、条件を式で足していきます。

for s in staff:
    for d in range(30):
        m.AddExactlyOne(x[s, d, k] for k in ['早', '日', '遅', '夜', '明', '休'])
for d in range(30):
    m.Add(sum(x[s, d, '夜'] for s in staff) == 2)          # 毎晩の夜勤は2人
for s in staff:
    for d in range(29):
        m.Add(x[s, d, '遅'] + x[s, d + 1, '早'] <= 1)       # 遅番の翌日に早番を入れない

この試算は架空の職場1つの結果です。実際の職場では、条件はもっと多くなります。それでも、1つずつ足して先月の表と見比べる手順は同じです。

勤務表が作れないときは、どこを見直しますか?

まず、人の数と枠の数を掛け算で突き合わせます。条件同士のぶつかりより先に、そもそも人が足りていないことが多いからです。

架空の職場では、毎晩2人×30日で夜勤の枠は60あります。1人月5回までとすると、60÷5で夜勤ができる人は12人いないと埋まりません。実際に夜勤ができる人を8人から14人まで変えて解くと、11人以下では解けず、12人で解けました。12人のときは全員がちょうど5回ずつ入っています。

夜勤ができる人の数と勤務表が作れるかの図。8人から11人では作れず、12人で作れて全員が夜勤5回、13人と14人では3〜5回。夜勤の枠60を月5回で割った下限12人と一致
図3 夜勤ができる人が12人を下回ると、勤務表は作れない。架空の職場で、ほかの条件はすべて入れて計算した値です。下限12人は60÷5の計算値です。

CP-SATは、解がないときに「解けない(INFEASIBLE)」と証明して返します。どの条件のせいかまでは自動では分からないので、条件を1つずつ外して解き直し、解けるようになった条件を候補として示します。12人ぎりぎりの月は、1人休むだけで回らなくなります。月5回の上限を一時的に6回にするか、夜勤ができる人を増やすかは、職場が決めることです。

シフトを自動で作る前に、職場で決めておくことは?

希望を聞く方法と、確定したシフトを知らせる期限を、先に決めておきます。厚生労働省の「シフト制」の留意事項(2026年6月19日改正)は、労使で話し合って決めておくルールの例を挙げています。シフトの作成にあたり事前に意見を聴くことと、確定したシフトを通知する期限や方法です。

同じ留意事項は、確定したシフトの変更は労働条件の変更に当たり、双方の合意のうえで行うよう求めています。自動で作った表も、確定までは案として扱います。確定後に組み直すときは、期限と手続きを決めておかないと揉めます。

条件に入れる法令の決まりも、ここで確かめます。休日は毎週1回か、4週4日以上です(労働基準法35条)。休憩は、6時間を超えたら45分以上、8時間を超えたら1時間以上です(34条)。

終業から次の始業まで一定の休息を空ける勤務間インターバルは、2019年4月1日から事業主の努力義務になっています。何時間にするかは職場で決め、その数字を「つなぎ方」の条件に入れます。

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

先月の勤務表と決まりをうかがえれば、試作は最短当日でお見せできます。名前は黒塗りや記号のままで構いません。費用は一式30万円〜で、今のExcelで動かす形なら毎月0円〜です。無料で相談するからご連絡ください。

よくある質問

Excelのままでもシフトを自動で作れますか?
作れます。条件と結果の受け渡しを今のExcelの形にそろえ、計算だけをソルバーに任せる形にすれば、見た目と使い方はほとんど変わりません。
希望休が全部通らないのはなぜですか?
必要人数などの必ず守る条件とぶつかる希望があるからです。架空の例でも80件中3件は通らず、どの日の誰の希望かを一覧にして相談に回します。
何人くらいの職場から自動化した方がよいですか?
人数より、条件の数で決めます。夜勤や資格の条件があり、組むのに毎月何時間もかかっているなら、10人ほどの職場でも試す価値があります。
AIが作ったシフトをそのまま確定してよいですか?
いいえ。案として出し、組む人が見て直してから確定します。確定後の変更は労働条件の変更に当たり、本人との合意が要ります。

出典

  1. 厚生労働省「いわゆる『シフト制』により就業する労働者の適切な雇用管理を行うための留意事項」(令和4年1月7日、改正 令和8年6月19日)(2026年10月16日確認)
  2. 厚生労働省 働き方・休み方改善ポータルサイト「勤務間インターバル制度について」(2019年4月1日から努力義務)(2026年10月16日確認)
  3. Google OR-Tools「Employee Scheduling」(看護師4人×3日×3交代などの例題)(2026年10月16日確認)
  4. Google OR-Tools「CP-SAT Solver」(解けた・解けないの状態の説明)(2026年10月16日確認)
  5. Burke, De Causmaecker, Vanden Berghe, Van Landeghem「The State of the Art of Nurse Rostering」Journal of Scheduling 7(6), 441–499, 2004(2026年10月16日確認)