Skip to content

プロジェクトの規約 ​

GraphQL スキーマ設計規約 ​

命名規則 ​

Query ​

  • 単数形の場合: user, scenario, event
  • 複数形の場合: users, scenarios, events
  • フィルタ付きの場合: usersByStatus, scenariosByCategory

Mutation ​

  • 作成: createUser, createScenario
  • 更新: updateUser, updateScenario
  • 削除: deleteUser, deleteScenario
  • アクション: publishScenario, archiveEvent

ID の扱い ​

id は大体固有のスカラーをつける

graphql
scalar UserID
scalar ScenarioID
scalar EventID

ページネーション ​

Connection パターンを使用:

graphql
type UserConnection {
  edges: [UserEdge!]!
  pageInfo: PageInfo!
  totalCount: Int!
}

type UserEdge {
  node: User!
  cursor: String!
}

エラーハンドリング ​

フィールドの null 許容性 ​

  • 必須フィールド: ! を付ける
  • オプショナルフィールド: ! を付けない
  • リスト: 空配列を返すため [Type!]! を使用

関連データの取得 ​

  • N+1 問題を避けるため DataLoader を使用
  • 適切に collect_path.yml を設定する