2010年6月20日日曜日

TwitterBotをリリースしました。

作ってみたいなー、とぼんやりした思いは持っていましたが、なかなか具体的な進展できずにいました。そんな折、友人と話しているときにこんなボットはどうかね、という話になりそれを作ってみたという次第です。
ボットのアイデアを決めたのが、5月15日なのでリリースまで一ヶ月もかかってるのか。ちょっと遅いですね。
細かく説明していきます。

1. 作ったもの

released_cd_bot

今日と同じ日付に発売したCDの情報を教えてくれるボット。例えば6月20日であれば、過去10年間の6月20日発売のCDを探してきて、ランダムにつぶやいてくれる。こんな感じに。
2001年の今日、06月20日は、Eminemの「The Marshall Mathers LP (Asian 2 Disc Version)」が発売された日です。 http://bit.ly/bSGWGk
「あー、あのCDは3年前の今日発売されたのかー。懐かしいなー。」と感じてもらうのが目的。

CDの情報は、Amazonから検索してて、アーティストで絞り込まずに、レーベルで絞り込んだ。なぜなら、対象アーティストを登録するのが大変だから。いくつかのレーベルを対象にしただけでかなりの数のアーティストが検索に引っかかった。

3時間ごとに1回つぶやくことにした。あとは、30分ごとに自動でフォローとリムーブをしてくれるようにした。残念ながら、ダイレクトメッセージとかをくれても、新たにレーベルを追加したりはしない。

2. 利用した環境

Google App Engine for Java

TwitterBotの動作環境として使用。サーバを用意する必要もないし、スケジュールタスクも実行できるからちょうど良かった。ドキュメントも充実してるし。Pythonはあまり触ったことがないのでJavaにした。

3. 利用したライブラリ、API

slim3

slim3なんて不要な規模なはずだけど、使いやすかったので使ってみた。

Twitter4J

Twitter API 用の Javaライブラリ。Twitterとのやりとりはこちらを使用。

Amazon Product Advertising API

Amazonの商品情報へアクセスできるAPI。Amazonとのやりとりは、こちらのAPIを使用。実質、サンプルをほぼそのまま利用したのみ。日付を検索条件に追加してるのと、取得する内容にランキング情報を追加してる。

Bitly API

URL短縮サービスのBitlyのAPI。Amazonの商品のリンクを短縮するのに利用。

4. 振り返って

実際の工数は5人日くらいでしょうか、思っていたよりは短時間で出来た。
ここ2週間くらい実際に動かしてみて、いくつか不具合を見つけて修正済み。さらに不具合が見つかり次第修正したい。

Amazon APIの知識不足から当初はアーティストで検索する仕様にしていて修正の必要が出たりした。そこで結構いろいろ時間を取られてたんだけど、条件をレーベルに切り替えたらすんなり出来た。プログラム自体はほんとに対したことはしていなくて、それぞれのAPIの仕様を調べることの方に多くの時間を割いたかな。

これ、つぶやく情報をCDから本に切り替えるだけで楽しめそう。

あー、そうだ。
Twitterの認証がOAuth認証に対応してないので、問題が出てきたら修正します。