SyncML

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実装

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。