GAE/jでservletを定期的に実行して、twitterを検索

cron.xmlによる自動実行と直接実行の禁止

 GAE/jを利用して、servletを定期的に実行する方法に関するメモ。
 この際、自動実行対象が管理者以外に実行されない様にする事も可能。
 詳しくは以下のGoogle公式ドキュメントで。
 Java 用の cron を使用したスケジュール タスク - Google App Engine - Google Code
 尚、上記公式ドキュメントを見る限り、cronジョブのアップロードには何か特別なコマンドを使う様だが、netBeans6.9.1+GAE pluginの環境*1では、特にそれを意識する必要は無かった。

searchAPIの回数制限とGAE

 twitterの検索に関しては、以前の記事*2を参照。
 twitterのsearchAPIはアクセス元IPアドレスでRateLimitを判定する。しかしどうやら、GAE/jからこれを実行する場合、全てのユーザが同一IPを使用する事になるらしい。結果として、かなり高い頻度でRateLimitオーバーが起こる*3
 一応、twitter側もこの問題は認識しているようで、アクセス可能回数を問い合わせると、一時間あたり20000回という非常に大きな結果が得られる。それでもやはり、RateLimitオーバーは避けられない。
 現在製作中のtwitter botアプリケーションでは、検索結果はそれほど重要視していない為、このまま運用していく事とした。