ネットの海の片隅で

技術ネタの放流、あるいは不法投棄。

Slack で簡単かつ公平にくじびきをする

前に書いた「Ruboty でくじびきをする」というエントリの続編です。

何をつくったのか

Slack の slash command を使うことによって、簡単かつ公平にくじびきをできるものをつくりました。

なぜつくったのか

日常にくじびきをしたいシーンは結構あります。

たとえば、issue の assignee を決めるとか、飲み会の予約をする人を決めるとか。弊社でよくあるのだと、ランチのためにご飯を炊く人を選ぶなんていうのもあります。

そういったケースで公平にくじびきできるようにするために、2年ほど前に ruboty-kujibiki という gem を書きました。

この gem は社内の Slack で今も便利に使われていますが、当然ながら「Ruboty がいるところでしか使えない」という問題があり、別の Slack workspace で「くじびきしたい!」となったときに「ここ Ruboty いないじゃん……」となることが結構ありました。

とはいえ、いろんな Slack に Ruboty を入れて回るのは面倒すぎるので絶対にやりたくない。

そこで、Slack App にしてサクッと入れられるようにしました。

使い方

/kujibiki {number} from {comma-separated-elements} でくじびきを行なうことができるようになります。

f:id:s_osa:20180624235414g:plain

その他の使い方は /kujibiki help で見ることができます。

インストール

下のボタンをポチッとするとインストールすることができます。

Add to Slack

なお、現時点では Slack の審査を通せていないので Slack の App Directory には表示されないですし、認可画面にも「This app hasn’t been reviewed or approved by Slack.」と表示されてしまっています。

どうやって動いているか

全然大したことはしてないんですが、簡単に。

Slack command が実行されると、事前に登録してあるエンドポイントに対して POST リクエストが飛んできます。

このリクエストに対してレスポンスを返すと Slack command の結果として表示されるんですが、今回はこの APIAWSAPI Gateway と Lambda (Node.js) で実装しています。

API Gateway と Lambda を選んだ理由は以下のようなものです。

  • 複雑なことをしていない
  • いかなる状態も持たなくて良い
  • サーバー代を払いたくない 💰

今後の課題

自分が使えればいいやという感じでつくっていて細かい処理を全然実装してないので、そのあたりをちゃんとしないといけないのと同時に、せっかくなのでちゃんと Slack の App Directory に登録したいと思っています。

ただ、App Directory 登録のためには審査があり、

  • アイコン
  • インストール説明用ランディングページ
  • プライバシーポリシー
  • サポートページ
  • サポート用メールアドレス

あたりを用意する必要があります。

いい感じのアイコンとか LP を用意するの厳しいなという気持ちがあり、さらにテキストはすべて英語で用意する必要があって「英語のプライバシーポリシーなんてどうすればいいんや……」と途方に暮れています。

おわりに

Slack でくじびきをするためにつくった slash command について紹介しました。

「使ってみたよ」とか「なんか壊れてる」とかあれば @s_osa_ まで連絡していただければと思います。

もし、「アイコンつくるよ」とか「LP デザインするよ」とか「英語のプライバシーポリシー書けるよ」という神がいたらそちらもよろしくお願いします 🙏