月額2.50ドル未満でBlueskyのファイアホースを消費する
(bsky.bad-example.com)- Blueskyの公開データは1,500万人のユーザー規模まで拡大しており、Jetstreamを使えばネットワーク上のイベント全体をリアルタイムで受け取り、実験できる
- WebSocket JSONフィード形式のファイアホースなので、ブラウザからでも接続でき、簡単なリアルタイムデータ実験なら無料で始められる
- サンプルアプリは
deleteイベントを検知し、削除されたばかりの投稿テキストを匿名化された消えていくフィードに最後に表示する - 運用環境はFly.ioのshared-cpu-1x 256MB RAMマシンと2GBの永続ボリュームで、費用はそれぞれ月額1.94ドルと0.30ドル
- すべてのファイアホースアプリがこれほど小さく動くとは限らないが、一部のリアルタイム消費アプリは最小インスタンスだけでも十分に運用できる
JetstreamでBlueskyファイアホースを受け取る
- Blueskyのデータは非常に公開性が高く、現在1,500万人のユーザー規模の公開データが存在する
- Jetstreamを使うと、ネットワークで起きているすべての出来事をリアルタイムのWebSocket JSONフィードとして受け取れる
- ブラウザから直接ファイアホースに接続し、現在投稿されている文章からランダムな単語を取り出すような簡単な実験も可能
削除イベントを表示する小さなアプリ
- 実験用アプリdeletions.bsky.bad-example.comは、ファイアホース上のすべての
deleteイベントを監視し、削除されたばかりのテキストを匿名化された消えていくフィードに表示する - このアプリはBlueskyネットワークが今よりはるかに小さかった頃に作られ、現在はネットワーク速度が混沌とするほど速くなっている
- Fly.ioの最小インスタンスで動作する
- Fly machine, shared-cpu-1x, 256MB RAM: 月額1.94ドル
- 2GB Persistent volume: 月額0.30ドル
- 動作フローは単純なキャッシュと削除イベントのマッチングで構成される
app.bsky.feed.postコレクションのすべての新しいcreate-postイベントを受信する- 空の投稿を除外し、メンションとリンクに**墨消し処理(redaction)**を適用する
- 整形したテキストを
did+rkeyキーでpebbledbに保存する - 数秒ごとに48時間より古い保存済みテキストを範囲削除する
delete-postイベントが来たらキャッシュからテキストを探し、見つかれば現在の閲覧者へブロードキャストする
- 機能範囲は小さいが、Fly.ioの最小インスタンスで安定して動作しており、より興味深い一部のアプリも同程度の規模で運用できる可能性がある
1件のコメント
Hacker Newsのコメント
BlueSkyが良い理由は2つある。ユーザー名に自分のWebサイトのドメインを使えるので、@bradgessler.com のようにできることと、iOSでメッセージに画像をコピー&ペーストする機能がちゃんと動くこと。
X/Twitterではこれはずいぶん前から壊れていた。ほかにも多くの利点はあるが、この2つが特に良いと感じる。入り口が必要なら、Rubyハッカー向けのスターターパックも作ってある: https://go.bsky.app/HXB2cPh
ほかにもスターターパックやコミュニティは非常に多い
did:plc識別子にマッピングされ、AppView(bsky.app、BlueSkyのスマートフォンアプリなど)はBlueSkyが所有する「データベース」である plc.directory だけを参照する。ユーザー名が本物のドメイン名になるには、BlueSkyが
did:web種類の識別子をサポートする必要があるが、現時点ではそうではない。結局、ユーザー名が内部データベースにマッピングされるという点ではXと同じだ。BlueSkyは、投資家に資金を返さなければならなくなる前のTwitterに近く、10年後には投資回収に集中するあまり、より多くの機能が壊れる可能性に賭けてもいい。ActivityPub側に少し偏ってはいるが、BlueSkyのアーキテクチャのほうが優れている点は認める11年前、ユーザーが検証済みドメインを持っていないと登録できないソーシャルメディア集約サービスを作ったことがあり、ドメインをユーザー名にして、そのドメインでソーシャルメディアのプロフィールを認証する方式だった。当時のShow HN: https://news.ycombinator.com/item?id=6529523
ばかげて見えるかもしれないが、結局BlueSkyを使わなかった理由は絵文字ドメインをサポートしていなかったからだった
bsky firehoseは本当に面白く、2005年に戻ったような懐かしさがある。
先週末、これを使ってかなりsillyな小物を作ってみた: https://bigmood.blue/
表示方式の問題だと仮定すると、同じ固有画像が短時間に何度も繰り返されているように見える。キューが空に近づくほどゆっくり取り出す方式(例: 0.5s/numInQueue、最後の要素は最低0.5秒待ち、次の要素がキューに入るのを待つ)なら、流れがより一定になり、空白画面も繰り返しも減りそうだ。画像が元のアスペクト比を保ってくれてもよい
もう少し長く見られるなら、面白い実験になりそうだ
昔のTwitterの良い時代に戻った感じがする。当時はAPI相手に何かを作ったり実験したりできた。
以前、コンテストで優勝したボットを作ったこともある: https://theexceptioncatcher.com/blog/2015/11/how-i-got-my-bo...
素晴らしい機能で、政治的立場を抜きにしてもXよりBlueSkyを応援する大きな理由になる。
BlueSkyや第三者が複数種類のダンプをzipファイルで提供しているのかも気になる。そのほうがサーバー負荷を減らすにはよさそうだ
以前、一般の開発者でもアクセスできた時代に、Twitterのfirehoseで遊ぶのは楽しかった。そのアイデアが戻ってくるのを見ると期待してしまう
これは素晴らしい。Elon以降のTwitterが出した閉じた新APIルールとは鮮明な対比だ
Twitterが自分の自動化を全部壊しておいて、月100ドル払えと言ってきたことに、今でも腹が立っている。今は200ドルまで上がっているようだ。
そのくらいだと自分の自動車ローン並みだ。普通の個人が正当化できる金額ではない
近い将来、このデータが何らかのAI/LLMの学習データになりそうな気がする
単語1つのfirehoseデモが素晴らしい。創造的な人たちがこれで本当にかっこいいものをたくさん作れそうだ
Twitterに重要なアカウントがあり、そこに投稿・考え・リンク・告知などを手動で載せている。
ThreadsとBlueskyへ自動でクロスポストする方法を探してみたが、見つからなかった。おすすめの方法はあるだろうか?