【勤怠管理システムを最速構築!】Python+Flask+SQLiteで立ち上げる方法

「とにかく早く勤怠管理を立ち上げたい!」
そんな時に役立つのが 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 に一式アップしてありますので、もし「そのまま動かしてみたい」という方は参考にしてみてください。

👉 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エクスポートまでをシンプルに実装。
ローカルで素早く試して、そのままクラウドへスムーズにデプロイ可能。

まず「勤怠管理を最速で作りたい!」という方にぴったりの構成です。

この記事を書いた人

目次