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

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

2019年10月30日 08時00分 公開
[ITmedia]

 ゆっくりとだが、ある興味深い変化がデータセンター全体に浸透しつつある。それは、運用の管理に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のプリンシパルテクノロジスト。

ITmedia マーケティング新着記事

news115.jpg

「TikTok禁止法案」に米大統領が署名 気になるこれからにまつわる5つの疑問
米連邦上院が、安全保障上の理由からTikTokの米国事業の売却を要求する法案を可決し、バ...

news077.jpg

「気候危機」に対する理解 日本は米国の3分の1
SDGsプロジェクトはTBWA HAKUHODOのマーケティング戦略組織である65dB TOKYOと共同で、「...

news058.jpg

アドビ、Adobe Firefly機能搭載の「Adobe Express」モバイル版アプリを一般提供
アドビは、生成AI「Adobe Firefly」の機能を利用できる「Adobe Express」モバイル版アプ...