generated at
雑に読むMisskey
草雑に読むのそっちかbsahd

基素
こんなことがわかると良い
他のサーバーとどうやってメッセージをやり取りするの?
ActivityPubってどうやって使うの?
noteのデータが大きくなってきたらどうするの?
noteのデータはDBに保存されると思うけど、それがかなり大きくなったらどうする?
画像はどこに保存されるの?
配信URLはark.jp
村上さんのドメインっぽい
これはS3とかに保存すればいいか(興味が消えた)
BackendもTypeScriptで書かれている
フレームワークnestjs
src/coreがcoreっぽい(小並感)
コミットメッセージ面白い


ActivityPubの実装
ApInboxをちょっと見るといろんなアノテーションがいっぱい
仕組みを理解していない段階でこれを眺めるのは難しそう
雑にActivityPubの勧告読見ながら実装を見ていく基素
2つのレイヤーがある
サーバー間で情報を共有するプロトコル
クライアント-サーバーでのプロトコル
片方だけの実装でも良いが、1つを実装したらもう一方も実装が容易
両者は似ているってことかな基素
サーバーのユーザーアカウントをユーザーのことをActorという
Actorにはメッセージをやり取りする方法(エンドポイント)が提供されている
inbox メッセージを受信する
サーバー間のみが、誰かのinboxにPOSTできる
misskeyだとサーバーのエンドポイントのPOSTの実装はここ(outboxも同様)
キューがつまれる
取り出されるのはどこ?
QueueProcessorServiceがそれっぽい
Activityの種類によって処理が行われる
actorはinboxからGETすることでメッセージを読むことができる
キューの実装はbull
BullMQに差し替えるPRを出すと喜ばれるかもしれない
redis 5だから..という話もあるけど、とっくにredis7だからこの点は問題ない
outbox 送信する
ここにActorが送信すると世界中にメッセージが配信される
誰かのOutboxからメッセージをGETすることができる
サーバー to サーバー
サーバー間で別のサーバーのユーザーのメッセージを受け渡すときに使うのかな基素
クライアント to サーバー
AlyssaがBenにメッセージを送信するとき、まず自分のoutboxにpostする
するとサーバーがbenのinboxにpostする
BenのActivityStreams actor objectを検索する
ということは、misskeyのinboxの実装にもこういう実装があるはず基素
AlyssaのスマホはinboxにGETをポーリングしてメッセージを確認する
GET /inbox の実装どこ?


noteのデータがどうなっているのか
OpenAPIを使ってドキュメントを自動生成しているっぽい
>MisskeyはRESTを採用していません。


貢献できそうなポイント
トレンドのハッシュタグのロジック

起動時に出るMisskeyのアスキーアートを発見したMijinko_SD