「とにかく早く勤怠管理を立ち上げたい!」
そんな時に役立つのが Flask + SQLite を使ったシンプルなMVP(最小限実行可能アプリ)です。
本記事では、Pythonを使って1日で 出勤・退勤・休憩打刻 → 当日ログ表示 → CSVエクスポート までできる勤怠管理を、最速で動かす方法を紹介します。
なぜ Python + Flask + SQLite?
- Flask → 軽量フレームワーク。1ファイルで動かせる
- SQLite → インストール不要。自動でファイルDB作成
- シンプル設計 → 出勤・退勤・休憩の3機能に絞り込み
これなら、ローカル環境でも即日導入できますし、そのままクラウド(RenderやRailwayなど)にも載せられます。
プロジェクト構成
まずは以下のディレクトリを準備します。
attendance-mvp/
├─ app.py
├─ requirements.txt
├─ .env
├─ templates/
│ ├─ base.html
│ ├─ index.html
│ ├─ my.html
│ └─ admin.html
└─ static/
└─ style.css
必要なライブラリ(requirements.txt)
Flask==3.0.3
Flask_SQLAlchemy==3.1.1
python-dotenv==1.0.1
pytz==2024.1
核となるコード(app.py)
SQLiteを使ったデータモデルと、Flaskルートの最小構成です。
- User … 従業員情報
- Punch … 打刻(出勤 / 退勤 / 休憩開始 / 休憩終了)
- /punch … 打刻登録
- /me … 個人の直近7日分サマリ
- /admin … 管理画面+CSVエクスポート
コード全文はここでは長くなるので割愛しました。
私の GitHub に一式アップしてありますので、もし「そのまま動かしてみたい」という方は参考にしてみてください。
画面イメージ
トップ画面 → 名前を入れて「出勤」「退勤」「休憩開始」などを記録

個人サマリ → 直近7日分の勤務時間と打刻履歴

管理画面 → 本日の勤務時間一覧+CSVエクスポート機能

画面のデザインには「Tailwind」(CDN読込)というテンプレを使っています。
今回は、ファイルを外から1行読み込むだけで使えるようにしているので、特別なツール(Node)のインストールは要りません。
インターネットにつながっていればOKです。
Tailwind…「ボタンや余白の決まり」をまとめたデザインの型
CDN…インターネット上のファイルをそのまま借りて使う方法
Node…フロントエンド開発で使うツール一式。今回は不要
起動方法
# 1) 仮想環境と依存インストール
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 2) DB初期化
flask --app app.py init-db
# 3) 起動
flask --app app.py run
ブラウザで http://127.0.0.1:5000/ を開けば利用開始!
拡張のヒント
- PINログイン:UserモデルにPINを追加
- QRコード打刻:入口にQRを掲示してスマホでピッと打刻
- 部署・現場対応:Punchにlocationフィールドを追加
- Googleスプレッドシート連携:CSVを自動同期
まとめ:最短1日で立ち上げ可能!
Python + Flask + SQLite なら、勤怠管理は最短1日で立ち上げられます。
出勤・退勤・休憩の打刻、個人サマリ、CSVエクスポートまでをシンプルに実装。
ローカルで素早く試して、そのままクラウドへスムーズにデプロイ可能。
まず「勤怠管理を最速で作りたい!」という方にぴったりの構成です。