ソートリーダー

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 (MSFT ) などが使用しており、2022年3月にはSalesforce (CRM ) も採用した。

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を提供する方を選択する。

Maitland Fund ServicesのRP PAアナリスト兼開発者であるマーカス・ラブランドは、IT分野の読者に向けて執筆しています。アプリケーション・プログラミング・インターフェース(API)の今後を見据え、特にGraphQL APIのアーキテクチャに焦点を当てています。