今回説明するサンプルの動作例です。

画面1●地震速報アプリケーション
画面1●地震速報アプリケーション
[画像のクリックで拡大表示]

 住んでいる地域での最近の地震の一覧を表示するMySpaceアプリケーションですが,もちろんMySpaceでは,ユーザーの住んでいる地域は保持していても,地震情報は提供していません。これは外部Webサービスが提供している地震情報とのマッシュアップ・アプリなのです。簡単に仕様を説明しましょう。

 今回利用させてもらったのはlivedoorが提供する地震速報データです。このデータはRSSで提供されており,ほぼリアルタイムで更新されています。このような有用なデータが無償提供されていることに感謝しつつ,利用させてもらうことにします。

 この地震速報RSSは例えば以下のような内容となっています。

List1●地震速報RSSの例
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:ldWeather="http://weather.livedoor.com/ns/rss/2.0">
<channel>
<title>地震速報 - livedoor 天気情報</title>
<link>http://weather.livedoor.com/earthquake/?r=rss</link>
<description>livedoor 天気情報が配信する全国の地震速報</description>
<lastBuildDate>Sun, 27 Apr 2008 06:58:20 +0900</lastBuildDate>

<author>livedoor Weather Team.</author>
<language>ja</language>
<category>天気情報</category>
<generator>http://weather.livedoor.com/</generator>
<copyright>Copyright (C) 1996-2008 livedoor Co.,Ltd. All rights reserved.</copyright>
<image>
<title>livedoor 天気情報</title>
<link>http://weather.livedoor.com</link>
<url>http://image.weather.livedoor.com/img/cmn/livedoor.gif</url>
<width>118</width>
<height>26</height>
</image>
<ldWeather:provider name="(株)ハレックス" link="http://www.halex.co.jp/halexbrain/weather/" />
<ldWeather:provider name="日本気象協会" link="http://tenki.jp/" />
<ldWeather:notes link="http://weather.livedoor.com/weather_hacks/forum.html">livedoor 天気情報 Weather Hacks での疑問点などは http://weather.livedoor.com/weather_hacks/forum.html で質問してみましょう!</ldWeather:notes>

<item>
<title>27日02:22 [ 最大震度 ] 震度 1 [ 震源地 ] 沖縄本島近海</title>

<link>http://weather.livedoor.com/earthquake/2008-04-27-02-22.html?r=rss</link>
<category>地震速報</category>
<description>4月27日2時22分、沖縄本島近海を震源とする最大震度1の地震が発生しました。</description>
<ldWeather:earthquake epicenter="沖縄本島近海" maximumintensity="1" date="Sun, 27 Apr 2008 02:22:00 +0900" />
<day>Sunday</day>
<pubDate>Sun, 27 Apr 2008 02:28:11 +0900</pubDate>
</item>

<item>
<title>26日08:41 [ 最大震度 ] 震度 1 [ 震源地 ] 北海道南西沖</title>

<link>http://weather.livedoor.com/earthquake/2008-04-26-08-41.html?r=rss</link>
<category>地震速報</category>
<description>4月26日8時41分、北海道南西沖を震源とする最大震度1の地震が発生しました。</description>
<ldWeather:earthquake epicenter="北海道南西沖" maximumintensity="1" date="Sat, 26 Apr 2008 08:41:00 +0900" />
<day>Saturday</day>
<pubDate>Sat, 26 Apr 2008 08:46:14 +0900</pubDate>
</item>

<item>
<title>26日05:49 [ 最大震度 ] 震度 2 [ 震源地 ] 青森県東方沖</title>

<link>http://weather.livedoor.com/earthquake/2008-04-26-05-49.html?r=rss</link>
<category>地震速報</category>
<description>4月26日5時49分、青森県東方沖を震源とする最大震度2の地震が発生しました。</description>
<ldWeather:earthquake epicenter="青森県東方沖" maximumintensity="2" date="Sat, 26 Apr 2008 05:49:00 +0900" />
<day>Saturday</day>
<pubDate>Sat, 26 Apr 2008 05:54:15 +0900</pubDate>
</item>

</channel>
</rss>

 サンプル・アプリケーションは,RSSの内容からMySpaceユーザーの在住している都道府県の地震一覧を表示します。表示する震度を変更できるようにしています。どのようなコードなのか,お見せしましょう。

List2●サンプル・コード
List2●サンプル・コード (テキストはこちらから)
[画像のクリックで拡大表示]

 このコードは主に二つの処理から成り立っています。

1. ユーザーの居住都道府県を取得します
2. 地震速報RSSを取得して,居住地の情報があればリストにして表示します

 1.に該当する処理がosgetterオブジェクト(1)で,2.に該当する処理がeqgetterオブジェクト(2)にて実装されています。

 まずはosgetterを見てみましょう。こちらはこれまで説明してきたサンプルとほぼ同じなので,理解しやすいのではないかと思います。Ownerの居住都道府県を示すMyOpenSpace.Person.Field.REGIONフィールドを取得して,region変数へ格納しています。

 これまでのサンプルと異なる点は,sendメソッドで指定するCallBackファンクションです。名前の無い匿名メソッドになっています。短いコードであれば,このようにsendメソッドの引数内に閉じ込めてしまった方が読みやすくなります。もちろん処理内容自体は何ら変わりません。

 次にeqgetterです。(3)は取得したいRSSのURLです。(4)(5)(6)はパラメータの指定ですが,ここでは何も指定していないと考えてください。(7)で実際のRSS取得のリクエストが行われています。(7)の結果は(8)のonLoadEQRequestへ返ってきます。その後はOpenSocialの処理ではありませんが,resultオブジェクトの結果からRSSを取り出し,osgetterで取得した都道府県に一致し,かつ指定された震度以上の情報があればHTMLへ表示しています。