かつて、インターネット上のシステムや機能が相互に連携し合うような仕組みがなかった頃は、APIと言えば単一のアプリケーションにおける機能呼び出しのためのインターフェースという意味でしかありませんでした。
しかし今ではインターネットを介して、様々なAPIが公開され、利用者が自由に使えるようになっています。ここでは、APIとはどのようなもので、どんなメリットがあるのか、種類やトレンドなどについて解説していきたいと思います。
APIとは何か
最近では、APIと言えばWebAPIのことを指すケースも多くなってきています。WebAPIとは、APIの一種ではありますが、インターネット上に公開され、HTTP(またはHTTPS)プロトコル経由で利用できるようにしたAPIのことを指します。
ここでは、最近のシステム開発・アプリケーション開発でトレンドになっているWebAPIの方を中心に解説していきます。
WebAPIは、基本的にはAPIを利用したいWebサービスに利用登録をして、「APIキー」と「シークレット」と呼ばれるデータを取得することで利用可能になります。登録するWebサービスによりますが、多くの場合は無料で利用できるようになっています。
APIのメリット
再利用性の向上
APIを作成し、公開するメリットとしてまず第一にあげられることは、再利用性の向上です。
APIとして公開することで、他のプログラムやシステムから、機能を呼び出して使うことができるようになります。
アプリケーション開発者は同じ機能を開発する必要がなくなるため、開発効率の向上や開発費用の低減に大きな効果があります。
また、データを検索するようなAPIであれば、機能だけではなくデータも再利用できることになります。例えば、郵便番号をパラメータとして渡し、住所を返却するようなAPIであれば、使う側は「検索する」という機能だけではなく、「住所データ」も利用できることになります。
かつては、このような再利用は、同じアプリケーション内や、せいぜい同じシステム環境内で行うのが普通でした。しかし、現在ではWebAPIの仕組みにより、インターネットを介して世界中のどこかで開発された機能・データを使うことができるようになっています。
最新かつ実績がある機能を使える
例えば、セキュリティに関する機能などは、開発者が新たにAPIを開発するよりも、既に世の中で十分利用され安全性が担保されているAPIを使った方が、安心できるという面もあります。
企業が公開しているAPIは、適宜アップデートが行われていますので、利用者はすぐに新しい機能を使うことができます。
万一不具合があった場合でも、API提供者により不具合が修正されれば、修正版を使うことができます。修正されるのはAPIの中身ですので、利用者側は特にプログラム修正を行う必要はありません。
ユーザを自社のサービスに誘導できる
ECサイトなどがAPIを公開することで、様々な利用者のWebサイトで使われます。例えば、ECサイトのある商品の値段をAPIを介して表示しているWebサイトがあったとします。Webサイトを見た人がその商品を気に入り、ECサイトへのリンクをたどって商品を購入してくれることもあるはずです。
これは、主にAPIを作成する側のメリットとなりますが、使い勝手のよいAPIを開発すれば、様々なWebサイトで使われて、インターネット上のユーザを自社のECサイトに誘導できることになります。そのように、宣伝にもなる面もあるため、無償でAPIを利用できるようにしているWebサービスや企業が多いのです。
WebAPIの種類
RESTful API
RESTとは、Representational State Transferの略で、下記の考え方に従って実装されたAPIをRESTful API(またはREST API)と呼びます。
HTTPのメソッド(命令)でデータ操作種別(CRUD)を表す
APIが提供されているWebサービスのURIに対して、HTTPメソッドにてアクセスすることでデータの送受信を行います。
POSTメソッドであればCreate(作成)、GETメソッドであればReference(参照)、PUT/PATCHメソッドであればUpdate(更新)、DELETEメソッドであればDelete(削除)、というように必要な命令を実行してデータにアクセスできます。
レスポンスとしてXMLもしくはJSONで操作結果を戻す
上記のようにHTTPメソッドにて実行した結果は、HTTPステータスコード(200 OKなど)で受け取りますが、データを受け取る必要がある場合には、XMLやJSONにて結果を受け取ります。
URIで操作対象のリソースを指定する
RESTではない従来のAPIの場合、「~/api/getUserInfo」というように、作成用のURIを用意してリクエストを行っていました。
しかし、RESTful APIの場合は、URIで表すのは操作対象のリソースで、リソースに対する操作はHTTPメソッドで命令します。
そのため、「~/api/getUserInfo」な指定方法ではなく、「~/api/userInfo」のように操作対象のリソース名を含んだURIにGETメソッドでリクエストを行います。
URIの中に操作したいリソースの名称を指定するという仕様とすることで、インターフェースが統一されるため、利用者・開発者ともにAPIの使い勝手が良くなります。
ステートレスにする
Restful APIでは、サーバはクライアントのセッション情報を保持しません。そのため、リクエストの際にはクライアントが以前のやり取りを含めた情報を毎回送信する必要があります。
リクエストの度に、全ての情報を送信し直さなければならないのは一見無駄なように見えますが、一回のリクエストで処理が完結するように作られているため、サーバ側のプログラムは単純な作りで済みます。
また、サーバ上にセッション情報を保管する必要がないため、負荷や性能面で大きなメリットがあります。
仕様が単純で明確であることから、開発者・利用者双方にとって使いやすい仕組みとなっており、RESTful APIは様々なWebサービスで利用が広まっています。
SOAP
SOAPとは、「Simple Object Access Protocol」の略で、ネットワーク越しにサービスを呼び出すためのデータのやり取りを決めた仕様です。
リクエストおよびレスポンスともにXMLで記述されたフォーマットでデータをやりとりを行います。
SOAPメッセージの中は、下記の要素で構成されています。
- プロトコルバインディングヘッダ
- エンベロープ(Envelope)
- ヘッダ(Header)
- ボディ(Body)
プロトコルバインディングヘッダを先頭に、エンベロープと呼ばれる特殊なタグの中に、ヘッダとボディを記述します。
セッションの保持など送受信に関する情報や付加情報をヘッダに、メッセージ本体のデータをボディに入れる仕様になっています。ヘッダは省略可能であり、つけなくてもSOAPとしての動作は可能です。
また、よくSOAPと合わせて利用される仕組みに「WSDL(Web Services Description Language)」と呼ばれるWebサービスインタフェース記述言語があります。
WSDLには、公開されているWeb APIの定義(公開されているメソッドの種類、URI、パラメータや戻り値、名前空間など)が記述されています。APIを利用するプログラムは、WSDLの定義ファイルを読み込むことで、都度リクエストデータを生成しなくとも、APIの仕様に合わせてデータのやり取りができるようになります。
SOAPはRESTと比べると、複雑な入力を必要としたり、入出力に対してチェックを必要とするようなサービス等での利用に向いています。
おわりに
ある程度の手順を踏めば比較的簡単に利用出来るものも多いため、利用までのハードルが低いのもAPIのメリットです。
本格的に利用するにはプログラミングの知識は必須ですが、まずは簡易なものから使い始め、少しずつAPIの知識を身につけてはいかがでしょうか。