【CakePHP/Tplcutter】「CakePHPカンファレンス東京」が終わって(cakecon)

カンファレンスに参加された皆様、お疲れ様でした。
また、私のLTに耳を傾けていただきまして、ありがとうございました。

もう少しまともなスピーチがしたかったのですが、場慣れしていないというスキル不足と、あまりにもボリュームに対して時間がなさ過ぎた題材を選んだという点でとても反省しております。個人的に、出来は100点中10点です(大汗)。次回こういった機会がありましたら、100点を提供できるように頑張りたいと思います。

というわけで、私の発表しました「「Tplcutter」を用いた超高速ウェブサイト開発」について、補足事項というか、いいわけめいたものを書きつつ、他の方のスピーチに対して私の思いをつらつらと書いていきたいと思います。

まず、補足事項というか言い訳なのですが、実際に発表できた内容は用意していた20%ほどで、すべてを5分で語るのはとてもとても無理でした(大汗)。とりあえず、Tplcutterの優れている点を絞り込み、今回は一撃で空のサイトにビューを生成して放り込む部分をかろうじて実演をしたのですが、本当に実演したかったところは別のところにもありました。

カンファレンス終了後や、懇親会中で、予想以上に多くの方から「これはおもしろい・興味あるツールだ」とおっしゃっていただけました。皆さんに話を聞くと、おおむね同じような悩みを抱えていらっしゃっていて、つまるところ「デザイナーとのやりとりでアップデートが大変に楽になる(可能性を秘めている)」とのことでした。私の一番主張したかったところはここであり、実装よりはむしろ更新の部分でしたので、このような感想をいただけたということは、このツールの方向性は正しかったと胸をなで下ろしています。

特にびっくりしたのはCakePHPプロジェクトマネージャーのGarrett氏で、懇親会中、英訳した資料を渡すついでに少しだけお話しできたのですが、開口一番「Oh, Tplcutter! It is VERY COOL!!」とお言葉をいただけました。まさかこのような評価をしてくれるとは思っていませんでしたので、とてもとても光栄です。

実はGarrett氏と話す前に、今回は通訳を担当されていた、堂園さんにご挨拶させていただいたのですが、そのときも「いや、Garrettはかなりクールだといっていた」といわれてまして、何かの間違いだと思っていました。もともとTplcutterは、ホビーユース・大規模開発の方をターゲットとしていなくて、「実務でフレームワークを使って制作している中小向けのツール」のつもりだった…つまりメジャー路線ではないと思っていたのです。LTも「東大に記念受験する出来の悪い学生」のような気持ちで臨んでいたので、自分的にはウケが悪い筈だったのです。Garrett氏も、現在のフレームワーク、とりわけCakePHPの「高速開発」のコンセプト内で、ビューの実装に関する、何か「もや」のようなものを感じていたんでしょうかねぇ。

繰り返しになりますが、デモンストレーションがあまりにも未完成のため、100%の利点を伝えることが出来なかったのですが、機会ありましたら別の形で紹介できればと思っています。もしお望みでしたら、出張講演(???)等も全然OKですので(笑。

発表に使ったスライドは、後日アップさせていただきます。
また、更に詳細に書いたスライドもありますので、そちらもチェックの後にアップさせていただきます。

個人的には、全く笑いの取れなかった点も残念に思っています。
他の方は皆さん面白い話を織り交ぜられていましたが、私の方はもうそれどころではなく、時間内にデモまでいくのに精一杯で、終わってみたら超つまらない内容でした(大汗)。デモの中に笑いを用意していたのですが、完全に予定外でしたね(;^;)。

まあ、とりあえず一部の方ではありますがそれなりの評価をいただいて手応えもありましたので、今回に関してはこれで良しとしたいと思います。

さて、他の方のスピーチに私なりの思いを語ってみたいと思います。

【安藤さん;国内でのCakePHPの利用状況について】

スピーチ内で「高速開発フレームワーク」という、CakePHPのコンセプトを強調されていましたが、私もその考え方に乗っているクチでして実際その通りだと思っています。
また、「フレームワークは生産性と保守性の向上である」というのもその通りで、私もそれを切実に感じてフレームワークを検討し、現在に至ります。丁度1年前の話になります。

【岸田さん:Agileな開発現場での実践例】

「テストケース」の使い方についてご説明いただき「あとあと役立つ」的な説明をされていました。この「あとあと」の重要性というのは、開発内容でとても左右されるのではないかと思います。パッケージソフトや、業務ソフトなどについてはかなり重要だと思います。

ちなみに私はwebプログラミングを本職としたのは比較的に新しく、以前はゲームの開発をやっておりました(最初はプログラマーとしてでしたが、プランナーが本職でした)。当時はテストケースという考え方はなく、ひたすら「人の手によって発生した不具合」を集計し、反映させる作業を繰り返していました。ただ現在考えてみると、ゲームのようなコンテンツアプリは、かなりイレギュラーな場合の不具合が圧倒的に多く、今回のようなテストケースが仮に組み込めるにしても、本当に価値のあるデバッグは人の手によるものでしか分からない点があったりします。ゲームの話は結構極端かもしれませんが、インターフェース部分、とりわけフロントエンド開発では、ページ遷移などの影響でテストケースに支障が出る可能性が多分にあるのではないかと考えます。

極端な話、私は「いくらテストケースをしようが、人の手によるエラーのチェックは省くことが出来ない」と考えていて、このことはテストケースを含むデバッグプロセスを想定する上で念頭に置いた方がよいのではないかなと思います。

【Garrett氏招待講演】

CakePHP開発のテーマはとして「State of Nature(ありのままに出来る自由)」と「Social Contract(ルール作り)」他があるそうで、特に「ルール作りをすることで、(皆が)より自由な発想が出来る」という思想のようです。
つまり「面倒なところはプログラム任せ。自分はよりやらなければならないところに特化する」という私のテーマと合致しているところがあり、とても嬉しく思っています(そういえば岸田さんも同じようなことをスピーチ内でおっしゃっていましたね)。
Garrett氏の説明を受け、やっぱりCakeは全体のシステム(プログラム、というわけではなくて、プロジェクト全体の意味)が良くできているなと改めて思いました。

ちなみに、Cakeの未来としては、とりあえずRC4が出るそうです。また、近いうちに1.3が始まり、2.0でPHP5オンリー化を目指すそうです。
そして、チケットを出す際には「テストケースとパッチを一緒に上げる」を是非しましょう、とのことです(笑)。

【鶴岡さん:XoopsCubeなのにCakePHPを使う】

XoopsCubeは実は使ったことがなかったのですが、私も実は同じようなコンセプトのCMSを作り、それを現在も商売として運営していますので、「中小向けのCMS市場」というのは需要があることはよく分かります。ただ、実際に運営してみて思ったことは「HP作りたいけどやり方が分からない」という方の多くは「PCも分からない」というくらいのスキルギャップがあり、いくら便利なCMSを作っても使ってくれないという事を身にしみていたりします。つまり、サービス運営側がCMSを使うことは何ら問題がないのですが、エンドユーザに提供するまでをやってしまうとカオス入りしかねないと思っています。そういった意味で「中小の市場は、想像よりは意外に狭い、でもやり方次第で顧客を獲得できる可能性は高い」という感じですかね。

【青木さん:旅行代理店様向けチケット予約をCake+Ajaxで】

Ajaxは私も結構注目している技術で、それでいてなかなか難しい技術だったりすると思っています。あおきさんの目指した「ユーザインタフェースの向上」は代表的なAjaxの使用例なのですが、私はもう一つのテーマを最近追求していたりします。
じつは、最近「連想くん」を紹介させていただいているのですが、こちらもAjaxは当たり前のように使っているのですが、実はAjax化は苦肉の策だったんです。「連想くん」での採用理由は、なんと「不可分散(というか時間短縮)」で、クライアント側に処理を肩代わりしてもらうことで、サーバ側の硬直時間を作らない仕組みになっています。
少し奇妙に思われるかもしれないのですが、これはPHPがシングルタスクである点から由来しています。例えばGoogleやアマゾンへいくつかのリクエストを送るのですが、個数が増えると順番に実行していかなければなりませんので、終了するのに時間がかかってしまうのです。そこで、Ajaxで複数のリクエストを同時に発行し、効率よく結果が得られるようになっています。
連想くんの例はあくまでも一例なのですが、UIとしてのAjaxはもう過渡期かなと思いますが、そのほかの使い方も出来るのではないか、という可能性みたいなものを感じています。

【青木さん:連想検索】

実は、全く同じコンセプトが当方の「連想くん」だったりするのです。
ただし、連想くんの連想エンジンは、全く違うもので、青木さんのところはかなり本格的なアルゴリズムのもとで行っているようですが、当方のものはかなり「エセ」だったりします(^^;
これからは連想検索の時代だと思います。
「検索のコンシェルジュ」的な存在だと思います。
間違いなく、今後の主流になるのではないかと予感があります。
本当はちゃんとご挨拶して連想検索について熱く語りたかったのですが、タイムアウトでその夢は叶いませんでした(涙。

【梶原さん:CakePHPerのためのBDDのすすめ】

SpecというツールやBDDという技術は実はよく知らないのですが、こういった考え方は必要かなと思います。考え方のフレームワークを実現するツール、という印象を受けました。あまりにも知識がなさ過ぎてコメントが難しいのですが、今後勉強が必要と感じました。

以上、ざっと書かせていただきましたが、私はまだ小さなところでやっているなぁと感じました。
また機会がありましたら発言させていただきますが、この次はもっとホット&クールなネタを用意しないとですね。

長文失礼いたしました。
ごめんなさい、昨日今日ほとんど寝ていないので超眠いです。
今日のところはもう寝ます。

【追記】
ねねとまつさん(赤がすきさん)、捕捉ありがとうございます。
トラバ張っていただけているみたいなのですが、何故か管理画面上では出ているのに、公開画面に出てきてないのです(涙)すみません…出てきましたー
Tplcutter期待されていたそうで、大変に嬉しく思います。資料をなる早で公開させていただきます。

【追記2】
ご紹介いただいてありがとうございます。
以下Tplcutter関連のコメントを捕捉です。

creazy photograph :  CakePHPカンファレンス東京:参加レポート
ラボブログ : CakePHP カンファレンス東京で「フェイス女学園」が紹介されました!
看招 血染東方一片紅 : CakePHPカンファレンス東京に行ってきた
本を読む : CakePHPカンファレンス東京」にオンライン参加
WEBで地域活性化~岐阜県中津川市加子母から発信☆WEBシステム屋の日記~ : CakePHPカンファレンス東京に行ってきましたよー
d.tosh10の日記 : 10/25 CakePHPカンファレンスに行って
パンプキンスパイスラテ : CakePHPカンファレンス東京にいってきた!
/halt/Snapshot : CakePHPカンファレンス 東京は最高のイベントでした
tdoiの日記 : CakePHP カンファレンス Tokyo
Think Twice : カンファレンス振り返り
わすれないように. : cakePHPカンファレンス@tokyo に参加してきた

【Tplcutter】Tplcutter0.2.0公開いたします

新バージョンのTplcutter バージョン0.2.0を公開いたします。

先日指摘しましたelement関連の不具合の修正と、新機能である「ピース」機能の実装をいたしました。

「ピース」機能を簡単に説明いたしますと、エレメントは「繰り返し流用したい部分をあらかじめファイルに書き出しておき、それを呼び出す」機能であるのに対し、「繰り返し流用したい部分をあらかじめメモリに蓄積しておき、加工時に指定の場所にコピーする」機能を提供します。こうすることで、実際の表示の際に余分な処理を抑えることが出来、展開速度の向上を見込むことが出来ます。

なお、ピースは同一アプリケーション内であれば、テンプレート内のどの場所に記述しても有効に働きます。つまり、指定した領域のあるテンプレートファイルと異なったテンプレートファイル内でも呼び出すことが出来ます。

使用例はサンプルファイル内にありますので、そちらをご覧いただけますと幸いです。

とりあえず使えるツールになったっぽいので、よほどのバグがない限り、しばらくバージョンアップは控えることにします。まだいくつかやりたい機能はありますが、それは現在構築している新企画サイトの作成が終わってからにしたいと思います。

*************************************************
    テンプレート加工ツール「Tplcutter」簡易説明書
    Copyright (C) 2008 ECWorks ( http://ecw.seesaa.net/ )
*************************************************
 設置方法など詳細につきましては、アーカイブ内のドキュメントをお読みください。

————————————————–
■はじめに
————————————————–

 現在主流になりつつある、フレームワークを用いたWEBアプリ開発では、HTMLファイルやPHPファイルを直接表示する手法は少なくなり、Viewシステムを介してテンプレートファイルを読み込み、それを加工した後に表示する手法が一般的となりました。
 ところが、テンプレートファイルは通常外部から見えない領域に格納されるため、デザイン編集作業の際にテンプレートファイル内に記述する画像など表示物等のリンクが実際のリンクと異なってしまうため、編集が困難になるという問題が発生します。

 そこで、デザイン時では普通のHTMLを編集するような感覚でデータを作成し、それらテンプレートとその他ファイルを適切な位置に配置できるようなツールが実現できないかと考え、本ツール「Tplcutter」を開発しました。
 デザイナー側から見ますと、サイト制作ツール等で編集可能なディレクトリ構造のまま作業し、それをそのままプログラマー側に受け渡せます。また、テンプレートは読み込んで加工したものを別のディレクトリに作成し、その他表示物はコピーしますので現在稼働しているサイトのデザインを崩すことなく直接編集することも可能です。
 そして、最大のメリットとしては、コマンド一発で全てのテンプレートを更新することにあります。デザイナーによって制作されたテンプレートを適用するためには、これらファイルを加工したり、異なるディレクトリに配置したりする必要がありました。デザインが変更されるたびにこの作業を行わなければならないため、無駄な手間が発生します。本ツールはこれら作業を自動化しますので、時間の節約や更新間違い等による不具合の発生を極力防ぐことが出来ます。
 本ツールは、もともとCakePHPフレームワークにて利用できるように開発したのですが、SmartyやSynfony等、ほかのフレームワーク・テンプレートシステムでも利用できるように、PHPコマンドラインでも利用できるよう拡張いたしました。ini形式ファイルにて細かな設定が出来ますので、幅広いシステムで使用することができます。

————————————————–
■動作環境
————————————————–

 本ツールは、CakePHP1.2.xのCakeコンソール、もしくはPHP4/5のコマンドラインで使用することが出来ます。

 CakePHPにてテンプレートを利用する場合は、Cakeコンソールで使用することで、ほぼ無設定でCakePHP向けのテンプレート加工をします。
 同様に、PHPのコマンドラインから利用する場合は、ほぼ無設定でPHP向けのテンプレート加工をします。

 どちらの方法でも、ini形式ファイルにて設定することで、異なるテンプレートシステム向けの加工をすることも可能です。

————————————————–
■ご利用条件
————————————————–

 本ツール一式は使用もしくは再配布について、無料でご利用いただけます。
 本ツールおよびアーカイブ内に含まれる全ての著作物に対する権利はECWorksが保有しており、GNU一般公衆利用許諾契約に基づいて配布しております。再配布・改変等は契約の範囲内で自由に行うことが出来ます。詳しくは、添付のGNU一般公衆利用許諾契約書をお読みください。
 なお、本ツールは一般的な利用において動作を確認しておりますが、ご利用の環境や状況、設定もしくはプログラム上の不具合等により期待と異なる動作をする場合が考えられます。本ツールの利用に対する効果は無保証であり、あらゆる不利益や損害等について、当方は一切の責任をいたしかねますので、ご了承いただきますようお願い申し上げます。

▼ダウンロードはこちら
tplcutter-0.2.0.zip

【SmartyView】SmartyView1.2.0.7296 For CakePHP1.2

 CakePHP1.2用SmartyViewの最新版を公開いたします。

 このViewを利用することで、SmartyテンプレートをCakePHPで利用することが出来ます。
 ご利用には別途Smartyテンプレートシステムを用意する必要があります。

 Bakeryにも1.2用SmartyViewが紹介されているのですが、CakePHP1.2.0.6311betaあたりから仕様の合わない部分や不具合等がいくつかありましたので、作り直して公開しております。基本的に、アーカイブを解凍していただき、そのままのディレクトリ構造をcakeシステムに適用していただければ動作すると思いますので、導入は簡単です。是非ご利用ください。

 詳しくは、アーカイブ中のreadmeをお読みください。

※RC1版と比べ、コードはだいたい同じなのですが、ヘルパーの呼び出し方法が違う等若干異なっています(view.phpのアップデート由来です)。RC1で本バージョンを使用した場合も、おそらく動作はするとは思いますが、どのような挙動をするかまでは良く分かりませんので、一応無保証でお願いします。

ダウンロードはこちら

▼CakePHP1.2.0.7296 RC2向け
smartyview-1.2.0.7296.zip

CakePHP1.2RC1/beta版のSmartyViewは こちら で紹介しています。

【SmartyView】SmartyView1.2.0.7119/6311 For CakePHP1.2

 CakePHP1.2用SmartyViewの最新版を公開いたします。

 このViewを利用することで、SmartyテンプレートをCakePHPで利用することが出来ます。
 ご利用には別途Smartyテンプレートシステムを用意する必要があります。

 Bakeryにも1.2用SmartyViewが紹介されているのですが、CakePHP1.2.0.6311betaあたりから仕様の合わない部分や不具合等がいくつかありましたので、作り直して公開しております。基本的に、アーカイブを解凍していただき、そのままのディレクトリ構造をcakeシステムに適用していただければ動作すると思いますので、導入は簡単です。是非ご利用ください。

 詳しくは、アーカイブ中のreadmeをお読みください。

※RC1で大きな仕様変更があったため、こちらの仕様に合わせて修正したSmartyViewを以前のバージョンのCakePHPに適用することが出来ませんが、afterSmartyRenderコールバックが呼び出されない不具合がありましたので、以前のバージョンを修正したものも合わせて公開させていただきます。6311betaを引き続きお使いの方は、SmartyView1.2.0.6311版をお使いください。

ダウンロードはこちら

▼CakePHP1.2.0.7119 RC1向け
smartyview-1.2.0.7119.zip

▼CakePHP1.2.0.6311 beta向け
smartyview-1.2.0.6311.zip

CakePHP RC2/RC3をご利用の方は こちら をご利用ください。

なぜCakePHPなのか?

【おことわり】
本記事は2008年1月末に書かれたものです。
各フレームワークとも現在はバージョンアップを重ね、より高機能になっているため、記事内で指摘した各長所短所が現在のものと異なる場合がございます。その点を踏まえてお読みいただけますと幸いです。

CakePHPそのものにについては他でもさんざんに取り上げられているでしょうから、解説等はほどほどにしておいて、なぜCakePHPを選択したのか、そこについて語ろうと思います。CakePHPについてよく知らないようでしたら、 こちら に詳しく書かれていると思いますので、是非ご一読されてみてください。

昨年初冬あたりから、PHPフレームワークの導入に関心を持ち始めいろんなものを研究していました。その中でもとりわけ、3大フレームワークと呼ばれている「Zend Framework」「symfony」「CakePHP」の3点に絞り、実際にインストールして試用したりしてみました。

何故フレームワークかと言いますと、私は3つの問題を抱えていまして、その問題解決には導入が必要ではないかと考えていたからです。
その問題は、一方は会社で、一方は私的なサイト構築で起きていました。

まず1つめは、PHP4のサポートが昨年末で終了してしまうという問題でした。会社ではPHP4ベースの開発をずっと行ってきていましたので、今更PHP5に切り替えるというのはとても大変なことです。大きな仕様変更のためにPHP5でPHP4のプログラムを動かすことはほぼ出来ませんから、現在動いているサーバを止めてPHP5をインストールすることは出来ませんし、かといって新たなサーバを準備するにも時間がかかります。仮にサーバ準備を進めるにしても、その間にも制作中の案件がありますので、PHP4サーバで動くプログラムを開発しなければならない。しかし、今後PHP5で動かすことは目に見えていますから、その間のつなぎとして、移植性に優れたフレームワークが必要でした。

2つめの問題点は、社内開発スタッフ間での技術共有が思ったように出来ていなくて、現状異なるスタッフがプログラムを修正することが困難になっていました。
基本的に、今まで開発してきた案件は新規制作が多く、それほど大きな規模ではなかったため、個々が今まで作ってきたサイトをベースにして、改変する形で作ったものが多いのですが、先日たまたま1人では納期的に間に合わない案件が出まして、共同作業がどうしても必要になりました。その際に、私の作っていたフレームワークもどき(笑)をベースにしたのですが、それを理解してもらうのにかなりの時間を要したものですから、これではいけないなと危機感を感じました。
私がフレームワーク制作にかかりきりになれるのなら、社内標準のフレームワークとして共有することが出来るのですが、残念なことに私もサイト制作はしなければなりませんから、2足のわらじを履くことは出来ません。実際にそのようなことをやってみていたのですが、案の定フレームワークのメンテナンスが出来なくなったため、もうこれは止めようと思っていました。PHP4で書かれているので移植が必要なのですが、そんな時間もないため、ちょうど良い機会とも考えていました。
そのためには、豊富なドキュメント量のあるオープンソースフレームワークが必要と考えました。ドキュメントさえしっかりあれば、自分が教える必要がないからです。

3つめの問題は、私的なサイトを現在制作中なのですが、何せ手伝ってくれる人もいませんので、開発コストのかからない方法としてフレームワークがどうしても必要でした。出来れば、開発の力を中身の部分だけに特化して、基本的動作に関しては不具合が少なく手のかからない簡単なものが良いと思いました。専用サーバこそ用意しましたが、環境にもコストをかけられないため、軽量で動くことも大切でした。

以上の問題点を踏まえつつ、先に説明した3つのフレームワークを試用しました。

まずZend Frameworkですが、バージョン1が出たばかりということもあり、導入事例があまりないのが最大の欠点でした。オフィシャルが用意しているリファレンスは大変にしっかりしたものなのですが、残念なことに、一番肝心の「構築方法」が具体的に書かれているものが無く、現時点で最も開発に時間がかかりそうだと結論しました。
ただし、Zend Frameworkはどちらかというとライブラリに近く、機能単位で分割されているため、それを個別で利用することが出来るという利点があります。つまり、symfonyやCakePHP内でも、Zend Frameworkの機能の一部分を使うことが出来るのです。なので、これは余裕が出てきたら再度研究する価値はあるかなとも思いました。

次に、一番悩んでいたのがsymfonyです。
実は、会社ではCakePHPで、私的サイトではsymfonyで行くつもりでいました。会社ではPHP4を併用しなければならない点があり、その時点でCakePHP以外に方法はないため、これを上回る優れた点がない限りは会社でsymfonyを使うつもりはありませんでした。私的サイトの方はPHP5でOKなため、単純に機能の善し悪しで決めることが出来ました。
もちろん、異なる技術を同時に覚えていかなければならないため、効率が悪いのは確かです。ですが、会社で作成した技術を転用していると思われるのも癪(しゃく)なので、この辺に関してはむしろ良いかなとも思っていました。
実際に、symfonyは「symfonyコマンドによる作業の自動化」と「yamlやxmlによるコーディングの自動化」「adminジェネレータ」が大変に優れていて、特にデータベースに関係のある操作を行うのに最も使いやすいフレームワークです。
例えば、開発中にテーブルのカラムをどうしても増やさなければならない場合、プログラムを修正したあと、データをコンバートするのがどうしても手間でした。場合によっては、今まで開発に使っていたデータを捨て、新しく入れ直すこともありました。symfonyでは、yamlもしくはxmlに記述したモデル情報を修正し、symfonyコマンドで2つの操作を行うだけで、データは元のまま、カラムだけが増えているという大変に嬉しい状態になります。CakePHPでは、こうはいかないのです。

しかし、symfonyには2つの欠点があり、最終的にそれが導入の妨げになりました。

1つ目は、JOINを含む、複数の関連性のあるカラムをモデルで受け取る場合にsymfonyはどうやったら良いのか理解ができなかったことです。MVCの概念からいくと、データ操作はモデル内で完結した方が美しいのですが、モデルAのなかでテーブルAのみを操作するのは問題ありませんが、テーブルBをJOINした場合のモデルBの関連性をどのように表現して良いか、全く分かりませんでした。CakePHPは、モデルAを主としてモデルBをJOINしても、問題なくアクセスできるし、さらにCakePHPは、「アソシエーション」機能で、モデルAに関連したモデルBを一括取得できるというメリットもありました。

2つ目は、symfonyには強力なプラグイン機能があり、PEARアーカイブで簡単にインストールができるという利点があるのですが、残念なことに同じプラグイン機能を複数持つことが出来ないのです。
symfonyは、プロジェクト内に複数のアプリケーションを持つことが出来るため、例えば一般向けのフロントエンドと管理者向けのバックエンドを1プロジェクトで管理できます。例えば、フロントエンドに会員向けのログイン機能、バックエンドに管理用ログイン機能を用意するとして、認証ログインのプラグインであるsfGuardPluginを用いたくても、同じデータテーブルを使わなければならないのです。一般データ内に管理者データを混ぜることは大変に危険ですから、このやり方はNGです。
また、sfSimpleBlogPluginというブログ機能もプラグインで提供されているため、簡単に導入することが出来るのですが、これも複数ブログをプロジェクト内で持つことは出来ないのと、sfGuardPluginが強制的に組み込まれていて、既に使っている場合に重複してしまうなど、いろいろな問題点に遭遇しました。

提供されているプラグインを手っ取り早く入れて単一のサービスを手軽に始めるには大変に良いかもしれませんが、複数の機能を組み合わせるような場合には、symfonyは向いていない気がしました。
もっと言えば、枠の中で動くようなシステムはsymfonyは最短で作ることが出来ますが、ちょっとでも枠から外れたものを作らなければならない場合はsymfonyでは難易度が高く、逆に妨げになると感じました。

CakePHPは、symfonyと比べて構造が簡単でそれほど大きくなく、システムが大変に理解しやすいです。フレームワーク内の動きがソースで追えますので、何か不具合があった場合に安心感があります。symfonyはPEARで簡単にインストールすることが出来ますが、パッケージがlibディレクトリに隠れてしまうため、扱いにくいかもしれません。その上、symfony以外で要求する(PEAR)アプリケーションが多く、テストサーバと本番サーバのように、他のサーバに同じ環境をつくらなければならない場合、整合性がとれなくなる可能性もあります。CakePHPはバージョンアップしにくい欠点はありますが、逆に言うと異なるバージョンを併用することも出来、これはこれで便利かもしれません。

いろいろと細かい点を書いたかもしれませんが、symfonyは「サイトオーナー向け」、CakePHPは「サイトデベロッパー向け」と書いた方が分かりやすいのかもしれません。symfonyは有りものを使うのに便利で、少ない手順でサイトが作れるものに対し、CakePHPは作り込みが前提で、作り込むための基本的なものが準備されている点に違いがあると思います。どちらも優秀なシステムだと思います。ただ、私の用途からいくと、CakePHPの方が理想的であるため、導入を決めました。

ただ、ビューテンプレートについては若干使いにくく、出来ればテンプレート内にPHPコードを埋め込みたくないため、Smartyを使うことにしました。ビュープログラムをSmarty用に改良したものが紹介されているのですが、若干不具合があるため、それを参考に最新版のソースコードから作り直したものを作成しました(そのうちに紹介しようと思います)。これにTinyMCEを組み込み、携帯対応コンポーネントと自前で作成した認証コンポーネントを組み込んだものを「フレームワークのフレームワーク」として使っていく予定です。

そんなわけで、作成途中で見つけたTips等を今後紹介していこうと思います。CakePHP初心者ですのでたいした情報を公開できないとは思いますが、それでもお役に立てれば幸いです。是非宜しくお願いいたします。

【オススメの参考書】

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。