オンプレGitLabで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ユーザしか居なくて発言はテストです、孤独感満載)
開発メンバーが多くて交流が多いMattermostなら、こんな太い棒じゃなくて有用なデータが取れます。
同じ手法で活用できるデータを見つけ、開発プロジェクト活動を見える化していくとGitLab、Mattermost自体が提供してくれる機能以上に活用出来てくるようになります。
チャンネル運用も一工夫が必要
一行のメッセージを大量に送信しているユーザが居たらそのユーザが優位になってしまいます。普通のチャットをしている開発者が上位に来るのは趣旨と異なります。
「ナレッジ共有チャンネルはブログ記事のように1メッセージで書く」というコンセンサスをチーム内で取ればSQL結果との整合性が取れるようになります。
貢献した人には何かしらのご褒美が有れば、単調な開発仕事にもゲーミング要素が出てきて楽しくなりますし、Metabaseの運用は若手チームメンバーのSQL力アップにも繋がります。
留意点を挙げるなら、数値が低いメンバーはどうのこうの、というネガティブな雰囲気が生まれてしまうと取り組みがマイナスになってしまうので気を付けたい、といったところでしょうか。
他にもGitLabの残issueを視覚化する等、可視化すると効果があるデータがGitLabには沢山あるので、一つの事象がピックアップされ過ぎないように運営したいところです。
オンプレでGitLabを入れたら次はMetabaseで可視化。やってみると何気に人管理能力アップにも繋がるかも知れません。