ハッシュタグリレーの話

#1

ハッシュタグリレーは、 @noellabo の開発・運用しているActivityPubのリレーサービスです。
https://hashtag-relay.dtp-mstdn.jp

本トピックは、開発・運用の話から、利用者向けの案内、機能・サービスについてのディスカッション、その他、関連する話であればなんでもOKです。

#2

ハッシュタグリレーの基本機能は、接続サーバーから全ての公開トゥートを受け取って、ハッシュタグ付きの公開トゥートだけを選別して接続サーバーへリレーすることなんですが、追加の機能をいろいろ開発中で、利用可能な形でβテスト中です。

個人参加

  • ユーザー単独でリレーへ送信する
  • ユーザー単独でリレーから指定したハッシュタグ・指定したアクターを選択受信する

これは、サーバ単位でのリレー参加が難しい大規模インスタンスや、逆に小規模でリソース制限の厳しいサーバで、個人単位でリレーに参加することを可能とするための拡張です。

リレーへの送信は、リレーのアクターが対象をFollowすることで実現しています。

副作用として、公開だけでなく、未収載とフォロワー限定の投稿もリレーに送信されることになっています。フォロワー限定投稿は、なんであれフォロワー以外が受信することはできませんが、未収載は現在、個人受信している人にリレーされています。

リレーからの受信は、ユーザーのホームタイムラインに届けるため、リレーのアクターが対象にAnnounce(ブースト・リノート他)する形で実装されています。

副作用として、ユーザーのサーバーが投稿本体をフェッチするため、サーバーの連合タイムラインへも流れることになります。また、個人参加者が送信した未収載の投稿も、ユーザーのホームタイムラインにAnnouceされて表示されています。

送信(Announce)は、いまのところ、指定したハッシュタグ、指定したユーザーのみに限定しています。これは、サーバー管理者にとって、所属ユーザーがリレー受信を勝手に開始されると、リレーに参加していない意志決定が無意味になるからで、あくまで選択的に一部を受信することだけはフォローと同様の行為として認められるのではないか、というバランス調整によるものです。

Mastodon以外への対応

  • Pleromaのサーバー単位のリレー参加
  • Pleromaのユーザー単位のリレー参加

元々がMastodonのことだけを考えて実装されたPubRelayを元にしているため、他のActivityPub対応サービスに上手く適合していません。まだあまり手が回っていないのですが、Pleromaだけ先行して、対応可能な範囲ですりあわせを行いました。

Pleromaへの対応

  • Pleromaの、サーバ単位のリレー接続手順との互換機能
  • 個人参加のLDSなし投稿をAnnounceに変換する機能

Pleromaは、Pleromaのリレーサービスとの接続機能を持っていますが、Mastodonのそれとは接続手順が微妙に異なるため、そのままでは対応できません。そのため、Pleromaからの接続要求を判別して、Pleromaに合わせて要求を受け付けるよう対応しました。

また、Pleromaは投稿のLinked Data Signatureに対応していないため、フォローした個人から受け取った投稿をリレーが代理送信すると、投稿者と送信者が一致しないため、Mastodonに受け取り拒否されます。元々、PleromaのリレーはAnnouceで行うようになっていることもあり、それにならって、リレー側でAnnounceに読み替えてリレー先に流すようにして対応しました。

なお、現在、理由が確認できていませんが、Pleromaからの投稿は、受信者のホームタイムラインに表示できていません。何らかの非互換があるものと思いますが、調査中です。

Misskeyへの対応

今のところ、個人参加で、署名の形式か何かで失敗していることだけは確認していますが、非互換のまま放置されています。サーバー単位については、そもそもどうなっているのかすらまだ確認しておりません(すまん)。時間がとれ次第、追って対応していきたいと思っています。

その他のサービス

どこに需要があるかわかっていませんが、対応すると面白そうなところから、互換性を確保していきたいと思っています。

予定している機能

  • サーバー管理者向けの、詳細設定機能
  • ユーザー向けの、詳細設定機能
  • Webからリレーの操作を行う機能

現在、リレーの各種設定は、@relayctl@hashtag-relay.dtp-mstdn.jpという長ったらしいアカウントに対してコマンドをメンションすることで行うようになっています。これはこれで、外部で認証する必要がなく、慣れれば簡単というメリットがあるのですが、初めて使う人にはちょっとハードルが高い利用方法となっています。

また、個人受信する場合は、@relay@hashtag-relay.dtp-mstdn.jpという別のアカウントを自らフォローしておく必要があり、これもまた、複雑なところです。わかる人にはわかる。初見殺し。

機能が追加されるたびに徐々に複雑になっていっているので、もうそろそろ、Webからの設定機能に対応しないとマズイなぁ、と思ってます。

#3

relayctl-tooter

今更、遅リプライですみません。ここに書き込むべきだったネタなのに、忘れてました。
relayctlさん宛のトゥートを生成、クリップボードに貼るところまで半自動化するChrome機能拡張です。

PC版 Google Chromeで、以下のいずれかのURLを開けてる状態で実行してください。

  • /web/timelines/tag/タグ名
  • /tags/タグ名

FAQ

  • 名前の由来?
    relayctlさん宛にトゥートするところまで実行しようと思ってたが、力尽きました。
    (あと、野菜の名前を考えるのを忘れてました)

  • やっつけ仕事にも程がありますね?
    よいところに気づきましたね。再利用品です。
    素材だのプルリクだのフォークだの、常時募集してます。

#4

報告もこちらでよろしいのでしょうか。
relayctlさん宛に、以下のトゥートを行おうとしたところ、

@relayctl@hashtag-relay.dtp-mstdn.jp subscribe #キュアソード

拙作モロヘイヤによって、以下の様にハッシュタグが展開されたトゥートとなり、

@relayctl@hashtag-relay.dtp-mstdn.jp subscribe #キュアソード
#剣崎真琴 #宮本佳那子

結果、以下の様な状況となりました。
57

#キュアソード#剣崎真琴#剣崎真琴#キュアソード は実際には入力できないタグですので、エラーにするか、ふたつのタグとみなして両方登録するかのどちらかが妥当だと思います。

不正なタグは、以下の手順で削除できたようです。

@relayctl@hashtag-relay.dtp-mstdn.jp unsubscribe #キュアソード#剣崎真琴
@relayctl@hashtag-relay.dtp-mstdn.jp unsubscribe #剣崎真琴#キュアソード

この件、モロヘイヤ側の不具合でもあるので、relayctlさん宛のトゥートではタグ展開を行わない修正を先ほどリリースしましたw
以上、ご報告まで。

1 Like
#5

フィードバックこちらでOKです。どしどしお願いしますw

ハッシュタグ文字列、ノーチェックです。対策します。
エラーにしちゃおうかな……。

現在は先頭が#だと何でも通ります。
ただし、どうやっても既存のタグにマッチしないので無意味です。

なお、次の機能追加で、#タグ@noellabo@dtp-mstdn.jp#タグ@dtp-mstdn.jpを導入予定です。
途中スペースなしで続けて書きます。

1 Like
#6

ありがとうございます。

その機能追加はいいですね。
いまちょっと使い道が思いつかないですがw
実装されたら試してみます。