指定した天気予報が出たときだけreplyしてくれるTwitterのbotを作った

天気予報を配信するbotはいくつかあるけど、常に情報を送り続けるか、こっちから問い合わせたときに返すようなのしか無かったっぽいので、新しいタイプを作ってみた。


これは何?

気になる地域と天気を設定しておくと、毎朝自動で天気予報をチェックして、その地域にその天気予報が出たときだけ自分へリプライしてくれる。これを使えば、自分が住んでるところに雨や雪が降る日だけ自動的にリプライで教えてもらえるようになる。

そして地域や天気を設定する操作は、Twitterで @weatheroid に対してリプライするだけでいいので、簡単に今すぐできる。

簡単に言うと

今、あなたのTwitterアカウントから、

@weatheroid 東京が雨のときは教えて欲しい!

などとつぶやいておけば、今後毎朝weatheroidが自動的に天気予報をチェックして、もし東京が雨の日があったら

@nacookan 今日の東京は雨だよ!

みたいな感じでリプライしてくれる、というもの。つまり自分の知りたい地域の知りたい天気を登録しておけば、それから毎朝チェックしてくれるというわけ。

詳しくは以下。

地域と天気の設定

まず最初は地域と天気の設定が必要。@weatheroid に対して、地域と天気をリプライする。これだけやっておけば、とりあえず使える

@weatheroid 仙台が雨のときおしえてー

こんな感じ。地域は、以下の142地点。

稚内 旭川 留萌 札幌 岩見沢 倶知安 網走 北見 紋別 根室 釧路 帯広 室蘭 浦河 函館 江差 青森 むつ 八戸 秋田 横手 盛岡 宮古 大船渡 仙台 白石 山形 米沢 酒田 新庄 福島 小名浜 若松 水戸 土浦 宇都宮 大田原 前橋 みなかみ さいたま 熊谷 秩父 東京 大島 八丈島 父島 千葉 銚子 館山 横浜 小田原 甲府 河口湖 富山 伏木 金沢 輪島 福井 敦賀 新潟 長岡 高田 相川 長野 松本 飯田 静岡 網代 三島 浜松 名古屋 豊橋 岐阜 高山 津 尾鷲 大津 彦根 京都 舞鶴 大阪 神戸 豊岡 奈良 風屋 和歌山 潮岬 岡山 津山 広島 庄原 松江 浜田 西郷 鳥取 米子 下関 山口 柳井 萩 徳島 日和佐 高松 松山 新居浜 宇和島 高知 室戸 清水 福岡 八幡 飯塚 久留米 大分 中津 日田 佐伯 長崎 佐世保 厳原 福江 佐賀 伊万里 熊本 阿蘇乙姫 牛深 人吉 宮崎 延岡 都城 高千穂 鹿児島 鹿屋 種子島 名瀬 那覇 名護 久米島 南大東島 宮古島 石垣島 与那国島

天気は、「晴れ」「曇り」「雨」「雪」の4つ。天気に関しては漢字以外にひらがなやカタカナでも大丈夫。地域と天気以外の言葉はとりあえず現状では単純に無視しているので、なにをどう付け加えてもOK。または、なにも付け加えずに「東京 雪」とかだけでもいいし。

うまく設定できた場合は、数分以内にリプライが返る。

@nacookan OK!仙台が雨のときおしえるね! 01:23

末尾に時刻がつくけど、気にしないで欲しい(同一発言が無視される問題を回避してる)

設定は複数作ることができる。地域や天気を変えて何度もリプライすれば、どんどん設定が追加されていく。1回のリプライでは1つの設定しか作れない。複数の設定を作りたいときは、その分だけリプライする必要があるということ。

通知される

設定が終われば、あとはweatheroidが毎朝5:30頃にその地域の天気をチェックして、条件にマッチした場合にリプライしてくる。

@nacookan 今日の仙台は雨のち晴だよ! 05:30

例えば「雨」を設定しておけば、「雨のち晴」などもマッチする。

  • 邪魔じゃない(設定した天気のときだけ投稿されるので)
  • 見逃しにくい(自分へのリプライなので)
  • 手間がかからない(一度設定しておけばあとは毎朝自動なので)

といったところがweatheroidの特徴。

現在の設定の確認

現在の設定を確認したいときは、@weatheroid に対して「状態」という言葉をリプライする

@weatheroid 今の状態ってどんな感じ?

すると、数分以内に自分の現在の設定がリプライで返ってくる。

@nacookan 仙台が雨のときと仙台が雪のときおしえるよ! 01:23

こんな感じで、複数の設定を作っていても確認できる。

設定を削除

削除するときは @weatheroid に対して「もういい」という言葉をリプライする

@weatheroid もういいや。さよなら。

これで設定が削除される。そのあとまた新たに追加することもできる。

このアカウントをフォロー

@weatheroidをフォローしてなくてもリプライは見えるので、このアカウントをフォローする必要はない。しかし、フォローしておくと、自分がフォローしている別の人もweatheroidを利用していてその人に天気が通知された場合に、自分のタイムラインに載る(自分がフォローしてない人に天気が通知された場合は載らない)。なので、「あーあの人の住んでるところは雨なのかー」とかがうっすら見えて、それはそれで面白いかも。

まあよくわからないならとりあえずフォローしておけば、それはそれでほとんど邪魔にはならないはず。天気がリプライで通知されること以外は一切興味ないよっていう場合はフォローしなくていいし、いったんフォローした上で邪魔なようだったらアンフォロー(リムーブ)すればいい。

仕組み

定期的に@されたリプライをチェックするスクリプトと、毎朝天気をチェックするスクリプトRubyで書いて、それを自宅のPCで動かしている。

天気予報の情報は、livedoorのWeather Hacks Web Serviceから取得している。

結構めんどくさかったけど、特に難しいことはやってない。

おわり

とりあえずしばらく様子を見ながら調整していく予定。

2009.12.8追記

weatheroidのコードをgithubに公開した。