SmartHR Tech Blog

SmartHR 開発者ブログ

ビルの来客システムと Slack を連携させたら便利すぎてヤバい

こんにちは、コーポレートエンジニアの yamashu (@yamashush) です。

本記事では、ビルの来客システムと Slack を連携させてみた話を書いていきたいと思います。

なにが課題だったか

弊社は2019年4月に六本木にオフィスを移転しました。

SmartHR 新オフィスの行き方

https://d2l930y2yx77uc.cloudfront.net/production/uploads/images/10746663/picture_pc_dd535dfc880038e95706c090dc3cdecc.jpg

移転前にいたビルと比較して建物規模が大きくなり、1階にはフラッパーゲートが設置されています。ゲストの方の入館には、事前にお知らせしたワンタイムコードで入館証を発行していただくようになりました。

ワンタイムコードはビルから提供される 専用の Web システムで発行することになるのですが、これがなかなか 煩雑な作業 なのです。

  • サイトを開いて、ログイン等の前動作が必要
  • 申請時の必須入力項目が10個くらいある
  • 申請完了後にその場でワンタイムコードが確認できない(2〜3分後にメールで申請結果が届く)

移転前にプレで使用していたのですが、「もうちょっと楽できないかなあ〜」「なんとかしたいな!」と思っていました。

構想数時間で実装へ

まず、どうなれば 自分が みんなが嬉しいかを考えました 🤔

  • サイトを開いてログインしたり、メールで結果を見たりするのは面倒くさい
  • Slack から申請できると便利
  • Slack に結果が通知されると便利
  • 要するに Slack だけで完結させたい

↑のような方針をまずはザクッと決めました。その後は、軽く Slack API まわりの調査をして「よし、いけそう!」と目処がたったので実装をはじめました。

弊社には 早いほうがカッコイイ という文化があります。今回の仕組みを作るときも、まずはアウトプットしてみんなが使える状態にもっていくことを最優先にして2日くらいで出しています。結果的に社内のみんなに触ってもらってフィードバックをもらいながら改修を進めることができました。

どうなったか

無事、申請から通知までを Slack だけで完結させることができました 🎉

社内では Ruby が公用語なので Ruby を使っています。サーバ構築等は省力化したいので Heroku を使いました。各処理は以下のようにつくっています。

申請情報入力

  • スラッシュコマンドで申請画面を表示
  • インターフェースは Slack Dialog を利用
  • 日付や時間はプルダウンから選択できるようにして入力作業を省力化
  • 申請者の Slack Id が結果通知先に必要になるので情報を引き回す

申請のバックグラウンド処理

  • 申請システム側に API はないので、 mechanize を使ってユーザ操作と同じ操作を実現
  • 処理が少し長くなり Slack の3秒応答ルールにひっかかるので、 sidekiqで非同期化

申請結果の通知

  • メール受信は Zapier を使って Webhook を作成
  • 必要な情報だけを正規表現をつかって抜き出してユーザに通知
  • ゲストへのご案内文テンプレートをスレッドで追加通知

社内からの反応

改善点などのフィードバックもそうですが、使ってみた感想もすぐにもらえるので、「便利!」みたいな反応を貰えると、作ってよかったなと思っています。なにより作ってて楽しかったので、これからもどんどん便利なツールを作っていきたいと思います!

2019年8月26日 追記

こちらの仕組みは OSS として公開しましたので、ぜひ使ってみてください。 また Slack インテグレーションのご参考になれば 🙏

tech.smarthr.jp

github.com

情報システムエンジニア/コーポレートエンジニアの2人目を募集中です!!

こんな形で社内ハックをしているのですが、コーポレートエンジニアはいま1人しかおらずやりたいことに対してリソースが不足しているため、一緒に仕事ができる方を募集しております!

人が欲しいものをつくれる 💪

社内で困っていることを解決するために、自分で課題を見つけアプローチができます。構想から実装まで自分で考えて100%腹に落とした状態で仕事ができるので、とても納得感がある仕事ができます。

裁量がある 🙌

金額が大きな話でなければ、使う技術やサービスは割と自由に選択できます。決裁や稟議みたいな時間のかかる意思決定フローもありません。結果、爆速でアウトプットすることができます!

募集内容の詳細はこちら。

open.talentio.com

会社説明資料はこちら。

speakerdeck.com

ぜひご応募をお待ちしております!