デモ動画
copy_487E9045-95BC-4EA7-A903-2E47C3BF3F87.MOV
Slackでのコミュニケーションをもっと気軽に、もっと楽しく!
私たちは同じ課外活動に参加し、サービスを運用する活動を行っています。活動を進めるには密なコミュニケーションが必須で、特に活動日以外でのコミュニケーションにおいてSlackは重要な役割を果たしています。しかし、返信やリアクションが遅い人も多く、話を素早く進められないことを課題に感じていました。そこでこの"MoreReaction"を使うことで、もっと気軽に、もっと楽しくコミュニケーションができるようにしたいと考えました。
- リアクションやメッセージ送信をすることにプレッシャーを感じる
- メッセージに対して、どのリアクションが適しているかわからない
- 1年生は特に、使用経験がないSlackというツールを初めて触るため、慣れていない
- メッセージを読むだけで済ませ、リアクションや返信を忘れる
- メッセージの特徴とリアクションの傾向をベクトル化し、コサイン類似度を計算
- 様々な利用者のSlack文化に合わせてリアクションをレコメンド
- メッセージ投稿回数、リアクション回数、リアクション速度の3項目で評価し、月末に結果発表
- ランキング上位には、DMで祝福メッセージが投稿
- メンションにリアクションがなかった場合、リマインドメッセージを3段階で投稿
-
リアクションレコメンド機能により、リアクションへの心理的ハードルを軽減
-
ポイントランキング機能により、コミュニケーションを活発化
-
リマインド機能により、返信信頼度を高める
-
意思決定速度の高速化
-
1年生がSlack文化への慣れを援助する
- Slack以外のDiscordやTeamsへのマルチプラットフォーム対応
- ログデータを学習させ、様々なSlack利用者の傾向に合わせてレコメンド
- ランキングポイントの活用先を増やす
- 無料プラン内での運用
- マルチプラットフォームを見据えた設計
- 利便性重視の実運用
- レコメンドの柔軟性
- 設計について
- SlackAPI
- SlackBot
- Deno
- Render
- Cloudflare
- Supabase EdgeFunction
- Supabase Database
- Vectorize
- TypeScript
- Web, Mobile, Desktop(Slackが入るデバイス全般)
-
バックエンドシステムの設計全般
-
データベース設計
- 参考: figjam
-
SlackAPIのEventSubscriptionから実行する処理のホスティング
-
絵文字のレコメンド機能
- Cloudflare AI Gateway を通して、Hugging Face Inference API のintfloat/multilingual-e5-largeを使用する
- 絵文字に対して独自に用意した意味ラベルや投稿内容のEmbeddingを行う
- 得られたベクトルを Cloudflare Vectorize にそれぞれ namespace を分けて保存する
- 投稿内容を受け取り、上記と同様に Embedding を行い、Vectorize に対して query し、コサイン類似度を用いて似た絵文字を3つ得る
-
メッセージ・リアクションランキング機能
- メッセージやリアクションイベントに基づいてエンドポイントをリクエストするSlackAPIのEventSubscriptionに、RenderとSuapbaseEdgeFunctionでデプロイしたurlをセット
- denoを用いて、メッセージ送信やメッセージへのリアクションを行った際の処理を実装
- メッセージ送信時
- メッセージデータを絵文字レコメンド機能と接続し、お勧めされる絵文字を自動でリアクションする
- ランキング用のポイントを付与するため、supabaseのDatabaseにあるテーブルにアクセスしてユーザーに対してポイント付与
- リアクション時
- 押したリアクションが速いほど加点され、1位に3p、2位に2p、3位に1pを付与するため、同様にSupabaseのDatabaseにアクセスしてユーザーに対してポイントを付与
- 結果確認
/mypoints
: 今月自分が加算したポイントを表示/totalpoints
: 自分の全期間の合計加算ポイントを表示monthranking
: ワークスペースに参加するメンバー全体における、今月加算したポイントのランキングを表示
-
リマインド機能
- メッセージ送信時にメンションがあるかを確認し、そのユーザーがメンションを当てられたメッセージに対してリアクションや返信を返していないなら、定期時間後にbotがメッセージを送信