黒板五郎BOT(@gorokuroita_bot)さん | Twitter
これまで、五郎さんの台詞を朝から晩まで1時間おきにランダムにつぶやく仕様だったが、ここで大幅にバージョンアップ。黒板五郎BOTに天気を聞くと聞かれた日の天候を答える様にした。
仕様
…「今日の天気は?」「明日の横浜の天気」などと話しかけられると、富良野の天気だけ答えます(笑) 毎分ごとのチェックなので、微妙に返答に時間差があるかもしれません。
…「Weather Hacks – livedoor 天気情報」というところのWeb APIからデータを取っているのですが、Wether Hacksの仕様上、明後日の天気までしか取得出来ません。
…Twitterの仕様上、同じ内容を、連続して、あるいは数時間以内にはつぶやけません。BOTの返答はパターンが限られているので、全く同じ内容をリプライしようとすることがあり、規制にひっかかる場合があります。故に同じ内容の事を問いかけても、返答がない場合があります。(それでも一回は別の返答するようにしてますが。それは試してみてのお楽しみ。)
…一人でテストしてたので不具合があるかもしれません。一回でもいいから、この記事を見た人は黒板五郎BOTに話しかけてもらえるとうれしいです。
以下、苦労話を箇条書きで
字に起こせばたったこれだけのことなのだが、まあ色々勉強したなぁ。まず、Web APIへ必要なデータをリクエストし、それを取得。そして必要な情報のみ抜き取る手順。JSONやXML形式でデータを返してくれるWeb APIが多いのだが、そもそもJSONってなんだよ?というレベルだったから・・・。
Twitterの認証。私のTwitter IDのところに、私に代わってBOTがつぶやくので、それが出来るためにBOTに認証を与えなければならないのだが、それもそこそこ面倒で。この辺は、先人の知恵の結晶であるTwitterOAuthのライブラリを使わせてもらった。
Twitterの仕様の勉強。そんなに色々機能がある訳ではないTwitterだが、それでも仕様を熟知しないとTwitterにしてほしい要求が出来ない。で、仕様書を見たら、まあないようでたくさん機能がついてること。なんかのアプリに乗っかってプログラム書くのもそこそこ大変なんだな、と思った。
cron。これがなきゃ定期的にプログラムを実行する手段がないので、使わざるを得ないが、なんか苦手なんだな。
バグ。あれが動かない。これが動かないの連続。マイクロソフトの「Visual Studio Code」というエディターでPHPプログラムを書いたのだが、これが賢くて助かった。後はひたすらプログラムの合間にログをだす関数(Var_dump)を差し挟んで、ログをチェック。
これから
今回のBOTのバージョンアップが出来たことで、出来ることの可能性が広まったと思う。五郎さんは富良野の天気しか答えない、というふざけた仕様にしたが(笑)、実際は日本全国の天気を案内するように出来るし、ほかにも色々なWeb APIからデータを取ってきて、それをTwitter、LINEのリプライなどに利用することも出来る。ということで、次はなに作ろうか、と思案中。