はじめてのYQL > YQL consoleを使ってみる

アメリカYahoo!が提供するサービス「YQL」をはじめて使ってみた。

YQLは「Yahoo! Query Language」の略で、データベースを
操作するときに使うSQLを文字ってつけられた名前(と思われる)

What is YQL?

The Yahoo! Query Language is an expressive SQL-like language that lets you query, filter, and join data across Web services. With YQL, apps run faster with fewer lines of code and a smaller network footprint.
Yahoo! and other websites across the Internet make much of their structured data available to developers, primarily through Web services. To access and query these services, developers traditionally endure the pain of locating the right URLs and documentation to access and query each Web service.
With YQL, developers can access and shape data across the Internet through one simple language, eliminating the need to learn how to call different APIs.

インターネット上にあるWeb APIに対して、
SQLライクなqueryを投げることにより、
使う側が望む形でデータをfilterし、
任意のフォーマット(XML or JSON)でレスポンスを取得するための
サービスである。(おれおれ意訳)

YQLを知らなかった人は、公式サイトの右ナビにある「Try the console」から
YQLをさわってみて動作イメージを掴んでみるのをおすすめします。

「Your YQL Statement」にqueryを入力してTESTボタンを押せば
 VIEWに結果が表示されます。インデントされてみやすいレスポンスが
FORMATTED VIEWに表示され、階層構造が見やすいレスポンスが、
TREE VIEWに表示されます。

レスポンスはXMLとJSON(callback関数名を指定したJSONP)を
選択可能です。

入力するクエリーについては、画面右にあるExample Queriesに
サンプルYQLクエリーがあるので、まずはそこから適当に選んでみてください。
Example Queriesにある、
select * from flickr.photos.search where text="Cat" limit 10
は、Flickrから、説明文やタイトルに"Cat"という文字を含む写真を
取得するYQLクエリーです。
select id from flickr.photos.search where text="Cat" limit 10
とすると、レスポンスにはidしか含まれなくなります。
SQLを少しでも知っている人には理解しやすいと思います。

また、YQLは、XML->JSONPへの変換にも使えます。
例えば、こちらのようなRSSの場合だと、
select * from rss where url = 'http://shopping.yahoo.co.jp/search/rss?p=vaio'
というYQLでJSONPに変換が出来ます。(JSONのラジオボタンを選択)

XMLのみで、JSONPに対応していないXML APIの場合だと、
以下のようなYQLで変換可能です。
select * from xml where url = 'http://search.yahooapis.jp/WebSearchService/V1/webSearch?appid=vbQglqGxg65YDwPxyXTnUvxZxonbuDAc1Y1griEo2dV8piOpR9nvOJmdP6dHiA--&query=vaio'
これで、Yahoo! JapanのWeb検索APIのレスポンスをJSONに変換できます。

XML->JSONの変換ができる、ということは世の中のGETで取得できるAPIを
javascriptから呼び出せる、ということなので、非常に可能性を感じます。

これから、jqueryや、2009/09に発表されたYUI3を使って、
YQLと連携して遊んで見ようと思います。