mcpField
C
cqrs-implementation

cqrs-implementation

github.com/wshobson開発41.9k11.1k 回インストール2 週間前に更新
リポジトリ

cqrs-implementation について

cqrs-implementationは、開発者向けのCQRS実装ガイドです。コマンドとクエリのモデル分離、主要コンポーネント、実践上の指針を解説し、詳細なテンプレートと例はreferences/details.mdにあります。

主な機能

  1. 01コマンドモデルとクエリモデルの分離
  2. 02コマンド、イベント、クエリの解説
  3. 03読み取りモデルの投影
  4. 04イベントのバージョン管理
  5. 05詳細なテンプレートと例

活用シーン

  1. 01読み取りと書き込みを別々に拡張
  2. 02イベントソーシングシステムの構築
  3. 03複雑なクエリとレポートの最適化
  4. 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 を無視しない - 許容できる遅延を定義する

コメント