slackで未払い残業代を手にいれる
GWも明けて五月病真っ只中の季節ですが、新卒の人たちは社会人生活を謳歌してるのでしょうか。
え?GWも出勤?しかも、残業代が出ない?ブラック企業へ入社おめでとう!
でも、そんな可哀想なあなたに、slackを使って、ブラック企業から未払い残業代を請求する方法を伝授します。
もくじ
- どうやって残業代を請求するの?
- 準備
- slackにつぶやく
- batファイルを作る
- メッセージを飾ってみる
- スタートアップ/シャットダウンスクリプトの設定
- そして本当の戦い
1.どうやって残業代を請求するの?
残業代に必要なものは、残業していたという記録です。 それは、就労時間を記録したメモでもよいのですが、メモなんてしてる暇ねーよ。さっさと帰りたいんだよ。しかも、周りに怪しまれるじゃねーか。
というわけで、PCをオン・オフしたところでslackにメッセージを飛ばすことで就労時間を自動で記録するのがゴールです。
2.準備
対象はWindows PCです。 MAC?そんな会社ブラックじゃねーよ。
1.slackのアカウント取得
slack.com にいってアカウント作るべし。 [company name] ってあるけど、本当の会社名入れないように。URLに使われるだけだから、適当なワードを入力すること
2.APIアドレスの設定
Incoming WebHooks という通知用のURLを取得する。
設定画面から、URLを取得できる。
詳しくは以下参照のこと
Incoming WebHooksを使用して、GitBucketにpushしたり、pull request作成,pull requestをマージ,pull requestにコメント,issue作成等をした際にSlackのチャンネルに通知メッセージを投稿してみる - keiwt’s diary
3. curlのダウンロード
公式にもある通り、メッセージを通知するのは、cURLコマンドで先ほど取得したURLにPOSTするのが一番楽。
だが、Windowsでは、curlコマンドはないので、ダウンロードする。
詳細は以下を参照。
Windows®環境にcURLコマンドを実行できるようにインストールする手順 | ええかげんブログ(本店)
会社PCだとインストールできない場合もあるが、zip版を落とせば解凍しただけでコマンドが使える。 適当なフォルダで解凍しましょう。 その後、環境変数PATHにそのフォルダを設定しておく。
3. slackにつぶやく
batファイルを作成し、以下のコマンドを書いて実行する。
start.bat
curl -X POST --data-urlencode "payload={\"text\":\"start working!\"}" https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ダブルコーテーションをエンコードするのは、Windows版cURLの仕様です。参考
え?proxy使ってる?
ならばこう。
start.bat(proxy設定)
curl -X POST --proxy http://192.168.1.1:8080 --data-urlencode "payload={\"text\":\"start working!\"}" https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
え?sslがなんたらとかへんなエラーが出た?
curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.
じゃ、メッセージの通り、-kオプションを追加で。
start.bat(-kオプション)
curl -X POST --data-urlencode "payload={\"text\":\"start working!\"}" -k https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
で、実行すると
おめでとう!
2. メッセージを飾ってみる
今回起動用とシャットダウン用とで2つbatファイルを作るので、ついでに日本語にしてみる。
なお、slackのAPIでは文字コードをutf−8で送らなければならず、Windows版cURLのコマンドラインでは文字化け不可避なので、apiに渡す部分を外部ファイル化する。
また、あとあとスタートアップスクリプトとして利用できるように、cdコマンドなども追記しとく
start.bat
c:
cd C:¥script¥slack
curl -X POST --data-urlencode payload@start.json https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{
"text": "今日も一日がんばるぞい!",
"channel":"#work",
"username":"社畜",
"icon_emoji":":smiley:"
}
end.bat
c:
cd C:¥script¥slack
curl -X POST --data-urlencode payload@end.json https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{
"text": "今日も一日がんばったぞい!",
"channel":"#work",
"username":"社畜",
"icon_emoji":":skull:"
}
オプションの説明
text:メッセージ本文
channel:slack上のチャンネル(なしでも可)
username:つぶやいた人の名前
icon_emoji:つぶやいた人のアイコンを絵文字で指定できる。一覧はここから
これらのファイルを C:¥script¥slack に全部置いて順番に実行すると、こんな感じになる。
ちゃんと時間が記録されてますね(もちろん日付も見える)
では、最後の仕上げ
3. スタートアップ/シャットダウンスクリプトの設定
このスクリプトをWindowsのスタートアップ/シャットダウン時のスクリプトとして動作させます。
簡単なのは、グループポリシーを使用してスタートアップ/シャットダウン時に先ほどのスクリプトを指定します。
以下参照(XPですが)
@IT:Windows TIPS -- Tips:グループ・ポリシーを使って、コンピュータの終了時にコマンドを実行する
4. そして本当の戦い
slackは無料枠で、10000メッセージが保存されるので、5000日分つまり13年は出退勤の時刻が保存可能。 あとは、その証拠(slackの就労記録と実際の給与明細の労働時間とか)を持って労働基準監督署にヘルプミーして、会社を相手に一戦交えれば晴れて未払い残業代をゲットだぜ!
補足
うまく動かないんだぜ?
グループポリシーのスクリプト実行時の環境変数PATHは、ユーザー変数は認識しないので、システム変数のPATHを設定すること。
PATH自体設定できない場合は、batファイル内でフルパスでcurlコマンドを実行。
グループポリシーが使えない場合
スタートアップにショートカットを置くか、トリガーを起動時にしたタスクを作成することで、起動時のスクリプトは実行できる
しかし、シャットダウン時は、そういう方法が使えないので、slackへのメッセージ通知コマンドの後ろにシャットダウンコマンドを書いたbatファイルを作り、PCの電源を切る時は、そのbatファイルを起動するようにする(若干厳しいか・・・)