Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume II/3-1
3-1 個人データのやりとりについて
個人データのやりとりは、通信メディアを利用した情報交換を含みます。Palm OS PDI ライブラリは、標準的な vObject(vCard・vCal 標準によってフォーマットされたデータを含む)を使用した情報の交換を容易にします。
vObject 標準は versit コンソーシアムとして知られる団体がメンテナンスしています。この団体は多くの企業や研究所に所属する人々で構成されています。PDI 標準についての最良の情報は、コンソーシアムの Web サイト(http://www.imc.org/pdi/)で見つけることができます。
これらの標準は、名刺やカレンダー情報などの個人データを交換しようとする多くのコンピュータやハンドヘルドデバイスでよく使われます。
PDI ライブラリは入力ストリームから vObject を読み取るために PdiReaderType オブジェクトを提供し、出力ストリームにvObject を書き込むために PdiWriterType オブジェクトを提供します。入力ストリームと出力ストリームは、多くのデータソースと関連づけることができます。
vObject について
このセクションでは、 vObject 標準の簡単な概要を説明します。vObject 形式で一般的なのは、vCard と vCal です。
- vCard は仮想の名刺情報を電子的に交換するために使用されます。各 vCard には、個人的またはビジネスの多様な個人情報(名前・住所・電話番号など)を含めることができます。
- vCals は仮想のカレンダー情報やスケジュール情報を電子的に交換するために使用されます。各 vCal には、以下のものが含まれます。
- vEvent オブジェクト。これは、カレンダー上の予定された時間を表します。
- vTodo オブジェクト。これは、行動項目や予約を定義します。
vObject 構造体の概要
このセクションでは、vCard や vCal 標準を含む vObject 標準について、簡単に概要を説明します。各 vObject 標準は、同一の基本的な組織構造を提供します。
- 各 vObject は、一つ以上のプロパティ定義のコレクションです。
- 各プロパティ定義は、名前・値・プロパティパラメータ定義のコレクション(オプション)を含みます。
- 各プロパティパラメータ定義は、名前と値を含みます。各パラメータ値は追加情報とともにプロパティ定義を制限します。
- プロパティ値は、複数の値を格納するために構造化されることができます。典型的に、値はカンマかセミコロンによって連結されます。
vObject 標準によって、開発者がカスタム拡張子を追加することができます。PdiReaderType オブジェクトを含み標準に対応している全ての vObject リーダは、これらの拡張子を読み取ることができます。しかし全てのリーダがそれらのを含む情報に反応できるわけではありません。
各プロパティは以下の文法に従います。
PropertyName [';' Parameters] ':' PropertyValue
プロパティとパラメータ名は大文字と小文字を区別します。
Listing 3.1 は典型的な vCard 定義です。
Listing 3.1 vCard 定義の例
BEGIN:VCARD VERSION:2.1 N:Smith, John;M.;Mr.; Esq. TEL;WORK;VOICE; MSG:+1 (408) 555-1234 TEL;CELL:+1 (408) 555-4321 TEL;WORK;FAX:+1 (408) 555-9876 ADR;WORK;PARCEL;POSTAL;DOM:Suite 101;1 Central St.;Any Town;NC;28654 END:VCARD
Listing 3.1 の各行は、プロパティ定義です。ただし最後から2行目だけは例外で、 ADR プロパティ定義の続きであり、空白(white space)で始まっています。各プロパティ定義は CR/LF で分割されます。
BEGIN、VERSION、END の3行は単純なプロパティ定義の例です。
N(Name)プロパティは構造化された値を持っています。名前の要素がセミコロンで区切られています。
各 TEL(Telephone)プロパティはある種の電話番号を定義するパラメータを持っています。
ADR(Address)プロパティはパラメータと構造化された値を持っています。
- 注
- vObject の仕様は、折りたたまれた(folded)長い行のテキストを許可しています。これは、Listing 3.1 の最後から2行目に書かれているように、プロパティ定義のどこに空白を置いてもその空白の後にCR/LFを挿入することができる、ということを意味します。vObject リーダが空白に続くCR/LFを見つけたとき、テキストは折りたたまれない(unfold)一つの長い行に戻されます。
vObjectのグルーピング
単独の vObject データストリームの中で、複数の vObject を指定することができます。また、vObject をプロパティの値として指定することもできます。例えば、vCard の ADR プロパティの値として、vCard を含めることができます。
プロパティのグルーピング
vObject の中で関連のあるプロパティのグループに、名前を指定することができます。名前は単一の文字で、グループ内の各プロパティにプレフィックスとして使用します。
この仕組の使用法の一つは、あるプロパティを説明するコメントのグループ化です。例えば、以下の書き方は G という名前のグループを作成します。このグループは vCard の家庭用電話(home telephone)プロパティとコメントプロパティを含みます。
G.TEL;HOME:+1 (831) 555-1234 G.Note: This is my home office number.
エンコーディング
vObject プロパティのデフォルトエンコーディングは 7 ビットです。ENCODING パラメータを使用することで、このエンコーディングを個人的なプロパティ値で上書きすることができます。BASE64、QUOTED-PRINTABLE、8-BIT、といった様々なエンコーディング値を指定することができます。
キャラクタセット
vObject プロパティのデフォルトのキャラクタセットは ASCII です。CHARSET パラメータを使用することで、このキャラクタセットを個人的なプロパティ値で上書きすることができます。Internet Assigned Numbers Authority (IANA)によって登録されているキャラクタセットはどれでも使用することができます。例えば、ラテン/ヘブライエンコーディングを指定するには、ISO-8859-8 という値を使用します。
更に情報を探す
vObject 仕様の完全な説明は、versit コンソーシアムのウェブサイト(http://www.imc.org/pdi/)を参照して下さい。