WebAPIとは
そもそもAPIとは、Application Program Interfaceの略語でプログラミングをする際の規約、関数(メソッド)の集合等を指します。
WebAPIとは「ネットワーク越しに利用できる関数でAPIにWebサービスを付与したもの」で「Webアプリケーションの情報を取得することができる仕組み」です。
例えば、、
SNSの代表である、Twitter、Facebook、YoutubeやGoogle、Amazon、Yahoo!など各種サービスはユーザーの膨大な情報を持っています。
その一部の情報を一般ユーザーに提供するため、WebAPIを公開しています。
公開されたWebAPIを元に、自身のWebサービスに情報を取り込んで新しいアプリやWebサービスを作ることができます。
「Google Mapの地図をWebサービスに埋め込みたい」「Googleカレンダーの情報を使って、イベント情報を取得し新しい管理サービスを作りたい」というように、既存のアプリと連携させて簡単に情報を収集、加工できるのです^^
勿論、既存のWebアプリケーションだけではく、自社で開発したWebサービスのWebAPIを公開することで、自社の別のサービスから情報を取得する、ということも可能です。
WebAPIの仕組み
WebAPIは、HTTPリクエスト情報を内部のプログラムで受取り、処理をして所定の形式で結果をレスポンスとして返す仕組みになっています。
*リクエスト*
【構成】ライン、ヘッダ、空行、ボディ
【メソッド】①GET、②POST、③PUT,PATCH、④DELETE
例えば、
①Webブラウザーで所定の箇所をクリックしたとします。
②そうすると、WebサーバーのプログラムでWebAPIサーバーにリクエストを送信し、
③WebAPIサーバーが必要な情報をつけてWebサーバーにレスポンスをします。
④レスポンスされたデータをもとに、Webサーバーで処理を行い、
⑤その結果をWebブラウザーに反映する、という流れです。
WebサーバーからWebAPIサーバーへリクエストを送信するときは、WebAPIのURIと必要なパラメーターを渡します。そうすることで、提供されている情報にアクセスできるのです。
( ex)twitterのURI http://search.twitter.com/search.json?q=webdb
)
WebAPIサーバーからのレスポンスはJSON型など、容量が小さいテキストデータです。
WebAPIを利用するメリットは、複雑なシステムを構築することなく、簡単に必要な情報が取得でき、自身のWebサービスに導入できることです。
一方で、自身のWebサービスはAPIの提供元に依存することになるため、提供が終了してしまうと、自身のWebサービスにも影響を受けることになります。
また、WebAPI提供側のメリットは、情報を提供することによってユーザーの確保ができることが挙げられます。
例えば、twitterを使ったログインのWebAPIを公開することで、別のサービスでもtwitter を使わざるを得なくなり、twitterから離れないアプリケーションの生態系ができることになります。
WebAPIの具体例
WebAPIを使うためには、利用したいアプリケーションがWebAPIを公開している必要があります。具体的にどのような情報が提供されているのでしょうか?
商品情報を提供
Amazonや楽天で販売している商品情報を、商品IDを元に取得することができます。楽天市場系APIでは、ジャンル検索やタグ検索も可能です。そのような情報はアフェリエイトでも利用されています。
>>「Amazon Product Advertising API」、「楽天市場系API」など
位置情報を提供
位置情報を提供しているAPIの代表として、Google Maps APIがあります。
その中でも、Maps JavaScript APIは地図を埋め込むことができ、Maps Geooding APIでは住所やクリックした地点の緯度・軽度を取得することができます。
更に、Geolocation API ではユーザーの同意の元、現在位置を取得することができます。
よくアプリをダウンロードした後に、位置情報をOnにしますか、というメッセージが表示されたりしますよね。Onにした場合、そのアプリはGeolocation APIを使って情報を取得することができます。
その他機能
Facebookでは、対象のユーザーの生年月日や出身校などのプロフィール情報を取得できたり、GoogleではGoogleカレンダーと連携させてイベント情報を取得する、などが可能です。
ひとこと
すでに世の中にあるサービスを使って新しいことできないかな?と思うことがあるかと思います。その際には、是非WebAPIで検索してみてください!