前回 はLive Meshサービスを紹介しました。今回からはLive Servicesを利用した開発のためのLive Frameworkについて紹介していきます。
Live Services
2008年にマイクロソフトは、開発者向けのカンファレンス「Microsoft Professional Developers Conference 2008」( PDC 2008)においてインターネットベースのサービスプラットフォーム「Azureサービスプラットフォーム」を発表しました。このAzureサービスプラットフォームの構成要素としてサービス基盤となる「Windows Azure」があり、その上の要素のひとつとして「Live Services」があります(図1 ) 。
図1 Azureサービスプラットフォーム
図1 はAzureサービス関連の話題において頻繁に目にする構成図ではないかと思います。マイクロソフトが提唱する「ソフトウェア+サービス」を実現するための技術基盤がAzureサービスプラットフォームで、そのためのOSがWindows Azureです。Windows AzureはクラウドOSとも呼ばれています。いずれもマイクロソフトのデータセンターで稼働しています。
さて、AzureサービスプラットフォームのビルディングブロックであるLive Servicesは、Windows Liveサービスにアクセスする手段を提供します。Liveサービスが扱うユーザーデータとアプリケーションリソースにアクセスするための手段と考えるとよいかと思います。前回 紹介したLive Meshサービスを包含し、多様なデバイス間での文書や写真などのデータを含むさまざまなリソースの同期・共有の仕組みも利用できます。このLive Servicesにアクセスするための開発環境としてLive Framework が提供されています。
Live Framework
Live Frameworkは、Live Servicesを利用するための統一的な手法を提供しています。そして、さまざまなプラットフォーム、プログラミング言語、アプリケーション、デバイスからの利用が想定されています。今回はLive Frameworkの概要として次の3点について紹介します。
オープンなプロトコルベースのプログラミングモデル
リソース指向のプログラミングモデル
クラウド・クライアント共通のプログラミングモデル
本連載の内容はCTP(Community Technology Preview)の内容に基づいています。紹介する内容は変更される可能性があります。
オープンなプロトコルベースのプログラミングモデル
既に少し述べたように、Live FrameworkはOSに依存せず、プログラミング言語に依存せず、ランタイムやライブラリーなどにも依存していません。依存しているのは次のふたつのみです。
この標準的なプロトコルとフォーマットに対応していれば、多様なプラットフォーム・デバイス等からLive Frameworkの利用が可能です。このシンプルな仕様は、Live FrameworkのというよりもAzureプラットフォームサービスの思想と言えるでしょう。
Live FrameworkはAtomPubやFeedSync、JSON、POX(Plain Old XML) 、RSS、Binary XMLといった標準的な仕様を用いた利用が想定されていますが、.NETやSilverlightの開発者にはより容易に利用可能なAPIおよび環境が用意されています。
リソース指向プログラミングモデル
Live Frameworkはリソース指向のプログラミングモデルを提供しており、すべてのものをリソースとして扱います。それでは、Live Frameworkで扱うリソースとは何でしょうか。まず思いつくのは
といったところでしょうか。文書や写真などのデータや、PCや携帯電話などのデバイスですね。
Live Frameworkで扱うデバイスとは、PC・Macや携帯電話に限らず、ゲーム機・プリンタ・カメラなどの多様なハードウェアも想定しています。さらにデバイスをコンピューティングとストレージ機能を持つものとし、Webサービスもデバイスの一種としています。これらをクラウド デバイスと称しています。
少し脱線しましたが、データやデバイス以外にもリソースとして
アプリケーション
ユーザー情報
更新情報
スクリプト
などもリソースとして扱います。具体的なリソースやその構成と関係は後の連載で扱いたいと思います。
これらのリソースはすべてURI形式で表現することが可能になっています。当然ながらHTTPとの親和性も高く、HTTPメソッドによりすべてのリソースに対してアクセスが可能です。
クラウド・クライアント共通のプログラミングモデル
Webアプリケーションとクライアントサイドのアプリケーションとで同じデータを扱う場合、PCとPCだけでなく、Macや携帯電話など多様なデバイス間でデータを扱う場合を考えてみてください。これらを実現するアプリケーションの作成は煩雑であると容易に想像がつきます。異なるアーキテクチャー上で作成し、データの同期・共有、通信、状態の管理方法など、さまざまな問題を解決しなければなりません。
Live Frameworkは、データのキャシュ・同期をアプリケーションの代わりに行うLive Operating Environment(LOE) というコンポーネントを用意しています。また、LOEはアプリケーションに対してRESTfulな共通のプログラミングモデルを提供します。Live Frameworkを利用したすべてのアプリケーションはLOEとやり取りすることによってLiveサービスへアクセスし、各種リソースの操作を行います。図2 にLOEとアプリケーションの関係を示します。
図2 クラウドLive Operating Environment
各種デバイス上にあるアプリケーションはHTTP(S)によりクラウド上のLOEにアクセスします。プラットフォームやプログラミング言語は問いません。LOEはhttp://user.windows.net/[1] というURIを持っているので、アプリケーションはこのアドレスに対し共通のアクセス方法でやり取りを行います。これはクラウド上にあるWebアプリケーションも同じです。
実はLOEには2種類あります。今 示したものはクラウド上のLOEでした。もうひとつはクライアントサイドのLOEです(図3 ) 。デバイスにLOEがインストールされている場合、デバイス上のアプリケーションはクラウドのときと同様の方法でローカルのLOEと対話し、各リソースへのアクセスが可能です。ネットワークに接続されていない場合、LOEがデータのキャッシングや同期処理を行い、またほかのデバイスが接続されている場合、クラウドLOEを介さずP2Pによる通信も行います。
図3 クライアントLive Operating Environment
クライアントサイドのLOEは、WindowsのCTPバージョンが現在提供されており、MacとWindows MobileのLOEの提供が今後予定されています。
アプリケーションはクラウドとクライアントサイドのLOEのURIのみ意識さえすれば、オンライン・オフライン関係なく同じ方法によりリソースのアクセスが可能になり、キャシュ・同期処理、デバイス間通信など煩雑な処理をLOEが行ってくれます。また、LOEとの対話はHTTPベースの統一されたシンプルな方法のため、多くの場合プラットフォームや言語等を問わずに利用できると言えるでしょう。
まとめ
以上、簡単にではありますが、Live Frameworkの特徴を3点確認しました。
オープンそしてシンプルな仕様
すべてはリソース
クラウド・クライアント一貫したプログラミングモデル
Live Frameworkの特徴はこれだけではありません。さらに、これらの特徴がもたらす開発者へのメリットなど、Live Frameworkを利用した開発と併せて今後本連載で紹介していく予定です。