Entry

スケジュール表作成

ホームページの左側に、スケジュール表を追加してみました。「Schedule」ボタンを押すと、ページ上に表示されます。
閲覧には、DOMをサポートしたJavascriptが必要です。具体的にはInternet Explorer、Mozilla、Opera等の比較的新しいバージョンとなります。サポートしてない場合は表示自体されません。もっとも、他人がこれを閲覧する必要性があるのかどうかは微妙なところですが…。

これは、Yahoo!にあるYahoo!カレンダーというサービスを利用しています。そのサービスでは、自分のアカウントで設定された予定一覧を外部に公開することができるので、XREAで使えるCORNを使って一定時間おきに(今のところ、一日に一回ぐらい)その公開ページを取得し、それを解析してJavascriptに書き換えることで実現しています。
また、表示はCSSを用いたレイヤー(もどき)表示を行います。わざわざ他のページにリンクを張るだけというのも芸がないし、閲覧が億劫になって予定を忘れてしまう可能性があるため、自分のページに持ってきたかったのですが、スペース的な余裕がないため、このような形となっています。…というか、そもそもこのCSSを用いたレイヤー表示のJavascriptを一度書いてみたかった、という方が近いのですが(笑)。

IEやNSなど、特定の環境に依存するメソッドやプロパティを使っていない(はず)ですし、古いブラウザではそもそも表示されない(はず)ですので、問題が生じる可能性はあまり無いと思いますが、もしこれによって不具合が生じた場合、連絡をいただければ出来る限り善処させていただきます。

とりあえず、もう少し様子を見つつ改良を加えていこうかな、と。
しかし、結構あれこれ面倒くさかったな…。Yahoo!カレンダーの公開ページは、Javascriptが機能してないと違うページが表示されてしまったり、予定一覧のアドレス生成の規則がよく分からんのでページを2回取得する必要があったり、文字コードの関係でうまく動かなくなってしまって、何時間も頭を捻っていたら、先頭の「#!/usr/local/bin/ruby」の後が、取得ページがEUCなので「-Ke」としなければならないところを、前回作ったスクリプトをそのまま流用したから「-Ku」になっていただけでムキー!とか、最終的にUTF-8で出力するつもりが、機種依存文字がiconvを通らなくて(「WX III」 の日本語フォントが通らないんだよ!)、何か面倒くさくなって結局元と同じEUCで出力することになったとか…(何か上手い方法でもあるのかねぇ)。
しかしそんな苦労した割には、それほど大した代物ではないわけで。まぁXHTMLとCSSとJavascriptとRubyの勉強になったからいいか。
余談だけど、何で数あるスケジュールサービスの中でもYahoo!を選んだかと言うと、たまたまアカウントを持っていたのが一つ、テレビ番組表からそのままスケジュールを追加できるのが一つ、外部に「予定一覧」を公開する事ができ、しかもそれが取得しやすそうだったことが一つ、とまぁ、大体そんな3つの理由がある。でもこれだと、「開始時間」は取得できるのに「終了時間」が取得できないのが難点。多分、開始時間が一番近い予定を一番上に持ってくる必要があるため、開始時間が過ぎた予定をガンガン消していくという方式だからなんだろうけど…。まぁ頑張れば終了時間も取得できるけど、そこまでしたくはない。あぁ、ちなみに自分のアカウント名は本名をもじった物を使用しているので、ここではちょっと公開しにくい。

ところで、こういうのを一般向けに公開したら需要とかあるのかなぁ。でもこれ、RubyとCORNが必要だから、普通は使えない(前者はともかく、後者は何とかできないこともないけど…)。
…それでも欲しい人とか、います?

追記

ー、ちなみに、テレビの番組を追っかけるとかそういう便利なことはできないです。というか、どのテレビ番組表サービスでも、特定の番組を追っかけるとか、そういう便利な事ってできないのね…。もう少しこう、番組のメタ情報の生成方法を工夫してくれれば、そういうサービスが簡単にできるんじゃないのかねぇ。…よく考えたらそんなサービスに需要を見出すのって、アニオタが筆頭じゃないか(笑)。

でも番組表の方は、最終的には似たような表示形式で、もう少し違った形を考えていたりする。今回学んだノウハウを使えば結構すぐできると思うけど。

これ作ってて思ったけど、こういったスケジューラでこそRSSを配信してほしい。
もちろん自分が使いやすいように、という勝手な要望だけど、RSSによって予定チェックやローカルソフトウェアとの連動ができ、使い方に色んな幅が広がると思うのだが、どうか。


Comments (0 件)

コメントを残す

メールアドレスが公開されることはありません。