Author
西川 浩平Kohei Nishikawa
タイムリーな情報共有と言えば、今日では「Slack」が圧倒的な知名度を誇っています。以前は、「Chatter」など業務特化のサービスが知られていたのですが、圧倒的なブランド力で「Slack」が席巻しています。
Slackは、SaaS型のクラウドサービスです。しかし、官公庁や教育機関、金融、重工業、病院など、機密性の高いデータとコミュニケーションには、専用サーバーで運用する「Mattermost」や「Rocket.Chat」などが注目を集めています。たとえば、全社的にはSlackを使うものの、とあるプロジェクトチームでは、お客様やパートナーとのタイムリーな情報共有にはセキュリティ重視が優先事項であるため、「Mattermost」を使うといった事態になり、会社からのお知らせなどを知るために常にSlackとMattermostの両方を使用することは非生産的です。
シンプルに考えれば、SlackとMattermostを橋渡しするツールがあれば解決しますよね?
そこで、「matterbridge」というツールがあります。「matterbridge」は、SlackとMattermostのみならず、様々なビジネスコラボレーションハブやチャットツールをサポートしており、異なるシステム間のメッセージをつなぐ橋になります。
ただ、SlackとMattermostについて「matterbridge」を使うための日本語情報がなく、試行錯誤の結果、Slackに投稿すると、Mattermostに転送される動作を確認できました。
下記に手順を記します。
準備
今回は、次のようなものを用意しました。
matterbridgeの設定
次の手順で、Mattermostを導入したサーバーに、matterbridgeをインストールします。Mattermostを導入したサーバーでは、CentOS 7 を使用しています。
Snapを使用可能にする
matterbridgeのインストールには、snap コマンドを使用します。コマンドを実行し、snapを使えるようにします。
[html] $ sudo yum install epel-release $ sudo yum install snapd $ sudo systemctl enable --now snapd.socket $ sudo ln -s /var/lib/snapd/snap /snap [/html]Go言語を入れる
matterbridgeは、Go言語で開発されていますので、Go言語を使えるようにします。
[html] $ sudo yum install -y golang $ sudo mkdir usr/local/go $ sudo vi /etc/profile.d/golang.sh 下記を記述し、保存 GOPATH=/usr/local/go PATH=$GOPATH/bin:$PATH:$HOME/bin export PATH export GOPATH $ cd /usr/local/go/ $ source /etc/profile.d/golang.sh $ sudo mkdir bin pkg src [/html]matterbridgeのインストール
コマンドを実行し、matterbridgeをインストールします。
[html] $ sudo snap install matterbridge $ sudo reboot [/html].toml ファイルの作成
matterbridgeを動かすための設定ファイルは、ファイル拡張子が「toml」となるファイルを用意する必要があります。例として、matterbridge.toml とします。
[html] $ sudo vi matterbridge.toml [/html]以下にサンプルを示します。
[html] <!matterbridge.toml> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [mattermost] [mattermost.mymattermost] Server="abc.example.com/chat" Team="tutorial" #mattermost bot useraccount Login="admin" Password="admin" NoTLS=true SkipTLSVerify=true RemoteNickFormat="[{PROTOCOL}] <{NICK}> " PrefixMessagesWithNick=true [slack] [slack.myslack] Token="xoxbで始まるBot User OAuth Access Token" RemoteNickFormat="{BRIDGE} - @{NICK}" [[gateway]] name="gateway1" enable=true [[gateway.inout]] account="mattermost.mymattermost" channel="Slackに投稿されたメッセージの転送先となるMattermost側のチャンネル" [[gateway.inout]] account="slack.myslack" channel="with-bot" [/html]ざっと、ポイントを解説します。
matterbridgeの動作確認
設定ファイルを作成し終えましたら、次のコマンドを実行します。
[html] $ matterbridge -conf matterbridge.toml [/html]期待される実行結果の例
[html] [2019-10-25T14:27:09+09:00] INFO main: Running version 1.16.0 [2019-10-25T14:27:09+09:00] INFO router: Parsing gateway gateway1 [2019-10-25T14:27:09+09:00] INFO router: Starting bridge: mattermost.mymattermost [2019-10-25T14:27:09+09:00] INFO mattermost: Connecting using login/password (sending and receiving) [2019-10-25T14:27:09+09:00] INFO mattermost: Connecting admin (team: tutorial) on abc.example.com/chat [0000] INFO matterclient: Found version 5.16.0.5.16.0.510bef66cf8ca0dd3453338df5e7841c.false [0000] INFO matterclient: found 1 users in team tutorial [2019-10-25T14:27:10+09:00] INFO mattermost: Connection succeeded [2019-10-25T14:27:10+09:00] INFO mattermost: mattermost.mymattermost: joining town-square (ID: town-squaremattermost.mymattermost) [2019-10-25T14:27:10+09:00] INFO router: Starting bridge: slack.myslack [2019-10-25T14:27:10+09:00] INFO slack: Connecting using token [2019-10-25T14:27:10+09:00] INFO slack: slack.myslack: joining with-bot (ID: with-botslack.myslack) [2019-10-25T14:27:10+09:00] INFO main: Gateway(s) started succesfully. Now relaying messages [/html]Slack側で、.tomlファイルの29行目で指定したSlackチャンネルにアクセスし、@Slack App(例 matterbridge) 半角スペース メッセージ の順で入力し、送信しますと、Mattermostに転送されます。
まとめ
「matterbridge」のようにひと工夫することで、SlackとMattermostなど、様々なビジネスコラボレーションハブやチャットツールを導入した際に課題となるセキュリティ上の「不安」を解決することができます。「運用で」という言葉は便利な言葉ですが、エンドユーザーに負担を与え、せっかく導入したシステムが使われなくなる原因の1つになりますので、システム面で対応できるのであれば、対応していきましょう。
オンプレミスでも使えるビジネスコミュニケーションツール『Mattermost』はこちらをご覧ください。
またリックソフトはSlack社との国内初となるパートナー契約を締結し、Slack導入支援サービスの提供を開始しました。ぜひご検討ください。
30日間の評価ライセンスも発行できますので、是非ご活用ください。
ご不明な点がございましたら、お気軽にお問い合わせください