Discourseのカスタマイズはどのくらいまで可能?

Discourseのカスタマイズがどこまで可能か、UIだけでなく、レイアウトの変更や新機能の追加など、Discourseのアップデート時にそれらが壊れない(あるいは少なくとも壊れにくい)方法を知りたいです。

Discourseのあらゆる点が好きですが、いずれ実装または変更したいと知っているいくつかの要素があります。Discourse公式のモバイルアプリに依存するのではなく、コミュニティに特化した、より独自性の高いモバイルアプリを自分で作成したいと考えています。

また、古いモバイル電話でTimes New Romanの無様なテキストと、非常に簡素化されたDiscourseが表示されるのも気に入りません。時代は進歩していくことは理解していますが、サポート終了を示すために本当にそんな無様な見た目に戻す必要があったのか疑問です。さらに、コミュニティにとって重要だった機能が恐らくもう存在しないため、アクセスが制限されてしまうことについても問題視しています。

UIだけでなく、他の要素もカスタマイズし、新機能を実装したり、レイアウトを変えたりしたいです。つまり、Discourseのデータベースと「骨格」の大部分を活用しつつ、単に「色が変わった別のDiscourseフォーラム」のような感覚ではなく、できるだけ自分たちのスタイルに近づけたいのです。

コンポーネントやプラグインなどを通じて多くのカスタマイズが可能だとは推測していますが、限界はどのくらいあるのでしょうか? 特にDiscourseのアップデート時に機能が壊れてしまうことについてはどうでしょうか?

今まさにこれをやっていますが、15年間WordPressの背景を持つ私にとっては、まるで時代錯誤のようですね。しかし、恐ろしいChatGPTの助けを借りていくつかのことを学び始めており、GitHubを理解し、ファイルを編集し、CSSなどを使用できる場合、それほど難しくないことに気づいています。

はい、Git/GitHub を使って作業しており、仕組みについて「基本的な」理解を持っています(最近、他のプロジェクトを並行して構築しているため、さらに学習を深めています)。多くのことが可能だと推測しますが、常に以下のような課題があります:Discourse のバージョン XYZ に対して今日構築したものが、明日のアップデートで壊れてしまう可能性があります。これは、特に何が壊れたのか気づいていない場合、非常に残念なことです。

したがって、カスタマイズを最小限に抑える方がより安全に感じられますが、ブランド感としては劣ります。どちらがより価値があるかを判断する問題だと思われます。

ChatGPT を使っていますか、それとも Codex を使っていますか?私は GitHub Codespaces で Claude Code CLI を使っており、非常にスムーズです。また、Claude にどのような行動をさせたいか、どのように振る舞ってほしいかなどを CLAUDE.md ファイルにすべて記述しているため、幻覚(ハルシネーション)を起こすことは非常に稀です。少なくとも、以前ほどひどくはありません。このファイルは、Claude にさせたい/させたくない新しい機能を見つけるにつれて、次第に大きくなっています。

テーマでCSSを1行追加すれば、それは変えられます。

既存の拡張フックを使えば、かなり自由にカスタマイズできます。

Discourse customers | Discourse - Civilized Discussionhttps://discover.discourse.com/ にあるサイト、例えば Epic Developer Community Forumshttps://community.robotime.com/ を見たことはありますか?

正直に言いますが、Claudeは画像生成ができず、OPEN Routerとうまく連携しなかったため、削除しました。サブスクリプションが多数あったので、GPT以外をすべて解約しました。

以前は問題なく動作していたプラットフォームが、突然動かなくなったり、少なくとも以前のような挙動をしなくなったりする全体的な変化の一部として、それを単に指摘しただけです。そのため、Discourseを利用しているフォーラムへのアクセスを避けるようになりました。いずれはスマホを機種変更する必要があることは承知していますが、今の機種はまだ使えるので…

このフォーラムは見た目もなかなか良いですね:https://forums.unrealengine.com/
今後の参考にメモしました。ありがとうございます!
他にも興味深いものがありますが、どう見てもDiscourseだと気づいてしまいます。構築する代わりに考えすぎてはいますが、実際にはどれほどカスタマイズできるのか気になります。前述の通り、UIに関しては特に多くのことが可能だと考えています。Discourseがアップデートされた際、機能面に問題が生じないか気になります。いくつかテストを行ってみる必要があります。

まさに自己実現的な予言ですね :slight_smile:

私は画像をほとんど必要としないので、それは私にとって問題になったことはありません。そして、稀に必要な時でも、私はChatGPTに頼っていました。しかし、50%の確率で、私が何を尋ねるかに応じて、私の思い描いているものに近い結果が得られないことが多く、結局Photoshopで自分で作成することになります。

ですが、Claude Codeは私にとって大きな助けになっています。非常に高速です。

ChatGPTがあなたの仕事に適しているなら、それは間違いなく正しいツールです。動作すれば、それが一番重要なのです。

Discourse のデザインが悪いと言っているわけではなく、単に自分のスタイルをもっと反映させたいだけです。構造の取り方や、特定の機能の実装・表示方法なども含めてです。

もう一度言いますが、考えすぎなのかもしれません。とにかくいくつかテストを行って、どのように進むかを確認する必要があります。

多くのテーマなどにおいて、過去に留まっているように思えます。実際、以前この件について不満を吐露したことがあります。

もう一つの問題は、フォーラムは本質的にタイトルの一覧であるため、外見が似通ってしまうという点です。Facebook、Reddit、X(旧Twitter)を見てみると、すべてのトピックカードはある程度似たような見た目になっています。

私は専門家ではありませんが、私の見解では、Discourseは非常にカスタマイズ可能です。それだけでなく、開発者は常に新しい、そしてより簡単なカスタマイズ方法を次々と生み出しています。また、Discourseは、ユーザーが行ったカスタマイズに影響を及ぼす変更が行われる際には、注意を促すように努めているようです。

色が違うだけのまた別のDiscourseフォーラム」とは全く異なるものを作り出す可能性は確かにあり、公式開発チームが提供するテーマコンポーネントやプラグインだけでどれほど変更できるかには実際に驚かされます。また、サポートスタッフがおっしゃる通り、インターフェースのあらゆる要素はAPIを通じてアクセス可能であるため、Discourseの「データベースと大部分の骨格」を利用したい場合、それを妨げるものは何もありません。

これらのことを踏まえると… 他のスレッドで言及されていたコミュニティの構築や共有、そして人々に共有の場を提供するというあなたのアイデアは素晴らしいと思います。それは私が現在試みていることの本質です。また、あなたはミュージシャンであり、おそらくソフトウェア開発も楽しんでいる方だと伺いました。完全に bespoke(特注)のウェブサイトを作ってしまうと、そのメンテナンス責任があなたにのしかかります。Discourse関連のものだけでなく、他の部分も壊れる可能性があり、それを直すために自分の時間を割くか、誰かに依頼して直す必要があります。

新しいトピックをいくつか作成してください。各トピックでは、一つのアイデアだけを取り上げてください。フォーラムにあなたの望みを伝え、そのアイデアを実現する方法についての提案を求めてください。機能ごとに細かく分けると、人々が解決策を brainstorming(発想)しやすくなりますし、あなた自身にとってもより構造化されたアプローチが可能になり、目標をより明確に定義するのに役立ちます。

ask.discourse.org をチェックしてみてください。

これは Discourse 専用に構築された AI です。

そして… 侮辱されたと思わないでください。これはあなたの時間の価値について考えるためのアドバイスとして受け取ってください。プロの開発者を雇うことを検討してみてください。このフォーラムにはそのような開発者が何人かおり、マーケットプレイスというカテゴリは、まさにそのような問い合わせのために設けられており、そこであなたのアイデアを提供し、開発者が作業の請負入札を行うことができます。

はい、デジタル関連の事柄については、何らかの方法で何でも可能だとは常に言っています。だから、この件について少し調べて、一歩ずつ進めていく必要があるのでしょう。次のステップは、私の Discourse を復活させることだと思います。一度インストールしたことがありましたが、本格的に集中できるようになるまで撤去することにしました。

うん、2001年頃からです。ただし最近、特に Claude Code のおかげで、自分用の便利なツールを作成できるようになり、最終的には他の人々にも公開することができました。

開発者になるつもりもなく、あまりお金もかけませんが、確かに楽しい趣味です。常にクリエイティブでいることは非常に消耗します。ソフトウェアのように二値的なものがあるのは、とても報われる経験です。

全く侮辱だとは思いません。どんなフィードバックも貴重です。そして、自分の時間の価値をより多く分析し、特定のことに時間を費やすのではなく、他の人に任せるべきか、時間や労力に関わらず実際に自分が楽しんでいることは何かを判断しています。そのため、新しいツールの開発は私にとって非常に報われる経験です。実際、物事が現実になるのを見るのが楽しい時間なので、決して無駄な時間ではありません。

はい、インターネットは非常に「画一的」になりました。その主な理由は、スタイルよりも機能性が優先されているからだと考えます。そこに問題があるわけではありませんが、独自性を持つことも重要です。

また、他のトピックについても同意します。Discourse には成長する余地がたくさんあります。Discourse が気に入っているのは、実際に成長しているプラットフォームのように感じられる点です。チームがここで交流し、ロードマップを共有するなど、透明性が高いからです。何が起こっているのか誰も知らない無機質なプラットフォームとは異なります。私はそれをここでとても大切に思っています。

100%、私がこれまで使った中で最も優れたバックエンドプラットフォームの一つです。

制限はほとんどありません。主な制限は、テンプレートをオーバーライドできないことと、既存のビューに新しい要素を追加するには Plugin Outlets を使用しなければならないことです。ただし、それと CSS を組み合わせれば、通常は目的が達成できます。

新しいルートを作成し、そのレイアウトを完全に制御することも可能です。

バックエンドはより柔軟です。

したがって、できるだけ公式 API を使用し、再構築の範囲を狭めることができますが、メンテナンス作業を完全に排除することはできません。

メンテナンスが不要だと期待するのは不合理です……私の GitHub アカウントやいくつかの人気拡張機能を見れば、「COMPATIBILITY: 」というコミットが多数あることがわかります :slight_smile:

アップグレードをテストし、カスタマイズが壊れていないか確認できるステージングサーバーを維持しておくのが良いプラクティスです。サイトのカスタマイズ度合いが高ければ高いほど、何らかの形のステージングインスタンスの必要性は増します——ただし、開発インスタンスの使用も役立ちます。

カスタマイズの「安全性」を具体的に知らずに判断するのは難しいですが、一般的にカスタマイズが複雑になればなるほど、メンテナンスの手間は増えます。

プラグインの出力先にカスタムコンポーネントを追加したり、Discourseのコンポーネントを完全に置き換えたりする場合…一般的には、これらは拡張ポイントにカスタムコードを差し込む形になるため、動作し続けるはずです(多くの人がこれらのポイントを利用しているため、私たちはこれらを維持するよう努めています)。

CSSでは、可能であれば既存の--variablesを活用して変更を行うべきです。なぜなら、コンテンツ構造を変更しなければならない場合もありますが、その際でも同じ変数を再利用できるからです。

したがって、この方法はより安全です:

.d-header {
   --title-color--header: red;
}

一方、この方法は安全性が低いです:

.d-header {
    .extra-info-wrapper .topic-link {
      color: red;
    }
}

私たちは、テンプレートのオーバーライドやmodifyClassの使用など、壊れやすかった従来のカスタマイズ方法からプラットフォームを遠ざけるよう努めてきました。また、より安定したAPIの開発も進めていますが、それでもいずれは少なからずメンテナンスが必要になるでしょう。

フィードバックありがとうございます。
ステージングサーバーについて、しっかり考え直す必要がありますね。確かにそれは良いアプローチです。

現時点では、まずDiscourseを再インストールし、コンテンツを作成し、時期が熟した時点で、大きな変更を必要とせず、コンポーネントで実行できる簡単な部分から始めるのが第一歩だと考えています。それでどれくらい進められるかを見てから、ステージングサーバーについて考え始めようと思います。

ありがとうございます!

変数に関するそのヒントは本当に役立ちます。
おそらく、一度しっかり時間を取って、変更・実装したい項目のリストを作り、コンポーネントで変更できるものから始めて、一つずつ進めていけば、どこまでできるか見えてくるのでしょう。

その通りです。

現在、Discourseのシステム的な安定化作業を行っています。

そして、いくつかのテーマコンポーネントを使用し、一部は自分で作成したテーマコンポーネントを使用してカスタマイズを行い、地域ユーザーの文化的習慣に適合させることを目指しています。