ぷぎがぽぎ このページをアンテナに追加 RSSフィード

2009-05-20

[][][]【戯れ言】symfonyCakePHPよりは大規模向けです

例えば、フレームワーク比較で良く目にする違いとして「Symfonyは大規模向け、CakePHPは中小規模向け」というのがある。これはいったい何なのだろう? よく読むと、大抵は「Symfonyはプラグイン機能があるため、大規模向け」という書き方がされている。これは本当にそうなのだろうか?

まず簡単なツッコミをさせていただくと、CakePHPは、既にプラグイン機能を装備している。Symfonyとほぼ同じように、一連機能を持った仕組みを簡単に入れたり抜いたり出来る。つまり、この定義でいけば、CakePHPは十分に大規模向けだ。

.. (略) ..

そしてプラグインは、私はむしろ逆の、中小規模向けのものと考える。何故なら、第三者の制作したものを、手っ取り早く自分のものに出来るというのが実質的なところであり、そういった用途のものは中小規模向けに書かれているものが多いからだ。

【戯れ言】あえてCakePHPをヨイショしてみる | ECWorks Blog

まず前提として、プラグインという機能はsymfonyでもCakePHPでも、大規模向けのためにある機能ではなく、再利用性を高めるための機能であり、規模は関係ないと思います。

もう1点。

symfonyのプラグインはコマンドでアップグレードなど管理が行えたり、名前空間の衝突を気にしなくてよかったり、プラグインを拡張するためのフックポイントが用意されていたりと、より複雑なことができるので、単純に機能をプラグインとして切り出したというレベル以上のことができるように標準で考慮されています。

というわけで、プラグインという機能をもつこれら2つのフレームワークは使いこなせればより開発効率を上げることができるということだと思います。

そして、symfonyでもCakePHPでも大規模開発はできます。

ただし、symfonyのほうがCakePHPよりは標準で大規模開発を考慮しています。

ここでは、その理由の1つであるディレクトリ構造の違いで説明します。

それは「アプリケーション」「モジュール」という2段階構造を持つsymfonyに対してCakePHPは「コントローラー」というフラットな構造になっている点です。

CakePHPではフラットな構造なので管理画面だけ別にしたい場合などは、標準だとCAKE_ADMINを利用するのが一般的だと思います。ただし、ファイルの置き場所は他のコントローラーと同じですし、CAKE_ADMINを使うパターンしか考慮されていないとも言えます。*1

symfonyではアプリケーションで切り分けることができるのでもっと柔軟に対応できます。

他にも比較できるポイントはあると思いますが、ちゃんと違いがありますよってことで。

ただ、symfonyでもCakePHPでもやりたいことはできます。

「正しい方を選ばないとできない。失敗だ。」なんてことはありません。

どちらを選んでも、フレームワークが提供していないことをやろうとすると苦労する点は同じです。

このネタちゃんとまとめてどこかで発表するかな。。

[追記]

id:yandodさんが以前にCakePHPとsymfonyの比較について発表したスライドがあるんでした。

どちらかのフレームワークを使った事があれば違いが分かると思いますのでオススメです。

http://puyo2.upper.jp/cake/files/20080627cakephpstudy_symfony.pdf

[さらに追記]

id:yandodさんからコメント頂きましたが、CakePHPでも設定を書けば、ディレクトリを分離させることができるそうです。*2

CakePHPでコントローラーを複数のディレクトリに整理する方法 - yandod's blog

*1:ちょっとしたアプリなら、これぐらい考慮されていれば十分でしょうけど

*2:名前の衝突など考慮しなくてはならない点もあるようですが

MASA-PMASA-P 2009/05/20 11:46 早速取り上げていただいてありがとうございます。

おっしゃるとおりで、プラグインそのものが大規模向けを差しているわけではないと思いますし、symfonyのディレクトリ構造が有利に出来ていて作りやすいというのもその通りだと思います。また、Cakeだから、symfonyだから、ということではなく、結局制作者がどう作るか、何を作りたいのかが重要であって、大規模云々はあまり関係ないと思います。

なので、本件で言いたかったのはこの部分ではなくて、ここから先の後半部分のつもりだったんですけどね。

shin1x1shin1x1 2009/05/20 12:08 興味深いですねー。
是非、発表して下さい!

brtRiverbrtRiver 2009/05/20 12:15 MASA-Pさん

本題部分でないところで突っ込んでしまいスイマセン。
CakePHPのコミュニティが日本では盛んなのと日本語の情報が多いという点でオススメという点には同意ですw

shin1x1さん
いずれどこかでー...w

yandodyandod 2009/05/20 22:16 ディレクトリをわける設定がCakeでも考慮されているネタも引用して頂ければ。。。
http://d.hatena.ne.jp/yandod/20080510/1210416583

brtRiverbrtRiver 2009/05/20 23:35 Cakeにもそういう考慮があったんですね。という訳で追記しましたー。

2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |