3行まとめ
二交代制(日勤・夜勤)の1か月シフトを自動割当する、ブラウザ完結のWebツールです。
CSV/ICS/検証CSVに対応。データはブラウザ内のみで処理(外部送信なし)。
デモ:https://rehab-datascience.github.io/shiftcrafter-monthly-2shift/ / ソース:https://github.com/rehab-datascience/shiftcrafter-monthly-2shift
⸻
背景
医療現場では、休み希望・夜勤回数上限・必要人数などの制約を守りながら、短時間で月次シフトを作るニーズが高い一方、専用ソフトの導入・運用は負荷になりがちです。
本記事では、インストール不要・ブラウザ完結で試せる月次版(Part 2)を公開します。
⸻
機能ハイライト
自動割当:夜勤→日勤の順に充当。Night→翌Day禁止をハード制約。
制約尊重:週/月の夜勤上限、休み希望を考慮(MVP)。
出力:
CSV(schedule_monthly.csv):表計算・検証用(wide形式)
ICS(shift_monthly_all.ics):カレンダー配布用(Google/Outlook/Apple)
検証CSV(validation_summary.csv):充足率、希望休尊重度、上限違反などを数値化
⸻
使い方(最短3ステップ)
デモURLへアクセス(PCブラウザ)
左パネルに入力:
対象月(YYYY-MM)
必要人数(日勤/夜勤:全日共通のMVP設定)
週あたり夜勤上限/(任意)月あたり夜勤上限
職員リスト(1行1名)
休み希望(例:2025-11-03 田中)
「シフト自動作成」→「CSVダウンロード/ICSダウンロード/検証CSVダウンロード」
⸻
出力ファイル(要点)
schedule_monthly.csv:date, dow, need_day, need_night, day_staff_, night_staff_
shift_monthly_all.ics:Asia/Tokyoで
日勤:例 09:00–17:00
夜勤:17:00–翌09:00(翌日に跨る)
SUMMARY: 日勤:氏名 / 夜勤:氏名
validation_summary.csv(主な列)
required_slots_filled_pct:月間必要枠の充足率(全員同値)
off_fulfillment_pct:個人の希望休充足率(%)
weekly_night_cap_violations / monthly_night_cap_violation:上限違反カウント
consec_night_2plus:連続夜勤(2連以上)
day_after_night_violation:夜勤翌日の日勤(MVPでは禁止想定)
⸻
仕様(MVP)
必要人数:月内は全日同一(将来は日別プロファイルへ拡張)
休み希望:YYYY-MM-DD 氏名 を1行1件
Night→翌Day禁止:ハード制約
夜勤上限:週+(任意で)月をチェック
公平性:総割当/Night回数の少なさを優先するシンプル割当(次版で偏り抑制を導入予定)
⸻
よくある質問(抜粋)
Q. ICSとCSVの違いは?
A. ICSは配布・共有(カレンダー取り込み)、CSVは表計算・統計検証が目的です。
Q. 勤務時間が施設と異なる場合?
A. コード内 buildICS() の開始/終了時刻を変更してください。
Q. 氏名の公開が気になる
A. SUMMARY 生成部分を匿名IDに置換できます。
⸻
今後(ロードマップ)
Part 3:三交代(早・日・夜)
Part 4:時短や個別勤務時間の考慮
Part 5:早出/遅出・休憩・時刻制約
Part 6:看護助手等の混成(ロール・技能充足)
日別プロファイル(曜日/祝日で必要人数変更)
職員別ICS分割/匿名化オプション
公平性最適化(偏り抑制、ペナルティ最小化)
⸻
免責
本ツールは教育・業務補助目的のクライアントサイドWebアプリです。
データはブラウザ内のみで処理されます。
利用による結果・損害について作者は責任を負いません。
実運用は所属施設の規程・労務基準・個人情報保護方針に従ってください。
⸻
リンク
デモ:https://rehab-datascience.github.io/shiftcrafter-monthly-2shift/
リポジトリ:https://github.com/rehab-datascience/shiftcrafter-monthly-2shift
作者X:@rehab_datasci