検索
特集/連載

RESTはオワコンか、クエリ言語は「GraphQL」の時代へRESTで十分な用途もあるが

RESTはコンピュータ間のクエリをシンプルに解決してくれたが、不便な場面も見られるようになった。複雑なクエリについてはGraphQLの方が向いているかもしれない。

Share
Tweet
LINE
Hatena

 ゆっくりとだが、ある興味深い変化がデータセンター全体に浸透しつつある。それは、運用の管理にREST(Representational State Transfer)を使うという動きだ。これによりデータセンターアーキテクチャのモデルが使いやすくなり、自動化とオーケストレーションの機会が広がる。RESTは、コンピュータが普遍的なHTTPプロトコルを使って簡単に通信する方法として2000年に初めて導入された。RESTにより、さまざまなシステムを疎結合して情報を交換することが可能になった。

 ただし最近、データセンターの軸足はRESTからGraphQLへとややシフトしている。

GraphQLとRESTの違い

 RESTの中心にあるのは「全てが1つのリソース」という考え方だ。当初は、この考え方が優れたソリューションだった。だが、このアーキテクチャは幾つか大きな問題に直面している。RESTのリソースは1つに限定される。つまり2つ以上のリソースのデータを問い合わせる場合、ユーザーはサーバと複数回やりとりする必要がある。

 例えば「テニスが趣味の35〜45歳の女性」を問い合わせるとしよう。まず、テニスが趣味の人を見つけるクエリを実行する。次に対象年齢、性別などを絞り込むクエリを実行しなければならない。

 GraphQLを使えばよりきめ細かなクエリが可能になり、結果のデータを効率良く返すことができる。GraphQLは基本的な前提として、包括的なデータスキーマを利用者に公開し、利用者が必要なものを明確に決定できるようにする。RESTエンドポイントとは異なり、どのリソースでも全てのデータを1回のやりとりでクライアントに送信できる。

 その理由は、GraphQLが柔軟性の高いアプローチを使って設計されている点にある。

APIの柔軟性

 GraphQLは専用のリソースを扱うのではなく、全てのリソースをつながったグラフと見なす。そのため、ニーズにぴったりと合うようにクエリを調整できる。GraphQLを使うと、自身のアプリケーション用に柔軟性の高いAPIをすぐに構築できるため、クエリに費やす時間が大幅に短縮される。

 さらに、GraphQLは応答に含めるフィールドをユーザーが指定できるため、応答に必要なデータを限定できる。1つのクエリで、1つのGraphQLデータクエリ内で結び付いている複数のエンティティーを組み合わせることも可能だ。

 RESTは、データフィールドのサブセットのみを取得するように要求を限定することはできない。そのため、大きなデータセットを管理する際は扱いにくくなる。多くのSaaSプラットフォームがGraphQLを選んでいる理由はこの点にある。

新たな夜明け

 APIを使うと機能が高まり生産性が向上することから、企業がサービスを提供する方法に革命が起きている。こうした企業はマルタ航空からNew York Timesまで多岐にわたる。

 APIの経済効果は後々にまで影響を及ぼす。GraphQLは、各リソースに必要なデータを宣言で指定する新たな方法をデータの利用者に提供する。つまり、転送するデータや必要なコードが少なくなる。その結果として、最終的には動作がさらに高速になる。

 GitHubなどの膨大な量のデータを管理するソフトウェア企業が急速にGraphQLを導入しているのは理にかなっている。

 GraphQLは、RESTへのとどめの一撃というわけではないだろう。とはいえ、長きにわたって利用される豊富な強化点を含んでいる。

レベッカ・フィッツフュー氏はRubrikのプリンシパルテクノロジスト。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る