1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slackのスタンプを集計してサイネージに表示した話

Last updated at Posted at 2024-09-11

概要

社内のSlackチャンネルからスタンプを集計して、オフィスフロアのモニターにサイネージとして表示してみました。

きっかけ

弊社のブランディングのサービスの一つとして「社内エンゲージメント向上に作用するサイネージ」を作ろう!という思いがきっかけです。また、弊社ではいわゆる Jamstack と呼ばれるモダンな開発手法の導入をすすめており、その技術検証を行いたいという思いもありました。

仕組み

  • Slackに投稿されたメッセージのリアクションで押されたスタンプを集計する
  • 主にアクティブなチャンネル10個から集計する
  • 毎日0時に、前日1日間に押されたスタンプを集計する
  • 集計したスタンプをサイネージにワードバブルのように表示する

実際にできたもの

tech_blog1.png

tech_blog2.jpg

実装方法

バックエンド

Strapi

オープンソースのヘッドレスCMS。今回はデータベースとして、集計したスタンプのデータをStrapiに保存します。Amazon Lightsailにセルフホスティングしています。

n8n

こちらもオープンソースの自動化ツール。毎日決まった時間にSlackからスタンプを抽出し、Strapiに保存する役割を担っています。こちらもAmazon Lightsailにセルフホスティングしています。n8nをセルフホスティングした詳しい話はこちらの記事にまとめています。

フロントエンド

Astro.js

Strapiから集計データを取得し、サイネージに表示するHTMLを生成するフレームワークとして、Astro.jsを使用しています。いわゆる Jamstack 構成で、毎日決まった時間に集計結果を反映した静的なHTMLが自動的に生成され、表示されるようにしています。デプロイ先には AWS Amplify もしくは Vercel を使うことが多いです。

d3.js

スタンプの画像をワードバブルのように表示するために使用しているデータビジュアライザーションライブラリです。
d3.jsの中のcirclecircle packingという機能を使用しました。

【参考】

まとめ

今回は、社内のSlackチャンネルからスタンプを集計して、オフィスフロアのモニターにサイネージとして表示してみた話を紹介しました。
ぜひ参考になれれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?