2 ポイント 投稿者 GN⁺ 2024-11-17 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2024-11-17
Hacker Newsのコメント
  • BlueSkyが良い理由は2つある。ユーザー名に自分のWebサイトのドメインを使えるので、@bradgessler.com のようにできることと、iOSでメッセージに画像をコピー&ペーストする機能がちゃんと動くこと。
    X/Twitterではこれはずいぶん前から壊れていた。ほかにも多くの利点はあるが、この2つが特に良いと感じる。入り口が必要なら、Rubyハッカー向けのスターターパックも作ってある: https://go.bsky.app/HXB2cPh
    ほかにもスターターパックやコミュニティは非常に多い

    • より重要なのは、そのドメインを所有していることの検証が必要だという点。google.com では登録できない
    • その理屈はXにも当てはまる。BlueSkyでのドメイン検証はDNSを通じて did:plc 識別子にマッピングされ、AppView(bsky.app、BlueSkyのスマートフォンアプリなど)はBlueSkyが所有する「データベース」である plc.directory だけを参照する。
      ユーザー名が本物のドメイン名になるには、BlueSkyが did:web 種類の識別子をサポートする必要があるが、現時点ではそうではない。結局、ユーザー名が内部データベースにマッピングされるという点ではXと同じだ。BlueSkyは、投資家に資金を返さなければならなくなる前のTwitterに近く、10年後には投資回収に集中するあまり、より多くの機能が壊れる可能性に賭けてもいい。ActivityPub側に少し偏ってはいるが、BlueSkyのアーキテクチャのほうが優れている点は認める
    • ドメインをユーザー名として使える機能があったので、最初にBlueSkyのウェイトリストに入った。
      11年前、ユーザーが検証済みドメインを持っていないと登録できないソーシャルメディア集約サービスを作ったことがあり、ドメインをユーザー名にして、そのドメインでソーシャルメディアのプロフィールを認証する方式だった。当時のShow HN: https://news.ycombinator.com/item?id=6529523
      ばかげて見えるかもしれないが、結局BlueSkyを使わなかった理由は絵文字ドメインをサポートしていなかったからだった
    • ThreadsやMastodonのような流れになりそうだ。結果はせいぜい生ぬるいものだろうが、楽しんでいるなら何より
  • bsky firehoseは本当に面白く、2005年に戻ったような懐かしさがある。
    先週末、これを使ってかなりsillyな小物を作ってみた: https://bigmood.blue/

    • かなり素敵で気に入った。黒い画面と画像の繰り返しの代わりに、指数バックオフ付きキューのようなものを置くと、もっとすっきりしそうだ。
      表示方式の問題だと仮定すると、同じ固有画像が短時間に何度も繰り返されているように見える。キューが空に近づくほどゆっくり取り出す方式(例: 0.5s/numInQueue、最後の要素は最低0.5秒待ち、次の要素がキューに入るのを待つ)なら、流れがより一定になり、空白画面も繰り返しも減りそうだ。画像が元のアスペクト比を保ってくれてもよい
    • アイデアは良いが、点滅が速すぎる。firehoseをそのまま見せるより、1秒ごとにランダムに1つ選ぶ方式のほうがよいかもしれない
    • 点滅を減らす方法はあるだろうか?てんかんはなく、事前に警告を出してくれたのはありがたいが、2秒ほど経つとそれでもかなり不快だ。
      もう少し長く見られるなら、面白い実験になりそうだ
    • ぴったりのサウンドトラックがある(点滅する光への警告): https://www.youtube.com/watch?v=wNtxgxYY7sI&t=66s
    • 「2005年に戻ったような懐かしさ」というより、人々にプラットフォームへ投資させ、囲い込んだうえで料金を請求しようとする流れのように感じる
  • 昔の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の学習データになりそうな気がする

    • 結果は2つに1つだ。誰もがアクセスできるか、少数の大企業だけがアクセスできるか。理想的ではなくても、前者のほうがはるかに良い
    • データへのアクセス権が少数の大企業だけにあるより、全員に開かれているほうがまし
    • 公平に言えば、CCTVカメラのある道を歩くだけでも、すでに何らかのAIの学習データになっている可能性は高い
    • 研究者は、LLMの吐き出したものに汚染されていない昔のデータを欲しがりそうだ
  • 単語1つのfirehoseデモが素晴らしい。創造的な人たちがこれで本当にかっこいいものをたくさん作れそうだ

  • Twitterに重要なアカウントがあり、そこに投稿・考え・リンク・告知などを手動で載せている。
    ThreadsとBlueskyへ自動でクロスポストする方法を探してみたが、見つからなかった。おすすめの方法はあるだろうか?

    • それもまた別の問題だと思う。ソーシャルメディアデータを移行する実用的な方法がない一方で、可能になれば大半は悪用されるからだ
    • 複数の場所に投稿できるようにするアプリとしてOpenVibeYupがある