Skip to content

Note

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

FEP-612d: DNSを利用したActivityPubオブジェクトの識別方法

概要

[ActivityPub]プロトコルにおいて、オブジェクトはdereferencableなURIであるidによって一意に識別されます。この仕組みを実現するため、ドメイン名に対応するTXTレコードをDNSに追加します。具体的には、名前フィールドに_apobjidを指定し、値として対象のActivityPubオブジェクトのURIを設定する必要があります。FediVerseアプリケーションがこのドメイン名を受け取った場合、対応するDNSルックアップを実行することで、指定されたActivityPubオブジェクトを取得することが可能になります。

議論

本FEPは[BlueSky]プロトコルから着想を得たもので、FediVerseシステムにおける識別プロセスを部分的に実現しています。これにより、関連付けられたドメイン名からActivityPub Actorを検索できるようになりますが、FediVerseハンドルの代わりにドメイン名を表示するという問題には対応していません。最初の解決策として、alsoKnownAs属性にドメイン名を含める方法が考えられます。その後、Actorに関する特定のプロパティを利用して、表示すべきオブジェクトを指定する仕組みを構築することが次のステップとなります。

その他の識別方法

ActivityPubオブジェクトをそのid以外で識別する手段として、現在主に以下の2つの方法が用いられています:

Webfinger

FediVerseにおけるユーザー識別には、通常username@domain.tld形式のFediVerseハンドルが広く使用されています。このハンドルは、以下のHTTPリクエストを実行することでWebfingerプロトコルを用いて解決可能です:

GET https://domain.tld/.well-known/webfinger?resource=acct:username@domain.tld

この場合、ActivityPubオブジェクトはapplication/activity+jsonタイプのリンク要素として返されます。

あまり一般的ではないものの、もう一つの方法として、以下の形式のHTML linkヘッダーを提供する手法があります:

<link
    href="https://activty.pub/object/id"
    rel="alternate"
    type="application/activity+json"
/>

このHTMLを検索結果として受け取るFediVerseオブジェクトは、この内容を解析し、指定されたリンクを用いて対応するオブジェクトを取得することができます。

コンテンツネゴシエーション

コンテンツネゴシエーションをサポートするサーバーでは、Acceptヘッダーに"application/activity+json"を指定すると、リクエストに対応するActivityPubオブジェクトが直接提供またはリダイレクトされます。著者の知る限り、この方法ではどの場所にActivityPubオブジェクトが格納されているかを特定する手段は存在しません。なぜなら、オブジェクトは直接提供されるためです。

DNSを利用したActivityPubオブジェクト識別の具体例

以下に、ドメインmymath.rocksに対する設定例を示します。この設定は、FediVerseハンドル@helge@mymath.rocks、すなわち著者自身に対応するActorに対応しています:

$ dig _apobjid.mymath.rocks

;; ANSWER SECTION:
_apobjid.mymath.rocks.  7200    IN  TXT "https://mymath.rocks/endpoints/SYn3cl_N4HAPfPHgo2x37XunLEmhV9LnxCggcYwyec0"

対応するオブジェクトの内容は以下のようになります:

{
    "@context": ["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1"],
    "id":"https://mymath.rocks/endpoints/SYn3cl_N4HAPfPHgo2x37XunLEmhV9LnxCggcYwyec0",
    "name":"Helge",
    "preferredUsername":"helge",
    "summary":"<p>私は数学と牛が好きで、<a href=\"https://codeberg.org/bovine/bovine/\">bovine</a>というプロジェクトを執筆しました。</p>",
    "type":"Person", ...
}

参考文献

著作権

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

法律で認められる範囲内において、本Fediverse拡張提案の著者らは当該作品に関するすべての著作権および関連する権利を放棄しています。