はじめに
今日、ソーシャルネットワーキングは人々の間にすっかり定着しました。中でもユニークなソーシャルネットワーキングサービスであるTwitterは2006年3月に開設され、そのマイクロブログプラットフォームによって全世界で一大ブームを巻き起こしました。
Twitterの開発者がRESTベースのAPIを公開したのは、先見の明があったと言えるでしょう。これまでに多くの開発者がこのAPIを利用して、さまざまなプラットフォーム向けにTwitterクライアントを開発しています。本稿では、.NETプラットフォームを使ってTwitterにアクセスする方法を紹介します。
Twitterは独自のコミュニケーションプラットフォームを提供します。ひとことで言えば、それは大規模なマルチプレイヤー参加型テキストメッセージングプラットフォームです。その基本コンセプトは3つの要素で成り立っています。つまり、「ステータス(メッセージ)」、「フォロワー(follower:フォローする側の人)」、「フォロウィー(followee:フォローされる側の人)」です。ユーザーがステータスを投稿すると、そのデータは投稿者のTwitterフィードに保存され、さらにその投稿者のフォロワーのTwitterフィードにコピーされるというのが基本的なデータの流れです。
本記事はCoDe Magazine誌2009年3/4月号に初めて掲載されたもので、同誌の許可を得てここに再掲載しました。
Twitter URLの基本
TwitterのAPIには、Twitterプラットフォームにアクセスするための仕組みが用意されています。このメカニズムはすっきりした構造で、しかも非常に柔軟です。Twitterのデータにアクセスするには特定のURLを呼び出します。TwitterはこのURLを処理し、XML、RSS、Atom、JSONなどの標準形式でデータを返します。
TwitterのURL APIは3つの部分で構成されています。リクエスト、返されるデータのタイプ、オプションパラメータです。では、次のURLを調べてみましょう。
http://twitter.com/statuses/user_timeline/rodpaddock.xml
このメッセージの/statuses/user_timeline
の部分は、処理すべきメッセージ(アクション)のタイプを指定します。このサンプルメッセージは、指定したユーザーのタイムライン(最近のステータス)を返すことを意味しています。
その次の部分は、リクエストの基本パラメータです。このサンプルに含まれるパラメータrodpaddock
は、筆者(Rod Paddock)のタイムラインを返すようstatuses/user_timeline
リクエストに指示します。
最後のパラメータの.xml
は、Twitterから返されるデータ形式を指定します(この場合はXML形式)。Twitterが他の形式でデータを返すようにするには、拡張子の部分を.rss
、.json
あるいは.atom
に変更します。
このサンプルリクエストで返されるデータを図1に示します。
TwitterのREST呼び出しの多くは、各種のオプションパラメータもサポートします。user_timeline
リクエストでは以下のオプションパラメータが使えます。
id
:投稿者のIDを使ってメッセージを返すcount
:指定した件数のメッセージを返す(デフォルトは20件、最大200件)since
:指定した日付以降のメッセージを返すsince-id
:指定したメッセージID以降のメッセージを返すpage
:指定した表示ページからメッセージを返す
オプションパラメータをTwitterに渡す方法は、URLを使ってWebリクエストにパラメータを渡すのと同じ要領です。「?
」の後ろにパラメータを付加すればよいのです。例えば、次の呼び出しは、筆者のタイムラインから最近の200件のメッセージを返します。
statuses/user_timeline/rodpaddock.xml?count=200
次のURLは、2008年12月1日以降の筆者の最近200件のステータスを返します。
user_timeline/rodpaddock.xml?count=200& since=Tue%2C+01+Dec+2008+22%3A55%3A48+GMT
Twitterは自己完結型のXMLデータを返します。言い換えれば、返されたXMLデータを処理するのに新たな呼び出しを行う必要がないということです。ステータスXMLの基本構造を以下に示します。
<statuses> <status> <created_at> <id> <text> <more elements....> <user> <id> <name> <screen_name> <profile_image_url> <more elements....> </user> </status> </statuses>
各ステータスレコードには、投稿者の詳細情報など関連するすべてのデータが含まれています。ごらんのとおり、非常にシンプルな構造になっています。