Twitter用リプライ型天気予報BOTを作った。


天気予報BOT(@tenkiyoho_bot)さん | Twitter

天気予報BOTをついに完成させた。

仕様
「今日、明日、明後日の東京の天気」などとメンションを飛ばしてもらうと1分以内に指定の日時の天気情報をツイートします。

条件に合わないメンションをもらうと正しい問いかけをしてもらうよう、それなりに促します。

WebAPIの仕様により、過去の天気、明々後日以降の天気は答えられません。

twitterの仕様に全く同じ内容の返答が数時間以内に連続して出来ません。

細かい技術仕様について
ライブドアのWeather HacksというWebAPIを利用して天気の情報を取得している。このウェザーハックスは、地域情報はXML、天気情報はJSONとデータの仕様が異なるのでちょっと戸惑ったが、結果的にはいい勉強になった。ただXMLはちょっと癖のあるところがあって、下記サイトのXMLに関する名前空間プレフィックスの処理の仕方を見なければXMLの処理は諦めていたかもしれない。

PHPで名前空間プレフィックスを扱う例|書き留めブログ【WPCOS】

Twitterの認証には有名なabraham/twitteroauthを使った。使い方は「TwitterOAuth PHP Library for the Twitter REST API」にある通りで、TwitterがどのようなAPIを提供してるのかを知れば、使うのは非常に簡単だと思う。

メンションの確認は借りているサーバーのcronに1分に一回PHP実行ファイルを叩かせて確認している。まあやり方によっては30秒に1回とか出来るらしいが、サーバーへの負担がね・・・

全体的には「PHP+OAuthでTwitterのBotを作ってみる – SDN Project」を大いに参考にさせてもらった。

エディター
エディターはMicrosoftのVisual Studio Code – Visual Studioを使用した。PHPでもシンタックスエラーは指摘してくれるし、コード入力支援はあるし、Mac、WindowsとOSを選ばないし、GitHubにも対応している。ちょっと話が脱線するが、このエディターを使い始めたのを機にGitHubでバージョン管理をすることにした。まあとにかくこのエディター使ってなかったら、もしかしたらくじけてたかもしれない、というぐらい助けられた。このエディターは私の様な初心者はもちろん、上級者もきっと気にいるのではなかろうか。

これから・・・
Twitterの仕様とWeb APIからのデータの取り出し方法について色々学んだので、今度は対話型のBOTを作りたい。とはいってもその対話部分はWeb APIから拝借するんだけどね。まあとにかく話しかけて楽しいBOTを何個か作ってプログラミング技術の習熟を目指したい。あくまで日曜プログラマではあるが、素人でもこんなことが出来る、っていうのを少し追求したいなと。

そんな訳で取りあえず、うちのBOTをよろしく。まあこういう天気の案内なんてのは、本当はLINEの一対一のやりとりの方が向いてる気がしないでもないが、一通り遊んでみて欲しい。ちなみに下記のGitHub上に今回作成したBOTのコードをアップしている。なかなか検索でもこのページに辿り着かないだろうけど、今後BOTを作りたい、という人が出て来た時の為の参考にでもなれば。

bono1972/tenkiyoho_bot | GitHub

コメントを残す

メールアドレスが公開されることはありません。