32
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

出退勤打刻漏れを防ごう!

Last updated at Posted at 2025-05-09

はじめに

現在、弊社では「出退勤打刻の漏れ」が問題となっている。

弊社の打刻方法は、各社員に配布されたICカードを専用端末に読み込ませることで行う方式である。打刻が完了すると、専用の勤怠管理サイト上で出退勤時刻を確認できるようになる。

しかし、打刻を忘れた場合は、後でPCの起動ログなどを証跡として提出し、勤怠時間の修正依頼を行わなければならない。依頼を受けた人事部は、その証跡を目視で確認し、必要な修正を手動で許可する。件数が少なければ大した手間ではないが、毎日十数件に及ぶと負荷が非常に大きくなる。

このような背景から、「出退勤打刻の漏れを防ぐ」ための仕組みを考案した。

設計方針

筆者はそこら辺にいる一般社員であり、以下のような制約が存在する。

  • 有料ツールは導入不可
  • 管理者権限を必要とするPC設定の変更は不可
  • 勤怠管理サイトのAPIは使用不可
  • 実装に割ける時間は数時間程度

このような制約下でも、以下のようなシンプルな仕組みであれば実現可能と判断した。

  1. PCの起動・シャットダウン時に何らかの通知を発行する。
  2. 通知を私用のスマートフォンで受信する。
  3. 通知経由で勤怠管理サイトをすぐに開けるようにする。

システムイメージ.png

方針の選定

専用のスマホアプリを自作し、リッチなUIで実装することも検討したが、時間的な制約から断念した。代替案として、Pushbulletという外部サービスを利用し、通知機能を簡単に実現することにした。

Pushbulletとは?
PC・スマートフォン間で手軽に通知やファイルを送信できるサービスである。
気になる方は公式ホームページへ→ https://www.pushbullet.com/

初期試作(退勤打刻向け)

まずは退勤打刻の漏れを防ぐことを目指し、以下の手順で仕組みを構築した。

やったこと

  1. Pushbulletのアカウントを作成し、アクセストークンを生成
  2. Pushbulletのスマホアプリを私用のスマホにインストール
  3. PushbulletのAPIを叩くだけの.batファイルを作成
  4. タスクスケジューラで新しいタスクを作成
    トリガー:ユーザーセッションからの切断時
    操作:上記.batファイルを実行

スクリーンショット 2025-05-08 134924.png
スクリーンショット 2025-05-08 134954.png

.batファイルの中身

@echo off
curl -X POST "https://api.pushbullet.com/v2/pushes" ^
  -H "access-token: Pushbullet上で生成したアクセストークン" ^
  -H "content-type: application/json" ^
  --data-raw "{\"type\":\"link\",\"title\":\"おつかれさん\",\"body\":\"勤怠打刻を確認してね\",\"url\":\"勤怠管理サイトのURL\"}"

試作版の問題点

初期実装後、PCをシャットダウンして動作確認を行ったが、プッシュ通知は届かなかった。調査の結果、タスクスケジューラの「ユーザーがログオンしているときのみ実行する」という設定が原因であることが判明した。

「ユーザーがログオンしているかに関係なく実行する」という設定への変更を試みたが、一般ユーザーの権限では変更できなかった。

image.png

修正版の構成

意地でも自分の権限で出来る範囲で納めたかったので、再度方針を見直し、手動操作を前提とした構成に変更した。

やったこと(修正版)

  1. Pushbulletのアカウントを作成し、アクセストークンを生成(変更なし)
  2. Pushbulletのスマホアプリを私用のスマホにインストール(変更なし)
  3. プッシュ通知送信とPCシャットダウンを同時に実行する.batファイルを作成
  4. 作成した.batファイルをデスクトップ等に配置してすぐ実行できるようにした

修正版.batファイル

@echo off
curl -X POST "https://api.pushbullet.com/v2/pushes" ^
  -H "access-token: Pushbullet上で生成したアクセストークン" ^
  -H "content-type: application/json" ^
  --data-raw "{\"type\":\"link\",\"title\":\"おつかれさん\",\"body\":\"勤怠打刻を確認してね\",\"url\":\"勤怠管理サイトのURL\"}"
shutdown /s /f /t 5

退勤時にこのファイルを実行すれば、通知の送信とPCのシャットダウンを一括で行える。ログオフ前に通知が発行されるため、権限不足による実行失敗の心配もない。

Screenshot_20250508-175331.png

おわりに

今回作成したシステムには明確な問題が存在する。

それは、「.batファイルの実行を忘れず行えるなら、そもそも打刻を忘れることがない」ということである。

とはいえ、何も対策しないよりは遥かにマシでなので、今後もしより良い仕組みを思いついたら改善したい。

ちなみに、出勤打刻の漏れについては「ロック画面の画像を変更する」という力技である程度防止できることが判明したので、実装する気が起きなかった。

1000015645.jpg

32
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?