近年流行ってる分報をタイムライン(TL)にまとめてみたよ

そもそも分報とは

どうも、タンバリンでクラウド開発してるナゴです。

分報とは、一言で言ってしまえば日報を分単位で行う社内ツイッターのようなものです。

times_*timeline_* 等のプレフィクスがメジャーですが弊社ではランダムの r_* で通っています。

suinさんや、ばんくしさんの記事が有名ですね

c16e.com

note.com

弊社でも分報制度を各自取り入れており、業務のことやプライベートなことまで多々書き込んでいます。

ぼくの分報 f:id:svu:20200313135507p:plain

分報の課題

先ほどあげた分報ですが、弊社ではアクティブユーザが40人(チャンネル)近くに増えてきており、各人が他の人の呟きをみる機会が減ってきたり、新入社員も増えてきたのでチャンネルに参加し辛い。。

このような課題が出てきました。

全ての分報を一つにまとめるチャンネルがあれば解決するのでは?

と思い立ち、実際に作ってみました。

Twitterのタイムライン(TL)をモチーフにしています。

使用技術

今回slackAPIを気軽に使える Bolt Framework(以後 bolt)を使用しました。 bolt はNodeJSのフレームワーク express のラッパーです。 去年ぐらいにオープンにされ、最近ではQiitaやstack overflowでも記事をみかけるようになった気がしてます。 また、ソースコードOSSで開発されています。

qiita.com

qiita.com

github.com

今回ホスティングは Heroku の有料 dyno にしていますが、

フリープランだと Heroku dyno が休止している期間があるため bolt の3秒レスポンスルールとは相性が悪いです。

課金するか ServerlessFramework や GAE などにあげた方が良いかもしれません

devcenter.heroku.com

ロジックとしてはとてもシンプルで以下のこれだけです。

  • slackApp(bot)を自分のチャンネルに招待する
  • その後、何か投稿するとTLに投稿がされる

また、レイアウトにはattachmentではなくblock kitを使用しています

api.slack.com

blockを使うことで attachmentの複雑なJSONがよりシンプルに記述出来るようになり、よりリッチな表現が出来るようになってます。

また block kit builder を使うことでGUIドラッグ&ドロップでレイアウトをいじることができ、同時にJSONも自動生成されるのでとても便利です

f:id:svu:20200313135734p:plain

また、こちらのライブラリを使うことでJSX風に記述することもできます

GitHub

github.com

リアルタイムプレビュー f:id:svu:20200313135955p:plain

できたもの

弊社のTL

f:id:svu:20200326191417p:plain
弊社のTL

slackApp名は TLけいさつ にしました

現在 betaですがTLの社内参加者や自分の分報に slackApp を入れてくれてる人も9割ほどいてるので嬉しい限りです。 今後も機能改善・追加をやってく予定です

また先日行われた Node学園関西では分報TLのネタで登壇してきました

資料

speakerdeck.com

おわりに

ぜひみなさん使ってみてください! そして瀬良さん、アドバイスありがとうございました :bow:

ソース

github.com