一昨日くらいから、宇門博士が呟くtwitterとか、南部博士が呟くtwitterとかを作ろうと思い立った。
 アカウントを取って投稿用ツールで書き込めるところまでテスト。台詞を全部集めるとやたら多いから、こんなの手作業で投稿していられない。それで、botを利用することにした。ここからbotのソースをダウンロードしてきてこのページの解説通りにOAuthの設定。テストデータを用意し、bot.phpのURLをブラウザから参照して投稿できていることと、ログインしてコマンドラインを叩いて投稿できていることを確認。
 あとはcronで定期的に実行すればいいわな、と思ってちょっと調べた。一定時間ごとに特定のurlを突いてくれるサービスがいくつかあるが、不安定だったり、利用者殺到でアクセスを断られたりと、いろいろ問題がありそう。せっかくレンタルサーバーを借りてるんだから、サーバー側のcron使えばいいんでね?と思って設定開始。bot.phpを定期的に実行するだけならどうってことない、と思っていたら嵌った。
 まず、直接bot.phpを叩くだけじゃダメなのを自分が忘れていた。
 会員ログインメニューの管理ツールのcronの設定で、

/full-path/bot.php

を指定したら動かない。確かにこれだとどのプログラムでphpを実行したらいいかわからんわな、拡張子で自動判別するほどシェルは賢くないんだろうし……。whitch phpしてみたら、/usr/local/bin/phpを見に行ってることがわかったので、

/usr/local/bin/php /full-path/bot.php

とやってみた。しかし、これをcronで実行すべき内容として設定してもダメだった。時間をおいてログインし、この通りにキー入力してやると、うまくいった場合には投稿内容の入ったhtmlソースがstdoutに表示されるはずが、プロムプトしか出ない。何回かキー入力してもダメで、なぜか、一度、bot.phpのあるディレクトリにcdすると動いたりする。その後、別ディレクトリに移って同じ内容をタイプしてもちゃんと動いたりする。シェルから直接実行だと、動いたり動かなかったりで、わけがわからない。しかしひょっとしたら、一度、bot.phpのあるディレクトリにcdすることが必要なのかな、と思わないでもなく……。
 それでは、と、autorun.shを次の内容で作り

#!/bin/sh
cd /full-path
/usr/local/bin/php /full-path/bot.php

chmod +xして、さくらサーバーの管理ツールのcronの設定でautorun.shへのフルパス指定をしてみた。でもやっぱり動かない。動いたり動かなかったりは、shを呼ばない場合と変わらない。
 ただ、URLを叩けば、どういうタイミングでキーボードを叩いても、確実に動いてくれるらしいことがわかった。そこで、まず、access.phpを

<? php
// リクエストを行うURLの指定

$url = “http://www.frontier-line.org/full-path/bot.php”;

$contents = @file_get_contents(“$url”);
echo $contents;
?>

のように書いておいて、autorun.shの方を、

#!/bin/sh
/usr/local/bin/php /full-path/access.php

と書いて、実行許可を与え、autorun.shへのfull pathを、さくらサーバーの管理ツールのcronの設定に入れてやると、やっと意図したように、一定時間ごとに呟きが自動で書き込まれるようになった。

 あとは、呟きのデータファイルを作り込むだけだが、ビデオチェックが必要なので、こっちも手間がかかる。まあ、ぼちぼちやるかな……。今のところ、設定は、データファイルの内容を一方的に呟くだけ。自動応答ぽいことや、人工無能ぽいこともできそうなんだけど、それはまた先の話。

 bot製作ツールがウェブベースで提供されてたりするみたいなんだけど、クライアントの名前が固定だったりする。名前固定ってのは、ブラウザからだとvia webになるし、投稿ツールのTweetieを使うとvia Tweeieとかなってるのと同じで、何か適当な名前が設定されてる。しかし、折角キャラのtwitterを用意するのだから、宇門博士だったら「via 宇宙科学研究所」と出てほしいし、南部博士だったら「via 三日月基地」とかにしてみたい。自前のbotを用意してクライアントにすると、名前を自由につけられるし、phpはこのレンタルサーバーで自由に動かせるから……と思ってたら、あんまり関係ないところで手間取った^^;)。