ECWorks Blog

ECWorks Blog

CakePHPを中心としたサイト開発情報をメインに公開。新しもの好きなので時々製品レポートなんかも。

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

prog-logo今回はCakePHP記事としてでなく、一般的なプログラミング…いや、完全個人的な戯れ言としてちょっと書いてみたいと思う。

発端は最近のはてブのエントリで、こちらこちら の記事でいろいろなフレームワークの比較が書かれているのだが、どうも直感的に各フレームワークの良さが伝わってこなかったのだ。例えば前者の方は、最終的にZendFrameworkをお勧めしているのだが、そのお勧め理由が全くよく分からないというのか、「自分が好きだから良いですよ」的な結論にどうしても見えてしまう(いえ、その主張そのものを否定はしないです)。というのは、以前まで話されていたフレームワークの比較が、現時点では通用しなくなってきているというのか、どれもバージョンアップを重ね、よりよいものになってきているからである。自分も このような記事 を書いていたりするけど、丁度良い機会なので、今自分が感じていることを以下に書いてみる。

個人的に言わせてもらえば、私のメイン使用であるCakePHPも「かなりのところでいい線いっているんじゃないか」と最近思っている。CakePHPを初めてさわってまだ1年半程度だけど、この間にとんでもないほど機能は向上し、そして安定もしたように思う。Cakeは現在メジャーバージョンは1.2で、当初はまだ1.1だった。この進化の過程で、Cakeの出来ることは格段に増えていった。

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

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

でもよく考えてみて欲しい。プラグイン機能は本当に「大規模」なサイトを構築するための機能なのだろうか? いいや、私はそうは思わない。本当の大規模サイトというのは、フロントエンドは何十ものサーバがロードバランサなりラウンドロビンなりで制御され、バックエンドも同様に複数のDBがレプリケーションなりで動いているような、そんな状態のことを言うのではないのだろうか? そして、そのような機能を搭載しているフレームワークこそが「大規模向け」ではないだろうか? 安定しているかどうかは置いといて、CakePHPはこれらを支援する機能を持っているし、実際に「Firefox アドオン」サイトのような大規模なサイトもちゃんと動いている。
そしてプラグインは、私はむしろ逆の、中小規模向けのものと考える。何故なら、第三者の制作したものを、手っ取り早く自分のものに出来るというのが実質的なところであり、そういった用途のものは中小規模向けに書かれているものが多いからだ。そして、それを使う人も勿論中小規模の環境をもつ人が多い。大規模環境を持っていれば、間違いなく自前で専用にカスタマイズされたものを持たざるを得ない。

そういった意味で、最近のCakePHPは隙が全くない。大規模から小規模まで自在だし、前からPHPは4でも5でも動く(いずれ出るであろう6にもサポート表明している)。1.2になって軽量とは言えなくなってきてしまってはいるが、それはサーバスペックを上げればどうにでもなるし、そもそもキャッシュを使えば重さは感じなくなる。何より強力なアソシエーション機能は、おそらくDBをもっとも都合良く操作できるのではないだろうか?

勿論、symfonyやZendFrameworkなど他のフレームワークには、それぞれの良さがあると思うし、繰り返すけどどれもバージョンアップを重ね、機能的にはどれも大差ないように思える。まあどちらかと言えば、Cakeとsymfonyは同じグループで、ZendFrameworkはグループが違うように思う。Zendのほうは各機能が独立して機能する点は今でも継承していて、それが特徴的かつ有用な機能の一つだからだ。Adobeとかがサポートしている点も大きいと思う。symfonyの豊富なプラグイン機能は、未だ優位だと思うし(でも多少勢いの衰えた感はある)。

だけど私は、Cakeの良さは、単体としての機能はとりあえず置いといて、別の点で「少なくとも日本では」優位であることを主張したいと思う。それは、特に最近、いろんな事例やTipsなど、豊富なドキュメント…とりわけ日本の有志の方が残した「日本語のドキュメント」がおそらく一番多く存在している点…これこそ、CakePHPの最大の強みではないだろうかと思う。フレームワークが高機能だったり高速だったり、そういった要素も勿論大事だと思うけど、結局は満足に使いこなせなければ意味がないわけで、それを使いこなすための手法が、ネットで検索すれば沢山手に入る。それも手に入る情報は「使えない」「改造が必要」といった後ろ向きなものでなく、前向きなものばかりだ。CakePHPのドキュメントは、本当に宝の山に思える。フォーラムも活発で、勉強会の頻度もおそらくは一番だ(Zendは少なくともPHPフォーラムであまり見たことがない)。

思えばその1年半前、さんざんに悩んだあげく、メインで使っていくフレームワークをCakePHPに絞った。もしかしたら機能的な面で言ったら、ZFやsymfonyの方が良かったかもしれない。いや、RoRだったり、Javaだったりした方が良かったかもしれない。だけど、勉強会に参加したり、ブログで情報を発信したりしてみて、Cakeに関係する皆さんがそれぞれ知り得た情報がしっかりと共有できているというか、もっといえば繋がりが非常に強く結束力のようなものがあり、皆でCakePHPを盛り上げているという実感がある。その辺が凄く楽しい! 新しい発見があるし、それが自分への刺激にもなって心地よい。自分の情報はその中でどのくらい役に立っているのかは分からないけど、それでも自分の情報が、その人にとって有効に働いてくれたら嬉しいし、それがきっかけでその人も更にCakePHPを盛り上げていってくれるのならもっと嬉しいと思う。今回CakePHP勉強会で壇上でKtai Libraryを発表することになったけど、これもそんな気持ちで現在取り組んでいる(まあもっともKtai LibraryはCake以外でも是非使って欲しいんだけど)。

何か最後は終わった後の感想みたいになっちゃったけど、まあ言いたいことは、「CakePHPはいろいろな点でなかなかイカしているぜ!」みたいな感じですかね(笑)。そして改めて、情報を公開されている方には感謝をしたいと思います。いつもありがとうございます。


Tagged as: , , , , ,

Comments are closed.