そもそも分報とは
どうも、タンバリンでクラウド開発してるナゴです。
分報とは、一言で言ってしまえば日報を分単位で行う社内ツイッターのようなものです。
times_*
や timeline_*
等のプレフィクスがメジャーですが弊社ではランダムの r_*
で通っています。
弊社でも分報制度を各自取り入れており、業務のことやプライベートなことまで多々書き込んでいます。
ぼくの分報
分報の課題
先ほどあげた分報ですが、弊社ではアクティブユーザが40人(チャンネル)近くに増えてきており、各人が他の人の呟きをみる機会が減ってきたり、新入社員も増えてきたのでチャンネルに参加し辛い。。
このような課題が出てきました。
全ての分報を一つにまとめるチャンネルがあれば解決するのでは?
と思い立ち、実際に作ってみました。
Twitterのタイムライン(TL)をモチーフにしています。
使用技術
今回slackAPIを気軽に使える Bolt Framework(以後 bolt)を使用しました。 bolt はNodeJSのフレームワーク express のラッパーです。 去年ぐらいにオープンにされ、最近ではQiitaやstack overflowでも記事をみかけるようになった気がしてます。 また、ソースコードはOSSで開発されています。
今回ホスティングは Heroku の有料 dyno にしていますが、
フリープランだと Heroku dyno が休止している期間があるため bolt の3秒レスポンスルールとは相性が悪いです。
課金するか ServerlessFramework や GAE などにあげた方が良いかもしれません
ロジックとしてはとてもシンプルで以下のこれだけです。
- slackApp(bot)を自分のチャンネルに招待する
- その後、何か投稿するとTLに投稿がされる
また、レイアウトにはattachmentではなくblock kitを使用しています
blockを使うことで attachmentの複雑なJSONがよりシンプルに記述出来るようになり、よりリッチな表現が出来るようになってます。
また block kit builder を使うことでGUIでドラッグ&ドロップでレイアウトをいじることができ、同時にJSONも自動生成されるのでとても便利です
また、こちらのライブラリを使うことでJSX風に記述することもできます
リアルタイムプレビュー
できたもの
弊社のTL
slackApp名は TLけいさつ にしました
現在 betaですがTLの社内参加者や自分の分報に slackApp を入れてくれてる人も9割ほどいてるので嬉しい限りです。 今後も機能改善・追加をやってく予定です
また先日行われた Node学園関西では分報TLのネタで登壇してきました
資料
おわりに
ぜひみなさん使ってみてください! そして瀬良さん、アドバイスありがとうございました :bow:
ソース