ActivityPub
読み:あくてぃびてぃー-ぱぶ
外語:ActivityPub
Fediverse
を実現するための標準
通信プロトコル
の一つで、これを著している時点で最も代表的なもの。
W3C
勧告。
目次
概要
特徴
機構
実装
オープンソース
マイクロブログ
ブログ
チャット
SNS
ファイル共有またはオンラインストレージ
メディアファイル共有
音楽共有
静止画像(写真含む)共有
動画共有
チャット
電子掲示板(BBS)
ポットキャスト
CMS
Webmention
Pastebin(ペーストビン)
アグリゲーター
その他のサーバー
ライブラリー等
その他関連するもの
商用サービス
OStatusとの違い
購読の概念の廃止
インスタンス間での返信
トゥート削除の配信
非公開投稿
概要
分散型
マイクロブログ
実装である
Mastodon
が採用した
OStatus
という設計の古いプロトコルの代替として開発された通信プロトコルである。但しこれはOStatusの拡張ではなく、全くの別物である。
具体的にはpump.ioで使われていたプロトコルを基に作られており、結果としてOStatusにあった様々な欠点を改良し、より
Twitter
に近い利便性を供与できる仕様となっている。
ActivityPubはMastodonで有名ではあるが汎用の通信プロトコルなので、運用はMastodonに限らない。ActivityPubを用いて、Mastodonと相互に交信できる新しいマイクロブログ実装を作ることも可能である。結果、マイクロブログ等のSNSのほか、通常のブログ、ファイル共有、音楽共有、動画共有、あるいはCMSといった様々な実装で採用されている。
例えば(Fediverse版YouTubeとも言える)オープンソースの動画共有プラットフォーム
PeerTube
もActivityPubに対応しており、(Fediverse版Twitterとも言える)Mastodonからもマイクロブログ的に閲覧できるだけでなくコメントを付けることもでき、そのコメントはPeerTubeから付けたものと同様に扱われる。このように、特定の実装にとらわれない自由な運用ができることがメリットである。
特徴
機構
文字列は
UTF-8
(
RFC 3629
)
データ形式は原則として
JSON-LD
(W3C勧告)
実装
Fediverse用プロトコルであるActivityPubの実装は様々なものがあるが、その殆どはオープンソースである。「囲い込み」を基本とする商用サービスがオープンな仕様を導入するのはかなりの冒険と思われるため、オープンソースとは項を分けて紹介する。
オープンソース
マイクロブログ
Friendica (AGPLv3) [PHP]
Kibou (AGPLv3) [Rust]
GNU social (AGPLv3)l [PHP]
Mastodon
(AGPLv3) [Ruby, JavaScript]
Misskey
(AGPLv3) [TypeScript, Vue]
microblog.pub (AGPLv3) [Python]
Pleroma (AGPLv3) [Elixir]
Pylodon (MIT License) [Python]
Pump.io (Apache License 2.0) [Node.js]
Zap (public domain) [PHP]
ブログ
WriteFreely (AGPLv3) [Go]
Plume (AGPLv3) [Rust]
チャット
Honk (ISCライセンス) [Go]
SNS
Aardwolf (AGPLv3)
Socialhome (AGPLv3) [Python]
ファイル共有またはオンラインストレージ
Nextcloud (AGPL v3+) [PHP, JavaScript]
OLKi (AGPLv3) [Python]
メディアファイル共有
GNU MediaGoblin (AGPLv3)
音楽共有
Funkwhale (AGPLv3) [Python, JavaScript]
静止画像(写真含む)共有
Anfora (AGPLv3) [Python]
PeerPx (MIT License) [Go]
PixelFed (AGPL v3+) [PHP, Vue]
動画共有
PeerTube
(AGPLv3) [TypeScript, Node.js]
チャット
dokieli (Apache License 2.0) [JavaScript]
電子掲示板(BBS)
Prismo (AGPL v3+) [Ruby, JavaScript]
ポットキャスト
Pubcast (
MPL
2.0) [Go]
CMS
Hubzilla (BSD類似ライセンス) [PHP]
Webmention
Bridgy Fed (Public Domain / CC0) [Python]
Pastebin(ペーストビン)
distbin.com [JavaScript]
アグリゲーター
lotide (AGPLv3) [Rust]
Lemmy (AGPLv3) [Rust]
Littr (MIT License) [Go]
Read.as (AGPLv3) [Go]
その他のサーバー
Kroeg (Kroeg) [C#]
places.pub (Apache v2) [JavaScript]
tags.pub (Apache v2) [JavaScript] ‐ ハッシュタグサーバー
ライブラリー等
go-fed (BSD 3-Clause) [Go]
Pubstrate (GPLv3 or later) [Guile Scheme]
その他関連するもの
Smilodon (Expat (MIT)) [Python] ‐ Pylodonサーバーのフロントエンド
商用サービス
Tumblr ‐ 様々な機能を有するマイクロブログサービスが対応計画を発表
OStatusとの違い
動作面での顕著な差違を以下に述べる。用語や動作についてはMastodonを前提とする。
購読の概念の廃止
OStatusはWebSubプロトコルにより、購読したインスタンスに対して配信していた。対してActivityPubに購読の概念はなく、
フォロワー
全員に対して配信される。
ActivityPubはアカウント単位の配信が可能となっており、また
後方互換性
のため各アカウントに対しActivityPubで配信するかWebSubで配信するかを管理している。
ActivityPubでの配信とWebSubでの配信は独立して動作するため双方で配信されると受信側で重複してしまう。このためActivityPubでの配信が確認され次第、WebSubで配信は解除されるようになっており、これによって互換性を確保しながらActivityPubへの移行が可能となっている。
インスタンス間での返信
インスタンス間での返信において返信を受けると、その返信は返信を受けた人のフォロワーのインスタンスにも転送される。これにより、他のインスタンスからでもその返信を見ることが可能となる。
なお、
メンション
は動作が異なる。
トゥート削除の配信
OStatusでは、トゥートの削除は直接のフォロワーまでしか配信されない。このため他のインスタンスに残ってしまう(ことがある)欠点があった。
ActivityPubでは、フォロワーだけでなく、ブーストした人、
メンション
した人、またそれらをした人のフォロワーまで、可能な限りの範囲に削除通知を転送するようになった。
非公開投稿
OStatusは、投稿の公開範囲は独自拡張である。このためMastodonで非公開のトゥートをしたとしても、それがGNU socialで受信されたなら、それは誰でも読むことができ、ブーストすら可能であった。
ActivityPubでは、仕様として受信者を明示できるようになっており、この問題は回避できる。
再検索