• 会員限定
  • 2022/08/26 掲載

GraphQLが大注目のグラフAPIとは? 「REST API時代終了」後に注目すべきAPIの新潮流

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
会員になると、いいね!でマイページに保存できます。
APIの世界には大きな変化が訪れており、API向けに作られたクエリ言語「GraphQL」を含め、グラフAPIが注目を集めるようになっている。APIの管理方法も変化しつつあり、アプリケーションのアーキテクチャー全体で複数のAPIゲートウェイが使われ、マイクロサービスやサービスメッシュも利用されている。こうした複雑な環境の中で、どのようにAPIを管理すればよいのか。ガートナーのバイス プレジデント, アナリスト、マーク・オニール(Mark O'Neill)氏が、APIの新しいトレンドと合わせて解説する。
執筆:畑邊 康浩
画像
グラフAPIは今まさに注目を集めている技術だ
(出典:Gartner(2022年6月))

フロントエンド開発向けにGraphQLに着目する

 現在、多くの企業がデータ連携などで「API(Application Programming Interface)」を活用している。その主流はREST APIだが、REST APIが支配する時代が終わろうとしている。また、中央集権型のAPIゲートウェイの時代も終焉を迎えつつある。

 ガートナーが2021年7月に発表したAPIとビジネスに関するハイプサイクルにおいて、グラフAPIは話題が先行し、黎明期から過度な期待のピーク期に差し掛かろうとしている。

 しかし、GraphQLはまだハイプサイクルには入ってきていない。これは、すべてのグラフAPIがGraphQLを使っているわけではないからだ。Microsoft Graph APIやSAP Graphなどの一般的なAPIはREST APIである。

 SAP GraphはOData v4を使っており、このような場合は必ずしもGraphQLを使わなければならないというわけではない。GraphQLを使わずとも、データで関係を示したり、グラフに基づいてクエリを実行したりすることは可能だ。

 ただ、それでも多くの企業がGraphQLを使用しているのは、フロントエンド開発でメリットがあるためだ。GraphQLは、もともとはFacebookが開発したもので、フロントエンドの開発に軸足を置いていた。

 フロントエンドの開発というと、たとえばコンシューマーが使うモバイルアプリやWebアプリ、音声対応のアプリケーションなどの開発を指すが、実現するためにはバックエンドのデータへのアクセスが必要となる。新しい機能や新しいエクスペリエンスを顧客に提供するためには、多くの場合、短期間でこれを実現する必要がある。そこで、GraphQLのAPIがバックエンドにあれば、即座に、柔軟にフロントエンドに対応できる。

「フロントエンドのスタックでも、たとえばReactなどと相性がよいです。ですから、GraphQLはフロントエンドのエクスペリエンスのためにAPIを提供するソリューションとして、検討する価値はあります」(オニール氏)

画像
GraphQLはフロントエンド開発でメリットがあるという
(出典:Gartner(2022年6月))

GraphQLサーバの機能とセキュリティ

 バックエンドからGraphQLを提供しているため、GraphQLサーバと呼ばれている。

 GraphQLサーバの機能として、まずクエリの解析が挙げられる。フロントエンドからのリクエストに応えるために何をすべきか解析する機能だ。多くの場合、さまざまなデータソースに接続されている。通常それらデータベースはグラフ機能を持たず、GraphQLをサポートしていない。そのため、古いデータソースの前にGraphQLを重ねる必要がある。

 また、GraphQLサーバはキャッシングの機能も備えている。同じリクエストが来た時に、毎回処理をして演算能力を消費しないようにするためだ。またサブスクリプションもサポートする。そして非常に重要な機能は、データへのアクセス制御だ。

「この分野には多くのベンダーがいます。Apolloなどはかなり普及していますし、Hasura、StepZen、Tykなどです。また、多くのクラウドプロバイダーも、クラウドネイティブなアーキテクチャーの一部としてGraphQL機能を提供しています」(オニール氏)

 GraphQLに関連して、セキュリティがよく話題に上がる。データへのアクセスを可能にするものなので当然のことだろう。「多くのセキュリティ関係者は、GraphQLの考え方自体に恐怖を感じている」とオニール氏は話す。

「クライアントは、GraphQLサーバを通じてあらゆるものにアクセスできてしまいます。非常に、広く、深い、複雑なクエリができてしまう。これらのクエリは、全てGraphQLサーバでサポートされなければならないわけです」(オニール氏)

 この懸念に対し、ベストプラクティスが生まれてきている。たとえば、本番稼働前のテスト環境で、フロントエンドのアプリケーションがGraphQLをどのように使うか、自然な使い方を確認し、本番環境ではその使い方だけができるよう制限することだ。また、アクセス制御は、GraphQL、APIレベルだけでなく、フィールドやオブジェクトレベルで制御することも重要となる。

【次ページ】マイクロサービスのコストとメリット
関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます