日本のカトリック教会暦対応、 iCalendar CGI 制作中
[iCalendar (iCal) を読み込んで、Outlook や Google Calendar あるいは Mac の iCal などでスケジュール管理をしている人も多いと思いますが、なぜか、「キリスト教の祝日」として公開されているもののほとんどは、未来の暦の計算が間違っています。スタティックなデータを元にして繰り返しをさせているからでしょう。
そこで、典礼暦を計算をさせて iCal フォーマットのデータを生成する CGI を作ることにした。
ひとまず、「王であるキリスト」から「神の母聖マリア」までの祝祭日にのみ対応しているものを、β版として公開する。
すでに、イースター(復活祭)を計算するプログラムは作ってあるので、ひまなときに、これも iCal に実装する予定。
(追記)復活祭の実装が完了。Google カレンダーの都合(1900-2050)と、CGIサーバ(自営設備)のOSの都合(1902-2038)で、聖週間は、1902年以降3038年までに対応。
(追記) Mac の iCal は、データの行末処理が CR+LF でないと認識しない。ほかのクライアントだと、LFでもいけるのになあ。RFCではCR+LFが正しいとされているので、Macでも使えるように、プログラムを修正した。
ほかに致命的ともいえる問題として、MacのiCalでは、「1月2日から8日までの間の日曜日」といった指定ができない。
DTSTART;VALUE=DATE:19010105
DTEND;VALUE=DATE:19010106
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8;BYMONTH=1
DESCRIPTION:主の公現(日本)
そこで、Appleに仕様変更の要望をだしておいた。
Google Calendar や Mozilla Sunbird などで試したところ、たとえば、「毎年1月2日から8日までの間の日曜日」という指定が、つぎのような方法で可能です。
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8;BYMONTH=1
実例 http://hijiri.umemoto.org/catholic.cgi
* 日本のカトリック教会の典礼暦です。1月の「主の公現(日本)」が、上記のRRULEで定義されています。残念なことに、iCalでは、FREQ=YEARLYとした場合、BYDAYとBYMONTHDAYを同時に指定することができないようです。上記の例だと、BYDAYが無視されて、1月2日から8日までの毎日が、指定されてしまいます。
RFCの定義では、上記の例のような指定方法が許容されているとはいえないかもしれませんが、他のソフトウエアとの互換性の観点から、iCalの実装を変更をしていただけるとありがたいです。
あんかけ豆腐、セットで420円。味はいまいちだった。
