SyncML(Synchronization Markup Language)とは
SyncML(Synchronization Markup Language)は、異なるプラットフォーム間でデータを同期するための、XMLを基盤としたオープンな標準規格でした。
2000年12月17日にバージョン1.0がリリースされ、その後
2002年2月26日にバージョン1.1がリリースされました。
このプロジェクトは現在、
オープン・モバイル・アライアンス(OMA)の一部として、データ同期(Data Synchronization)プロジェクトとデバイス管理(Device Management)プロジェクトに引き継がれています。
SyncMLの主な目的は、当時ベンダーやアプリケーション、オペレーティングシステムに特化していた既存のデータ同期ソリューションに代わる、オープンな標準規格を提供することにありました。
SyncMLの動作
SyncMLは、要求と応答のコマンドを交換することでデータ同期を実現します。以下に、その基本的な流れを示します。
1.
開始: 携帯機器が`Alert`コマンドを送信し、更新のみの同期を開始したいことを伝えます。
2.
応答: コンピュータは`Status`コマンドで要求を受け入れる応答をします。
3.
データ送信: 携帯機器が1つ以上の`Sync`コマンドを送信します。各`Sync`コマンドには、`Add`サブコマンドで電話帳エントリなどの追加項目が含まれます。エントリ数が多い場合は、`
`タグは含まれません。
4.
継続または完了: `
`タグが含まれていない場合、コンピュータは適切な`Alert`メッセージで続行を要求し、携帯機器は別の項目を送信します。もしくは、コンピュータは`Status`コマンドですべてのデータを受信したことを確認します。
これらの`Alert`、`Sync`、`Status`などのコマンドは、メッセージにグループ化されます。各メッセージとその中の各コマンドには識別子があり、`MsgID`、`CmdID`のペアによってコマンドが一意に識別されます。`Status`コマンドなどの応答には、コマンドを識別するペアが続きます。
メッセージの先頭には、トランザクションに関するさまざまなデータを含むヘッダーがあります。たとえば、更新同期を開始するための`Alert`コマンドを含むメッセージの例は次のようになります。コンピュータからの応答は、次のようなXMLドキュメントになります(説明のためにコメントが追加されています)。
その後のトランザクションでは、`Sync`コマンドを含む携帯機器からのメッセージが続行されます。
この例は、携帯機器がすべてのデータをコンピュータに送信し、その逆は何も送信しない更新を示しています。`Alert`コマンドのさまざまなコードを使用して、他の種類の同期も開始できます。たとえば、「双方向同期」では、最後の同期からの変更のみがコンピュータに送信されます。
同期の喪失検出
`Last`タグと`Next`タグは、同期が失われる可能性の追跡に使用されます。`Last`は、各デバイスで測定された、同期の最後の操作の時刻を表します。たとえば、携帯機器側では、時間の順序を表す単調増加の番号(1、2、3、...)を使ったり、コンピュータ側では`20140112T213401Z`のような文字列を使ったりします。`Next`は現在の時刻を表し、`Last`と同じ書式です。
このタイミングで保存されたデータと、次の同期の際に`Last`との違いがある場合は、同期が失われていることを示します。同期の喪失を検出すると、適切なアクションを実行して、デバイスを同期状態に戻します。必要に応じてすべてのデータを送信することもあります。
`Anchor`は同期の喪失を検出するためにのみ使用され、送信されるデータを示すものではありません。同期が失われた場合を除いて、通常の同期では、各デバイスは最後の同期以降のすべての変更を送信します。
関連項目
CalDAV
CardDAV
iCalendar
外部リンク
OMA Technical Section - Affiliates - SyncML
*
Sync4j: オープン・ソースのSyncML実装