JavaScript
tampermonkey

勘違いして定時前に帰ってしまったので再発防止策を考えてみた

この記事は富士通クラウドテクノロジーズ Advent Calendar 2017 3日目の記事です。
2日目は@hunter9xさんの「logstashのPersistent queuesとBackpressureの紹介」という記事でした。
4日目は@herietさんの「Prometheusのexporterを作ってニフクラRDBを監視する」です。

勘違いして定時前に帰った

ある日のこと。スプリントレビューを終え、今日も一仕事やり終えたという思いを胸に打刻を済ませて退社。
電車がいつもより空いているなーと思いふと時計を見てみるとそこには17:25という文字が。
時計の時間がずれたのだと信じ電車のモニターに映る時間を確認すると変わらず17:25。
何ということか。定時を過ぎたと勘違いして、定時前に帰ってしまったのだ。
今思い返すと帰り際にお疲れ様ですと言ったときの周囲の反応がいつもと違っていたような...

再発防止策の検討

打刻を忘れることの防止策であれば、定時になったら打刻を促す通知をSlackに設定をするなどの対処法があります。
(打刻を忘れるケースは一般的に起こりやすいのかweb検索すると対策がたくさん出てくる)
しかし定時前に誤って退社してしまうパターンの対策方法は調べても全く出てこなかったので独自の方法を編み出すことにしました。

  1. 定時になったらSlack通知
    • そもそも定時前に帰ってしまうと意味がないので却下
  2. 勤務時間中と定時後のデスクトップ壁紙を切り替えるスクリプトを設定
    • 壁紙に注意を向けなければ有効ではないので却下
  3. 勤務時間中に打刻しようとすると警告するスクリプトを設定
    • 普段意識していなくても自動的に対処できるため今回はこれを採用

勤務時間中に打刻システムにアクセスしたら警告させる

勤務時間中に打刻システムにアクセスすると警告するという要件を実現するため、今回は Tampermonkeyを使用しました。
Tampermonkeyはユーザースクリプトを実行することができるブラウザ拡張機能です。
同じような拡張機能はたくさんあるのですが、こちらはChromeやSafariなど様々なブラウザに対応していて先月公開されたFirefox Quantum(Firefox 57)でも利用できるのでおすすめです。

Tampermonkeyのインストールと設定

1. Tampermonkeyのインストール

http://tampermonkey.net/ からインストール
1.png

2. スクリプトの追加

「新規スクリプトを追加...」を選択してスクリプトを追加します。
下記のスクリプトでは9:00-17:45の間に https://fjct.fujitsu.com/ へアクセスすると警告が出されます
※ 実際に使用するときは打刻システムのURLを設定しています

// ==UserScript==
// @name         Check for working hours
// @namespace    https://fjct.fujitsu.com/
// @version      0.1
// @description  勤務時間中に設定URLへアクセスした場合に警告します
// @author       You
// @match        https://fjct.fujitsu.com/
// @grant        none
// ==/UserScript==

let onDuty = function(){
    let currentTime = new Date();
    let startingTime = new Date();
    startingTime.setHours(9);
    startingTime.setMinutes(0);
    startingTime.setSeconds(0);
    let quittingTime = new Date();
    quittingTime.setHours(17);
    quittingTime.setMinutes(45);
    quittingTime.setSeconds(0);
    if(startingTime <= currentTime && (currentTime < quittingTime)){
        alert('あれ?もう帰るの?');
    }
};

window.onload = onDuty;

入力後、保存をすれば自動的に有効になります。
2.png

3. 設定したURLにアクセス

設定時刻中にアクセスすると警告が表示されます。
3.png

さいごに

このスクリプトのおかげもあってかあれから一度も定時前に帰ることはなくなりました!
今回はアラート用にTampermonkeyを使用しましたが、ユーザースクリプトはwebページの変更にこそ真価を発揮するのでいろいろ試してみると面白いかもしれないですね。

今日は勤務時間中の打刻監視でしたが、明日は@herietさんのもっと真面目な監視の話です。
お楽しみに!