より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

GraphQLを学ぶ機会が来た

どこかで触れておかなきゃなあと思いながらもう何年も経っているのがGraphQLです。

なかなかいい教材がなかったり、使う機会がなかったり。

Software Design (ソフトウェアデザイン) 2021年8月号 [雑誌]

出社したら、最新号のSoftware Designで特集していたので、勉強してみました。

GraphQLではリクエストのqueryで欲しいフィールドを指定するため、トラフィックが抑えられます。

これは、言われなくても私の頭でもわかります。

また、REST APIはシンプルに保ちたいため、多種多様の情報を表示したいWebアプリケーションからは複数のリクエストを行い、データを統合しないとならないという問題が起きます。

一つのリクエストで複数の情報を結合して取得できてしまうのです。

GitHub v4でGraphQL APIが試せます。

docs.github.com

query {
   type {
      field1,
      field2,
      ...
      fieldx {
         child_field1,
         child_field2,
          ... 
      }
   }
}

上記のようなクエリでデータを取得します。

f:id:rimever:20210728214617p:plain

実装

実際にGraphQLでデータを取得したところで、実装をどうするか?

apollo-severというNode.jsのライブラリを使うことで実装できるようです。

本に書いてある内容そのままに動かしてみました。

github.com

すると、以下みたいな画面が出てきて試せます。

f:id:rimever:20210728213426p:plain
おぉ〜

あとは、いかに導入するか。

既存のサーバーサイドのREST APIとフロンドエンドの間にBFF(Backends For Frontends)でGraphQL APIを用意するのは良さそうですね。

今のトレンドのマイクロサービスはどうしてもドメインごとにテーブルを分けてしまうわけですし。

あとはこのクエリを使いこなせるかという技術者のスキルの問題ですかねえ。

Software Design、久しぶりに目を通しましたが、学べることはいくらでも書いてありますね。