はじめに
メーカーのコーポレート部門でソフトウェアエンジニアとして働いているモンゴルです。
業務でGraphQLを触る機会があり、より知識をつけたいと思って本書を読みました。感想を書いていきます。
感想
基礎的な知識が網羅されていそう
クライアント側でしかGraphQLを使ったことがなかったので、サーバーの実装ができたのはよかったです。
スキーマとリゾルバの関係性がわかっていなかったのですが、Apolloサーバーの実装を通してスキーマはAPI定義、リゾルバはコントローラー、ユースケースのようなAPI実装だということが理解できました。
スキーマとリゾルバの実装にずれがあったとしても、サーバーが起動するというのは意外でした。
また、GraphQLがグラフ理論と関係があるという基礎的なことから、GraphiQLやGraphQL Playground、swapi、GitHub APIのようなツール等、すぐに活用できる情報もありバランスがいいように感じました。
フラグメントやトリビアルリゾルバ、GraphQLのバックエンドとしてREST APIが使えるということも本書を読まなければ知らない知識だったように思います。
サンプルコードはちょっと古いかも
サーバーの実装をしたときに、ライブラリのバージョンを気にせず実装を進めようとすると動かないことがありちょっと困惑しました。
とはいえ、GraphQL自体は枯れた技術ではないので仕方ないかな、と思っています。
これをきっかけに公式のドキュメントを読むきっかけとなったのは良かったことだと思っています。
終わりに
前半は理論的な話、後半は手を動かす系、とバランスが良かったです。
手を動かす系をすることで、キャッシュの仕様に触れる機会もあり一歩踏み込めたのはよかったです。
Apollo clientのInMemoryCacheはグローバルオブジェクトにキャッシュを格納しているのか
— モンゴル (@mongolyy) 2022年11月19日
だから、状態管理ライブラリとしても使えるのは面白いhttps://t.co/G6ZzBrXVWR
window.__APOLLO_CLIENT__.cache でcacheも確認できた pic.twitter.com/8BGoOhEMad
— モンゴル (@mongolyy) 2022年11月19日
これはchromeの拡張を使用すると色々捗りそうhttps://t.co/EtMxR0CLWs pic.twitter.com/TY6QkTuBd5
— モンゴル (@mongolyy) 2022年11月19日
fetch policyのcache-onlyってどういうタイミングで使うのかな?とか思ったけど、nextFetchPolicyのオプションで使うのかhttps://t.co/xHXKnKCljU
— モンゴル (@mongolyy) 2022年11月20日
apollo3-cache-persistを使うと、LocalStorageとかが使えるhttps://t.co/1IKH7UGFH8
— モンゴル (@mongolyy) 2022年11月20日
本書をきっかけに、GraphQLサーバーの実装も業務でやってみたいなーと思うようになりました。