GraphQLの何がイイのか
データ取得の手法として何かと注目されるGraphQL、何がうれしいのか、調べてみました!
tosuke.iconはGraphQLをちゃんと使ったことがない。GitHubのAPIとしてサーバサイドで使ったことがあるが、色々あってそのプロダクトはお蔵入りした
データの形を決める権限がフロントエンドにある
これが一番言われるし、目立つ特徴
RESTやRPCとの違いを考えたとき、バックエンドエンジニアが一番気にしないといけない部分だからだと思う。
データを整形する処理を人にやらせるので楽
クエリを分割できる
クエリをコンポーネントごとに分割して統治して、それでいて全部一気にまとめてリクエストみたいなことができる
コンポーネント指向な設計ができる
さらにリクエスト単位を分割できる
現状だとRelayのみ、しかもフラグメント単位のみだが、コンセプトは見える
1つのクエリ、だがレスポンスは分割されて返ってくる
さらに柔軟で効率的な分割が提案されているが、バックエンドでのサポートが必要になる
型がある
実はこの型はエンジニアのための型ではない(そういう側面がないわけでもない気はするが)。ApolloやRelayなどのクライアントライブラリだったり、ツールチェインのための型。
値の制約を記述するためではなく、クエリやレスポンスを機械が解析するための情報として付いている
制約を記述するだけなら、バックエンドとかで型を付けて勝手にやっていけばいいわけだけど、APIにまで付けるのはそういうことだと思うわけですtosuke.icon
ApolloやRelayの例で言うと、これらは型を使ってデータの正規化を自動で行っている
Reduxを使って人力でガリガリする必要がなくなって神
いかがでしたか?