最近はWEB APIに挑戦していました。夢中になっていたので、既存サイトはほっときがちです。でもWEB APIはとっても楽しいです。WEB APIについては難しい説明が多いので、これから使ってみたいな、という人向けに。
APIで何が出来るのか?と会わせて、APIを使う際の具体的な流れについて簡単に説明しておきます。

■WEB APIとは?

WEB APIとは、簡単に言うとオンライン上で利用できるアプリケーションです。
Google,Yahoo,Amazon,ぐるなび,楽天,Facebook,Twitter他、有名WEBサービスがそれぞれが独自のAPIを公開しています。
ユーザーは各社のAPIを利用する事で、各サービスのデータを検索したりサイトで利用したり出来るようになります。

今日のお天気、運勢、商品価格、在庫情報、つぶやき等など・・・。
常に最新情報が表示可能という点が、API最大のメリットです。

■人気のWEB API具体例

人気のAPIを例にしてみます。

amazon API 
・アマゾンから最新商品情報を引っ張ってきて、自分のサイトにのせる。
・アマゾンの最安値価格・中古価格を自動で取得 等。
出力:XML形式
サイト:Amazon Web Services
仕様:Product Advertising API

楽天 API (楽天商品検索API)
・自サイト内で商品検索が可能。在庫情報や値段変動も取得。
・楽天トラベルでは空室情報もゲットできます。
出力:SOAP/JSONP,JSON,XML形式
サイト:楽天商品検索API

ぐるなびAPI
・店舗情報取得
・自サイト内で、店舗絞り込み検索+結果一覧を表示する。等
・Yahoo又はGoogleのマップAPIと組み合わせて、レストラン案内サイトの構築とか。
出力:XML形式
サイト:ぐるなびWebサービス

Google API (Google Maps API)
・地図情報を色々な形で取得可能。3Dマップも。
出力:Maps API ジオコーダでXML・KML・CSV・JSON形式対応
サイト:Google Maps API
GoogleはMap以外にも解析・チャート・検索系APIが用意されていますが略。

Yahoo API 
・地図、オークション、ショッピング、検索、天気予報、テキスト解析など、各種Yahooサービスが利用可能。
出力:XML・json・PHP Serialize形式対応
サイト:Yahoo!デベロッパーネットワークサービス一覧

Facebook API (Graph API)
・フォトアルバム・チェックイン・コメント・イベント他、ほぼ取得できるみたいです。
出力:JSON形式(だと思います…。)
サイト:Graph API - Facebook Developers(英語)

Twitter API
・自サイトや自作アプリからつぶやき投稿や検索が可能になる。
出力:JSON・XML形式対応 (一部RSS・Atom形式でも所得可能)
公式:Twitter Developers(英語)
参考サイト:Twitter API - TwitterまとめWiki

これらの他にも様々なWEB APIが公開されています。

プラグインやブログパーツと違い、自分のコンテンツ内で好きなように利用できるので、アイディア次第で何でも出来そうです。
リリース済のAPI概要をまとめたサイトがありました。すごく便利なので載せておきます。
APIまとめサイト:WEB API情報サイト

■WEB APIの利用を開始するにはどうすればいいの?

APIによって異なりますが、基本的にはそれぞれのAPIに利用登録⇒APIキーを取得すると利用可能になります。
難しく感じますが、基本的にはサイトにログインしてパスワードを発行してもらうノリと一緒です。
利用登録がいらないAPIサービスもあります。どちらの場合も利用規定を一読して下さい。

多くのAPIは無料で利用できます。もちろん、APIキーの取得も無料です。

WEB APIの開発は、トライ&エラーの繰り返しなので、必要なAPIキーは恐れずにさっさと取得して、実際に自分で動かしてみたほうが雰囲気がつかめます。

いきなりオンラインでやると危ないので、まずはローカルにPHP開発環境を整えて、WEB APIをガシガシ使ってみましょう。

■WEB APIの使い方、大まかな流れは?

基本的に、各APIサービスにリクエスト(キーワード絞り込み等)を送ると、情報がXMLやJSON、RSS形式等で出力されて帰ってきます。(XML、JSON形式を採用しているAPIが多いと思います。)

駅データ.jpのAPIが利用登録不要だったので、出力されるXMLとJSONのサンプルを載せておきます。(駅データ.jpは、路線別に駅名一覧を取得するAPIサービスです。)

■JR山手線の駅一覧をURLでリクエスト送信。(11032が山手線のリクエストコード)
XML形式 : http://www.ekidata.jp/api/l/11302.xml
JSON形式 : http://www.ekidata.jp/api/l/11302.json

URL内のコード:11032(山手線)を東京丸ノ内線コード:28002に変更してみます。

■東京メトロ丸ノ内線-駅一覧をリクエスト
XML形式 : http://www.ekidata.jp/api/l/28002.xml

クリックするとダ~ッって表示されてる情報が、XMLとかJSONって呼ばれてるデータです。意味が分からなくても大丈夫です。

駅データ.jpのAPIは、URLでリクエスト送信⇒結果が返ってくる って感じです。
APIによりリクエスト方法やデータフォーマットは異なりますが、どのAPIも流れはこんな感じです。

APIを利用する時は、こんな感じで出力されたXMLやJSONデータを見やすいように解析して自サイトやアプリで利用します。

■プログラミング言語が必要。初心者がWEB API は難しい?

結論から言うと、PHP、Perl、Javascript系の知識が全くない人、嫌いな人はしんどいと思います。

上記のサンプルを見て貰えばわかりますが、取得できるデータはズラ~っと情報が並んでいるだけで、とても人が見やすいデータではないですよね。
当然このままでは使えないので、XMLやJSON形式のデータをいじくって人が見やすいHTMLに整える作業が発生します。

その時に、PHPとかJavascript等のプログラミング言語が大活躍します。ってか使わないと厳しいです。僕は主にPHPでやってます。

上記の例では、直接URLをクリックして情報を取得しましたが、普通はPHPとかで自動リクエスト⇒自動で取得⇒自動でHTML表示するように仕組みます。

具体的に言うと、ユーザーがボタンをクリックした時や、ページを開いた時に自動でリクエスト+結果を表示するようにしておきます。

でも、ちょっとならプログラミング言語いじった事あるよ~っ。嫌いじゃない~って程度の人なら、勉強すればすぐ使えるようになると思います。

僕もPHPその他をたま~に騙しだまし使う程度だったので、今回は勉強するいい機会になりました。

でも実は、今でもPHPとかPerlとか何なのかよく分かりません。連想配列も良く分かってないです。ってか配列自体怪しいです・・・。こんな感じでもイケるはずです。(でもセキュリティーには気を付けて下さい。)

■初心者向けのWEB APIは?

僕も全てのAPIを試した訳じゃないので一概には言えませんが。

導入自体がすごく面倒臭いAPIもあります。amazon APIはリクエスト時に署名が必要なので、キーの取得~導入~始動の全てがとても面倒でした。

上記で紹介した駅データ.jpは、出力データがシンプルで分かりやすい+導入も楽なので、API入門編にいいと思います。

駅名にどうしても興味が湧かない人は、楽天・ぐるなび等日本の会社が提供するAPIからはじめるとスムーズだと思います。たぶん、日本語での案内が豊富だと思うので。

僕は面倒臭がりなので、amazonAPIからはじめました。結果として本当に、とても、ものすごく面倒でした。

amazon APIはクセがあるらしく、利用を容易にする為のperl Services_Amazonというライブラリがあるんですが、初心者としてはコイツの導入自体が容易ではなかったです。

あと、amazon APIは2009年に大幅な仕様変更+その後も何度か変更があったので、古い情報やチュートリアルを参考にする際は注意が必要です。

■WEB APIはどこで動かすの?ブログで動く?

本気でWEB APIを使うなら、少なくとも有料のレンタルサーバー契約は必須だと思います。

まず、無料のレンタルサーバーではPHP、Perlの実行環境が整ってない事が多ので、WEB APIには向いていません。プログラムの安定性を求めるためにも、有料のレンタルサーバーを契約したほうがいいです。

また、ライブドアブログ等のフリーブログで動かすのは、かなり厳しいと思います。 Javascriptを駆使すれば、不可能ではないのかもしれませんが、基本的にフリーブログにはjsファイル等の外部ファイルを置いておくフリースペースは提供されていません。

どちらにせよフリーで使えるサーバーがあったほうが便利なので、WEB APIを使うなら、はじめからPHPが動くレンサバ借りた方がいいです。 

僕はハッスルサーバー 使ってます。データベースを1つしか持てないことが不満ですが、何と言っても月208円と安くて、さらに容量が多い+PHPや複数Wordpressも動くので、今のところは満足してます。

追記:その後、表示速度に不満を感じたためエックスサーバーに引っ越しました。(PHPやWordpress向けのサーバーについてはこちらの記事でも紹介。)

参考:WordpressやPHPこそ!レンタルサーバー比較の基準は『表示速度』が大切。

■WEB APIの難関は、英語。

世の中便利になったので、簡単なコードならWEBで検索すればすぐに見つかります。優秀なサンプルコードも多数公開されているので、カスタムして使えば知識がなくても簡単にサイトに追加できるんですよね。

でも、APIに関しては公開されているサンプルや初心者向けチュートリアルが少ないと感じました。

特にFacebookやTwitter、Amazon APIなど海外系サービスは、日本語の情報サイト自体がまだまだ少ないと思います。

で、結局一番使えるのが、各API公式サイトの仕様案内やフォーラムだったりします。ページが英語だったりするので面倒なんですが、結局一番使えるので読むハメになります。

あと、日本語サイトでの情報収集を諦めて、海外のFAQサイトで探した方が参考になる情報が多かったです。どうせPHPもJavascriptも英語で打つので、コードを参考に出来ればOKですもんね。

僕は日本語サイトに限界を感じたら、Google先生英語版でガシガシ検索してます。

国内サイトなら、公開APIを利用したサンプルサイトを作っていくよが参考になりました。サンプルコードが多数掲載されてます。

■データを取得したら、PHPその他で頑張る

WEB APIの利用は、導入よりもデータ取得後の処理の方が難しいと思います。プログラミング言語を使いこなせるなら簡単ですが、僕は得意じゃないし、JSONとかXMLの処理は初めてだったので壁にぶつかりながらの作業でした。

でも、PHPやJavascript自体は、日本語でのチュートリアルやサンプルコードが豊富です。

WEB APIから情報を取得したら、あとは目的に合わせて処理方法をガンガン検索していきます。「JSON 配列 取得」とかです。

でも今回は、WEB上の情報だけでは頼りなかったのでPHPの本を買いました。本で基礎知識+WEBで補完って感じがいいですね。

ちなみに僕は2冊買いましたが、知識不足で1冊しか活用できてません。(その後2冊目も活用できるようになりました。)

参考:PHP初心者の頃に参考にした本+今でも役立ってる【鉄板】PHP参考書!

■WEB API で夢はひろがりんぐ。

WEB APIに触れてみて思ったこと。それは、可能性のデカさです。

地道に記事をかいたり、コンテンツを作り上げる努力はもちろん大切だと思います。ですが、そこにWEB APIを取り入れたら?何千、何万というデータから有益な情報をユーザーに提供する事が可能です。

お天気、占いの結果、人気の動画ランキング、最新の在庫情報、画像、空室状況、店舗の位置情報などなど・・・。

全てを個人でやる事は不可能に近いですが、WEB APIを導入すれば簡単に実装でき、サイトも華やかになります。

あと、APIは動かしてて単純に楽しいです。
XMLやJSONは、何百件というデータを取得しても表示がすごく早いんです。取得したデータがサクサク表示されると、本当頑張ってよかった~と思います。

興味が湧いた人は、是非取り入れてみて下さい。

最後に:WEB APIは日々進化します。掲載情報が間違ってたり古くなっていたらごめんなさい。

■WEB API開発環境について記事を追加しました。

⇒ WordpressやPHPの動作テストはローカル環境で。