最後は,Googleのカレンダー・サービスを使ってマッシュアップ・サイトを作ります。テレビ番組サイトが配信しているRSSデータを取得して,Ruby on Railsでカレンダーのフォーマットに変換します。それをGoogleカレンダーに取り込んで,オリジナルの番組表を作ってみましょう。

 ここまで,さまざまなWebサービスを利用してきました。これらはすべて,自作サーバーで稼働するRuby on Railsのプログラムが,Webサービスから取得したデータをブラウザに表示するという仕組みでした。例えばPart3では,Google MapsのWebサービスから取得した地図情報をブラウザに表示しました。

 Part4では逆に,Googleのサイトが,自作サイトのWebAPIデータを取得して,ブラウザに表示するという仕組みを体験してみます。

 「Googleカレンダー」(写真1)は,「iCalendar」という規格のデータ・ファイルを読み込んでカレンダ上に表示することができます。iCalendarは,いつ何の予定があるといった予定の情報をテキストで表したものです。iCalendarのデータを公開しているサイトのURLをGoogleカレンダーに入力すると,カレンダ上に予定データがびっしり埋まるというわけです。

写真1●Googleカレンダー
写真1●Googleカレンダー

 ここでは,ライブドアのテレビ番組サイト「livedoor 番組表」(写真2)のデータを使います。このサイトは,地域別やジャンル,キーワードなどで絞り込んだ番組表を作り,それをRSSで出力するサービスを提供しています。

写真2●livedoor 番組表のサイト
写真2●livedoor 番組表のサイト

 そこで,Ruby on Railsを使ってRSSデータを取得してiCalendar形式に変換し,iCalendar形式のデータを自作サーバーで公開することにします。このURLをGoogleカレンダーに読み込ませます。そうすると,Googleカレンダーにテレビ番組の予定が埋まります(図1)。

図1●Googleカレンダーに番組表を張り付けるまでの制御の流れ
図1●Googleカレンダーに番組表を張り付けるまでの制御の流れ

RSSデータを取得する準備

 livedoor 番組表のトップ・ページにある「RSS作成ページはこちら」をクリックし,「番組表RSS配信サービスのページ」に行き,欲しい番組を選択します(写真3)。

写真3●livedoor 番組表の「番組表RSS配信サービス」のページ
写真3●livedoor 番組表の「番組表RSS配信サービス」のページ

 番組表RSSのURLが得られたら,これをRuby on Railsのアプリケーションにセットします。/toku1/app/controllers/ical_controller.rbの5行目を,次のように書き換えます。

urls = ["番組表RSSのURL"]

 複数,指定したい場合は,次のように指定してください。

urls = ["番組表RSSのURL1","番組表RSSのURL2"]

 これでRSS番組表を受け取る設定が終わりました。

& ruby script/server

を実行します。

 ブラウザで,http://IPアドレス:3000/ical/tv にアクセスしてみます。

 すると,iCalendar形式のデータがブラウザに表示されます(写真4)。これが,Googleカレンダーに読み込ませるデータです。ブラウザ上では改行されずに読みにくくなっていますが,「ページのソース」を表示させると読みやすくなります。

写真4●自作サーバーにアクセスするとiCalendar形式のデータが現れる
写真4●自作サーバーにアクセスするとiCalendar形式のデータが現れる

 仕組みを簡単に説明しておきます。

 上記のURLにアクセスすると,app/controllersの中にあるical_controller.rbというRailsアプリケーションの中の,「def tv」に記述されたスクリプトが実行されます。このスクリプトでは,livedoor番組表のRSSを通常のRSSから拡張し,番組のタイトルや開始時間,終了時間,G-CODEやiEPGのアドレスを追記しています。図2は,拡張したRSSデータです。

図2●livedoor 番組表のRSS開始時間,終了時間などの情報を独自に拡張した。
図2●livedoor 番組表のRSS開始時間,終了時間などの情報を独自に拡張した。
[画像のクリックで拡大表示]

 ここからGoogleカレンダーに記載するために必要な情報を取り出し,iCalendar形式で出力します。それが写真4です。Googleカレンダーから読み込めるようにするために,サーバーは外部に公開しておいてください。

Googleカレンダーに読み込む

 では,Googleカレンダーに番組表を読み込んでみましょう。Googleカレンダーのサイトにアクセスしてください。アカウントがない場合には,「Google アカウントを作成する」から,アカウントを作ります。

 Googleカレンダーにログイン後,Googleカレンダーの左にある「他のカレンダー+」をクリックし,右の領域が「他のカレンダーを追加」に変わったら「公開カレンダーの URL」タブをクリックします(写真5)。「公開カレンダーの URL」の欄に,先ほどの自作サーバーのURL(http://IPアドレス:3000/ical/tv)を入力して,追加ボタンを押します。

写真5●自作サーバーのURLをGoogleカレンダーに入力する
写真5●自作サーバーのURLをGoogleカレンダーに入力する

 左の「他のカレンダー」の部分に「お気に入りの番組」が追加され,Googleカレンダーの中に選択した番組表が組み込まれています(写真6)。

写真6●カレンダーに番組表が取り込まれた
写真6●カレンダーに番組表が取り込まれた

 Googleカレンダーのように,Web2.0系のアプリケーションの中には,外部からの入力を受け付けているものも多く,他のアプリケーションとの連携が取れるようになっています。

 これまでデスクトップ・アプリケーションの代表と思われていた,オフィス系アプリケーションも徐々にWebで提供されてきました。今後,面白いWeb2.0のアプリケーションが続々と出てくるでしょう。

出典:日経Linux 2007年2月号 43ページより
記事は執筆時の情報に基づいており、現在では異なる場合があります。