先日、iOS のアップデートが来て、ネット上では日本語 Siri で楽しそうに遊ぶ人々がいっぱい。でも、iPhone 4 な私は...悔しい!!と思って、Twitter のボットを作ってみました。Twitter のボットって初めて作ったので、ネットで調べながら手探りで作ってみたのですが、なんか、はまりました。
プログラミングなんて設計さえ終わってしまえば、後はコードを起こすだけ!と最近はそこで満足して人に任せてしまうことが多く、実際に自分で作ることはなかったのですが、あまりにも自己満足用だったので、久々に自分でプログラミングしました。どうせなら、と iTerm2 入れて、brew で tmux 入れたり git 入れたり zsh 入れたりと全くプログラミングする環境を整えていなかった Macbook Air の開発環境を整えてと、楽しかったです。今は、macport じゃないのねとか screen じゃないのねとか。で、あっという間に開発が終わり、サーバに上げて Cron の設定をして、よし完璧!まだまだいけるじゃん、オレ!と思ったのですが...なんか、きちんと動かない。
作ったのは、Siri 風なボットで、話しかけられると答えるという単純なもの。今のところ単純に辞書に登録されている質問にのみいくつかのバリエーションで答えるというものなんですが、何度も答えないようにどこまで答えたかをファイルに書きだして...ってして、ローカル環境ではうまくいったのに、サーバに上げた途端、なんという粘着!!!同じ質問に何度も何度も応え続けやがる!可愛くない!!!しかも、どのメンションにレスを付けたのかもきちんと入ってないし。
なんでだよ!!ローカルではうまく行くのに!!って、しばらくはまりました。
PHP で書いたのですが、理由は簡単でした。発言の STATUS ID の桁数が大きすぎて、ファイルに書き込む時に、指数形式(x.xxxxE+16とか)になり、それをファイルから読んだ時に、下 6 桁くらいが落ちてて全部 0 になってたから。 in_reply_to_status_id がきちんと入らないのも同じ理由。post するメソッドに渡した時に桁落ちするという、まぁ普通に考えれば、そりゃそーだよねって話しなんですが...
つまんないとこで躓いちゃった。
今後も私がプログラムを書く機会はあんまりないのかなと思いつつ、やっぱり設計してこうすれば出来るよねってエアプログラミングと実際にコードを書いて動かしてみるリアルプログラミングは違いますよね。たまにはコーディングしないとダメですね。
という話し。
作ったボットは、今更感がありまくりですが、以下です。@_sirico をつけてメンション飛ばすと返信します。愛してるとか結婚してとか何か聴きたいとか。まだ、ほとんど喋りませんが、ちょっとずつ賢くしていきます。












