Windows Phone 8とRoaming

Posted by 技術ブログ by Strawhat.net on Monday, December 3, 2012

Windows Phone 8は、Windows 8と一部のAPIが共通なので、 Windows Phone SDKが公開される前から期待してた機能がありました。 しかし、公開されたAPIリファレンスを見て、 その期待があっという間に崩れ去った…それは、ローミング機能。

Windows 8ストアアプリでは、複数のPC・スレート間でアプリケーションの情報を共有して、 状態を同期させることができます。これはローミング機能と呼ばれて、 例えば、デスクトップPCで読みかけの電子書籍を、外に持ち出したスレートPCで続きを読むってことができる訳です。

このWindows 8ストアアプリのローミング機能は、

:::C#
Windows.Storage.ApplicationData.Current.RoamingSettings.Values[“LastPage”] = 10;

のようにWindows.Storage.ApplicationDataクラスを経由して、 ローミングしたい設定値を登録することで自動的に実行されます。

それで、Windows Phone 8 SDKが公開されて、このApplicationDataクラスが存在するか調べたら…

ApplicationData.RoamingSettings | roamingSettings property (Windows)

APIのサポート対象一覧

おおっ!サポートされている電話機にWindows Phone 8があるではないか!

ところが、本文をよく読むと、Remarksのところに一言こんな記述が。

APIの注意書き

「Windows Phone 8:APIは実装されていません。呼ばれたら例外を投げます」

… orz

サポートされてる電話機だけど、実装してないってのはないですよね…

結局、Windows Phone 8ではローミング機能は使えないと判ったのですが、 冷静に考えるとWindowsストアアプリとWindows Phoneアプリは別物で 相互にローミングできる訳ではないですし、複数のWindows Phone端末を 持っていてその間でローミングしたいって需要はそう大きくないので、 実装されていなくてもおかしくはないのかもしれません。

アプリをWindowsストアアプリとWindows Phoneアプリの両方にリリースして、 相互にアプリケーションの状態を同期させたい需要はあると思いますが、 現時点ではSkyDriveを経由して自前で同期させるしかなさそうです。