どこかで触れておかなきゃなあと思いながらもう何年も経っているのがGraphQLです。
なかなかいい教材がなかったり、使う機会がなかったり。
出社したら、最新号のSoftware Designで特集していたので、勉強してみました。
GraphQLではリクエストのqueryで欲しいフィールドを指定するため、トラフィックが抑えられます。
これは、言われなくても私の頭でもわかります。
また、REST APIはシンプルに保ちたいため、多種多様の情報を表示したいWebアプリケーションからは複数のリクエストを行い、データを統合しないとならないという問題が起きます。
一つのリクエストで複数の情報を結合して取得できてしまうのです。
query { type { field1, field2, ... fieldx { child_field1, child_field2, ... } } }
上記のようなクエリでデータを取得します。
実装
実際にGraphQLでデータを取得したところで、実装をどうするか?
apollo-severというNode.jsのライブラリを使うことで実装できるようです。
本に書いてある内容そのままに動かしてみました。
すると、以下みたいな画面が出てきて試せます。
あとは、いかに導入するか。
既存のサーバーサイドのREST APIとフロンドエンドの間にBFF(Backends For Frontends)でGraphQL APIを用意するのは良さそうですね。
今のトレンドのマイクロサービスはどうしてもドメインごとにテーブルを分けてしまうわけですし。
あとはこのクエリを使いこなせるかという技術者のスキルの問題ですかねえ。
Software Design、久しぶりに目を通しましたが、学べることはいくらでも書いてありますね。