この記事は、「Bluesky Advent Calendar 2024 - Adventar」の11日目です!
みなさんブルスコしてますか?
Bluesky で TOKIMEKI というサードパーティクライアントアプリを開発しているほりべあと申します!
TweetDeck のようなマルチカラム・マルチアカウントに最適化しており、公式クライアントではまだない機能も多数対応しています。使え🤜
そんな感じで Bluesky はかつての Twitter のように自由にサードパーティアプリを開発することができるので、公式にない機能も先んじて独自に実装することができます。
私は開発のためにみんながこのSNSに求めている機能は何なのか目を光らせているのと、リクエストやフィードバックもいただいてるので、今回はみんなが欲しいと思っている機能とそれが実際にできるのかを、「それもうすでにうちでできるよ」というPRも兼ねつつ書いていこうと思います。
TOKIMEKI他サードパーティですでにできるよ機能
まずは前座ね。
- 下書き
- ブックマーク
- リポストミュート
これらはかなり要望が多いと思います。いずれも TOKIMEKI で実装済みであり、deck.blue ではブックマークとリポストミュートが、 ぞーぺんさんや Skeets でも下書きに対応しています。
また、ブックマークは公開情報となってもよければ、🔖絵文字をリプライすることでブックマーク的に登録できるカスタムフィードや、Klearsky もあります。
というわけでこれらの機能を使いたければサードパーティクライアントを使おう!!!
公式クライアントでも、先日公開されたサブスクリプションモデルのモックアップでブックマーク等が記載されているように、意識されている機能ではあると思います。無料で使えるかは分かりませんがそのうち来るんじゃないかな。
特にリクエストの多い機能
ここから本題。主に私のクライアントの機能リクエストでいただく要望の中でも多いものとそれを実現できるかです。
既読位置保存とそこから読み進めていく機能
A: 条件によっては実装できるが現時点では難あり
ダントツで多い要望です!!! 100件来たら50件ぐらいこれですね。
既に実装しているクライアントもあるため、できるやろと思われがちですがこれは実は現時点では完全な動作が保証できない機能なのです。
まず既読位置を保存するだけならストレージに保存しておけばいいので簡単に実装できます。ただみんなたちが求めているのは、そこから過去から最新に向かってタイムラインを辿っていきたい、つまりタイムラインの全投稿を余すことなく読みたいという機能かと思います。ここが難しいんダナ!
現在の Bluesky の仕様では最新から過去へページをめくっていくことはできるのですが、その逆、過去から最新方向へページをめくる機能がありません。(ascending 方向の cursor が無い)
そのため前回の既読位置から最新方向に向かってタイムラインを読み進めようと思ったら、一旦最新から既読位置までの全部の投稿を、ページをめくりまくることによって全部取得することになります。
フォロー数が少なくて(100人未満ぐらい?)かつアプリを開く間隔が頻繁である(数時間おきぐらい)であれば、最新から既読位置までの貯まっている投稿数が少ないのでこれでも機能します。
ただそうでない場合は現実的なループで全部の投稿を取得できないため、既読位置とのギャップが埋められません。
実際に今あるこの機能を実装しているクライアントは(私が把握している限りでは)既読位置と最新投稿との間にある「・・・」ボタンや「↓」ボタンで最新方向からスクロール位置を固定してギャップを埋めようとする仕様になっていると思います。フォロー数が少ない場合はいずれギャップが埋まって既読位置から投稿を読めますが、私の場合は何回ボタンを押しても間の投稿が多すぎてすべてを取得できません泣
というわけでこれは現状の Bluesky では実装しても人によっては機能するが、すべてのユーザーへ希望する動作が保証できないのです。
ただ!! あまりにも要望するユーザーが多いので、今のままの使用で何とかうまいこと実装できないか考えてみました。
実装の案としては
- バックグラウンドで夜通し定期取得する(Xアプリはこれ?)
- 過去のタイムライン速度からいい感じのタイムスタンプの cursor を予測して取得する
後者は一部のフィードでのみ可能(Followingタイムラインもできるかな?)かと思います。
試してみてうまくいけば形にしたいと思います。いや逆向きの cursor が実装されれば全部解決するんだけども!頼みます🙏🙏🙏🙏🙏
リストでもリポストを表示してほしい
A: 元のデータにないので(現状は)無理
APIから取得できるリストの投稿一覧にリポストが含まれていないのです。Issue に書くしかないですね誰かお願いします。
ごり押しで行く方法としてはリストメンバーを取得してから全員の投稿一覧を取得して、クライアント側でソートする(TOKIMEKIのローカルリストでやってる)ってのもありますがちょっと非現実的ですね。
自動翻訳
A: お金かかりすぎるからやりたくない
公式クライアントがインライン翻訳を実装していないのもうなずけるほどにこれかなりお金かかるのでみんなサポートしてね🙏 よろしくお願いします🙇♂️🙇♂️🙇♂️🙇♂️🙇♂️
これもあくまでモックアップ段階の Bluesky+ の話ですが、サブスクリプション限定で実装するのは理にかなってると思います。
DMのプッシュ通知
A: サードパーティクライアントでは実装不可
たぶんきっとおそらく。データにアクセスできないからね。
スケジュール投稿
A: ガチればいける
お金はかかる。今のところ Buffer 等のサービスが Bluesky の予約投稿に対応しています。
さいごに
Bluesky と AT Protocol は日々成長しており、どんどん便利になってきてます。Atmosphere サービスも増えまくってますね!
今後の成長に注目!!! みんなも引き続きブルスコを使っていこうね。
🌈最後に宣伝🌈
TOKIMEKI は下書きやクラウドブックマークを含め多彩なテーマ、Web Push、投稿プッシュ通知、各種リアクション・フォロー数等の数字を隠す設定などに対応した多機能軽量マルチカラムクライアントです!
公式アカウント: https://bsky.app/profile/tokimeki.blue
Androidアプリ版もあり、iOSも TestFlight でベータ版を公開中!
ぜひ使ってね。ときめけ!!!!!!!
関連記事
アドベントカレンダー10日目のzakiさんがTOKIMEKIがもっと便利に使えるChrome拡張機能を作ってくれたよ!