「運営者ギルド」で使用している、どのチャンネルで活発に議論されているかを可視化するツール「slack流量計」を年末にバージョンアップした話を書こうかと思います。
Webサービスの運営に必要なあらゆる知見を共有できる場として、Webサービス運営者達によって作られたコミュニティです。主にslackを用いて情報交換をしています。
slack APIから書き込みの履歴を取得して日別・チャンネル別に書き込みの数を集計してslackにグラフとテキストで投稿するアプリケーションです。
(ギルドでは呼称が変わりました。)
旧バージョンではSpringMVCのタスクスケジューラを使用してバッチでサーバサイドでグラフを生成していました。
- Java
- Spring MVCのタスクスケジューラ
- JFreeChart(グラフ生成ライブラリ)
- MySQL
毎日定時に実行するのにnode-cronを使っています。今回はExpressでAPIを用意してクライアントサイド(chart.js)でグラフを生成し、puppeteerを使ってスクリーンショットを撮って画像を投稿するという形をとっています。
- NodeJS
- Express
- TypeScript
- node-cron
- chart.js
- puppeteer
- slack/client
あんどさんの「WEB表彰」をお借りして自動で週1回表彰する機能を組み込んでみました。
await page.evaluate( (str)=>{
document.querySelector('input#receiver.input').setAttribute('value',str[0])
document.querySelector('#certificate_body.input').textContent = str[1]
document.querySelector('input#sender.input').setAttribute('value','運営者ギルド勢いランキング')
},str)
await page.focus('#certificate_body.input')
await page.keyboard.up('Shift')
折れ線グラフと同じようにAPIを用意してchart.jsで描画しています。
週1回、チャンネルごとではなくユーザごとの書き込み数で「表彰」したら面白そう?(実装済み)
- GitHubのコミット履歴に昔あったパンチカードのグラフを実装したい(実装済み)
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント