2006年08月30日

CakePHP プロジェクトのスピード最適化

CakePHP プロジェクトの最適化の仕方とデバッグで生じる現象について。このあたりはまだあまりドキュメントになっていないと思われるので参考になります。

Optimising cake
http://groups.google.com/group/cake-php/browse_thread/thread/29a2f971828d7bf4/

Optimizing cake projects
http://groups.google.com/group/cake-php/browse_thread/thread/75ecc8bee3f7ddfe/

また、CakePHP 解説本にどれくらいの出版ニーズがあるか調査を続けています。適当なところで開始する予定です。どうやら、

=============================================
前半:“Windows上の自宅開発環境でプロジェクトを作成し、レンタルサーバで動かすサイトを構築する”というプロセスを丁寧に説明

後半:Tips 集

   CakePHP API 解説
=============================================
というような内容がよさそうです。日本での関心度もかなり高くなっているようですが、現在のところ、CakePHP に関心を持っている人はかなりの割合で Windows 環境での開発を望んでいるようです。

現在は、1.2 の開発が直近の目標とされていますので、最初の CakePHP本も 1.2 を前提として書かれることになるでしょう。ただ、2.0 で何がどう変わるのか、1.2 のプロジェクトを簡単に 2.0 に書き換える方法についてのノウハウなども入っていたら便利かもしれません。これは時期によると思います。

ちなみに私の開発環境では、自宅サーバは Windows 上の PHP5 と MYSQL  4.1 以降で作業しつつ、それを PHP5 & PHP4 のサーバ + MYSQL < 4.1 の環境にアップロードして最終テスト、という形で開発しています。
ラベル:cakephp PHP framework
posted by SDozono at 17:53| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月29日

海外Google Group からの情報

Cakephp のドイツ語、ロシア語、スペイン語、ポルトガル語、中国語グループなどはぼちぼちと活動を始めているようです。やはり母国語でだれかに尋ねることができる、というのは大きいようです。

ちなみに日本語のMLも作成してみました。
関心のある方はご利用くださいませ。

http://groups.google.com/group/CakePHP-ja

海外Google Group での話題には、“英語以外の環境で使うには”という話題が流れることがあります。これはその一つ。

MySQL - правильные настройки.
http://groups.google.com/group/cake-php-ru/browse_thread/thread/84e44a55a3599dcb/

SET NAMES ... を設定する方法と、現在の状態を取得する方法について。

これは、フランス語グループの Ajax でメニューを作るサンプル
(英語に翻訳してあります。)

http://translate.google.com/translate?u=http%3A%2F%2Fgroups.google.com%2Fgroup%2FCakephp-fra%2Fbrowse_thread%2Fthread%2F4901756061aac28e%2F&langpair=fr%7Cen&hl=ja&ie=UTF-8&oe=UTF-8&prev=%2Flanguage_tools

Google Group 自体に、“Google 翻訳”へのリンクを付けてくれないかなぁ。そのうちに付くだろうなぁ……。
ラベル:PHP cakephp Google Group
posted by SDozono at 10:49| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2006年08月28日

mod_rewrite がうまく動かない!という時は。

mod_rewrite を自宅サーバでうまく動かせない、という場合,cake の画像が出ないのでいらいらするかもしれません。確認するべきところは、

apache の httpd.conf の設定です。

【1】mod_rewrite を有効にする。

#LoadModule rewrite_module modules/mod_rewrite.so

となっているところを、#を外して、

LoadModule rewrite_module modules/mod_rewrite.so

とする必要があります。


【2】AllowOverRide を利かせる。

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None

と書いてあるところを探し、

AllowOverride All

などに書き換えましょう。

詳細は、

http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverride

にあります。

--------------
このディレクティブを None に設定すると、.htaccess ファイルは完全に 無視されます。 この場合、サーバはファイルシステムの .htaccess ファイルを読むことを 試みさえしません。
--------------
ということです。

そして、Apache を Restart することを忘れずに。

ラベル:Apache mod_rewrite
posted by SDozono at 10:35| ロサンゼルス ☀| Comment(1) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月27日

Code Igniter でもテーブルの関連情報を設定

こちらのブログで紹介されていたんですが、
http://blog.probo.jp/index.php/comment/post/1

CIにテーブルアソシエーションの情報を組み込むモデルを書いている、という下記の記事を読みました。

http://www.glossopteris.com/journal/post/table-relationships-in-ci

オープンソースなので、こういう技術革新はどんどん進みますね。

Grani と Sleipnir の関係のように、

基本構造として、「初心者でも直感的に理解できる内容」にしつつ、機能がもっと欲しいよ〜、という開発者には、「こんなモジュールもあるよ」と提供できるようなシステムにしておく、というのもかなりいいやり方だと思います。

どこまでこの技術が進むか、ちょっと注目しておきたいと思います。
posted by SDozono at 22:07| ロサンゼルス ☀| Comment(0) | TrackBack(0) | PHP Framework | このブログの読者になる | 更新情報をチェックする

2006年08月25日

jQuery と CakePHP

jQuery
http://jquery.com/

の評判を cakephp でも聞くようになりました。

http://www.thinkingphp.org/2006/08/24/jquery-is-a-true-prototype-killer/

コメントには、
-------------
As far as CakePHP + jQuery integration, I’d be happy to promote this and donate any support possible to making this happen. We’re currently, also, working with two other PHP projects: Symfony and Drupal, trying to get jQuery integrated with their code base.
-------------
とあります。JavaScript & Ajax 関連についてはもう一つ、大きな波がくるかもしれません。

ラベル:PHP AJAX framework cakephp
posted by SDozono at 12:01| ロサンゼルス 🌁| Comment(0) | TrackBack(0) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2006年08月24日

CakePHP 日本語情報ニュースリーダ

lilina という RSS ニュースリーダを使用して、cakephp 関連の情報を拾っています。

http://www.cakephp.jp/rss/

最新情報を知りたい方はどうぞ。
ラベル:cakephp PHP framework
posted by SDozono at 16:05| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2006年08月23日

PHP フレームワークはどれがよいか

PHP フレームワークはどれがよいか?と考えたとき、そもそもどれくらいの種類があるのだろう?と思ってしまう人も多いと思います。また、いわゆる”世間一般での評価は?"と知りたくなる場合もあるでしょう。

せっかくの WEB用フレームワークのことなので、WEBのことはWEBに聞いてみましょう。

http://www.coldscripts.com/PHP/Scripts/Programming/Framework/

上記は、閲覧者が評価を加えることのできる"PHP Framework集"です。うまいことを考えたもんだ。
posted by SDozono at 17:12| ロサンゼルス ☀| Comment(0) | TrackBack(0) | PHP Framework | このブログの読者になる | 更新情報をチェックする

2006年08月22日

CakePHP開発者たちによる広告コミュニティWEBサイト

新進気鋭のPHPフレームワーク、"cakephp power" で、広告業界人用コミュニティが作成されたようです。これは、フレームワークのメインの開発者たちによるサイトです。プレゼンテーション的な意味合いもあるように思います。

ajax を多用し、Web 2.0 を意識した作りです。

http://adjrs.com/

広告、またPHPフレームワークとその技術に関心のある方はどうぞ。
posted by SDozono at 10:06| ロサンゼルス 🌁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月21日

PanasonicのAjax/PHP開発者もCakePHP Bakerになったらしい。

My-BIC = Easy Ajax
http://www.litfuel.net/mybic/
というAjaxプロジェクトの開発をしている Jim Plush 氏が Cake を使い始めたらしい。ちなみに Jim Plush 氏へのインタビューは、

Pro::PHP Webcast - Interview with Jim Plush of Panasonic
http://podcast.phparch.com/main/index.php/episodes:20060421
のポッドキャストで聞くことができる。

PHP の問題は、“開発者が足りない”ということらしい。

ちなみに Cake に対する感想・分析は下記にあります。

I'm officially a Baker with CakePHP
http://www.litfuel.net/plush/?postid=138

Zend Framework をまず最初に使ってみての感想は、

"wow that's about all I can do."// えっ、これだけ?

というものだったようです。

CakePHP に関してのマイナス面として挙がっているのは、Active Record パターンを使用していることによるパフォーマンスへの影響です。非常に“美しい”コードが書ける代わりに、アクセスパフォーマンスとしては、PHPによるデータベースアクセスの“最速なコーディング”をしているわけではありません。

ただ、これも時間が解決してくれるのではないか、と考えています。データベースへのアクセススピードに関する改善提案も、チケットでたびたび指摘されてきました。初期に比べると、かなり最適化されてきたのではないでしょうか。また、Table association に関しても、bindModel などの関数によってかなり自由な設定ができるようになってきました。さらに現在の最新バージョンには、cache(キャッシュ)システムが追加されているため、これにより、数倍から数十倍のスピードアップが期待できます。

また個人的には、開発の最終phase の段階で、DAOクラスを生成する機能があってもよいように思っています。(Qcode的?か。)

とにもかくにも、Jim Plush の結論は下記のようなものでした。

I'll probably say the more advanced developer will probably lean towards CakePHP as the Zend Framework is purely static calls at this point.
ラベル:cakephp PHP framework
posted by SDozono at 12:20| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月19日

WebサーバもまとめてCakePHP と一緒にインストール。"cupcake"

Rails には WEBrick というwebサーバが付属しています。
CakePHP でも、Lighttpd を一緒に配布してしまうスクリプトを書いている方がいます。

その名も "カップケーキ"(cupcake)。
ケイクPHPのよいお供になるでしょうか……。

http://www.johndavidanderson.net/blog/?p=60
ラベル:cakephp PHP framework
posted by SDozono at 21:44| ロサンゼルス 🌁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月17日

あの人もZFからCakeへ!

かの有名な(?)phpdeveloper.org の方も、Zend Framework を使ったあと、CakePHP を試しているようです。"I have to admit, it’s nice - very nice."という感想です。

Baby Steps from ZF to Cake
http://blog.phpdeveloper.org/?p=39

Zend Framework を使ったあと CakePHP にスイッチすると、幾つかの点で驚くことがあるかもしれません。この方のまとめている点としては、

・当たり前ですが、ディレクトリ構造と命名規則は違うので、最初は抵抗があるかもしれません。

・"Model"に対するアプローチがかなり違います。CakePHP の場合には、データベースのテーブル名の単数形を Model につけてやるだけで、まるで生き物のように動き始めます。SQL のことはほとんど考える必要がありません。フレームワークが面倒を見てくれます。

・命名規則は、ZF より CakePHP のほうがかなり重要なポイントになります。

いちど、Rails の本を読んでから CakePHP に来るのもよいと思います。
コメントなどにもありますが、このあと問題になるのは、

Symfony
Code Igniter
(PHP on TRAX)
CakePHP

のどれがよいの?ということになりますが、

○PHP4/PHP5 で動くのは、
Code Igniter と CakePHP です。

○テーブル同士の関連付けができるのは、
Symfony, PHP on TRAX, そして CakePHP です。
ラベル:zend framework Cake
posted by SDozono at 10:21| ロサンゼルス ☀| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年08月16日

改良はまだまだ進む。

1.2 に向けた改良を見ていると、まだまだアイデアは尽きていないようです。
モデルでエラーが発生した場合のコールバックや、ヘルパーのさらなる改良、ページネーションのフレームワークレベルでのサポートなどが既に作りこんであるようです。

IDE もWEBで統合できるといいかも!
Microsoft Office も WEB で動く時代だし。
ラベル:cakephp PHP
posted by SDozono at 10:06| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2006年08月10日

現在、32のCakePHP使用事例

CakePHP本家のサイトに、Showcase(活用事例)ページができていました。

現在、32の事例URLがあります。時間のある時に、ひとつずつ見ていくとよいかもしれません。

http://wiki.cakephp.org/showcase
posted by SDozono at 22:25| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月09日

キャッシュ機構を使うと速度が数倍に

Cake にはキャッシュ機能があります。これは「毎回、アクセスがあるたびにデータベースに読みにいって、同じデータを繰り返し生成するのではなく、1度作成した“画面”を保存しておき、データベースに何も変更がなければ(また何も指示がなければ)保存したものをさっと返してスピードをかせぐ」という機能です。

Cake自体にこの機能が追加されており、利用するとかなりのスピードアップになります。ただ、まだ安定して使えるのかどうかは、まだよく分かりません……。色々、実験しているところです。

下記も参考になりました。

cakeのページキャッシュ機能を利用する
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=88&forum=8

なぜか、マニュアルには、この肝心なところがまだ書いてないんですよね〜。
問題が生じたら、知っている人が伝えることで、コミュニティとして解決できるとよいと思います。
posted by SDozono at 22:53| ロサンゼルス ☁| Comment(0) | TrackBack(1) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2006年08月08日

PHPフレームワークに至るまでの系譜

PHPフレームワークが花盛りですが、それらは決して突然に出現したわけではなく、そこに至る道のり、というのがあるわけです。また、RoR の発想が急速に受け入れられたのも、みんなが、「そうそう、こういうのがあると良かったんだよね」と納得できたからです。

どうしてでしょうか。そのあたりをデータベースへのアプローチという観点から、少し振り返ってみます。

データベースとの兼ね合いで外せないプロジェクトとしては、
phpMyAdmin があります。
どんな MYSQL のデータベースでも表示し、編集・設定 が WEBからできてしまうという驚異のソフトです。MYSQL を利用している人であれば、使ったことのない人はいない、というほどのものだと思います。このソフトは瞬く間に世界中に広がりました。
sourceforge.net に登録されたのは、December 2002 です。

これを使った人の中で、ある人たちはこう考えました。
「この中から必要な機能だけを取り出せたら(またはどんどん機能を削除できたら)、WEB上の業務管理ツールを半自動で作れるんではないか。楽もできるぞ。」

その線で開発されたプロジェクトとしては:

phpMyEdit
PHPLens
MYSQL Table Editor
PhpBuns
dbPerceptor

などがあります。どれも完結型のアプリケーションで、「ホスト名、データベース名、パスワード、テーブル名を登録すると、そのテーブルに対する、挿入、編集、削除作業などをする GUI 画面を作成してくれる」というものでした。

ソフトごとに設定の仕方は違い、テーブルの関連付けなど、できることには差がありました。個人的には、phpMyEdit がいちばん優秀だったと思っています。ただ、これらのソフトの欠点は、「想定外の動作をさせようとするとえらく難しい」というものでした。仕事をさっとすませたとしても、お客さんや上司から、「ここを〜に直して」と言われた場合に、もしそれがソフトの想定外であった場合には、自分でコードの中に分け入って解決策を見つける必要が生じてしまったのです。

「な〜んだ、こんなに苦労するのなら、はじめから自分で手書きしたほうがよっぽど早かったかも」と、思った人もいたわけでした。

そうこうしている間に、Windows用のMYSQL管理ツールの中に、「管理用PHPコード自動生成付き」のものが現れました。有料のものもいろいろありましたが、

MyDB Studio
のように、フリーウェア?になってしまったものもあります。

また管理ツールというよりは、「PHPスクリプトそのものを生成することが目的のWindows ソフト」なども現れました。
dbQwikSite

こうしたツールでコードを作らせると、とりあえずは雑誌の見本コードのようなものをじゃんじゃん吐き出してくれるので、修正するのは楽でした。業務用のアプリケーションも作れますよ、というデモもよく見かけたと思います。

しかし、プログラマーを名乗る者にとっては、自分がコーディングしたとは言えませんし、いつまで会社のサポートが続くかも分かりません。また、出てきたソースを見ると、なんだ、自分のほうがもっと上手に書けるぞと思ったりもしてしまったのではないでしょうか。

結局、どこかのWEBデザインの会社が、簡単にPHPコードを作るための簡便策として使ったぐらいだったのではないか、と予想されます。

*また、ASP.net と同じような環境を実現するものとして、TurboPHPがさっと現れ、そしてさっと過ぎていってしまったようです。*

そのうち、Windowsを使わなくても、「WEBでWEBスクリプトを作る」という発想も生まれました。

ScriptCase などは、わりと派手に宣伝していたようにも思います。

このあたりで、「プログラマーとして仕事をしつつ(させつつ)、なおかつデータベースに対する簡単なアプローチ、という両方を実現する仕組み」の定番ができてもいいのになぁ、とみんなが待つようになった気がします。

この頃、「お手軽コード生成ツールではなく、単純にがりがりとコードを手書きするのでもない手法があるはずだ。PHPにおける定番は何になるだろう」と思いはじめていたと思います。

もう一つのアプローチとして地味に発展していた技術は、
「MYSQL に接続する部分のクラスだけを自動生成して、それを利用すればいいんじゃないの?」というものでした。GUIスクリプトもついでに生成してくれるものもあります。

phpcodegenie
MyDBO
PHP Object Generator, (POG)
propel
MyObjects
phpersistence

などのプロジェクトが起こりました。このあたりは大小さまざまなものが大量にありますので、すべて列挙することはできません。しかし、共通点としては、「データベースにアクセスするクラスを生成する」というものでした。

このあたりで“MVC”という考え方が主流になってきます。MVC とは、「データを扱う部分(モデル,M)と、画面の表示を決める部分(ビュー,V)と、URL を指定された時に、どんな処理をするかを決める部分(コントローラ,C)に分けてしまう」という考え方です。

この点で Mojavi という PHP フレームワークの功績は大きいと言えます。PHPでも、手軽なコード生成という考え方を超えて、データベースとロジック、デザインの分離を考えた統合的な枠組みが作れるのではないか、と多くの人が考えるようになりました。

(Zend はまだこの段階では何もリードしていなかった、とも言えます。)

こうした経緯を経て、
現在では、

Symfony
CakePHP
Code Igniter
Qcodo
PRADO

しばらくしてPHP開発元のZendも動き出し、
Zend Framework

(日本では MapleEthnaなど。)

その他のいろいろなフレームワークが開発されるに至っています。
ラベル:PHP framework cakephp
posted by SDozono at 11:33| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月07日

CakePHP の日本語プレゼンテーション

今年の2月に、安藤さんが作成された、CakePHP のpdfがあります。
http://puyo2.upper.jp/cake/
よくまとまっていますので、手始めに見てみるとよいと思います。

なお最新版では、

・tmpディレクトリの位置が変更された。
・開発画面のデザインが刷新された。
・一定のネーミングルールが「必須」とありますが、既存のデータベースに対しては柔軟に変更が可能。

などの特徴が加わっています。参考まで。

------------------------------------------
9/25 日にさらに情報が追加されています。

2006/09/25 第16回PHP勉強会で発表したCakePHPの資料
「続・CakePHP入門」発表資料PDF  
CakePHPの周辺状況について紹介した資料です。
------------------------------------------
ラベル:PDF cakephp PHP framework
posted by SDozono at 16:44| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月04日

Community Translation System made by CakePHP

I started making a "Community Translation System" by making use of CakePHP RAD Framework.

http://cakephp.jp/cake_manual/

Features:

- This is Not a Machine Translation. Users can contribute their translations line by line.

- You don't need to have TRADOS, Helium, Logoport, etc... All you need is a web browser (and a translation skill :-).

- You can start your contribution to a translation project by just one line. You don't have to translate all the materials alone.

- If a site changed, the new sentences will appear in the target language, so you will not miss the new information.

Future features(hopefully..):

- Translator's profile display. So they can promote themselves by contributing the project.

- Translators Comment & Communication System: Translators for other languages can discuss the meaning of the target sentences on the Web.

- Quality Evaluating: Like a digg.com, community can controll the quality of the translation.

- Translation Memory and Dictionary Search.

- Importing from machine translation sites.

- Scheduling

- Commenting

I spent my time for this system just one day. But it's start working. CakePHP is a Really RAD framework, I think.
posted by SDozono at 10:59| ロサンゼルス ☁| Comment(0) | TrackBack(0) | Programming | このブログの読者になる | 更新情報をチェックする

2006年08月03日

Flashとデータベースを連携させたWEBアプリの開発

Flash とデータベースを組み合わせたWEBアプリを作る際に、試してみたいのが、「CakePHPでデータベースまわりを楽にする」手法です。

チュートリアル・デモとして、

The Bulletin Board with CakeAMFPHP
http://cakeamfphp.rd11.org/

というのがあります。PHPとFlashの知識があって、AMFPHPにも関心のある方には興味深い内容と言えます。
posted by SDozono at 09:57| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月02日

CakePHP 講習会

CakePHP の開発者(Garrett J. Woodworth)による講演(Class)が今日、ロサンゼルスで行なわれるようです。

July Meeting: CakePHP, a PHP Framework
http://lampsig.org/new/archives/55-July-Meeting-CakePHP,-a-PHP-Framework.html

う〜ん。タイミングがあってLAにいる時であれば出席してみたかった。

プログラム:
・CakePHP のインストールの仕方
・CakePHP の構造 - ディレクトリ解説
・モデル、ビュー、コントローラ
・bake.php (コマンドラインツール)ではじめる
・アプリケーションのプロトタイプ - 必要とするものの足場組み(scaffolding)
・アプリケーションのカスタマイズ - 見ばえのよいレイアウトを追加し、ビューを強化。
・アプリケーションの拡張 - ヘルパーとコンポーネント
・まとめ/質疑応答

ちなみに来月は symfony だそうです。
ラベル:cakephp PHP framework
posted by SDozono at 15:18| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする

2006年08月01日

Google コミュニティ一発検索

CakePHP に関する Google グループがあちこち出来はじめています。

http://groups.google.co.jp/groups/dir?lnk=hpsfg&hl=ja&q=cakephp

Cake PHP    メイングループ
tickets cakephp 修正要望記録
cake-php-ru   ロシア語グループ
Cake PHP Português ポルトガル語グループ
CakePHP-de für deutsche CakePHP Entwickler ドイツ語グループ
Cakephp-fra     フランス語グループ
dev-cakephp     開発グループ
CakePHP-es      スペイン語グループ
CakePHP database Adapters データベースアダプターグループ
cakephp-cn      中国語グループ

cakephp グループは、現時点で2000人が参加していますね!
posted by SDozono at 14:38| ロサンゼルス ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする