Ubuntu Weekly Recipe

第726回Slackの代替として、ハドルミーティングも実装されたオープンソース版のMattermostはいかが

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
図1

Mattermostを考慮しつつ、Slackユーザーが取れる選択肢

さて、Slackの価格改定に伴いSlackのユーザーは、Mattermostを考慮に入れた場合にたとえば次のような選択肢が出てきます。

  1. Slackのフリープランを使い続ける
  2. Slackの有償プランに変更する&価格改定を受け入れる
  3. Mattermostのフリープランに移行する
  4. Mattermostの有償プランに移行する
  5. Mattermostをセルフホストして運用する

身も蓋もないことを言うと、よっぽどのことがない限り、Slackを使っているなら1か2の案がおすすめです[2]。Mattermostも十分高機能とは言え、あくまでSlackとは別の製品です。開発ポリシーもUIも異なります。移行するにあたってそれなりの労力が必要でしょう。それくらいならSlackを使い続けたほうが十分元はとれます。価格に関係なくSlackじゃなくてMattermostが使いたい、そういう要望がある場合にのみ3以降が生きてきます。

3のMattermostのフリープラン(Starter)は、改定前のSlackに似たプランになっています。チャンネル数・ユーザー数は無制限ですし、メッセージも10000件まで保存できます。もしビジネスで使うなら、4のMattermostの有償プラン(Proffessional)という手もあるでしょう。ただしSlackの価格改定後のプロプランが月額1050円、ビジネスプランが月額1600円であるのに対して、Mattermostのプロプランは月額10USDと、改定後のSlackのプロプランに二の足を踏む人にとっては若干お高めです。

図2 Mattermostの価格体系
図2

そこで出てくるのが5番目のMattermostをセルフホストするという案です。セルフホスト用のMattermostには「Team Edition」「Enterprise Edition」の2種類が存在します。Team Editionが実質Starterプラン相当の機能しか使えないバージョンです。それに対してEnterprise Editionは有償のProfessionalやEnterpriseの機能を備えています。ただしライセンスを購入してアクティベートしなければ有償機能は使えず、Starter相当の動作となります[3]

つまり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で構築する方法を紹介しましょう。あらかじめdockerdocker-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行をコメントアウトしておいてください。

    #security_opt:
    #  - no-new-privileges:true

今回は第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の初回アカウント作成画面はだいぶおしゃれになっている。真ん中の人は「ここは俺に任せてお前は先にログインしろ!」みたいな状況なのだろうか
図3

ここから先の基本設定は第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 画面左上のベントーアイコンからシステムコンソールを選択
図4
図5 プラグインの「Calls (Beta)」「プラグインを有効にする」「有効」になっていることを確認
図5

その他、いろいろ設定がありますが原則としてそのままで問題ありません。ただし、もしワークスペースの管理者以外に、複数のチャンネルとその管理者が分散しているようなら、⁠Enable on specific channels」「有効」にしておくと良いかもしれません。これが無効のままだと、ワークスペースの管理者しかチャンネルごとのコール機能を設定できないからです。

また、組織内ネットワークのみしか通じない環境で利用するなら、ICEサーバーの設定は必要になるかもしれません。

さて、上記の設定画面でもわかるように、標準の設定だと「Enable on all channels」が無効のままなので、チャンネルごとに個別に有効化しなくてはなりません。前述のとおりそれが無条件でできるのはワークスペースの管理者(デプロイ後に最初にログインした管理者)だけです。チャンネル画面の左上にあるチャンネル名をクリックし、プルダウンメニューから機能を有効化してみましょう。

図6 ⁠Enable Calls」で通話機能を有効化できる
図6
図7 有効化すると画面右上に「Start call」というボタンが登場する
図7
図8 Start callを押すと、チャンネル内のメンバーに通話が開始されたことが通知され、⁠Join call」を押すと通話に参加できる
図8
図9 通話中はウィンドウの左下に設定メニューが表示される
図9
図10 ⁠Start presenting」で他のウィンドウや画面を共有可能
図10

もし音声通話は開始したけど数秒程度で切れるということであれば、サーバー側のネットワークの設定を見直してください。通信のためにポート8443/UDP等の疎通が必要になります。また、ウェブブラウザーがマイクを利用するためにはHTTPS接続が有効化されている必要があります。

デスクトップアプリのsnapパッケージ

ちなみにUbuntuも含むデスクトップ向けアプリケーションも用意されています。非公式ではあるもののsnapパッケージも存在します。snap版は放置が続いている状態だったのですが、4月ぐらいからテコ入れされたのか、最近は比較的頻度良く更新されているようです。本記事執筆の際に軽く試した限り、実際に使えるレベルには達しているのではないかと思われますので、まずはsnap版をインストールしてみると良いでしょう。

$ sudo snap install mattermost-desktop
図11 snap版のMattermost Desktop
図11

もちろんウェブブラウザーのまま使うのもひとつの手です。

おすすめ記事

記事・ニュース一覧