.NET Kit
今回からは実際にコードを書いてLive Frameworkの世界に入っていきます。Live Frameworkは特定のプログラミング言語やOSに依存してせんが、
開発ではLive Framework SDK内の.NET Kitを使用します。ダウンロードして使用してください。Live Framework CTPの利用についての各種登録作業は前回紹介していますので、
プロジェクトの作成
本連載ではVisual Studio 2008を使用します。言語はVB.
まずはWindows用のプロジェクトを作成します。今回作成するプロジェクトの種類はWPF、
プロジェクトを作成したらLive Frameworkのライブラリの参照を追加します。ソリューションエクスプローラのプロジェクト名を右クリックし、

Meshへ接続
さっそくMeshサービスへアクセスしてみましょう。アクセスはLiveサービスへのアクセスを仲介しデータの同期・
LiveOperatingEnvironmentクラスをインスタンス化してConnectメソッドを呼びます。コードは次のようになります。
' Imports Microsoft.LiveFX.Client
' Imports System.Net
Dim loe = New LiveOperatingEnvironment
loe.Connect(New NetworkCredential("userid", "password"), New LiveItemAccessOptions(True))
クラウド上のLOEへの接続には認証が必要です。useridとpasswordにはWindows Live IDアカウント
上記の場合、
クラウド上のLOEへ接続する場合は時間を多少要します。そのため非同期で処理するメソッドも用意されています
Dim serviceUrl = "https://user-ctp.windows.net"
Dim token = New NetworkCredential("userid", "password", serviceUrl).GetWindowsLiveAuthenticationToken()
Dim accessOptions = New LiveItemAccessOptions(True)
Dim loe = New LiveOperatingEnvironment
loe.Connect(token, AuthenticationTokenType.UserToken, New Uri(serviceUrl), accessOptions)
リソースモデル
ここで今回登場するLive Frameworkのリソースモデルについて紹介します。図2はLive Frameworkのリソースモデルの一部分を示したものです。Live Frameworkで扱うさまざまなリソースは、

Data Entry
Data Entryは写真や文書などひとつのデータを表す要素です。Live Meshサービスでは主にData Entryはファイルということになりますが、
Data Feed
Data Entryのコレクションを指し示すのがData Feedです。コレクション内のData Entryの種類は特に決まりはなく、
Mesh Object
アプリケーション定義したデータのコンテナとなるのがMesh Objectと呼ばれている要素です。このMesh ObjectがMesh上で同期・
これら3個のリソースを含むすべてのリソースは、
Mesh Objectの上の階層にはMeshサービスを表しMesh Objectのコレクションを持つMeshがあり、
Mesh Objectの参照
それでは、

コードはLiveOperatingEnvironmentオブジェクトのConnectメソッドを実行した後のものです。Mesh内にあるMesh Objectの名前を表示します。
' Imports Microsoft.LiveFX.Client
' Imports Microsoft.LiveFX.ResourceModel
For Each mo As MeshObject In loe.Mesh.MeshObjects.Entries
Console.WriteLine(mo.Resource.Title)
Next
実行結果は、
Crowd Vote Mesh Lists Corkboard Sample folder
ここでコードに注目してください。MeshObjectを取得するのにloe.
同様に、
For Each mo As MeshObject In loe.Mesh.MeshObjects.Entries
Console.WriteLine(mo.Resource.Title)
For Each df As DataFeed In mo.DataFeeds.Entries
Console.WriteLine(vbTab & df.Resource.Title)
For Each de As DataEntry In df.DataEntries.Entries
Console.WriteLine(vbTab & vbTab & de.Resource.Title)
Next
Next
Next
実行結果は以下のようになりました。皆さんの環境でもアクセスしたMesh内の情報が取得できたでしょうか。
Crowd Vote feed1 DataEntryResource schema1 Mesh Lists feed1 DataEntryResource schema1 DataEntryResource DataEntryResource Corkboard feed1 Note 1 Note 2 Sample folder LiveMeshFiles photo.png Sub Folder foo.png
ちなみに、
LOEへ接続時に
loe.Mesh.MeshObjects.Load() ' ← 追加
For Each mo As MeshObject In loe.Mesh.MeshObjects.Entries
Console.WriteLine(mo.Resource.Title)
mo.DataFeeds.Load() ' ← 追加
For Each df As DataFeed In mo.DataFeeds.Entries
Console.WriteLine(vbTab & df.Resource.Title)
df.DataEntries.Load() ' ← 追加
For Each de As DataEntry In df.DataEntries.Entries
Console.WriteLine(vbTab & vbTab & de.Resource.Title)
Next
Next
Next
Mesh Objectの追加
次はMesh ObjectをMeshへ追加してみましょう。ここではLive Meshフォルダとファイルを追加します。少し変更を加えるだけでアプリケーション独自のデータとしてMesh Objectを追加するようにもできます。
Live Meshフォルダの作成
Live Meshフォルダ、
' Mesh Object の作成
Dim folder = New MeshObject
folder.Resource.Title = "新しいフォルダ"
folder.Resource.Type = "LiveMeshFolder"
' Mesh Object の追加
loe.Mesh.MeshObjects.Add(folder)
ここで、
作成したMesh ObjectはMeshObjects.
これだけではまだLive Meshフォルダとしては認識されません。Mesh Object内に特定のData Feedを追加する必要があります。Mesh Objectに続いてData Feedを追加しましょう。コードは以下の通りです。
' Data Feed の作成
Dim fileSystem = New DataFeed
fileSystem.Resource.Title = "LiveMeshFiles"
fileSystem.Resource.Type = "LiveMeshFiles"
fileSystem.Resource.HandlerType = "FileSystem"
' DataFeed の追加
folder.DataFeeds.Add(fileSystem)
Live Meshフォルダとして認識されるためには、
また新しく登場したResource.
最後に、
以上までを実行するとLive Meshフォルダが作成されます。Live Desktopを確認してみましょう。新しいフォルダが作成されたでしょうか

ファイルの追加
作成したフォルダにファイル、
Dim fs = New System.IO.FileStream("C:\Users\UserName\Pictures\photo.png", IO.FileMode.Open)
fileSystem.DataEntries.Add(fs, "photo.png", "image/png")
ファイルなどのストリームデータを追加する場合、
実行後Live Desktop内のフォルダを確認してみましょう。画像ファイアルが追加されたでしょうか

先に作成したMesh Object参照のコードを再度実行することでもData Entryが追加されていることがわかります。
今回はここまでです。次回もMesh Objectsの操作などの基本事項を紹介し、