使ってみよう! Windows Live SDK/API

第28回Live FrameIt SDK ─⁠─ 仮想フォトフレームの作成(3)

前回までで仮想フォトフレームアプリケーションは一応完成しました。今回は、実際にアプリケーションの改良はしませんが、より良いアプリケーションに必要な、紹介しきれていなかったLive FrameItの内容についてです。

フィードIDの入力

前回まではLive FrameItにデバイスを登録してからユーザーのコレクションの画像を表示していました。この登録手続きを省いて画像を表示することも可能です。今回はまずこの内容を紹介します。

コレクションの実体はRSSフィードです。前回の内容、Live FrameItのWebサービスを通して得られるフィードのURLは以下のような書式でした。

http://rss.frameit.com/GenRss/genrss.ashx?id=<feedid>&pin=<secretnumber>

Live FrameItのWebサイト上でユーザー自身もコレクションのURLをコレクションの設定画面から知ることができます図1⁠。このフィードのURLは以下の書式になっています。

http://<feedid>.<secretnumber>.frameit.com
図1 コレクションの設定
図1 コレクションの設定

いずれのURLも次のふたつの値を持っています。

  • フィードID
  • 暗証番号(シークレットナンバー)

上記URL書式の<feedid>と<secretnumber>が、フィードIDと暗証番号に対応しています。同じ値を設定すると同じRSSフィードが得られます。暗証番号はユーザーが設定している場合のみ使用されるものです[1]⁠。

このフィードIDと暗証番号をユーザーに入力するUIを提供することでデバイスはフィードURLを構成し、コレクション画像をデバイスの登録なしで取得・表示できます。

フィードのカスタマイズ

続いてフィードのカスタマイズ方法をみてみましょう。Webサービスまたは今回のようにフィードIDの入力から得られたフィードURLをそのまま利用するのではなく、フィードURLにパラメータを付加することによってデバイス用にカスタマイズしたフィードを取得する方法が提供されています。

追加できるパラメータとフィードURLの書式を以下に示します。

http://<feedid>.<secretnumber>.frameit.com/?s=<size>&th=<theme>&rt=<RSSType>

http://rss.frameit.com/GenRss/genrss.ashxで始まるURLに対しても同様のパラメータを指定できます。

解像度の指定

最初のsパラメータを指定するとデバイスの表示領域にあわせた画像の解像度を指定することができます。これはLive FrameItで生成される天気予報やニュースなどの画像に対して有効です。

指定できるパラメータは以下の通りです。

sパラメータ値 内容            
0 640x480
1 800x600
2 1600x900
3 1024x768
4 800x480
5 1280x800
6 480x400

テーマの指定

Live FrameItで生成される天気予報などの画像は、テーマの色を持っています。このテーマをデバイス側からフィード要求時に指定することができます。指定しなかった場合はユーザーが設定していたデフォルトのテーマが使用されます。テーマを指定するにはフィードURLのthパラメータを変更します。指定できる値は次の通りです。

thパラメータ値 内容
0 Red(赤)
1 Brown(茶)
2 Dark gray(濃い灰色)
3 Dark yellow(濃い黄)
4 Pale gray(薄い灰色)
5 Medium green(やや薄い緑)
6 Dark blue(濃い青)
7 Medium blue(やや薄い青)
8 Light blue(薄い青)
9 Pale blue(淡い青)
10 Bright pink(明るいピンク)
11 Dark orange(濃いオレンジ)
12 Bright green(明るい緑)
13 Medium orange(やや薄いオレンジ)
14 Bright blue(明るい青)
15 Pale green(淡い緑)

たとえば、thパラメータに0を指定すると天気予報の画像は図2のようになり、1の場合は図3のようになります。

図2 テーマの色がRedの場合
図2 テーマの色がRedの場合
図3 テーマの色がBrownの場合
図3 テーマの色がBrownの場合

RSSフィード形式の指定

rtパラメータは、取得するRSSフィードの形式を指定できます。

デバイスが表示する画像は、RSSフィード内の各<item>要素内の<description>、<media:content>、<enclosure>要素のどれかを参照し、画像のURLを取得して利用します。

<?xml version="1.0" encoding="utf-8" ?> 
<rss version="2.0" xmlns:frameit="http://www.frameit.live.com/firss/" xmlns:media="http://search.yahoo.com/mrss/">
        <channel>
                <item>
                        ...
                        <description>
                        <![CDATA[ <img src="http://1.image.frameit.com/GenImage/Item.ashx?..." /><br/>東京都 東京
                        ]]> 
                        </description>
                        <enclosure type="image/jpeg" url="http://1.image.frameit.com/GenImage/Item.ashx?..." /> 
                        <media:content type="image/jpeg" width="480" height="400" url="http://1.image.frameit.com/GenImage/Item.ashx?..." /> 
                        ...
                </item>
                <item>
                ...
                </item>
                ...
        </channel>
</rss>

これらの要素うち<description>は画像URLではなくHTMLとしての値が格納されています。残りの<media:content>と<enclosure>要素は同じ画像URLが格納されていて、このふたつがrtパラメータに関する部分です。デバイスは通常どちらかの要素を参照し、片方は必要ありませんので<media:content>と<enclosure>要素のどちらを使用するかを指定することができます。指定しなかった方の要素はフィード取得時に含まれません。

rtパラメータの値とその内容は以下の通りです。

rtパラメータ値 内容
0 <media:content>要素を使用
1 <enclosure>要素を使用

コレクションのトラッキング

フィードURLにパラメータを追加することで、そのコレクションがデバイスからLive FrameItに対して何回 要求され表示されているかトラッキングすることもできます。

http://<feedid>.<secretnumber>.frameit.com/?tr=<trackingID>

trパラメータには10文字以下の任意の英数字を指定します。呼び出し回数を確認するには、http://frameit.live.com/Manage/CollectionTraffic.aspx?id=<trackingID>にアクセスします。

トラッキングは、デバイスの接続確認のトラブルシューティングや、コレクションの参照数をユーザーが知りたい場合に利用します。


以上のフィードのカスタマイズやトラッキングは、デバイスのために用意されているだけでなく、ユーザーが直接URLを編集しコレクションをカスタマイズするためにも利用が想定されています。もしデバイスがフィードURLを直接受け入れるUIを用意している場合はユーザーが指定したパラメータを考慮することも必要です。

また、テーマ等の変更はデバイス側で行えますが、前回に紹介したようにLive FrameIt Webサービスを使用したフィードの取得方法では、表示順などフィードの内容には変更を加えてはいけません。デバイス側で変更を加えずユーザーに画像提示し、フィードで決められたタイミングで新しいフィードを再取得する必要があります。

おわりに

3回に渡りLive FrameIt SDKについて紹介してきました。いかがでしたでしょうか。今回でLive FrameItについてはひとまず終了です。Live FrameItのWeb APIのプロトコルはSOAPを使用しており、Visual Studioなどのツールを使用しないと少し使いづらいかもしれません。しかし、最終的にすることはRSSフィードの取得です。デバイスの登録を省略しRSSフィードの取得だけであれば、ほかの言語やツールでも簡単にでき、マッシュアップなども容易ではないかと思います。これまでにLive FrameItを使用していなかった人はぜひ使用してみてください。

おすすめ記事

記事・ニュース一覧