ソートリーダー
GraphQL – アプリケーションの通信方法を変え、改善する

次の世代は、Fortnite ロビーでゲームの間、暗号通貨を購入し、ユニット信託残高を確認することができるようになる。多くの技術的進歩によってこれが可能になる。
今日議論するのは、アプリケーションとそれを所有する会社間でデータを転送(読み取り、更新、追加/削除)する方法である。アプリケーション・プログラミング・インターフェイス(API)は、このデータ通信を定義するアーキテクチャであり、これらの規格が発展するにつれて、処理要件とデータ・ストレージ要件はより軽量化された。
「軽量」リソース使用のトップは、GraphQLである。GraphQLは、オープンソースのデータ・クエリと操作言語であり、そのエコシステムの基盤は、その仕様と、そこから生まれたツール群である。
GraphQLは新しいものではない。Facebookが2012年に開発し、モバイル・アプリケーション開発にのみ内部で使用していた。2015年にオープンソース化され、現在はGraphQL Foundationによって管理され、さらに開発が進められている。
なぜ今回GraphQLについて書いているのか?技術の採用ロードマップは、以下のステップをたどることが多い。1)趣味/個人プロジェクト、2)複数の言語への実装、3)スタートアップや中小企業への実装、4)中規模企業や製品開発への使用、5)大企業やテクノロジー・ジャイアントへの使用。
GraphQLはステップ5に達している。現在、GitHub、Pinterest、Shopify 、Microsoftなどが使用しており、2022年3月にはSalesforceも採用した。
Salesforceからデータを効率的に取得する方法を探していたところ、SalesforceのGraphQLドキュメントを見つけ、読み始めた。
GraphQLは従来のREST APIとどう違うのか?
- GraphQLの主な利点は、特定のデータのみをクエリして取得できることである。特定のクライアント・インシデントに関連する2つのフィールドのみを取得したい場合、それだけが返される。従来のREST APIでは、インシデントに関連するすべてのフィールド(100以上)が返される。そうすると、不要なデータを処理する必要がある。これは、データの過剰取得(不足取得も問題である)と呼ばれる。
- 上記により、GraphQLはデータを返す際に他のAPI方法よりも高速である。
- GraphQLは強い型付け言語であり、その中にはコードのエラーを実行前に検出することができる。
- GraphQLの周辺には優れたツールが整備されており、開発者にとって非常に親切である。
- GraphQLには単一のエンドポイントがあるのに対し、REST APIには複数のエンドポイントがある。これにより、すべてのデータを単一のリクエストで取得できる。
コインの2つの側面:リクエスター(クライアント)とプロバイダー(GraphQLホスト)
今まで、GraphQLをデータ「リクエスト」の観点から見てきた。SalesforceやMicrosoftのような会社がGraphQL APIを設定し、データをクエリして操作できるようにした。
例えば、Salesforce関連のクライアント・インシデントのデータをクライアント・ポータルに含める場合、最も効率的な方法は、GraphQLクエリを使用してSalesforceのGraphQLサーバーから正確なデータを取得することである。必要なデータだけが返され、不足や過剰取得がないため、追加の処理やデータ・ストレージは必要ない。
コインのもう一方の面は、クライアントが効率的にデータにアクセスできるように、GraphQLアーキテクチャを設定する組織である。
GraphQL APIを構築することで、組織はすべてのシステムを統合したモデルを作成する。システムを統一し、基礎となるシステムの複雑さを除去する。作業が完了すると、APIを介してデータをクエリすることが容易になる。
アプリケーションやプロバイダーを比較する際、データを取り戻すための機能を提供するかどうかを見ている。メールで問い合わせることや、柔軟性のない事前に定義されたレポートに頼ることはしたくない。データに「プラグイン」して、柔軟かつ適切なタイミングでデータをクエリできるようにしたい。2つのアプリケーション/プロバイダーが他の比較ポイントで同等であり、1つがREST APIまたはGraphQL APIを提供する場合、間違いなくAPIを提供する方を選択する。












