本記事は、「Slackbotで天気を確認する処理」の作成手順について紹介するものです。

気象予報のサイトから情報を取得することでSlackbotで今日の天気を確認できます。
今回はライブドアの気象予報サイトからデータをダウンロードして表示する場合の作成手順について説明します。

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

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

インターネットから天気情報を取得する方法

インターネットから天気情報を取得する方法はいくつかありますが、今回は「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で天気情報を取得する

天気情報を取得する為には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で天気を調べる方法

天気予報用のコード修正

PythonとJavaScript(Node.js + Botkit)実装例を紹介します。

Pythonでの実装方法

今回は以下のファイルを修正します。
・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で作成しよう」をお読みください。

Node.jsもrequestライブラリがあるのでrequireで読み込みます。

◆実行結果
JavaScriptの実行例

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

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

◆サンプルコード(Python)

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

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

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

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

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