本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは白方健太郎さんで,
本稿のサンプルコードは,
Fediverse──非中央集権型ソーシャルネットワーク
2017年春に日本でブームとなったMastodonが構成するような非中央集権型ソーシャルネットワークは,
本稿では,
Fediverseを構成する仕様群
Fediverseは複数の仕様を組み合わせることで実現されています。本節では,
ActivityPub──Fediverseを実現するための中心プロトコル
ActivityPubは,
ActivityPubでやりとりされるデータのMIMEapplication/
を使います。HTTPSリクエストのAccept
ヘッダやレスポンスのContent-Type
ヘッダには,
COLUMN ActivityPub仕様の読み方
ActivityPubサーバを作成するには当然ActivityPub仕様を読む必要が出てきますが,
ActivityPub仕様は大きく分けると,
Fediverseに参加するサーバの作成を目的としている場合,
Activity Streams 2.0──ActivityPubのデータモデル
AS2は,
AS2およびそのベースとなったJSON-LDは非常に大きな仕様ですが,
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "https://example.com/users/foobar#follow/1",
"type": "Follow",
"actor": "https://example.com/users/foobar",
"object": "https://actub.ub32.org/argrath"
}
@context
属性はJSON-LDに特有の属性で,https://
です。この属性には,
id
属性はネットワーク全体でユニークとなるURL形式の文字列,type
属性はオブジェクトの型を示します。そのほかの属性はオブジェクトの型によって異なるので都度説明します。
HTTP Signatures──ActivityPub通信の検証プロトコル
ActivityPubでは,
ActivityPubではどのような手法を用いるかは定めていませんが,Signature
フィールドに指定してリクエストを送信します。受信側は送信アクターの公開鍵を取得して署名を検証し,
COLUMN OStatus──ActivityPub以前のFediverse仕様
Fediverseの概念はActivityPubの勧告以前からあり,
しかし,
それ以降もOStatusとActivityPubの両方に対応していたMastodonですが,