TL;DR

スキーマを先に定義し、そのファイルからコードを生成する開発の進め方。Code first と対になる。

なぜ必要か

GraphQL では、GraphQL Schema を先に定義し、バックエンドとフロントエンドが同じ GraphQL Schema を参照する。GraphQL Schema を両者で共有する資産にでき、特定の言語やフレームワークにも依存しない。そのため、バックエンドとフロントエンドを別のチームが並行して開発する場合に向いている。

例

NestJS は Schema first での開発に対応している(Resolvers、Interfaces)。gRPC も Protocol Buffers の定義からコードを生成する Schema first で開発する。

注意点

GraphQL Schema Language には文法上の制約が多い。GraphQL Schema のバージョン管理が煩雑になりやすく、GraphQL そのものの理解も必要になる。

関連

出典