天気予報を取得してカレンダに登録するスクリプト。
PDAにおいて、最も目に付く位置にあるデータはPIMデータでしょう。 たいていの機種ではカレンダーやアドレス帳を開くためのハードウェアキーが用意されていますし、TodayのようなPIMデータのサマリを表示する機能を持ったアプリケーションが提供されているものも少なくありません。
こうした目に付く位置に、タイムリーな情報が表示されていると便利でしょうね。 ありがたいことに、yaktyさんがLinuxザウルスのPIMデータを読書きできるツール「zdbat」を作成、公開してくださっています。 そこで、この「PIMにタイムリーなデータを」という発想で、天気予報をカレンダに取り込むPerlスクリプト「weather」を作成しました。
下のスクリーンショットは、weather実行後のカレンダ(実際にはichitokumeiさんによる置き換えソフトのdatebook2を使用しています)画面です。
weatherはexciteのザウルス番組表にある各地の天気のうち、例えば東京地方など指定されたURLのものを取得して、カレンダに追加します。 表題にはその日の天気予報と、pre3版では予想降水確率が登録されます。 詳細画面では、天気予報、予想降水確率に加えて、予想気温と、当日であれば時間後との予想降水確率を確認できます。
■ 関連アプリケーションのインストール
weatherは可能な限り、外部のアプリケーションに処理をお願いして楽をするようなつくりになっています。 このため、外部のアプリケーションとして、以下が必要です。
| アプリケーション名 | 役割 | 入手方法 |
| wget | Webページ取得ツール | (購入時点でLinuxザウルスにインストール済み) |
| Perl | weatherを動かすPerl言語インタプリタ等 | Linuxザウルス/ダウンロード |
| nkf | 漢字コードの変換 | Linuxザウルス/ダウンロード |
| iselect | メニュー表示 | Linuxザウルス/ダウンロード |
| zdbat | カレンダへの登録、削除等 | yakty's LinuZau ToolBox Wiki |
いずれもLinuxザウルスの標準のインストーラであるipk形式になっています。 したがって、ダウンロード後は「ソフトウェアの追加と削除」でperl、nkf、iselect、zdbatをそれぞれ選択し、インストールするだけです。
perlやnkfは比較的広く使われているアプリケーションですので、すでにインストールされているかもしれません。 それらは、ここで改めてインストールする必要はありません。 ただし、zdbatだけは、0.2.5版かそれより新しい版でしか動作しませんので、これ以前の時は新しいものに入れ替えてください。
インストールがすんだら、ちゃんと動作することを確認してください。 以下のコマンドを実行して、それぞれバージョン情報が表示されれば問題ありません。
perl -v nkf -v iselect -V zdbat -h
perlの実行時にはlanguageがどうのというwarningが表示されるかもしれません。 特に問題はありませんが、気になるようでしたらLinuxザウルス/Perlページの「環境変数の設定」の項を試してみてください。
■ weatherのインストールと起動
weatherは、perl、nkf、iselectと同様に、Linuxザウルス/ダウンロードページから取得できます。 ファイルへの直接のリンクは以下になります。
このファイルを取得したら、「ソフトウェアの追加と削除」でweatherをインストールしてください。 これは端末ウィンドウから使用するスクリプトで、ホーム画面にはアイコン等はできません。
インストールがすんだら、「weatherの実行」に進み、weatherの起動や操作ができるか確認してください。
端末ウィンドウで以下のコマンドを実行して、weatherを起動してください。
weather
weatherが起動されると、下のような画面が表示されます。 weatherの各操作は、基本的にこのメニューから行うことができます。
■ 天気予報を取得する地方の登録
weatherは、あらかじめ天気予報を取得したい地方を登録しておくようになっており、実行時には登録されている地方の天気予報が取得、登録されます。
取得対象の登録は通常、取得できる地域の一覧からの選択で行います。 まず、ザウルスをオンラインにした状態でweatherを起動し、メニューから「URLの追加」を選択してください。 次に「Webから一覧を取得して選択」を選択してください。 これでまず、取得対象にできる都道府県の一覧をダウンロードされ、表示されます。 ここから対象としたい地域のある都道府県を選択します。 次に、その県内の取得可能な地域の一覧がダウンロードされ、表示されます。 ここから対象とする地域を選択します。
一覧から選択する代わりに、直接URLを指定することもできます。 まず、ザウルス番組表の「各地の天気」から、取得したい地方の今日の天気を開いてください。 東京地方であれば、このページから「東京」→「東京地方」とリンクをたどった先のこちらになります。 URLに「pref=xxxx®=xxxx」という部分が含まれていることを確認して、このURLをコピーしておいてください。
URLがわかったらwetherを起動し、メニューから「URLの追加」を選択してください。 以下の文が表示されます。
取得したい地域のURLを入力してください。
URLを入力し、Enterを押してください。 登録したURLの「pref=xxxx®=xxxx」の部分が表示されます。 確認後、Enterを押して終了してください。
■ 天気予報の取得
指定したURLから天気予報をするには、メニューから「天気予報取得」を選択します。 登録されている地方ごとに、以下のように5ステップ分のログが出力されます。
[pref=4400®=4410] fetching web weather forecast. [東京] reading past weather forecast data. [東京] updating weather forecast. [東京] deleting old weather forecast. [東京] done.
"done."まで行くと、その地方の分の天気予報の取得、カレンダの更新が終わりです。 これが登録した地方の数だけ繰り返されると、全処理が完了です。
うまくいけば、このページの先頭近くのスクリーンショットのように、向う一週の日付に天気予報が表示されます。 また、前日までの天気予報は削除されます。
weatherを使っている間には、URLを追加するだけではなく、削除したいときも、今設定されているURLを確認したいときもあるでしょう。 また、起動されたら毎回最新の天気予報を取得するのではなく、「前回実行時から何分以内だったらスキップ」といった設定もできます。
■ 天気予報を取得する地方の追加
取得する地域は、例えば自宅付近と通学/通勤先など、複数登録することもできます。 手順は「weatherの実行」の「天気予報を取得する地方の登録」の手順を繰り返してください。
■ 天気予報を取得する地方の削除
登録されているURLを削除するには、メニューから「URLの削除」を選択します。 現在登録されている地域の「pref=xxxx®=xxxx」が一覧表示されますので、削除したいものにカーソルを移動してEnterを押してください。
該当のURLを削除した後の、登録済みのURL一覧が表示されます。 Enterを押して終了します。
■ 天気予報を取得する地方の表示
登録されているURLを一覧したいだけの時には、メニューから「URLを表示」を選択します。 Enterを押して終了します。
■ 取得間隔の設定
前回の取得から一定時間を経過していなければ、処理をスキップするように設定することができます。 取得間隔を指定するには、メニューから「取得間隔の設定」を選択します。
取得間隔の入力を求められますので、任意の分数を入力してください。 設定結果が表示されますので、Enterを押して終了します。
この設定はおそらく、weatherをシェルスクリプトなどに組み込んで、他の作業と一緒に実行したり、あるいは自動化するときなどに、タイミングを計る必要がなくなるので有用でしょう。 シェルスクリプトに組込む際などに必要な、コマンドラインオプションについての情報は後述します。
■ 取得履歴の削除
取得間隔を設定すると、指定時間内には再度「天気予報の取得」を指示しても、処理はスキップされます。 すぐに再処理をさせたい時には、取得履歴を削除してしまう方法があります。
取得履歴を削除するには、メニューから「取得履歴を削除」を選択します。
■ 一時ファイルとトレイアイコンのクリア
取得途中でスクリプトを強制終了すると、一時ファイルと、トレイアイコンが残ってしまいます。 これをクリアするには、メニューから「一時ファイルとトレイアイコンのクリア」を選択します。
weatherのアップデート(バージョンアップ)は、「ソフトウェアの追加と削除」で旧版を削除し、その後新版をインストールするだけです。 なお、バージョンによってはこれ以外の作業が必要となる場合もあります。 以下をご確認ください。
■ 0.2.0/0.2.0-pre4版から
0.3.0-pre1版から、実行中はタスクトレイにアイコンを表示させることができるようになりました。 この機能を利用したい時は、TrayIconCtlAppletをインストールしてください。
■ 0.2.0-pre3版から
0.2.0-pre4版から、必要なzdbatのバージョンが0.2.5になりました。 これ以前のバージョンを使っているようであれば、zdbatもアップデートして下さい。
この他、pre4版以降から最新版へのアップデート要件も実施してください。
■ 0.2.0-pre1/0.2.0-pre2版からpre3版以降へ
以下のファイルが、正しく書かれていないことがあります。 アップデート前にこのファイルを削除してください。 アップデート後には、取得地域の登録をやり直す必要があります。
/home/zaurus/Settings/weather.conf
この他、pre3版以降から最新版へのアップデート要件も実施してください。
weatherを普段チョコチョコと使うには、端末ウィンドウからの起動は面倒だしコマンドを忘れてしまうこともあるでしょう。 それよりは、起動だけでもホーム画面からアイコンをタップでできたほうが便利です。
逆にwgetでのWeb巡回やfetchmailでのメール取得とあわせて、一本のシェルスクリプトにしてしまいたいかも知れません。 そんな時には、ここまでで説明されている対話的な使い方ではなく、weather起動時にコマンドラインオプションを指定して非対話的に実行する必要が出てきます。
こうした進んだ使い方を以下でご紹介します。
weatherをホーム画面に登録するには、まず標準の端末ウィンドウではなく、♪さんのqpe-embeddedkonsole-ja ワイド版が必要です。 これがインストールされていれば、weatherをホーム画面から起動するための「weather-run」を使用することができます。 それぞれ、以下のページ/サイトからipkファイルを取得して、「ソフトウェアの追加と削除」でインストールしてください。
weather-runをインストールすると、次のようなアイコンがホーム画面のアプリケーションタブに「weather」の名前で追加されます。 これをタップすると、weatherのメニューが起動されます。
SL-C7x0の場合、インストール直後は「アプリケーションをVGAの画面に最適化して実行する」にチェックが入った状態になっています。 始めにアイコンを数秒間押してプロパティを開き、このチェックをはずしてからお使い下さい。
weatherの各操作は、端末ウィンドウからweatherを起動する際に、オプションをつけることで非対話的に実行することができるようになっています。 これは、weatherをシェルスクリプトに組込みたいときなどに有用でしょう。
■ 設定の変更と確認
以下の各オプションで取得するURLを管理を行うことができますします。
weather -a URL ... 取得するURLの登録。 weather -d URL ... 取得するURLの削除。 weather -l ... 登録されているURLの一覧。 weather -p PAST_HANDLING ... 過去の天気予報の処理。PAST_HANDLINGはremain(残す)かreduce(削除)。 weather -i MINUITES ... 取得間隔の指定。 weather -r ... 取得履歴の削除。
■ 天気予報の取得
以下のコマンドで、登録されているURLから天気予報を取得します。
weather -e [ -f | -t ] [ -p HTTP_PROXY ] [ -debug ]
通常の実行と同じようにするには、"-e"オプションだけを指定すればよいのですが、いくつかこの方法でのみ使えるオプションがあります。
"-f"と"-t"は、いずれも取得間隔/取得履歴に関わるオプションです。 取得間隔が設定されている場合、最終更新日時から指定された分数だけ経過していないと、処理はスキップされます。 この時でも"-f"オプションを指定していると、強制的(force)に取得を行って最終更新日時を更新します。 あるいは、"-t"オプションを指定していると、一時的(temporary)に最終更新時刻を無視して取得だけを行うことができます。
"-p"オプションでは、今回の巡回でのみ使用するHTTPプロクシサーバーを指定することができます。 これが指定されていない時には環境変数のhttp_proxyが使用されます。 毎回同じプロキシを使用する場合には環境変数のほうを指定するようにし、一回限りのプロキシ指定ではこのオプションを使用するとよいでしょう。
"-debug"では、動作中、詳細なログを出力します。
■ オプションの確認
これらのオプションがわからなくなったときには、オプション抜きで weather を起動してみてください。 メニューには、各操作が次のように表記されています。
URLの追加 (weather -a URL) URLの削除 (weather -d URL) ...
この括弧内が、非対話的にweatherを使用するためのオプションです。
weatherの実行中、タスクトレイにアイコンを表示させることができます。 TrayIconCtlAppletをインストールしてください。
NetHelperAppletを使えば、ダイアルアップ接続した時、無線/有線LAN接続した時などに自動的にweatherを実行させることができます。
自動実行をするには、次の手順を踏みます。
nethelper.confはNetHelperAppletの設定ファイルで、 [Run_All] という行があるはずです。 この下に、以下の行を追加すれば設定は完了です。
up00 = /home/QtPalmtop/bin/weather -e
すでにup00がある場合、特定のネットワーク接続でのみ自動実行したい場合などについては、NetHelperAppletのページで設定方法を確認してください。
「weatherを非対話的に実行する」に列挙されている "-debug" オプションは、かなり詳細なログを出力します。 これはweatherが期待通りの動きをしないときに原因を切り分けるのに有用です。
ログの取得を取得しながら、weatherを実行するには、コマンドラインから以下を実行します。
weather -e -debug > debug.txt
これで、debug.txtに動作中のログが出力されます。 動作中に端末ウィンドウにも出力させ、さらにdebug.txtにも保存したいときには、次のようにします。
weather -e -debug | tee debug.txt
ただし、"-debug"オプションを指定したときのログはかなり大きくなりますので、ご注意ください。 私の環境では、ファイルサイズが30KB超、行数は800行余りになりました。
■ お願い
もしweatherが正しく動作していなくて、どうしてか問い合わせたいときには、まず動作環境の確認を行ってください。 zdbatが0.2.4版であること、perl、nkf、iselectがインストールされていることを確認してください。 "perl -v"、"nkf -v"、"iselect --help"などとして、バージョンまたはusageが表示されれば問題ありません。 また、カレンダーは標準のものか、datebook2(BOX版)を使っているか確認してください。
これが満たされていれば、それは正しく動作するはずの環境ですので、次にここに挙げた"-debug"オプションでのログの取得を行って下さい。 その上で、作成されたログファイルを添付して、メールをお送りください。
なお、ログの一部には、カレンダに登録されている全てのデータが含まれています。 "[Datebook::read_datebook]"という1行から、"[Datebook::parse_csv]"という1行までの間ですが、この部分は適宜省略して下さい。
とにかく、手早くインストール等は済ませて使い始めたい、という方に。
■ wether
以下をそれぞれ取得し、「ソフトウェアの追加と削除」でインストールします。 「ソフトウェアの追加と削除」を開いたときに、すでにインストール済み(アイコンが青いボール)になっていれば、インストールは不要です。
| ソフトウェア名 | ipkファイル名 | 取得元 | 備考 |
| Perl | perl_xxx_arm.ipk | Linuxザウルス/ダウンロード | |
| nkf | nkf_xxx_arm.ipk | Linuxザウルス/ダウンロード | |
| iselect | iselect_xxx_arm.ipk | Linuxザウルス/ダウンロード | |
| weather | weather_xxx_arm.ipk | Linuxザウルス/ダウンロード | |
| zdbat | zdbat_xxx_arm.ipk | yakty's LinuZau ToolBox Wiki | 0.2.5より前の版はアップデートが必要 |
端末ウィンドウから以下のコマンドを実行すると、weatherのメニューが表示されます。
■ ホーム画面にアイコンを追加
以下をそれぞれ取得し、「ソフトウェアの追加と削除」でインストールします。 「ソフトウェアの追加と削除」を開いたときに、すでにインストール済み(アイコンが青いボール)になっていれば、インストールは不要です。
| ソフトウェア名 | ipkファイル名 | 取得元 | 備考 |
| weather-run | weather-run_xxx_arm.ipk | Linuxザウルス/ダウンロード | |
| qpe-embeddedkonsole-ja ワイド版 | qpe-embeddedkonsole-ja_xxx_arm.ipk | いとしのLiza |
ホーム画面のアプリケーションタブに"weather"というアイコンが追加されます。 タップすると、weatherのメニューが表示されます。
Qualendarおよびdatebook2では、キーワードを設定して用件をアイコンを表示させることができます(datebook2では月間表示のみ)。この機能を使い、上記スクリプトで取得した天気予報をアイコンで表示させてみましょう。(下図はdatebook2のスクリーンショット)
設定の方法は長くなりましたので下記のページにて紹介しております。
Qualendar 20031206版以降では、月間と週間表示で背景画像を表示させることができます(一日表示ではアイコン表示)。この機能を使い、上記スクリプトで取得した天気予報を背景画像で表示させると、ビジュアル的にも楽しいですし、月間/週間表示で1行分節約できて便利です。
手順は、「Linuxザウルス/天気予報/アイコン設定」と同じです。詳細は割愛します。違うのは下記の部分だけです。
設定画面の[アイコン]タブではなく[背景]で同様の設定をすればOKです。
設定ファイルは下記になります。
/home/zaurus/Settings/QualendarBackground.txt
Qualendarおよびdatebook2には、フィルタ機能があります。フィルタを設定することで、分類別に予定を表示したり非表示にしたり切替ができます。 こちらの天気予報取得スクリプトでは、分類を”天気予報”として登録してくれます。この分類を利用して、Qualendar/datebook2のフィルタ機能を使い天気予報の表示をON/OFFしてみましょう。
■ STEP1 Qualendar/datebook2で”天気予報”という分類を設定する
■ STEP2 Qualendar/datebook2で”天気予報”のフィルタを設定する
タブの下に下記のような入力ボックスがあります。
| Filter 0 | 0 | Filter1 | 1 |
| Filter 2 | 2 | Filter3 | 3 |
”Filter 3”にフィルタ”天気予報”を登録しましょう。
| Filter 0 | 1 | Filter1 | 1 |
| Filter 2 | 2 | Filter3 | 天気予報 |
■ STEP3 Qualendar/datebook2で”天気予報”のフィルタを設定する
| Day | [ ] | [ ] | [ ] | [ ] |
| Week | [×] | [×] | [×] | [ ] |
| Month | [×] | [×] | [×] | [ ] |
設定画面の表示にはありませんが、4つのチェックボックスは左からFilter0〜4を意味します。チェック(×)したFilterをかけたときには分類”天気予報”は表示されません。 上の設定では下記のように表示されます。
| Filter | 0 | 1 | 2 | 天気予報 | |
| 一日 | Day | 表示 | 表示 | 表示 | 表示 |
| 週間 | Week | × | × | × | 表示 |
| 月間 | Month | × | × | × | 表示 |
このように、フィルタは表示したくない項目にチェック(×印)を入れていくことになります。
| Category | Color | Day | Week | Month |
| 天気予報 | ■ | 012 | 012 |
■ STEP4 Qualendar/datebook2で”天気予報”のフィルタをかけてみる
初期の月間表示では天気予報は表示されていないはずです。このまま1日表示にすると天気予報は表示されます。 続いて”天気予報”フィルタで月間/週間表示でも天気予報を表示させてみましょう。
これで全ての表示スタイルで天気予報が表示されるようになりました。