鳥小屋.txt

主に自作ゲームをつくったりしているよ。制作に関することやそうじゃないことのごった煮ブログ

社内Slack用のFavstarをつくった話

プリンセスコネクト、SR4枚引いたのにモニカ出ない訴訟。

どういうわけか

Slackにはスターって機能があるんですね。特定のチャンネルとかファイルとかメッセージに☆を付けることができます。

f:id:ru_shalm:20150222121045p:plain

で、皆さん☆と聞くとウズウズしてきませんか!?
☆をいっぱいもらえるようなネタツイしたくなりませんか?! 病気です

とはいえ、Slackのスターはあくまで付けた人の目印くらいの意味しかなく、いろんな人のスターを一覧するページは無さそうです。いや、Twitterもそうだけど。

つまり、Twitterに対するFavstar的な存在が必要とされているのです!! 世界中で!!!

Favlack

f:id:ru_shalm:20150222121028p:plain

GitHub - rutan/favlack: favstar clone for slack

必要とあれば作るしか無いでしょ!!

SlackにはReal Time Messaging APIというWebSocketで何でも飛んでくるAPIがあります。Slack上で起きたイベントの大体がこれに乗って飛んでくるので、「○○さんが△△チャンネルで☆」みたいな情報を拾うことができます。僕が入ってないチャンネルでも(private groupは×)

なのでこれを拾うデーモン的なものを起動しておき、ほぼリアルタイムに☆情報をDBに書き込んでいます。やったぜfavstarだ!

あ、Railsです。Heokuっぽい感じの環境で動きます。動かし方は察してください><;

僕はSlackのメッセージフォーマットに殺された

詳しくはここに載ってる→ Basic message formatting | Slack

mentionとか <@U12345> みたいな文字列で飛んでくるので自分で置換する必要があるんですよね。チャンネル名も同じ……

Markdownと謎記法がごちゃ混ぜってつらいので、闇部分だけ外にgemとして出してあります。

GitHub - rutan/slack_message_markdown: convert slack message to HTML.

まだRubygemsには上げてないです。というのも、最近気づいたけど <@U12345|ru_shalm> みたいなパターンもあるっぽくて……ナニコレ〜〜〜〜!

あと _ @ru_shalm: ksg _ みたいなmentionを記法で囲むメッセージがちゃんと変換できてないので、そのあたりを直さないとなぁ……やっぱKramdownのほう手つけるしかないか。。。

最大級の問題点

会社で動かしてみたんだけど、みんなあんまり☆使ってなかった…(´・ω・`)