Skip to content

Note

このドキュメントは2026-02-27 03:36PLaMo Translation Modelを使用して自動翻訳されました。

FEP-f15d: コンテキストの移動と削除機能

概要

スレッド型アプリケーションでは、キュレーション目的(誤分類の修正、スパム対策など)のために、グループ/コミュニティ間でコンテンツを効率的に移動・削除する必要性が生じることが多い。

本FEPは、解決可能なコンテキストツリー構造を拡張したものである。

要件

本文書中で使用される「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」の各用語は、[RFC-2119]で規定されている解釈に従うものとする。

前提条件

命名規則

フォーラムおよびスレッド型ディスカッションタスクフォース(ForumWG)は、スレッド型ディスカッションモデルにおける組織化されたオブジェクトを指す際に、以下の共通表記法を[識別]している[Nomenclature]。本FEPで使用される2つの用語について以下の通り説明する:

コンテキスト

返信関係によって関連付けられたオブジェクト群は「コンテキスト」と呼ばれる。この概念を表す他の表現としては「トピック」や「スレッド」が挙げられる。

オーディエンス

上記のコンテキストは、さらに「オーディエンス」としてグループ化することができる。この概念を表現する他の用語には「コミュニティ」「カテゴリ」「フォーラム」などがある。ActivityPubにおいて、オーディエンスは通常[Group Actor型][GroupActor]として実装される。

スレッド型オブジェクト全体の参照方法

ActivityPubの実装間では、スレッド型オブジェクトの集約コレクションをどのように表現するかに差異が存在する。

一部の実装では、これらのコレクションを独立した抽象概念(例:コンテキスト)として明示的に定義している。

他方、そのような区別を設けず、ルートレベルのオブジェクトを介して表現する実装もある(例:リンクアグリゲータ)。

FEPの解決可能なコンテキストツリーでは、この抽象化機構が当該アクションを明確に伝達するために必須要件とされている。

詳細については[FEP 7888][7888]を参照のこと。

移動処理

パブリッシャーがあるオーディエンスから別のオーディエンスへコンテキストを移動する場合、両オーディエンスのフォロワーに対してMoveアクティビティが公開される。

{
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "https://example.social/context/123#activity/move/<timestamp>",
    "type": "Move",
    "actor": "https://example.social/uid/1",
    "to": ["https://www.w3.org/ns/activitystreams#Public"],
    "cc": [
        "https://example.social/audience/1/followers",
        "https://example.social/audience/2/followers",
    ],
    "object": "https://example.social/context/1",
    "origin": "https://example.social/audience/1",
    "target": "https://example.social/audience/2",
}

以下のプロパティについて留意事項を示す:

  • actorは当該アクションを実行するユーザーアクターであり、通常はモデレーターを指す([セキュリティ考慮事項]参照)
  • ccには発信元オーディエンスと受信先オーディエンス双方のフォロワーコレクションが含まれる
  • objectは解決可能なコンテキストそのものである
  • originは発信元オーディエンスを示す
  • targetは受信先オーディエンスを表す
  • 必要に応じて、発著者や告知者など追加の受取人を適宜指定することができる

Audienceラッパー

実装によっては、MoveアクティビティをさらにAnnounceアクティビティでラップすることが許容される(受信側は両タイプをサポートしていることが推奨される)。

削除処理

コンテキストがオーディエンスから削除されたことを通知する方法は2種類存在する:

[!NOTE] 削除削除は異なる概念である。他サーバー由来のコンテンツについては、たとえ自身が所有者でなくとも直接的な削除は不可能であるが、自身の環境からは当該コンテンツを__削除することは可能である__。

解決可能なコンテキスト形式

パブリッシャーがオーディエンスからコンテキストを削除する場合、受信先オーディエンスのフォロワーに対してRemoveアクティビティが公開される。

{
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "https://example.social/context/123#activity/remove/<timestamp>",
    "type": "Remove",
    "actor": "https://example.social/uid/1",
    "to": ["https://www.w3.org/ns/activitystreams#Public"],
    "cc": ["https://example.social/audience/1/followers"],
    "object": "https://example.social/context/1",
    "target": "https://example.social/audience/1",
}

Group federation形式

本節は非規範的事項である

実装によっては、ルートレベルオブジェクトを参照するDeleteアクティビティをfederateすることで、オブジェクトの分散型削除処理を実装することも可能である。このアクティビティは、[FEP 1b12][1b12]に従い、さらにAnnounceアクティビティでラップされる。

{
    "actor": "http://ds9.lemmy.ml/u/lemmy_alpha",
    "to": ["https://www.w3.org/ns/activitystreams#Public"],
    "object": "http://ds9.lemmy.ml/post/1",
    "cc": ["http://enterprise.lemmy.ml/c/main"],
    "audience": "http://enterprise.lemmy.ml/u/main",
    "type": "Delete",
    "id": "http://ds9.lemmy.ml/activities/delete/f2abee48-c7bb-41d5-9e27-8775ff32db12"
}

[Join Lemmy:第30節「Federation」-『投稿またはコメントの削除』][LemmyDelete]より抜粋

セキュリティ考慮事項

Same-Originチェック

[FEP fe34][OriginBasedSecurityModel]に従い、本FEPで規定するRemoveおよびMoveイベントは、アクターと対象オーディエンス(target、および適用可能な場合はorigin)が同一オリジンである場合に真正性が保証されるものとする。

モデレーターコレクションチェック

[FEP-1b12:Group federation][1b12]では、オーディエンスのattributedTo属性で参照されるOrderedCollectionを用いて、オーディエンスのモデレーターを表現する方法が規定されている[group-moderation]。

MoveまたはRemoveアクティビティのアクターが対象オーディエンスと同一オリジンでない場合、このコレクションは権限確認のためにクロスリファレンスされるべきである。

実装推奨環境

  • NodeBB(v4.7.0以降)
  • Piefed(v1.5以降)

参考文献

  • Christine Lemmer-Webber、Jessica Tallon、Erin Shepherd、Amy Guy、Evan Prodromou、[ActivityPub]、2018年
  • James M Snell、Evan Prodromou、[Activity Vocabulary](https://www.w3.org/TR/activitystreams-vocabulary)、2017年
  • a、[FEP 7888:contextプロパティの解明][7888]、2023年
  • Julian Lam、[ForumWG命名規則][Nomenclature]、2024年
  • Felix Ableitner、[FEP-1b12:Group federation][1b12]、2022年
  • Join Lemmy:第30節「Federation」-『投稿またはコメントの削除』[LemmyDelete]
  • silverpill、[FEP fe34][OriginBasedSecurityModel]: Origin-based security model

著作権

CC0 1.0 Universal(CC0 1.0)パブリックドメイン献呈

法律で許容される範囲において、本Fediverse Enhancement Proposalの著者らは、当該著作物に関するすべての著作権および関連または隣接する権利を放棄している。