LayerX エンジニアブログ

LayerX の エンジニアブログです。

勤怠をいい感じにする社内Slackアプリ #LayerXテックアドカレ

バクラク事業部Platform Engineering部DevOpsチームの id:itkq です。CTO室という事業部横断のコーポレートエンジニアリング組織を兼務しています。早いもので今年も終わりが近づいてきました。Spotify 2023 Wrappedによると今年一番聴いたアーティストは結束バンドで、一番聴いた曲は『忘れてやらない』でした。

この記事は LayerXテックアドカレ 27日目の記事です。前回は yohei による FlutterアプリにおけるUI Component Architecture でした。次回は Tomoaki が担当します。今回は、勤怠関連の社内Slackアプリを開発して運用している話をします。

LayerXにおける勤怠と習慣

LayerXでは勤怠システムにAKASHIを採用しています。システム上の勤怠に加えて、次のような習慣があります。

  • 出勤時に統一のSlackチャンネル #corp_info で連絡する。出社 or リモート、途中で移動、早抜け、などの情報を書く
  • 毎日統一のSlackチャンネル #daily_report に日報を書く。基本フォーマットは「やったこと・やること・ひとこと」。退勤時に投稿する人が多いが投稿時間の縛りはない。基本的に経営メンバー含むすべての社員が投稿する

日報には「ひとこと」を書くことで面白さが生まれてコミュニケーションが発生したりします。社員数は増加し続けているため、これらのチャンネルにはそれなりの投稿がありますが、引き続きリスペクトしていきたい習慣だと思っています。

勤怠が難しいという現実

私の前職ではPCの操作ログから自動的に打刻されるシステムを使っていた 1 ため、自身の意志で打刻をするように脳を切り替える必要がありました。ただ現実は難しく、以下のようなことがたびたび起こっていました。

  • 打刻を忘れてしまう
    • リモート勤務が多いので何らかの記録(例えばWi-Fiの接続記録で自動的に打刻)に頼れない
  • 出勤連絡を投稿し忘れる
  • 日報を書き忘れる

ブラウザで毎日AKASHIのWebページを開くのが億劫になりつつあったことと、出勤連絡と日報を書く習慣から、Slack経由で何かできないかを考えていました。その頃、自分の入社前からSlackスラッシュコマンド経由で打刻できるシンプルなシステムが存在していたものの、あまり活用されていないということを聞きました。その理由も聞きつつ、労務チームとも要件を相談し、新規Slackアプリとして実装することにしました。

“slack-kintai” の紹介

現在開発・運用している slack-kintai というアプリの基本機能について紹介します。ホーム画面から、AKASHI API経由で打刻(出勤、退勤、休憩入、休憩戻)することができます。ここでは基本となる出勤と退勤のフローについて紹介します。勤怠と関連する習慣を一箇所で同時に行うことで、操作を忘れることを防止できます。

出勤

出勤ボタンから、打刻と同時に出勤連絡をポストします。"in wfh" はリモートの場合に使われるテンプレートみたいなものです。

ホーム画面

リモート出勤画面

出勤連絡

退勤

退勤ボタンから、打刻と同時に日報をポストできます。日報のテキストエディタには基本のフォーマットが埋まっており、書くことが少し楽になります。

退勤画面

日報の投稿

実装とインフラ

Slackアプリは bolt.js を使ってTypeScriptで実装しています。利用者本人としてSlack操作をする必要があったため、OAuthを利用しています。

運用負荷を可能な限り下げるため、AWSのサーバーレスサービスを使って構築しています。特に面白みはありませんが、詳細は以下です。

  • ホスティング: AWS App Runner
  • データベース: DynamoDB
  • 定期バッチ: EventBridge Scheduler + Step Functions + ECS RunTask (Fargate)

slack-kintaiの便利機能

基本機能以外の機能についても紹介します。

出勤報告と日報を別のチャンネル (e.g. チームチャンネル) にクロスポストするオプション

出勤連絡のクロスポスト

ステータス同期オプション。オフィス出勤では「🏢」リモート出勤では「🏡」絵文字を設定し、退勤時にクリアする

Slackステータスの自動更新

出勤と退勤のリマインダー。それぞれの少し前の時間に設定しておくと、通知バッチがつくので打刻漏れを減らせる

出勤リマインダー設定
出勤リマインダー通知

出勤報告の文字列をSlack検索することで、月ごとの出社日を算出。交通費精算で便利

統計情報として月のオフィス出社日を算出。全然オフィスに行っていないことが分かる

その他細かいもの

  • 打刻漏れなどの勤怠アラートがある場合リマインドする
  • 所定労働時間と実績、その差分の表示
  • 前回の日報を保存して呼び出せるように(やる → やった になりがちなので)

導入から半年経ってみて

現在は100人弱がslack-kintaiを利用しています。 人生で一番打刻がうまくいっている、と複数の声をいただくなど、定性的には一定の課題を解決しているといえます。個人的にも、リマインダーのおかげで打刻と出勤報告を忘れることがほぼ無くなりました。一方で定量的にどの程度良くなったかは計測できておらず、今後の課題です。 導入後も継続的に要望があり、要望数や妥当性を考慮して機能開発しています。また、アプリを利用しているデザイナーの方が、よければどうぞとシュッとアイコンを作ってくれたことが嬉しかったです。今後も引き続き勤怠をいい感じにできればと思っています。


  1. これはこれで本人は休憩しているつもりなのに休憩が記録されないなど難点もあった