見出し画像

チャットにbotを追加して、ワードウルフできるようにしてみた! REALITY Advent Calendar #15

REALITY Advent Calendar 2022の15日目を担当する、サーバーエンジニアのるいです!
しれっと書きましたが、アルバイト時代にサーバーチームにいたものの、新卒になってAndroidチームに配属された僕ですが、改めてサーバーチームに戻ってきました!(↓新卒配属時の記事)

今回の開発合宿では、REALITYのチャットにSlackやLINEにもあるようなbotを追加できるようにし、その機能を利用してチャットでワードウルフができるようにしてみたので、その内容について紹介していきます!

作成したbotの概要

REALITY社のSlackでは、日々の業務の自動化から、業務とは関係ないようなお遊び機能まで数多くの機能が実装されたbotが導入されていて、日々お世話になっています。
そのようなbotをREALITYのチャットにも追加できたら、チャットがより楽しくなるのではないかと思い、今回の開発合宿のテーマに決めました!

botの構成は概ね以下のような形で、ユーザーがbotのいるチャットにメッセージを投稿したタイミングで、あらかじめ登録されているURLに対してメッセージが投稿されたことを伝えるリクエストを送信します。
bot側も、必要に応じて参加しているチャットに対してメッセージを投稿することができます。

大まかなbotの処理

この仕組みを追加することで、以下のようなシンプルなテキストベースのやりとりをするbotを作成することができます。

シンプルなbotの例

しかし、これだけだとまだできることは限られます。そこで、今回の目標でもあった、ワードウルフを実装するために、以下のような2つの機能を追加で実装しました。


追加機能1:選択肢を提示する機能

ゲームへの参加表明や投票などのために、いくつかの選択肢を提示してユーザーに選んでもらうという機能を実装しました!
(僕はiOS開発ができないので、今回はAndroidのみ対応しました。)
質問文といくつかの選択肢を表示でき、ユーザーが選択肢をタップすると、下記画像のようにUIが変わるとともに、botに対しても選択結果が送信されるようになっています。

選択肢のUI

追加機能2:botの投稿を特定のユーザーにだけ見せる機能

ワードウルフでは、参加者にお題を提示する際に、1人だけ異なるお題を提示する必要があります。
そのため、botはユーザーを指定することで、そのユーザーにしか見えない投稿を行うことができるようにしました。

ついにワードウルフ完成!

ここまでの機能を追加することで、ついに目標としていたワードウルフを作成することができました!
完成したワードウルフは、

  1. 「wordwolf」と投稿する。

  2. ゲーム参加者の募集が始まる。

  3. 「参加する」を押すと、しばらくしてゲームが開始され、お題となる単語が提示される。(このお題が1人だけ異なる。)

  4. 3分間話し合い、誰のお題が異なるのかを推理する。

  5. その後、自分以外の参加者の中から投票する人を選択する。

  6. 投票時間が終了すると、投票結果とゲームの勝敗が投稿される。

という流れになっています。

参加者募集開始から議論パート開始までの流れ
議論パート終了からゲーム終了までの流れ

おわりに

僕は今年初めて開発合宿に参加しましたが、これまでなんとなく頭にあったアイデアをある程度形にできて、「やはりこれいいな」という点や、逆に「リリースを考えるとここはもっと検討しないといけないな」という点がわかり、アイデアの解像度が上がる非常に良い機会になったと思います!
そして、なんといってもご飯が非常においしかったです!(重要)

今回はサンプルとしてワードウルフを作成しましたが、作成したシステムを応用すれば、既存のシステムへの追加修正をせずともワードウルフ以外にも多くのコンテンツを作成できそうかなと思っています。
とはいえ、今回作成したものは実装的に難しい箇所をごまかしている部分も多く、実際にはリリースできるクオリティではありません…
ですが、このようなbotがあった方がチャットもより楽しくなると思うので、いつか実際にリリースできたらいいなと思ってます!

明日のアドベントカレンダーは!

明日のアドベントカレンダーはサーバーチームのdaidaiさんです!
サーバーチームながらも今回はAndroidの開発をしているんだとか。
お楽しみに!