Web開発
ATProto Spaces: 非公開データを可能にするATProtoの新拡張機能
ATProto spaces: A new extension to ATProto that enables non-public data (atproto.com)
要約
ATProtoは、これまで全てのデータが公開される設計でしたが、今回新たに「Spaces」というプロトコルプリミティブが導入され、非公開データの保存と同期が可能になりました。Spacesは、ユーザーのポータブルなIDやデータの相互運用性といったATProtoの利点を維持しつつ、設定、ブックマーク、プライベートフォーラム、サブスクリプション型アプリなど、様々なユースケースに対応します。現在、開発者向けにアルファ版が公開されています。
全文翻訳
ATProtoがローンチされて以来、最大のアップデートが、今すぐ開発に着手できるアルファ版として利用可能になりました!このプロジェクトは、多くの名称を経て(当初はプライベートデータ、次にパーミッションドデータ、一時的にバケット、そして現在はATProto Spaces)、長い道のりを経てきました。フォーラムでの初期の議論から、2月の最初の開発日記、そして完全な提案に至るまで、プロトコルの設計はエコシステムのフィードバック、貢献、議論を通じて進化してきました。これは、Blueskyチームだけでなく、Atmosphere全体にとって大きな取り組みです。
設計上、今日プロトコルに保存されている全てのデータは公開されていることを思い出してください。全ての投稿、フォロー、いいね、ブロック。これらのデータはすべて、誰でもホストできる分散型サーバーネットワークに保存され、誰でもアクセスできるグローバルなファイアホースによって収集・再放送されます。これにより、BlueskyやTangledのような大規模アプリケーションを、オープンにロックされたネットワーク上で構築することが可能になります。
もちろん、公開されていないデータに依存する機能や製品全体も存在します。設定、プライベートブックマーク、数十人から数百万人のメンバーがいるフォーラム、サブスクリプション限定の出版アプリなどは、完全に公開されていないデータモデルを必要とします。
Spacesは新しいプロトコルプリミティブであり、ATProtoのポータブルID、相互運用可能/リミックス可能なデータ、パーミッションレスな参加といった利点を維持しながら、非公開データを保存・同期する方法を提供します。
本日、実行可能なコード、公開されたSDK、サンプルアプリ、そしてアカウントを作成して開発できるホストされたPDSとともに、アルファ版を提供します。これは真のアルファ版です。破壊的な変更が発生する可能性があり、本番コードをこれに対して実行することは絶対に避けるべきです。
Spaceとは何か?
ATProto Spaceは、特定のユーザーやアプリケーションのみがそこに公開されたデータにアクセスできるようにゲートされた、ミニチュアATProtoネットワークと考えることができます。各SpaceがミニATProtoであると言うのは少し「ヘビーデューティ」に聞こえるかもしれませんが、Spacesは実際には非常に軽量でオーバーヘッドが少ないです。Spaceは最小限のオーバーヘッドで単一のレコードを持つこともできれば、10億レコードまでスケールアップすることもできます。
Space自体を除けば、物事は馴染み深いものになるはずです。ユーザーはDIDを持っています。ユーザーは自身のリポジトリにデータをホストします。レコードはJSONであり、Lexiconによって定義されます。アプリケーションはリポジトリを同期し、データのビューを構築します。
Spaceへのアクセスは、Space Authorityによって制御されます。これは、他のアカウントと同様のDIDです(そして、場合によっては実際にはあなたのアカウントです!)。Space Authorityは、どの他のDIDがSpaceにアクセスすることを許可されるかを決定します。レコードは、作成者のPDS上の、Spaceごとのパーミッションドされたリポジトリに格納されます。
重要なのは、Spacesはアクセス制御を提供するのであって、機密性を提供するのではないということです。Space内のデータは、Spaceへのアクセス権を持つ任意のユーザーまたはアプリケーションが読み取ることができます。暗号化されていません。
Spacesは非常に柔軟なプリミティブであり、その使用範囲は意図的に広いです。最小のSpaceはちょうど1つのメンバーを含み、設定、下書き、ブックマーク、その他のアプリが保存したいプライベートデータなどの保存に役立ちます。Spacesは、サブスクリプション限定の出版物を配布したい発行者のような、ゲートされたコンテンツにも機能します。
Spacesが本当に輝くのは、ある意味で設計されたのは、共有されたソーシャルコンテキストを確立することです。この能力において、最大のSpaceは数百万人の参加者に成長する可能性のあるコミュニティになります。
Spaceデータの同期プロトコルは、大幅に軽量化されており、リアルタイム同期のための機能を提供します。これは、公開ブロードキャストプロトコルとは異なり、Spaceに保存されたデータのリレーという概念がないためです。公開データの場合、リレーはアプリケーションがネットワーク全体のすべてのデータにアクセスできるようにするのに役立ちます。しかし、Spacesの場合、コンテンツを再放送することが望ましくないことがよくあります。アプリケーションは、PDSホストから直接Spaceデータを同期します。
実験のためのホストされたPDS
インフラストラクチャを実行せずにプロトコルをテストしたい場合は、幸運です!私たちはそれをホストしており、最新の変更に合わせて更新し続けます。招待コードとアルファPDSへのリンクについては、BPSアカウントにアクセスしてください。これは共有サンドボックスであり、使いやすく保つ予定です。モデレーションの問題を引き起こしたり、ネットワークの非生産的な乱用に関与したり、またはSpacesの実験以外の目的でPDSを使用しようとしたりすると、アルファ版から永久に追放されます。また、PDSに保存されているデータは、永続的でも安定しているわけでもないことを期待してください。データモデルは変更され、警告なしにすべてを削除することさえあります。PDS全体はアルファ版の終了後に削除されます。ホストされたPDSとSDKは木曜日に更新する予定です。変更はatmosphere.communityのアナウンススレッドに投稿しますので、購読してください。
Spaces対応PDSの実行
独自のPDSを実行したい場合は、Spacesをサポートするタグ付きDockerイメージをghcr.io/bluesky-social/atproto:pds-spaces-alphaで維持します。このイメージは、参照PDSディストリビューションと互換性があり、新しい設定は必要ありません。
これはアルファソフトウェアです。本番環境では使用しないでください。破壊的な変更が発生し、データベーススキーマはクリーンな移行なしに変更される可能性があります。実際の Счета をこのバージョンに移行することは強く推奨しません。バージョン間でクリーンにアップグレードすることさえできないと予想してください。とはいえ、テストデータで新しいPDSを使用してください。Spacesとそれらで構築できるアプリケーションの種類を探求してください。バグを報告し、期待していたことが異なる方法で機能した場合はお知らせください。
すでにいくつかのエコシステムプロジェクトが提案された仕様の実装を開始しているのを見てきました。
ZDS、Zigプログラミング言語で書かれたPDS
atproto-crates PDS、Rust PDS
rsky PDS、Blackskyが管理する別のRust PDS
HappyView、AppViewフレームワーク
実際のプロトコルには多くの相互運用可能な実装があり、エコシステムがこの分野をリードしているのを見るのは素晴らしいことです。
サンプルアプリとアルファSDK
https://bulletin.my で実行されているサンプルアプリがあります。このアプリでは、あなたのミューチュアルが付箋を残すことができる掲示板(Spaceとして!)をホストできます。あなたのフォロワーだけがあなたのボードを見ることができます。コードはhttps://github.com/bluesky-social/bulletin で入手できます。ローカルで実行するか、フォークして新しいものにリミックスしてください!独自のPDS実装をお持ちの場合は、ログインしてすべてが期待どおりに機能するかどうかを確認してください。
これをサポートするために、TypeScriptの@atprotoパッケージをアルファスナップショットバージョンとしてリリースしました。これらはアルファタグでインストールできます。それらが実際に動作している様子を確認するには、bulletinリポジトリをチェックしてください。
提案とコード
プロトコルについてさらに深く知りたい場合は、プロトコル仕様の最新バージョンをproposalsリポジトリで見つけることができます。独自のATProto Spaces実装に取り組んでいる場合は、これが協力するためのものです。提案を現在の参照実装に合わせて最新の状態に保ちます。曖昧な点や、実装と提案が異なる場所を見つけた場合は、issueを開いてください。参照実装は、atprotoリポジトリのatproto spacesブランチで見つけることができます。このブランチは積極的に開発されており、公開されているパッケージやPDSと一時的に乖離する可能性があります。
これはアルファであることを忘れないでください
すでに何度も述べられているように、開発を続けるにつれて変更が発生することを期待してください。具体的には、これは次のことを意味します。
コードは慎重なセキュリティレビューを受けていません。機密情報をアップロードしないでください。あなた自身のものも、特に他人のものもアップロードしないでください。
バックアップは実行していません。破壊的なデータ移行を行う可能性があります。失いたくないコンテンツはアップロードしないでください。復旧パスはなく、作成することもできません。
アルファPDSはアルファの終了とともに消滅します。そこにあるアカウントは、誰かに依存するように勧めるべきアカウントではありません。開発者以外のユーザーをそこに向けないでください。
プロトコル設計、SDK、データベーススキーマは最終ではありません。構築するものはすべて、おそらく必要となるでしょう