月間の勤務表を自動生成するWebアプリケーションです.
- 📅 年月を選択してカレンダー表示
- 👥 スタッフ名を自由に設定(3名)
- 🖱️ クリックで休み(公/年)を簡単入力
- 🚀 ワンクリックで勤務表を自動生成
- 📥 Excelファイルでダウンロード
- 出勤者2人以上: 1人が9時,他は10時,10時の1人にYマーク
- 出勤者1人: 9時出勤かつYマーク
- 出勤者はY9(9時出勤+Yマーク)
- 月間で各スタッフが均等(±1以内)になるよう自動調整
- 休み明けの人にはできる限りYを避ける
- Python 3.8以上
- pip(Pythonパッケージマネージャー)
# 1. プロジェクトフォルダに移動
cd /path/to/tnc
# 2. 必要なパッケージをインストール
pip install -r requirements.txt# Webアプリを起動
python app.py起動後,ブラウザで以下のURLを開きます:
http://127.0.0.1:5001
プルダウンから対象の年と月を選択します.
3名のスタッフ名を入力します(デフォルト: A, B, C).
カレンダーの各セルをクリックして休みを入力します.
- 1回クリック: 公(公休)
- 2回クリック: 年(年休)
- 3回クリック: 空欄(出勤)に戻る
土日は背景が赤くハイライトされます.
「🚀 勤務表を生成」ボタンをクリックします.
生成完了後,「📥 Excelをダウンロード」ボタンでExcelファイルを取得します.
Excelファイルの形式:
| 日付 | 曜日 | A | B | C | |||
|---|---|---|---|---|---|---|---|
| 1 | 月 | Y | 10 | 9 | 10 | ||
| 2 | 火 | 9 | Y | 10 | 10 | ||
| ... | ... | ... | ... | ... | ... | ... | ... |
- 各スタッフは2列(左: Yマーク,右: 時間/公/年)
- ヘッダー行のスタッフ名は結合されます
Webアプリを使わずに,コマンドラインからも実行できます.
# CSV入力 → Excel出力
python generate_shift.py sample_input.csv output.xlsx
# CSV入力 → CSV出力
python generate_shift.py sample_input.csv output.csv日付,曜日,スタッフA,スタッフB,スタッフC
1,月,,,
2,火,公,,
3,水,,公,- 休みの日に「公」または「年」を入力
- 出勤日は空欄
tnc/
├── app.py # Webアプリ(Flask)
├── generate_shift.py # コマンドライン版
├── requirements.txt # 依存パッケージ
├── sample_input.csv # サンプル入力
├── templates/
│ └── index.html # WebアプリのHTML
└── static/
└── style.css # WebアプリのCSS
# 環境変数でポートを指定
PORT=5002 python app.pyopenpyxlがインストールされているか確認:
pip install openpyxlPythonを知らない人でも使えるよう,Webにデプロイできます.
cd /path/to/tnc
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/YOUR_USERNAME/shift-schedule.git
git push -u origin main- Render.com にサインアップ
- 「New +」→「Web Service」
- GitHubリポジトリを選択
- 以下を設定:
- Name: shift-schedule
- Runtime: Python
- Build Command:
pip install -r requirements.txt - Start Command:
gunicorn app:app
- 「Create Web Service」をクリック
コードを変更したら、GitHubにプッシュするだけでRenderが自動的に更新を行います。
git add .
git commit -m "変更内容のメモ"
git pushデプロイ後,以下のようなURLでアクセスできます:
https://shift-schedule.onrender.com
ユーザーはこのURLを開くだけで勤務表を作成できます!
Taiki Watanabe
MIT