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";
}
?>

図2:sample1.phpを実行
リスト3:ローカルファイルのRSSを解析するプログラム「/Library/WebServer/Documents/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らしいユーザインターフェースを付加していきます。
次のページ