mcpField
G
graphql

graphql

github.com/thebeardedbearsas開発108114 回インストール今日更新
リポジトリ

graphql について

Federation、スキーマ設計パターン、DataLoader、クエリ最適化を扱うGraphQLリファレンスです。サービスをまたぐAPIの設計や、性能とクエリ制御の指針を必要とする開発者向けです。

主な機能

  1. 01Apollo Federationによるサービス合成
  2. 02DataLoaderのバッチ処理とキャッシュ
  3. 03Relayページネーションとエラーパターン
  4. 04永続化クエリとクエリ制限

活用シーン

  1. 01ゲートウェイを介したGraphQLサービスの合成
  2. 02N+1データベースクエリの削減
  3. 03ページネーション付きGraphQLレスポンスの設計
  4. 04クエリ深度とコストの制御追加

インストール

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

$npx skills add https://github.com/thebeardedbearsas/claude-craft --skill graphql

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

詳細

GraphQL — Apollo Federation、スキーマ設計

フェデレーション、DataLoader、最適化を備えたモダンな API です。

GraphQL と REST の比較

GraphQL — オーダーメイドのクエリ 1 つ、バージョン管理なし、自動イントロスペクション
REST — 複数のエンドポイント、過剰なデータ取得、v1/v2/v3

Apollo Federation

# Users service
type User @key(fields: "id") { id: ID!, name: String! }

# Orders service
extend type User @key(fields: "id") {
  id: ID! @external
  orders: [Order!]!
}

ゲートウェイがサービスを自動的に合成します。

N+1 問題 — DataLoader

// ❌ N+1 queries
User: { orders: (u) => db.orders.findByUserId(u.id) }

// ✅ DataLoader batch
const loader = new DataLoader(async (ids) => {
  const orders = await db.orders.findByUserIds(ids);
  return ids.map(id => orders.filter(o => o.userId === id));
});
User: { orders: (u) => loader.load(u.id) }

パターン

ページネーション(Relay)
type UserConnection {
  edges: [{ node: User!, cursor: String! }]!
  pageInfo: { hasNextPage: Boolean!, endCursor: String }!
}
エラーハンドリング
type CreateUserPayload {
  user: User
  errors: [{ field: String, message: String! }]
}

最適化

DataLoader — バッチ処理とキャッシュ
永続化クエリ — ハッシュ検索
深度制限 — DoS 対策
コスト分析 — クエリ予算


設計については @api-designer を参照してください

コメント