iCalendar 仕様
iCalendar コンテンツの作成にとりあえず役立ちそうな情報の抜書き。(正確な仕様は RFC にあたること)目次
仕様書
iCalendar は RFC で定義されている。- RFC2445 (November 1998) Internet Calendaring and Scheduling Core Object Specification (iCalendar)
- RFC2446 (November 1998) iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries
- RFC2447 (November 1998) iCalendar Message-Based Interoperability Protocol (iMIP)
全般
- MIME タイプは text/calendar。テキストファイルとして記述。(RFC2445 3.1)
- ファイル拡張子は ics、Macintosh ファイルタイプコードは iCal。free or busy time information のみ ifb。Macintosh では iFBf。(RFC2445 3.10)
- 各行の区切りは CR+LF。(RFC2445 4.1)
- 1行 75 octet 以内。行頭に空白を入れない。2行以上続ける場合に、2行目以降の行頭に空白を入れる。(RFC2445 4.1)
- デフォルトの文字セットは UTF-8。(RFC2445 4.1.4)
- 日付と時刻を一緒に記述する時は、間を T
で区切る。例: 19980119T230000 (RFC2445 4.3.5)
これらの日付時刻書式は、ISO 8601 Data Elements and Interchange Formate -- Information Interchange -- Representation of Dates and Times に定められた形式。 - 時刻は、末尾に Z がつけば UTC、つかなければローカル時間。(RFC2445 4.3.12)
構造
BEGIN:VCALENDAR PRODID: VERSION:2.0 METHOD:PUBLISH |
||||
BEGIN:VTIMEZONE TZID:... |
||||
BEGIN:STANDARD : END:STANDARD |
||||
BEGIN:DAYLIGHT : END:DAYLIGHT |
||||
END:VTIMEZONE |
||||
BEGIN:VEVENT ORGANIZER:MAILTO:CI5M-NMR@asahi-net.or.jp DTSTART;VALUE=DATE:20001009 DTEND;VALUE=DATE:20001010 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=MO;BYMONTH=10;BYSETPOS=2;WKST=SU LOCATION: TRANSP:TRANSPARENT SEQUENCE: UID: DTSTAMP: CATEGORIES: DESCRIPTION: : SUMMARY: PRIORITY: CLASS:PUBLIC END:VEVENT |
||||
END:VCALENDAR |
詳細
BEGIN, END
(RFC2445 4.4, 4.6) VCALENDAR, VTIMEZONE などすべてのコンポーネントは、必ずBEGIN:コンポーネント名ではじまり
END:コンポーネント名で終わらなければならない。
VCALENDAR
(RFC2445 4.7)- CALSCALE
- (RFC2445 4.7.1) ?????????????????? 今のところ、定義済みはデフォルトの GREGORIAN だけ。
- PRODID
- (RFC2445 4.7.3) 必須。iCalendar オブジェクトを生成したアプリケーションの識別情報。
- VERSION
- (RFC2445 4.7.4) 必須。RFC2445 は 2.0。
- METHOD
- (RFC2445 4.7.2) ???? 値には PUBLISH, REQUEST がある? MIME
メッセージで使用する場合、Content-type "method"
の値と一致しなければならない。
(RFC2446) ??????????????????????
VTIMEZONE
(RFC2445 4.6.5) タイムゾーンの情報を定義する。TZID と、最低1つの STANDARD または DAYLIGHT の定義を含んでいなければならない。日本の場合は次の記述でよい?
BEGIN:VTIMEZONE TZID:Japan BEGIN:STANDARD DTSTART:19390101T000000 TZOFFSETFROM:+0900 TZOFFSETTO:+0900 TZNAME:JST END:STANDARD END:VTIMEZONE
- TZID
- 必須。タイムゾーンを識別するための文字列。
- STANDARD
- (RFC2445 4.6.5) 標準時刻の情報。DTSTART, TZOFFSETFROM, TZOFFSETTO
を含まなければならない。
ただし Microsoft Outlook 2000 (以下 Outlook) では DTSTART を省略している?
- DTSTART
- タイムゾーンの使用がはじまった日時???
- TZOFFSETFROM
- (RFC2445 4.8.3.3) VTIMEZONE に必須。現在のタイムゾーンがはじまる前に使われていたタイムゾーンの UTC からのオフセット???(夏時間がある地域の場合は、夏時間のオフセット???)
- TZOFFSETTO
- VTIMEZONE に必須。現在のタイムゾーンの UTCからのオフセット???
- DAYLIGHT
- 夏時間の情報。DTSTART, TZOFFSETFROM, TZOFFSETTO については STANDARD に同じ。
VALARM
(RFC2445 4.6.6) 未調査。VEVENT
- ORGANIZER
- (RFC2445 4.8.4.3) カレンダー・コンポーネントのOrganizer(主催者)情報。グループのスケジュール・カレンダーをもつコンポーネントには必須。
ORGANIZER;CN=NOMURA Mahito:MAILTO:CI5M-NMR@asahi-net.or.jp
- CONTACT
- (RFC2445 4.8.4.2) カレンダー・コンポーネントに関連した情報のコンタクト先。
- DTSTART
- (RFC2445 4.8.2.4)
開始日時。定期的なイベントの場合は、最初の分の開始日時。
タイムゾーンを明示する場合は、DTSTART;TZID=Japan:19970714T133000
のようにあらかじめ VTIMEZONE で宣言した TZID を指定する。 - DTEND
- (RFC2445 4.8.2.2) 終了日時。定期的なイベントの場合は、最初の分の終了日時。(祝日のように終日の場合は、翌日の 00:00:00 を指定すればよい?)
- RRULE
- (RFC2445 4.8.5.4)
定期的なイベントについて、頻度、月日、間隔などの規則。
RRULE;FREQ=DAILY;COUNT=10
(DTSTART の日から同一時刻で毎日、全10回) 以下の指定可能な属性は (RFC2445 4.3.10) を参照。
- BYMONTH
- 実際の月の指定。
- BYMONTHDAY
- BYMONTH と組み合わせて、実際の日の指定。マイナスの場合は、DTSTART から値の分だけ先行する期間。
- BYDAY
- LOCATION
- (RFC2445 4.8.1.7) 場所の指定。
- TRANSP
- (RFC2445 4.8.2.7) 設定した時間の状態。OPAQUE (デフォルト), TRANSPARENT が指定可能。 Outlook では「予定の公開方法」に反映される。これがなかったり TRANSP:OPAQUE だと「予定あり」、TRANSP:TRANSPARENT が指定されていると「空き時間」
- SEQUENCE
- (RFC2445 4.8.7.4) リビジョンのシーケンス番号。カレンダーコンポーネントがはじめて作成された時に0、Organizerによる修正更新があるたびに増分。
- UID
- (RFC2445 4.8.4.7) Unique Identifier、全世界でユニークな永続的ID。RFC 822 の addr-spec に従ったシンタックスを推奨。
メールやネットニュースのMessage-IDみたいなものか。 - DTSTAMP
- (RFC2445 4.8.7.2) オブジェクトの作成日時。 Outlook では必須。
- CATEGORIES
- (RFC2445 4.8.1.2) コンポーネントを分類するためのカテゴリー。 Outlook の「分類」に対応。
- SUMMARY
- (RFC2445 4.8.1.12)
カレンダー・コンポーネントの短いサマリまたはサブジェクト。
件名、見出しに相当。 - DESCRIPTION
- (RFC2445 4.8.1.5) SUMMARY
に対して、カレンダー・コンポーネントの完全な説明。
本文に相当。 - PRIORITY
- (RFC2445 4.8.1.9) 相対的な優先度を示す整数。最低は0(優先度なし)。
- CLASS
- (RFC2445 4.8.1.3) アクセス許可の区分。PUBLIC(デフォルト), PRIVATE, CONFIDENTIAL が定義済み
- RELATED-TO
- (RFC2445 4.8.4.5)
他のカレンダー・コンポーネントとの関連を示す。通常、該当するコンポーネントのUIDを指定。
- RELTYPE
- (RFC2445 4.2.15) RELATED-TO で示される他コンポーネントとの関係を明示する。PARENT(デフォルト), CHILD, SIBLING
テンプレート
テンプレート。BEGIN:VCALENDAR PRODID:-//NOMURA Mahito//Manually//EN METHOD:PUBLISH VERSION:2.0 BEGIN:VTIMEZONE TZID:Japan BEGIN:STANDARD DTSTART:19390101T000000 TZOFFSETFROM:+0900 TZOFFSETTO:+0900 TZNAME:JST END:STANDARD END:VTIMEZONE BEGIN:VEVENT UID: DTSTAMP: SUMMARY: LOCATION: DESCRIPTION: DTSTART;TZID=Japan: DTEND;TZID=Japan: RRULE:FREQ=;INTERVAL=;BYMONTH=;BYMONTHDAY= CATEGORIES: TRANSP:TRANSPARENT PRIORITY:0 CLASS:PUBLIC END:VEVENT END:VCALENDAR
実装
Outlook 2000 用の .ICS を作る過程で気づいたことのメモ。- 1ファイルには1つの VCALENDAR しか記述できない? 2つ以上記述しても、Outlook では最初のものしか認識しない。
- Outlook 2000 では、1年以上の周期をもつイベント RRULE:FREQ=YEARLY;INTERVAL=2 以上 を認識できない。ただし、月数で1年(12ヶ月)以上の周期は指定できる。
0 件のコメント:
コメントを投稿