basyura's blog

あしたになったらほんきだす。

GraphQL しらべ

某雑誌の冒頭に「GraphQLすごいんです」しか書いて無くて何がすごいのかどういうものなのかがさっぱり伝わらなくて逆に気になったので調べ(ググっ)てみた。

まとめ

いいとこ

  • 柔軟性が高い (API に対する多様な要求に答えやすい)
  • 一般的な REST API のように不要なものも含めて固定された項目を返すのではなく、1 クエリ(リクエスト)で必要なものを必要なものに絞って一括取得できる

分からん

  • メリットを感じられるケースがどの程度あるのか
  • 保守、性能面で RDB で SQL を叩くよりどの程度メリットがあるのか

memo

注意点

  • Client にクエリの決定権がある。Client にとって必要十分なクエリを起こすだけで済む。

GraphQLの利点

  • クエリとレスポンスの構造に対応関係がある
  • スキーマとその一部である型システムによりエディタにおける補完や型チェックなどのツールによる開発サポートが受けられる (IDE: GraphiQL - グラフィクル)
  • クエリの学習コストが低いことです。
  • 既存のクエリを壊さずにアプリケーション API を進化させることができます。
  • 柔軟性が高い (必要なものを絞って取得できる)

GraphQLの欠点

  • パフォーマンス分析が難しい → エンドポイントが一つしかないのでまとめられてしまう
  • 処理系の実装が難しい
  • 画像や動画などの大容量バイナリの扱いが難しい → Base64 でも 1.3倍になる / メモリに乗らないものは処理できない
  • 保守可能な GraphQL スキーマを作成する作業が付加される

links

GitHub