Skip to content

GraphQLスキーマをClaudeと設計する

GraphQLのスキーマ設計は、APIの品質を左右する重要なステップです。Claude Codeを活用すれば、スキーマ定義からリゾルバ実装、パフォーマンス改善まで、一貫してサポートを受けながら進められます。

スキーマ定義をClaudeに相談する

Section titled “スキーマ定義をClaudeに相談する”

まずはプロジェクトの要件をClaudeに伝えてみましょう。たとえばブログアプリを例に、次のようにプロンプトを入力します。

ブログアプリのGraphQLスキーマを設計してください。
エンティティはUser・Post・Commentです。
各PostはUserが投稿し、複数のCommentを持ちます。

するとClaudeは、以下のようなスキーマ定義を提案してくれます。

type User {
id: ID!
name: String!
email: String!
posts: [Post!]!
}
type Post {
id: ID!
title: String!
body: String!
author: User!
comments: [Comment!]!
}
type Comment {
id: ID!
text: String!
author: User!
}
type Query {
posts: [Post!]!
post(id: ID!): Post
user(id: ID!): User
}

型の命名規則や!の使い方についても、理由を添えて説明してくれるため、GraphQL初心者でも根拠のある設計判断ができます。

GraphQL: Facebookが開発したAPIクエリ言語。必要なデータだけをリクエストでき、過剰・不足な取得を防げる。プロンプト: AIへの指示文。Claude Codeへの指示の質がそのまま出力の質に影響する。スキーマ: データベースのテーブル構造や型定義のこと。

リゾルバの実装をステップで進める

Section titled “リゾルバの実装をステップで進める”

スキーマが決まったら、リゾルバの実装に移りましょう。Claudeに「上記スキーマのQueryリゾルバをNode.js + Prismaで実装してください」と依頼すると、すぐに動くコードを生成してくれます。

const resolvers = {
Query: {
posts: (_: unknown, __: unknown, { prisma }: Context) =>
prisma.post.findMany(),
post: (_: unknown, { id }: { id: string }, { prisma }: Context) =>
prisma.post.findUnique({ where: { id } }),
},
Post: {
author: (parent: Post, _: unknown, { prisma }: Context) =>
prisma.user.findUnique({ where: { id: parent.authorId } }),
},
};

生成されたコードに疑問があれば「Context型はどう定義しますか?」と続けて聞くだけで、定義例もすぐに返ってきます。

リゾルバを素直に実装すると、N+1問題が発生しやすくなります。「上記リゾルバにはN+1問題がありますか?あればDataLoaderで解決してください」とClaudeに伝えましょう。Claudeは問題箇所を特定したうえで、DataLoaderを使ったバッチ処理の実装を提案してくれます。

スキーマ設計・リゾルバ実装・最適化のサイクルをClaudeと対話しながら進めることで、品質の高いGraphQL APIを効率よく構築できます。ぜひ今日のプロジェクトから試してみてください。

API: Application Programming Interface の略。外部サービスとプログラム間でデータをやりとりするための接続口。