セキュアなチャットアプリ「Element」の有料機能「ブリッジ接続」で「Discord」「Slack」のチャットを相互転送してみた

GIGAZINE



DiscordやSlackなどメッセージのやりとりを主眼にしたソフトウェアの中でも、オープン標準かつ軽量なリアルタイム通信プロトコルMatrixによってセキュアなやりとりを行えるサービスが「Element」です。Elementの有料機能ではDiscordやSlackのやりとりを相互に転送できる「ブリッジ接続」が使えるとのことなので、実際にやってみました。

Personal plans for Element | Free | Element Home
https://element.io/personal-plans

「Element」は、オープン標準かつ軽量なリアルタイム通信プロトコルMatrixによってセキュアなやりとりが行える上に、無料版でも広告なし&時間制限なしのビデオ通話などもできるというチャットソフトウェア。Elementの基本的な設定や使い方については、以下の記事で詳しく解説しています。

無料&広告なし&時間制限なしでビデオ会議・音声通話・ファイル共有できてセキュアなチャットアプリ「Element」 – GIGAZINE


有料版ではDiscordやSlackと連携してメッセージのミラーリングが可能になる「ブリッジ接続」が解放されるとのことなので、実際にやってみます。

・目次
◆初期設定
◆Slackとブリッジ接続をしてみた
◆Discordとブリッジ接続をしてみた

◆初期設定
ブリッジ接続はファミリー向けの「Element Home」でも使えるようですが、今回はMatrix系の統合機能が利用可能になる「Element Matrix Services(EMS)」を使います。まずはEMSの公式ページにアクセスして、今回は個人版(無印)のほうの「Sign up」をクリック。


最低月額15ドル(約1740円)の「Element Cloud」への加入が必須となっているので、これを選択して「Continue」をクリック。


ホスト名を入力して、すでに使用されているかどうかを調べる「Check」をクリック。「(入力した名称).ems.host」というホームサーバーが作成されるので、入力ミスなどがないように注意。


重複がない場合はそのまま次に移行します。他のサーバーとのやりとりを許可する「federation」やゲストユーザーの許可の設定、「Domains&email addresses~」でアカウント作成を許可するメールアドレスやドメインの指定などを行って、「Next」をクリック。なお、「Total Monthly Active User Seats(1カ月あたりの最大アクティブユーザー数)」は人数×3ドル(約350円)が必要で、設定可能人数は最小で5人です。


Monthly(月額)プランかAnnual(年額)プランかを選択し、クレジットカード情報を入力して「Submit」


入力したクレジットカード情報に誤りがない場合は以下のような最終確認が表示されるので「Purchase」をクリック。後は数分待つとホスティングが完了します。


ホスティング完了後、ページ上部の「Integrations」タブの「Bridge」にブリッジ接続を行えるサービス一覧が表示されています。


Slackのブリッジ接続は例外的に無料でも使えますが、今回は有料版のブリッジ接続を行います。有料のブリッジ接続設定は「Bridge public channels to room directory(パブリックチャンネルをルームディレクトリにブリッジする)」「Direct Message rules(ダイレクトメッセージに関するルールを追加する)」「Maximum Slack users(Slack側の最大ユーザー数)」の3種。ブリッジ接続機能は利用ユーザー数×0.5ドル(約58円)の月額利用料がかかるため、Maximum Slack usersで最大人数をあらかじめ制限できるという仕組みです。設定終了後は「Set Up integration」をクリック。


前述のように「利用ユーザー数×0.5ドルの月額利用料がかかります」という最終確認が表示されるので、「Purchase」をクリック。


するとウィンドウのあちこちに「設定中です」という表示が出るのでしばらく待ちます。


「Running」と表示されたら設定は完了。Element側の設定に移ります。


まずはElementのログイン画面でホームサーバーの「編集」をクリック。


先ほど設定した「(自分で入力した名称).ems.host」を入力します。


続いては自作サーバー上にアカウントを作成します。自作サーバーではGoogleアカウントやApple IDを利用したログインはできないので、アカウント作成画面からユーザー名やパスワード、メールアドレスを入力して「登録」をクリック。


CAPTCHAが出てきた場合は「私はロボットではありません」をクリックしてパズルを解きます。


プライバシーポリシーに同意するにチェックを入れて、「受諾」をクリック。


すると入力したメールアドレスにメールが送られた旨が表示されます。


メールボックスを見ると以下のようなメールが届いているので、「Verify Your Email Address」をクリックするとアカウントの作成は完了。


◆Slackとブリッジ接続をしてみた
ログインしてブリッジ接続を行うためのチャットルームを作成してみます。「+」印の追加アイコンから「新しい部屋を作成」をクリック。なお、以下は有料版のブリッジ接続を行っていますが、Slackの無料版ブリッジ接続も同じ手順で実行可能。ドキュメントによると、無料版と有料版の違いはプライベートチャンネルをブリッジ接続できるか否かやダイレクトメッセージを送れるか否かとのこと。


するとチャットルーム作成画面に入ります。ブリッジ接続はプライベートなチャットルームでも利用可能ですが、エンドツーエンド暗号化が有効になっている場合は利用不可なので、ここを無効にするように設定しておきます。名称などを入力後、「部屋を作成」をクリック。


右上の「i」というアイコンから「ウィジェット、ブリッジ、ボットの追加」を選択。


利用規約に同意して「次へ」


「BRIDGES」の項目にあるSlackを選択。


「Add Bridges」をクリック。


「Add to Slack」をクリックします。


以下のように「Element BridgeがSlackワークスペースにアクセスする権限をリクエストしています」というウィンドウがブラウザに出現するので、ブリッジ接続を行いたいSlackワークスペースを選んで「許可する」をクリック。


すると「Slackとブリッジ接続に成功しました」という旨の表示が出てくるので、このウィンドウは閉じます。


Elementに戻ってもう1度「ウィジェット、ブリッジ、ボットの追加」から同じ手順を進めていくと、今度は以下のように「Your workspaces」として先ほど選んだSlackワークスペースが表示されているので、「List Channels」をクリック。


するとチャンネル一覧が表示されるので、ブリッジ接続したいチャンネルを選びます。


「Slackとブリッジ接続できました!」という表示が出てくるので、Element側の設定は完了。このポップアップは閉じておきます。


Slack側は、指定したチャンネルで「/invite @element_bridge」というコマンドをチャット欄から送信して設定完了。


これでSlackのメッセージとElementのメッセージが同期するようになりました。


BOTを経由したメッセージの同期ですが、メッセージ内容だけでなくユーザー名も完全に偽装された状態で転送されます。また、片方のサービスでメッセージを削除した場合にはもう片方のサービスでもメッセージが削除されるなど、メッセージに関しては完全に同期している様子。Element側のメッセージはローカルに保存されるので、SlackのログをElement側に保存することも可能。


メッセージだけでなくファイルも同期してくれます。


ただしファイルについては「Element側の削除がSlack側に反映されない」様子でした。


◆Discordとブリッジ接続をしてみた
今度はDiscordとのブリッジ接続を行います。まずはブラウザでDiscordにログインし、「Discord Developer Portal」にアクセスして右上の「New Application」をクリック。


アプリケーション名を設定して、「Create」をクリック。アプリケーション名は自分が複数のアプリケーションを設定する際の識別用なので、なんでもOK。


まずは「OAuth2」というタブにある「CLIENT ID」を控えておきます。このCLIENT IDはブリッジ接続時に使います。


続いて「Bot」タブから「Add Bot」を選択。


確認が表示されるので、「Yes,do it!」をクリック。


これでBotが誕生しました。ブリッジ接続に用いるため、「TOKEN」という項目の「Copy」をクリックして、Botの操作に必要なToken(トークン)を取得。Discordにおけるトークンは文字列なので、そのままペーストしてテキストエディタか何かに一時保管しておきます。


続いてはEMS側の設定を行うため、マネジメント画面から「Integrations」を選択し、「Discord Bridge」を選択します。


「Client ID」と「Bot token」に、上で控えておいた「CLIENT ID」と「TOKEN」をそれぞれ入力してMaximum Discord usersから最大利用人数を設定して、「Set Up Integration」をクリック。なお、ブリッジ接続機能は利用ユーザー数×0.5ドル(約58円)の月額利用料がかかるため、Maximum Slack usersで最大人数をあらかじめ制限できるという仕組み。


「利用ユーザー数×0.5ドルの月額利用料がかかります」という最終確認が表示されるので、「Purchase」をクリック。


しばらく待つとDiscord Bridgeの横に「Running」と出るので、これで設定は完了。


続いてDiscordサーバーに対して先ほど作成したアプリケーションの許可を要請するため、「https://discordapp.com/api/oauth2/authorize?client_id=(先ほど控えたCLIENT ID)&scope=bot&permissions=607250432」というURLにアクセスします。アクセスすると、以下のように、(先ほど作成したアプリケーション名)がDiscordに接続を望んでいるという旨が表示されるので、追加したいサーバーを選択して「はい」をクリック。


申請自体は当該サーバーの管理者でなくても行えますが、以下はサーバーの管理権限が必要な作業となるので、自分自身が管理権限を有しているという前提で進めます。先ほど作成したアプリケーションに与える権限を設定して、「認証」をクリック。


CAPTCHAが出てきた場合は「私は人間です」をクリックしてパズルを解きます。


すると以下のように「認証しました」と表示されます。これでこのタブは閉じてOK。


続いては実際にDiscordチャンネルをブリッジ接続していきます。まずブリッジ接続したいチャンネルの「サーバーID」「チャンネルID」という2つのIDをゲットする必要があります。ブラウザからDiscordを使っている場合はURLに「https://discord.com/channels/(サーバーID)/(チャンネルID」と表示されるので一目でわかりますが、ソフトウェア版のDiscordを使っている場合は特殊な操作が必要なので、以下はソフトウェア版のDiscordでサーバーIDとチャンネルIDを表示させる手順について解説しています。まずは歯車アイコンをクリックして設定に移動。


「詳細設定」から「開発者モード」をオンにします。


するとサーバー名を右クリックしたときに「IDをコピー」という選択肢が表示されるので、ここからサーバーIDをゲットできます。


チャンネルIDも同様にチャンネル名を右クリックして「IDをコピー」から取得。両方のIDを控えておきます。


なお、チャンネル設定でプライベートチャンネルがオンになっているとブリッジ接続用のBOTが入ってこれないので、ここはオフにしておきます。


続いてはElementのブリッジ接続したいチャンネルの「ユーザー招待」をクリック。


空欄に「@discord:(サーバー名).ems.host」と入力して「招待」をクリックします。


するとその部屋にDiscordブリッジ接続用のBOTが入ってくるので、チャットで「!discord bridge (サーバーID) (チャンネルID)」と発言してDiscord側に承認を要請します。


後はDiscord側のブリッジ接続したいチャンネルで「!matrix approve」と発言すればOK。


これでDiscordとElementの当該チャンネル同士で、メッセージが相互に転送されます。


Slack同様、メッセージの削除やファイルなども共有してくれる様子。


また、Slackに存在した「Element側のファイル削除が反映されない」という点をDiscordはクリアしていました。


この記事のタイトルとURLをコピーする

Source