海ミハ車両区

宮原太聖(Miha)の雑記帳。おおむね週1回更新です。

Amemiya.workをv2.5.0へバージョンアップしました&連合リレーについて

blog.joinmastodon.org

f:id:t_miyahara:20180905134355p:plain

最新安定版v2.5.0が公開されたので、9月3日、Amemiya.workをv2.5.0へバージョンアップしました。

amemiya.work

amemiya.work

 

UIや、バージョンの表示場所が微妙に変わっているのは、もはや恒例ですね。

転がる石のように変わってゆくマストドンGitHubでは、今でも、毎日なにかしらのコミットがあります。

 

 

 

amemiya.work

さて、今回のバージョンアップ一番の目玉は、なんといっても、「連合リレー」でしょう。

 

公式のドキュメントでは、以下のように説明されています。

 Federation:
Federation relays (#7998)

A federation relay is a semi-centralized server that pushes public messages between Mastodon servers that want to use it, thereby increasing the exposure of all participating Mastodon servers to each other. This is a solution to the problem of new Mastodon servers not having any content at the beginning, a way to subscribe to a more or less global timeline.

Warning: Enabling a relay will mean faster database growth.

The relay server is open-source and anyone can operate one. Nothing is enabled by default, administrators can choose to join a relay and choose which relay to join. A default relay server is suggested when adding one.

 

……よくわからんですね。助けて! Google先生

 

 フェデレーション:
フェデレーションリレー(#7998)

フェデレーションリレーは、それを使用するMastodonサーバー間でパブリックメッセージをプッシュする半集中型サーバーです。これにより、参加しているすべてのMastodonサーバーの公開が向上します。これは、冒頭にコンテンツを持たない新しいMastodonサーバーの問題に対する解決策です。多かれ少なかれグローバルなタイムラインに登録する方法です。

警告:リレーを有効にすると、データベースの処理速度が向上します。

リレーサーバは、オープンソースであると誰もが1を動作させることができます。デフォルトでは何も有効になっていないため、管理者はリレーへの参加を選択し、参加するリレーを選択することができます。追加時にデフォルトのリレーサーバーが推奨されます。

 

……まだよくわからんですね。ちょっと図を使って説明してみましょう。

 

f:id:t_miyahara:20180905142051p:plain

今までは、こんな感じでした。v2.5.0であっても、連合リレー(後述)を導入していないと、こんな感じです。

わかりやすいように、お一人様インスタンス(ユーザー数が一人しか居ないインスタンス)で、ブーストやFavなどは考えないものとして図にしています。

 

マストドンは分散型のSNSです。複数のインスタンス(サーバー)に分かれていて、他のインスタンスのユーザーとも、相互にフォローし合えます。

あなたが、誰か他のインスタンスのユーザーをフォロー(リモートフォロー)すると、そのユーザーのトゥートは、あなたのホームタイムラインだけではなく、連合タイムラインにも表示されるようになります。

連合タイムラインには、同じインスタンスに所属する他のユーザーによってリモートフォローされたユーザーのトゥートも流れるのですが、お一人様の場合は、おおむね、ホームタイムラインと同じような感じになります。ユーザー数の少ないインスタンスでも同様です。というのも、同じインスタンスに居るということは、おおむね同じようなユーザーをフォローしている可能性が高いからです*1

この図でいくと、とくに、緑のインスタンスに所属しているユーザーのトゥートは、連合タイムラインには流れにくい状態になっています。自分のインスタンスでは、誰も、緑のインスタンスに所属するユーザーをフォローしていないためです。

このような状態では、連合タイムラインの存在意義を疑う声が出るのも仕方のないことかもしれません。

 

 

f:id:t_miyahara:20180905161705p:plain

ここにリレーサーバー(Pub-relay)が入ると、こうなります。

図中では、自分のインスタンスの他に、青と緑のインスタンスが同じリレーサーバーを登録しています。

インスタンスで行われた全てのトゥートは、リレーサーバーへと集まります。そして、集められたトゥートは、各インスタンスの連合タイムラインへ配信されます。結果、連合タイムラインというものが、同一のリレーサーバーに登録している全てのインスタンスのローカルタイムラインを合算したもの+αみたいな状態になります。

mstdn.jpやfriends.nicoのような大規模なインスタンスから、中小規模のインスタンスへ移った際、「なんか、ローカルタイムラインの流速が遅くてつまらん」って思った人もいらっしゃるかもしれませんが、そういった問題が連合タイムラインを活用することで解消するようになります。

また、この図ではきちんと表現できていませんが、お一人様インスタンスからのトゥートであっても、他の色々なインスタンスの連合タイムラインに表示されるようになりますので、発信力がアップします。

 

 

流速が上がるということは、それだけサーバーに負荷が掛かるということでもあり、その負荷に耐えられるのかという問題があります。また、この仕組みは、公式に「semi-centralized server」と表現されているように、マストドンの分散(decentralized)の思想とやもすれば矛盾しかねないという問題もはらんでいます。

とはいえ、このふたつの問題を合わせると、まるでぷよぷよのように問題が解決します。あまりに特定のリレーサーバーインスタンスが集中しすぎると、連合タイムラインの速度が上がりすぎ、サーバーの負荷が掛かります。インスタンスがその負荷を許容できなくなると、管理者は、そのリレーサーバーへの接続を解除したり、他のより速度が落ち着いているリレーサーバーへ切り替えるでしょう。接続するインスタンスの数が減れば、特定のリレーサーバーインスタンスが集中しすぎるという問題は当然解消され、残ったインスタンスの連合タイムラインの速度も落ち着きます。

これは、私が、マストドン統計局を始めた頃から感じていたことでもあるのですが、マストドンの仕組みというのは、時間が経過するとともに、金銭あるいは快適性の観点から、自ずとある程度の規模にまで分散が発生するように(過度なユーザー集中が発生しにくいように)作られています。意図したものなのか深読みしすぎなのか勘違いなのかわかりませんが、仮に意図したものであるならば、その考え抜かれた発想と実装には、心底脱帽します。

*1:いわゆる類友