「日報」に気象データを取り込む意味(天気API活用)

2013年10月21日
「天気」に左右される業務は少なくない。

良く議論される事例として「ビールの仕入業務」がある。ウェザー・マーチャンダイジングなどと言われる事もあるが、要するに「売れ行き」を予想して「仕入」を行う業務だ。担当者は天候や予想最高気温などを見て(更に祭事やイベントをチェックして)その発注数量を決めるのだ。

もちろん他にも色々ある。
「建設現場の週間計画」、「農業の悪天対応」、「イベント体制の準備」、「ゴルフ場のキャンセル対応」などなど、様々な業務で天気が影響する。また、一見『屋外』とは縁の無さそうな「通販業の問合対応」なども、実は天候に左右されるらしい。

以下の業務フローは飲食業の売上日報だ。典型的な「日次報告型のワークフロー」と言える。
ここでは天候と気温も併せて報告させ「気象による売上変動」を分析するための基礎データとなるようにしている。特筆すべきは、その気象データがあらかじめ自動的に入力されている点だ。報告担当者は『天候』や『気温』を入力する必要が無い。この雛形は、清掃業・建設業・人材派遣サービス等でも転用できるだろう。(「夏休みの絵日記」に転用してはイケナイ…)

[営業日報フロー-天気]



[営業日報フロー-天気:「1.営業日報の提出」画面]

このワークフローでは毎朝8時に「報告仕事」が割り当てられ、その瞬間にワークフローシステムが、自動的に外部サーバに気象予報データを取得しに行く。この例では「OpenWeatherMap」に気象データを問い合わせている。(メッセージ送信中間イベント)
京都営業所(都市ID=1857910)が「今日明日の予報データ」(2日分のデータ)を取得する場合には、『forecast/daily?id=1857910&cnt=2』とリクエストすれば良い。

* http://api.openweathermap.org/data/2.5/forecast/daily?id=1857910&cnt=2

すると、、、以下の様な「お返事JSON」を取得する事ができる。

{"cod":"200",
  "message":0.011,
  "city":{"id":1857910,"name":"Kyoto",
          "coord":{"lon":135.753845,"lat":35.021069},
          "country":"JP","population":1459640},
  "cnt":2,
  "list":[
    {"dt":1381802400, ★データ取得時刻(UNIX時刻)★
     "temp":{"day":293.15,"min":291.34,"max":293.15,"night":291.34,
             "eve":292.09,"morn":293.15}, ★気温(単位ケルビン)★
     "pressure":992.09, ★気圧(hPa)★
     "humidity":100, ★湿度(%)★
     "weather":[{"id":502,"main":"Rain","description":"heavy intensity rain",
                 "icon":"10d"}],
     "speed":1.96, ★風速(m/s)★
     "deg":39, ★風向(角度:北風=0 東風=90)★
     "clouds":92, ★雲量(%)★
     "rain":30}, ★降水量(mm)★
    {"dt":1381888800,
     "temp":{"day":292.72,"min":287.96,"max":292.72,
             "night":287.96,"eve":291.01,"morn":291.81},
     "pressure":987.8,
     "humidity":86,
     "weather":[{"id":803,"main":"Clouds","description":"broken clouds",
                 "icon":"04d"}],
     "speed":6.15,
     "deg":347,
     "clouds":76}
  ]
}
※ 見やすさのために「改行」や『★コメント★』を追記

中には「風向」や「雲量」などの予報データもあるが、この業務で必要なデータだけを『データ項目』にセットすれば良い。その為のスクリプトは以下の5行だ。(スクリプトタスク)

var weatherjson = JSON.parse(data.get("0"));
retVal.put("5", java.lang.String(weatherjson.list[0].weather[0].description));
retVal.put("6", java.math.BigDecimal(weatherjson.list[0].temp.max - 273.15));
retVal.put("7", java.lang.String(weatherjson.list[1].weather[0].description));
retVal.put("8", java.math.BigDecimal(weatherjson.list[1].temp.max - 273.15));

ついでに「曜日情報」もセットしておくと、売り上げ分析時に役立つ。(スクリプトタスク)

var daystart = data.get("3").getDay(); //曜日
if (daystart == 0) retVal.put("4","日曜日");
if (daystart == 1) retVal.put("4","月曜日");
if (daystart == 2) retVal.put("4","火曜日");
if (daystart == 3) retVal.put("4","水曜日");
if (daystart == 4) retVal.put("4","木曜日");
if (daystart == 5) retVal.put("4","金曜日");
if (daystart == 6) retVal.put("4","土曜日");

ところで、この『Open Weather Map』は世界中の気象情報を無料で提供する素晴らしいサービスだ。Wikipedia と同様、「誰でも無料で使える」というイデオロギー(信念)を掲げている。(しかも3時間おきの「計測データ」などかなり細かい情報を取得する事も可能だ)。

ちなみに「気象データ」の様な応用範囲の広いデータは、本来的には各国政府が無料で提供すべきだ。道路や空気と同様「公共財」と言っても良い。しかしながら今日現在、日本の『気象庁』(国土交通省の外局)も『一般財団法人日本気象協会』も無料では提供していない。オープンデータ、オープンガバメントを加速して欲しいものだ。

なおこのデータ、、、今のところ日本の気象庁が発表しているデータとは少々チガウ・・・ので、気象庁データが必要な場合には注意が必要だ。会社によっては有料サービスを検討する必要があるかもしれない。

[プロセスデータ項目設定画面]

[ダウンロード]
<類似プロセス>
≪関連記事≫
≪新着記事≫

0 件のコメント :

コメントを投稿