はじめに
Bluesky、楽しいですね。
「Bluesky Advent Calendar 2024」12月23日分です。 https://adventar.org/calendars/10752
アカウントは昨年の3月に招待コードを貰って乱入、昨年の内は投稿やフィードを楽しむばかりだったのですが、年明けからツールを作る側からも遊ばせてもらってます。
SNSとしては先日唐突にサービスが始まった「mixi2」も楽しいんですけど、mixi2は自分にとっては同窓会的な楽しさなんですよね。おそらくあそこで新たな縁が生まれることは少ない気がします。
対するBlueskyは、Twitterに出会った頃を思い出す楽しさです。 まだS3とEC2しかなかった(EBSすらなかった)頃のAWS、アマゾンのエマーソンさん主催のウェブワークショップで、
Twitterって新しいサービス知ってます? 面白いですよ。
と紹介されたその場でアカウントを作った頃を思い出します。
ウェブワークショップ参加中~
午後8:08 · 2007年4月26日
https://x.com/hidea/status/40528792
これが当時のTwitterへの初投稿でした。
そして16年後の同じ4月、
来た。
2023年4月6日 17:11
https://bsky.app/profile/hidea.bsky.social/post/3jsotv2ieok2a
Blueskyへ来ました。
自分のBluesky、そしてAT Protocolへの理解は表面的なものです。
後述するbot、投稿クライアント、ツールの実装で得られたAPIで露出しているインターフェイスこそわかっていても、AT Protocolの仕組みやモデレーション、ラベラー、この記事を置いている「WhiteWind」をはじめとするPDSを活用したサービスへの理解は限定的です。
それでも十分、楽しめています。 理解が限定的ということは、まだまだ楽しむ先があるということですし。
成果物
それでは、遊んだ成果物をざっくり紹介します。
フィード
フィードは今のところすべて「SkyFeed」製です。
ユーザーの増加による負荷への対応が優先されているからか、いまだビデオのフィルタリング未対応ですが他のフィードジェネレーターに移行するよりSkyThrow等の開発を優先してしまってます。
Japanease Super Hot Text
テキストのみのLikeが多い投稿フィード。上記の通り動画が取り除けていません。
HotNews Japan
リストに登録したニュース系アカウントのRP、Likeが多い投稿のフィード。
ペンギン写真部
ペンギン写真を含んだ投稿。こちらは逆に動画を含めることができてません。
BRM - BREVET
フランス発祥ロングライドサイクリング「ブルベ」の投稿。ブルーベースのブルベ・イエベとは別物です。
日本国内でも全国津々浦々、数多く開催されています。 4年に1度開催される1200kmのブルベ「PBP(パリブレストパリ)」は2回完走しました。
SkyThrow EgoSearch
後述するBluesky投稿専用クライアント「SkyThrow」に言及した投稿。 このフィードを覗いていいねしたり、サポートしたりしています。
新刊bot
2月頭からひたすら新刊情報を投げているアカウントです。
そろそろ20万ポストなんですけど、これをフォローしている人が239人もいるんですよね。 運営しておいてなんですけど、このアカウントフォローしてTL溢れたりしないのでしょうか?(当然、自分自身ではフォローしていません)
こちらはその日に発売される新刊を投げているだけなので穏当です。
どちらも投稿には、mattnさんのbskyコマンドを利用してます。
bsky
bluesky CLI client written in Go
https://github.com/mattn/bsky
ウマ娘ダイアグラム 生誕日bot
「ウマ娘プリディーダービー」好きが高じてつくったデータベース。
netkeibaをスクレイピングしてウマ娘に成った競走馬のみの記録を楽しめるようにしました。
ウマ娘ダイアグラム
https://umadiagram.com/
そのウマの誕生日に、Blueskyの下のアカウントへ戦績を投げるbotをつくりました。それまで𝕏には手動で投げてたんですけど、100頭を越えてさすがにツラくなってきたので自動化😅
ウマ娘ダイアグラム
https://bsky.app/profile/umadiagram.com
firebase Functionを定期実行して投げてます。 サービス自体はFlutter web製ですが、投稿には公式のTypeScriptライブラリを使ってます。
ATP API
This API is a client for ATProtocol servers. It communicates using HTTP.
https://www.npmjs.com/package/@atproto/api
ウマ娘のゲームはちょっと惰性になってますが、北海道へ行った際の牧場巡りはまだ全然楽しんでます。ちなみに競馬場には人生でまだ3回しか行ったことがありません(帯広、船橋、金沢)すぐ近くに昨日有馬記念も開催された中山競馬場があるのに…(中山競馬場の前はよく通ります)
SkyThrow
Bluesky向けの投稿専用クライアントです。
先のふたつのbotを作って、これならアプリも作れるなと。 幸い、アプリ作りで多少は慣れていたFlutter/Dartに、Shinya Kato氏がメンテしているライブラリがありました。
AT Protocol and Bluesky Things for Dart/Flutter
https://atprotodart.com/
投稿だけなら欲しいクライアントをつくる算段がたってました。
閲覧の方は公式クライアントへの不満もそれほどありませんでしたし、なによりフルクライアントはやることが多すぎて完成まで作り込めるビジョンが思い描けませんでした。
SkyThrowを作り始めた頃にリストアップしたものです。
- 公式クライアントにある機能は踏襲する
- 簡単マルチアカウントの切り替え
- ハッシュタグサポート
- 画像の編集(特に傾き調整)
- 予約投稿
予約投稿以外は実装しました。リリースして半年以上経ちますが、自分自身がヘビーユーザーとして便利に使えているので満足しています。
予約投稿への対応は、OAuth対応後かな…
アプリは2月末に作り始めて、4月頭にiOS/Androidのストアへ提出。 あわよくば4月13日に開催された「Bluesky Meetup in Tokyo vol.2」でお披露目したいと目論んでいたのですが当日までに審査すら始まりませんでした…😐
開発については今日、Qiitaの「Flutterアドベントカレンダー」に利用しているパッケージの記事を書きましたのでそちらをご覧下さい。
Bluesky投稿専用クライアントをつくった
https://qiita.com/hidea/items/2fb221b898faa5b6a9c3
作ってみると複数のタブを開くことができるブラウザと違って、ひとつしか起動できないアプリにおいて投稿と閲覧が別のアプリに分かれるのは、参照しつつ書けるだけでメリットがあると感じています。
今後予定している機能追加は以下の通り。 年末年始のお休みでスレッド対応はしたいところです。
- 共有時のメモリ負荷の軽減
- 投稿履歴(含む履歴へのリプライ)
- スレッド対応
- 下書き
- 画像編集
- ビデオトリミング
- 設定やハッシュタグのPDSへの保存
- 予約投稿
bskylog
Bluesky向けの過去ログ閲覧アプリです。 ぶっちゃけると「Twilog」です。
10月下旬に冬コミの同人誌の原稿を書きはじめました。
題材は昨年末から8月までの自転車の話。既に投稿の多くを𝕏ではなくBlueskyにしているのもあって過去ログを閲覧しやすくしたい!!! …こんな時にTwilogが対応していればと思ってそのままでっち上げました。
bskylog
for macOS / Windows
https://github.com/hidea/app_bskylog
連呼しましたがウェブサービスであるTwilogと違って、デスクトップのローカルストレージに過去ログを溜めています。そのため可搬性はありません。 そのかわりに運営コストや負荷を気にせずアプリを頒布することができるのは気が楽です。
サーバ運用してデータベースだったら正規表現での絞り込みなんて負荷が怖くてできませんしね。
これもSkyThrowと同じFlutter製、こちらはデスクトップアプリです。
10月26日にプロジェクトを作って、24時間後には過去ログの取得、日付とキーワードでもフィルタリングができる最低限の実装ができてました。 SkyThrowからサインインとか共通で使える箇所をコピペしたとは言え、あらためてAT ProtocolライブラリとFlutterの手軽さを実感しました。
今の仕様のままでよければ(審査を通るのかわかりませんが)スマホアプリ版も動いてます。
WEB版はまだデータベースまわりでエラーが出ていて動作すらしてません。
今後予定している機能追加は以下の通りです。 こちらも年末年始でいくつか機能追加できればと考えています。
- macOSにおけるFlutter TextField日本語入力の不具合調査
- 引用元投稿の削除等、状況変化への対応
- 検索履歴
- 画像ビュー
- ALT、ラベルの表示
- スマホ、WEB版の検討
おわりに
とりとめもなく書き散らかしました。
SNSの便利だけでいえば、𝕏にみんながいてやりとりができるのがもちろん便利なのですが、イーロンさんがオーナーである限り𝕏がかつての姿に戻ることはないでしょう。 いつまで巻き戻したいのか人それぞれでしょうけど。
快適だと言われるBlueskyですが、これからも順調に人が増えれば間違いなく自分から見て不快な人も増えます。
ただかつて人がもっと少なかった頃のTwitterがそうであったように、好きな人と好きでない人がよい意味でクラスタに分断、住み分けができる可能性をBlueskyに感じています。 実際もっと増えてみないと本当にうまく機能するのかわかりませんけど。
そのかわり、すべてに発信するのは諦める必要があるでしょう。 すべてに発信したい人は、不快な人を含めたすべてに晒されるのでそこはバーターですし。
たぶん人類はグローバルに混ぜることなんてできないんですよ。 差別や人権侵害、デマを除いた上での分断はむしろ歓迎します。