2011年はWebで面白いことをしようかと思い、手始めにTwitterのBotでも作ることにしました。
まずは定期的に何かしらのつぶやきをするBotにします。
私のSPECとしては、
「phpはスクラッチで書いたことは無いけどperlはある程度わかるのでphpもわかるはず!?」
「Linuxの運用・設定周りは大体わかる」
という中途半端な状態です。。。
以下のサイトを参考にさせていただきました。
1.Botアカウント作成
まずは、Bot用のアカウントを作成します。
通常のユーザアカウントと同じ要領です。
2.アプリケーションの登録
Botはアプリケーションとしてみなされるので、登録が必要みたいです。
OAuthでアプリケーションを登録するらしい。
OAuthに関しては以下で勉強。(技術評論社様様)
ゼロから学ぶOAhth
先に作成したBot用のアカウントでTwitterにログインをした後で、下記URLにアクセスしhttp://dev.twitter.com/appsの「新しいアプリケーションを追加」から登録。
以下を設定し、その他の項目は任意に埋める。
アプリケーションのウェブサイトURL: 適当なURL
アプリケーションの種類: クライアントアプリケーション
標準のアクセスタイプ: Read & Write
次の画面で「TWITTER API TERMS OF SERVICE」を「I ACCEPT」にして、登録。
登録が完了すると、[Consumer key]や、[Consumer secret]等が取得できるので、これをアプリケーションで使う。
3.アプリケーション作成
OAuthトークンを取得する必要があるらしく、参考ページのプログラムを実行してみる。
これに取得した、[Consumer key]と[Consumer secret]を埋め込む。
ソースをそのまま使うとすれば、事前準備として、http://github.com/abraham/twitteroauth/downloadsで落とした「twitteroauth」を解凍してできたファイルのうち、「OAuth.php」「twitteroauth.php」をプログラムと同じディレクトリに置いておく必要がある。(バージョンが古いのが気になりますが、0.2.0-beta3.zipを使いました。)
ソースは参考ページのものをそのまま使わせていただいています。
http://gihyo.jp/dev/serial/01/twitterbot/0003?page=2
任意の名前でソースを保存して、phpコマンドで実行。
$ php test.php
プログラムを実行するとURLが表示されるので、使用するアカウントにログインしたままでアクセスすると、アプリケーションの使用許可を問われるので、許可へ。すると、アクセスコードが表示されるので、それをプラグラムに入力。
これで、OAuthトークンが得られます。
得られたトークンをつぶやき用プログラムに記載。
これも、サンプルをそのまま使わせていただきましたが、最後のhttp_codeだけ表示するようにちょっとだけ改造。
http://gihyo.jp/dev/serial/01/twitterbot/0003?page=2
if($http_code == “200” && !empty($response)) {
print “ok\n”;
} else {
print “http_code: $http_code\n”; ←この程度ですが。。
print “result: ng\n”;} ←
?>
さて、twitter.phpとして保存し、いざ実行!
$ php twitter.php
PHP Fatal error: Call to undefined function json_decode() in /home/user/twitteroauth.php on line 159
json_decodeがわからないと。。。
jsonをインストール
# pecl install json
:
install ok: channel://pear.php.net/json-X.X.X
できたっぽい??
あとは、json.iniの設定
# vi /etc/php.d/json.ini
:
extension=json.so 追記
または、面倒なときはechoで流しこむww
# echo “extension=json.so” >> /etc/php.d/json.ini
そして、リトライ。
$ php twitter.php
ok
成功しました!
4.tweet時間の登録
まずは、決められた時間につぶやくだけの機能限定なので、cronで実行ファイルを登録するだけ。
$ crontab -e
:
# 分 時間 日 月 曜日 コマンド
00 12 * * * php /home/user/twitter.php ←毎日お昼につぶやくとして
以上、所要時間はトータルで2時間もあれば十分Botが作成できると思います。
とはいえ、ここから人っぽく進化させるのがさらに難しいんでしょうね。
讃岐うどんBot
http://twitter.com/#!/sanuki_udon_88
下記サイトも参考にさせていただきました。
http://www.softel.co.jp/blogs/tech/archives/973