Slackでの朝会のファシリテーター用のbot作成
2023/06/08
新型コロナウイルス感染症が5類感染症に移行したとはいえ、特にスタートアップではリモート勤務が主体のエンジニアチームは多いかと思います。
今回は、朝会用のSlack Botを紹介したいと思います。
Contents
作成の背景
各種本や記事があることからわかるように、会議のファシリテーションは簡単なようで奥が深いです。ファシリテーション技術を上げるためには、テクニックを理解した上で経験を積んでいくのが重要です。ファシリテーション技術を上げるためには、テクニックを理解した上で経験を積んでいくのが重要です。ただ、自分でしたほうが早いので、プロジェクマネージャーなどが自らファシリテーションをしがちです。ですので朝会のように頻度が多い会議でファシリテーションを若手に任せると、経験を積んでもらうことが可能となります。
また、フルリモート下では各種会議でしか会話する機会がありませんが、目的・議題がはっきりした良い会議ほど雑談をする機会がありません。その一方で、心理的安全性の観点で雑談をするのが重要と言われています。
よって、ファシリテーターと雑談担当者を毎朝会でランダムに決めて半強制的に機会を作り出すことを考えました。
機能
そこまでコストを掛けるものではないので、機能は3つに絞りました。
ランダムにファシリテーターを選ぶ
ランダムに雑談を話す人を選ぶ
祝日はBotが飛ばないようにする
3が唯一工夫した点です。祝日にメンション付きでメッセージが飛ぶのは迷惑を掛けるので対応しました。
実装
以下の技術スタックを使用しました。
Botのデプロイ先: AWS Lambda (API Gateway使用)
言語: Python
使用したライブラリ: python-slack-events-api python-slack-sdk jpholiday
使用したフレームワーク: Serverless Framework
Serverless Frameworkのプラグイン serverless-python-requirements serverless-wsgi
python-slack-events-apiがSlackのイベントをBotが受け取って処理するのに必要で、 python-slack-sdkはBotがメッセージを送るのに必要となります。
注意点としては、python-slack-events-apiがFlaskを使うことを想定しているため、LambdaとAPI Gateway環境下でもFlaskアプリケーションの形式のまま動作させる必要があります。 そこで、serverless-wsgiを使うことでFlaskアプリケーションを対応させました。serverless-wsgiの公式に書かれているようにAPI Gatewayのintegrationの設定をserverless.yml
に記すだけで、あとはSlackEventAdapter
を初期化して、API用の関数にdecoratorを付与するだけで済みます。
Lambdaで定期実行するイベントに関しては、jpholidayで祝日かの判定をしてメッセージを送信するだけです。
serverless.yml
は以下のようになります。ポイントとしては、ログでコストが掛かりすぎないように、 logRetentionInDays
を設定することくらいです。また、serverless.ymlの記法がよく変わる印象があるので、たまに修正が必要となるかもしれません。そして、技術面に関係無いポイントとしては、雑談を考える時間があった方が良いので、朝会の10分前に雑談担当者は投稿するようにしています。
実使用しての効果とまとめ
色々な人のファシリテーションを見られるので、若手にとっては学び効果が大きいようです。特に同世代でもファシリテーションが自然と上手な人がいたり、逆に反面教師になる人がいたりするので、先輩のファシリテーションだけを見るのに比べて、改善意欲が増します。
雑談については、ある程度人となりがわかると、意外に仕事面でもコミュニケーション、特にテキストコミュニケーションがしやすくなるみたいです。口頭で話すのとテキストでの印象が異なる人がいるかと思いますが、例えばテキストだとクールな人でも、趣味については熱いとわかると情景が浮かんでテキストコミュニケーションも馴染みやすくなります。
Botを作るのが年々楽になっているとはいえ、手を動かし始めるのが億劫という人もいるかと思います。
上記を真似すればすぐ作成出来ると思うので、Bot作成の端緒となれば幸いです。