generated at
Schema First



よくあるフロー
Schemaを記述する
graphql-code-generatorなどのlibraryを使って、schemaからresolverの型定義を生成
resolverの型定義に従って、serverのAPIを実装
clientを実装


pros
Schemaをserver/clientの共通言語にできる
IRみたいな感じねmrsekut
serverとclientが直接依存せず、interfaceに依存して実装する感じにできる
だから、独立に実装を進められる
テストもしやすい
特定のframeworkに依存しない
どういう意味 #??
code firstだと依存するの?
実装言語に縛られない
Schema Directivesが使える


cons
ここに書いてあるのは、
個々の問題は、それぞれtoolを使えば解決できる
しかし、そうするとtoolの数が膨大になって辛い、という流れ
Schemaとresolverの実装がズレないように保つのが大変
初期は良いが、Scheamが大きくなってくると辛い
Schemaを1つのfileに書かないといけないのでmodule化しづらい
Schema Definition Language (SDL)の能力がしょぼいと辛い
再利用性が低い
そもそも手書きで書くのが大変
IDEのサポートがしょぼいと、DXが悪い
必ずしも最適なコードを生成できない
SDLに対して、複数のプログラミング言語の生成ができるからか
Schemaのversion管理が大変
client/severがそれに追従しないといけない
フロー自体がそもそも煩雑



TypeScript
Go



Schema Firstの問題点
問題点を5つ挙げ、それぞれを解決するtoolを示す
toolを使えば解決できるけど、結果的に周辺toolが増えすぎて辛いよね
だからCode Firstやってみると良いんじゃない?
という流れ