本記事ではSlackbotで天気を表示する方法について説明します。

天気情報はlivedoorなどの気象予報サイトが提供している天気データを活用することで表示可能です。
PythonやJavaScriptを活用すれば簡単にSlackbotに組み込むことができます。

天気予報の表示手順はWebサイトのデータを利用した他の処理にも応用することができるので仕組みを理解しておきましょう。

本記事の内容は以下の通り。

・livedoorから天気を取得する方法
・Python+Slackbotで天気情報を取得する方法
・JavaScript(Node.js)+Botkitで天気情報を取得する方法

Pythonに加えてJavaScriptでの実装方法についても紹介します。
簡単な処理で実装できるので本記事を参考にしつつ作成してみてください。

こちらの記事もおすすめ

Slackで天気を調べる方法

livedoorから天気を取得する方法

インターネットから天気情報を取得する方法はいくつかありますが、今回は「livedoor天気情報」が展開しているJSONファイルを使用する方法を紹介します。
お天気Webサービス仕様

上記サイトよりJSONデータと呼ばれるデータを取得します。

http://weather.livedoor.com/forecast/webservice/json/v1?city=130010

「?」の後の「city=130010」には都市ごとに割り振られた番号を指定します。上記の例では東京都の番号「130010」を指定します。
都市ごとに割り振られた番号は「全国の地点定義表(RSS) 」から確認できます。

都市ごとに、

city title=”〇〇” id=”xxxxxxx” source=”http://weather.livedoor.com/forecast/rss/area/xxxxxxx.xml”

のように定義されています。idの部分が都市ごとに割り振られた番号です。

Python+slackbotで天気情報を取得する方法

天気情報を取得するためにはURLからJSONファイルをダウンロードしてテキストデータとして変換する必要があります。
天気情報取得のコードは以下の通りです。

◆サンプルコード

# JSONファイルを制御するためのライブラリを読み込む
import json
# URLアクセスを制御するためのライブラリを読み込む
import requests# URL情報を変数に格納する
url = “http://weather.livedoor.com/forecast/webservice/json/v1?city=130010”
# URLアクセスして情報を取得する
response = requests.get(url)
# URL取得に失敗した場合の例外処理を行うメソッド
response.raise_for_status()
# 取得したjsonデータをテキストとして読み込む
weather_data = json.loads(response.text)

天気の情報は取得したJSONファイルの「’forecasts’」に格納されています。
今日の情報を取得する場合はweather_data[‘forecasts’][0]のデータを参照します。
weather_data[‘forecasts’][0]の内容は以下の通りです。

なお、weather_data[‘forecasts’][1]には明日の天気、weather_data[‘forecasts’][2]には明後日の天気が格納されています。

◆関連記事
Slackで天気を調べる方法

実装方法と

今回は以下のファイルを修正します。
・weather.py:天気管理用ファイル(新規ファイル)
・botmodule.py:Botモジュールの定義ファイル

PythonでのSlackbot作成の基本については「SlackbotをPythonで作成しよう」をお読みください。

・weather.py:天気を取得するモジュールを定義する
天気情報を読み込むためのモジュールを定義します。

・botmodule.pyの修正
今日の天気を返答する処理をBotに追記します。
天気がわかればいいのでweather_data[‘forecasts’][0][‘telop’]の値を取得します。

◆実行結果
今日の天気の表示

JavaScript(Node.js)+Botkitで天気情報を取得する方法

JavaScript(Node.js) + Botkitでの実装方法について説明します。
JavaScriptでのSlackbotの作成については「SlackbotをJavaScriptで作成しよう」をお読みください。

JavaScript(Node.js)で天気を表示する方法

Node.jsもrequestライブラリで天気を読み込めます。

上記処理を「controller.hears()」内に組み込めばOKです。

実装例と実行例

実装例と実行例は以下の通りです。

◆実行結果
JavaScriptの実行例

以上、Slackbotで天気情報を応答させる方法でした。

気象サイトのデータを活用する処理は他のWebデータを活用する処理にも応用ができます。
Webサイトをデータの使い方について仕組みを理解しておきましょう。

◆サンプルコード(Python)

※リファクタリングや不具合の修正などで記事と内容が異なっている場合があります。

SlackbotまとめTOP>>Slackbotの作り方マニュアル〜Python編〜

関連記事>>SlackのRSSを活用して天気予報やブログ記事を定期購読する

◆オススメ記事
SlackbotをPythonで作成しよう
Slackで天気を調べる方法

次回>>Slackbotで今日の天気を確認する〜PythonでのBot開発〜