Upgrade to Pro — share decks privately, control downloads, hide ads and more …

atproto spaces概要

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
yamarten
August 22, 2026

atproto spaces概要

ATプロトーク 2026-07-19 + 2026-08-16
https://www.bluecast.app/user/@yamarten.bsky.social

yamarten

August 22, 2026

Transcript

15 slides
  1. 構成要素 クライアント spaceアクセスのOAuthスコープを持つ syncer PDS (repo host) ※認可サーバーは割愛 所属ユーザーのpermissioned repositoryを

    保持する space host spaceのアクセス権や全体設定を管理する syncer spaceのデータを保持するクライアント 用途的にはappviewに近い space user1 user2 space A space A PDS PDS PDS PDS user.example.com public space A space B
  2. 書き込み ① クライアントが自PDSに書き込み クライアントはOAuth認証済みとする syncer ④ ⑤ ③ ② PDSはpermissioned

    repositoryを更新 ③ PDSからspace hostに更新通知 ④ space hostからsyncerに更新通知(任意) ⑥ space PDS PDS PDS PDS ⑤ syncerが対象PDSにデータ要求(任意) 必要に応じてspace hostにPDS一覧を要求 syncerはspaceアクセス権を獲得済みとする ⑥ syncerが対象PDSからデータ取得(任意) ① ②
  3. 読み出し ① クライアントがPDSにspaceアクセスを要求 ② PDSはscopeを確認し、delegation token発行 syncer space ③ クライアントがspace

    hostにspaceアクセス を要求 delegation tokenに加え、client attestationも使う場合がある PDS ③ ④ space hostが独自の基準で判断し、space credentialを発行 ⑤ クライアントが各メンバーPDSにデータ要求 ⑥ PDSが要求されたpermissioned dataを返却 ① ② PDS PDS ④ PDS ⑤ ⑥
  4. 認証 認証情報 発行者 OAuth access token auth server (多くの場合PDS) delegation

    token readerの所属PDS client attestation readerクライアント space credential space host 検証者 何を示すか 標準寿命 reader/writerの 対象spaceに対応する 2週間 所属PDS スコープ有無 (最大180日) space host アクセスを要求して いるアカウント space host 未規定 アクセスするアプリ (例では1分) 各メンバーPDS spaceアクセス許可 1分 (任意) 2時間 (任意) space hostによる認証の基準は実装依存である点に注意 space credentialには部分的な許可は無く、常にspace全体を読める
  5. 識別子 at://did:example:host/ space/example.space/ 3mszi3sr7ssdl permissioned dataやspaceはat-uriを持つ at://{spaceDid}/space/{spaceType}/{skey}/ {authorDid}/{collection}/{rkey} syncer spaceDiD:

    space authority(≒管理者)のDID space user1 user2 space A space A spaceType: spaceのlexiconを示すNSID 具体的なlexicon型は後述 skey: space host内のspaceを識別するキー PDS PDS PDS PDS user.example.com public space A space B 構文はrkeyと同じ(つまり典型的にはTID) その他: permissioned data所有者(≠space host)のDID/collection/rkey at://did:example:host/ space/example.space/ 3mszi3sr7ssdl/ did:example:user/ com.example.data/ 3mt3rtakxef22
  6. at-uriからrecord取得フロー 1. spaceDidを解決し、DIDドキュメントからspace host情報を取得 #atproto_space_hostおよび#atproto_spaceがあればそれを使う 無ければ#atproto_pdsと#atprotoを使う 2. space hostからspace credentialを取得

    目的がspace情報の場合はここでspace hostのAPIを使って終わり 3. authorDidを解決し、DIDドキュメントからPDS情報を取得 4. space credentialを使ってPDSからrecord取得 つまり、PDSがspace hostの場合は、authorDidに何も手を加えずに spaceDidとしても使うことができる
  7. space type lexiconで宣言し、spaceが持てるcollectionやskeyの型を決める collectionはヒントであって強制力は無い点に注意 nameはOAuth承認時に提示され、多言語化できる descriptionは開発者向けの用途説明で、ユーザーには見えない { } "lexicon": 1,

    "id": "com.atmoboards.forum", "defs": { "main": { "type": "space", "description": "A discussion forum", "key": "any", "name": "AtmoBoards Forum", "name:lang": { "es": "Foro AtmoBoards", "ja": "AtmoBoards 掲示板" }, } } "collections": ["com.atmoboards.thread", "com.atmoboards.reply"]

More Decks by yamarten

Other Decks in Technology