明けましておめでとうございます

まあ今更ですが。

さて、この度私、はてなidを取り直しました。新しいidはid:MshrKatoとなります。今後、プログラミング関係の話題はそちらで扱っていく事とします。

それにともない、こちらのidでは非常に個人的などうでも良い事を記事にしていく方針となりました。

今後ともよろしくお願いします。

GAE実行時に503エラーが発生した場合

あまりにも何度もハマっているので、自分用にメモ。

GAEの実行時、コンパイルは通っているにも関わらず503エラーが発生した場合、Servletクラスとweb.xmlとの対応が取れていない可能性が高い。Servletを削除する場合は、web.xmlの訂正も同時に行うようにする事。(netBeansリファクタリングでなんとかなりそうだけど?)

netBeansからGAEにデプロイするgoogleアカウントの変更

 諸般の事情で、GAEプロジェクトを管理するgoogleアカウントが変わった為、アップロード先の設定を変更した。その方法が分かりにくかった為(今後使うことは無いと思うが)、念のためメモ。
 windows7の場合、ログイン情報は以下のファイルに書いてあった。
 C:\Users\(ユーザ名)\.netbeans\6.9\config\Preferences\org\netbeans\modules\j2ee\appengine
 ここにメールアドレスとパスワードが生で書いてるのでそれを書き換え、GAEへのデプロイプラグインを入れ直したらOK。

GAE/jからYahooAPIの形態素解析を利用してみた

概要

形態素解析って何?」という方は、今ならウェールズ氏のどや顔も楽しめる、以下を参考にどうぞ。
形態素解析 - Wikipedia

 さて、現在、twitterbotをGAE/j上で作っている訳ですが、賢い応答をさせる為には文章の形態素解析を行う事が必要不可欠です。
 しかし、問題はそれをどう行うかです。自分で書くには、言語学の勉強から始めないといけませんし、ライブラリを使おうにもGAE/jにアップするにはサイズが大きすぎます。(もっとも、自力でライブラリを分割された事例もありますが……*1
 何か他の方法は無いかと探しますと、実は有ります。それが、Yahoo!デベロッパーネットワークからWeb APIの形で提供されている、日本語形態素解析です。このサービスは、HTTPでリクエストを受け付け、XML形式で結果を返してくれます。
Yahoo!デベロッパーネットワーク - テキスト解析 - 日本語形態素解析
 一方、GAE/jではHTTP又はHTTPSで外部サイトと通信できる、URL Fetch Java APIが提供されています。
The URL Fetch Java API - Google App Engine - Google Code
 これらを組み合わせる事で、APIを通して別々のサービスが連携して働く、現代的なシステムが組めそうです。

 そういう訳で今回、GAE/jからYahooAPIを呼び出し、返されたXMLを処理して必要な情報を取り出す所までを、実際にやってみました。
 尚今回は、XMLの解析にJDOMを利用しました。こちらも、GAE/jで動かす場合にはほんの一手間必要となるので、合わせて記述します。

続きを読む

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アプリケーションでは、検索結果はそれほど重要視していない為、このまま運用していく事とした。

twitterのAPI制限とtwitter4jでの取得

概要

 このエントリでは、twitter APIのアクセス回数制限についての情報をまとめている。まず初めに、APIの制限の種類とその回数を示す。続いて、それらの値をtwitter4jから取得する方法についてまとめる。

続きを読む

twitter4jからtwitterの検索APIを利用する

概要

 今回はtwitter4jを利用して、検索結果の取得を行う。
 まず初めに、検索APIで利用できるオプションについて列挙した。続いて、twitter4jからそれらオプションを利用して検索結果の取得を行った。

続きを読む