iCalendar(アイカレンダー)とは
iCalendar(アイ
カレンダー)は、PIM(
Personal Information Manager)ソフトウェアなどで利用される、スケジュールの標準フォーマットです。RFC 5545(旧版 RFC 2445)によって規定されており、「iCal」と略称されることもあります。
iCalendarをサポートするソフトウェアを使用することで、ミーティングや予定を
電子メールを通じて他のユーザーに簡単に通知できます。受信者も、会議の日時を容易に提案できるようになります。
iCalendarの特長
広範なサポート: 多くの製品に実装、サポートされています。
データ交換: 従来の
電子メールで交換可能で、送信プロトコルに依存しません。
共有・編集: WebDAVサーバやSyncMLを使った共有や編集が可能です。
Web連携: HTTPプロトコルのみを使用する
Webサーバで、iCalendar形式のスケジュールデータを配信できます。hCalendarを使用すれば、WebページにiCalendarデータを埋め込むことも可能です。
基本仕様
iCalendarの仕様は、
Internet Engineering Task Force(IETF)の
カレンダー・スケジュール作業部会によって定められました。仕様の記述はロータス社のフランク・ドーソンと
マイクロソフトのデリック・ストナーソンが担当し、インターネットメール・コンソーシアム (IMC) によって規定されたvCalendarに依拠しています。
MIMEタイプ: iCalendarデータのMIMEタイプは「text/calendar」です。
拡張子: このMIMEタイプを持つ
カレンダー・スケジュールデータファイルには、
拡張子「ics」が付けられます(Mac OSではタイプコード「iCal」)。
フリー・ビジータイム: 「free and busy time」(空いている時間と予定のある時間)を含むデータには
拡張子「ftb」が付与されます(Mac OSではタイプコード「iFBf」)。
テキスト形式: iCalendarデータは
プレーンテキストで、デフォルトでは
UTF-8が使用されます。別の
文字コードを使用する場合は、「charset」MIMEパラメータで指定できます。
改行と文字数制限: 各行は CR + LF (16進:0D0A) で
改行され、各行75オクテットの文字数制限があります。次の行にまたがる場合は、
スペース (16進:20) またはタブ (16進:09)で行を始めることで、前の行からの続きであることを明示できます。データ項目内で
改行する場合は、「
バックスラッシュ + N」(
UTF-8で5C6Eまたは5C4E、
)でコーディングします。
コア・オブジェクト
iCalendarの先頭には、「
カレンダー・スケジュール・コア・オブジェクト」が位置します。これは
カレンダーとスケジュール情報の集合体であり、最小単位は単一のiCalendarオブジェクトです。これらのオブジェクトは複数まとめられます。
1行目は必ず「BEGIN:VCALENDAR」で始まり、最後は「END:VCALENDAR」で終わります。この行の間には「icalbody」と呼ばれる主データ記述が入ります。主データ部は、
カレンダー全体の属性を記述する
カレンダー・プロパティと、具体的な用事や日程、日時などのタイムスケジュールを記述する
カレンダー・
コンポーネントから構成されます。
VEVENT (イベント): カレンダー上で予定されたイベントに関する属性の集合体。開始時刻を定義するDTSTARTプロパティと、終了時刻を定義するDTENDプロパティを持ちます。
VTODO (ToDo): アクションアイテムや宿題事項などを記述する
コンポーネント。
VJOURNAL (ジャーナル): 日誌のように、特定の日付にコメントを付けたり、作業内容や進捗の実績を記録するために利用されます。
VFREEBUSY (フリー・ビジータイム): 空いている時間と予定のある時間を定義します。
VTIMEZONE: 等時帯を定義します。
VALARM: アラーム設定を定義します。
スケジュール更新
予定されたスケジュールに変更があった場合、UID(一意の識別子)フィールドを利用して改訂版の割り当てが行われます。最初に予定が設定されたときに一意の識別子 (UID) が生成され、スケジュールに変更があったときも同じUIDで発行されます。
データ互換
iCalendarフォーマットは
カレンダーベースのデータを記述するために設計されており、実際の運用にはiTIPやIMIPといった付属規約が必要となることがあります。
iCalendarは
カレンダーデータの相互運用もサポートしていますが、拡張機能のようなものになると実装度合いが低下する場合があります。また、非
グレゴリオ暦では
カレンダーへの記入が難しい場合があります。
vCalendar 1.0
vCalendar 1.0は、インターネットメール・コンソーシアム (IMC) によって公表されたiCalendarフォーマットの元となった規格です。
iCalendarデータファイル生成のため、様々なプログラミング用
ライブラリが公開されています。
iCalcreator - PHP
VObject -
Python
iCal4j -
Java