身内需要のための記事ですが、せっかくの機会ということでQiita初投稿します。
追記: 弊社 Tech Blog と併せての投稿となりました
実現したいこと
私の勤務先では勤怠管理に IEYASU というシステムを使っています。
追記:「HRMOS勤怠 by IEYASU」に名称が変わりました
個人的に転職したばかりで、前職のものよりはるかに使いやすいシステムのため、日々感謝しております。
ただ1点感じたのは、出退勤時間を打刻するだけなら少し手間が多いことです。
- PC/スマホのロックを解除する
- Webアプリ/ネイティブアプリを開く
- 社員番号とパスワードを入力し、ログインする(Webアプリの場合は都度必要)
- 「出勤」または「退勤」ボタンを押す
このボタンを押すためだけにこれだけのステップを踏むのは、毎日となるとちょっと面倒です。そこで、なるべく簡単に済むようにしました。
なお、手元にあるのがiPhoneのためiOSの例となりますが、Androidでも似たことが可能のようです。
作戦
IEYASUにもAPIはありますがTokenの有効期限があるため、再発行の手間を考えて今回は避けます。
代わりに、IEYASUとSlackの連携機能を利用します。
IEYASUのAppに対して「出勤」または「in」とチャットすることで出勤の打刻が、「退勤」または「out」で退勤ができます。
この方法には有効期限がなく、使い続けることができます。
そこで「Slackに定型文チャットを送る操作」をなるべく簡単に済ます作戦を取ります。
IEYASUとSlackの連携
なにはともあれ、まずは連携から始めます。
あとで使用するIDを取得するため、この作業はブラウザ版Slackから行います。
「App」セクションにIEYASUがいればOKです。
いない場合は、「+」ボタンから追加しましょう。
ボタンは2つありますがどちらでも同じです。
追加できたら、「IEYASU」Appとのチャットを開いた状態で、URLを確認します。
URLの書式は
https://app.slack.com/client/{ワークスペースID}/{チャンネルID}
となっているので、チャンネルIDの方をどこかにコピーしておきます。
(チャットでも、チャンネルIDと呼ぶようです。)
SlackAppの作成
続いて、このチャットに投稿するためのSlackAppを作ります。
SlackAPIのページから "Create New App" を選択し、お好みの名前をつけて保存します。
このAppは「ユーザー自身としてチャットに投稿する」ことが必要なので、そのための権限を設定します。「Permissions」をクリックし、
「User Token Scopes」の方に「chat:write」を設定します。
「Bot Token Scopes」は不要です。
以上の準備ができたら、使用するワークスペースにインストールします。
インストール後、Tokenが発行されるのでどこかにコピーしておきます。
iOSショートカットの作成
最後に、SlackAppを実行するための環境をiPhone上に作成します。
iPhoneに「ショートカット」Appをインストールし、新規作成します。
先ほどのチャンネルに投稿するためには、chat.postMessageメソッドを使います。
curl -X POST -d 'token={token}' -d 'channel={channel_id}' -d 'text={text}' 'https://slack.com/api/chat.postMessage'
iOSショートカットでcurlコマンドに相当するのは「URLの内容を取得」というアクションで、このように設定します。textに「in」と入れているので、この場合は出勤となります。
さらに、出勤と退勤の時間はだいたい決まっているので、こちらの方法を利用して、1ボタンで出勤と退勤がどちらも打てるようにします。
最終的に出来上がったのがこちらです。6時〜14時なら出勤、それ以外なら退勤の登録を行います。
できたら、最後にショートカットをお好きな位置に配置します。
私はロック画面から使えるようにしたいので、ウィジェット画面に配置しています。
最後に
以上で完成です。
これで、iPhoneのロック画面からでも勤怠登録ができるようになりました。
私は手動トリガーで運用していますが、GPSやNFCタグも設定できますので、勤務形態に合わせて設定していただくとさらに便利かと思います。
なお、「ショートカット」AppはmacOS(Monterey以降)にも対応しています。私の場合、Macが目の前にある場合はわざわざiPhoneを取り出す方が面倒だと感じるので、メニューバーからも実行できるようにしています。もちろんシェルスクリプト等にすればMac以外でも実行可能なので、環境に合わせてご活用ください。