{
"$type": "com.whtwnd.blog.entry",
"theme": "github-light",
"title": "Bluesky/atproto入門の手引き",
"content": "Blueskyとかatprotoとか呼ばれるものには様々な側面があるので、区分した上で適切な公式資料へ誘導しようという試み。\n\n### プロジェクトとして(bluesky)\n\nTwittter社が2019年に立ち上げたプロジェクト。\\\n当時の目標はTwitterが参加できる標準仕様を選定/策定すること。\n\nTwitter社自体は目標設定と資金提供が主で、具体的な調査や検討は外部協力者を募って実施していた。\\\nこの時集まった協力者の一部は[dSocialCommns](https://web.archive.org/web/20250116154221/https://dsocialcommons.org/)という別団体に独立している。\n\n* [立ち上げ時の発表](https://x.com/jack/status/1204766078468911106)\n* [当時の成果や参加者](https://gitlab.com/bluesky-community1/decentralized-ecosystem)\n\n### 会社として(Bluesky PBC)\n\nblueskyプロジェクトのリーダーとして抜擢されたJay Graberが目的達成のために2021年に立ち上げた会社。\\\n当初はPBLLC(公益合同会社)だったが、2023年にPBC(公益株式会社)に転換した。\n\n数十名(+100名程度のモデレータ)でプロトコル開発、インフラ実装運用、サービス開発運営、atproto開発者への援助などを行なっている。\\\n2022年まではTwitter社の資金提供を受けており、Jack Dorseyが取締役に名を連ねていたが、現在は縁が切れており、主にベンチャーキャピタルの資金提供で運営されている。\n\n* [企業サイト](https://bsky.social/)\n* [公式Blueskyアカウント](https://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur)\n\n企業に関する情報の多くは[ブログ](https://bsky.social/about/blog)で発信される。といってもあまり多くはないが。\\\n経緯や体制はWikipediaや[インタビュー](https://newsletter.pragmaticengineer.com/p/bluesky)の方がまとまっている。\n\n### SNSとして(Bluesky Social)\n\nBluesky社が開発運営するマイクロブログサービス。\\\nアカウントサーバー(bsky.social)、APIサーバー(api.bsky.app)、ウェブクライアント(bsky.app)等から構成される。多くの利用者は全部セットで使っているが、一部だけの利用も可能。\n\nBluesky社はプロトコル開発とサービス運営を両輪とする方針で、サービス運営時の課題をプロトコルにフィードバックする形で開発を続けている。\n\n* [ウェブクライアント](https://bsky.app/)\n* [利用規約](https://bsky.social/about/support)\n* [クライアント一覧(有志)](https://dolciss.notion.site/c03ea75995154731bc17192b340d2427)\n* [ツール一覧(有志)](https://blueskydirectory.com/utilities)\n\n機能説明の類は各機能リリース時の[ブログ](https://bsky.social/about/blog)記事に頼っているため、実はサードパーティクライアントの方がドキュメントは充実している傾向にある。\\\n利用者による情報も役立つが、古いと仕様が変わっていたりするので、半年くらいを目安に切り捨てることを推奨する。\n\n### クライアントAPI仕様として(bsky lexicon)\n\nBluesky Socialを利用するためのAPIの多くはBluesky Social固有のものだが、ここを指して「atproto」と呼ばれることもある。\\\n利用に際してatproto概念の理解が必要な部分があり、またBluesky互換APIサーバーが作れるようにスキーマがatprotoの作法で定義されているため、誤りというわけでもない。\n\nちなみに、Bluesky互換のAPIサーバーを作る試みについては[別記事](https://whtwnd.com/did:plc:qi6xg6zplzivyu7zrylxuugk/3m7febkde6w2p)も参照。\n\n* [ドキュメント](https://docs.bsky.app/)\n* [API/データスキーマ](https://github.com/bluesky-social/atproto/tree/main/lexicons/app/bsky)\n* [SDKまとめ(有志)](https://sdk.blue/)\n\n[チュートリアル](https://docs.bsky.app/docs/category/tutorials)読めば通り一遍はできるようになるが、詳しいスキーマを知りたければjsonを読むしかないし、読む際は[lexicon仕様](https://atproto.com/specs/lexicon)の知識があった方がいい。\\\n[HTTPリファレンス](https://docs.bsky.app/docs/category/http-reference)にはデータスキーマは無い点に注意。\n\n細かい仕様([レート制限](https://docs.bsky.app/docs/advanced-guides/rate-limits)や[モデレーション](https://docs.bsky.app/docs/advanced-guides/moderation)等)や仕様の意図(典型的には[「`createdAt`はなぜ必要なのか」](https://docs.bsky.app/docs/advanced-guides/timestamps)等)が知りたい場合は[Advanced Guide](https://docs.bsky.app/docs/category/advanced-guides)も参照。\n\n### マイクロブログプロトコルとして(Bluesky network)\n\n語義は明確ではないが、大まかにBluesky Social APIサーバーから見える範囲[^socl]を指して「Bluesky」と呼ばれることがある。\\\nセルフホストのアカウントサーバー(PDS)からBluesky Social互換のデータ形式で投稿したアカウントとか。\n\n[^socl]: Bluesky以外の互換APIサーバー(appview)の存在が考慮されることは無い印象がある。例えばsocl.isは独自のappviewを持つが、こっちでしか見えないアカウントはBluesky networkの外にあると判断されるだろう。実際にはsocl.isアカウントからの投稿も時々Bluesky appviewにインデックスされる場合があるので扱いが微妙だが。\n\nこのネットワーク構造はいかにもatprotoで定められていそうに思われがちだが、実はatproto仕様を見てもあまり書いていない。実際atprotoアプリケーションが全て同じ構造をしているとは限らない。ついでに、投稿やフォローといったマイクロブログ的な概念もatproto層には無く、Blueskyによる追加定義になっている。\\\nということで、マイクロブログをターゲットにするならBluesky側のドキュメントの方が参考になる。\n\n* [ネットワークアーキテクチャ](https://docs.bsky.app/docs/advanced-guides/federation-architecture)\n* [各コンポーネントのセルフホスト](https://github.com/bluesky-social/deploy-recipes)\n* [ネットワークのメンタルモデル](https://atproto.com/articles/atproto-for-distsys-engineers)\n\nとはいえ、Bluesky Socialはatprotoのリファレンス実装としての役割もあるし、典型的な構造ではあるので、最近は少しずつatprotoドキュメントの方にもこのあたりの内容が盛り込まれつつある。\\\nおそらく2026年になったら[この辺](https://atproto.com/guides/the-at-stack)に説明が現れるし、[IETF I-D](https://www.ietf.org/archive/id/draft-newbold-at-architecture-00.html#section-4)でもまとめられている。\n\n### コミュニティとして\n\n利用者視点ではSNS上のコミュニティこそが「Bluesky」になることもあるのだろうけど、語れることが無いので割愛。\n\n人によって見える範囲も変わるので、身近な人に聞くのが一番。\\\nグローバルな動向が知りたい場合は[Connected Places](https://connectedplaces.leaflet.pub/)等が助けになりそう。\n\n### データ共有プロトコルとして(atproto)\n\natproto自体の説明は難しいが、大まかにデータの公開と同期のためのプロトコルという理解でいいだろう。\\\nbsky非互換のサービスを作りたいとか、インフラ(PDS, relay)を独自実装したい場合にここの知識が必要になる。\n\n[IETFで標準化を狙っている](https://datatracker.ietf.org/group/atp/about/)のもこのレイヤ。\n\n* [公式ドキュメント](https://atproto.com/)\n* [Bluesky開発ブログ(内容はatproto寄り)](https://docs.bsky.app/blog)\n\n何かを作ることが目的なら、まず[Statusphere](https://atproto.com/guides/applications)と[Bluesky](https://docs.bsky.app/docs/category/advanced-guides)で具体例を見てから気になるところだけ仕様を深掘りすることをお勧めする。\n\n### エコシステムとして(ATmosphere)\n\natproto周辺のエコシステムをATmosphere[^atmosphere]と呼ぶ。\\\nBluesky非互換のatprotoサービスを含むものと思えばいい(Bluesky networkの意味で使われることもある)。\n\n[^atmosphere]: 公式にはA**t**mosphereだが、一般名詞と区別がつきにくいので、ここでは[発案時](https://bsky.app/profile/did:plc:bnqkww7bjxaacajzvu5gswdf/post/3k26nw6kwnh2e)の表記であるA**T**mosphereを採用する。\n\nBlueskyで作ったアカウントが他にどんな用途に使えるか気になったらこの辺りを漁ればいい。\\\nサービス開発時のフレームワークやライブラリを探すにも役立つかもしれない。とはいえ、あまり綺麗にまとまっているものは無いが。\n\n* [atprotoツール一覧(有志)](https://bskyinfo.com/categories/at-protocol-tools/)\n* [開発者コミュニティ](https://atprotocol.dev/)\n\n手前味噌だが、[この記事](https://whtwnd.com/did:plc:qi6xg6zplzivyu7zrylxuugk/3maicyekt2p2y)も助けになるかもしれない。",
"createdAt": "2025-12-29T10:41:23.561Z",
"visibility": "public"
}