mcpField
S
senior-backend

senior-backend

github.com/pixel-process-ug開発380 回インストール34 週間前に更新
リポジトリ

senior-backend について

senior-backendは、バックエンドサービスの設計と実装を支援するスキルで、API開発やサービス運用に携わる開発者向けです。API設計、実装、本番運用への備えを段階的に扱い、可観測性やイベント駆動パターンも含みます。

主な機能

  1. 01REST・GraphQL・gRPCのAPI設計
  2. 02レイヤー化されたサービスとデータアクセス
  3. 03キャッシュとレート制限の戦略
  4. 04ヘルスチェックとOpenTelemetryによる可観測性
  5. 05メッセージ駆動アーキテクチャのパターン

活用シーン

  1. 01実装前のAPI契約の策定
  2. 02バックエンドサービスとデータアクセスの構成
  3. 03ヘルスチェックとテレメトリーによる本番準備
  4. 04非同期メッセージワークフローの設計

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill senior-backend

インストール後、Claude Code で/senior-backendを入力して読み込まれたか確認します。

詳細

シニアバックエンドエンジニア

概要

API 設計、サービスアーキテクチャ、データ管理、運用の卓越性に重点を置き、堅牢でスケーラブルなバックエンドシステムを設計、実装します。このスキルでは、RESTful API と GraphQL API のパターン、メッセージ駆動型アーキテクチャ、キャッシュ戦略、レート制限、ヘルスチェック、OpenTelemetry による完全な可観測性を扱います。

開始時に伝えること:「バックエンドシステムの設計と実装にシニアバックエンドスキルを使用します。」


フェーズ 1:API 設計

目標: 実装コードを書く前にコントラクトを定義します。

アクション
  1. リソースモデルと関係を定義する
  2. エンドポイント構成(REST)またはスキーマ(GraphQL)を設計する
  3. 認証と認可の戦略を確立する
  4. レート制限とスロットリングのポリシーを定義する
  5. API ドキュメント(OpenAPI/GraphQL スキーマ)を作成する
API スタイルの判断表
要素RESTGraphQLgRPC
データのニーズが異なる複数のコンシューマー不向き最適不向き
シンプルな CRUD 操作最適過剰過剰
リアルタイムのサブスクリプションWebSocket の追加が必要組み込み組み込み(ストリーミング)
サービス間通信良好過剰最適
パブリック API最適良好不向き(ツール面)
帯域幅に制約のあるモバイル過剰取得のリスク最適最適
停止 — フェーズ 2 に進む前に、以下を完了してください:
  • リソースモデルが定義されている
  • エンドポイント構成またはスキーマが文書化されている
  • 認証戦略が選択されている
  • API コントラクトをレビューできる状態になっている(OpenAPI/GraphQL スキーマ)

フェーズ 2:実装

目標: 関心事を明確に分離したサービスレイヤーを構築します。

アクション
  1. 明確なレイヤー構成でプロジェクト構造を整える
  2. データアクセスレイヤー(リポジトリー/DAO)を実装する
  3. ビジネスロジックを含むサービスレイヤーを構築する
  4. API コントローラー/リゾルバーを作成する
  5. ミドルウェア(認証、ロギング、エラー処理、CORS)を追加する
  6. キャッシュ戦略を実装する
RESTful URL 構成
GET    /api/v1/users              # List users (paginated)
GET    /api/v1/users/:id          # Get single user
POST   /api/v1/users              # Create user
PUT    /api/v1/users/:id          # Full update
PATCH  /api/v1/users/:id          # Partial update
DELETE /api/v1/users/:id          # Delete user
GET    /api/v1/users/:id/orders   # Nested resources
POST   /api/v1/users/:id/activate # State transitions
HTTP ステータスコードの判断表
コード意味使用する状況
200OKGET、PUT、PATCH の成功
201作成済みリソースを作成する POST の成功
204コンテンツなしDELETE の成功
400不正なリクエストバリデーションエラー
401未認証認証情報がない、または無効
403禁止認証は有効だが、権限が不十分
404見つかりませんリソースが存在しない
409競合重複または状態の競合
422処理できないエンティティ意味的に無効な入力
429リクエストが多すぎますレート制限超過
500内部サーバーエラー予期しないサーバー障害
レスポンス形式
// Success (single)
{ "data": { "id": "123", "name": "Alice" }, "meta": { "requestId": "req_abc123" } }

// Success (collection)
{ "data": [...], "meta": { "page": 1, "pageSize": 20, "totalCount": 150, "totalPages": 8 } }

// Error
{ "error": { "code": "VALIDATION_ERROR", "message": "Invalid input", "details": [...] } }
キャッシュ戦略の判断表
戦略説明使用例
キャッシュアサイドアプリがキャッシュを確認し、なければ DB にフォールバックする汎用
ライトスルーキャッシュと DB に同時に書き込む強い整合性
ライトビハインドキャッシュに書き込み、非同期で DB に書き込む高い書き込みスループット
リードスルーキャッシュミス時にキャッシュが DB から読み込む透過的なキャッシュ
停止 — フェーズ 3 に進む前に、以下を完了してください:
  • プロジェクト構造がレイヤードアーキテクチャに従っている
  • 入力バリデーションがエッジで行われている(Zod、Joi、class-validator)
  • エラー処理が構造化されたエラーレスポンスを返す
  • 無効化計画を含むキャッシュ戦略が実装されている

フェーズ 3:堅牢化

目標: 本番環境での運用に向けてサービスを準備します。

アクション
  1. 包括的なエラー処理を追加する
  2. ヘルスチェックとレディネスプローブを実装する
  3. 可観測性(トレース、メトリクス、ログ)を設定する
  4. 重要なパスの負荷テストを実施する
  5. 運用シナリオに関するランブックを文書化する
ヘルスチェックエンドポイント
// GET /health — lightweight liveness check
{ "status": "healthy" }

// GET /health/ready — readiness with dependency checks
{
  "status": "healthy",
  "checks": {
    "database": { "status": "healthy", "latency": "5ms" },
    "redis": { "status": "healthy", "latency": "2ms" },
    "queue": { "status": "healthy", "latency": "8ms" }
  },
  "uptime": "72h15m",
  "version": "1.4.2"
}
可観測性:RED メソッドのメトリクス
メトリクス説明実装
レート1 秒あたりのリクエスト数リクエストごとにインクリメントするカウンター
エラー1 秒あたりのエラー率エラーごとにインクリメントするカウンター
期間レイテンシーの分布ヒストグラム(p50、p95、p99)
構造化ログの形式
{
  "timestamp": "2025-01-15T10:30:00.123Z",
  "level": "info",
  "message": "User created",
  "service": "user-service",
  "traceId": "abc123",
  "spanId": "def456",
  "userId": "usr_123",
  "duration": 45
}
レート制限アルゴリズムの選択表
アルゴリズム長所短所最適な用途
固定ウィンドウシンプルで、メモリー消費が少ない境界でバーストが発生する内部 API
スライディングウィンドウ分布が平滑化されるメモリー消費が多い公開 API
トークンバケットバーストを制御できるやや複雑業界標準
リーキーバケット出力が一定バーストを許可しない厳格なレート制御
STOP — 以下が完了したらハードニング完了です:
  • ヘルスチェックエンドポイントが正しく応答する
  • 構造化ログが設定されている
  • メトリクスがエクスポートされている(RED メソッド)
  • 重要な経路で負荷テストが完了している
  • エラー処理が適切なステータスコードを返す

イベント駆動アーキテクチャのパターン

メッセージキューパターンの選択表
パターンユースケース例
パブリッシュ/サブスクライブ複数のコンシューマーへのブロードキャストユーザー登録 -> メール、分析、CRM
ワークキューワーカー間でタスクを分配画像処理、PDF 生成
リクエスト/リプライ応答を伴う非同期リクエスト価格計算サービス
デッドレター失敗したメッセージの処理再試行ポリシーの上限超過
イベントスキーマ
{
  "eventId": "evt_abc123",
  "eventType": "user.created",
  "timestamp": "2025-01-15T10:30:00Z",
  "version": "1.0",
  "source": "user-service",
  "data": { "userId": "usr_123", "email": "[email protected]" },
  "metadata": { "correlationId": "corr_xyz789", "causationId": "cmd_def456" }
}

GraphQL のアンチパターン

アンチパターン問題修正方法
N+1 クエリパフォーマンスの低下DataLoader によるバッチ処理
無制限のクエリDoS の脆弱性深さと複雑さの上限を設定する
リゾルバーでの過剰なデータ取得無駄な DB クエリリクエストされたフィールドのみを選択する

アンチパターン/よくある間違い

アンチパターン問題である理由正しい方法
データベース ID をそのまま公開するセキュリティリスク、DB への依存UUID またはプレフィックス付き ID を使用する
リクエスト処理中の外部サービスへの同期呼び出し単一障害点、レイテンシーキューまたはサーキットブレーカーを使って非同期に処理する
N+1 クエリパターンパフォーマンスが線形に低下するEager ローディングまたは DataLoader
エラーを捕捉して握りつぶす失敗が見えず、デバッグが不可能になるコンテキストを付けてログに記録し、伝播させる
ハンドラー間で変更可能な状態を共有する競合状態、予測不能な動作ステートレスなリクエスト処理
入力検証を省略するインジェクション、データ破損常にエッジで検証する
すべてのエラーに汎用の 500 を返す開発者エクスペリエンスの低下具体的なエラーコードとメッセージ
API バージョニングを行わない破壊的変更がすべてのコンシューマーに影響する初日からバージョンを付ける(/v1/)

ドキュメントの参照(Context7)

最新のドキュメントを取得するには、mcp__context7__resolve-library-id、次に mcp__context7__query-docs を使用してください。返されたドキュメントは、記憶された知識より優先されます。

  • express — ミドルウェアのパターン、ルーティング、またはリクエスト/レスポンス API の場合
  • fastify — プラグインシステム、フック、またはスキーマ検証の場合
  • nestjs — デコレーター、モジュール、プロバイダー、またはガードの場合
  • prisma — スキーマ構文、クライアント API、またはマイグレーションコマンドの場合

統合ポイント

スキル関係
senior-architectアーキテクチャ上の決定がバックエンドサービスの境界を導きます
security-reviewバックエンドのセキュリティは OWASP と認証パターンに従います
performance-optimizationバックエンドのパフォーマンスはキャッシュとクエリのチューニングを活用します
testing-strategyバックエンドのテスト戦略が統合テストのアプローチを定めます
code-reviewレビューで API 設計とエラー処理を検証します
acceptance-testingAPI の動作が受け入れ条件になります
senior-fullstackバックエンドがフルスタックの tRPC レイヤーを提供します

主要な原則

  • 初日から API をバージョン管理します(/v1/)。
  • エッジで入力を検証します(Zod、Joi、class-validator)。
  • GET 以外のエンドポイントには冪等性キーを使用します。
  • グレースフルシャットダウンを実装します(接続をドレインし、処理中のリクエストを完了させます)。
  • 外部サービスの呼び出しにはサーキットブレーカーを使用します。
  • データベースのマイグレーションはバージョン管理し、元に戻せるようにします。
  • シークレットは環境変数に格納し、コードには決して含めません。

スキルの種類

FLEXIBLE — API のスタイルとアーキテクチャは、プロジェクトの状況に合わせて調整します。3 段階のプロセス(設計、実装、堅牢化)を強く推奨します。本番サービスでは、ヘルスチェック、構造化ログ、エラーハンドリングは必須です。

コメント