データ収集と解析の方法

2021年2月23日以前の方法についてはこちら

戻る

1.天気予報データの収集

 気象庁では、毎日5時、11時、17時の3回、府県天気予報を発表しています。それとは別に毎日11時に週間天気予報を発表しています。このサイトで収集しているのは、毎日17時に気象庁が発表している東京地方の天気予報と、11時に発表している週間天気予報です。

 実際には、東京都の天気予報のページに、毎日18時頃にアクセスし、データをダウンロードしています。このページには明後日までの詳細な天気予報と7日先までの天気予報の両方が掲載されています(さらには2週間気温予報へのリンクも掲載されている)ので、このページで必要な情報を一度にダウンロードできます。

 このデータのダウンロードが最も重要な作業で、途中に抜けがあると、せっかく何年も継続して続けているこのサイトの価値が大きく下がってしまいますから、毎日漏れることなく収集する必要があります。

 収集を開始した2005年頃から、いろいろなトラブルを経験し、それに対応しながら毎日漏れなくデータをダウンロードするように改良してきました。この間、気象庁のサイトも細かな修正や改変があり、それに一つ一つ対応してきました。ここ数年は、特に大きな変更もなく、一定の方法(2021年2月23日以前の方法を参照)によって天気予報データを安定的に収集することができていました。

 ところが2021年2月24日に気象庁のサイトが大幅に改変されました。なんと19年ぶりにホームページを一新(参考)したとのことで、従来の方法を少し手直しした程度では、天気予報データを取り出すことができなくなってしまいました。問題は、天気予報などのデータが掲載されているページが、動的に表示内容を変えることができるようにスクリプトで書かれており、従来のダウンロードツールでは、その表示内容ではなく、スクリプトそのものがダウンロードされてしまうということです。いろいろと探して試してみれば、うまい方法があるのかもしれませんが、天気予報の更新は毎日行われており、こちらもあまり時間的に猶予がないため、結局 Microsoft Excelのマクロ(VBA)を使用して、天気予報データを自動ダウンロードするツールを作って対応することにしました。現在、実際に行っている方法を次に示します。
  1. 自動ダウンロード
  2.  従来は、WebPilotという自動パイロットプログラム(フリーソフトウェア)を使用し、毎日18時に、気象庁の「週間天気予報:東京都」のページにアクセスし、これをダウンロードしていました。しかし、2021年2月24日以降はこのツールでは天気予報データをダウンロードできなくなってしまったため、Excelのマクロ(VBA)を使って、ダウンロードツールを作り、これを利用しています。このツールでは、インターネットエクスプローラー(IE) を起動し、目的のサイトのページ内容をダウンロードするというものです。IEで所定のページにアクセスしたのち、すぐにページ内容を ".document.body.innerHTML" でダウンロードしようとすると、天気予報データではなくスクリプトがダウンロードされることがあるので、".document.body.innerHTML" の中身が確かに天気予報データを含むことを確認するまで待ってからダウンロードするように工夫しています。
     
  3. 自動ダウンロードツールの自動起動
  4.  このツールはマクロで作ったものなので、ダウンロードする時間を指定することもできるのですが、そのためには常にこのツールを立ち上げておく必要があり、いろいろと不都合もありそうなので、Windowsの管理ツールであるタスクスケジューラを使用し、このツールを毎日18時に自動起動させることにしました。そして、イベントプロシージャーの "Workbook_Open()" を使用し、このツールが起動すると、天気予報ダウンロードマクロが自動実行されるように設定しています。これにより、天気予報ダウンロードツールがタスクスケジューラーによって毎日18時に起動し、それと共にマクロが自動実行されることで、天気予報データがダウンロードされるようになりました。

  5. PCの自動起動/スリープ
  6.  年中無休でPCを起動したままにしておけば、ここまでの仕組みでOKなのですが、1日に1回天気予報をダウンロードするためだけに1台のPCを連続運転しておくのも気が引けます。そこで、少なくとも1台のPCについては、タイマーを使って自動起動と自動スリープを行うことにしました。

     この手のソフトはいろいろあるのかもしれませんが、ここでは福猫株式会社さんのフリーソフト、Rest!を使用しています。福猫さん、本当にお世話になっています。ありがとうございます。

     Rest! により、スリープからの復帰と、その後のスリープを完全に自動化できますので、例えば17:55にスリープから復帰して、18:00に 自動的に天気予報と週間天気予報をダウンロードし、18:05にスリープするというスケジュールでの完全自動運転が可能となります。

  7. バックアップ
  8.  ここまでで、とりあえず毎日定刻に自動的に天気予報のページをダウンロードする環境は整ったのですが、実際に運用してみると、種々の問題が起こります。PCが何らかのトラブルでハングアップしたり、起動しなかったり、ネットがつながらなかったり、Windows Updateが悪さをしたり、特に原因は見当たらないのに、たまたま(?)ダウンロードに失敗したり、といった具合に、予期せぬことは起こるものです。

     天気予報は逐次新しい予報に更新されてしまうのですが、17時に発表された天気予報は翌朝5時までは、そのまま残っているはずです。ただし、時々何らかの修正が入ることがあるようで、その場合には18時とか21時とかに最新の予報に上書きされてしまうこともあります。それはともかく、17時発表の天気予報や11時発表の週間天気予報は、たとえ18時に自動的なダウンロードをし損なったとしても、翌日の朝5時までであれば、まだ取得するチャンスが残っているわけです。

     そこで、自動的にダウンロードするPCとは別に、普段使用しているPCでも同様に毎日天気予報をダウンロードを行うようにしておき、無事にダウンロードされていることをできるだけ毎日確認するようにしています。もしも何らかの理由でダウンロードされていないときには、手動でツールを起動してダウンロードします。

     さらに、旅行等で自宅に戻らない時には、夜の適当な時刻にスマホなどで天気予報と週間天気予報のページをキャプチャするようにしています。ときどき忘れてしまうこともありますが、ここまですることで、今のところ、ほぼ取りこぼしなく取得できています。それでもたまに海外に出るときなどは、かなり危ない状況になりかねません。時差の関係で、日本の17時〜5時の時間帯にネットへのアクセスが難しい状況があり得るためです。ちょうど日本の夕方に離陸する長時間フライトがクセモノで、現地に着いたときには日本時間の朝になっているというわけです。幸い、今のところ、日本で待機しているPCが自動起動して自動ダウンロードしてくれているようですが、これからは完璧を期すのであれば、海外に行くときは飛行機内でもネット接続することが必要かもしれません。

     2005年の途中からデータ収集を開始して15年以上が経過したのですが、その中で数回、データを取り損なったことがあります。翌日にネットをいろいろと探し回って、かろうじて前日の天気予報データが残っているところを見つけたりして、何とかリカバリーできたこともあったのですが、1度だけ、2014年4月20日のデータは、ついに取得できませんでした。このときはまだ、PCのタイマー起動や ダウンロードツールの自動起動は行っていなかったのですが、使用していたPCが Windows Updateのために勝手に再起動されたためデータを取得し損ない、さらに、その日はたまたま出かけていて、遅く帰宅してから、いつも使っているPCでのファイル取得の確認を失念したため、データ取りこぼしに気付いたのが翌朝で、既に朝5時の予報に上書きされていました。このときもあちこち探したけれど、欲しいデータはついに見つからなかったのでした。

2.データの解析とサイトへの掲載

 ダウンロードしたページから、必要なデータ(天気予報、最高気温、最低気温、降水確率)を取り出して、これをデータとして蓄積し、さらに htmlファイルに整形して出力します。この作業を全部手動で行うのは大変ですので、今は半自動化しています。

 htmlファイルを読み込んで、ファイルの中から必要なデータを見つけて抽出し、所定のフォーマットに書き出すという作業を自動化するだけなので、ファイル操作やテキスト処理ができれば、どんな方法でもいいのですが、ここでは手軽に使えるということと、どうせその後の種々の解析に表計算ソフトを使用するということで、Excelのマクロ(VBA)を使って処理することにしました。

 天気予報のページの htmlファイルの中身を一度解析し、それに対応したマクロを書けば、データを取り出すのはさほど難しい作業ではないのですが、何年かに一度程度、サイトの中身が見直されることがあるため、その都度、マクロを一部修正してきました。適当な頻度であればまだしも、本当にたまにしか起こらないため、改めて自分の書いたマクロを見直して、理解するのが結構大変だったりします。

 マクロでは、必要なデータを見つけて取り出し、これを整形して htmlファイルにして出力するところまで自動的に行っています。このとき、天気予報と降水確率の統計処理まで行っています。

 一方、天気予報を解析したり、実際の天気と比較して、トレンドグラフ、偏差ヒストグラム、相関グラフなどを出力するのには、Excelを使っています。実はこのとき、天気予報や実際の天気のデータは、すべて Excelに手入力しています。これもマクロで自動化できないこともないと思うのですが、最初のファイルの設計がいい加減だったため、これ以上の改造はかなり無理が出てくることや、Excelファイルがあまりに巨大化してしまい、これ以上複雑化すると、いろいろと不具合が出ることなどがあり、自動化は断念したままです。でも、全部自動化すると、天気予報や天気の現状を目にする機会が減ってしまい、あまり面白くないということもあるので、実際に目で見て、手を動かすことも必要なのではないか、と考えたりしています。 天気予報データのExcelの該当セルへの入力は、マクロで自動化しましたが、実際の天候データは手入力としています。これは、実際の天候データが、非常に多様で、例えば「晴一時雨後一時曇、雷を伴う」などのように、とても長くなったりする場合があり、どうしても人間の判断が必要となるためです。

 Excelに必要なデータを入力したら、Excel上でさらにいくつかのマクロを走らせ、データの解析、グラフ表示、解析結果の htmlファイルへの出力などを自動的に行っています。天気予報を種類別にカウントしたり、降水確率の適中率を計算したり、各種グラフの縦軸や横軸を設定して所望のデータをグラフ上に表示させたり、といった作業はほとんどマクロで自動化していますので、日々の作業量は大したことはありません。。

 日々の天気予報データの収集とサイトへのアップロードは原則として毎日行い、実際の天気との比較や解析結果などの各種グラフのアップロードは原則として毎週末に行っています。 日々の天気予報データの収集、および実際の天気と天気予報との比較や相関などの各種グラフのアップロードは原則として毎日行い、さらに、月末には1か月分のデータをまとめた結果をアップロードしています。各データにアクセスするための indexファイルは、手書きで更新しています


戻る


最終更新: 2021/10/20
連絡先: tf2