API(application programming interface)とは何か?
APIとは?
APIとは、「アプリケーションプログラミングインターフェース(Application Programming Interface)」の略称であり、ソフトウェアの機能や管理データを外部に公開することで、外部の他のソフトウェアと機能を共有できるようにする仕組み、規約のことです。
APIを通して連携を行うことでアプリケーション機能の拡張ができ、自社のアプリケーションやサービスから該当機能を利用することができます。
人がコンピューターを利用する際は、GUI(Graphical User Interface)を通じてOSやアプリケーションの機能を利用するため、プログラミングを行う際はGUIを用いてソフトウェアを開発します。一方でAPIでは、ソフトウェア開発において既存のライブラリを使う場合に利用され、用意されたAPIに従って処理を記述することで、ライブラリの中身を知らなくてもライブラリが持つ機能を利用できます。
APIの機能
APIを使うことで、他の製品やサービスがどのように実装されているかを知らなくてもその製品が提供している機能を利用することができるようになります。
また、ソフトウェア開発が単純化されるため、開発コストの低減や保守性の向上が可能になります。
APIは、自社のアプリケーション開発との接続を容易に実現できる機能でもありますが、利用するデータを外部ユーザーと共有する手段にも用いられます。
代表的な例として、Google Maps APIでは自社サイトに対して会社の場所やお店の情報を地図データとして掲載できる仕組みを持っており、外部ユーザーへの情報共有としての機能を実現することができます。
APIの種類
APIはWebで利用されるAPIと、プロトコル仕様によって考え方が異なります。
OpenAPI
アプリケーションの機能やデータ等を他のアプリケーションから呼び出して利用するための接続仕様、仕組みを指します。他の利用者に公開するためのAPIです。
PartnerAPI
ユーザー登録を行った開発者に限定して公開を行うAPIです。例としてAmazonは「セリングパートナーAPI(SP-API)」を登録したユーザー限定で公開しています。
ClosedAPI
外部公開を行わずに企業やグループ企業内部で利用するもの、もしくは業務提携を行っているパートナー企業内で業務用に限定されて利用するAPIのことです。
CompositeAPI
1つのAPI連携で複数のWebアプリケーションや他のAPIにアクセスできるAPIです。
WebAPI
WebAPIは、HTTPプロトコルを使用して、Web上でAPIのやり取りを可能にしたAPIを指します。WebAPIにはREST(REpresentational StateTransfer)、SOAP(Simple Object Access Protocol) などがあります。
RESTとは?
RESTとは、REpresentational State Transferの略称であり、Webサービスの設計モデルとなります。プロトコルではなく全世界共通の4つの原則から成り立っています。
- 原則1:アドレス可能性
- 全ての情報を1つのURLで表現できること
- 原則2:ステートレス性
- 全てのリクエストが完全分離であり、やり取りが1回ごとに完結すること
- 原則3:接続性
- 情報に別の情報へのリンクを含めること
- 原則4:統一インターフェース
- インターフェースの統一が行われていること
※情報の取得(GET)、作成(POST)、変新(PUT)、削除(DELETE)等
これらのRESTの原則に従って作られたAPIがREST API(RESTful API)です。REST APIでHTTPリクエスト(要求)が行われると、サーバー側でリクエストに応じて処理が行われ、エンドポイントにJSON(JavaScript Object Notation)、HTML、XLT、Python、PHP、プレーンテキストのいずれかの形式で送信されます。
SOAPとは?
SOAPとは、SimpleObject Access Protocolの略称であり、HTTPリクエストやレスポンスにXMLフォーマットを用いてデータのやり取りを行うプロトコルです。SOAPがプロトコルであることに対して、RESTはアーキテクチャとなる点が異なります。
APIのメリット
開発の効率化が行える
APIを利用することにより、ソフトウェア開発を一から行う必要がなくなるため、開発を効率よく進めることができます。また、開発の効率化により開発に掛かる時間、工数も削減できるため、コスト削減の効果も見込めます。
自社で一から開発を行い、サービスを展開したとしても、バグやエラーが発生した際の対応や、利用する機能、製品のEOLに対してバージョンアップを行う必要があるため、短期的、中長期的に見ても開発コストを削減できると言えます。
セキュリティを向上することができる
APIを連携することで、別のアプリケーションへのログイン認証機能を用いることも可能です。既存のセキュリティレベルの高い専用のAPIを導入することでセキュリティの向上を図ることができます。
最新情報の取得を容易に行うことができる
APIを利用することで、各種サービスの最新情報を取得、利用することができます。例えば、自社のサイトにてAmazonの商品を販売している場合は、Amazonが提供しているAPIを連携することでAmazonでの販売価格の更新を自動で反映することができます。これによりユーザーニーズにあったサービスを迅速に提供することも可能となります。