icon

@kamisuke おはよう、王

icon

@HswkkIZA シェアしたい人(組織)がAPIやInstagramの自動投稿だとできないっていうの、ベータ終わる頃までに制限なくなるといいですねぇ……。

icon

異変に気付く人、っていうのが重要かなって気がする。

icon

赤が入ってる画像……

Attach image
icon

えーと、mainに追加されたプロフィールカード表示が鬱陶しいとか、誤操作(フォロー・解除など)が発生しやすいってやつ?

icon

@nzws ウチも公開フィードない、でかつてブロックされていたのだが、本当にバグで公開タイムラインが表示されていなかったというオチだった\(^o^)/

icon

@daigu データロストは飛ばしたに入りますね!!!! :uwa:

恒常的とか深刻すぎて……救われない……

icon

ショコタン

icon

インスタントやきそばのソースを先に入れてしまう

icon

なるほど、生体サーバの唐揚げ
(なるほどじゃない)

icon

発掘品(他の調べ物中に出てきた)を流しておこう

2023-07-31 13:53:03 のえるの投稿 noellabo@fedibird.com
icon

MastodonやMisskeyが、それぞれ別々に設置されている違うプログラムなのに、お互いに繋がることができる仕組みは、主に『ActivityPub』という通信規約(プロトコル)によって実現されています。

ActivityPubでは、私たち一人一人のアカウントをActorと呼びます。

Actorは、別のActorと、「フォローしたい」「いいよ」というやりとりをします。

投稿に対して「好き!」って反応したり、新しいノートを「作ったよ」、ノートをみんなに「アナウンス」します(ブースト・リノート)

これらのやりとりの語彙があらかじめ定義されています。

先程の例の順番でいうと、Follow, Accept, Like, Create, Announce というActivityとして定義されています。

Activityは、何を対象とするかを伴っていて、Actorを対象とするときもあれば、投稿(短い文章)を表す表現であるNoteや、「フォローしたい」というリクエストを許可したり、送った側が取り消すために、「フォローしたい」というActivityそのものを対象として指定することもあります。

このあたりの約束ごとが共通化されているため、それに従うことで、お互いのやりとりが可能になっています。

2023-07-31 13:53:21 のえるの投稿 noellabo@fedibird.com
icon

Actorは、それぞれがinboxというActivityを受け入れる窓口を持っていて、他のActorから送られてきたActivityを処理します。

また、自分が送ったActivityをoutboxに保持しています(ずっと溜まっていきます)。

フォローしているActorのコレクション following も持っています。

フォローされているActorのコレクション followers も持っています。

これは、フォローを要求して、それが受け入れられた時に、お互いがコレクションに追加することで、その状態を維持します。

新しい投稿(Note)をCreateした時、つまり新規投稿時には、followersコレクションのActorのinboxに対してActivityを送ります。

そうすると、フォロワーのActorは、inboxに届いたActivityを処理して、フォロー相手の投稿が読めるようになります。

Activityを発行したActorが、フォロワーに対してそれを送信することで、お互いが繋がるネットワークが実現されています。

Actorの実際の表現例(抜粋)
Attach image
2023-07-31 13:53:34 のえるの投稿 noellabo@fedibird.com
icon

さて、ここまでサーバが説明されていません。存在感ゼロですね!

実は、ActivityPubでは、サーバーを直接表すActorのような定義がありません。

便宜上、サーバーにもActorを割り当てることはありますが、主役ではありません。

とはいえ、サーバーの存在は別の形で表現されていて、効率の改善に貢献しています。

先程のActor毎のinboxがありましたが、この他にshared_inboxという、同じサーバのActorが共有して使うinboxがあります。

このshared_inboxにActivityを送ると、Activityに指定しておいた宛先のActorに対して、相手サーバーに委託してまとめて送ることができるようになります。

「あなたのサーバの、私のフォロワーに対して、Create - Noteしたのでよろしくね!」という感じで、shared_inboxに一回だけ送れば済む仕組みです。

実際の動きとしては、followersコレクションのActorのshared_inboxを調べ、同じものは一つにまとめてしまい、送信件数を最小限に減らしています。

なお、shared_inboxが無い場合は、個々のinboxに送ります。

2023-07-31 14:09:58 のえるの投稿 noellabo@fedibird.com
icon

以上は、ActivityPubの枠内で行われる仕組みについて説明したものですが、

サーバーはinboxに送られてきた新しい投稿が公開してもいいものだと判断したときに、

連合タイムラインという特別な仕組みを用意していて、そこでみんながみられるようにしたり、

同じサーバーのActorが発行した新規投稿のActivityを使って、ローカルタイムラインという仕組みを実現したり、

いろいろとActivityPubの仕組みには存在しない付加機能を提供しています。

サーバーはActorのコレクションを持っているので、他のActorを探す機能を提供することができます。

投稿のハッシュタグをコレクションして、ハッシュタグで投稿を一覧する機能を持たせたりもしています。

ActivityPubにはハッシュタグの共通の表現は用意されていますが、それをどう使うかについては定義されていません。

そのあたりは、ActivityPubで通信する個々のサーバーにより定義され、実装されています。

このActivityPubの規格外の部分は、各実装同士がお互いの機能を理解して、互換性をとる努力をすることで、相互のやりとりを実現しています。

かなり自由だけど、それなりに大変な世界です。

icon

@Nsalada まだ、既存のThreadsの投稿に対してこちらからリプライした時しか、あちらからは見えないよー

icon

みんなメンテに向けてフラグ立てに行ってて偉いね(えらくはない)