OVERVIEW
概要
小規模な店舗・事業所での利用を想定し、従業員の出退勤打刻から、管理者による確認・修正・集計までを1つにまとめた勤怠管理Webアプリです。
従業員用と管理者用で画面と機能を分け、日々の打刻を迷わず行える操作性と、必要な勤怠情報をまとめて確認できる管理のしやすさを両立しました。勤務時間に応じた休憩時間の自動反映、実働時間の算出、勤怠情報の修正履歴など、実際の運用を想定した機能も実装しています。
PWAに対応しているため、スマートフォンのホーム画面からアプリのように起動できます。
目的・課題
紙のタイムカードや手作業による勤怠管理では、勤務時間の集計や修正内容の確認に手間がかかることを想定し、従業員の打刻操作と管理者の勤怠管理を1つのWebアプリで完結できることを目的に制作しました。
単に出退勤を記録するだけでなく、勤務時間に応じた休憩時間の自動反映や、勤怠情報を修正した際に履歴を残せる仕組みを取り入れ、実際の運用を想定した機能構成にしました。
| 制作期間 | 約2週間 |
| 制作形態 | 自主制作 |
| 担当範囲 | 要件整理 / 画面・機能設計 / UI調整 / 生成コードの組み込み・修正 / データベース設計・構築 / 動作検証 / PWA対応 |
| 使用ツール | Laragon / phpMyAdmin / 生成AI |
| フロントエンド | HTML / CSS / JavaScript |
| バックエンド | PHP |
| データベース | MySQL |
| その他の技術 | PWA / Service Worker / レスポンシブ対応 |
SYSTEM / FLOW
従業員の打刻から管理者の確認まで
従業員がスマートフォンから出勤・退勤を打刻すると、勤怠情報がデータベースに保存され、管理者画面から確認・修正・集計できる仕組みです。
従業員画面
スマホから打刻
→
データベース
勤怠情報を保存
⇄
管理者画面
確認・修正・集計
データベースで管理する主な情報
従業員情報
従業員コードや氏名、雇用形態などを管理します。
勤怠情報
出勤時刻・退勤時刻・休憩時間などを記録し、実働時間の確認に利用します。
修正履歴
勤怠情報を修正した際に変更内容を履歴として残し、後から確認できる構成にしています。
MAIN FEATURES
打刻から自動計算・集計まで
従業員側には、ログイン、出勤・退勤の打刻、現在時刻・勤務状況の表示を実装しました。退勤時には勤務時間を判定し、条件に応じた休憩時間を自動反映して実働時間を算出します。
管理者側では、従業員管理、勤怠情報の確認・追加・修正、月別集計、CSV出力を行えます。従業員の打刻から管理者の確認までを、1つのシステム内で管理できる構成にしました。

UI DESIGN
役割ごとに操作を絞った画面設計
従業員と管理者では必要な情報や操作が異なるため、役割ごとに画面を分けました。
従業員画面では、現在時刻と勤務状況を大きく表示し、出勤・退勤ボタンを画面下部に配置しています。日常的な打刻操作に集中できるよう、表示する情報と機能を絞りました。
管理者画面では、当日の勤務状況、従業員情報、勤怠一覧、修正・集計機能へ移動しやすい構成としています。参考デザインをもとに方向性を定め、生成AIで作成したUIを確認しながら、情報の優先順位や操作しやすさを調整しました。
ADMIN FEATURES
確認・修正・集計を一画面から
管理者用ダッシュボードでは、登録スタッフ数、本日の出勤人数、勤務中・退勤済みの人数をまとめて確認できます。
勤怠管理画面では、年月と従業員を指定して勤怠情報を表示し、勤務時刻や休憩時間の修正、新しい勤怠データの追加を行えます。修正内容は理由とともに履歴として保持し、後から変更内容を確認できるようにしました。

IMPLEMENTATION / VERIFICATION
PHPとMySQLを使った勤怠管理
PHPとMySQLを連携し、勤怠情報と従業員情報をデータベースで管理しました。 登録・取得・更新などの処理を実装し、プリペアドステートメントを用いてSQLインジェクション対策も行いました。
管理者・従業員のログインにセッション認証を実装しました。 パスワードはハッシュ化して扱い、CSRF対策、セッションIDの再生成、HTML出力時のエスケープなど、認証・データベースを扱うアプリとして必要なセキュリティも取り入れました。
Service Workerを利用してPWAに対応。 キャッシュ対象や取得方法を調整し、通信できない場合はキャッシュしたCSSを適用した専用オフライン画面へ切り替わるよう実装しました。
生成AIの活用範囲と担当内容
実装では生成AIを、コード生成の補助やエラー原因の整理に活用しました。生成されたコードをそのまま使用するのではなく、開発環境への組み込み、データベースとの接続、動作確認、エラー箇所の特定と修正を繰り返しています。
必要なデータと機能の整理、画面・機能構成、データベース設計、生成コードの採否判断、実装内容の修正、動作検証は自身で行いました。特に、勤怠情報を変更した際に修正内容を確認できるよう、履歴を保持する構成を要件として取り入れています。
