天気情報を表示する20(邪道ですんま編1)

これまで、いくつかのサーバーから天気情報を取得し、それなりに表示してきました。
後半では、日本語表示に重点を置いてサーバーを選んできました。
その上、降水確率まで配信されているサーバーを見つけ、情報を表示しました。
これらのサーバーは、どれもRSSを配信しているサーバーです。
XMLで情報を取得できるので、XMLという前提で処理をすることができました。
ここまでは、一般的な王道ですので、どのウィジェットも似たようなものばかりになってしまいますし、似てしまうしかないのです。

今回の天気ウィジェットシリーズを作成するにあたり、随分サーバーを探しました。
しかし、どのサーバーにも、私が求める情報がないのです。
なのに、お天気サイトではバッチリ表示されているのです。
その、私が求める情報とは、「時間毎の天気予報」です。
このシリーズを始めたときは、ある程度の日数の天気予報が日本語で表示できればそれで良いと思っていました。
MSNの天気情報は、ピンポイントな上にさらに気温や降水確率まで配信されていたので、シリーズ終了でも良かったのですが、サーバーを探しているうちに、ある疑問を抱くようになったのです。
「どうしてサイトには表示しているのに配信しないんだろう???」
そう思うようになってから、私の目的が完全に変更され、時間別天気予報を配信しているサーバーを探すようになりました。
しかし、シリーズがこんなに続いてもその間に見つけることができなかったので、大人の答えを出しました。
「サーバーのサイトで表示されている情報がすべて配信されている訳ではない」
まぁ、割り切りですね。

ただ、そこで終わるような私ではないので、これまでの王道とは違ったやり方で実現します。
表題で「邪道」という文字を使いましたが、私の中では「これぞ王道!」と言いたいくらいのやり方です。
それは、「サイトの表示をiPhoneで表示し直す」という方法です。
そこに情報があるのですから、表示しない手はないですよね。
そもそもiPhoneを脱獄しているのですから、邪道を王道にしてしまえば良いのです!!

という訳で、ここではサイトから情報を取得する方法を紹介します。

ここでのやり方は、サイトデザインに依存しています。
サイトデザインが変更されたら、ご自身で対応して下さい。

今回でお天気シリーズを終わろうと考えています。
Yahooウェザーでシリーズが始まりましたので、Yahooウェザーで締めましょう。
地域も、日本のど真ん中の都市である名古屋にします。
なお、邪道を進むため、目的がコロコロ変わる可能性があります。

天気情報URLを確認する

パソコンのブラウザで、以下のURLを開いて下さい。

http://www.yahoo.co.jp/

ヤフージャパンですから、開かなくても分かりますね。
天気をたどって、名古屋の天気予報ページを開きます。

RSSがありますが、基本スルーして下さい。
そのまま下へスクロールして、どんな情報があるか確認して下さい。
今日と明日の天気予報だけでなく週間予報もありますね。
6時間毎の降水確率や風向きなどもあります。
それだけの情報があるなら、RSSで配信して欲しいのですが・・・
そんな感じで眺めていると、さらにピンポイントがありました。
今回は、RSSによる配信があるかどうかを気にせず、サイトに表示されている内容だけ見ていけば良いので、迷わずピンポイントを選択しましょう。
せっかくなので、今回は「市」ではなく「町」を選びます。
愛知県で有名は都市は、名古屋・豊橋・豊田などがありますが、日本のど真ん中と銘打って始めたので、名古屋の隣りにある「東郷町」にします。
サイトから得られるURLは以下の通りでした。

http://weather.yahoo.co.jp/weather/jp/23/5110/23302.html

東郷町のページに移動すると、以下のような表示になりました。


ピンポイントだと、さらに詳しい3時間毎の予報になるんですね。
一般的なRSSにあるような気温や降水確率だけでなく、風向きや湿度なども3時間毎の情報が表示されています。
これをそのまま表示できれば良いのですが・・・

そのまま表示させてみる

簡単なサンプルを作ってみました。
ダウンロードはこちら ー> wf_201のダウンロード

基本は、これまでと同じなのですが、iframeを使うことで、LockBackground.htmlの表示の中にヤフー天気サイトを表示させています。
所謂、「ムリヤリ」ですね。
ここではさらに、「今日の天気」のdivタグidが"yjw_pinpoint_today"であることを利用して、表示後さらに「今日の天気」までスクロールさせようとしています。

ロック画面に表示してみた結果です。
表示されていますね。
しかも、「今日の天気」までバッチリスクロールしてる・・・
ちなみに、このサンプルではiframeを2つ使い、今日と明日のてんきをそれぞれ表示させています。
つまり、明日の天気も個別でスクロールしているということなのです。
きちんと表示されてしまっています・・・


クロスドメインが心配だったのですが、そんなことよりも、divタグのidでスクロールするとは思っていませんでした。

何らかのトラブルを期待したのに・・・
逆にガッカリです・・・

その後、このページを作成中に、我がiPhone4がスリープに入ったので起こしてみると、同じページを表示しているもののスクロールしていませんでした。
見事に表示が崩れたのです!!!

これを想定していたのです!!
ある意味、大成功ですね!!



これで大義名分ができました。
サイトをそのまま単純に表示するのではなく、表示された内容から必要な内容だけを抜き出して表示し直すことにしましょう。

ページトップへ

2012/05/25