DiscordとDiscourse - より良い共に | ブログ

よくある質問があります — Discourse と Discord。名前は非常に似ていますが、同じものなのでしょうか?


これは、元の投稿の補足ディスカッショントピックです:https://blog.discourse.org/2021/05/discord-and-discourse-better-together/
「いいね!」 22

この非常に現在性の高い問題に取り組んでいただき、素晴らしいと思います。ただ、まだこれらの2つの別々の製品をより効率的で快適、かつスムーズに使うための優れたワークフロー、ベストプラクティス、そして理想的にはツールが不足していると感じています。これは、3年前に同様の(ただしより広範な)ブログ記事が投稿され、少し議論(および私がこれから詳しく述べるものと同様の要望)が生まれたにもかかわらず、いまだにその状況が変わっていないことを意味します。

Discord と Discourse を調和させるために、私が理想的に実現したいと思ういくつかの例を挙げてみます。Discord や Discourse の API の制限、あるいは他の理由により、これらが実際に可能ではないかもしれないことも承知しています。しかし、多くのコミュニティにとって同期/非同期の同期は現在の課題であり、まだ理想的な解決策が存在しないため、これについてより深く考え、議論し、具体的な内容に触れる価値はあると思います。

まず最大かつ最も重要な点は、システム間を移動しやすくするための(一見)シンプルなツールです。Discord 内で Discourse のカテゴリに、あるいはその逆に Discourse 内で Discord のチャンネルに、そのままリンクを貼れるようにしたいものです。そうすれば、どちらかのシステムでリンクをコピーする必要がなくなります。さらに、Discord 内に埋め込まれたトピック検索機能があれば、Discord を離れることなく検索してリンクを貼ることができます。また、どちらのシステムからでも、ホットキーなどで即座に他方のシステムへの招待リンクを生成できれば理想的です。

貴社の以前のブログ記事 Effectively using Discourse together with group chat には、以下のような内容が示されています。

新規ユーザー: X はどうすればいいですか?
親切なユーザー: 良い質問ですね。この内容を当社の公開フォーラムに再投稿してください。そうすれば、同じような質問をしている他の誰かでも、得られた回答を検索して読むことができます。

これは問題の一部を処理するための良い方針ですが、ユーザーエクスペリエンス(UX)の観点からはユーザーにとって理想的ではありません。代わりに、Discord 上のメッセージをクリックし、単一のコマンドでフォーラムへの招待リンクを生成し、適切なカテゴリへ誘導できれば素晴らしいです。理想的には、ユーザーがサインアップした後に「新規トピック作成」アクションを自動で開始でき、さらにボーナスとして、Discord のメッセージ内容をそのまま Discourse のトピックにコピーできれば完璧です。

おそらく、Discord ログイン統合を自動的に優先するような仕組みもあると良いでしょう。例えば、ユーザーが Discord 内のリンクをクリックすると、新しいブラウザウィンドウでフォーラムが開き、「X Discourse コミュニティへの参加をご招待しています!『参加』をクリックして Discord アカウントでログインするか、右側の代替ログインオプションを選択してください」というポップアップが表示されます。その後、サインアップが完了すると、新規トピック作成画面へ移動する、といった流れです。

「チャットが終了するまで待ち、要約を生成する」という提案も、ツールの支援を強く必要としています。Slack 向けのツールで半自動的な処理を行うものはすでにあると伺っていますが、それは素晴らしいことです。私はまだ使用したことがないので、ユーザー名が既存の Discourse ユーザー名とどう連携するかはわかりませんが、より重要なのは、Discord 向けにも同様の機能があることです。以前のブログ記事には他のチャットアプリからのコラボレーションの招待がありましたが、おそらくそれは実現しなかったのでしょう。これを十分に促進するには何が必要でしょうか?「直近の 20 件」ではなく、選択されたメッセージに対して動作するように、さらに強力にすることはできないでしょうか?また、Slack 版にまだ含まれていない場合、フォーラム投稿内にチャットへのリンクを自動生成するのも素敵だと思います。

単なる思いつきに過ぎませんが、これらの少なくとも一部が実際に役立つと思います。

個人的には、長期的には同期型と非同期型の両方をよりよく統合した単一のツールが登場することを願っています。高ボリュームの Discourse トピックが、ある程度の消滅性(エフェメラル性)を持ってチャットへと変容できるという最近の議論もあると知っています。この概念全体が深く検討され、コミュニティが両方のアプローチの価値を実際に統合するための最適なツールセットを提供するための「青空思考(ブルー・スカイ・アプローチ)」的な検討が進むことを願っています。

私にとって、これは理想的には Discourse 内で実現されるべきものです。既存のトピックに接続した、あるいは接続されていない(カテゴリレベルのチャットもクールです)チャットをどこでも生成できるようにするのです。Slack のスレッドのように、どこかから「分岐」して動作するかもしれません。つまり、トピックを読んでいて、実際の実時チャットの要約である「返信」に到達するのです。「5/31/21 にユーザー x, y, z [アバター] によって 243 件のメッセージが生成されたチャット」のように表示されます。既存のトピック要約バーをチャット用に修正し、スタイルで区別できるようにし、クリックするとチャットウィンドウが開いてレビューできたり、インラインで展開できたりする仕組みです。

チャットは必要に応じて自動アーカイブ、あるいは削除することも可能です。しかし、理想的には、Discourse のメッセージ編集機能(複数選択など)を使って、チャットをトピックに要約できるツールが提供されるべきです。モデレーターが行うこともできますし、ユーザーが自分のメッセージをトピックに寄与したい場合、1 つまたは複数のメッセージを選択することもできます。一定期間後に行われなければ、すべてがアーカイブされます(オプションで)。カテゴリベースのチャットの場合、チャットメッセージをトピックに「昇格」させることもできます。

とにかく、無数のアイデアがあります。しかし、これが Discourse 内で正しく実現できれば、大きな価値のある領域だと思われます。Discord と Discourse の間の緊張感や、Discourse アプローチの「硬直性」を軽減しつつ、両方の利点を維持できれば、大きな勝利になるでしょう。言うは易し行うは難しですが、確かに価値ある挑戦です!

追記:過去にも同様の主題について様々な議論が多数行われていることは承知しています。例えば、

などです。

Babble はクールですが、それほど十分にサポートされているようには見えません。より重要なのは、上記で述べた問題の多くを解決していない点です。ただし、少なくともすべての機能を一つの場所に統合しており、インタラクションモード間を移動しやすくしている点は評価できます。

追記 2:さらに、チャット専用のカテゴリ/「チャンネル」があっても良いでしょう。これも、メッセージ(またはメッセージのシリーズ?)をトピックに「昇格」させる可能性を備えているべきです。さて、これを新しいトピックとして投稿すべきではなかったのかもしれませんね。まあ、いいでしょう。:grinning_face_with_smiling_eyes:

「いいね!」 15

Discord Bot Construction Kit 🤖 のリンクが気になるかもしれません。

Discord と Discourse をいくつかの方法で連携させることができる、汎用的な統合プラグインです。

拡張性を意識して設計されており、Discourse のイベントフレームワークと Discord API Ruby gem を使用しています。

追加機能に関するプルリクエストも歓迎します。

「いいね!」 8

素晴らしい、ありがとうございます。より深く、より洗練された統合を期待していますが、それは現在開発されている範囲を超えるかもしれません。しかし、それまでの間、とても便利なプラグインであることは間違いありません。

余談ですが、より一般的に言うと、その後、サムが以前投稿したこのスレッドを発見しました。これは、Discourse チームがかなり前から考えていたことなのです!彼の考え方の素晴らしい詳細は、そのスレッドにあります。以下はその一部です:

「いいね!」 7

もう少し詳しくご説明いただけますか?「深層的」と「洗練された」統合とは具体的に何を意味するのでしょうか?

プラグインの機能拡張のために、プルリクエストの提出をご検討いただくか、あるいは機能の仕様を明確にして(場合によっては資金提供も検討して)いただくことも歓迎します。

「いいね!」 1

この問題をある程度解決するプラグインを作成しました。少なくとも権限管理に関しては、その仕組みの紹介動画はこちらです:https://www.youtube.com/watch?v=C5paAvTYty4

これにより、両プラットフォームの権限システムが連携します。

良いアイデアだと思うのは、これを逆転させることです。Discord から Discourse へ人を誘導するのではなく、Discord で行われる会話を資産として扱うのです。Discord は、Discourse にスレッドを自動的に作成するために活用できる膨大なコンテンツの宝庫です。

Discord のロールと Discourse のグループを同期させるプラグインを作成した際、Discord API の強力さを痛感しました。Discord サーバー上で発生するあらゆるイベントに対応できるからです。例えば、誰かが疑問符を使った瞬間に Discourse のスレッドを作成することも可能です。質問とその回答は、Discord 側で取り入れられる最も価値のある「手っ取り早い実り」であり、それを Discourse の果実のかごに追加できるでしょう。これにより、コミュニティへの入り口も広がります。なぜなら、Discord 会話の最も価値ある部分が、通常の Web からアクセス可能になるからです。現状では Discord の会話は検索エンジンにインデックスされませんが、これにより大きな機会が開ける可能性があります。

「いいね!」 3

もちろんです!実は上記でいくつかのアイデアを既に概要として示しています。例えば:

しかし、全体像を概説すると(これが不可能、あるいはコストに見合わない可能性もあることは承知していますが、これは理想のビジョンです):

管理者、モデレーター、あるいは権限設定に応じて誰でも、Discord の 1 つ(または複数)のメッセージから Discourse のトピックを瞬時に作成できる機能(非常にシンプルな UI、例えば右クリックなど)。

  • 新しいトピックのカテゴリとタグを選択するための UI(オプション)
  • 複数のメッセージを含めるためにマルチセレクト機能を使用可能
  • 基本バージョンでは、システムユーザーまたは他の Discourse の非個人ユーザーからトピックを作成し、1 つまたは複数の Discord メッセージの内容を、新しいトピックを開始する「単一のメッセージ」として含める
  • 高度なバージョンでは、Discord ユーザーと Discourse ユーザーを一致させ、選択された最初のメッセージからトピックを作成し、それを正しい一致ユーザーに帰属させる。また、選択された他のメッセージを「返信」として、これも正確に帰属させて追加する
  • いずれの場合も、Discord に「ここで会話していた内容が Discourse のトピックに転換されました。続きはこちらで議論してください![リンク]」というメッセージが投稿される

このページを下にスクロールして「Retroactive Threading(遡及スレッド化)」をご覧ください。私が想定しているもの(概念と UI の両方)の良い例です:
https://quill.chat/

Stretch goals(さらなる目標):

  • 別の素晴らしい機能として、Discord 内で、Discourse トピックに転換されるメッセージの投稿者に対して通知を送り、新しいトピックへのリンクを含める
  • トピック作成のために選択されたメッセージの投稿者が、拒否またはオプトアウトできる機能もあれば理想的
  • 選択されたメッセージの著者がまだアカウントを持っていない場合(または一致するアカウントが見つからない場合、すでにアカウントを持っているがメールアドレスが異なるなどのケースはサインアップ時に解決可能)に、自動的に Discourse へ招待するオプション
  • Discord の既存(最近追加された)スレッドヒント機能との統合。これは「X 件の返信を含む会話を追跡しやすくしますか?[スレッド] を開始します」と表示する機能ですが、これに「[スレッド] またはフォーラムで新しい[トピック] を開始します」という別のオプションを追加する
  • Discord で長いメッセージが作成されているのを検知し、「非常に長いチャットメッセージを作成しているようです。代わりに[フォーラムトピックを開始] しますか?」といった提案を表示する
  • メッセージや Discord スレッドにリンクされたトピック向けの、インラインで展開可能(ポップアップ、スクロール可能?)なトピック表示。通常の「onebox」プレビューを表示しつつ、クリックすることで実際の会話の一部をポップアップでスクロールしながら閲覧できるような機能

全体的な目標は、Discord の「既存の会話」から新しいトピックを開始し、より適切なプラットフォームでより深い議論を続けることを、可能であればシームレスに容易にすることです。また、Discord ではなくフォーラムで会話を継続すべきタイミングについて、Discord が既に提供しているような、文脈に即したが邪魔にならないヒントを提供することも理想的です。これらの中には多少煩雑で不自然になる部分もあるかもしれませんが、現状よりも改善されるはずです。

Discourse 自体に統合されたチャット機能がどのように見えるか、また、リアルタイム機能とフォーラム機能の両方を望むコミュニティや、もともと Discord で始まったコミュニティ、あるいは既に強力な Discord とフォーラムの両方を持つコミュニティなど、どの程度採用されるかはまだ分かりません。この統合だけで、新しいコミュニティ開発者がリアルタイム機能とフォーラム機能の両方に対して「ただ」Discourse を使うようになるでしょうか?それは今後の様子を見るしかありません。しかし、上記で提案した多くの機能の実用性は、その結果に大きく依存する可能性があります。

私はコーディングはできませんが、資金提供については頻繁に考えています。問題は、Discourse に追加・改善してほしいことが多数あり、それらすべてを資金提供できるほどの余裕がないことです(笑)。そのため優先順位をつけています… Discord 統合機能は私のコンサルティングクライアントにとってより関心の高い分野ですので、将来的にその拡張を資金提供してくれるクライアントを説得できることを願っています。

はい、以前にこのプラグインを見かけたことがありますが、私の投稿の前か後かはっきりしません。参考になったので、ありがとうございます。これは「問題」の一部しかカバーしていませんが、解決策の一部であることは間違いありません。

大部分には同意しますが、自動投稿や転載については慎重です。慎重ではありますが、可能性には確かに興味があります。あなたが説明するようにルールベースであれば、より有用になるでしょう。

とても興味深いです!Discord API には詳しくないので何が可能か分かりませんが、あなたが説明することは有用な解決策を可能にするように思えます。前述したようなルールベースの機能があれば、良いオプションになるでしょう。

ただし、モデレーターや管理者が Discord のコンテンツを手動で「キュレーション」するための強力なツールが、最も重要で有用なものだと考えています。確かに、現在私たちが最も能力が不足している部分でもあります。なぜなら、Integromat(例えば)はすでに、Discord で投稿されたトピックを見て、特定のテキスト(例:?)や特定のリアクション(例:モデレーター/管理者に限定された絵文字リアクションで、Integromat を介してトリガーされ、そのトピックのみを Discourse に投稿する)を検索し、そこから Discourse トピックを作成するといったことを実質的に実行できるからです。したがって、ネイティブのプラグイン/統合としてその機能を持つことは素晴らしいことですが、私にとって上記で説明した分野に焦点を当てるほど魅力的な領域ではないと感じています。

「いいね!」 2

これが私が想定していたところです。

私の理解が正しいか確信が持てません:右クリック操作は Discord 側で行うべきでしょうか、それとも Discourse の UI 側で行うべきでしょうか?

私もキュレーションが必要だと考えます。ただし、問題は Discord の UI に機能を追加できないことです。それは私たちの制御外です。そのため、Discord API を使用してすべての Discord メッセージを Discourse にインポートする必要があります。その後、Discourse の管理者・モデレーターダッシュボード内に一種の「Discord 分析ハブ」を設け、そこで Discord メッセージを閲覧・分析し、自動的にスレッドを作成できるようにすることができます。また、誰かが Discord で疑問符や他の記号を使用するたびに、モデレーターに通知を送る仕組みも考えられます。その通知は、その質問と回答を即座に Discourse のスレッドに変換するか、通知を却下できるページへ誘導するものです。

「いいね!」 3

詳細なご回答をありがとうございます、@oshyan さん

はい、Discord はオープンソースではなく、公式クライアントを改変することは利用規約に違反すると考えています。

(Discourse の管理方法と改変への開放性における、このリフレッシュさせるような違いを、少しだけ称賛してみましょう!)

代替クライアントを構築または改変することも可能ですが、公式クライアントの機能を追跡しつつ(さらに機能を追加しつつ)それを実現するのは大きな作業になります。私は代替クライアントの詳細については十分に把握していませんが、メンテナンスがしっかりしており、プラグインシステムを備えたものを推奨していただけるのであれば…

というわけで、まず最初に申し上げると、Discord 側の UI 改変はより複雑になるでしょう。

ただしDiscord Bot プラグイン に新しい変更をリリースしようとしています。これにより、Discord の直近 x 件のメッセージをコピーして、Discourse の新しいトピックとして作成できるようになります。

これはメニュークリックではなく、「ボット」コマンドによって実現されます。

ユーザーアカウントを尊重し一致させるほか、対象トピックのタイトルやカテゴリを指定することも可能です。

今回のリリースには、チャンネル名とカテゴリ名が一致する場合に、Discord からのチャットを自動的に Discourse にコピーする機能も含まれています。

すでに、新しいトピックを Announcements チャンネルに投稿する機能は存在します。

「いいね!」 4

Discord 側です。

はい、そのことは知りませんでしたが、そうだろうと推測していました。それが私がこれまでこれらをすべてまとめずにいた理由の一つです。とは言え、@merefield さんは今回のアップデートでかなりのことを実現できたようです!それはとても喜ばしいことです。

これは面白いアイデアですが、少し「重厚」な解決策のように思えます…(正直に言えば、私の提案も独自の重さがあり、少なくともあなたの案は Discourse がオープンソースである一方 Discord はそうではないという点で、実現可能性という観点では現実的です)。

私も同感です!

残念ながら、サードパーティ製クライアントは Discord の利用規約(ToS)に違反する可能性があり、私が確認した限りでは、いずれも放棄されているか、クローズドソースです(いずれにせよ、ある時点でBANされる可能性が高いです)。Matrix には Discord へのブリッジ機能がありますが、それ以外にはありません。

はい、なるほどです。私が説明したのは理想のケースでしたが、おそらく実現不可能だろうと考えていました。

おっと、これは予想していませんでした。素晴らしい!私が想定していたほど便利でカスタマイズ性が高いものではないかもしれませんが、私が目指していた基本的な目標の多くを達成できるかもしれません。これが他の人にも役立つと思われて開発が進められていることを知り、本当に嬉しく思います。ありがとうございます!

ユーザーアカウントを対応付けるというのは、セット内の最初の Discord メッセージを最初のメッセージとし、残りを返信として一つのトピックを作成するということでしょうか?

へえ、興味深いですね。つまり、すべてのメッセージを新しいトピックにするのでしょうか?もしそうでないなら、トピックの開始者と返信をどうやって区別するのでしょうか?

これに取り組んでいただき、改めてありがとうございます。アップデートが利用可能になったら試してみるのが楽しみです。

「いいね!」 3

アカウントが一致するとは、その人が Discord の認証情報でログインし、関連するログインが存在する場合を指します。そうすれば、Discord 内のメッセージは正しく帰属付けられ、Discourse 上では正しいアバターと共に表示されます。

いいえ、それは非効率だと思います。これはカテゴリ内の単一のトピックを対象としています。

「いいね!」 3

はい、その点は理解しました。私が疑問に思っていたのは、「accounts(アカウント)」が複数形で使われている点と、変更内容が「最後の x 件のメッセージ」をインポートするという点です。もしそのメッセージが 5 人の異なる人物からのものだった場合どうなるのでしょうか?その場合、5 つの個別のメッセージ(返信)を含む単一のトピックが作成され、それぞれが(利用可能な場合)対応する Discourse アカウントに attribution されるのでしょうか?

同意します。私の予想ではそうは動かないと思っていましたが、具体的な仕組みについてはまだ不明確です。とはいえ、リリースされるまで待つのが妥当だと考えます。もしその時点でまだ疑問が残っていれば、その時に質問しようと思います。改めてありがとうございます!:slight_smile:

「いいね!」 1

これらのアップデートがリリースされました: Discord Bot Construction Kit 🤖 - #82 by merefield

「いいね!」 5