Discourse のメールメッセージが正しくスレッド化されていません

申し訳ありませんが、以下のトーンには前もって謝罪しておきます。私は少しイライラしているので、そう聞こえます。

Michael Brown via Discourse Meta 2022年7月27日 14:06 より:

すみません、今追いついたところです。いくつか考えを述べますが、すでにいくつか対処されているものもあります…

[quote=“Cameron Simpson, post:8, topic:233499, username:cameron-simpson”]
この2番目のコミットは、私たちが目にした別の問題に対処しているようです。投稿がメールから来た場合、メールユーザーに送信されるアウトバウンドメッセージIDは、作成者のソースメッセージのメッセージIDではありません。
[/quote]

[quote=“Cameron Simpson, post:11, topic:233499, username:cameron-simpson”]
Message-IDは、メッセージの単一の永続的な識別子です。
[/quote]

ここでの難しさは、Discourseから送信されるものは、受信したものとは異なるメッセージであるということです。異なるメタデータ(この目的のためには、To/From/Reply-to/Unsubscribe/など)と異なる本文(ユーザーごとにカスタマイズされていると思いますか?メーリングリストモードではそうならないのですか?)を持っています。

メッセージとは具体的に何でしょうか?5322を絶対的なものとして扱うと:

メッセージはヘッダーフィールドで構成され、オプションでメッセージ本文が続きます。

「Message-ID:」フィールドは、特定のメッセージの特定のバージョンを参照する一意のメッセージ識別子を提供します。
[強調は私による]

「特定のバージョン」という部分が、受信したメッセージを異なるMessage-IDで再送信するのは不適切だと考えさせる理由です。ただし、Discourseを「フォーラムソフトウェア」からDiscourseを「メーリングリストソフトウェア」と見なす視点に変えれば、そうすることがある程度理にかなっているので、あなたの言いたいことは理解できます。

残念ながら、これは過度に文字通りの解釈に依存しており、おそらく存在しない文脈を読んでいるのでしょう。

_すべての_電子メールメッセージは、メールシステムがそれを処理する際にヘッダーが変更されます。そうでなくても、Received:ヘッダーが各ステップで追加され、いくつかのシステムがスパムフィルタリングの結果や署名を示すさまざまなヘッダーを追加します。これらのいずれもメッセージIDの変更を引き起こさず、実際に行うとメッセージIDは完全に機能しなくなります。

コンテンツに関しては、すでに述べたように、ほぼすべてのメーリングリストが本文にコンテンツを追加します。通常は、リスト管理ページへのリンクや購読解除リンクを含むフッターです。これら メッセージIDの変更を引き起こしません。

実際、メッセージを転送するほとんど何もメッセージIDを変更しません。それはエンドユーザーのクライアントのスレッド化と重複検出を壊すからです。

私が引用しようとしていたものを、あなたはすでに引用していますね :slight_smile:

5322はまた次のように述べています:

メッセージが「変更」される多くのインスタンスがありますが、それらの変更はメッセージの新しいインスタンスを構成するものではなく、したがってメッセージは新しいメッセージ識別子を取得しません。たとえば、メッセージがトランスポートシステムに導入されると、トレースフィールド(セクション3.6.7で説明)や再送信フィールド(セクション3.6.6で説明)などの追加のヘッダーフィールドが先頭に追加されることがよくあります。そのようなヘッダーフィールドの追加はメッセージのアイデンティティを変更しないため、元の「Message-ID:」フィールドは保持されます。すべての場合において、メッセージの「Message-ID:」フィールドが変更されるかどうかを決定するのは、メッセージに表示される(または表示されない)特定の構文的な違いではなく、メッセージの送信者が伝えたい意味(つまり、これが同じメッセージか異なるメッセージか)です。

おそらく、送信者がDiscourseが送信するときに変わるかどうか、ということになるのでしょう。

ここでは、物事を誤って読んでいると思います。強調させてください:

すべての場合において、メッセージの「Message-ID:」フィールドが変更されるかどうかを決定するのは、メッセージの送信者が伝えたい意味(つまり、これが同じメッセージか異なるメッセージか)であり、メッセージに表示される(または表示されない)特定の構文的な違いではありません。

_送信者_は作成者であり、DiscourseのようなMTAではありません。

メールでDiscourseに投稿する場合、読者にメッセージをそのまま、意味論的に伝えたいです。購読解除リンクのような追加情報は、メッセージで私が言ったことの意味論を変更しません。

それは 同じメッセージ のままです。

Resent-Message-IDとそれに関連するものを使用すべきでしょうか?

絶対に違います。それらは ユーザー がメッセージを再送信するためのものです。たとえば、メッセージを誰かに転送した場合などです。それらはメールリレー(リストやDiscourseなど)用ではありません。

[quote=“Cameron Simpson, post:8, topic:233499, username:cameron-simpson”]
ReferencesもRFC5322に現在含まれているようです。
[/quote]

それは常に存在していました。すべて822から。しかし、あなたが後で言うように、はい、更新されました。

痛い。その時点ではUSENETのみだと思っていました。訂正します。

5322は、DiscourseとGithubがそれを使用する方法についても直接述べています:

「In-Reply-To:」フィールドは、新しいメッセージが返信しているメッセージ(またはメッセージ)を識別するために使用される場合があります。一方、「References:」フィールドは、会話の「スレッド」を識別するために使用される場合があります。

おそらく少し不適切ですが、おそらく適切な「スレッド識別子」ヘッダーがないためです。しかし、この解釈はRFCの作成者が意図したものではないかもしれません…「References」はあるが「In-Reply-To」がないメッセージには対応していません。

それは私に、2つのフィールドが同じ情報​​をカバーしていることを示しています:

  • Referencesは、OPへの線形(通常)のスレッドを示します。
  • In-Reply-Toは親を示し、前のメッセージからOPまでの全体的な同じスレッドを意味します。

[quote=“Martin Brennan, post:19, topic:233499, username:martin”]
これは興味深いですね。受信者全員がユニークなMessage-IDを持つ必要があると思っていましたか?実際、受信者ごとのMessage-IDに一意性を追加するパスをたどったのはこのためだと信じています。スパムの動作を回避するために、以前の内部トピックを振り返ってみてください。おそらく、インフラチームのメンバーで、今年初めにメールで多くのテストを行っていた@supermathieがここで意見を述べることができるでしょうか?
[/quote]

このことの難しい点は、私たちは 1つの メールを送信しているのではなく、N通のメールを送信していることです。つまり、受信者ごとに1通ずつです。これにより、個別のメタデータ(購読解除など)が正しくなります。

これは難しくありません。メッセージの意味は同じであり、カスタマイズはマイナーで意味論的に無関係です。それらは新しいまたは異なるメッセージIDを 正当化しません

そしてはい、スパム判定がMessage-IDに結び付けられるという強い兆候をテスト中に見ました。後で(同じユーザー または 異なるユーザー)再度見られた場合、スパムとしてマークされる可能性がはるかに高くなります。

これらのインスタンスをいくつか示してもらえますか?メッセージIDはエンドユーザー側での重複排除を可能にするからです。そして、多くの「アンチスパム」対策は誤ったゴミであることを覚えておいてください。壊れたスパム誤フィルタリングのために却下されたものの数は非常に多いです…壊れたメールを修正するためにメールを壊すのは悪い選択です。

今日まで、私はGmailアドレスを持つ人をCCしません。なぜなら、Gmailのスパムフィルタリングは私を知っていて、ものを床に落とすからです。リストにのみ送信すると、それらは届きます。GmailアドレスをCCすると、(a)スパムとしてマークされ、(b)その後、メーリングリストメッセージもスパムとしてマークされます(同じメッセージID!)。エンドユーザーは私のメッセージを見ません。このロジックは完全に誤っていて修復不可能です。

[quote=“Cameron Simpson, post:22, topic:233499, username:cameron-simpson”]
したがって、受信者固有の購読解除リンクを追加して、元のメッセージIDを保持することに完全に満足しています。利点は、各メッセージの コピー に個別のメッセージIDを与えた場合の、スレッド化の損失を はるかに 上回ります。
[/quote]

ここでの利点は、正直に言うと、一部のメールクライアントでメールを正しくスレッド化することに完全に焦点を当てており、配信可能性を犠牲にしています。

ため息。すべての メールクライアントに対して。そして、Pythonランドの多くの人々がDiscourseに行かないと言っている 大きな理由 は、メール側のスレッド化が壊れていることです。多くの 人々はフォーラムを使用しません。なぜなら、各フォーラムは 訪問 する必要があるからです。メールは彼らに届き、 彼らの 好みのリーダーと 彼らの 好みのエディタを使用できます。そして、スレッド化により、人々は議論の流れを明確に見ることができます。それが機能するとき。

現在の topic/#{topic_id}/#{post_id}.s#{sender_user_id}r#{receiver_user_id} は、少なくとも メールボックス内のユーザー にとって一貫性があります。仮定

私の 最大の懸念は配信可能性です。主要プロバイダーからの可視性がゼロの場合、メールを配信するのはすでに十分に困難です。

証拠を見たいです。メーリングリストは世界中でこれを正しく行っています。Discourseは間違いなく、客観的にこれを壊しています。私はそれを修正しようとしています。

ここで2つの基本的な問題を繰り返します:

  • OPのIn-Reply-ToReferencesは、架空の「プリOP」の「トピック」メッセージIDを引用しているため、メールユーザーは開始メッセージ(OP)とのスレッドを持っていません。OPを含む すべて がフォローアップのように見えます。
  • Discourse経由で受信したメールと、たとえばCC経由で直接受信したメールは、意味論的には同じメッセージであるにもかかわらず、メッセージIDが異なります。これはスレッド化と重複排除を壊します。

しかし、Discourseがメーリングリストモードでメーリングリストソフトウェアのように動作することには強い議論があると思います。@martin、メーリングリストモードではメッセージ本文をカスタマイズしないと思いますか?メッセージIDの保持と再利用について、より厳格なアプローチを取ることは理にかなっていると思いますか?

Pythonランドには、「メーリングリストモード」が多すぎる火事のホースだと感じた人々がいます。彼らはターゲットを絞ったトピックのメールを受け取りたいのですが、すべてではありません。メッセージIDの処理は、すべての メール側で同じであるべきです。

私はdiscuss.python.orgの「メーリングリストモード」ユーザーです。しかし、ここでは(discourse.org)それを有効にして、 すぐに無効にしました。ここではターゲットモードが必要です。

「いいね!」 4

Michael Brown via Discourse Meta より 2022年7月27日 22:37:

ああ!すでに次のようにしていると思っていました。 topic/#{topic_id}/#{post_id}.s#{sender_user_id}r#{receiver_user_id}

{receiver_user_id} は、同じソース投稿に対して、エンドユーザーごとに個別のメッセージ ID になります。これは、エンドユーザーが Discourse の外部で通信したり、Discourse 経由ではないコピーを取得したりすると問題になります。

メールの一意性と配信可能性の懸念とメーリングリストモードの懸念のバランスを取るために、メーリングリストモードが無効の場合は(2)、メーリングリストモードが有効な場合は(3)を採用する傾向があります。

そして、最近の投稿で述べたように、メーリングリストモードは Discourse のメール受信の 1 つの形式しかカバーしていません。メール受信者がメーリングリストモードであるか、単に一部のトピック/タグのメールモードであるかに関わらず、すべての懸念事項が適用されます。

同様に、References ヘッダーについても、トピックの投稿 #1 については存在しないようにしたいと考えています。

In-Reply-To も同様です。どちらも存在すべきではありません。なぜなら、存在するためには架空の OP ごとのメッセージを参照する必要があるからです。

そして、トピックを参照するようにします(したがって topic/#{topic_id})、および返信している投稿(もしあれば)を参照するようにします。

メールとして送信された「トピック」メッセージ ID が存在しない限り、「トピック」メッセージ ID を参照することはできません。その方法で行きたい場合は、OP のメッセージ ID を ...../1 の代わりに「トピック」メッセージ ID として特別処理します。

「いいね!」 3

これは「prior-to-OP」であるべきです。キャメロン・シンプソンさん、申し訳ありません。

おっしゃる通り、これがまさに私たちを悩ませている問題なのです。

これは変更されるべきだと同意します。OPのmessage-idは(メールで受信したものがなければ)(簡略化して) topic/1 となり、別のメッセージを参照すべきではありません。

message IDは、メールとしてではなく、Discourseの投稿としてのみ存在する場合でも変更されません。

さらにメッセージはそれを参照できます。

なぜメールが存在する必要があるのでしょうか?意味論的には、投稿のみが存在する場合でも基準を満たします。応答しているメッセージは存在しますが、その人のメールフォルダにはありません。私たちは、メッセージが重要であり、それが投稿本文であろうとメール本文であろうと関係ない、という結論に至りました。したがって、topic/#{topic_id}/1@site は、メールメッセージ内にあるかどうかにかかわらず、その投稿を参照する一意のメッセージIDとなります。

受信トレイにないメールを参照するメールへの返信を受け取るのと何ら変わりありません。それでも返信なので、Referencesは正当かつ正しいです。

根本的にはあなたに同意します。純粋主義者の私としては、これを正しくしたいのです。しかし、メールを人々の受信トレイに届けるという実用性がこれにつながりました。悪く言えば、多くの人がGmailを使用しており、そのフィルタを訓練することもなく、適切に使用せず、「購読解除」の代わりにスパムとして報告しています[^1]。

[^1]フィードバックループを実装しているにもかかわらず、Gmailがこれを私たちに報告することはありません。

同意します。私たちは少し文字通りに解釈しすぎたと思います。

メッセージ識別子は、特定のメッセージのインスタンスに正確に対応します。

しばらく考えてみた結果、以前の状態に戻すべき(ランダム化を削除する)であり、投稿ごとに単一のmessage-idを固定すべきだと思います。それは次のようになります。

  • 受信メールからのmessage_id || topic/#{topic_id}/#{post_num}@site (OPのpost_numは1)

そして、メールを送信するたびに、OPまで遡ってReferencesを追加し、適切な安定した投稿メッセージID(またはトピックへの返信の場合はOP)にIn-Reply-Toを設定するのが正しいと思います。なぜなら、メッセージは投稿だからです。しかし、OPのこれらのフィールドは空白であるべきです。

「いいね!」 5

@supermathie および @cameron-simpson、ご回答ありがとうございます。合意に至ったと確信しています。TODOを1つの投稿にまとめ、できるだけ早く作業を開始できることを願っています。

  1. 生成される Message-ID の形式を、常に \u003cdiscourse/post/:post_id@:hostname\u003e に変更します。これは十分に一意であり、基本的に以前のものに戻すことになります。OPを参照する場合は、単なるトピックIDではなく、最初の投稿IDを使用します。
  2. 投稿に関連付けられた IncomingEmail レコードがある場合、メール送信時には常にその Message-ID を使用します。それ以外の場合は、上記形式を使用して生成します。
  3. トピックのOPのメール送信時には References を使用しません。スレッドの最初のメールであるため、Reference するものがまだありません。
  4. PostReply レコードに基づいて、正しい In-Reply-To および References ヘッダーが生成されることを確認します。

これにより、すでに送信されたメールのスレッド化が少し曖昧な状態になる可能性がありますが、移行期間中は移行元の形式もサポートできるように最善を尽くします。ご理解いただきありがとうございます!

「いいね!」 3

明確にしておきたいのですが…これは、サーバーの hostname ではなく、サイトの URL ということでしょうか?もし hostname であれば、3つの異なるホストが同じサイトを提供している場合、安定性が失われます。

「いいね!」 1

すみません、サイトのドメイン、つまり Email::Sender.host_for(Discourse.base_url) から取得される meta.discourse.org のようなものを意味していました。これはすでに使用しているものです。

「いいね!」 2

良い指摘ですね。移動のことは考えていませんでした。:post_id は投稿の ID (post.id) ですか、それとも (トピック内の) 番号ですか?

もし投稿 ID であれば、\u003cpost/:post_id@:hostname\u003e を使用して簡略化できます。これは決して変更されないため、オーバーライドされない限り Message-ID を保存する必要はありません。

もしそうでない場合は… ここで投稿 ID を使用しても良いのではないでしょうか?この部分が長くなる必要はありません。一意であれば良いのです。

「いいね!」 2

実際のIDであり、投稿番号ではありません。

それは良い点ですね。\u003cpost/:post_id@:hostname\u003e で問題なく動作し、追加の列の必要性がなくなります。Discourse 固有のものにするために、先頭に discourse を追加することもできます。例えば \u003cdiscourse/post/543563@meta.discourse.org\u003e のように(ホスト名に Discourse の言及がないサイトが多いことを考慮して)。これは些細なことですが。

考えを巡らせています。問題が発生する可能性のある方法を推測します。投稿を別のトピックに移動してから、メール経由でその投稿に返信した場合、返信は元のトピックではなく新しいトピックに届く可能性があります。それは問題ないでしょうか?もう一つのリスクは、投稿がプライベートカテゴリに移動された場合ですが、これはすでに同じリスクがあり、対処していると思います。

独り言ですが、問題ないはずです。変更をテストする際にこれらの点をカバーします :+1:

「いいね!」 2

トピックIDを含めることについての議論は、投稿をトピックから別のトピックに分割した場合に、スレッディングを意図的に壊すことができるというものです。

私はどちらとも言えません。どちらでも構いません。しかし、それが意図するところです。

「いいね!」 1

投稿IDのみを使用する利点は、より静的であることです。これは、投稿を別のトピックに移動しても、Message-ID の投稿IDは同じですが、トピックは同じではなくなるため、望ましいことです。

もし投稿を移動して新しいトピックからメールを送信した場合、References および In-Reply-To ヘッダーのチェーンが異なるため、メールクライアントで新しいスレッドが正しく作成されると思います。いずれにせよ、このシナリオが期待どおりに機能するかどうかをテストし、確認します。さまざまなシナリオが期待どおりに機能するまで、何もコアにマージされません。

「いいね!」 1

これらの追加の議論に基づき、@cameron-simpson さん、TODO を以下のように更新しました。Discourse の編集はメールで届かないため、ここに投稿して更新をお知らせします。

  1. 生成される Message-ID の形式を、常に \u003cdiscourse/post/:post_id@:hostname\u003e に変更します。これは十分にユニークであり、実質的に以前使用していた形式に戻すことになります。OP を参照する場合、トピック ID のみの代わりに、最初の投稿 ID が使用されるようになります。
  2. 投稿に関連付けられた IncomingEmail レコードがある場合、メール送信時には常にその Message-ID を使用します。そうでない場合は、上記形式を使用して生成します。
  3. Post レコードに新しい outbound_message_id 列を追加します。これは、a) 投稿を作成している場合に受信メールの Message-ID、または b) Discourse Web UI によって作成された投稿の場合に生成するアウトバウンド Message-ID のいずれかで埋められます。
  4. トピックの OP のメール送信時には、References または In-Reply-To ヘッダーを使用しないでください。スレッドの最初のメールであるため、まだ Reference するものや返信するものがありません。
  5. PostReply レコードに基づいて、正しい In-Reply-To および References ヘッダーが生成されることを確認します。
「いいね!」 1

これは引用にも適用されますか(例:10個の異なる投稿が引用された投稿は、それらをすべて参照しますか?)

「いいね!」 1

By Sam Saffron via Discourse Meta at 29Jul2022 02:31:

Does this cover quotes as well (Eg: a post quoted 10 different other
posts, so it references them?)

In-Reply-To can only cite one antecedant, so pick one. References
can reference more than one but the RFC explicitly recommends against
this because not all client apps might expect other than a linear chain
from this post back to the OP.

I’d be ok with either for the References but would lean to the
conservative one. The easy computation is:

  • In-Reply-To: use the message-id of the first quoted message (or
    whatever single quote you pick based on some policy)
  • References: the References of the same single chosen antecedant
    post above plus the message-id of that same post

These would be stable, predictable and correct.

Cheers,
Cameron Simpson cs@cskk.id.au

「いいね!」 2

References はこのように使用することは非推奨です。

注: 一部の実装では、「References:」フィールドを解析して「会話のスレッド」を表示します。これらの実装では、各新しいメッセージが単一の親への返信であると想定しているため、「References:」フィールドをたどってそこにリストされている各メッセージの親を見つけることができます。したがって、複数の親を持つ返信の「References:」フィールドを形成しようとすることは推奨されません。その方法は、このドキュメントでは定義されていません。

「いいね!」 2

Discourse Meta の Martin Brennan より 2022年7月29日 01:57:

これらのさらなる議論に基づき、@cameron-simpson、TODO を更新しました。
Discourse の編集はメールで届かないため、更新をお知らせするためにここに投稿します。

  1. 生成される Message-ID の形式を、常に <discourse/post/:post_id@:hostname> に変更します。これは十分にユニークで、基本的に以前の形式に戻すことになります。OP を参照する場合、トピック ID のみではなく、最初の投稿 ID を使用するようになります。
  2. 投稿に関連付けられた IncomingEmail レコードがある場合、メール送信時には常にその Message-ID を使用します。そうでない場合は、上記形式を使用して生成します。
  3. トピックの OP のメール送信時には、References を使用しません。スレッドの最初のメールであるため、Reference するものがまだありません。

OP のメールでは In-Reply-To も省略することをお勧めします。

  1. PostReply レコードに基づいて、正しい In-Reply-To および References ヘッダーが生成されることを確認します。

はい。

個人的には、メール側のメッセージ ID 用の列を用意するという、さらに一歩進んだことをお勧めします。そうすれば、投稿にメッセージ ID を割り当てた後(メールからの場合はソースメールから、Web インターフェイスからの場合は生成)、コード内で現在または将来何が起こっても、その ID は安定します。つまり、IncomingEmail がなくても、メッセージ ID の生成は一度だけ行われ、再計算(それによって変更される可能性のある)されることはありません。

つまり、一度作成されたら保存して安定させるということです。

見たところ IncomingEmail 関係があります。おそらく、アウトバウンドメールメッセージの追加状態のために OutgoingEmail 関係がある(または使用できる)かもしれません。これは、投稿が初めてメールで転送されたときに作成されます。

基本的な流れは、投稿が行われたときにそれが起こることだと理解していますが、次のような将来のユーザー機能も想像できます。

  • このトピック全体のメールを転送してください。今興味があるので。
  • 投稿の編集が行われた場合、同じメッセージ ID で更新されたメッセージを送信することを検討してください。

2番目の例が思い浮かぶ理由は、報告することがもっとたくさんあるからです :slight_smile: 1つは、Discourse が投稿を簡潔に保つために、トップに投稿された返信の引用部分を削除するなどの努力をしていることです。数週間前に Python ランドで長い投稿を書いたのですが、ひどく切り取られてしまいました。フォーラムで、個人のコピーから元のテキストで編集しました。しかし、受信者から完全なものを受け取ったと言われ、Discourse が編集更新を同じ ID の置換メッセージとして送信したかどうか疑問に思いました。これは、エンドユーザーのクライアントがそれをどのように処理するかによっては、非常に便利かもしれません。

「いいね!」 1

By Martin Brennan via Discourse Meta at 29Jul2022 00:36:

  1. Add a new outbound_message_id to the Post table, so we can be
    sure the thread survives even if a post moves topics or anything like
    that, store the Message-ID here for both of the above cases.

Yes, i think this is important, however implemented (relation or column
of whatever). I think I said that in your revised TODOs.

  1. Do not use a References when sending out emails for the OP of the topic, there is nothing to Reference yet because it is the first email in the thread.
  2. Ensure that correct In-Reply-To and References headers are generated based on PostReply records and the new outbound_message_id column on the Post table.

This has the potential to leave things in a bit of a murky state thread-wise for already sent emails, but I will try my best to allow for the format we are moving away from for a changover period as well. Thanks for bearing with us!

Nothing we can do for the existing emails. Just get things well threaded
going forward!

Thanks!
Cameron Simpson cs@cskk.id.au

「いいね!」 1

EmailLog はありますが、レコードは 90 日ごとにクリーンアップされるため、これには適さないと思います。次のようにします。

「いいね!」 1

そもそも保存しないことを考えていましたが、投稿IDは変更されませんが、ホスト名は変更される可能性があります。したがって、すべてのケースで保存直後に保存する必要があります。

messageid をすべての投稿のプロパティとして、永続的に不変にしても害はないでしょう…

これはメッセージの異なるバージョンではないでしょうか?仕様によると:

「Message-ID:」フィールドは、特定のメッセージの特定のバージョンを参照する一意のメッセージ識別子を提供します。…メッセージ識別子は、特定のメッセージの正確に1つのバージョンに関連します。メッセージへの後続の改訂は、それぞれ新しいメッセージ識別子を受け取ります。

したがって、おそらく生成されるmessage-idは次のようになります:\u003cdiscourse/post/:post_id/rev/:revision_num\u003e (最初の改訂では /rev/:revision_num を省略する可能性があります)。これにより、電子メール受信者は、

「いいね!」 1

はい、そうします。編集や改訂に関する他の議論については、それはまったく別の大きな問題であり、今すぐ取り組むべきではないと思います… まずはスレッドの誤りを修正しましょう :slight_smile:

「いいね!」 1