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月作成