Mattermostの運用

こんにちは、蛯沢です。

巷ではチャットツールと言えば、slackが人気のようですが、
弊社ではslackのクローンであるMattermostというチャットツールを使っています。

なぜMattermostか

OSSの利点が大きいです。
slackも無料で使えなくはないですが、やっぱり使い方が限定されてしまいます。
また、OSSなので不具合の対処や、ちょっとしたカスタマイズも可能です。(MITライセンスです)

導入してみる

dockerが使える環境なら簡単です。

 docker run --name mattermost-preview -d --publish 8065:8065 mattermost/mattermost-preview

これだけで、起動してしまいます。
起動したら、ブラウザから、http://hostname:8065/へアクセスします。
初期設定がありますが、ほとんどがブラウザ上から出来ます。
ただ、残念ながらユーザーの一括登録がブラウザ上からは出来ません。
(個別に登録してもらうことも出来ますが、間違いや登録忘れの人が出てくるので管理側で一括登録します)
こういう時にはコマンドラインやREST APIが非常に便利です。

コマンドラインからユーザー追加してみます。
まずは、コンテナ上でbashを起動します。

 docker exec -it mattermost /bin/bash

下記の例ではユーザー($username)を作り、既存チーム($teamname)に参加させます。
(5.0からコマンドは、platformからmattermostに変更されたようですが、ここでは4.xで説明します)

 cd /mm/mattermost/bin/
 ./platform user create --email ${username}@grezzo.co.jp --username ${username} --password ${password} --config=../config/config_docker.json
 ./platform team add ${teamname} ${username}@grezzo.co.jp --config=../config/config_docker.json

かなり端折ってますが、シェルスクリプトでユーザー情報のcsvやjsonなどを読み込んで、forで回すだけです。
極まれに、コマンドラインやREST APIでもどうしてもできない事があったりします。
最終手段として、データベースを直接書き換えるという荒業もありますが、ここでは割愛します。

各種ツールとの連携

ウェブフックを使うことにより各種ツールとの連携ができます。
Jenkinsからビルド結果を通知したり、redmineから更新情報を通知したり、
gitやsvnからコミットを通知したり...まぁ何でも出来ますね。

メールでの通知をチャットへ変えると

以前までは、Jenkinsのビルドエラー等の通知をメール送信でやっていました。
これらの通知系のものをほとんどチャットの通知へ置き換えた結果、開発効率が上がったと思います。
例えば、ビルドエラーがあった場合、即座に通知が届き、また誰かがそれに返信で反応(修正など)しているのもリアルタイムで確認できるので、エラーの対処が非常に早くなりました。

他にも

天気予報や、電車の遅延情報も見られるようにしました。
渋谷付近で雨が降りそうになると通知してくれたり(グレッゾは渋谷にあります)、電車の遅延情報を教えてくれたり…

必須ツール

2、3年前ぐらい前に導入したMattermostですが、現在では全社員必須のツールとなりました。
今後もMattermostを使って業務効率の改善を模索していきたいと思っています。