Skip to content

jphacks/kz_2403

Repository files navigation

MoreReaction!

デモ動画

copy_487E9045-95BC-4EA7-A903-2E47C3BF3F87.MOV

製品概要

Slackでのコミュニケーションをもっと気軽に、もっと楽しく!

背景(製品開発のきっかけ、課題等)

きっかけ

私たちは同じ課外活動に参加し、サービスを運用する活動を行っています。活動を進めるには密なコミュニケーションが必須で、特に活動日以外でのコミュニケーションにおいてSlackは重要な役割を果たしています。しかし、返信やリアクションが遅い人も多く、話を素早く進められないことを課題に感じていました。そこでこの"MoreReaction"を使うことで、もっと気軽に、もっと楽しくコミュニケーションができるようにしたいと考えました。

課題の原因考察

  • リアクションやメッセージ送信をすることにプレッシャーを感じる
  • メッセージに対して、どのリアクションが適しているかわからない
  • 1年生は特に、使用経験がないSlackというツールを初めて触るため、慣れていない
  • メッセージを読むだけで済ませ、リアクションや返信を忘れる

製品説明(具体的な製品の説明)

特長

特長1「リアクションレコメンド機能」により、メッセージに対応するリアクションのレコメンドを動的に表示!

  • メッセージの特徴とリアクションの傾向をベクトル化し、コサイン類似度を計算
  • 様々な利用者のSlack文化に合わせてリアクションをレコメンド

特長2「メッセージ・リアクションランキング」により、メッセージやリアクションを活発化!

  • メッセージ投稿回数、リアクション回数、リアクション速度の3項目で評価し、月末に結果発表
  • ランキング上位には、DMで祝福メッセージが投稿

特長3「リマインド機能」により、リアクションや返信忘れを防止!

  • メンションにリアクションがなかった場合、リマインドメッセージを3段階で投稿

解決出来ること

  • リアクションレコメンド機能により、リアクションへの心理的ハードルを軽減

  • ポイントランキング機能により、コミュニケーションを活発化

  • リマインド機能により、返信信頼度を高める

  • 意思決定速度の高速化

  • 1年生がSlack文化への慣れを援助する

今後の展望

  • Slack以外のDiscordやTeamsへのマルチプラットフォーム対応
  • ログデータを学習させ、様々なSlack利用者の傾向に合わせてレコメンド
  • ランキングポイントの活用先を増やす

注力したこと(こだわり等)

  • 無料プラン内での運用
  • マルチプラットフォームを見据えた設計
  • 利便性重視の実運用
  • レコメンドの柔軟性

開発技術

活用した技術

API・データ

  • SlackAPI
  • SlackBot
  • Deno
  • Render
  • Cloudflare
  • Supabase EdgeFunction
  • Supabase Database
  • Vectorize

フレームワーク・ライブラリ・モジュール

  • TypeScript

デバイス

  • Web, Mobile, Desktop(Slackが入るデバイス全般)

独自技術

ハッカソンで開発した独自機能・技術

  • バックエンドシステムの設計全般

  • データベース設計

  • 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がメッセージを送信