お客様のDXの推進やクラウド活用をサポートする
NRIグループのプロフェッショナルによるブログ記事を掲載

NRIの先進テクノロジーに関する取り組み ~API規格の種類と特徴、複数のAPI規格を組み合わせた設計例~

IT基盤技術戦略室

小売・製造、金融・公共をはじめ、幅広い業界において「先進技術を活用してビジネスモデルを変革(DX)し、お客さまへ価値提供していきたい」というテクノロジー活用への期待が高まっています。一方、その期待に反して、技術変化のスピードが速く、技術キャッチアップやその活用が難しいといった悩みもお聞きします。

そのような声にお応えするため、株式会社野村総合研究所(NRI)では「潜在的な顧客ニーズ発の技術調査」「技術動向を見据えた先進技術の早期評価「獲得した技術の事業適用」に継続的に取り組んでいます。このような活動を通して、NRIは専門知識を用いて企業様のビジネスとテクノロジーの架け橋となり、DX実現まで伴走します。

このブログでは、NRIで推進している先進的な技術獲得の取り組みについて、ご紹介していきます。今回は、「API規格の種類と特徴」、「複数のAPI規格を組み合わせた設計例」に関する 調査研究の成果をピックアップしました。

 

API規格の種類と特徴

APIとは、「アプリケーション・プログラミング・インターフェース」の略称で、処理のインターフェース(インプットとアウトプット)を定義したものです。各処理をモジュール化し、開発生産性の向上が期待できる技術です。従来は、REST(REpresentational State Transfer)と呼ばれるAPI規格を中心に発展してきました。RESTは、HTTPでWeb上のリソース(HTML、画像など)にアクセスするためのものであり、OpenAPI Initiative(Google、IBM、Microsoftなどが参加)が規格として標準化しました。HTTP+JSONを利用したシンプルな構成で、様々なクライアントから容易に呼び出しが可能であるため、Webシステムを中心に現在多く利用されています。

ここ数年、DXの進展により、APIの役割が多様化しています。従来は、外部向け機能のインターフェースとしての利用が主でした。最近では、システム内部においてもリリースのスピードアップやUI向上施策の早回し、新技術導入の促進など、より高いアジリティの実現が求められており、この実現にAPIが注目されています。しかしRESTには、柔軟性・効率性が低い(不要な項目を取得する、JSONでのパースや作成処理が必要)といった課題があります。そのため、これらを補う次世代API規格への期待が高まっています。

代表的な新しいAPI規格として、Googleが提供するgRPCやFacebookが提供するGraphQLがあります。gRPCは、ProtocolBufferというバイナリ形式のデータを利用するため電文サイズが小さく、エンコードもデコードも高速といった特徴があります。HTTP2を利用するため通信も高速です。また、単純な同期呼び出しだけでなく、電文や引数、戻り値等インターフェース仕様を厳密に定義することができ、ストリーミング形式にも対応しています。GraphQLは、URLにクエリをPOSTすることができ、REST同様、ブラウザから利用しやすい規格です。インターフェースの定義に、「継承」の概念を持ち、必要な項目の選択や入れ子の項目の選択が可能であるため、高い柔軟性と性能を持ちます。

どのAPI規格を採用するかは、各規格の特徴を踏まえたうえで検討する必要があります。例えば、gRPCは、ブラウザからの利用に難しさがありますが、性能が高いためバックエンドAPI※1の性能を最適化したい場合に適しています。GraphQLは、ブラウザからの利用が容易であり、参照処理を柔軟性高く行えるため、よりクライアントに裁量を持たせる形で、公開API・フロントエンドAPI※2にむいています。RESTは、性能・柔軟性にやや劣るものの幅広い環境から容易に利用可能であり公開API、バックエンドAPI、フロントエンドAPI全てで標準的な選択肢です。REST、gRPC、GraphQLの特徴を表1に纏めました。



複数のAPI規格を組み合わせた設計例

上記で述べたとおり、各API規格にはそれぞれ特徴があります。大規模なシステムや複雑な処理をもつシステムでは、複数のAPI規格を組み合わせて設計することで、システム全体として最適化が図れます。

例えば、性能要件の高いビジネスロジックをもつWebシステムの場合、RESTとgRPCを組み合わせた構成が考えられます。外部とのインターフェース部分(フロントエンド)には幅広い環境から呼び出し可能なREST、システム内部(バックエンド)には性能の良いgRPCを採用することで、システムの接続性と性能の両立が図れます(図1)。また、画面表示の処理が複雑なWebシステムの場合は、フロントエンドにGraphQL、バックエンドにRESTやgRPCを採用します。この構成をとることで、画面側により裁量を持たせた開発が可能となるとともに、複数のデータソース(バックエンドAPIやサーバレスなど)を集約することができます。

複数のAPI規格を組み合わせる際には、異なるAPI間での変換処理や認証認可、トレーシング(可視化)、API設計変更に伴う相互運用の仕組み等を考慮した設計が必要です。これらの設計には、API規格そのものの理解と共に、システムの特性にあわせた適用力が求められます。

NRIでは、REST、gRPC、GraphQL等の代表的なAPI規格について特徴を整理し、採用するAPI規格の考え方や設計の標準化を進めています。また、大規模・複雑なシステムにおいても、API活用によるメリットが得られるよう、複数のAPI規格を組み合わせた構成の設計や検証も行っています。今回は、これらの取り組みの一部についてご紹介しました。今後も、NRIでは、この分野での最新の動向をキャッチアップ、調査・検証を通じて、安全・安心で、より柔軟なシステムの実現に取り組んでまいります。

※1 バックエンドAPI:システム内のサービス間で利用するAPI

※2 フロントエンドAPI:ユーザ向け画面で利用するAPI 

[関連キーワード] #API

 

※ 記事に記載されている商品またはサービスなどの名称は、各社の商標又は登録商標です。