Slackの料金・プランが2022年9月1日改定されるニュースは、Slackユーザーの中で大きな話題になっていました。それと同時に注目を浴びているのが、「 FLOSS版のSlack」とも言うべきMattermost です。そこで今回は改めてMattermostについておさらいしてみましょう。
タダより高いものはない
Slack と言えばビジネスでもプライベートでも広く活用されているコミュニケーションツールです。特に、Slackにおける最大の特徴であるチャット機能については、ことあるごとにワークスペースやチャンネルが増えていき、ひたすら通知が飛び交い、その中から自分が反応すべきコメントを適切に見つけなければいけない、という大変ゲーム性の高いツールとして人気を博しています。COVID-19の流行に端を発するリモートワークの普及において、「 仕事において口頭・メールでの会話がめんどくさい人は、チャットでもだいたいめんどくさい」事実を視覚化できたという意味でも、対抗製品のMicrosoft Teamsと共に今後のビジネスにおいて重要な位置づけのソフトウェアと言えるでしょう。
そんなSlackですが、2022年9月1日から料金が改定されることになりました 。単純に値上げされるのに加えて、フリープランの仕様も変わることで、Slackを活用していた人たちの間で話題になっているようです[1] 。同時にSlackのFLOSS版であるMattermostが俄然注目を浴びるようになりました。
Mattermost自体はSaaSとして提供されているために、Slackと同じようにフリープランと有償プランが存在します。しかしながらFLOSSということでセルフホストする選択肢も出てくるのです。もちろん有償プランに対して機能的な制約はあるものの、Slackのフリープランに比べればできることは増えます。Mattermost自体がオープンソースであることを標榜し、重要視しているため、不具合報告や修正という形での貢献も可能です。
図1 ハドルミーティング機能も追加されたMattermost
Mattermostを考慮しつつ、Slackユーザーが取れる選択肢
さて、Slackの価格改定に伴いSlackのユーザーは、Mattermostを考慮に入れた場合にたとえば次のような選択肢が出てきます。
Slackのフリープランを使い続ける
Slackの有償プランに変更する&価格改定を受け入れる
Mattermostのフリープランに移行する
Mattermostの有償プランに移行する
Mattermostをセルフホストして運用する
身も蓋もないことを言うと、よっぽどのことがない限り、Slackを使っているなら1か2の案がおすすめです[2] 。Mattermostも十分高機能とは言え、あくまでSlackとは別の製品です。開発ポリシーもUIも異なります。移行するにあたってそれなりの労力が必要でしょう。それくらいならSlackを使い続けたほうが十分元はとれます。価格に関係なくSlackじゃなくてMattermostが使いたい、そういう要望がある場合にのみ3以降が生きてきます。
[2] ちなみにフリープランの変更自体はそこまで影響範囲は大きくないと考えています。大抵の場合は、チャットに永続的なデータを期待していないでしょうし、永続性が必要なら適宜別のシステムに(自動的にしろ、手動でまとめるにしろ)反映されているはずですから。
3のMattermostのフリープラン(Starter)は、改定前のSlackに似たプランになっています。チャンネル数・ユーザー数は無制限ですし、メッセージも10000件まで保存できます。もしビジネスで使うなら、4のMattermostの有償プラン(Proffessional)という手もあるでしょう。ただしSlackの価格改定後のプロプランが月額1050円、ビジネスプランが月額1600円であるのに対して、Mattermostのプロプランは月額10USDと、改定後のSlackのプロプランに二の足を踏む人にとっては若干お高めです。
図2 Mattermostの価格体系
そこで出てくるのが5番目のMattermostをセルフホストするという案です。セルフホスト用のMattermostには「Team Edition」 と「Enterprise Edition」 の2種類が存在します。Team Editionが実質Starterプラン相当の機能しか使えないバージョンです。それに対してEnterprise Editionは有償のProfessionalやEnterpriseの機能を備えています。ただしライセンスを購入してアクティベートしなければ有償機能は使えず、Starter相当の動作となります[3] 。
[3] ちなみにEnterprise Editionの価格は公開されていないようです。おそらくMattermostや代理店への問い合わせが必要になります。SaaSなSlackよりはおそらく価格は安くなると思われるものの、未知数です。
つまりMattermostをセルフホストする場合、実質アクティベートせずにEnterprise Editionを使い、Enterpriseの機能がほしくなれば購入を検討する形になるでしょう。当然のことながらセルフホストするならサーバー代・電気代はもちろんのこと、障害発生時の対応、バージョンアップグレード等も自分たちで行う必要があります。そのコストも含めて考えると、少なくともビジネスで使うならSlackのプロプランはそこまで高くないことがわかってくるでしょう。
ここまでMattermostでなくても良い理由をあげてきましたが、それはここまで「今Slackを使っている人」向けを意識したためです。たとえばSlackとMattermostのどちらを選んでも良い状態であれば、Mattermostも十分に選択肢に入ってきます。
FLOSSであるセルフホストできるということは、バージョンアップ等に伴う動作確認や移行のコントロールがしやすくなることでもあります。さらにVPN接続のみといった特殊なネットワーク要件にも対応しやすくなります。メッセージを含むデータをすべてバックアップできるため、文字通りの意味で「Searchable Log of All Conversation and Knowledge」を実現できるのです。
そして将来的なセルフホストも想定するなら、SaaS版のMattermostを選択することにも意味が出てくるでしょう。
Mattermostの導入方法
とても長い前置きになってしまいましたが、ここまで読み進めてくれた読者なら、きっとMattermostという選択肢に十分に興味を惹かれているかと思います。さっそく導入方法と行きたいところですが、実は本連載ではすでに何度かMattermostを取り上げています。
Mattermostのデプロイ方法の選択肢についてもそちらで解説しています。ただし、ひとつ注意点があります。第700回では比較的導入が可能でアップグレードも自動化できるMattermost Omnibusを利用しました。Mattermost Omnibusは今でも利用できるのですが、2022年7月時点でまだUbuntu 22.04 LTSには未対応です。Mattermost Omnibusを使うなら、Ubuntu 20.04 LTSかUbuntu 18.04 LTSを用意してください。もちろんホストは22.04だけれども、LXDで20.04環境を作る という手もあります。
Docker Composeで構築する
今回はもう一つの選択肢として、Docker Composeで構築する方法 を紹介しましょう。あらかじめdocker
、docker-compose
、それにdocker-compose.yml
を取得するためのgit
コマンドをインストールしておきます。
$ sudo apt install docker.io docker-compose git
次にDocker Composeの設定ファイルをダウンロードします。
$ git clone https://github.com/mattermost/docker
$ cd docker
設定ファイル(.env
)をコピーして編集します。最低限必要なのは、ドメイン名(DOMAIN
変数)を設定することです。また、.env
内のファイルを見て必要に応じて変更すると良いでしょう。
$ cp env.example .env
$ sed -i 's/^DOMAIN=.*/DOMAIN=ドメイン名/' .env
$ mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
$ sudo chown -R 2000:2000 ./volumes/app/mattermost
ちなみにLXDの場合、Docker Composeのno-new-privileges
がうまく動きませんでした。LXD上で動かすなら、docker-compose.yml
に2箇所存在する、次の2行をコメントアウトしておいてください。
今回は第700回と同じようにHTTPS用のTLS接続は事前に用意していたNginx側で行うことにし、NginxとMattermostの間はHTTPで接続するものとします。その場合、次のコマンドを用いてDocker Composeで立ち上げるだけです。
$ sudo docker-compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d
もしNginxもDocker Compose側に任せたい場合は、Mattermostの公式ドキュメントの手順 を参照してください。
しばらくすると「http://インストールしたマシンのIPアドレス:8065」もしくは、「 https://DOMAINに指定したドメイン名/」にアクセスすると初回アカウント作成画面が表示されます。最近はこの手のサービスを公開すると、管理者がログインするより前に目ざとく見つけて、先にログインされてしまう手法も流行っています。あまりこの状態で放置せず、なるべくはやくログインしてしまいましょう。誰か一人がアカウントを作成したら、一旦アカウントの作成機能は無効化されます。あとは管理者が再度必要に応じて有効化すれば良いだけです。
図3 Mattermostの初回アカウント作成画面はだいぶおしゃれになっている。真ん中の人は「ここは俺に任せてお前は先にログインしろ!」みたいな状況なのだろうか
ここから先の基本設定は第700回 や第702回 を参照してください。
もしSlackからの移行を考えているのであれば、Slackのデータをエクスポートした上で、公式ドキュメントに従ってMattermostに取り込む と良いでしょう。
Mattermostの新機能と活用方法
第702回までは、Mattermost 6.2.1ベースでの紹介でした。
Mattermostは比較的単周期のリリースサイクルを採用しており、ほぼ月1回 のペースでリリースを行っています。ただし6回に1回(つまり半年に1回)は「Extended Support Release (ESR) 」となり、9ヶ月間のサポートが行われます。よって頻繁なアップデートを避けたい場合は、ESRを導入すると良いでしょう。
バージョン6.2から7.1までの主な機能追加
直近のESRは、7月15日にリリースされたばかりのMattermost 7.1です。6.2から7.1までの間には、大きなところだと次のような変更が加えられています。
Kanbanライクなタスク管理機能であるBoards(旧称:Focalboard)が正式版に
Playbook/Boardsの機能追加・UIの改善
チャンネル内の挙動に対するアクションをWebから設定可能に
返信スレッドの折りたたみ機能が正式版に
メッセージの書式設定ツールバーの追加
音声通話機能(ベータ版)
一時期はPlaybookやBoardsの機能追加・改善が目立つ感じでしたが、7.0になったあたりからチャット機能も一気に充実してきました。特に最後の音声通話機能は、Slackのハドルミーティングのように、もう文字ベースのやりとりでは埒が明かなくなったときの緊急回避策として有用な機能です[4] 。ただしSaaSにおけるStarterプランの場合は、1:1のみとなります。またビデオ通話には未対応です。
[4] 文字だけでコミュニケーションできるとか、幻想にもほどがありますよね。ちなみに機能自体は「mattermost-plugin-calls」として昔から存在しました。今回はそれが最初から取り込まれたという形になります。
音声通話機能の使い方
試しに音声通話を使ってみましょう。まずは次の手順で設定内容を確認しておきます。
図4 画面左上のベントーアイコンからシステムコンソールを選択
図5 プラグインの「Calls (Beta)」で「プラグインを有効にする」が「有効」になっていることを確認
その他、いろいろ設定がありますが原則としてそのままで問題ありません。ただし、もしワークスペースの管理者以外に、複数のチャンネルとその管理者が分散しているようなら、「 Enable on specific channels」を「有効」にしておくと良いかもしれません。これが無効のままだと、ワークスペースの管理者しかチャンネルごとのコール機能を設定できないからです。
また、組織内ネットワークのみしか通じない環境で利用するなら、ICEサーバーの設定は必要になるかもしれません。
さて、上記の設定画面でもわかるように、標準の設定だと「Enable on all channels」が無効のままなので、チャンネルごとに個別に有効化しなくてはなりません。前述のとおりそれが無条件でできるのはワークスペースの管理者(デプロイ後に最初にログインした管理者)だけです。チャンネル画面の左上にあるチャンネル名をクリックし、プルダウンメニューから機能を有効化してみましょう。
図6 「 Enable Calls」で通話機能を有効化できる
図7 有効化すると画面右上に「Start call」というボタンが登場する
図8 Start callを押すと、チャンネル内のメンバーに通話が開始されたことが通知され、「 Join call」を押すと通話に参加できる
図9 通話中はウィンドウの左下に設定メニューが表示される
図10 「 Start presenting」で他のウィンドウや画面を共有可能
もし音声通話は開始したけど数秒程度で切れるということであれば、サーバー側のネットワークの設定を見直してください 。通信のためにポート8443/UDP等の疎通 が必要になります。また、ウェブブラウザーがマイクを利用するためにはHTTPS接続が有効化されている必要があります。
デスクトップアプリのsnapパッケージ
ちなみにUbuntuも含むデスクトップ向けアプリケーション も用意されています。非公式ではあるもののsnapパッケージも存在します 。snap版は放置が続いている状態だったのですが、4月ぐらいからテコ入れされたのか、最近は比較的頻度良く更新されているようです。本記事執筆の際に軽く試した限り、実際に使えるレベルには達しているのではないかと思われますので、まずはsnap版をインストールしてみると良いでしょう。
$ sudo snap install mattermost-desktop
図11 snap版のMattermost Desktop
もちろんウェブブラウザーのまま使うのもひとつの手です。