Open11

GraphQL(スキーマ設計)素振り

島袋恵島袋恵

スキーマ考える時系列

  • GitHubのAPI のdocsを眺める
  • implements Node する考え方を知る
  • 再び GitHubのAPI のdocsを眺める
  • Node以外もGraphqの途中でいろんなObjectsがimplementsされてることに気が付く(裏側の実装どうなってるんだろう!?!?!?めっちゃむずそう〜〜〜〜ってなる)
  • DBのスキーマを見ながらGraphQLのスキーマを定義しはじめる
  • テーブル構造が露見した感じのAPIだとよくないよねとか、Root Query 直下にたくさん Query書いちゃうのRESTっぽい感じになるよねとか、ログインユーザーを起点にしてクエリ叩いてデータ引けるようにしたほうがGraphQLっぽさそうだよね、みたいな話をしながらいろいろ調べたりした
  • Userを起点にグラフの構造を考えはじめる
  • 途中、何度か「初めてのGraphQL」本を開いてキャッチアップなどする
  • 中間テーブル、いくつかのテーブルから参照されてるテーブル構造になってるやつで、どうやって値取得したらいいか(どうスキーマで表現したらいいか)よくわからないやつで少し悩みつつ、いったん全部定義する
島袋恵島袋恵

再び GitHubのAPI のdocsを眺める → Node以外もGraphqの途中でいろんなObjectsがimplementsされてることに気が付く(裏側の実装どうなってるんだろう!?!?!?めっちゃむずそう〜〜〜〜ってなる)

この Commit どこから湧いてきたやつか一瞬謎だったけどImlementsされてるやつだった。クライアントからGraphQL使う分だとdocsみて、ぽちぽちクエリ書いて便利って気持ちだったけど、バックエンド側でグラフ構造作るのって、全体のデータ構造把握して、いい感じにグラフ構造作らなきゃいけなくて、めっちゃむずでは!?!?!と思ったりした

島袋恵島袋恵

ここまでの感想

  • スキーマの設計難しい
  • GitHubのAPIが参考になりそう
  • Relayの仕様が参考になりそう