APIの種類とそれぞれのユースケース
英語によるオリジナルはこちらでご覧いただけます。
開発者はアプリケーションプログラミングインターフェース(API)を活用することで、ソフトウェアシステムやプラットフォーム同士を連携させることができます。こうした連携は新たな機能や処理能力の導入につながります。ただし、連携を後押しするためには、長所と短所、特性がそれぞれ異なる一連のプロトコルのなかから、適切なものを選択する必要があります。この記事では、特に広く利用されているAPIの種類とプロトコルについて深掘りしていきます。
ウェブAPIの種類
APIにはいくつかの種類があり、対象の用途や目的のユースケースがそれぞれ異なります。ウェブAPIの主な種類は以下のとおりです。
オープンAPI
オープンAPI(パブリックAPI)は、ソフトウェアアプリケーションを開発するための一連のツール、ルーチン、プロトコルを通じて機能します。パブリックAPIでは、アプリケーションのデータへのアクセスは認めつつ、共通のソースコードに対する開発者のアクセスは防ぐことができます。つまり企業にとっては、自社のサービスを提供することでメリットを得られる一方で、開発者の成果物に対する自社の所有権を維持できます。
開発者にとっては、企業が提供する機能やサービスデータなどの要素を利用して革新的なアプリケーションを生み出せるのは有益です。その際には、RESTful APIに相当する手段を通じて、開発者が活用する新しいプログラム同士を効果的かつセキュアに連携し、認証と認可を実現します。
パブリックAPIの利用に対するニーズは急増しており、画期的なアプリケーションやサービスが続々と誕生しています。
パートナーAPI
パートナーAPIは、企業間(B2B)でのデータアクセスやサービス利用に特化したインターフェースです。その効率的なアプローチのもとで企業各社がパートナーのリソースを活用し、自社のアプリケーションやサービスのなかで独自の機能を生み出すことができます。
既存のテクノロジを活用できることから、コストを効果的に削減し、時間を効率的に配分できます。自社のビジネスモデルに適合するパートナーAPIを通じて、顧客のフィードバックや追加のプロダクトなど、価値の高いデータやサービスを取り入れることで、顧客体験を強化し、売上の拡大につなげることができます。
内部API
内部APIは、その名が示すとおり、社内の開発者向けのAPIです。内部APIを通じて、システムのコンポーネント間でデータをスムーズに伝送し、プロセスを自動化できます。
内部APIは、もっぱら大企業のオペレーションやサービスに利用されており、プロプライエタリなシステムであることが一般的です。社内のさまざまなアプリケーションやシステムは、内部APIを利用することで相互連携が可能になります。修正やメンテナンスの際には、内部APIが形成する抽象化レイヤーのもとで、それぞれのアプリケーションやシステムを独立したユニットとして扱うことができます。革新的なテクノロジやサービスを既存のシステムにシンプルなプロセスで取り入れるうえで、内部APIは有効に働きます。
複合API
複合APIは、複数のAPIを1つのインターフェースのもとに統合し、取得元が異なるデータを開発者が一元的に参照できるようにするものです。複雑なアプリケーションとやり取りするときの負担が軽減され、シンプルなデータアクセスと利用が可能になります。これは各種クラウドサービスの連携でよく見られます。
複合APIを利用する開発では、個々のAPIを呼び出すコードを別々に記述する必要がなくなり、効率的なコーディング手法を採用できます。複数のAPIにアクセスする統合インターフェースを通じて、開発プロセスを合理化し、費用対効果の高いソリューションを構築できます。
APIプロトコルの種類
APIを利用して二者間のプログラミングインターフェースを連携する際には、APIプロトコルとして知られる厳密な指針に従うことで、やり取りを統制します。
こうした規則があることによって、さまざまなアプリケーションのなかで通信様式を標準化してデータを交換する際の効率性が高まります。APIプロトコルが規定する要件には、リクエストやレスポンスの交換のフォーマットや、やり取りできるデータの種類、認証の手順、情報を安全に伝送するためのセキュリティ手段などがあります。こうした標準に従うことで、やり取りの一貫性が保証され、パフォーマンスの信頼性を確保できます。
REST API
現状では、大多数のAPIはREST(Representational State Transfer)ベースであり、通常ウェブアプリケーションにはREST APIが採用されています。
REST APIとは、JSON、XML、プレーンテキストなどの形式のデータをHTTPリクエストで送受信するための汎用的なインターフェースです。また、RESTのアーキテクチャ設計の根本原則をクライアントとサーバーの間の通信に取り入れていることから、この種のインターフェースの代表例となっています。その設計では、GET、POST、PUT、DELETEなどの標準的なHTTPメソッドで実行できる各種のオペレーションのパラメータが定められており、スケーラビリティも確保されています。
APIを通じて、JSON形式やXML形式の構造化データへのアクセスが容易になるとともに、リソースのセキュリティとアクセス性が保証されます。開発者はRESTの原則に従って、複数のデバイスやプラットフォームで使用できる、信頼性と使いやすさに優れたAPIシステムを構築できます。
SOAP API
ウェブサービスの開発にはSOAP APIの利用も可能です。SOAP APIは、XML形式のメッセージを使用し、2つのアプリケーションがネットワーク経由で通信します。
SOAPはルールが厳格で、メッセージングの仕様が厳密に定められていることから、RESTなどのプロトコルよりもセキュアです。SOAP APIはエンタープライズアプリケーションでよく利用されます。特に、本質的にセキュリティの水準が高い決済処理や顧客管理で使われています。
特定のプラットフォームに縛られずに多種多様なクライアントからアクセスできるウェブサービスは、SOAP APIを利用して開発できます。SOAPは本質的なセキュリティの高さも重要なメリットであり、機密性が高い情報の伝送に広く使われています。
GraphQL API
高速なAPIソリューションが必要であれば、GraphQLを検討するとよいでしょう。クエリー定義に特化した機能があり、クライアントからの過度なクエリーを排除できる先進的なアプローチとなっていることから、データの柔軟な集約という強力なニーズを満たすことができます。
従来のREST APIとは違って、データをオンデマンドで簡単に取得できるインターフェースを開発者が利用できます。要するに、GraphQL APIでは、バックエンドサービスから取得したいすべてのデータを、1つのAPIエンドポイントに対するリクエストで取得できるのです。これは余分なAPIコールの抑制につながります。GraphQL APIはデータを的確に取得できることから、データのリクエストを最小限に抑えることが可能で、アプリケーションの効率性が高まります。加えて、開発者が新しいフィールドや型をアプリケーションに素早く取り入れることができるため、迅速かつ効率的な開発プロセスが確立されます。
Webhook API
Webhook APIの機能の中心的な役割は、各種のウェブアプリケーション間でリアルタイムのデータ伝送やシームレスな連携を容易に行えるようにすることです。使用例としては、メールの受信をユーザーに伝えるプッシュ通知の送信が考えられます。事前に定めた特定のイベントが発生すると、直ちにWebhook APIがメッセージを自動で送信します。これが「フック」であり、ソフトウェアプログラム間で通信を開始する合図になります。
アプリケーションはWebhook APIを通じて同期を維持し、イベントに即座に反応できます。ソフトウェアがリアルタイムのデータを交換するイベントベースのプログラミングにおいて、Webhook APIは幅広く利用されています。その用途はさまざまで、例えばリンクをクリックしたユーザーに通知を返したり、オンラインストアに新商品を反映したりといった処理を、人間の操作なしで実行できます。
RPC API
アプリケーションはAPIを使えば、別のマシンで稼働している場合でも、遠隔地からリモート関数をシームレスに実行できます。こうした柔軟性がきわめて重要な意味を持つ分散システムやマイクロサービスアーキテクチャでは、リモートプロシージャコール(RPC)APIの利用が増えています。この種のAPIの実装は、JSON-RPCやXML-RPCのようなプロトコルに準拠しているのが一般的です。
RPC APIの土台にあるのは、強力なRPCプロトコルです。さまざまなトポロジのネットワークで相互接続された複数のコンピュータノードの間で効率的にデータを伝送できるプロトコルとなっています。通信は標準的にして簡潔なクライアントサーバーの枠組みに従っており、クライアントが送信したリクエストに対してサーバーが応答を返します。クライアントとサーバーの間の通信プロセスはメッセージによって効率化されています。メッセージには、特定のタスクを実行してレスポンスを返すようサーバーに求めるリクエストが格納されており、リモートプロシージャコールとして知られています。RPC APIは、リモートマシン上にあるデータベースなどのリソースの管理や、ウェブサービスへのアクセスでよく使用されます。
APIの種類はほかにもありますが、以上が主に広く利用されている一般的なAPIです。実際に使用するAPIの種類は、アプリケーションの固有の要件やアクセスするデータに応じて判断することになります。
APIリクエストのメソッド
APIのリクエストでは、クライアントアプリケーションがオンラインシステムに対して行える操作の種類を定めたさまざまなメソッドを使用します。これらのメソッドの中心的な用途は、オンラインシステムに保存されている情報の取得や修正です。
具体的には、APIリクエストの主なメソッドには、GET、POST、PUT、PATCH、DELETEの5種類があります。
このうちGETメソッドでは、情報の取得を簡単に行えます。情報の新規作成はPOSTメソッドでのみ実行できます。古い情報の更新にはPUTメソッドを使う必要があります。情報の修正が必要な場合はPATCHメソッドを使い、余分なファイルはDELETEメソッドで削除します。このように、それぞれ固有の目的や用途を持つメソッドを組み合わせて効果的に活用することで、ダイナミックで強力なアプリケーションを開発できます。
いくつかの種類のAPIメソッドについて、概要を以下に示します。
- GETメソッド:指定のリソースから情報やデータを取得する
- POSTメソッド:指定のリソースに処理対象のデータを送信する
- PUTメソッド:指定のリソースを新しいデータで更新する
- DELETEメソッド:指定のリソースを削除する
- PATCHメソッド:指定のリソースを部分的に更新する
- OPTIONSメソッド:サーバーのエンドポイントがサポートしているHTTPメソッドを取得する
- HEADメソッド:レスポンスのヘッダーのみを取得し、ボディは除外する
- CONNECTメソッド:リソースへのネットワーク接続を確立する。通常はSSL/TLSのトンネリングで使用する
- TRACEメソッド:受信したリクエストをそのままクライアントに向けて返送させる。デバッグ用途で使う
APIメソッドは一般に、開発者がウェブサービスやウェブアプリケーションとの通信に使用し、データや機能へのアクセスや操作を離れた場所から行うことができます。
まとめ
モダンなウェブアプリケーションの開発を目指す開発者は、ウェブAPI、APIプロトコル、APIリクエストのメソッドに関して、種類の違いを理解しておくことは非常に大切です。
REST APIは、プロトコルの種類として最も一般的です。GraphQLは比較的新しい種類のプロトコルで、対象を絞った効率的なデータ取得が可能になっています。そのほか、SOAP、RPC、Webhookの各APIプロトコルにも、それぞれ役割があります。
APIリクエストで使用するメソッドは、送信するデータの種類や目的のアクションの違いに応じて決まります。各メソッドはそれぞれメリットや用途が異なります。開発者は使用するメソッドを入念に検討する必要があります。
結局のところ、どの種類のウェブAPI、プロトコル、リクエストメソッドを選べばよいかは、要件と目標に応じて変わります。それぞれの種類の違いを理解することで、開発プロジェクトに最適な手法を選択し、堅牢で効果的なアプリケーションを完成させることができます。開発者のアジリティに、コンプライアンスとセキュリティを融合しましょう。APIファーストの企業を目指すうえで、Kongがどのように力になるかを体験してください。