最近よく周りで耳にする(?)GraphQL。実際にお仕事にて使わせていただく機会がありましたので、どのようなものか、どのように利用するかを複数回に分けてお送りいたします。公式ホームページ(https://graphql.org/)にはこのように記載されています。tools.訳)GraphQLはAPIのクエリ言語で、既存のデータでこのクエリを実行するためのランタイム。API内のデータを分かりやすく説明し、クライアントに必要な情報だけを提供する。APIを長期的かつ容易に改修することができ、強力な開発者ツールも有効にすることが出来る。sizes.訳)Facebookのモバイルアプリにて2012年から使用され、GraphQL仕様として2015年にオープンソース化された。列挙すると下記となります。強力な開発者ツールも使用可能Facebookにて開発されて2012年からモバイルアプリで利用、2015年に世に放たれたAPI仕様いずれも従来のAPI開発者からするととても魅力的に見えますね...。上記と重複しますが、同ページにてGraphQLの特徴が簡潔に説明されています。system訳)型システムで何ができるかを説明するその他にも記載がありますが、大きな特徴としてはこれらの3つとなります。具体的にどういうことでしょうか。それぞれの特徴について確認していきましょう。以降では、具体例として下記のデータを利用いたします。thatまず1つ目、必要なもののみを取得ということですが、従来のAPIでも必要なものだけ提供すれば取得できるんじゃない?と思います。GraphQLに関してはAPI側ではなくクライアント側での項目の取捨選択が可能となります。実際の取得例をみてみましょう。右:API側(レスポンス内容)curlコマンドで表すと以下となります。レスポンス内容{"data":{"findBookById":{"id":"1","title":"title1"}}}上記のように、クライアント側はリクエスト時に指定した項目のみを取得することが可能となります。API側の実装としても、利用するクライアント毎に項目を絞る必要なく提供することが可能です。request2つ目は、1つのリクエストで多くのリソースを取得するとのことです。APIですと、ひとつのURLに対して1つのリソースの操作となります。GraphQLはひとつのURLで全てのリソースの操作が可能となります。右:GraphQLこれにより、クライアントは取得するリソースへのクエリのみを考慮するだけで提供された全リソースへのアクセスが可能となります。system3つ目は、型システムで何ができるかを説明する、となります。GraphQLでは、定義情報として下記のようなスキーマが必ず必要となります。[Book]}このスキーマだけで、このGraphQLにどのようなクエリが用意され、どのように返却されるかが読みとれます。そのため、従来のAPIのように別途仕様書を作成せずとも、このスキーマ情報をクライアント開発者に共有するだけで提供しているクエリを周知させることが可能となります。今回は概要編として、GraphQLの公式に記載されている概要と3つの特徴についてご紹介させていただきました。次回は、このGraphQLを用いて簡単なAPIを作成していこうかと思います。(settings.json)20年以上の実績とノウハウをもとにお客様のニーズに最適な方法を提案する株式会社クリエーション・ビューのブログです。