iCalのrruleを必要な分だけ抜き出して使う
システム上でスケジュール情報を登録・保持するようにしたいが、一から考えるのは面倒、特に繰り返し条件が。
なのでiCalのrruleの仕様をそのまま踏襲することにするが、日本語情報がほとんど無い。
一番参考になったのがここ。
CalDAV(iCalendar)のrrule(繰り返し設定)一覧まとめ
FREQを基点にしてまとめ直す。
FREQ | 繰り返し条件 | DAILY | WEEKLY | MONTHLY | YEARLY |
---|---|---|---|---|---|
UNTIL | 終了日 | ○ | ○ | ○ | ○ |
BYMONTHDAY | 月の日付指定 | × | × | ○ | ○ |
BYDAY | 曜日指定 | ○ | ○ | × | ○ |
INTERVAL | 間隔 | ○ | ○ | ○ | ○ |
BYMONTH | 月指定 | × | × | × | ○ |
COUNT | 繰り返し回数 | ○ | ○ | ○ | ○ |
ここから機能を絞っていく。
まず前提として、開始日・終了日は必須で保持する。
無期限の予定とかほぼ入れない。特に仕事では大抵年末や年度末で期間を切る。
FREQ:DAILY
- そもそも要る? 開始 - 終了日を指定して連続させればいい
- 仕事上のスケジュールで2日おき/3日おき(INTERVAL)とかお目にかからない
- 大体は毎週 x曜日とかになる
FREQ:YEARLY
- たぶん要らない。毎年この日、という指定はあれば便利だと思うけど
- 毎年予定は忘れないようにするために使うことが多い気がする
- 必要なら個人のGoogleカレンダーに入れてもらう、今回のシステムでは必要性がない
- 関連してBYMONTHも不要になる
UNTIL
- 要らない。終了日で表現すればいい、二重に持つのはややこしい
COUNT
- 要らない。仮に「毎週火曜 全5回」とかの予定があっても、普通は最終日を意識するし、終了日を指定すればいい
というわけで棚卸しした結果こうなる。
FREQ | 繰り返し条件 | WEEKLY | MONTHLY |
---|---|---|---|
BYMONTHDAY | 月の日付指定 | × | ○ |
BYDAY | 曜日指定 | ○ | × |
INTERVAL | 間隔 | ○ | ○ |
- 毎日 (開始 - 終了日の範囲指定)
- 毎週 x曜日、2(3, 4・・・)週ごとの x曜日
- 毎月 x日、2(3, 4・・・)ヶ月ごとの x日
これだけ表現できれば大抵の予定はカバーできるだろう。