Note
このドキュメントは2026-02-27 03:41にPLaMo Translation Modelを使用して自動翻訳されました。
FEP-6481: NodeInfoファイルにおけるActivityPub拡張機能のサポート指定方法
概要
多くのFediVerseサービスでは、[ActivityPub]および[ActivityStreams]プロトコルを拡張し、独自のオブジェクトタイプなどの独自動作を実装しています。異なるソフトウェアで運用されている他サーバーと相互運用するためには、自サーバーがこれらの拡張機能をサポートしているかどうかを認識する必要があります。
本FEPでは、サーバーの[NodeInfo]ファイルにおいて特定の拡張機能のサポート状況を指定するための標準方式を定義します(詳細は[FEP-f1d5]参照)。これにより、互換性情報を自動で検出できるようになります。
経緯
[Bookwyrm]や[Pixelfed]をはじめとする多くのFediVerseソフトウェアプラットフォームでは、NodeInfoファイルのsoftwareフィールドを用いて、リモートサーバーが同一ソフトウェアを実行しているかどうかを判定し、それによって拡張機能との互換性を判断してきました。この方法は有効ではあるものの、同じオブジェクトタイプを使用する可能性のある異なるソフトウェア間の完全な相互運用性を制限するという問題があります。
要件
本仕様書における「MUST」「MUST NOT」「REQUIRED」「SHALL」「SHALL NOT」「SHOULD」「SHOULD NOT」「RECOMMENDED」「MAY」「OPTIONAL」といった用語は、[RFC-2119]の定義に従って解釈されるものとします。
拡張機能サポートの宣言方法
ActivityPubを拡張するFediVerseソフトウェアは、その[NodeInfo]ファイルにおいて拡張機能のサポート状況を明記すべきです。
拡張機能識別子は有効なIRI(国際化リソース識別子)でなければなりません。これらのIRIは[w3id.org]の永続的識別サービスを利用して作成することができ、その場合、当該IRIは拡張機能を説明するドキュメントにリダイレクトされるように設定する必要があります。
本FEPに準拠するため、拡張機能はNodeInfoファイルのmetadataセクションにおいて以下のように指定しなければなりません:
{
"version": "2.2",
...,
"protocols": ["activitypub"],
...,
"metadata": {
"activitypub": {
"extensions": [
"https://w3id.org/my-project/my-extension#v1"
]
}
}
}
注:metadataキーのactivitypubは、protocolsセクションと整合性を持たせるために選択されており、ActivityPub、ActivityStreams、およびアクティビティ語彙における拡張機能を包括的に参照するものです。
拡張機能開発者には、IRI内にバージョン情報を明示することが推奨されます。具体的には、上記のように断片識別子として記述する方法が挙げられます。
一度定義されたIRIは変更不可であり、互換性を維持するためにも恒久的に保持されなければなりません。このため、IRIには長期的なサービス(例:w3id.org)を利用することが強く推奨されます。
IRIの設計指針
IRIの具体的な設計方法については特に規定しませんが、w3id.orgを使用する場合は、同サイトが定める命名ポリシーに従うことが推奨されます。
具体例
本セクションは規範的要件を定めない参考情報です。
[Manyfold]では、独自のリッチコンテンツ用に新しいActivity語彙オブジェクトタイプ3dModelを定義する予定です。仕様書では拡張機能のIRI、例えばhttps://w3id.org/manyfold/3dModel#v1などを規定します。
この特定のオブジェクトタイプを含むアクティビティを受け取りたいアプリケーションは、以下のようにNodeInfoファイルで当該拡張機能へのサポートを表明できます。Manyfoldインスタンスはこの情報を参照することで、該当するオブジェクトタイプを送信可能であり、それが正しく解釈されることを認識できます。
{
...,
"metadata": {
"activitypub": {
"extensions": [
"https://w3id.org/manyfold/3dModel#v1"
]
}
}
}
[Bookwyrm]のReviewオブジェクトタイプに対する同様の(あくまで理論的な)具体例としては以下が考えられます:
{
...,
"metadata": {
"activitypub": {
"extensions": [
"https://joinbookwyrm.org/ns/activitypub#Review"
]
}
}
}
参考文献
- FEP-f1d5, [FediVerseソフトウェアにおけるNodeInfo][FEP-f1d5]
- James Smith, [Manyfold ActivityPub設計文書][Manyfold], 2024年
- James M. Snell & Evan Prodromou, [ActivityStreams 2.0][ActivityStreams], 2017年
- Christine Lemmer-Webber & Jessica Tallon, [ActivityPub][ActivityPub], 2018年
- S. Bradner, [RFCにおける要件レベルを示すためのキーワードの使用法][RFC-2119], 1997年
著作権情報
CC0 1.0 Universal(パブリックドメイン献呈)
本FediVerse機能拡張提案書の著者らは、法律で認められる範囲内において、当該著作物に関するすべての著作権および関連する権利を放棄しています。