GitLab mattermost

Mattermostのチャンネル発言数をMetabaseでビジュアル化する

投稿日:2019年9月3日

オンプレGitLabでMattermostを使えるようにした後の活用法として、「ナレッジチャンネル」を運営してチームの知識を共有する営みをしている開発現場も多いと思います。

ミーティングではなくチャットで共有することで知識が文章として残り、メンバーが流動的になってもノウハウの継承が自然と出来るのもメリットですよね。

ただ、漫然と知識を共有していくだけでは貢献度の高い開発者が報われず、いつか「知ってることを共有しよう」という発想が無くなってしまったら営みの意義が失われて勿体ないです。

貢献度を目に見える形で数値化して、知識共有することにメリットがあるように配慮することでモチベーション維持、更なるアップに繋がるかも知れません。

Mattermostの活用に迷ったら、ナレッジチャンネル運営と見える化はその後の活用に繋がる良い入門になってくれます。

構築環境

Mattermost、PostgreSQLへのリモート接続、Metabaseのインストールを以下の記事で行ってある状態です。

プライベートや社内LAN内で使えるMattermostを構築。

GitLabをOmnibusインストールするとPostgreSQLがリモートから接続出来ないので外部からJDBC接続出来るようにする。

Metabaseを使ってPostgreSQLをBI。

BIする対象テーブル

mattermost_production内のテーブルをjailerで見てみると、

  • postsテーブル(全投稿メッセージを保存)
  • channelsテーブル(運営中のチャットチャンネルを保存)
  • usersテーブル(Mattermostユーザを保存)

に入っているデータで目的が達成できそうです。

Metabaseに発言数の集計を出すSQLを設定

環境は出来ていて対象のテーブルも分かったで、後はmattermost_productionデータベースに接続されたMetabaseでSQLを設定するだけです。

jailerのSQL ConsoleでSQLを動確しながら書いていきます。本来は特定チャンネルを対象に集計した方がいいですが、今回はデフォルトチャンネルである「タウンスクエア」に対して発言数が多いユーザを出します。

SELECT
    u.username,
    COUNT(*)
FROM
    posts AS p,
    users AS u,
    channels AS c
WHERE
    p.userid = u.id AND
    c.id = p.channelid AND
    c.name = 'town-square' AND
    TO_TIMESTAMP(p.createat / 1000) BETWEEN DATE_TRUNC('month', NOW()) AND DATE_TRUNC('month', NOW()) + '1 month' + '-1 Day'
GROUP BY
    u.username
ORDER BY
    COUNT DESC;

Metabaseでの実行結果。
(記事用に作ったMattermostなので、2ユーザしか居なくて発言はテストです、孤独感満載 orz )

開発メンバーが多くて交流が多いMattermostなら、こんな太い棒じゃなくて有用なデータが取れます。

同じ手法で活用できるデータを見つけ、開発プロジェクト活動を見える化していくとGitLab、Mattermost自体が提供してくれる機能以上に活用出来てくるようになります。

チャンネル運用も一工夫が必要

一行のメッセージを大量に送信しているユーザが居たらそのユーザが優位になってしまいます。普通のチャットをしている開発者が上位に来るのは趣旨と異なります。

「ナレッジ共有チャンネルはブログ記事のように1メッセージで書く」というコンセンサスをチーム内で取ればSQL結果との整合性が取れるようになります。

貢献した人には何かしらのご褒美が有れば、単調な開発仕事にもゲーミング要素が出てきて楽しくなりますし、Metabaseの運用は若手チームメンバーのSQL力アップにも繋がります。

留意点を挙げるなら、数値が低いメンバーはどうのこうの、というネガティブな雰囲気が生まれてしまうと取り組みがマイナスになってしまうので気を付けたい、といったところでしょうか。

他にもGitLabの残issueを視覚化する等、可視化すると効果があるデータがGitLabには沢山あるので、一つの事象がピックアップされ過ぎないように運営したいですね。

オンプレでGitLabを入れたら次はMetabaseで可視化。やってみると何気にマネジメント力アップにも繋がるかも知れません。

-GitLab, mattermost
-, ,

執筆者:

関連記事

Nodeアプリが依存するnpmモジュールライセンスをlicense-checker & Jenkinsで自動チェック(2)

目次1 目的1.1 動作イメージ2 Jenkinsジョブを設定2.1 前提2.2 Jenkins「シェルの実行」を設定2.3 想定外ライセンスが含まれていた場合の通知3 まとめ 目的 前回の続き。On …

Nodeアプリが依存するnpmモジュールライセンスをlicense-checker & Jenkinsで自動チェック(1)

目次1 目的2 使用するnpmモジュール3 ライセンスを表示してみる3.1 サマリで出す3.2 CSVファイルで出す4 まとめ 目的 ionicやNode.jsアプリが依存するライブラリにライセンス違 …

GitLab内のリポジトリをmirrorして引っ越しする

目次1 はじめに2 環境3 引っ越し開始3.1 ①GitLabで引っ越し先リポジトリを作っておく3.2 ②旧リポジトリのミラーリポジトリを開発用PCに作る3.3 ③ミラーリポジトリに入って内容物を確認 …

GitLab12.2.1をCentOS7.6にインストール

会社のコンプライアンス的にgithubが使えない個人開発しているプログラムを完全にプライベートで管理したい GitLabを家庭や社内でオンプレで使えばこれらのニーズを満たすことが出来ます。 留意点とし …

社内プライベートMattermostを立ち上げてChatOpsする

社内開発チーム内のコミュニケーション、上手く行っていますか?メンバーが世界各地に散らばってないなくても、意外と心は離れているかも知れません。 プライベートなGitLab12をCentOS7にインストー …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯現役技術者を目指しています。健康第一。