仕事でフレームワークを使おうか検討中です。
php+mysqlで動くもので現在候補として考えているのが以下の四つです。
利点
優秀なコードジェネレータがついているため、ファイルを作ったり、クラスを書いたりといった手間がかなり省ける。CRUDのアプリケーションでさえ基本的なものはDBのテーブルから作ってくれる。モジュールをコマンドラインから生成したり、モデルのマッピングをするときは感動もの。管理画面もコマンドから作れる。
洗練された設定ファイルシステムがある。YAMLで書かれているので、可読性も高い。とにかくロジカル。カスケードになっている。
Ajaxを含む多彩なヘルパーとテンプレートシステム。
直感的なルーティングシステム。
豊富なプラグイン。
丁寧かつ豊富なドキュメンテーション。
yahooも使っている。
欠点
パフォーマンスの低さ。アクセスの多いサイトや、サーバが非力な場合は運用面で不安が残る。
設定ファイルの多さが逆にsymfonyを混乱させる要因になっている。
ライブラリなどの相関関係を覚えるのが大変かも・・・。
利点
緩やかなコンポーネントシステム。柔軟性。
Zend製という安心感。
何より軽い。
欠点
フレームワークと言うよりもコンポーネント群と言ったほうがよいか?
結局コーディングの量は多い気がする。
利点
コンパクトかつシンプル!何よりわかりやすい。
DBとモデルクラスが直結しており、かつ感覚的にわかりやすい。
フレームワークとしてのまとまりかたがちょうど良い。
Zend FrameworkがZend製なら、こっちはIBMがついてるというちょっとした安心感。
充実したCakePHPのユーザーコミュニティ。
railsに似ているのかな。
自由度が高いとある
欠点
ん~。欠点という欠点があるのか。。。
めちゃくちゃ優れた点もないけど
どうしようもない欠点というのもあまり見つからないかも。
利点
greeも使っているみたい。その他、開発実績がある。
国産。
いい意味でも悪い意味でもsmarty
PEARと連携している
コードの前後関係がわかりにくい?
残念な点
UTF-8サポートになったが、未だ実験段階。
したがってEUC-JPです。
ドキュメントのadd-projectコマンドの引数があやしくないか?
(そもそもbasedirを設定する必要があるのか?)
ルーティングはなし(pathinfo式にしようとすると、自分でmod_rewriteを設定)
設定ファイルはなし(クラスのグローバル変数に記述する)。ちょっとわかりにくい。
ethnaは全体的にシンプルな作りだと思ったけど、ちょっとわかりにくい。
特にクラスのグローバル変数の箇所で設定を行う部分が多かったり
自分でファイルをrequireしたりしなきゃいけない。
アクションを作るジェネレータは一応付いているが、
あくまでもスケルトンをつくるという感じであって、
コーディングの量が極端に減るわけではない。
コメントアウトが日本語なので
これは親切だと思った。
PEARやSmartyを利用している箇所が多いので、そういう開発環境で
開発してきた人にとっては、すんなり入れるかも。
でもEUC-JPというのが・・・。
ドキュメンテーションは貧弱な気がしたけど、
いろんなサイトの開発実績があるのでその点では
安定性があるのかも。
symfonyが一番高機能な気がした。その分重い。
大規模なアプリの開発に向いていると言っているが、
逆に中規模のアプリの開発に向いている気がする。
高機能さが売りなのではなくて、開発スピードがもっとも速くなりそうなことが
一番の魅力のような気がする。
ただ、設定ファイルが多いということもあり
少人数でやや大きめのサイトを開発するのに向いてそうな気がする。
ZFはとにかく軽いので、とにかくトラフィックの多いサイトにはいいかもしれない。
大人数で開発する場合には、フレームワークと言えど
きちんとした開発コードを作らなきゃいけないので
そういう意味ではZFがもっとも大規模なサイトの開発に向いているかもしれない。
小規模なサイトをつくるのに、わざわざZFを使うメリットはあまりない気がする。
それならPEARフレームワークをふんだんに使うとかでもいいし・・・。
結局コードを書く量が多いが、反対に自由度が高いという意味でもあると思った。
その点ではZFはフレームワークというよりも、
高機能コンポーネントの集合体と考えたほうがいいかも。
cakePHPはとにかくシンプルだし、わかりやすい。
初心者に向いている気がした。
でもシンプルだからこそ、開発スピードも早くなるし
プロジェクトマネジメントも比較的楽にできそう。
とにかく無難な印象。
そんなに遅くもないが、決して早くもないのかな。
Trackback URL (right click and copy shortcut/link location)