TOPシステム開発> 第4回:夢のオフラインRSSリーダを作ろう! (2/3)

完全先取り! iPod touch開発

完全先取り! iPod touch開発

第4回:夢のオフラインRSSリーダを作ろう!

著者:masuidrive

公開日:2007/12/4(火)

SafariでもiPod風にユーザインターフェースを実現しよう

PHPの環境設定が終了したら、あとは普通にPHPでプログラムを組めば、iPod touchで自分の好きなアプリケーションが利用できるようになります。

しかし、せっかくiPod touchのSafari上で動作させるのですから、いつもどおりのテキスト主体なものではなく、iPod touch風のユーザインターフェースを実現する「iUI(http://code.google.com/p/iui/)」を使ってみましょう。

「iUI.js」は、Firebugの作者として著名なJoe Hewitt氏によって作られた、iPod touch上のSafariにナビゲーションUIを追加するJavaScriptライブラリです。Safariに最適化されているのでInternet Explorerなどでは動きませんが、簡単にiPod touch風のナビゲーションを実現できます。

実際の動作はiUIの「Music Example(http://iui.googlecode.com/svn/tags/REL-current/samples/
music.html#_home
)」をご覧ください。iPod touchがない場合はFirefox 2ならばある程度の雰囲気は掴めると思います。

PHPでRSSリーダを作る

iPod touchの不満の1つに「Safariにオフラインモードがない」点を上げる人が多いことと思います。これでは外出先や電車の中など、無線LANの届かない範囲で記事を読むことができません。

そこで、今回はこの問題を解消すべく、PHPによって、オフラインモードを持ったRSSリーダを開発し、どこでもRSSのフィードを読める環境をiPod touch上で実現します。

前述のようにPHPをパッケージからインストールした場合、PEARに含まれているRSS関係の便利なライブラリが群が使えません。そこでターゲットを一番メジャーなRSS 2.0に絞ると共に、ソースを単純化するため1つのフィードのみを読み込むようにします。

もし複数のフィードを読みたい場合には「Plagger(http://plagger.org/trac)」や「Yahoo pipes(http://pipes.yahoo.com/pipes/)」を使って、複数のフィードを1つのフィードにまとめるとよいでしょう。

リスト2:RSSを読み込むプログラム「/Library/WebServer/Documents/sample1.php」
<?php
$feed_url = "http://www.thinkit.co.jp/rss.xml";
$localstore = "/var/root/rss.xml";

$feed = fopen($feed_url, "r");
if($feed) {
    $local = fopen($localstore, "w");
    while(!feof($feed)) fwrite($local, fread($feed, 8092));
    fclose($feed);
}
else {
    print "cannot open feed";
}
?>

sample1.phpを実行
図2:sample1.phpを実行

リスト3:ローカルファイルのRSSを解析するプログラム「/Library/WebServer/Documents/sample2.php」

(画像をクリックすると別ウィンドウに拡大図を表示します)
sample2.phpを実行
図3:sample2.phpを実行

RSSを読み込んでローカルに保存しよう

多くのRSSリーダでは、フィードをネットから読み込み解析した結果をデータベースなどに蓄えていると思います。PHP 5からはSQLite3が内蔵されているので、ここに保存させることも考えられます。しかし今回はプログラムを単純にするため、フィードのファイルをダウンロードし、表示する度にXMLを解析することとしました。

そのため、まずはネットからRSSのファイルを読み込む部分から作成します(リスト2)。このプログラムをPC上で作成して「sample1.php」という名称で保存します。その後でscpを使い、ファイルをiPod touchに転送してください。sample1.phpでは指定されたURLのフィードを「/var/root/rss.xml」へダウンロードしています。

このファイルをアップした後、無線LANが繋がっている状態でSafariから「http://127.0.0.1/sample1.php」を開いてください。現状では「真っ白なWebページ」が表示されます(図2)。

次に、受信したRSSを解析し、フィードの名前や記事ごとの名前とURL、説明を取り出します。RSSはXML形式のデータのため、XMLを操作するための「DOM」と「XPath」と呼ばれるライブラリを使用して、解析を行います。DOMとXPathに付いての詳しい説明はここでは行いませんので、詳細はPHPのマニュアル(http://www.php.net/manual/ja/ref.dom.php)などを参考にしてください。

リスト3の解析プログラムをiPod touchに転送し、「http://127.0.0.1/sample2.php」を開いてください。先ほどsample1.phpで読み込んだRSSを解析し、図3のように表示します。Think ITのフィードでは、descriptionが設定されていないものが多いようです。

これで基本的な部分は完成です。無線LANが繋がっている環境で「http://127.0.0.1/sample1.php」を開いてローカル環境にRSSを読み込んでおき、移動中などに「http://127.0.0.1/sample2.php」を開くことで、オフライン環境でもRSSを読めるようになります。

これで基本的な機能は実装しました。次にこれにiUIを使ってiPod touchらしいユーザインターフェースを付加していきます。 次のページ


前のページ  1  2  3  次のページ


masuidrive
著者プロフィール
masuidrive
最近は風呂の人と呼ばれるが、別にいつも風呂で仕事なわけじゃない。喫茶店が好きでMacBook proを持って、あちこちのお店で仕事してる。でも良い喫茶店が見つからず、マクドが多いのが残念。
http://masuidrive.jp/


INDEX
第4回:夢のオフラインRSSリーダを作ろう!
  iPod touchでオフラインモードを持ったRSSリーダを作る
SafariでもiPod風にユーザインターフェースを実現しよう
  iUI.jsを組み付ける