なんとなく理解するActivity Pub - インスタンスを添えて-

695 Views

March 30, 24

スライド概要

profile-image

花譜とdockerが好きな高専生

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

なんとなく理解するActivity Pub - インスタンスを添えてJMLT vol.7 in Sapporo Yuhei Kobayashi @ynstg

2.

$ whois noko1024.net - 小林 侑平 (@ynstg / @noko1024) 釧路工業高等専門学校 創造工学科 電気工学分野 4(2)年 道内の勉強会やイベントに出没 株式会社TAIAN でアルバイト中(バックエンド) 今日は分散型SNSのお話をします

3.

実はSNSを運営しています おやすみすきー ( oyasumi.ski ) - 100アカウント (DAU 10アカウント) 約100サーバーと連合中 In/Out : 10万/1万くらい (1日あたり)

4.

ことのはじまり

6.

障害対応の様子

7.

ちゃんと分散型SNSを学ぼう

8.

分散型SNSって知ってますか? 異なる運営者に分権化・分散化されているSNSのこと 複数のソーシャル・ウェブサイトの連合として構成されており、 各サイトのユーザーは連合内の他のサイトのユーザーと通信をすることができる - Mastodon Misskey Bluesky など ↔ 中央集権型SNS (Facebook,Twitter,Instagram…)

9.

サーバー間の相互連携 (連合) のおはなし MastodonやMisskeyで採用されているプロトコルがActivity Pub W3Cが策定 1. 2. サーバー⇔サーバー間の連合プロトコル クライアント⇔サーバー間のプロトコル この2つが定義されている

10.

Activity Pub の概要

11.

Activity Pub の重要なキーワード ✱ ✱ ✱ Actor Object Activity Actor が Object を Activity する

12.

ActorのInbox / Outbox 全てのユーザーアカウントはActorと表現される 全てのActorは次のものをもつ ✱ ✱ inbox: 世界中からメッセージを受け取る場所 outbox: 他へメッセージを送る場所 実際にはただのAPIのエンドポイント

13.

つまり... - アリスはボブにメッセージを送るためにボブのinbox に POST できる (サーバからサーバ →連合のみ) - アリスはアリスの最新のメッセージを読むためにアリスのinbox を GET できる (クライアントからサーバ) - アリスは世界中にメッセージを送るためにアリスのoutbox に POST できる (クライアントからサーバ) - アリスはボブ(あるいは少なくともアリスが読むことを許されている人)がどんなメッセージを 書いたかを見るためにその人のoutbox を GET できる (クライアントからサーバ or サーバからサーバ)

14.

メッセージ...? - 実際はObject → Activity Streams で定義された JSON-LD (JSON for Linked Data) - ActivityもObjectClassの拡張として定義されている Alice が Note を Createする Bob が AliceのNote を Like する

15.

改めて Activity Pubの概要

16.

なるほど ちょっと立ち戻って

17.

これって何が起きていた?

19.

inbox queue が詰まる inbox , outboxに到着したオブジェクトたちはキューに追加され、 非同期で処理されている →他のサーバーから到着したオブジェクトを自分のタイムラインに反映するのが遅れ ていた とりあえず 他のサーバーに迷惑をかけていなかったので一安心 ちなみに... misskeyだと Bull mastodon だと Sidekiq が担当

20.

ちょっと付録 『Actor が Object を Activity する』 どうやって真正性を証明しよう? → HTTP Signatures を付けて署名しています