Hatena::Groupfragments

何かを受信しました このページをアンテナに追加 RSSフィード

2009-09-17

プログラミングとかできないけどtwitterで動くbotが作れた話 プログラミングとかできないけどtwitterで動くbotが作れた話 - 何かを受信しました を含むブックマーク プログラミングとかできないけどtwitterで動くbotが作れた話 - 何かを受信しました のブックマークコメント

かつて、自分ホームページを作るのが盛んだった時代には、掲示板とか投票システムとかそういうちょっとした仕掛けを設置できるようにいろいろな人がCGIを配布していて、プログラミングができなくとも、ちょこちょこファイルをいじって設置するだけでそれなりのものが動かせたりしたものです。

そういう感じでtwitterbotが作れたりしたらいいなーと思っていたら、まさにそういう感じで動かせるのをid:phaが作ったので試してみました。

■プログラミングができなくても作れるTwitter botの作り方

まず、配布されてるファイルダウンロードして解凍します。その後、bot用のTwitterアカウントを作って、ファイルをちょこっと設定して、twitterで発言させたい文章を並べたテキストファイルをつくって、サーバアップロードするだけでひとまず設置完了です。

よくあるCGI掲示板とかと違って、属性をいじったり文字コード設定したりする必要はなく、設定しないといけないファイルも1つだけで、本当に簡単でした。

ここで手動で動作テストをしてみたのですが、そこでちょっとつまづきました。

こういう@で話しかけると返事するタイプbotを作りたい場合には、配布ファイルの中の reply_random.php を使います。このファイルの中には、cronで実行する間隔を設定する項目があります。

なんで間隔を設定するかというと、botアカウントに届いた@発言のリストを見てリプライを返す仕組みなので、前回に動かした時よりも後に届いた@発言だけを拾わないと、過去にもらった@発言に延々と返信をし続けることになります。だから、ここで実行間隔にあわせた有効時間を設定するというわけですね。

ここがデフォルトでは5分になってるんだけど、テストで投げた@発言が実行より5分以上前のものだったので動かなかったのです。あー。テストのときはちょっと長めにしておくのがいいかも知れません。それと、動作テストするアカウントプロテクトでも@発言が拾えないのでダメですね。(これもやってしまった)

こうやって手動で無事投稿が確認できたあとは、今度は定期的に自動実行させるためにcronを設定します。といっても私の借りてるロリポップではcronは提供されてないので、webcron.orgに申し込みました。

設置マニュアルにはこれ以外にもいろいろcronあるいはそれに似た方法が案内されてるけど、@に返していくタイプbotの場合、ある程度短時間で返さないといけないので、ちょっとそこがハードルかも知れないです。

ということで、いろいろありましたが無事稼動してるbothttp://twitter.com/runedraw/ です。@で呼びかけると、ランダムルーンを1個引いてくれますよ。

本当は、易がやりたかったんですが、卦だけでも64パターン、各爻まで入れると384パターンも書かないといけないのはちょっとしんどい。早く動かしてみたかったので25パターンで済むルーンにしました。

せっかくなので、それぞれの占いの文章は自分で書き起こしました。参考図書はこれです。

神聖ルーン・タロット占術 (エルブックス・シリーズ)

神聖ルーン・タロット占術 (エルブックス・シリーズ)

あと、ルーン占いの実践というサイトも参考にさせていただきました。

ルーンは、本当は逆位置もあるんですが、カードじゃなくてルーンストーンや木の枝とかで占うときには正逆だけじゃなくいろんな角度で出ますし、裏向きで出ることもありますし、ここでは正位置の意味だけにしておきました。

ルーンはあくまで象徴であって、それは、いい意味でもあり悪い意味でもありいろんな可能性があると思います。そもそも人生において起こる事柄にしても良い側面も悪い側面もあるものだし、あまり吉凶みたいのにはこだわりすぎないほうがいいという気持ちもあります。

実は、昔、携帯向けのサイトメルマガ占いライティングの仕事をやってたこともありまして、こういうのを書いてると懐かしい感じでしたね。

ちなみに、アイコン壁紙写真は私が持ってるローズクオーツでできたルーンストーンです。いつのまにかいくつかの石をなくしてしまったので占い用には使えませんが、大事にしています。

よかったら遊んでみてください。

f:id:riko:20090917222517j:image