CakePHP祭2009あとがき

「CakePHP祭2009」
http://matsuri.cakephp.jp/
のカンファレンスに参加してきました。

.NET関係やXP関係は色々参加してきたのですが、PHPのほうは初めてです。
ちなみに、私はPHPのプログラミングをしたことがありません。まして、CakePHPがあることすら先月までは知りません。なわけで、ざっとPHPのコードを見て参加してみたわけですが、雰囲気が全然、若いですね。かつて、2000年頃にあったXPのユーザ会を思い出します。CakePHPが作られ始めたのは、2002年頃(かな?}らしいのですが、日本で流行り始めたのは、2,3年前みたいです。丁度 java が流行った頃の活気のある雰囲気が味わえました。

さて、私が CakePHP に注目しているのは、

・一般的なホスティングサーバーで動く。
・利用者が多い(習得が楽にできる)PHPを使っている。
・テストが可能な MVC モデルを採用している。

ところです。実際、CakePHP(前身はcake)のアイコンであるケーキは、3層構造であるMVC(あるいはシステムのn層構造?)を示しているそうです。

CakePHPのケーキ
<001>
20091102_01

苺が挟んであるケーキは美味しゅうございました。

PHPのフレームワークと言えばsmartyが有名ですが、ここ2年ぐらいはCakePHPがgoogleなどでよく検索されているそうです。smarty のほうは、java の struts に似ていてい、テンプレート(HTMLを作成するための雛型のようなもの)をタグベースで作ります。java のタグライブラリを更新するに使う、と思うのですが smarty のほうはよく分かりません。

現在まで CMS(コンテンツ・マネージメント・システム)が多く作られ、実際に業務用のサイトで多く使われています。ですが、CMS の場合は、コンテンツ(文章や画像、時にはHTMLのページそのもの)を管理するために、web サーバ上にあるデータベースを検索したり、web サービスを利用する部分については、(多分)別途プラグインという形で作る必要がありました。このため、動作試験自体のフレームワークは皆無といっても過言ではありません。
これに対して、CakePHP のような MVC モデルに焦点を当てたものは、データベース検索等にターゲットを絞り、単体テスト可能(UnitTest可能)な環境を作り出そうとしています。

なわけで、CakePHP を使ったときにユーザーによるコンテンツ自体の管理(ユーザーとはいえ、IT技術者の可能性も多いのですが)が、どのようにしていくのか。あるいは、CMS の機能と CakePHP のモデリングとうまく融合していくのか、という疑問はあるのですが、ひとまず、

・動的なページを作成する。
・動的なページをテスト可能にする。

という開発が多い場合は、CakePHP が極めて有効に機能します。

Joomla CMSにCakePHPアプリを組み込む
http://cakephp.seesaa.net/article/33692804.html

という記事が2007年にあるので、現在のCMSではすでにCakePHPをベースにしたものがあるのかもしれません。

さて、この CakePHP 祭りですが、開発者の方(オーストラリアとカナダの方)が来ていました。
左が Graham Weldon さん、右が Joel Perras さんです。会場にも外国の方も幾人か居られて、なかなか国際的な感じがしました。手に持っているのは CakePHP ケーキです。

<002>
20091102_02

そうそう、Perras さんの講演は実に大学講義風で、、、眠くなっちまったよ~。生真面目な方なんでしょうなぁ。

そして、日本側の立役者の安藤さん

<003>
20091102_03

そんな訳で、私にとって実に情報量の多い1日でした。
PHP なので、開発事例は WEB 開発に限られることになりますが、私の使いどころとしては WEB サービスなのです。さて、CakePHP と WEB サービスとをどのように繋げるか、かつテストが簡単に作れるようになるか(先行き拡張しやすくなるか)なのですが、ざっと考えたものをupします。give and take ということで。

<004>
20091102_04

WEB サービスが model なのか view なのか、という議論はあると思うのですが、WEB サービスもひとつのユーザーインターフェース(マシンインターフェース)ということを考えると、view 相当としたほうがよさそうです。つまり、WEB サービスを MVC モデルで作る場合には、

・model をデータアクセスに使う。
・view を公開する web サービスのインターフェースにする。
・model と view の繋ぎを controller とする。

のような感じです。

そして実装上は、php の NuSOAP + CakePHP の組み合わせを使う。

ひとまず、http://cakephp.jp/ のフォーラムから始めてみようかと思います。
以後よろしくお願いします>cakephpの皆様

カテゴリー: 雑談 パーマリンク