BEARで始めるWebアプリケーション開発 その2「リソースの作り方を学んでみる」
今まで月1ペースぐらいだったブログ更新が急にペースアップしているのは、自分のwktk感の現れです。(笑) 最初の紹介記事のはてブの付き方を見ると、結構注目度も高い感じですね。今まで注目されてなかったのが何とも不思議だ…。
さて、今回から実践編という事で、BEARを使って実際にWebアプリケーションを作っていこうと思います。
お題としては、拙作のWebサービス達の中から、逆さ語をチョイスする事にしました。
逆さ語は、"与えられた文章を逆さ語に変換する"という機能がメインで、画像を扱う訳でもないし、画面遷移もなく1画面で完結するUIなので、最初のお題としてはもってこいかなと。
BEARでのリソース作成を試してみる
という訳でリソースを作っていくんですが、リソース設計をする前に、まずはBEARでどうやってリソースを作るのか勉強しておこうと思います。
BEARでのリソース作成に関しては、本家Wikiのリソースの項目を見てもよく分からなくて(^^;、BEARの作者さんから「DEMOページのサンプルが参考になる」との情報を頂いたので(ありがとうございました!)、そちらを参考にさせて頂きました。
まずは難しい事は抜きにして、GETしたら値を返すだけのリソースを作ってみる事に。とりあえず、"/home/bear/helloworld/App/Ro/Sample.php"というファイルを作って以下のように書いてみました。
<?php class App_Ro_Sample extends BEAR_Ro { public function onRead($values) { $result = array( array('id' => 1, 'name' => 'tom'), array('id' => 2, 'name' => 'stellaqua'), ); return $result; } } ?>
BEARにはCLI用のコマンドがあって、それを使ってCLI上でリソースにアクセスできるので、作成したリソースが使えるかどうか試してみます。
$ bear read Sample code 200 header Array ( [request] => Array ( [uri] => Sample ) ) body array ( 0 => array ( 'id' => 1, 'name' => 'tom', ), 1 => array ( 'id' => 2, 'name' => 'stellaqua', ), )
おぉ、これはスゴイ! これの何がスゴイのかは、次のようなコマンドを叩いてみると分かります。
$ bear read http://rss.asahi.com/f/asahi_newsheadlines code 200 header Array ( [title] => asahi.com [link] => http://www.asahi.com/ [description] => アサヒ・コム [dc:language] => ja [dc:rights] => Copyright 2009 Asahi Shimbun. All rights reserved. No reproduction or republication without written permission. [dc:date] => 2010-01-21T19:31:30+09:00 [dc:publisher] => 朝日新聞社 [dc:creator] => 朝日新聞社 [items] => [type] => rss [request] => Array ( [uri] => http://rss.asahi.com/f/asahi_newsheadlines ) ) body array ( 0 => array ( 'title' => '「こだま」でも頑張って 500系バウムクーヘン', 'link' => 'http://rss.asahi.com/click.phdo?i=f152dafd46bc1b9c0faf4105e0f88e65', 'description' => ' <br clear="both" style="clear: both;"/> <img alt="" style="border: 0;" border="0" src="http://rss.asahi.com/img.phdo?i=f152dafd46bc1b9c0faf4105e0f88e65"/> ', 'dc:subject' => '社会', 'dc:date' => '2010-01-21T19:09:57+09:00', ), 1 => : (略)
このように、リソースが外部にあるか内部にあるかを気にする事なく、かつ、全く同じインターフェイスでアクセスする事ができてしまいます。
この"全く同じインターフェイスで"というのがキモで、裏で動いているのがDBなのか、単なるテキストファイルなのか、はたまた外部にHTTPでアクセスしてるのか、あるいは複雑なロジックの結果なのか…なんていう事情を一切気にしなくても、利用者の立場から見れば、同じ"リソース"というモノとしてアクセスする事ができます。
この事がWebアプリケーション開発にどんな風に効いてくるのかというのは、実際に作っていく過程で見えてくるのではないかなと思っています。
次回は?
という事で、次回は実際にリソースの設計をして、それをBEAR上で実装するところまでやってみる予定です。