初めてのGraphQLを読みました。(どうでもいいけど、本当は去年の12月くらいに読んでメモブログを書いていなかったので投稿。)
なぜ読んだのか
- 仕事でGraphQLとApolloを使うことになり、この二つを包括的に学ぶのに良さそうな本だったから。
- この本が日本語で書かれていたから。
この本で学べること
本の面白かったところ
GraphQLとは
APIのための問い合わせ言語。データベースに問い合わせる為に開発されたSQLの考え方をインターネットに適用したもの。
SQLのクエリはデータベースに対して行われるが、GraphQLのクエリはAPIに対して行われる。
Railsを使うエンジニアにとって馴染みあるRESTとは違うところ
RESTの課題は以下の通り
- 余分なデータを取得しすぎてしまう
- N+1的なものが起きやすい
- フロントに新しい機能が追加されると新しいエンドポイントが必要になることが多い
GraphQLなら、
- 必要なフィールドだけを指定できる
- 一度のリクエストで必要なデータだけ取得できる
- 単一のエンドポイントで済む
イントロスペクション
GraphQL Playgroundで確認できる充実したGraphQLのドキュメントは、イントロスペクションを利用して実現されている。
以下のようなクエリを打つと、
query { __schema { types { name description } } }
GraphQLサーバーの実装
本書ではexpress-graphqlを使用。
私はgraphql-rubyを使うので、結構読み飛ばしちゃった。
わかりやすいQiitaがあったけど、忘れちゃった...。
まとめ
GraphQLについて概要、歴史、文法的なところ、サーバー、クライアント...と、広く浅く、包括的に学べて良かったです!
これは会社の人から教えてもらったのですが、GraphQLサーバーとGraphQLクライアントに関しては結構情報が古かったりするそうです。
私の場合、さらっと読み流す程度にして、自分が使う予定のgraphql_hogehogeや、hogehoge clientの公式ドキュメントを読むようにしました。
ここまでお読みいただきありがとうございました!