おすすめ書籍はじめに皆さんは、GraphQLを実際に使ったことがありますか?私は幸いなことに、業務で使う機会がありましたので、調べてみました。今回の記事では、GraphQLの概要について紹介します。GraphQLとは?GraphQLを一言で言い表すと、「APIからデータを取得するためのクエリ言語」と言えるのではないでしょうか。一般的にGraphQLでは、RESTなどと同じように、HTTPプロトコルでリクエストされます。RESTが普及しているのに、なぜ、GraphQLが誕生したのか、疑問に思うかもしれません。GraphQL誕生の経緯について紹介します。GraphQLは誕生した?GraphQLが誕生したきっかけを知るには、まず、RESTの欠点を見てみるのが良いでしょう。RESTの欠点を3つ挙げます。過剰な取得とある書店の在庫検索システムを例に見てみます。JavaScriptを含む本を検索するAPIのレスポンスとして、以下のようのJSONが返却されたとします。すると、多くの不要なパラメータが返却されることになり、パフォーマンス悪化の原因になります。過少な取得は過剰な取得の逆で、必要なパラメータが1度に返却できないことにより、複数回のリクエストが発生することです。先ほどの例の在庫検索システムで、新たに著者ごとの関連書籍を表示することになった場合、著者の人数分だけ書籍一覧を取得するAPIをリクエストする必要があります。先に挙げた、過剰な取得、過少な取得によるパフォーマンス悪化を改善する方法として、必要に応じて必要最低限のデータを返却するAPIを定義する方法があります。この場合、メンテナンスしなければならないAPIの数が増えることにより、開発工数が膨らみます。GraphQLのメリットとデメリットGraphQLを導入することによる、メリットとデメリットを見ていきます。GraphQLのメリットメリットとしては、先ほど挙げたRESTの欠点をカバーしていることの他に、リクエストを見れば、どんなレスポンスが返ってくるのかが一目でわかることが挙げられます。取得するクエリは下記のとおりです。{name}}}この通り、レスポンスの形式がひと目でわかります。GraphQLのデメリット逆に、GraphQLのデメリットとしては、エンドポイントが一つのため、パフォーマンスの分析が難しいこと。動画などの大きなバイナリのアップロードが難しいなどのデメリットがあります。GraphQLの言語仕様GraphQLの言語使用において重要な要素を3つ挙げます。スキーマクエリリゾルバスキーマGraphQLを使うにあたり、データを仮想的な情報のグラフと捉えると、理解しやすいと思います。情報の入ったエンティティは型と呼ばれ、それぞれの型は、フィールドを通して互いに関連します。データの取得はクエリによって行われ、クエリは、ルートから順にグラフを辿りながら必要なデータを見つけます。このエンティティはスキーマで定義されます。先ほどの在庫検索システムを例に、スキーマを見てみましょう。String!}GraphQLでは、複数のデフォルト型が付属しています。その中でも、一般的なのはスカラー型で、5つの型があります。falseまた、これの他にカスタム型を定義できます。Book型、Author型、Publisher型がこれにあたります。最初に出てきたQuery型は、参照するデータ照会ポイントを定義するために使用します。ここでは、booksというデータ照会ポイントを定義しています。データ照会ポイントとデータソースの接続は、後述するリゾルバで行われます。クエリクエリは、Query型で定義したデータ照会ポイントからデータを取得するために使用します。取得するクエリは下記のとおりです。{name}}}この通り、レスポンスの形式がひと目でわかります。リゾルバリゾルバは、データ照会ポイントをマッピングして、リクエストされたエンティティを返す関数です。リゾルバの実装は言語ごとに異なりますが、データソースが書籍の配列である場合のデータ照会ポイントのリゾルバは、下記のようになります。books;}実際にGraphQLでデータを取得する公開されているGraphQLのAPIから、実際にデータを取得してみましょう。SWAPIからpersonのnameとgenderを取得してみます。左側がクエリ、真ん中がレスポンス、右側がスキーマになります。このように、実際にGraphQLを使ってみることができます。さいごに今回は、GraphQLの概要について紹介しました。今後は、実装についても紹介できればと思います。助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト上に表示された文字を入力してください。私たちは無料アプリもリリースしています、ぜひご覧ください。下記のアイコンから無料でダウンロードできます。