cqrs-implementation について
cqrs-implementationは、開発者向けのCQRS実装ガイドです。コマンドとクエリのモデル分離、主要コンポーネント、実践上の指針を解説し、詳細なテンプレートと例はreferences/details.mdにあります。
主な機能
- 01コマンドモデルとクエリモデルの分離
- 02コマンド、イベント、クエリの解説
- 03読み取りモデルの投影
- 04イベントのバージョン管理
- 05詳細なテンプレートと例
活用シーン
- 01読み取りと書き込みを別々に拡張
- 02イベントソーシングシステムの構築
- 03複雑なクエリとレポートの最適化
- 04異なる読み書きデータモデルの設計
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wshobson/ agents --skill cqrs-implementationインストール後、Claude Code で/cqrs-implementationを入力して読み込まれたか確認します。
同梱ファイルreferences/details.md
詳細
CQRS の実装
CQRS(コマンドクエリ責務分離)パターンを実装するための包括的なガイドです。
このスキルを使用する場面
- 読み取りと書き込みの関心事を分離する
- 読み取りを書き込みから独立してスケールさせる
- イベントソーシングシステムを構築する
- 複雑なクエリシナリオを最適化する
- 読み取り用と書き込み用で異なるデータモデルが必要
- 高性能なレポート要件がある
中核となる概念
1. CQRS アーキテクチャ
┌─────────────┐
│ Client │
└──────┬──────┘
│
┌────────────┴────────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Commands │ │ Queries │
│ API │ │ API │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Command │ │ Query │
│ Handlers │ │ Handlers │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Write │─────────►│ Read │
│ Model │ Events │ Model │
└─────────────┘ └─────────────┘
2. 主要なコンポーネント
| コンポーネント | 責務 |
|---|---|
| コマンド | 状態を変更する意図 |
| コマンドハンドラー | コマンドを検証して実行する |
| イベント | 状態変更の記録 |
| クエリ | データの要求 |
| クエリハンドラー | 読み取りモデルからデータを取得する |
| プロジェクター | イベントから読み取りモデルを更新する |
テンプレートと詳細な実例
完全なテンプレートライブラリと詳細な実例は references/details.md にあります。具体的なテンプレートが必要な場合はそのファイルを参照してください。
ベストプラクティス
やるべきこと
- コマンドモデルとクエリモデルを分離する - 要件が異なるため
- 結果整合性を採用する - 伝播の遅延を受け入れる
- コマンドハンドラーで検証する - 状態変更の前に
- 読み取りモデルを非正規化する - クエリ向けに最適化する
- イベントにバージョンを付ける - スキーマの進化のため
やってはいけないこと
- コマンド内でクエリを実行しない - 書き込みにのみ使用する
- 読み取りスキーマと書き込みスキーマを結合しない - 独立して進化させる
- 過剰に設計しない - シンプルに始める
- 整合性 SLA を無視しない - 許容できる遅延を定義する
コメント
Markdown 対応