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ヶ月)以上の周期は指定できる。
Copyright (c) 2000-2001 野村 真人 (NOMURA Mahito) <CI5M-NMR@asahi-net.or.jp>
2000年10月作成