ActivityPub

読み:あくてぃびてぃー・ぱぶ
外語:ActivityPub 英語
品詞:固有名詞

Fediverseを実現するための標準通信プロトコルの一つで、これを著している時点で最も代表的なもの。W3C勧告。

目次

分散型マイクロブログ実装であるMastodonが採用したOStatusという設計の古いプロトコルの代替として開発された通信プロトコルである。但しこれはOStatusの拡張ではなく、全くの別物である。

具体的にはpump.ioで使われていたプロトコルを基に作られており、結果としてOStatusにあった様々な欠点を改良し、よりTwitterに近い利便性を供与できる仕様となっている。

ActivityPubはMastodonで有名ではあるが汎用の通信プロトコルなので、運用はMastodonに限らない。ActivityPubを用いて、Mastodonと相互に交信できる新しいマイクロブログ実装を作ることも可能である。結果、マイクロブログ等のSNSのほか、通常のブログ、ファイル共有、音楽共有、動画共有、あるいはCMSといった様々な実装で採用されている。

例えば(Fediverse版YouTubeとも言える)オープンソースの動画共有プラットフォームPeerTubeもActivityPubに対応しており、(Fediverse版Twitterとも言える)Mastodonからもマイクロブログ的に閲覧できるだけでなくコメントを付けることもでき、そのコメントはPeerTubeから付けたものと同様に扱われる。このように、特定の実装にとらわれない自由な運用ができることがメリットである。

機構

実装

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では、仕様として受信者を明示できるようになっており、この問題は回避できる。

関連するリンク
https://www.w3.org/TR/activitypub/
用語の所属
通信プロトコル
W3C
OStatus

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club