プロジェクトの規約
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!
}エラーハンドリング
- ユーザーエラーは適切なメッセージとコードを返す
- システムエラーは汎用的なメッセージを返す
- 詳細は GraphQL エラーハンドリング戦略 を参照
フィールドの null 許容性
- 必須フィールド:
!を付ける - オプショナルフィールド:
!を付けない - リスト: 空配列を返すため
[Type!]!を使用
関連データの取得
- N+1 問題を避けるため DataLoader を使用
- 適切に
collect_path.ymlを設定する