Skip to content

Note

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

FEP-4ccd: 保留中のフォロワー一覧と保留中のフォロー一覧機能

概要

本ActivityPub拡張仕様では、pendingFollowers(保留中のフォロワー)とpendingFollowing(保留中のフォロー)という2つのコレクションを定義します。これにより、ユーザーは自身に対する未承認のフォローリクエストを確認・管理することが可能になります。

背景と必要性

ActivityPubは、アクターに対してfollowers(フォロワー)とfollowing(フォロー中)プロパティを持つ有向ソーシャルグラフモデルを採用しています。関係を開始する際には、潜在的なフォロワーから対象アクターへFollowアクティビティが送信され、これに対し対象アクターはAccept(承認)またはReject(拒否)のいずれかの応答を行います。

Followアクティビティが送信されてから、その処理が完了するまでの間、当該関係は保留状態となります。この状態は現行のActivityPubデータモデルでは明示的に表現されていません。

新たに定義されたpendingFollowersコレクションを使用することで、受信したFollowアクティビティを確認し、承認または拒否することが可能になります。

同様に、pendingFollowingコレクションを用いることで、自身が発信したFollowアクティビティを再確認し、必要に応じて取り消しを行うことができます。

これらの処理には完全なアクティビティデータが必要となるため、各コレクションには単にフォロー要求を行ったアクター情報だけでなく、実際のFollowアクティビティそのものを含める必要があります。

なお、この拡張機能は主にActivityPub APIを実装するクライアントおよびサーバー向けに設計されています。特に、手動でフォロワー承認を行うタイプのアクターにとって有用です。manuallyApprovesFollowersプロパティは、ActivityPub Miscellaneous Termsで定義されており、アクターが手動でフォロワーを承認する機能を有することを示すために使用できます。

技術的背景

本拡張仕様のコンテキスト文書はhttps://purl.archive.org/socialweb/pendingに配置されています。その内容は以下の通りです:

{
  "@context": {
    "pdg": "https://purl.archive.org/socialweb/pending#",
    "pendingFollowers": {
      "@id": "pdg:pendingFollowers",
      "@type": "@id"
    },
    "pendingFollowing": {
      "@id": "pdg:pendingFollowing",
      "@type": "@id"
    },
    "pendingFollowersOf": {
      "@id": "pdg:pendingFollowersOf",
      "@type": "@id"
    },
    "pendingFollowingOf": {
      "@id": "pdg:pendingFollowingOf",
      "@type": "@id"
    }
  }
}

セマンティックバージョニングについて

互換性確保のため、本拡張仕様のコンテキスト文書にはセマンティックバージョニングに準拠したエイリアスが設定されています。

  • https://purl.archive.org/socialweb/pending/1.1.0:このバージョンは変更不可です。
  • https://purl.archive.org/socialweb/pending/1.1:バグ修正、ドキュメント更新、または軽微な仕様変更が可能ですが、新規用語の追加はできません。
  • https://purl.archive.org/socialweb/pending/1:現行サーバー間で対象アクターが同一の場合、フォローリクエスト元アクターのpendingFollowingコレクションに当該アクティビティを追加できます。また、受信したFollowアクティビティを自身のpendingFollowersコレクションに追加することも可能です。
  • https://purl.archive.org/socialweb/pending/2.0.0:他サーバーから受信した有効なFollowアクティビティについては、対象アクターのpendingFollowersコレクションに当該アクティビティを追加します。

処理要件

手動でフォロワー承認を行うタイプのアクターは、自身のアクターオブジェクト内にmanuallyApprovesFollowersプロパティを設定し、値をtrueとする必要があります。これにより、受信したフォローリクエストを確認し、個別に承認または拒否する機能を有することが明示されます。

サーバーがクライアントから有効なFollowアクティビティを受信した場合、そのアクティビティは送信元アクターのpendingFollowingコレクションに追加されるべきです。また、対象アクターが同じサーバー上に存在する場合に限り、当該Followアクティビティを被フォローアクターのpendingFollowersコレクションにも追加する必要があります。

他サーバーから受信した有効なFollowアクティビティについては、被フォローアクターのpendingFollowersコレクションに当該アクティビティを追加します。

クライアントからAcceptまたはRejectアクティビティ(objectとしてFollowアクティビティを含む)を受信した場合、送信元アクターのpendingFollowersコレクションからそのFollowアクティビティを削除します。また、対象アクターが同じサーバー上に存在する場合に限り、フォローリクエストを発信したアクターのpendingFollowingコレクションからも当該アクティビティを削除します。

他サーバーからUndoアクティビティ(objectとしてFollowアクティビティを含む)を受信した場合、送信元アクターのpendingFollowingコレクションからそのFollowアクティビティを削除します。また、被フォローアクターが同じサーバー上に存在する場合に限り、対象アクターのpendingFollowersコレクションからも当該アクティビティを削除します。

以下のHarel状態遷移図は、アクターA1とA2間におけるFollowアクティビティの状態遷移を示しています。各状態はどのオブジェクトがどのコレクションに属するかを示し、遷移はクライアントAPI経由およびサーバーフェデレーションプロトコルによる処理タイミングを表しています。

保留中のフォロワー・フォロー状態図

セキュリティ考慮事項

pendingFollowerspendingFollowingコレクションは、アクターのソーシャルネットワークに関する機密情報を含んでいます。プライバシー保護の観点から、一部のサービスやアクターはfollowingまたはfollowersコレクションを共有しない場合があります。これらのコレクションが適切に保護されていない場合、関係が成立する前にアクターのソーシャルコネクションに関する情報を推測される可能性があります。

また、一部のサービスではFollowアクティビティに対するRejectレスポンスを対象アクターに転送しないケースがあります。嫌がらせや迷惑行為を行うアクターは、pendingFollowersコレクションを取得することで自身のフォローリクエストが拒否されたかどうかを確認しようとする場合があります。

これらの理由から、公開者は認証されていないユーザーに対してpendingFollowersおよびpendingFollowingコレクションを表示しないよう配慮すべきです。さらに、認証済みであっても対象アクター本人以外にはこれらのコレクションを閲覧可能にしないことが望ましいです。

実装例

  • onepage.pubpendingFollowerspendingFollowingコレクションを実装したシンプルなActivityPubサーバーです。
  • ap:コマンドラインインターフェースを備えたActivityPubクライアントです。pendingFollowersおよびpendingFollowingコレクションの一覧表示や管理を行うためのコマンドを備えています。

参考文献

著作権

本Fediverse Enhancement Proposalの著者らは、法律で認められる範囲内において、当該作品に関するすべての著作権および関連権利を放棄し、パブリックドメインに提供しています。