PHPのフレームワークについて考える

現在のPHPフレームワーク事情

最近までPHPフレームワークを調査してきて以下のような印象を持ちました。

  • 開発がスタートしたばかりフレームワークが多い
  • Maple、s2php5、Ethna、guessworkなど国産フレームワークが沢山あるが、選択が難しい
  • ドキュメントやサンプルアプリケーションが圧倒的に不足している
  • 開発体制がまだまだしっかりしていない

海外ではMojaviがあるみたいですが良い噂は聞きませんし... Mojaviではやってられないってことで誕生したAgaviなんかもあるみたいですね。

とまあPHPで開発する技術者は、どのフレームワークを選択すれば良いのか迷っているはずです。きっと。
色々なフレームワークがあれば、それはそれで個人的には面白いです。しかし、フレームワークに対するノウハウの蓄積がなかなか進まないのでは?と心配しています。いずれ人気の無いフレームワークは淘汰されていくでしょうが、それまで我慢できない開発者はどうすれば良いのでしょう? JavaでいうStrutsのようなデファクトスタンダードフレームワークPHPでも必要に思います。

Ruby on Railsの影響力

少し前から、Ruby on Railsと呼ばれるフレームワークが熱いようです。Web+DB PRESS vol.28でも紹介されていました。前にRuby on Railsでこんなにも簡単にアプリが作れるよ!っていうのをデモするムービーをみたことがあるのですが、テンポよくデモアプリができていくのを見て、へぇ〜と関心していたのを覚えています。Rubyでコーディングしたことがなかったので、注目されているのだなと思っただけで、私はそれ以上何もアクションを起こしませんでした...

世の中は、注目されるものが出ればその派生物が絶対出てきます。フレームワークの世界も例外ではありません。Ruby on Railsの血を継承したフレームワークがかなり前にPerlで登場しました。そうCatalystです。SixApartの宮川さんの連載記事「PerlStyle」の第3回「どっちを選ぶ?テンプレートエンジン」で知ったのですが、Class::DBI(O/Rマッピング)とTemplate-Toolkit(テンプレートエンジン)の相性が抜群なので、この2つを組み合わせて使えば、かなり強いような気がします。Perlフレームワークをベースしてアプリを開発すれば、CPANから強力なモジュールを利用できるのが良いですね。Perlをもっと勉強してCatalystを使えるようになりたいです!

PHPでもありました。Ruby on Railsの血を継承したフレームワークが。CakePHPです。CakePHPを実際に試していないので断言はできませんが、Ruby on Railsの思想を継承しているため、期待できそうです。残念ながら、CakePHPは国産フレームワークではありません。しかも、国産フレームワークと同じようにまだまだ開発が続けられている状態です。

CakePHPへの不満

現在の所、MVCのviewで使えるテンプレートエンジンにSmartyは使えないようです。PHPのコードでテンプレートを記述するみたいです。他のテンプレートエンジンを自由に入れ替えられるようになれば、もっと良いのになぁと思います。

AgaviCakePHPの共通点: trac

先ほど少しだけ触れましたAgaviCakePHPには、共通点があります。両方ともバグトラッキングシステムにtracが使われています。Web+DB PRESS vol.28の特集を読んで、はじめてtracを知りました。tracは上手に使えば、役に立ちそうです。また近いうちに試してみたいです。

ちなみにtracSubversionリポジトリを見られるようになっているのですが、結構いい感じです。

CakePHPにおけるリポジトリの特徴

CakePHPSubversionリポジトリを見ていて気がついたことがあります。それは、CakePHPの開発者はそれぞれ自由に作業できる領域を所持しているという所です。

推測ですが、CakePHPではそれぞれの開発者は自分の領域で開発をして、一通り作業が終わればtrunkにマージするモデルを採用しているのではないでしょうか? このやり方に従えば、各自は大幅な変更をしたければいつでもでき、またtrunkの状態を安定化できるので良いなぁと思いました。

私が現在開発を進めているシステムではtrunkに開発メンバー全員がコミットするようにしているので、trunkが不安定になりやすい問題があります。CakePHPの開発モデルもちょっと参考にしてみたいと思います。でも開発メンバーにマージと衝突の対処方法を教育しなければならないので、ちょっとハードルが高いです...

WEB+DB PRESS Vol.28

WEB+DB PRESS Vol.28