ソートリーダー

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

mm
Unite.AI を Google の優先ソースに追加

次の世代は、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を提供する方を選択する。

Marcus Loveland, RP PA Analyst Developer at Maitland Fund Services, writes for the ‘IT crowd’, looking ahead on application programming interfaces (API) and honing in on the GraphQL API architecture.