Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。4オススメユーザー表示処理オススメユーザーデータ作成処理オススメユーザー一覧表示処理まとめTwitterユーザー情報の構成アプリケーションを開発する準備が整ったところで、いよいよアプリケーションの設計について説明していきます。Twitterのユーザー情報について説明します。APIからはさまざまなユーザー情報が取得できますが、当アプリケーションでは、表2に示す属性を使用します。APIを通して取得し、Datastoreに保存します。twitter上のユーザーID。IDでURLを構成する。ユーザーに関する説明文。図1に示した処理構成のうち、まずはユーザーデータ取得処理から説明します。ユーザーデータ取得処理は、TwitterのAPIにアクセスし、ユーザー属性情報とフォローの情報(friends)をDatastoreに保存する処理を担当します。図7にその処理構成を示しました。ユーザーデータ取得処理の処理構成ユーザーデータ取得処理は、さらに2つの処理から構成されます。それは「初期データ作成処理」と「ユーザーデータ収集処理」です。「初期データ作成処理」は、アプリケーション運用開始時の最初の1件のユーザーデータを作成するための処理で、開発者によって手動で1回のみ実行されます。APIからユーザーデータが取得され、Datastoreに自動で保存されていきます。初期データ作成処理まずは、「ユーザーデータ取得処理」のうち「初期データ作成処理」から説明します。処理概要を図8に示しました。初期データ作成処理では、以下の処理を実行します。ユーザー属性取得APIにアクセスし、初期ユーザーの属性情報を取得するAPI情報から取得した情報をTwitterUserエンティティとしてDatastoreに保存する初期ユーザーを属性としたWaitGetRelatedDataエンティティを1件保存するユーザー属性取得APIは「http://twitter.com/users/show/$screen_name.xml」というURLでアクセスし、「$screen_name」に指定したscreen_nameに該当するユーザー情報を返却します。Twitterで採番しているidを指定することができます。「.xml」を「.json」に変更することで、JSON形式でデータを取得することができます。APIで取得できる情報の一部をリスト1に示します。<description>BPの社長です。エンティティは、データ収集処理が処理するべき対象のユーザー情報を格納し、キューとしての役割を果たします。Engineでは、TaskQueueという仕組みが用意されていますが、ここでエンティティをキューの代わりとして使用するのは、Twitterへの時間単位あたりのアクセス回数を制御するためです。Twitterでは、APIへのアクセス回数制限を設けており、1ユーザーあたり1時間70回までとなっています。TaskQueueを使用すると、実行順番が空き次第、処理が実行されてしまいます。そこで本稿のアプリケーションでは、キューの代わりとして、処理するタスクごとにエンティティ1件を作成し、Cronで該当エンティティのデータを対象として処理します。キューの代わりに使用するWaitGetRelatedDataエンティティの属性を表3に示します。処理対象ユーザーのscreen_name。データが作成された日時。エラーが発生したらTrueを設定。エラーが発生したら該当ユーザーの処理は次回からスキップするようにする。次にユーザーデータ取得処理を構成する2つの処理のうち、ユーザーデータ収集処理について説明します。処理概要を図9に示しました。図9では、主に以下の処理を実行します。関連ユーザー取得APIにアクセスし、処理対象のユーザーがフォローしているユーザーの情報を最大100件取得する。1.で取得したユーザー情報をTwitterUserエンティティとして新規にDatastoreに保存する。ID取得APIにアクセスし、処理対象のユーザがフォローしているユーザユーザのID集合を該当ユーザのfriend_ids属性に保存する。新規に作成した分のWaitGetRelatedDataのEntityを保存する。関連ユーザー取得APIは「http://twitter.com/statuses/friends/$screen_name.xml」というURLでアクセスし、「$screen_name」に指定したユーザーがフォローしているユーザーで、直近につぶやいたユーザー100件のユーザー属性情報を取得することができます。リスト2に関連ユーザー取得APIで取得できるXMLの一部を示します。<description>ユーザーBです。<description>ユーザーCです。ID取得APIは「http://twitter.com/statuses/friends/$screen_name.xml」というURLでアクセスし、「$screen_name」に指定したユーザがフォローしているユーザ全件のID集合を取得することができます。取得APIから取得できるXMLの一部を示します。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Technologies。執筆コミュニティ「WINGSプロジェクト」代表。