最近仕事でGraphQLを使うようになり、勉強を兼ねて読んでみましたので感想を書きたいと思います。
初めてのGraphQL ―Webサービスを作って学ぶ新世代API
- 作者:Eve Porcello,Alex Banks
- 出版社/メーカー: オライリージャパン
- 発売日: 2019/11/13
- メディア: 単行本(ソフトカバー)
感想
この書籍は7章+付録Aから構成されており。大きく第1章から第4章までがGraph QLの目的や使用方法についての説明、第5章以降が実際にGraph QLを用いてアプリケーションを作成していくといった内容となっております。
全体的にGraphQL初学者向けに書かれており、一通り通読すればクエリ、スキーマの書き方、型の種類及び使い方はマスターできると思います。
ただ具体的なスキーマの設計手法についてや、ある場合におけるベストプラクティス等についてはあまり触れられておらず、あくまでGraphQLをどのように使用するのか、そしてどのようなことに注意すべきかについての理解を促すことに重きを置いている印象でした。
とりあえずこのを読んだら自分でGraphQL使ってみて試行錯誤していこうと思います。
なので学びという点については個人的には少なめかなといった感想です。
学び
第1章 GraphQLへようこそ
GraphQLは以下のRESTの課題を解決します。
- 過剰な取得
- 過小な取得
- エンドポイント管理
1についてはRESTの場合クライアントは必要ないデータを受け取る可能性がありますが、GraphQLの場合は要求したデータだけがレスポンスに含まれます。
2についてはRESTの場合あるデータを取得して、そのデータを用いて再度リクエストを行わないと目的のデータが取得できないことがありますが、GraphQLの場合は必要なデータを一回のリクエストで取得することができます
3についてはRESTの場合クライアントに変更が加わると新しいエンドポイントを作成する必要がありますが、GraphQLの場合は単一のエンドポイントしか存在しないので新しいエンドポイントを作成する必要がありません
第4章 スキーマの設計
GraphQLを用いることで、APIはRESTのエンドポイントの集合ではなく、型の集合として捉えられるようになります。
このデータ型の集合をスキーマと呼びます。
このスキーマを先に設計する手法をスキーマファーストと言い、こうすることでチームメンバがデータ型を共通言語にして開発にまつわるコミュニケーションを取ることができます。
GraphQLで異なる型が混在するフィールドを表現するためにユニオン型とインターフェイスというツールが用意されています。
使い分けとしてはその複数の型が全く異なるものであればユニオン型を利用し、共通のフィールドがあればインターフェイスを利用するのがよいみたいです。
第7章 GraptQLの実践投入にあたって
悪意のあるクエリを防ぐためにリクエストタイムアウト、データの制限、クエリの深さの制限、クエリの複雑さの制限といったものが存在します。
初めてのGraphQL ―Webサービスを作って学ぶ新世代API
- 作者:Eve Porcello,Alex Banks
- 出版社/メーカー: オライリージャパン
- 発売日: 2019/11/13
- メディア: 単行本(ソフトカバー)