ログボ
主に、Fediverseへの関心に基づいた投稿を行うアカウントです。DTP・印刷に関する話をしたり、同人の話をしたり、カレーをブーストしたりします。
Mastodonのcollaborator(開発者の一員)です。また、独自機能を盛り込んだFedibirdを管理・開発しています!
Mastodonサーバ『fedibird.com』の管理者アカウントでもあります。ご連絡は当アカウントへ、サーバインフォメーションについては https://fedibird.com/about/more と @info を参照してください。
This account is not set to public on notestock.
This account is not set to public on notestock.
#fedibird #fedibird_info 軽微な不具合を修正する更新を行いました。
・動画を含む参照のパブリックページがエラーになる不具合を修正
・APIで未登録のハッシュタグを参照しようとしたときに発生するエラーを修正
・不正なacctで発生するドメイン検証コードのエラーを修正
・読み取れない画像のthumbhash生成時に発生するエラーを修正
これを探しに行かねばならない
QT: https://fedibird.com/@noellabo/110752032924114082 [参照]
とりあえず、やべえこれ発売したら買おうとか、そういうことしか考えて無いよ
https://www.sej.co.jp/products/a/item/041220/kanto/
This account is not set to public on notestock.
Mastodonいじるために新たにrubyやRails覚えたりjavascriptでReact + ReduxしたりWebSocketしたりするの覚えたりしてるけど、全部趣味ですものね。ノーカウント。
@noppe Statusがorderd_media_idsを保持するようになったのはv3.5.0からなので、いまのところ未対応です。でもこれ取り込んじゃった方がよさそうですね。
This account is not set to public on notestock.
MastodonやMisskeyが、それぞれ別々に設置されている違うプログラムなのに、お互いに繋がることができる仕組みは、主に『ActivityPub』という通信規約(プロトコル)によって実現されています。
ActivityPubでは、私たち一人一人のアカウントをActorと呼びます。
Actorは、別のActorと、「フォローしたい」「いいよ」というやりとりをします。
投稿に対して「好き!」って反応したり、新しいノートを「作ったよ」、ノートをみんなに「アナウンス」します(ブースト・リノート)
これらのやりとりの語彙があらかじめ定義されています。
先程の例の順番でいうと、Follow, Accept, Like, Create, Announce というActivityとして定義されています。
Activityは、何を対象とするかを伴っていて、Actorを対象とするときもあれば、投稿(短い文章)を表す表現であるNoteや、「フォローしたい」というリクエストを許可したり、送った側が取り消すために、「フォローしたい」というActivityそのものを対象として指定することもあります。
このあたりの約束ごとが共通化されているため、それに従うことで、お互いのやりとりが可能になっています。
Actorは、それぞれがinboxというActivityを受け入れる窓口を持っていて、他のActorから送られてきたActivityを処理します。
また、自分が送ったActivityをoutboxに保持しています(ずっと溜まっていきます)。
フォローしているActorのコレクション following も持っています。
フォローされているActorのコレクション followers も持っています。
これは、フォローを要求して、それが受け入れられた時に、お互いがコレクションに追加することで、その状態を維持します。
新しい投稿(Note)をCreateした時、つまり新規投稿時には、followersコレクションのActorのinboxに対してActivityを送ります。
そうすると、フォロワーのActorは、inboxに届いたActivityを処理して、フォロー相手の投稿が読めるようになります。
Activityを発行したActorが、フォロワーに対してそれを送信することで、お互いが繋がるネットワークが実現されています。
さて、ここまでサーバが説明されていません。存在感ゼロですね!
実は、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に送ります。
以上は、ActivityPubの枠内で行われる仕組みについて説明したものですが、
サーバーはinboxに送られてきた新しい投稿が公開してもいいものだと判断したときに、
連合タイムラインという特別な仕組みを用意していて、そこでみんながみられるようにしたり、
同じサーバーのActorが発行した新規投稿のActivityを使って、ローカルタイムラインという仕組みを実現したり、
いろいろとActivityPubの仕組みには存在しない付加機能を提供しています。
サーバーはActorのコレクションを持っているので、他のActorを探す機能を提供することができます。
投稿のハッシュタグをコレクションして、ハッシュタグで投稿を一覧する機能を持たせたりもしています。
ActivityPubにはハッシュタグの共通の表現は用意されていますが、それをどう使うかについては定義されていません。
そのあたりは、ActivityPubで通信する個々のサーバーにより定義され、実装されています。
このActivityPubの規格外の部分は、各実装同士がお互いの機能を理解して、互換性をとる努力をすることで、相互のやりとりを実現しています。
かなり自由だけど、それなりに大変な世界です。
@kussy_tessy そうです。
B1さんが、自分のフォロワーであるA1さん、A2さん、A3さんの、それぞれのshared_inboxを調べると、同じ宛先表現になっています。
この場合は、まとめて1回で済ませてOKです。
実際、相当な節約になっていますので、この仕組みがないとかなり大変です。
@kussy_tessy たとえば外部配送をリレーに全部委託してしまって、自分では手抜きをするノードを作るという発想をすることもできるので、実はいろんなやり方があります。(そういう実装はまだ作られていないと思いますが)
Mastodonでは長らく、投稿する行為をToot(トゥート)、投稿自体をStatus(ステータス)と呼んでおり、定着しておりましたが、
2021年4月22日に作られたこのプルリクエストにて『Post』に変更することが説明・宣言され、いくらかの議論の後、マージされました。詳しくはプルリクエスト本体のやりとりをみて下さい。
https://github.com/mastodon/mastodon/pull/16080
なお、この時点では投稿ボタンだけは『Toot』という表現が維持されましたが、その後『Post』に変更になりました。
また、用語変更の抜けがあちこちにあったため、その後ちょこちょこ修正が行われました。
ただ、この変更の周知はあまり行き渡らなかったようで、この時期に変更が行われたことのみならず、そもそも変更されたことがいまもって伝わっていないという状況かと思います。(正直、しっかり広報されてはいないと思います)
@rino ちょっとここでも言及されてますが、他ではどうだったかな? 把握できていないので、issueやpull-request探してみてください。
Mastodonのプログラム内部ではreblog、表面上はboost、Pleromaはrepeat、Misskeyはrenote、ActivityPubはAnnounce、といった具合で超バラバラなので、じゃあどうすればいいか、合意が取りにくいかもしれませんね。
あ、ごめん。投稿行為は『Post』ではなく『Publish』でした。(日本語だとどちらも投稿になります)
ぶらさげる形で訂正いたします。
#fedibird #fedibird_info なんか挙動がおかしいなと思っていたら、検索用のElasticsearchクラスタ3台のうち1台が止まっていました……。復帰させました。
謎の遅延・未達(ブーストの未取得とか、特定ユーザーの配送が届かないなど)の原因になっていた可能性がありますので、不調を観測できていた方は様子をみていてください。
#fedibird #fedibird_info ブーストが届かない・遅れる不具合の原因がわかりまして、修正しました。
……そのため、しばらくブーストがまとまって飛んできますのでよろしくお願いします。
#fedibird #fedibird_info 結構な数の未処理ジョブが積み上がっているので、しばらく遅延します。解消まで気長にお待ちをー。