さて、ここまでサーバが説明されていません。存在感ゼロですね!
実は、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に送ります。