人生、徒然なるままに。

Webエンジニアのぼやきです。IT系の話題をメインに。

KING OF TIMEの出退勤打刻を忘れていたらSlackに通知してくれるプログラムを作りました

2019年の12月頃からリモートワークをしています。

現在勤めている会社では、KING OF TIME という勤怠管理システムを導入していますが、リモートワークなので仕事の開始・終了時に自分で電子的に打刻をしなければいけません。

その出退勤の打刻を忘れていたら、自動的にSlackに通知してくれる仕組みを作ったというお話です。

作ったもの

以下で公開しています。

github.com

仕組み

  1. Selenium WebDriver 経由で Headless Chromeを起動
  2. 予め設定した自身のKING OF TIMEのログインIDとログインパスワードを自動で入力しログイン
  3. ログイン後の画面で出勤済みなのか、退勤済みなのかのデータを取得
  4. 予め設定した普段の出退勤時刻より遅ければ、予め設定した自身のSlackへIncoming WebHook 通知

使い方

  • GitHub Actionsで起動する方法

  • Docker Imageを作って起動する方法

    • ↑のリポジトリをcloneし、含まれているDockerfileをbuildして出来上がったイメージを、前述の必要な設定と共に走らせる方法。k8sの環境があればCronJobでいい感じに取り扱えるはず。もしくは手元のマシンでcrondに頑張ってもらう方法とか。
  • npm/yarnを使って起動する方法

    • www.npmjs.com をインストールし、起動するマシンの環境変数に前述の設定を与えておき、パッケージを読み込む方法。メリットはあまりないかな。。

なぜ作ったか

  • リモートワークが増えてきて、リモートで打刻する人が多い中、打刻忘れという手間を減らせたらいいな、と。(自分はちゃんと打刻しています)

KING OF TIMEのログインIDとパスワードを入れさせる認証方法ってどうなの?トークン + APIじゃなくて?

一般社員はKING OF TIMEのAPIトークン発行を許されていなかったのでID/PW形式にしました。。。ま、人の手に委ねるわけでもないし大丈夫でしょう。 トークン + API形式の認証方法も欲しければPull Request送ってください!

最後に

打刻はちゃんとしようね