Skip to content

Note

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

Warning

このドキュメントは原文と大きく乖離しているか、内容が原文から欠落している可能性があるため、原文を読むことを推奨します。

FEP-1580: migrationコレクションによるactorオブジェクトの移動

オブジェクトの移行処理は、数万件に及ぶ大量のデータを数百~数千のインスタンス間で転送する極めてリソース消費の大きい操作です。この仕様では、大規模な変更を段階的かつ部分的に実行できるようにすることで、極端なリソース負荷を軽減することを目的としています。30,000件ものアクティビティを一気に送信するのではなく、サードパーティ・インスタンスは小規模なMoveアクティビティのコレクション(URIペアの集合)を処理することで、主要な変更点を効率的に適用できます。その後、数日~数週間かけて残りの移行作業を徐々に完了させることが可能です。オブジェクト移行の必要性は極めて高いため、初期展開時に現在までの全移行を処理する期間を除き、アカウント移行は比較的稀なケースとなります(例:Mastodonでは30日間のクールダウン期間が設定されています)。

互換性

オブジェクト移行をサポートするインスタンスは、サポートしないインスタンスとも相互運用可能でなければなりません。これは、現行のオブジェクトIDから事前のオブジェクトIDへのマッピングを保持し、非移行型インスタンスからのアクティビティを処理する際に移行済みオブジェクトへの参照を適切に変換することで実現可能です。新しい動作を実装する際にはネットワーク状態に一定の不整合が生じることは避けられませんが、この仕様ではネットワーク状態に新たな難解な複雑さをもたらすことなく、既存のアカウントMove仕様で既に規定されている要件(Moveアクティビティを第三者インスタンスへブロードキャストする前に、公開リンクによる宣言を行うこと)を変更するものではありません。

パフォーマンス

数万件に及ぶオブジェクトを数百~数千のインスタンス間で移行することは、本質的にコストの高い操作です。この戦略では、大規模な変更を段階的かつ部分的に実行可能にすることで、極端なリソース要件を緩和しています。サードパーティ・インスタンスは、大量のアクティビティを一気に送信するのではなく、小規模なMoveアクティビティのコレクション(URIペアの集合)を処理することで、主要な変更点を効率的に適用できます。その後、数日~数週間かけて残りの移行作業を徐々に完了させることが可能です。オブジェクト移行の必要性は極めて高いため、初期展開時に現在までの全移行を処理する期間を除き、アカウント移行は比較的稀なケースとなります(例:Mastodonでは30日間のクールダウン期間が設定されています)。

セキュリティ

セキュアなオブジェクト移行という重責は、既存のアカウントMove仕様によって既に適切に処理されています。この仕様では、あるアクターが別のアクターになったことを信頼できる方法で宣言する仕組みが確立されており、本仕様が新たにアカウント乗っ取りなどのリスクを導入することはありません。アカウントMoveアクティビティは常に発信元アクターによる整合性証明によって検証される必要があり、したがってアカウント乗っ取りや不正な属性付与を試みる行為は拒否されなければなりません。ただし、秘密鍵の強制的な有効期限設定やローテーションメカニズムがないため、侵害された秘密鍵を用いて敵対者がアカウント移行を開始する可能性が残されています。このため、エクスポート済みコレクションからの移行セクションについては、より正式な仕様策定を前提とした任意の推奨事項として残しておきます。

外部バックアップからオブジェクトをインポートする場合、オブジェクト改ざんのリスクが生じます。有効なアカウントMoveと適切な署名・検証が行われていることを前提とすれば、これは実際には問題とはなりません。なぜなら、エクスポートされたデータをアップロードし、著者がすべての投稿を修正したり新規投稿を追加したりすることは、実質的に過去日付で一括投稿を行う行為と同等だからです。本仕様では、対象アクターが所有していないオブジェクトを改変する手段は提供しておらず、対象アクターは自分のオブジェクトに対して自由に操作可能です。サードパーティ・インスタンスは、ユーザーが関与したオブジェクトへの変更について、更新時と同様に第三者アカウントへ通知する責任を負います。

敵対的なソースインスタンスが提供するコレクションからオブジェクトをインジェストすることは、より重大な問題を引き起こします。実装にあたっては、コレクションのインジェスト中にオブジェクトに加えられた変更点を表示し、対象アクターがそれらを拒否できるインターフェースを検討する必要があります。また、過去にエクスポートされたオブジェクトデータをアップロードすることで、ソースインスタンスで提供されるバージョンよりも優先されるべきです。これは、実装過程で得られた経験に基づいて拡張・改訂が必要となる別個の実装詳細事項です。

著者はセキュリティ専門家ではないため、本仕様およびすべての実装については独立した監査を受けるべきであることに留意してください。

プライバシー

新たなアクセス経路を確立する必要はありません。すべての操作は既存のCollectionメカニズムを利用するものであり、オブジェクトへのアクセス制御は既にサポートされている必要があります。migrationコレクションが情報漏洩を引き起こすことはありません(例:Mastodonで使用されているsnowflake IDスキームのように、単に存在を示すだけでなく追加情報を含む可能性のあるIDを参照することで非公開オブジェクトの存在を示唆するようなケース)。また、このコレクションには、発信元アクターの公開コレクションを通じて既に公に列挙可能な情報以外の情報は含まれません。

補足情報

  • fep-1580.jsonld - 実装インスタンス上のアクターが@contextステートメントで含めるべきJSON-LDコンテキスト文書
  • migration.yaml - ActivityPub/ActivityStreams拡張機能を具体的な形式で記述したlinkmlスキーマ
  • migration.owl.ttl - LinkMLスキーマから生成されたOWLスキーマ

謝辞

本FEPに対してフィードバックや提言をいただいた方々に感謝申し上げます:

(ハンドル名のアルファベット順。貢献された方はPRを提出してご自身を追加してください) - ansuz - 暗号技術の観点からの助言 - apropos - 明確化のための質問 - silverpill - ActivityStreamsに関する明確性と使用法に関する提案 - trwnh - JSON-LDに関する支援と重要なフィードバック

参考文献

  • Christine Lemmer-Webber、Jessica Tallon、Erin Shepherd、Amy Guy、Evan Prodromou、ActivityPub、2018年

著作権

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

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

脚注

[^ownership]: 本文書における「所有権」の定義はFEP-fe34: Ownershipに準拠しています。