Yahoo!検索とLiveガジェットのマッシュアップ:Windows Liveが魅せる次世代マッシュアップ(5/5 ページ)
AJAXを追い風に、さまざまなサービスをWeb上で融合させるマッシュアップがはやっている。MSのLiveガジェットは、さまざまなWeb APIとつなぐことができる柔軟さを持っている。
RSSはXMLデータであるため、ネットワークリクエストオブジェクトを使ってデータを取得するという部分は、ここまで説明してきた内容と違わない。
しかし、実際にRSSを取得する場合には、次のように、「proxy:〜取得するアイテム数」を指定することになる。
リスト7:Start.Parser.ParseRssResponseメソッドを使ったRSSのパース例。オルタナティブ・ブログのRSSを利用している
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
そして受信部となるOnXmlDataRecivedメソッドでは、受け取ったネットワークレスポンスオブジェクトを、そのままStart.Parser.ParseRssResponseメソッドへと引き渡す。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この戻り値となるm_feed変数が指すオブジェクトは、RSSフィードに含まれるチャンネルをchannelsコレクションに保持している。そこで次のようにすれば、先頭のチャンネルを取得できる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
チャンネルオブジェクトのitemsコレクションには、それぞれのRSSフィードの項目が格納されている。そこで、次のようにループ展開すれば、RSSフィードを取得できる。linkプロパティがそのコンテンツへのリンク、titleプロパティがタイトルだ。
ほかにもdescriptionプロパティやsourceプロパティなどがあるようだ。具体的にはデバッガを使って、このオブジェクトが備えるプロパティを調べてみるとよいだろう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この実行結果は、画面6のようになる。
今回説明してきたように、Liveガジェットの内部にコンテンツを表示する方法は、結局のところDOM操作に帰着する。
ネットワークレスポンスオブジェクトを使って外部コンテンツを取得する場合であっても、最終的には、そのデータをパースして、DOM操作で埋め込んでいく処理をすることになるのだ。
現状のSDKドキュメントでは、ネットワークレスポンスオブジェクトやRSS関連のオブジェクトの解説が十分ではなく、試しながら使っていくというのが正直なところ。しかし、この辺りの問題は、LiveガジェットSDKが正式版になることで、いずれ解決されていくだろう。
ところで、今回作成したガジェットは、どれもが、ガジェットが読み込まれるときに、何らかのコンテンツを表示するというものであった。しかし実際には、このように静的なコンテンツを表示するのではなく、動的にコンテンツを書き換えるケースのほうが多いだろう。
例えば、Webサービスを使った検索の例ならば、テキストボックスを用意して、検索語句が入力されたときにその検索語句で検索できるようにできるようにすべきであり、RSSフィードの表示例ならば、定期的に最新の情報を表示し直すことになるだろう。
そのためには、ユーザー操作やタイマーなどによって、コンテンツの内容を変化させていく仕組みが必要になる。
次回は、Liveガジェットにおけるイベント処理について説明する予定だ。
なお、記事の最初でも触れたように、オンライン・ムックPlus「Windows Liveが魅せる次世代マッシュアップ」では、“Liveガジェットのアイデア募集”を行っている。読者から寄せられたアイデアは、本特集上で優秀作やアイデア傾向などを紹介していく予定だ(2006年3月まで募集)。
関連記事
- 今後10年を支えるWindowsアプリの条件
Vistaの登場で知名度が上がるであろうWindowsガジェット。その中でもWindows Liveは、オンラインOSとしてMSの新たなプラットフォームとして位置付けられた。この記事では、Webページ作成の延長先上と考えられるそのテクニックを見せる。 - いちばん近い“Liveガジェット”マスターへの道
MSがオンラインのキラーサービスとして位置付ける「Windows Live」。そのサービスの中核となるガジェットは、Vistaで本格化するサイドバーガジェットにも関連するトピックだ。 - MSが提供する新たな“オンラインOS”
- Vistaで開花する「Windowsガジェット」とは?
Copyright © ITmedia, Inc. All Rights Reserved.