Skip to content

Note

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

FEP-07d7:ActivityPubリソースへのリンク用カスタムURLスキームとウェブベースプロトコルハンドラ仕様

概要

本仕様書は、リモートサーバー上でホストされているActivityPubリソースとの連携において生じる課題に対処するものである。ユーザーが好みのサーバーへハイパーリンクをルーティングできるよう、カスタムURLスキームを定義するとともに、このスキームに対応したウェブベースプロトコルハンドラの使用方法について規定する。さらに、ActivityPubサーバーが生成するHTML表示内にこれらのリンクを含める際の推奨事項や、クライアントおよびサーバー側でのプロトコルハンドラ実装方法についても詳述する。

背景と動機

ユーザーがActivityPub対応サイトへのリンクをクリックした場合、ブラウザはそのサイト内のリソースに直接遷移する。これは、異なるActivityPub対応サイトでアカウントを保有しているユーザーにとって、必ずしも望ましい動作ではない。リンク先のリソースを自らのアカウントから操作するためには、別途ホームサーバーにアクセスして該当リソースを検索する必要がある。このプロセスは煩雑であり、特に分散型ソーシャルネットワーク特有のナビゲーションに慣れていないユーザーにとっては混乱を招く可能性がある。

ウェブベースプロトコルハンドリングは、現代のウェブブラウザが備える機能である。これにより、サイト運営者は独自のURIスキームに対するハンドラとして自身のソフトウェアをブラウザに登録することができる。ブラウザはこのスキームを使用したリンクを登録済みのハンドラに自動的に転送する仕組みとなっている。この方式により、ユーザーが指定したサーバーやアプリケーションへハイパーリンクを適切にルーティングすることが可能となる。また、ネイティブなActivityPubクライアントもこのURL形式を活用することで、同様の処理を実現できる。

技術的背景

FedilinksMastodon Issue 19679といった類似提案が既に存在し、実際にMastodonでは一時的に実装されたこともあるMastodonRemove。これらの事例から、カスタムプロトコルハンドラがインスタンス間オブジェクトとの連携問題を解決する技術的可能性を有することが示唆されている。また、このアプローチには十分な先行事例が存在する。mailto:tel:はウェブ標準における代表的な例であり、Zoomはデスクトップアプリを起動するために独自のzoommtg:プロトコルを、AppleはiTunesを起動するためにitms:プロトコルを採用している。

初期の実装が進まなかった主な要因は、ユーザー体験(UX)面での課題と普及率の低さにあった。これは典型的な「鶏が先か卵が先か」問題と言える。この種の問題が完全に解消されることはないかもしれないが、少なくとも標準仕様に基づいた実装を進めることは有益である。本提案では、他のアプローチとは異なり、段階的な採用が可能な動作方針も推奨している。

Mastodon14187などの類似提案では、コンテンツそのものよりも「成果物」を重視する議論が行われてきた。アクションをカプセル化する機能は自然な要望であり、本提案ではこの実現を支援することを目的としている。ただし、プロトコルの側面に関しては、現行および将来のActivityPubサービスの設計や機能に関する前提を一切置かず、純粋にActivityPubオブジェクトとの相互作用に焦点を当てている。これにより、実装されたシステムがより長期的な存続可能性を持つことを期待している。文書はソフトウェアよりも長く利用されるものであり、ユーザーは引き続き有用な方法でこれらのリソースにアクセスできるべきである。

参考文献

  • [ActivityPub] Christine Lemmer Webber, Jessica Tallon, ActivityPub, 2018年
  • [ウェブベースプロトコルハンドラ] Mozilla Developer Network, Web-based Protocol Handlers
  • [HTML Living Standard] WHATWG, HTML, 2023年
  • [Fedilinks] Fedilinks開発チーム, Fedilinks

著作権情報

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

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