当ブログが使っているBloggerは、海外のサービス(Google提供)のためか、ケータイ版がありません。
日本ではケータイでのネットアクセスが一般的で、主だったブログサービスは、ケータイ版を提供しています。
Bloggerを使っていて、なかなか満足しているわけですが、この点が不満でした。
Bloggerには、トラックバック機能もありません。しかし、これはHaloScanというサードパーティのサービスを使うことで解決しました。
だから、ケータイでのアクセスも、そういうサービスで解決できないか?と、探してみたのですが、見つけることができません。
そこで、自分で作ってみることにしたのです。
当ブログに書いてある記事は、Bloggerのデータベースに保存されています。そして、記事を投稿したりすると、Blog*Spotというサーバスペースに展開されます。Blog*SpotもBloggerが提供しているもので、Bloggerを使っていればデフォルトでBlog*Spotに展開されるのです。(設定すれば、自分で準備したサーバスペースにも展開できます。この辺が、Bloggerの非常に面白いところです。)
ケータイ版を作るにあたって、どうやって記事を取得するか。それが問題です。
これがMovableTypeやWordPress、Nucleusといったインストール型のツールを使っているのであれば、記事は自分の使っているサーバスペースのデータベースに保存されるので、何らかのデータベースプログラミングをすれば、簡単にケータイ版を作ることが出来るでしょう。
Bloggerのデータベースに保存されている記事に直接アクセスするなんて、もちろん出来ません。
しかし、BloggerはGoogle Data APIs(GData)に対応しています。
GDataというのは、大雑把に言うと、Googleが展開している各種サービスにAtom形式でアクセスするAPIです。
GDataを使えば、Bloggerに保存している記事を取得して、ケータイ向けのHTMLとして出力できるのでは?と、思ったわけです。
前振りが長くなりました。
早速、出来上がったケータイ版にアクセスしてみてください。 →http://m.inoue-office.jp/blog.php
なかなか、ちゃんと使えるようになっているではないですか。
3時間くらいで作ったわりには、元からケータイ版を提供しているブログサービスと遜色ないと思います。
コメントやトラックバックには対応していませんけど。(Bloggerが提供しているサービスじゃないし…。)
PHPでGDataを使うために、Zend Frameworkを使用しています。
また、絵文字に対応するために、PHP携帯絵文字自動変換スクリプトも使用しています。
Zend Frameworkを使えば、GDataはかなり簡単です。
Atomのフィードを取得して、そのタイトルを並べたりするくらいなら、すぐ出来ます。
- Developer’s Guide: PHP – Blogger Data API – Google Code
- Zend Framework: Documentation Zend_GData(日本語)
この辺を見ると良いでしょう。
悩んだのは、タイトルのリストを取得した後に、1件の記事を取得するところです。IDもないわけではないので、それで1件の記事を取得するくらい簡単だろうと思ったのですが、そのためのAPIが見つからないのです。
仕方がないので、Zend_GData_QueryクラスのsetStartIndex()で取得したい記事の(フィード上の)順番を指定し、Zend_GDataクラスのgetEntry()で1件を取得するという、涙ぐましいことをやっています。IDでサクッと取れればいいのに…。(自分が見つけられないだけで、実はあるのだろうか?)
もし、ご希望があるようなら、もう少しソースをちゃんとさせて、公開することも考えます。コメントに書いてください。
ただ、あっけにとられるくらい、簡単なプログラムですけど…。
それにしても、やってみれば、いろいろ出来ますね…。
さすがにGoogleが提供しているサービスだけあって、懐が広いです。(クセはあるけど。)