Note
このドキュメントは2026-02-27 02:57にPLaMo Translation Modelを使用して自動翻訳されました。
FEP-f228: 会話のバックフィル処理
概要
最も一般的な会話のバックフィル手法は、inReplyToプロパティで示される返信投稿と、repliesコレクションに含まれる投稿を再帰的に取得する方法に基づいています。この方法は非効率的であり、返信ツリー内のいずれかのノードがアクセス不能になると機能しなくなります。
FEP-7888: contextプロパティの本質解明では、関連するオブジェクト(会話内の投稿など)をグループ化するためにcontextプロパティを使用することが提案されています。このプロパティはコレクションを参照するように解決でき、再帰処理なしで効率的にバックフィルを行うことが可能です。
contextコレクションには主に2つの実装形態があります:投稿コレクションとアクティビティコレクションです。
要件
本文書中で使用される「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」といった用語は、RFC-2119の規定に従って解釈されるものとします。
投稿コレクション
このコレクションは[スレッド]を表し、会話所有者の視点から、会話に含まれるすべての投稿を保持します。
これはOrderedCollectionであり、アイテムの順序は時系列順となります。少なくとも最上位の投稿(トップレベルポスト)を含まなければならず、この投稿には必ずコレクションを参照するcontextプロパティが付与されていなければなりません。他の投稿にはこのプロパティがなくても構いません。
投稿にcontextプロパティが存在する場合、その値は投稿コレクションを指すコレクションとして解決されなければなりません。
このコレクションの内容は、inReplyToおよびreplies関係で定義される返信ツリーとは性質が異なります。会話所有者は特定の返信を含まない選択が可能であるためです。投稿者によって削除された返信であっても、その下位にあるサブ返信はスレッドコレクション内に残存する可能性があります。
[!NOTE] ActivityPub では、順序付きコレクションは逆時系列順に表示することが要求されています。ただし、この要件を緩和するための訂正案が提案されています。
アクティビティコレクション
このコレクションには、会話に関連するすべてのアクティビティが含まれており、具体的には以下のものが挙げられます:
Create(作成)Update(更新)Delete(削除)Like(いいね)
これもOrderedCollectionであり、アイテムの順序は時系列順となります。少なくとも最上位投稿に対するCreateアクティビティを含まなければならず、このアクティビティには必ずコレクションを参照するcontextプロパティが付与されていなければなりません。他のアクティビティにはこのプロパティがなくても構いません。
アクティビティにcontextプロパティが存在する場合、その値はアクティビティコレクションを指すコレクションとして解決されなければなりません。
会話コンテナとの互換性
Conversation Containersでは、このコレクションは会話コンテナと同一のものとみなされます。このコレクションには、その他のアクティビティに加えてAdd(追加)アクティビティも含まれることになります。
historyプロパティ
本文書で説明するコレクションは、個別に実装することが可能です。
両方を実装する場合、投稿コレクションにhistoryプロパティを追加することで、対応するアクティビティコレクションを参照できるようになります。このプロパティはFEP-bad1: オブジェクト履歴コレクションで定義されていますが、ここでの使用ケースはその提案書に記載された用途とは異なります。
contextHistoryプロパティ
contextHistoryプロパティを使用することで、投稿からアクティビティコレクションへの参照を作成することが可能です。
コレクションの読み取り処理
会話の最上位ポストが特定された後、以下のアルゴリズムに従って会話全体を取得できます:
contextHistoryプロパティが存在する場合、まずアクティビティコレクションを取得して処理を終了します。contextプロパティが存在する場合、まず投稿コレクションを取得して処理を終了します。repliesプロパティが存在する場合、返信コレクションを取得し、このステップをすべての返信に対して繰り返します。
実装状況
投稿コレクションを実装しているプラットフォーム:
アクティビティコレクションを実装しているプラットフォーム:
- Streams
- Hubzilla
参考文献
- Christine Lemmer-Webber、Jessica Tallon、Erin Shepherd、Amy Guy、Evan Prodromou、ActivityPub、2018年
- a、FEP-7888: contextプロパティの本質解明、2023年
- S. Bradner、RFCで要件レベルを示すためのキーワード使用規定、1997年
- silverpill、FEP-171b: Conversation Containers、2024年
- a、FEP-bad1: オブジェクト履歴コレクション、2023年
著作権
CC0 1.0 Universal(CC0 1.0)パブリックドメイン献呈
法律で許容される範囲において、本Fediverse Enhancement Proposalの著者らは、当該作品に関するすべての著作権および関連する権利を放棄しています。