Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

勉強会の出欠確認 Bot を全社展開した話

こんにちは、技術本部 Data Hub Engineering グループの秋田です。
最近運動不足で体がなまっているのがちょっとした悩みです。ずっと放置していたリングフィットアドベンチャーを今更ながらやろうと思いつつ記事を書いているので、記事が載る頃にはムキムキになっていると思います。

弊社には Geek Seek Workshop という社内勉強会補助制度があり、毎日活発に勉強会が行われています。自分も週2~3回勉強会に参加しているのですが、メンバーに出欠確認を送信して、参加者を集計して、参加者全員の名前を記入し実施の申請をして...といった作業を毎度毎度やるのが正直面倒でした。

毎回参加者を募るのが少し面倒...

出欠確認を自動化したいな…と思っていたところ、Digitization部データ化グループの池田が出欠確認 Bot を作っているのを発見しました。Bot を見てめちゃくちゃ便利だ!と感激したので、池田に声をかけ、Geek Seek 対象者なら誰でも使えるようにと二人で Bot を改良し社内に展開しました。

そもそも Geek Seek って??

Geek Seek はエンジニアやデザイナーなどのクリエイティブ職メンバー向けの社内制度です。業務の環境改善やクオリティアップを目的としており、業務に役立つ書籍やツールの購入の補助が出ます。
Geek Seek には様々な種類があり、そのうちの一つの Geek Seek Workshop は勉強会の事前申請 & 実施報告をするとランチ補助が出る人気の制度です。

勉強会は毎年沢山開催されており、2021年度は年間で 2539 件もの勉強会が開かれていました。

課題の整理

Bot を改良するにあたり、改めて課題を整理してみました。
課題は大きく2つありました。

  1. 勉強会参加者の確認
  2. 申請

1 について、勉強会を定期開催していると、回によっては仕事が忙しくて参加できないメンバーがいたりします。出欠は Google カレンダーで管理することが多いものの、参加/不参加の押し忘れや出欠の訂正忘れが発生しがちです。そのためメンバーの多い勉強会だと結局誰が参加するのか分かりにくく事前申請が面倒なことがよくあります。もっと手軽かつ見落とされにくい方法で参加/不参加を表明、訂正できる方法が欲しいところです。

2 について、Slack で勉強会名と参加メンバーの申請を行うのですが、メンバーが多いと全員分のメンション入力が単純に面倒だったりします。同姓同名がいるとメンション間違いしやすいので正確さも必要です。また、面倒な作業であるゆえに申請作業をする人が毎回同じ人にならないようにしたいところです。

出欠確認 Bot

というわけでできたのが、以下のような Bot です。スプレッドシートに勉強会情報を登録すると自動で Slack にリマインドと参加者集計をしてくれます。

出欠はリマインドのポストに Slack のリアクションすることでも回答でき、回答忘れや急な予定変更等にも対応しやすくなっています。

参加者集計はカレンダーと Slack の両方を見て行い、両方に回答がある場合は Slack の回答を優先しています。勉強会申請のフォーマットに沿って集計結果を報告してくれるので、申請はほぼメッセージのコピペだけで完了します。

出欠確認Botは上図のような仕組みで動いています。シートに勉強会の情報を記入すると、タイマーで1時間おきに起動する Google Apps Script が必要なタイミングでリマインドと参加者集計をしてくれます。

工夫した点

出欠確認 Bot では、より楽しく便利にするためにいくつかの工夫をしています。

アイコンと Bot 名を指定可能

分かりやすく愛着のわくデザインにしたかったのでアイコンと Bot 名を勉強会ごとに指定できるようにしています。


リマインド/参加者集計時刻は任意に設定可能

勉強会は昼夜問わず行われているので、勉強会ごとに柔軟にリマインド/集計時刻を設定できるようにしています。例えば前日17時にリマインド、当日11時に集計といった設定が可能です。あらかじめシートに登録しておいた勉強会名をキーにカレンダーを検索し、勉強会の日時から逆算してリマインドと集計のタイミングを決定しています。

勉強会参加者リストを簡単作成

Bot がユーザをメンションしたい場合、Slack ID をどこかに登録しておく必要があります。今回の Bot では勉強会ごとにシートを作成し、メンバー名と Slack ID のペアを登録しています。しかしメンバー全員分の ID を人力で埋めるのは大変です。そこで、押すだけで通知先チャンネルのメンバーの名前と ID をシートに登録するボタンをシートに設置しました。


Bot が申請担当者を指名

Bot が申請担当者を指名することで、実は誰も申請作業をやっていなかった!という事態を回避できます。申請担当者は参加者の中から選んでおり、担当者決定アルゴリズム (ランダム or 過去の申請担当回数を考慮して決定) を勉強会ごとに選べます。Bot が決めてくれるおかげで申請担当が偏らずにすむというメリットもあり、好評な機能の一つになっています。

祝日は自動スキップ

祝日はリマインドや参加者集計はせず特別なメッセージが表示されます。Google の祝日カレンダーを利用して判定をしています。


まとめ

おかげさまで勉強会 Bot を展開後、これまでに数百回の勉強会で活用されてきました。
今後も Geek Seek Workshop がもっともっと活発になれば良いなと思います。

© Sansan, Inc.