API という言葉は、ODBC、JDBC が出てきた頃から、エンジニアの方には馴染みのある言葉だったと思います。 「API=Application Programming Interface」 が正式な名前です。今回はAPI でも「Web API」 について説明します。 JDBC, ODBC などのRDB のAPI については別の記事で説明します。
API とはアプリケーションとアプリケーションの間でデータをやり取りする方法です。皆さんはすでにいろいろなところでAPI を利用しています。 モバイルを中心としたアプリケーションの地図情報の多くは、自分では地図情報を持たずGoogle map やBing map などのAPI から情報を取得しています。 アプリケーションから、検索エンジンからの検索結果や楽天商品検索などを参照しているときにもAPI が使われています。 モバイルアプリケーションでFacebook などの「いいね」ボタンが付いていて、それを押すとFacebook にログインもしていないのにFacebook で「いいね」が押される仕組みもAPI です。
##ウェブの仕組み##
API の仕組みの前に、ウェブ(WWW, World Wide Web)はどういった仕組みになっているかを簡単に説明します。
世界のどこかにWeb サーバーがあって、そこにウェブページやデータが存在しています。それをHTTP (HyperText Transfer Protocol)というプロトコルで呼び出しています。 ブラウザからHTTP リクエストを出す(URL をブラウザに入力する)ことで、別の場所にあるWeb サーバーがリクエストを受け付け、リクエストされたページのHTTPを返します。 ブラウザは帰ってきたHTTPをページという形で表示します。これがインターネットの仕組みです。
Web API は、ウェブページと同じように、HTTP でリクエストを送受信する仕組みですが、ウェブページ全体ではなく、データだけをやり取りします。 データをリクエストしてもウェブページ全体の情報が来るわけではありません。Web API では、同じHTTP を使ってデータだけのやり取りをしています。 データは一般的にJSON やXML といった形式が使われます。この仕組みが特にSaaS(Software as a Service)からデータのやり取りをする際にとても重要です。
##SaaS とカスタムアプリケーションのデータ利用における違い##
ここで、カスタムのアプリケーションとSaaS アプリケーションでデータを扱う場合を比較してみます。
カスタムアプリケーションは、UIがあって、ビジネスロジックがあって、データベースがあります。ユーザーはUI からアクセスしてアプリケーションを使います。 SaaS ではUI だけがあって、ビジネスロジックやデータベースはユーザーからは見えなくなっています。ただしユーザーとしてはUI を通じてアプリケーションを使っているという点では カスタムアプリケーションとSaaS では差がありません。
次に、ほかのシステムがアプリケーションを使う場合を考えてみましょう。カスタムアプリケーションでは、UI を通さずに他のシステムは直接DBにデータを取りに行きます。 ところがSaaS では、DB が見えなくなっているため、外部からDB に直接アクセスすることができません。そこでAPI (Web API)というデータだけをHTTP 経由でやり取りする仕組みを 使ってSaaS 内のデータを他のシステムから呼び出したり、データを書き込んだりしています。
##API のニーズの急激な拡大##
現在、アプリケーションの多くがSaaS として提供される中、API はとても重要になっています。公開されているAPI (Public API)の数は急増しています。 図より後の2016年8月時点では15,000を超えるAPI が公開されています(出展ProgrammableWeb)。日々新しいAPI が公開され、今後もさらにAPIの数は増加すると考えられます。 今後数年でAPI の数は100万を突破するとする予測も出ています。そしてAPI のユーザーは、エンジニアだけでなく、非エンジニアも含まれていくといわれています。