使ってみよう! Live Framework

第5回 .NET Kit(2)

この記事を読むのに必要な時間:およそ 5 分

はじめに

前回に引き続き,Live Frameworkの.NET Framework用ライブラリ.NET Kitを使用してLiveサービスへアクセスします。前回はMesh Objectの取得や作成などを行いました。今回はMesh Objectなどが更新された場合にその通知を受け取る方法,データ同期時の衝突と解決方法を中心に紹介します。

本記事中のコードは前回同様VB.NETを使用します。コードの内容は動作の確認程度ですのでVisual Studioのプロジェクトは前回のものに書き加える形で問題ありません。

デバイスの取得

最初にMeshに接続されているデバイス一覧を取得してみましょう。Mesh上のデバイスは,これまでに本連載で何度か登場したDevice Ringからも確認できます図1)。

図1 Device Ring

図1 Device Ring

デバイスの取得は,前回のMesh Objectと同様の方法で参照することができます。リソースモデル(一部)を確認すると,Meshサービスの下,Mesh Objectと同じ階層にDeviceがあります図2)。

図2 リソースモデル:Device

図2 リソースモデル:Device

コードはLINQを使用して次のように書くことができます。コードでは各デバイスの名前を表示しています。

' Imports Microsoft.LiveFX.Client
' Imports System.Net
Dim loe = New LiveOperatingEnvironment
loe.Connect(New NetworkCredential("userid", "password"), New LiveItemAccessOptions(True))

' デバイス一覧表示
For Each d In loe.Mesh.Devices.Entries
    Console.WriteLine(d.Resource.Title)
Next

クラウド上のLive Operating Environment(LOE)(http://user-ctp.windows.net/)ではなく,クライアント上のLOE(http://localhost:2048/)に接続している場合,アプリケーションが実行されているデバイスを取得するには次のようになります。

If loe.IsLocalConnection Then
    ' クライアント上のLOEに接続している場合

    ' デバイスの取得
    Dim device = loe.Mesh.LocalDevice
End If

クラウド上のLOEに接続している場合は,loe.Mesh.LocalDeviceの値はNothing(null)です。

変更の通知を受信

Live Frameworkでは,Mesh ObjectやData Feed・Data Entryなどのコレクションが変更されたとき,イベントとしてその変更を知ることができます。これは,同一のまたは複数のアプリケーション間でデータの共有に大いに役立つでしょう。

Mapping

変更通知を受け取るには,同期する単位であるMesh Objectに対してどのデバイスと同期するのかを個別に設定しておく必要があります。ただし,通知を受け取れないのはクライアント上のLOEと接続する場合に限ります。つまり同期対象となっていないデバイス上のクライアントLOEに接続しても,変更通知は受け取れないということです。

Mesh Objectがどのデバイスと同期対象として関連付けられているかは,Mappingというオブジェクトを使用します。リソースモデルは図3の通りです。

図3 リソースモデル:Mapping

図3 リソースモデル:Mapping

ひとつのMesh ObjectはMappingのコレクションを参照しています。ひとつのMappingには,ひとつのデバイス情報を持っています。また,MappingもData Entryなどと同様にリソースのひとつであり,リソースとしての基本情報を持っています。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入