Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?
@ru_shalm

Slackでjoinしている231チャンネルを余すことなく見たい人生だった

More than 1 year has passed since last update.

この記事はSlack Advent Calendar 2018の3日目の記事です。

どういうわけか?: joinしすぎて見れない問題

皆さんSlackは活用していますか? 僕はSlackがとっても好きです!
チャットツールとしての基本を抑えているのはもちろんのこと、
様々なインテグレーションツールが利用できることや、
何よりAPIを使うことで自分好みの様々なツールやbotが作成できる点が
とても便利&楽しいと感じています。

……が、その反面、いろんなチャンネルの話題を見たい!と思っていると、
気づいたらjoinしているチャンネル数が増えてしまうことがあります。

僕の入っているSlackチームには公開チャンネルだけで6000チャンネルくらいあるので、
その中から業務に関係あるもの、ちょっと興味があるものにjoinするだけでも
チャンネル数が軽く200を超えてしまったりします><;

さすがにこれを全部じっくり見ていたら時間が無くなってしまうので、
普段は大半のチャンネルをミュートにしているのですが、
じっくり見ないにしてもなんとなく雰囲気は感じていたいな……と思ってしまいます。

そうだ、ターミナルに全部流そう

昔、 IRC を使っていたときは LimeChat の下部分に
「全チャンネルの発言が表示される領域」があったため、僕はそれを活用していました。

あの体験ができれば今の僕の悩みも解決できるのでは!?と思い、
ちょっと前にペライチのRubyコードを書いて運用をしてみたところ
かなり僕の生活が豊かになりました!

せっかくなので自分用コードのまま眠らせず、お外に出してしまおう!ということで
今回ちょっとコードを整理したので紹介させていただきます。

Senrigan : Slackの発言をターミナルに流すやつ

senrigan.jpg

Senriganは指定のチームで自分がjoinしているチャンネルの発言を
チャンネルの区別をすることなく、ターミナルに垂れ流すツールです。

「それってターミナル向けのSlackクライアントと違うの?」と思われるかもですが、
Senriganは投稿系の機能がなく、ただただログを表示するように
joinしている全チャンネルのログを流すだけのツールになっています。

Rubygemsとして作成しているので gem install senrigan でインストールできます。

$ gem install senrigan

$ SLACK_TOKEN='ここにキミのlegacy tokenを入れよう' senrigan

なかみ

slack-ruby-client でSlack の Real Time Messaging API に接続し、
そこから送られてくるメッセージイベントの内容を解釈して、それっぽい色をつけて表示します。
シェルの色のコマンド覚えられないので、色付けにはcolorizeを使っています><;

対応しているメッセージ

  • 普通のメッセージ
  • Attachment
  • 編集(Edited)された通知

Editedを表示する機能は僕的にはとても便利で、
面白いことを言った後にすぐ消しちゃう人にも対応することができます。べんり。

ところで、SlackのMarkdownっぽいやつは、
パースの方法が極めて難解であることで有名です。
難解な例

ターミナル表示なのであんまり頑張る必要はないのですが、
さすがにユーザー名が <@U123456> とかなってたら何のこっちゃなので、
そのあたりの最低限の置換はやった上で表示しています。
(でも僕が知らない機能もたくさんあるので、まだまだ足りないかも…)

なお、絵文字は…

諦めよう

macとかで表示できる普通の絵文字はなるべく対応したい気もするので、
gemoji をつかって、文中の :〜: な部分を可能な限り絵文字に置き換えて表示しています。

require 'gemoji'

emoji = Emoji.find_by_alias('smile')
emoji.raw # => 😄

でも gemoji は 🤔 のエイリアスが thinking なので、
Slackの :thinking_face: は引っかからないんですよね……
ちゃんとやるなら、Slack用のエイリアス表が必要だ><

まとめ

僕がSlackを楽しむためにつくった&使っているツールである Senrigan を紹介しました。

おそらくSlackは様々な使われ方をしていると感じており、
きっと各チームごとの特性に合わせた秘密のツールとかもたくさんあるんじゃないかなぁと思っています。

この AdventCalendar でもそういったツールの片鱗が見えたりするかもしれませんね٩(๑❛ᴗ❛๑)۶

8
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ru_shalm
Ruたん(るたん)です。RubyとJavaScriptを書いたり、Webサービスの企画をしているよ。 個人の活動ではブラウザゲームをつくっています。
dwango
Born in the net, Connected by the net.

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
8
Help us understand the problem. What is going on with this article?