SQLのようにWebを操作するYahoo Query Language(YQL)がInsert/Update/Deleteをサポート
米ヤフーが提供するサービスのYahoo! Query Language(YQL)は、まるでSQLのようにWebを検索できるAPIです。例えば、Flickrから猫の写真を取得したいときには、次のようなYQLになります。
SELECT * FROM flickr.photos.search WHERE text="cat"
このSQL文を次のようにしてYQLのAPIへ渡します。
http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM flickr.photos.search WHERE text="Cat"
結果はJSONやXML形式で受け取ることができます。いわばYahoo!の検索エンジンをSQLっぽく操作できる方法だといえるでしょう。
YQLでWebに対してInsertする
このYQLがついにInsert/Update/Deleteをサポートし、Webへの追加、更新、削除ができるようになったと、ReadWriteWebの記事「All the Web's a Database: Yahoo Extends YQL With Insert, Update, Delete」が伝えています。
以下のサンプルは、上記の記事とYQLのマニュアルから引用したものです。例えば、Twitterにメッセージを追加するには、次のようなYQL文になります。
INSERT INTO twitter.status (status,username,password) VALUES ("Playing with INSERT, UPDATE and DELETE in YQL", "twitterusername","twitterpassword")
TwitterのAPIについては、あらかじめXML文書で定義しておき、そのうえで上記のYQLを実行すると、Twitterへのメッセージが追加されます。
bit.lyを用いてURLを圧縮するYQL文は次のようになります。
INSERT INTO bitly.shorten (login, apiKey, longUrl) VALUES ('USERNAME', 'API_KEY', 'http://yahoo.com')
UPDATE文のサンプルも見てみましょう。下記のサンプルは、Yahoo! Profilesの自分のステータスを変更します。
UPDATE social.profile.status SET status="Using YQL UPDATE" WHERE guid=me
DELETE文のサンプルは、Twitterの発言を削除する例です。
DELETE FROM twittertable WHERE tweetid="12345" and username="twitter_username" and password="twitter_password"
上記のtwittertableは、あらかじめXMLで定義されたTwitterのAPIやデータ構造の定義を指す名前です。
どのYQLをみても、まるでSQLのようです。しかしYQLはどのような用途に使えるのでしょうか?
一人で小規模なマッシュアップをするのであれば、APIを直接呼び出すようなプログラミングのほうが手っ取り早い気もします。しかしある程度のチームで、しかもスキルにばらつきがあり、それらがさまざまなマッシュアップを実現する開発を行う場合には有用かもしれません。YQLの狙いは、そうした大規模なマッシュアップを促進することにあるのでしょうか。