Slackのコミュニケーションを可視化する
graphvizのインストール
brew install graphviz
pip install graphviz
ログの準備
下記からエクスポートしたログをフォルダ毎jsonsディレクトリに入れる
※ワークスペース名/ディレクトリ名/YYYY-MM-DD.json で出力されるためそのまま設置する場合はscv.pyのパスを置き換えること
https://mu-club.slack.com/services/export (要管理者権限)
WorkingDirectory/
├ scv.py
├ jsons/
│ └ hoge/
│ └ hoge.json
│ └ huga/
│ └ huga.json
│
├ image/
└ hoge
└ hoge.svg
可視化したいチャンネルの設定
複数チャンネルある場合、描画及び生成に時間がかかるため19行目のパスを変更する
json_files = glob.glob("./logs//.json") # 特定のチャンネルを確認する時はここを変更する
※9行目については社員リスト(ID:氏名)を先に生成する必要があるためそのままにしておくこと
実行する
python scv.py
実行するとimageディレクトリに可視化対象としたチャンネルのdotファイルおよびsvgファイルが生成される
dotファイル
graph {
"a" -- "b"
"a" -- "c"
"b" -- "c"
}
拡張子およびレイアウトについては21行目で変更できる
graph = Graph(format='svg', engine='sfdp')
参考:https://melborne.github.io/2013/04/02/graphviz-layouts/
すぐに結果を確認したい場合、コメントをとけば描画後ブラウザで確認ができる。 チャンネルが多いと描画が終わるたびに開かれるので注意
graph.view() # 画像を見たい時用
備考
- 以下の環境で確認済み
Python 3.10.0 pyenv 2.1.0
- 誰と誰が連絡を取っているかをメインに考えたため、@hereやグループメンション等については考慮していない
- ログの仕様上発言がないユーザからは
real_name
が取得できないためユーザIDを氏名に置き換えている(グループメンションも同様)