Insider's Eye

Google対抗なのか?! Microsoft Sync Frameworkの正体

デジタルアドバンテージ 一色 政彦
2007/11/20

Page1 Page2

 11月5日、米マイクロソフトはスペイン・バルセロナで開催した「Tech・Ed Europe: Developers」で、次の3つの重要な発表を行った。

  1. Visual Studio 2008(英語版)と.NET Framework 3.5(英語版)が今月中(=2007年11月中)に開発完了すること(日本語版は今年末〜翌年1月を予定)
  2. 無償マッシュアップ・ツール「Popfly」用のプロジェクトを作成するためのVisual Studio 2005アドオンである「Popfly Explorer」(アルファ版)の公開
  3. アプリケーションに同期機能を追加するためのフレームワーク「Microsoft Sync Framework」(CTP版)の公開

 本稿では、このうち、3のMicrosoft Sync Framework(以降、Sync Fx)の概要と機能内容について簡単に紹介し、実際に動かしてその挙動やコード内容を確かめる。

 なお、1のVisual Studio 2008(英語版).NET Framework 3.5(英語版)はすでに開発が完了し、それぞれ製造工程に回され(RTM:Release To Manufacturing)、昨日(19日)から本日にかけて(Team SystemやExpress Editionも含めて)MSDNサブスクライバなどのWeb上で提供(RTW:Release To Web)され始めた。

Sync Fxとは何か? その目的。Google Gearsとの比較

 そもそもSync Fx(開発コード名:Ibiza)とは何なのか? これは、“Sync”という言葉が示すとおり、アプリケーションに「同期(Synchronization)」機能を付加するためのフレームワークである。ここでいう同期とは「コンピュータ間や、ドライブ間、フォルダ間などで、データ内容(=ファイルやデータベースのデータなど)を一致させること」を意味する。

 Sync Fxによって、例えばVistaに追加された「オフライン・ファイル」機能と同じようなオフライン機能が通常のアプリケーション内で実現可能になる(参考:「Windows Server Insider:Vistaの地平 第12回 機能性/実用性がさらに強化されたオフライン・ファイル」)。Vistaのオフライン・ファイル機能になぞらえて考えると、社内ネットワークから切断された環境、例えば出先でノート・パソコンを開いているような状況でも、ネットワーク共有フォルダに配置しているファイルにアクセスして読み書きでき(=実際にはローカルに一時保存したキャッシュにアクセスして)、再度社内ネットワークに接続した際に、(そのファイルを)共有フォルダ上のファイルと自動的に「同期」(=差異を検出して差分だけ更新)させることができる。

 今回のSync Fxの提供は、このような利点のある同期機能を「より多くのアプリケーション内で<簡単に>利用できるようにしよう」というわけである。

Sync FxはGoogle Gearsへの対抗なのか?

 Sync Fxはまだ発表されたばかりということもあり、世間でのとらえられ方はまちまちのようだ。例えば@ITでは「NewsInsight:Google Gears対抗か、MSがオフライン・フレームワーク公開」という記事のタイトルが掲載されたが、このようにSync Fxに関するニュース記事などでは「Sync FxはGoogle Gearsへの対抗である」とする論調がよく見られる(見られた)。

 なるほど、Sync Fxは同期機能によりアプリケーションをオフライン実行可能にする。この点だけに着目すると、Sync FxはGoogle Gearsと同等の「オフライン機能」を実現するもののように感じられるかもしれない。だが、この両者はそもそもの目的やテクノロジの方向性が大きく異なる。

 Google Gearsは、「ブラウザ・プラグイン」として機能する「Webアプリケーションをオフラインで利用可能にするためのテクノロジ」である(ちなみにGoogle Gearsはまだベータ版で本番環境では利用できない)。例えば、本来はネットワークにつながっていなければ利用できない「Google Reader」(=RSSリーダー)や「Google Docs」(=文章作成ソフト、表計算ソフトなど)などのWebソリューションを、オフラインでも利用可能にすることが主な利用方法として考えられる。

 一方のSync Fxは、「ランタイムとライブラリ(=APIセット)」で構成される「アプリケーションに同期機能を追加するためのテクノロジ」である。Windowsアプリケーションを中心にさまざまなアプリケーションやデバイス、サービス内で、複数PC間でのファイルの同期や、ローカルと本番SQLサーバのデータベース内容の同期を実現することが主要な目的だ。ブラウザ・プラグインではないため、HTMLコードからSync Fxランタイムを呼び出すような機能は(筆者が見たところ)提供されていない。従って、Google GearsのようにWebソリューションのブラウザ・クライアントをオフライン利用する用途には(現段階では)あまり向いていないといえる。

 このように両者は「似て非なるもの」といえるだろう。

 ここまでで、Sync Fxの姿やポジションはぼんやりとでもイメージしていただけただろうか。次にSync Fxの特徴と機能内容について、手短に説明していこう。

Sync Fxの特徴と基本機能

 Sync Fxの特徴は何といってもその柔軟性にある。

Sync Fxの特徴(柔軟性):同期するデータの種類

 例えば、同期できるデータ(=データ・ストア)の種類が幅広い。現時点で、標準でサポートされるものには次の3つがある。

  • NTFS/FATファイル・システム
  • データベース
  • SSE*1で拡張されたRSS/ATOMフィード
*1 SSE(Simple Sharing Extensions:単純共有拡張)とは、RSSやATOMフィードで双方向の同期を可能にするためのフォーマット拡張のことである。このSSEにより、例えば社内で、手軽にフィード経由でスケジュールを共有することなどが可能になる。ちなみに、拡張されたRSSは「RSS=Really Simple Syndication」(=本当に簡単な記事配信)にもじられて「Really Simple Sharing」(=本当に簡単なデータ共有)と呼ばれることもある。

 通常、このようにさまざまなデータの種類があれば、それぞれの同期手法は異なるはずだが、Sync Fxでは、そのような手法の違いを開発者が極力意識せずに、同様の開発手順で同期機能を実装できるように設計されている。

 具体的には、それぞれのデータの種類に対応する「同期サービス(Sync Services)」を提供することで、このようなデータの種類の差異を埋める。現時点では、先ほど挙げたデータの種類に対応する同期サービスが標準で提供されている。

  • Sync Services for File Systems(NTFS/FATファイル・システム用)
  • Sync Services for ADO.NET(データベース用)
  • Sync Services for SSE(SSEで拡張されたRSS/ATOMフィード用)

 またSync Fxでは、このように同期サービスという形のコンポーネント指向で設計されているおかげで、必要とあらば、任意のデータ・ストアに対応する独自(カスタム)の同期サービスを実装できるようになっている。このため、同期可能なデータの種類には実質的に制限がないといえるだろう。

Sync Fxの特徴(柔軟性):同期対象の種類

 Sync Fxの柔軟性は、データの種類だけにとどまらない。同期対象の種類にも幅広く対応している。具体的には主に次の3種類の同期対象がサポートされている。

  • アプリケーション(Windowsアプリケーションなど)
  • サービス(Webサービスなど)
  • デバイス(PDAなど)

 つまり、単に「ネットワーク内の各クライアント・コンピュータ間でWindowsアプリケーションのデータを同期する」という利用法のみならず、「PDAなどのモバイル・デバイスと同期したり」「バックエンドにデータベースを置く超大規模な分散Webシステムと同期したり」「リムーバブルUSBドライブ上のファイル・システムと同期したり」と、さまざまな種類の対象とデータを同期できるのだ。ちなみにマイクロソフトは、このようにさまざまな対象と同期可能なシステムを構成することを、「同期エコシステム」(Sync Ecosystem。=同期共生システム)と呼んでいる。

 以上、ざっとSync Fxの代表的な特徴を紹介した。

 さて以下では、論より証拠、実際のインストール手順から実行例、プログラム・コードの内容などを示すことにしよう。


 INDEX
  [Insider's Eye]Google対抗なのか?! Microsoft Sync Frameworkの正体
  1. Sync Fxとは何か? その特徴と基本機能
    2. Sync Fxを試す:インストール、サンプルの実行/ソース内容の参照

 Insider's Eye


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間