spacetimedb-clients について
SpacetimeDB の各言語 SDK に共通する概念とクライアント処理を解説するスキルです。接続、サブスクリプション、ローカルキャッシュ、生成バインディング、reducer 呼び出しを扱います。
主な機能
- 01クライアント接続のライフサイクル
- 02バインディング生成と命名の指針
- 03サブスクリプションとキャッシュの動作
- 04reducer 呼び出しの指針
- 05複数 SDK の実装リファレンス
活用シーン
- 01SpacetimeDB クライアントの構築
- 02サブスクリプションキャッシュが空の問題の調査
- 03サブスクリプションの選択と管理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ danmossa/ spacetimedb-skills --skill spacetimedb-clientsインストール後、Claude Code で/spacetimedb-clientsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/clients-api.mdclients-codegen.mdclients-connection.mdclients-subscriptions-semantics.mdclients-subscriptions.mdclients.md詳細
言語間で共通する SDK の概念には、このスキルを使用してください。
クライアントの基本的な流れ
- 古いチェックイン済みのサンプルではなく、現在のモジュールからバインディングを生成します。
- ホスト URI、データベース名または ID、任意の認証トークン、および接続コールバックを指定して、
DbConnectionを構築します。 - SDK に応じて、接続を開始するか、ティックします。SDK によっては、接続を進めるまでコールバックが処理されません。
- コールバックを利用する前に、行、リデューサー、サブスクリプションのコールバックを登録します。
- テーブルまたはクエリをサブスクライブします。サブスクリプションが適用されると、サブスクライブされた行がローカルキャッシュに表示されます。
- 生成されたテーブルハンドルを通じて、ローカルキャッシュからデータを読み取ります。
- 生成されたリデューサーハンドルを通じてリデューサーを呼び出し、SDK 固有のイベントまたはイベントテーブルでリデューサーの結果を確認します。
SDK 間で共通するルール
- サブスクリプションハンドルが管理するのはライフサイクルであり、行データではありません。行は接続のローカルキャッシュに保存されます。
subscribeToAllTablesは便利ですが、キャンセルや最適化が困難です。本番クライアントでは、対象を絞った型付きクエリを使用してください。- キャッシュを読み取る前にサブスクライブしてください。キャッシュが空でも、通常はデータベースに行がないのではなく、サブスクリプションが適用されていないことを意味します。
- サブスクリプション解除は非同期です。サーバーが解除を確認するまで、行が残る場合があります。
- 通常のクライアント向けには、公開テーブルと公開リデューサー/プロシージャが生成されます。
--include-privateは、信頼できるツールでのみ使用してください。 - 生成される名前はモジュールスキーマに従います。ローカルにバインディングがある場合は、アクセサーを推測しないでください。
- テーブルを結合するサブスクリプションでは、結合列にインデックスが必要です。重複するサブスクリプションは作業を重複させ、キャッシュの挙動に関する想定を複雑にすることがあります。
リファレンス一覧
| 必要な情報 | 参照先 |
|---|---|
| SDK の概要と言語の選択 | references/clients.md |
| API の一般的な概念 | references/clients-api.md |
| コード生成 | references/clients-codegen.md |
| 接続のライフサイクル | references/clients-connection.md |
| サブスクリプションとその仕様 | references/clients-subscriptions.md, references/clients-subscriptions-semantics.md |
ガイダンス
- SDK のコードを具体的に記述する場合は、言語固有のクライアントスキルを読み込んでください。
- 選択した SDK のリファレンスに別の指示がない限り、ローカルキャッシュを読み取る前にサブスクライブしてください。
- リデューサーの呼び出し方は、生成されたバインディング名と SpacetimeDB のバージョンに合わせてください。
コメント
Markdown 対応