Discourse の開発を始めたいのですが、どこから始めるべきでしょうか?

数年前、PHP と MySQL を使用したレガシーなフォーラムプラットフォームのプラグイン開発を行っていました。いくつかの機能を実装できたことに非常に満足しており、コミュニティのメンバーも同様に喜んでくれました。

Ruby on Rails はこれまで使ったことがありません(Discourse にデータを移行するためのインポートスクリプトを苦労して実行した経験はありますが😂)。

ここにあるドキュメントや開発ガイドに進む前に、まず基礎を学ぶ必要があると考えています。

まず Ruby on Rails を学ぶべきでしょうか?

Ember.js も学ぶ必要がありますか?正直なところ、Ember.js にも触れたことがありませんが、Discourse のコア部分で利用されていると理解しています。

Postgres についても初心者です。

アドバイスや次のステップの提案があれば、ぜひ教えていただければ幸いです。

素晴らしいですね!

これに関連する役立つ投稿がいくつかあります。私の投稿へのリンクも貼っておきます(それらの投稿を参照しています)。How can I make my own Discourse plugins? - #2 by merefield

(個人的には、現在は VSCode をお勧めします)

一つの入り口として、既存のプラグインのサポートに貢献し、プルリクエスト(PR)を送る方法があります(私もそれで始めました)。最初は小さな問題から始めて、徐々に大きな課題の解決や新機能の追加に進んでいきましょう。

もし、比較的シンプルなプラグインやテーマコンポーネントのアイデアがあるなら、そこから始めるのが良いでしょう。個人的な創造的な目標は、非常にモチベーションを高めてくれます。

最初は欲張らず、シンプルに始めましょう。最も避けたいのはやる気を失うことです。特に根本的な変更を加えたい場合、これは難しい作業になり得ます。

根気強く取り組みましょう。EmberJS は理解するのが特に難しい技術です。

私のアドバイスとしては、まずはテーマコンポーネントから始め、少し後にプラグインに進むのが良いでしょう。

常に、既存のプラグインやテーマコンポーネントの膨大なライブラリを参考にしてください。誰かが以前に似た問題を解決していないでしょうか?彼らはどのように解決したのでしょうか?コードを確認してみましょう。Discourse コアが定めた標準を常に適用してください。Discourse のソースコードも貴重なリソースです。

おそらく最良のアドバイスは、「とにかく始めてみよう!」ということです。学ぶ唯一の方法は、実際に手を動かして泥臭く取り組むことです。間違いを恐れないでください。また、挫折感に負けて立ち止まることも決してしないでください。粘り強く続けると、いずれうまくいきます。できる限り自分で解決策を見つけようと努めつつ、どうしても必要な場合は他人に助けを求めましょう。

私はRailsを学ぶのに長い時間を費やしました。しかし、EmberやJavaScriptの側で多くのことが起こります。私のアドバイスは、テーマコンポーネントでできることから始めることです。それらははるかに安全で使いやすく、非常に多くのことができます。

Ember.js の学習を始めるのに最適な方法はありますか?おすすめのオンラインコースはありますか?

独学で手を動かすよりも、構造化されたコースで学ぶ方が私には合っています。そうすることで基礎を学ぶことが強制されるからです。

Ember.js Guides - Guides and Tutorials - Ember Guides をお読みください

また、https://guides.rubyonrails.org/ もご参照ください

最近これに取り組み始めましたが、Jay @pfaffman に同意します。

始めるのに最適な場所は、theme components(テーマコンポーネント)です。

いくつかの理由を挙げます(他の人がより良い理由を挙げられるかもしれませんが、私なりの理由を思い付きで):

  • theme componentsは開発が容易で、高度なウェブ開発環境がなくても変更をすぐに確認できます。

  • theme componentsは強力であり、javascriptライブラリを簡単に追加するなど、多くのことができます。

  • theme componentsは独自のJavaScriptコードやセレクタを追加しやすく、インスペクタを使ってセレクタを作成したり、div(お気に入りのdiv)などの要素を挿入したりするのが簡単です。

theme componentsに慣れ、楽しんで使えるようになったら、プラグイン開発にもっと深く入り込んでみましょう。

Discourse開発のスキルを向上させ、基礎を学ぶための論理的なステップです。

すみません、こちらを見落としていたようです。大きく拡張されており、取り組むのに十分な資料があります:Developing Discourse Themes & Theme Components

このトピックですでに素晴らしいものが挙げられていますが、私からの最良の推奨は、Discourse · GitHub にある多数のテーマやコンポーネントのコードを読み込み、何が起こっているかを理解することです。それらをクローンして壊し、何が起きているのかを突き止めてください。私も、そこで小さなプロジェクトに取り組むことと並行して、主にそのようにして学びました。

始めるには、GitHub - literatecomputing/feverbee-engagement-theme: Theme component based on expert.feverbee.com · GitHub を見て、そこに含まれていない余計なものをすべて削除して整理することをお勧めします。その後、PR を提出してください。:slight_smile:

@pfaffman さん、何をしているか分かりましたよ :grin: その上で、今すぐ私のコードを整理してほしくはないと思いますが、PR を提出するのが素晴らしい出発点であることには同意します。まず、このスレッドで既に共有されているリソースをいくつか詳しく調べる必要があります。

今の最大の課題は、私の LAMP 背景から、Discourse スタックと呼ばれるものへの移行です。LNPR(Linux、Nginx、Postgres、Ruby/Rails)でしょうか?ハハ。

挑戦するのは悪いことじゃないさ。:wink:

でも真剣に言おう、あのテーマはテーマで何ができるかを示すような機能をいろいろ備えている。新しいトピック一覧そのものを作れるなんて素晴らしいよ。それを整理整頓するのは(使われていないコードが山ほどあるけど、それを削除しようとすると別の箇所が壊れてしまい、結局は閉じ括弧や……何かのミスがどこにあるか特定するのをやめてそのままにしたけど)、自分自身のためだけでもかなり良い練習になると思う。私のアドバイスがあなたに役立つ可能性がどれくらいあるか判断するコンテキストとして、これは1998年頃にHTMLの学習を中断したCS(コンピュータサイエンス)の学位を持つ人間からの話だ。CSSが理論的に何ができるかは理解しているが、JavaScriptについてはまだ完全に訳がわからないままで、JavaScriptとEmberの境界がどこにあるのかも理解できていない。頻繁に「これは簡単だろう」と思って変更を試みるが、結局は世界を破壊してしまうことが多いんだ。

幸運を祈る!

私も同じくLAMP(つまりWordPress)環境出身です。この分野は難しいですが、十分な時間をかければ理解できます。