[RFC 5455 iCalendar] 1일차 - iCalendar 의 개요
개요
iCalendar 데이터 포맷은 Calendaring(캘린더 관리)과 Scheduling(일정조율) 정보를 교환하기 위한 데이터 포맷입니다. 이러한 Calendaring, Scheduling 정보에는 이벤트(event), 할 일(todo), 저널 (journal entries), 한가함과 바쁨 상태에 대한 정보(free/busy information) 등이 포함될 수 있습니다. iCalendar 는 캘린더 기능을 제공하는 특정 서비스나 프로토콜에 관계 없이 사용될 수 있도록 정의된 표준 데이터 포맷입니다.
용어 정리
"Calendaring" 은 캘린더 데이터의 생성, 저장, 관리와 관련된 모든 활동을 포괄하는 개념입니다. 주로 자신의 일정을 캘린더 애플리케이션에 입력하거나 수정, 삭제하는 활동을 의미합니다.예)
- 캘린더에 일정, 할일, 회의 기록
- 일정을 삭제하거나 수정
- 반복 일정이나 시간대 정보를 수정
주로 개인적인 일정 관리와 관련되어 있습니다. 다른 사용자와 협업이나 초대에 대한 내용은 포함되어 있지 않을 수 있습니다.
iCalendar 에서는 VEVENT, VTODO 와 같은 속성과 관련되어 있습니다.
"Scheduling" 은 다른 사용자와 일정 협의 또는 공유와 관련된 활동을 의미합니다. 초대장 전송, 참석 여부 확인 (RSVP), 일정 조율 등이 포함될 수 있습니다.
예)
- 회의 초대장을 보내고 참석자를 관리
- 참석자가 응답(수락, 거절, 조건부 응답)을 보내는 과정
- 초대장을 업데이트하거나 취소iCalendar 에서는 ATTENDEE, ORGANIZER, RSVP 와 같은 속성과 관련되어 있습니다.
- 이하 본문에서는 Calendaring, Scheduling 라는 영어 단어 그대로 사용하겠습니다.
- 다자간 협업이 핵심입니다. 초대자(ORGANIZER)와 참석자(ATTENDEE) 간의 상호작용이 필요합니다. 일정의 상태(참석 여부, 수정, 취소 등)을 동기화해야 합니다.
Introduction
지난 몇십년간 디지털 calendaring, scheduling 기술 사용이 상당히 증가해왔습니다. 기업 또는 기업간 비즈니스는 이러한 it 기술을 활용한 일정 조율 기능에 의존하게 되었습니다. 이러한 배경 속에서 이 문서(RFC 5545) 는 서로 다른 calendaring, scheduling 애플리케이션들 간의 상호 운용성을 증대하기 위해서 작성되었습니다. 이 문서(RFC 5545) 는 인터넷 상에서 calendaring, scheduling 정보를 교환하기 위한 MIME content type(text/calendar) 을 정의합니다. The Internet Calendaring and Scheduling Core Object Specification(또는 iCalendar) 는 calendaring, scheduling 애플리케이션에서 저장되는 정보를 획득하고 교환할 수 있도록 합니다.
iCalendar 포맷은 애플리케이션 간에 데이터를 교환하기 위한 exchange format 으로 적합합니다. 이 포맷은 MIME type 의 형태로 정의되었습니다(text/calendar). 이는 일정 객체가 다양한 전송 방식을 통해서 교환될 수 있도록 해줍니다. 여기에는 SMTP, HTTP, 파일 시스템, 메모리 기반 클립보드나 드래그/드롭 상호작용 같은 데스크톱 인터랙티브 프로토콜, point-to-point 비동기 통신, 유선 네트워크 전송, 혹은 적외선과 같은 무선 전송 방식 등이 포함되지만 여기에 포함되지 않는 다른 전송 방식에서도 사용될 수 있습니다.
이 문서는 또한 iCalendar object methods 에 대한 정의도 제공합니다. iCalendar object methods 는 iCalendar 데이터를 하나의 메시지 집합에 맵핑하는데, 이러한 메시지 집합은 미팅과 약속, 할일, 저널의 요청, 응답, 수정, 취소와 같은 calendaring, scheduling 동작을 지원합니다. The iCalendar object methods 는 또한 한가함/바쁨 상태를 포함한 요청 및 응답을 지원하는데 사용될 수 있습니다. 그러한 scheduling protocol 은 iCalendar Transport-independent Interoperability Protocol (iTIP) 에 정의되어 있습니다.
이 문서는 또한 [RFC5234] 에 정의되어 있는 Internet ABNF 에 기초한 iCalendar type 의 정식 문법에 대해서도 포함하고 있습니다. 이 ABNF 는 iCalendar 포맷의 Parser 를 구현하는데 필요하며 iCalendar 데이터를 해석하는 과정에서 모호하거나 의문이 생길 때 이를 위한 최종적인 참고 자료로 사용됩니다. ABNF 문법으로 쉽게 표현할 수 없는 추가적인 제약 조건은 ABNF 에 주석으로 명시됩니다. 규범적인 진술을 포함한 주석은 그러한 규범으로 간주되어야 합니다.
기초 문법과 컨벤션
이 문서에서는 calendaring, scheduling format 을 정의하기 위해서 서술적인 표현방식과 형식적인 표현 방식을 모두 사용합니다.
이 문서에서 사용되는 표기 방식은 ABNF 방식입니다. 이 문서에서 정의하고 있는 포맷을 정확히 구현하려고 한다면 ABNF 형식에 익숙할 필요가 있습니다.
이 문서에서 모든 숫자 값들은 십진법 형태로 표현합니다.
모든 속성(property), 속성 파라미터(property parameter), 열거형 속성값(enumerated property value), 속성 파라미터 값(property paramter value) 들의 이름은 대소문자를 구분하지 않습니다. 그러나 나머지 속성값들은 대소문자를 구분합니다.
iCalendar 객체의 형태는 기본적으로 text/directory media type 에 기초합니다 RFC2425. iCalendar object 가 text/directory 표현 방식의 하위 집합은 아니지만 RFC2425 에 정의된 많은 요소들을 차용하여 사용하고 있습니다.
Formatting Conventions
이 문서에서 정의하고 있는 요소들은 서술적인 방식으로 정의됩니다. 이러한 설명에서 사용되는 용어들은 이 문서에서 사용하고 있는 표준 사용 방식과 용례가 다를 수 있습니다. (설명을 위해서 사용되는 단어들 중 iCalendar 포맷에서 사용하는 단어랑 겹치는게 있는데, 설명에서 쓰일때는 의미가 달라질 수 있다는 뜻인 것 같다.) 이 문서에서는 캘린더링 및 스케줄링 모델, 핵심 객체(본 메모), 또는 상호운용 프로토콜(2446bis)의 요소를 참조하기 위해 특정 형식 규칙이 사용되었습니다.
- Calendaring, Scheduling 에서의 역할은 각 단어의 첫 글자가 대문자인 따옴표로 묶인 문자열로 표현됩니다. 예를 들어, “Organizer”는 [2446bis]에서 정의된 스케줄링 프로토콜 내 “Calendar User”의 역할을 나타냅니다.
- 이 문서에서 정의된 캘린더의 구성 요소는 대문자로 된 따옴표로 참조됩니다. 모든 캘린더 구성요소는 "V"로 시작합니다. 예를 들어 "VEVENT" 는 이벤트 캘린더 구성요소를 나타냅니다. "VTODO" 는 할일(todo) 캘린더 구성요소를 나타냅니다. "VJOURNAL" 은 일지를 나타냅니다.
- iTIP [2446bis]에서 정의된 스케줄링 메서드는 대문자로 된 따옴표 문자열로 표현됩니다. 예를 들어 "REQUEST" 는 스케쥴링 캘린더 구성요소를 생성하거나 수정하는 매서드를 의미합니다. "REPLY" 는 요청을 수신한 사용자가 해당 캘린더 구성 요소의 "Organizer" 에게 자신의 상태를 업데이트하는 메서드를 나타냅니다.
- 이 문서에서 사용된 속성(Property)은 대문자로 된 따옴표 문자열에 "property" 라는 단어를 붙여서 표현합니다. 예를 들어 "ATTENDEE" property 는 캘린더 사용자(Calendar user)의 캘린더 주소를 전달하는데 사용되는 iCalendar 속성을 의미합니다.
- 이 메모에서 정의된 속성 파라미터(Property Parameter)는 소문자로 된 따옴표 문자열에 "paramter" 라는 단어를 붙여서 표현합니다. 예를 들어 “value” parameter는 속성 값의 기본 type을 재정의하는 데 사용되는 iCalendar 속성 매개변수를 의미합니다.
- 이 메모에서 정의된 열거형 값(Enumerated Values)은 대문자로 된 텍스트로 참조되며, 단독으로 또는 “value”라는 단어와 함께 사용됩니다. 예를 들어 “MINUTELY” value는 “RECUR” 값 유형의 “FREQ” 구성 요소와 함께 사용되어 1분 이상의 간격으로 반복되는 구성 요소를 지정합니다.
정리
- "Xxxx" : 역할
- "XXX" : iCalendar 에서 정의한 캘린더 구성 요소 이름
- "XXX" : iTIP 에서 정의한 스케줄링 메서드 이름
- "XXX" property : 속성
- "xxx" parameter : 속성 파라미터
- "XXX" value : 열거형 값
연관 문서
이 문서에 나온 스펙 구현자는 이 문서와 함께 Internet Calendaring, Scheduling 표준을 위한 프레임워크를 구성하는 다른 문서에도 친숙함을 가질 필요가 있습니다. 이 문서는 객체, value type, 속성, 속성 파라미터들의 핵심 명세를 다룹니다.
- iTIP 2446bis 은 다른 구현체들간의 상호 운영성 프로토콜을 명세하고 있습니다.
- iCalendar Message-Based Interoperability Protocol (iMIP) 2447bis 은 인터넷 이메일 바인딩을 명세합니다.
이 문서에서는 다른 문서에서 다온 개념이나 스펙을 다시 설명하지 않습니다. 가능하면 해당 개념이나 스펙이 설명된 문서를 참조할 수 있도록 링크를 남겨둡니다.