2006年07月11日

CakePHP用ビジネス向け無料テンプレート10種類

やはり、開発をはじめる最初の画面は大切です。先日、Contented Designs のオープンソース・デザインを使用した CakePHP のテンプレートを公開したところ、大きな反響がありました。やはり、PHPフレームワークに求められていることは、次の段階に達しているのかな、と思います。つまり、機能やエンジン部分だけでなく、そこにのっかるデザイン・外観の情報も、フレームワークの選定に大きな影響を与えるようです。

CakePHPを利用したビジネスサイトの構築用に、ビジネスっぽいオープンソースのテーマをCakePHP の default.thtml としてポートしてみました。CakePHPでのビジネスサイト構築を検討なさっている方はたたき台としてご利用ください。
もちろん、MVC分離システムなので、後からの変更も非常に簡単です。
simplyBusiness.PNG

閲覧・ダウンロードはこちらからどうぞ。
http://cakephp.seesaa.net/article/20603204.html

インストールは非常に簡単で、
1)CakePHP をダウンロード、サーバに解凍
2)
  default.thtml    は、 app/views/layouts に置く。
  *****.css      は、 app/webroot/css  に置く。 
  css_images の中のファイルは、 app/webroot/css/images にコピー。
  webroot_imgの中のファイルは、 app/webroot/img にコピー。

CakePHP のURLを見ると、そのテーマに変わっているはずです。
*そうそう、初期状態では UTF-8 になっていますので、お使いのコードに変更してください。default.thtml の中にあります。*

(なお、PHPによるビジネスサイト構築のお問い合わせは、
http://www.cba-japan.com までどうぞ。多言語展開コンサルティング[特に英語、ロシア語、タイ語がメインです。中国語などもOK]やローカライゼーション、システム開発などを行なっています。)






posted by SDozono at 12:42| ロサンゼルス 🌁| Comment(0) | TrackBack(1) | CakePHP template | このブログの読者になる | 更新情報をチェックする

10 Free Business Templates for CakePHP

These template designs are from http://www.oswd.org, Open Source Web Designs.
I picked up some designs especially looks suitable for business use, and changed to default.thtml of CakePHP. You can start your WEB development with business-style designs at once!

Usage:

1) Unpack the zip.
2) put the files:
default.thtml -> app/views/layouts
*****.css -> app/webroot/css
files in css_images -> app/webroot/css/images
files in webroot_img -> app/webroot/img

3) go to your cake URL. You will have new theme!

(Thanks all the designers who released their designs as open-sourced!)

*from 2006/12******************************
from new version of CakePHP (1.1.11.4064),
you need to change one line:

if ($this->controller->Session->check('Message.flash')) $this->controller->Session->flash();

to

if ($session->check('Message.flash')) $session->flash();
*******************************************

andreas02.PNG
andreas02.zip

bermuda_01.PNG
bermuda_01.zip

doctors_office.PNG
doctors_office.zip

internet_services.PNG
Internet_Services.zip

internet_jobs.PNG
Internet_Jobs.zip

nautica01.PNG
Nautica01.zip

nautica02.PNG
Nautica02Liquid.zip

plain.PNG
plain.zip

lazydays.PNG
lazydays.zip

simplyBusiness.PNG
simplyBusiness.zip
posted by SDozono at 04:58| ロサンゼルス 🌁| Comment(2) | TrackBack(0) | CakePHP template | このブログの読者になる | 更新情報をチェックする

2006年07月09日

A question for sd_auth

Dozono,

Thanks for the simple authentication component you developed. It's
perfect for a number of scenarios. I'm new to MVC and to CakePHP.
Is there a way to limit the beforeFilter() Auth Check to the /admin
path? I'm attempting to use CAKE_ADMIN. Also, what is the best way
to implement the logout method?

Thanks,

S.S
----------------------------------------------
Dear S.S.

Thank you for you e-mail.
So far, I haven't tested how to limit the beforeFilter() Auth Check.
But I had thought a same thing. I'm definitely sure we need that kind of technique too.

Your idea sounds a right direction to go.

As for a logout method, I have 'users' table, so

= Model =============================
class UsersController extends AppController
{
  function logout(){
   $this->SdAuth->logout();
   $this->redirect("/index.php");
  }
= View ===============================
<a href="/cake(path of cake)/users/logout">logout</a>
====================================

But I'm not sure if this is the best. Tell us your experiment!

Regards,
S.Dozono

----------------------------------------------
Shunro,

Hey, thanks for the tip! That works great. I think I found a workaround to protect /admin:

change the function in app_controller.php to this:

function adminAuth()
{
// Auth Check.
if($this->SdAuth->isloggedin() == FALSE){
$this->layout = "admin_login";
} else {
$this->layout = "admin";
};
}

notice it is now called "adminAuth()" instead of "beforeFilter()".

Then, in my other controllers, in any method for CAKE_ADMIN I add a call to that function before doing anything:

// This is in pages_controller
function admin_index()
{
$this->adminAuth();
}

I think I could have also gotten your original method to work using a sub-domain for the admin panel like: admin.mysite.com

Regards,

Shane




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

2006年07月08日

隣の芝生はよく見える?

自分の科学技術に関する原体験(こういう言葉の使い方って正しいんでしょうか?)の一つには、Sony のウォークマンに代表される「持ちあるき携帯音楽プレーヤー」があります。1980年代、電気屋さんにカタログをもらいに行くたびに、“これまでになかった新機能”のついたプレーヤー・レコーダーが現れ、子どもながらにわくわく感を味わっていました。「太陽電池ウォークマン」や、「防水ウォークマン」、「ダブルデッキウォークマン」、「カセットケースより小さいプレーヤー」(TOSHIBAだったかな?)などなど、変り種の音楽プレーヤーがまじめに発売されていたんですよね。

PHPフレームワークに関する現在の様子は、あの頃に少し似ている気がします。

で大小さまざまなプロジェクトを見ていると、やはり、隣の芝生が気になるというか、「このフレームワークは、**と比べるとどこがいいの?どこが違うの」という話になると思います。

今回は、「この***プロジェクトは、CakePHPと比べてどうなの?」というテーマで語られているものを少しピックアップしてみました。そこで分かることは、大工道具と同じで、いつでもこれがいい!というような次元の話ではなくて、自分の置かれた環境の中で最善のものが何かを見分けることが必要なのだな、ということでした。ですから、CakePHP を応援しているからといって、このブログが他のフレームワークを否定しているわけではありません。

それでは、「他のプロジェクト・コミュニティは CakePHP をどう思っているのか(語ったか)」
(ちなみに、CakePHP はトリッキーなことをして、PHP4/PHP5の両方で動くようにしているフレームワークです。)
★ほかにもフレームワークはいろいろありますが、今回は、“CakePHPについて言及・または比較しているフレームワーク”という観点で選択しました。

(1) symfony (シンフォニー) …… PHP5 + propel + creole という環境です。

http://www.symfony-project.com/forum/index.php/m/3476/?srch=cake#msg_3476
Adopting symfony's framework as a novice php programmer?

Symfony はとっかかりが難しいかも?というユーザ。あとは、実際に動いている有名なソフト(askeet!)がある、という実績をあげています。
で、その askeet!でも vs 論争があったりして、

http://www.askeet.com/question/how-would-you-say-symfony-compares-to-cakephp-and-qcodo
How would you say Symfony compares to CakePHP and qcodo?

こちらでもみんなで盛り上がっています。基本的に、PHP5だけをサポートしてくれればいい、という人は symfony を推しています。

(2) PHP on TRAX(トラックス) …… RoR(Ruby on Rails)を忠実に(?)PHP で再現しようとしているプロジェクト。こちらもPHP5専用。

http://forum.phpontrax.com/viewtopic.php?t=9
Trax Requirements

共有サーバだって、PHP5が使えるところはいろいろあるよ、という意見。PHP4が必要なら、CakePHPを使うかもね、と言う人がいます。

(3)PRADO …… Zend PHP5 コンテストで1位になり、有名になりました。ASP.NET と Delphi に影響を受けた、イベント・ドリブン型を目指しています。(こういうプロジェクトには、IDEがあればいいと思うんですよね〜。)
http://www.pradosoft.com/forum/index.php/topic,2272.0.html(URLにカンマが入っています。)
Topic: Borrowing from Rails (Active Record, etc)?

RoR とは出発点が違うので真似はしなくていいんじゃないの、という意見が飛び交ったのち、開発メンバーが、いや、Active Record をPRADOにも取り入れたいんだよね、と発言しています。

(4) Qcodo …… NASA でも使用(?)という触れ込みの PHP5 フレームワーク。久しぶりにサイトにいったところ、ずいぶん .ppt が増えています。
http://www.qcodo.com/forums/topic.php/253/1/0/
Qcodo vs Symfony?

RoR 流は、“動的に”テーブルデータを取ってきますが、Qcodo は、DAOクラスをファイルの形で生成して利用します。どっちがいいかと言われたってそれは分からないよ〜、という発言。

(5) Code Igniter …… CakePHP にいちばん近いところにある?後発フレームワーク。PHP4/PHP5コンパチ。Cakeより軽量。
CodeIgniter vs. CakePHP
http://www.codeigniter.com/forums/viewthread/750/

このスレッドを見ても内容の違いはよく分かりませんでした。マーケティングの違いで、こちらのほうが分かりすい、直感的?という CI ユーザの声。
ちょっと使ってみて、つっこんで調査したほうがよいかも。

(6)Achievo …… RoR のはるか昔から(2000年)存在するPHP環境。
http://www.achievo.org/forum/viewtopic.php?t=277&highlight=cake
What is the main different?

同じことを繰り返さない、最小限のコード、という点では同じだよ、という作者の意見。

(7)Studs MVC Framework …… J2EE を目指すPHPフレームワーク
http://www.mojavelinux.com/projects/studs/

CakePHP も php.mvc も試したけど、オリジナルのJ2EEにいちばん似ているから気に入りました〜。という声が掲載されています。

(8)Web application Component Toolkit (WACT) continuous refactoring と unit testing、そしてパターンに注目。PHP4 用とPHP5用を別々に作成?
 マーケティングとドキュメントがもう少しよければ成功する(した)かも。
一応、CakePHP のことを表で言及していたようなので。

http://www.phpwact.org/php/mvc_frameworks?s=CakePHP

日本での様子は、と考えると、やはりPHP4の環境も見捨てることはできないと思います。共有サーバではまだまだPHP4が多くあります。OSSプロジェクトを始める場合にも、PHP4/PHP5 の両方で動くように書けるのであれば、そう書いておいたほうがよいかもしれません。特に RoR 流儀にのっとって書けば、“言語の新機能(=PHP5特有の機能)に頼らない”プログラミングもできるわけなので。

そうなると現時点での私の判断では CakePHP がよい、ということになったわけです。
しかし、「自分のところでは専用サーバしか使わないし、コードを開発・管理するのはうちだし、PHP4 のサーバを使っている人にソースを渡すなんて絶対ないです」という場合には、symfony も良い選択でしょう。

※追記
http://phppro.jp/news/19
「2006年6月の世界のPHP使用状況調査」でも、
「現在もなお、PHP4.3およびPHP4.4が、広く使用されていることがわかります。国毎の調査では、PHPはヨーロッパで広く使用されており、日本では平均的に使用されていると示されています」とありました。
posted by SDozono at 17:30| ロサンゼルス ☀| Comment(0) | TrackBack(1) | PHP Framework | このブログの読者になる | 更新情報をチェックする

2006年07月07日

Blogチュートリでつまづいたら

CakePHP のサイトに行ったら、まずは Blogの作り方、というチュートリアルを見ると思います。
http://wiki.cakephp.org/tutorials:blog_tutorial_-_1

※注:現在は、http://manual.cakephp.org/chapter/20 が最新版のようです。※

しかし、この記事、「マジックを見せるけど、たねあかしはしない」ようなところがあるので、「こんなに簡単に作成できるのか〜」と思わせるのと同時に、「どうしてこう動くようになるのか、よく分からなかった」と感じてしまう人も多いようです。

例えば、最初の部分で、モデルを作るには、

class Post extends AppModel
{
  var $name = 'Post';
}


とすればよいとあります。これを見て、「クラスを作ったのに、中身が変数一個なんておかしい」と思う人も結構いるわけです。
実は、「実際のプログラムでは、ここにどんどん自分のコードを追加してゆくことになる」んですが、何も追加しなくても、「既に機能が追加されているので、ある程度のことはできてしまう」というのが事実です。

"extends AppModel"というのがミソで、AppModel という基本クラスの持っている性質をすべて受け継いでいます。
ですから、すでに下記のような関数が使えるようになっています。
(Model に関するAPIの解説は、http://api.cakephp.org/class_model.html にあります。)

$this->Post->findAll(...); //すべてのデータを取得
$this->Post->find(...); //条件で検索
$this->Post->findAllByフィールド名(..); // 例えば、name というデータベースフィールドであれば、 $this->findAllByName('山・太郎'); で検索できる。
$this->Post->findNeighbours(...); // その条件のお隣さんを見つけてくる(次へ>などの表村用)
$this->Post->field(...); //あるフィールドの情報だけを取得
$this->Post->findCount(...); //件数を取得
$this->Post->generateList(...); //検索データを配列で受け取る
$this->Post->read(...); //あるIDのデータをフィールド情報+データで受け取る

などなどがあります。これだけでも結構なことができてしまいますね。
でも、自分の欲しいメソッドを作成したり、バリデーション(データが正しくなければ警告する・保存するためのルール)を追加したりしたい場合には、Post クラスの中にいろいろと書き込むことになります。

例えば、


class Post extends AppModel
{
  var $name = 'Post';

  function mymethod(){
   //ここに自分の扱いたい内容
  }
}

とすれば、 $this->Post->mymethod() という関数の誕生です。

ブログチュートリアルでもう一つ説明がないのは、コントローラのメソッドに対して、$id がどこからやってくるか、という説明です。
例えば、app/controllers/posts_controller.php にこう書けとあります。

class PostsController extends AppController
{
  function view($id)
  {
    $this->Post->id = $id;
    $this->set( 'data', $this->Post->read() );
  }
}

ここで、なぜか $id という変数がどこからともなく現れているのですが、これはどうなっているんでしょうか。
これを知るには、CakePHP の mod_url の使い方を学ぶことが必要です。
簡単に説明すると、URLは次のようなルールで指定します。

http:// Cakeのパス/コントローラ名/アクション名/変数1/変数2/変数3/...

もし、「該当するURLで村されるファイルが存在しない(=Cakeへの指令だ!)」という時には、CakePHP が自動的にコントローラの該当する指令に振り分け、変数をはめこんで実行する、という流れになります。ですから、

http:// cakeのパス/samples/save/1/2/3/4

とした場合、CakePHP は、「sample コントローラーの save メソッドを実行します。データとしては、1,2,3,4を入れます」
ということになります。

それを

class SamplesController extends AppController
{
  function save($id1,$id2,$id3,$id4)
  {
    echo "このメソッドが実行されます!データは、".$id1."と".$id2."と".$id3."と".$id4."です。";

  }
}

などのようにして、コントローラは受けることができます。
こんな説明でいかがでしょうか。少し分かりやすくなったでしょうか……?
次回は、set 命令の秘密に迫ってみたいと思います。
posted by SDozono at 13:07| ロサンゼルス ☀| Comment(1) | TrackBack(0) | CakePHP Model | このブログの読者になる | 更新情報をチェックする

2006年07月06日

初期デザインを速攻で変更。

CakePHP で最初に作ったプロジェクト(デザインはインストールそのまま)を上司に見せたところ、最初のひとことは、「アクの強いデザインだね〜」というものでした。

確かに、初期デザインは黒と赤を基調にしているので、ちっともビジネスっぽくありません。「初期デザインを変えてくれ!」という要望もMLで流れたくらいで……。
http://groups.google.com/group/cake-php/browse_thread/thread/7248b46de597b10b/


というわけで、最初から使用できる無料のテンプレートを7つ、Contented Designs のオープンソースのテンプレートからポートしてみました。スクリーンショットは、とりあえず解凍しただけのCake PHPに放り込んだだけの状態です。
contented6.PNG

デザインの閲覧・ダウンロードはこちらから。
http://cakephp.seesaa.net/article/20355864.html

1)使いたいテーマを解凍。
2)解凍してできた default.thtml を app/views/layouts にコピー。
3)解凍してできた ***.css    を app/webroot/css にコピー。

これだけで、何の問題もなく、システムテンプレートが変更されます。
さすが MVC 分離デザイン。

あとは、じゃんじゃん モデル+アクションを書いて、機能ができてきたら、このテーマのリンク部分を変更すればよいだけです。

・テーブル部分は、CakePHP のデフォルトを css にとりあえずコピーしてあります。適当に変更してください。
・初期文字コードを、海外でも使用できるように"UTF-8"にしてありますが、日本で使用する場合には、ここを"EUC-JP"とか"Shift-JIS"とかに変更しましょう。

ちなみに、デザイン1枚あたり、5,6分で作成できました。自分の気に入ったデザインから、このCakePHP用のテンプレートを作成するのは非常に簡単です。

Ruby on Rails にもこんなテンプレート集みたいなものはあるんでしょうか。サイトでは発見できませんでした。

PHP で "Ruby on Rails" をしたいなら Cake PHP! (と宣伝。)



posted by SDozono at 12:04| ロサンゼルス 🌁| Comment(0) | TrackBack(0) | CakePHP template | このブログの読者になる | 更新情報をチェックする

default.thtml 7 free designs for Cake PHP

I ported designs from Contented Designs to default.thtml of CakePHP.

1) Unpack zip.
2) Copy default.thtml to app/views/layouts
3) Copy ***.css to app/webroot/css

Then, you'll see the new theme!
Change the template as you like...

*Contented Designs, Thank you for your marvelous designs!*

*from 2006/12******************************
from new version of CakePHP (1.1.11.4064),
you need to change one line:

if ($this->controller->Session->check('Message.flash')) $this->controller->Session->flash();

to

if ($session->check('Message.flash')) $session->flash();
*******************************************

contented1.PNG

contented1.zip

contented2.PNG

contented2.zip

contented3.PNG

contented3.zip

contented4.PNG

contented4.zip

contented5.PNG

contented5.zip

contented6.PNG

contented6.zip

contented7.PNG

contented7.zip


*I added some more for Business-use. check http://cakephp.seesaa.net/article/20603204.html*
posted by SDozono at 11:56| ロサンゼルス 🌁| Comment(4) | TrackBack(1) | CakePHP template | このブログの読者になる | 更新情報をチェックする

2006年07月05日

Ruby on Rails の手法を、その辺のどのレンタルサーバでも利用する方法

IT Pro の記事:"「ブレイク直前のLinux」を思い起こさせるRubyのマグマ"などを見ると、Ruby on Rails が日本でも使う人が増えていることが分かります。また、「生産性が高い」、「作業する人がうれしい」などの利点も大きく取りあげられています。

実際には既にこの概念はいろいろな言語にポートされていますし、PHPにも色々あります。PHP on Trax などは、Ruby on Rails をそのまま移植することを目指しているみたいです。

しかし、やはりPHPにはPHPなりのやり方があるのだろう、と。それを最小限のセットで実現しているのがCake PHPです。(Symfony や PRADO が PHP5 しかサポートしていないのに対して、PHP4とPHP5の両方で使えるようにトリックを使っているのがCakePHPです。現状、レンタル共有サーバではPHP4がけっこうあるので、この間口を広げる努力は大切だと思います。)

また、たいていのレンタルサーバでPHPが使えるようになっていますので、CakePHP に習熟すると、Ruby on Rails と同じ“手法”を使った開発が、どこでもできるようになると思います。

ただ、CakePHP の初期デザインがいまいち?なのと、ブログのチュートリが不親切なせいで、ユーザが増えていないように思うんですよね。このあたりをひとつ何とか分かりやすく解説できればと思います。
posted by SDozono at 17:04| ロサンゼルス ☀| Comment(0) | TrackBack(0) | PHP Framework | このブログの読者になる | 更新情報をチェックする

いちばん簡単な認証システム

CakePHP が標準で使える認証システムとしては、ACLがあります。INIベースとデータベースを切り替えることができたり、ユーザのアクセス許可コントロールなどかなり複雑なことができますが、それゆえに設定が面倒だったりします。

こちらで作成しているものは、「少人数で使用するWEBアプリ」なので、一つのユーザ名とパスワードを入れれば入れる、という仕組みのものを試しに作成してみました。

SdAuth.zip
sd_auth.zip

使い方は、

1) sd_auth.php(このファイル)を app/controllers/components に置く。
login.thtml を app/views/layouts に置く。

2) app_controller.php を、cake/appcontroller.php から app/ にコピーして、自分用に書き込めるようにする。

3) そこに以下を追加する。これで、プロジェクト全体が必ずここを通過するようになる。

class AppController extends Controller {

   var $components = array('SdAuth');

   function beforeFilter()
   {
    // Auth Check.
    if($this->SdAuth->isloggedin() == FALSE){
//$this->layout = “login”;
*$this->layout = '';*
*$this->render('../layouts/login');*
*exit();*
*など。pm11opさん、ありがとうございます。*
http://pm.11op.net/2007/12/post-28.php
    } else {
      $this->layout = "default";
    };
   }
}

4) ログアウトのリンクをどこかに作成する。どこかの ****s_controller.php に、次のコードを追加。

    function logout(){
     $this->SdAuth->logout();
     $this->redirect("/index.php");
    }

これで、ログインしないと使えないWEBシステムを簡単に作成できます。

これはモジュールとして作成したので、どんなプロジェクトにも使いまわすことができます。

こういういろいろな人の書いた Tips 集のようなものが、cakephp.org にある「スニペット」です。

http://cakeforge.org/snippet/

上記のURLに、いろいろ便利 Tips があります。
posted by SDozono at 16:53| ロサンゼルス ☀| Comment(3) | TrackBack(3) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする

2006年07月04日

CakePHP 開発者へのインタビュー

オリジナル(英文):
http://www.h3rald.com/articles/view/cakephp/

Meet the Bakers

CakePHPとフレームワークに関する記事を読んで、質問が出てきたり、プロジェクトに関心を持ったりしたかもしれません。PHPNutとgwooという, CakePHPのクリエイター、そしてリードデベロッパーのお二人に、zZine読者のための独占インタビューを行ないました。このインタビューは、このインタビューは2005年10月26日に、irc.freenode.orgの#dev-cakephpで行なわれました。

h3rald: CakePHPプロジェクトに関するインタビューに応じてくださって、ありがとうございます。まずは、名前の由来などを教えてもらえますか。

PHPnut: オリジナルのプロジェクトは、Michal Tatarynowicz aka Pies(パイズ、ここから来ています。)がはじめたものです。3月の時点でリリースされたものを見たとき、連絡を取ってみようと思いました。私の持っている会社はCakeのようなプロジェクトをサポートできること、そして、私も同じような方向性にあるものをちょうど開発中だということを伝えました。

h3raLd: ケーキはGPLライセンスですか。あと、開発協力者は何人くらいですか。

gwoo: ケーキはMITライセンスでリリースしています。開発チームは、私とPHPnut,そしてほかの4人のコントリビューターがいます。ドキュメント作成チームもあって、現在は3人から5人が作業しています。ドキュメントは、プロジェクトのリリースを追いかける形になるので若干遅れます。最近のリリースでは、かなりの修正を加えたので、ドキュメントチームが追いつくにはかなりの作業量がありますが、あともう少しです。

PHPnut: 今回のリリースで、ドキュメントもさらに改良されていると思います。現在、コードはかなり安定しているので、うまくいけば、もうそれほど大きな変更を加えなくてもよいのではないか、と考えています。

h3raLd: はじめて Cake を見た人は、Ruby on Rails を移植したものだと思うかもしれません。この点はどうでしょうか。この2つのフレームワークの間には、どんな違いと共通点がありますか。

PHPnut: Cake は移植ではじまりました。でも、さらにそこから発展しています。私たちは、RoR の概念を使うことについて話し合い、フレームワークの中に、PHPユーザのために取り込むことにしました。PHPをもう何年も利用していますし、これになじんでいます。自分のパッションもここにありますし、Cake を使う人たちも、開発者たちと同じパッションを感じていると思います。

h3raLd: Rails は、Ruby でしか使えない関数と機能があったために Ruby で開発された、という記事を読んだことがあります。

gwoo: それには同意できません。私たちが作ったものが、それは正しくないことを証明していると思います。確かに、RoR にはビルトインサーバや他の利点がありますが、PHPはどのサーバにも入っています。

h3raLd: ときどき開発者の中には、特に Perl のプログラマーは、PHPを「劣った」言語だと考える人がいます。それについてはどう思いますか。

PHPnut: 自分の名前が私の考えです。(訳注:PHP nut = PHPマニア、ファン、PHP命)

gwoo: PHPは WEB プログラミング言語で、そのために設計されていますし、そこでベストの仕事をします。いいなぁと思うところにすべて落ち着きます。

h3raLd: ほかの PHP フレームワークを試したことはありますか。MVC ベースのもの(例えば Mojavi)や、Prado のようなイベント-ドリブンのものとか。そういうフレームワークについてはどう思いますか。比較すると、Cake はどんな点で優れていますか、また悪かったりしますか。

gwoo: みんな、複雑すぎるというのが私の意見です。ほぼ全部を試してみたことがあります。Cake は、MVC を分離させ、CRUD をロジカルな方法で扱えます。また、Cake のシンタックスはスーパーイージーです。

h3raLd: Ruby on Rails は、Java や Python を含めてさまざまな言語に移植されています。有名な Ruby プロジェクトに発想を得た三つの PHP のフレームワークがあります。 Biscuit, PHP on Tracks(訳注:PHP on TRAX), CakePHP です。それらについてどう思いますか。合流することなどあるでしょうか。これまでに見たことがありますか。

gwoo: Symfony を忘れていますよ。PHP5専用の移植ですよね。試してみましたが、Cake よりも学習するのがたいへんです。

PHPnut: 間違っているかもしれませんが、使いやすさとか、フレームワークができること、機能、そしてコミュニティサポートなどの点で、ほかのプロジェクトはまだ私たちに追いついていないと思います。

gwoo: 私は、Ruby on Rails から移植されたすべての PHP フレームワークを試しました。でも、機能、コミュニティ、語彙の点で、Cake に並ぶものはありませんでした。

h3raLd: どうして、 CakePHP を移植(ポート)だと考えていないんでしょうか。Rails からどんな点で発展していると言えますか。

PHPnut: Rails と CakePHP は様々な点で共通点があります。MVC パターン、Active Record パターン …… でも、私たちは厳密にRails に倣っているわけではありません。自分たちでものを考えることができます。最近、ディレクトリ構造を変更しました。私の意見では、そのほうが Ruby on Rails のディレクトリ構造よりもっと機能的だと思います。

h3raLd: Cake はどんなことに使用できると思いますか。どんな種類のプロジェクトがよいでしょうか?制限のようなものはありますか?

gwoo: 個人的には、Cake が PHP のための最も拡張性のあるフレームワークだと思います。 components, helpers, vender でアクセスできるので、自分のしたいどんなことでもできます。

PHPnut: 制限を受けるのは、Webサーバ(通常 Apache ですが, IIS でもうまく動く模様)とデータベースの限界だけです。PHP そのものの制限もありますが、ときどき、オタクなやり方でそれをすり抜けています。

h3raLd: AJAXについてはどうですか。Cake で作ってある素晴らしいデモを幾つか見たことがあります。WEB開発の新しいトレンドについてはどう考えていますか。将来的な展望について考える人もいれば、互換性について心配する人もいます。あまり関心のない人もいます。お二人はどうですか。

gwoo: AJAXはアプリケーションの作成にはとても便利です。でも、使いすぎはよくないと思います。人々は現在の WEB の動作に非常に満足しているからです。もし、ドラッグ・アンド・ドロップや、画面の更新をしない動作をじゃんじゃん使い始めたら、ユーザは、サイト上でどう操作すればよいのか迷ってしまいます。

h3raLd: 今日は時間を取ってくださってありがとうございました。お二人に感謝します。このインタビューで何か付け加えたいことなどありますか。 Cake のユーザや、使ってみようかな、という方へのメッセージなど。

PHPnut: どうぞ試してみてください。いつでも助けになります。

gwoo: そして、かなりの間、続けるつもりです!
posted by SDozono at 11:08| ロサンゼルス ☁| Comment(0) | TrackBack(0) | Japanese Translation | このブログの読者になる | 更新情報をチェックする

2006年07月03日

CakePHP--ウェブプロジェクトを組織する簡単な方法

http://hades.phparch.com/ceres/public/article/index.php/art::cakephp::overview/0#heading1

CakePHP--ウェブプロジェクトを組織する簡単な方法

CakePHPはもともと、"Ruby on Rails": http://www.rubyonrails.com/ の考え方でのアーキテクチャと機能をPHPに移植しようというところから始まっており、その他のいろいろなフレームワークもそれぞれの仕方でそれを行なっています。Cakeには、有名になったRubyフレームワークとの共通点が多くありますが、現在では、独自の発展を遂げています。事実上、移植ではなく(PHPになくてRubyにある機能のことを考えるとそれは不可能に近いでしょうが)、RailsのアーキテクチャとRADフィロソフィーを非常にPHPらしい仕方で実装していったものです。CakePHPは、シンプルさ、移植性、柔軟性、拡張性といった部分に取り組んでいるので、これまでのPHPワールドとは一線を画すものとなっています。
CakePHPは、PEARやPropelといった追加ライブラリを何も必要としません。CakePHPの中には、コンポーネントやヘルパーによって組み込まれている多くの機能があり、それを簡単に拡張できるアーキテクチャになっています。そのすべては300kにおさまっています。
 理解しておかなければいけない大切な、そして唯一のコンセプトは、そのMVC(モデル-ビュー-コントローラ)アーキテクチャで、(最近では)Zend framework も含む多くのほかのPHPフレームワークでも一般的になっているものです。この非常に直感的、でも強力なコンセプトをあまりよく知らないという人は、自分のウェブアプリケーションを、ブログやフォトギャラリーといった幾つかの主な部分に分ける(コントローラ)ことを想像してみてください。それぞれの部分では、データベースのテーブル(モデル)へのアクセスがあるはずです。また、テンプレートファイル(ビュー)もあって、内容をユーザに表示するために使用されます。MVC アーキテクチャを現実世界の例でざっくばらんに形にしてみるとこんな感じかもしれません。言い換えると、コントローラはアプリケーションのビジネス(取引)ロジック部分を扱い、データのソース(モデル)とプレゼンテーション層(ビュー)のコードとは別になるようにします。この分離政策は、始めのうちはちょっと厳しすぎるように感じるかもしれません。(例えば、ビューの中にビジネスロジックを入れたくなるかもしれません。)でも、長い目で見ると、コードのメンテナンスのしやすさを高めることができます。

CakePHPは公式サイトから自由にダウンロードすることができます。インストールの必要もありません。圧縮されているアーカイブファイルの中身をWEBサーバの公開ディレクトリに解凍すると、フレームワークを配置し、プロジェクトの骨組みを作ったことになります。CakePHPのディレクトリ構造は、分かりやすいように設計され、コードの分離を賢く行なえるように定義されています。

* app/ * config/ * controllers/ * models/ * plugins/ * tmp/ * vendors/ * views/ * webroot/ * cake/ * config/ * docs/ * libs/ * vendors/

CakePHPに詳しくない人でも、ある程度、どこにどのファイルをおけばいいのか理解できます。いちばん上の階層には三つのフォルダがあります。

cake には、フレームワークそのものがあります。
app には、空のプロジェクトがあります。
vendors は、サードパーティのライブラリを入れる場所です。

CakePHPでプロジェクトを作るとき、cakeフォルダの中身に触る必要はまったくありません。フレームワークのソースコードは、ユーザプロジェクトとはいつも別になっています。CakeがPHPに移植したRailのフィロソフィーの一つとしていちばん大切なことは、Convention over Configuration、「細かく設定するより適切な規約で無設定に」というものです。実際に、幾つもの設定ファイルや、隠れている設定などでセッティングをする必要はまったくありません。フレームワークは、どこに何があるか、また特定の作業にはどのクラスをロードするのが適切化、といったことを賢く面倒を見てくれます。もちろん、もともと決まっているディレクトリ構造がこの賢い動作に一役買っています。

変更する設定ファイルは二つしかありません。一つは、app/config/core.php で、デバッグレベル、セッションタイムアウトなどのアプリケーションの設定がいろいろ入っています。もうひとつは、app/config/databse.php で、データベースに(persistent)接続するために必要です。

繰り返しになりますが、理解するのに難しすぎるところはありません。Cake は標準で、MYSQL, PostgreSQL, SQLite といった様々なデータベースに対応しています。Cakeはデータベース抽象レイヤーのラッパーとして AdoDB または PEAR を使用します。このファイル(database.php)を一度編集するだけで、CakePHPの機能が十分に利用でき、アプリケーションの開発を始めることができます。
posted by SDozono at 04:38| ロサンゼルス ☀| Comment(0) | TrackBack(0) | Japanese Translation | このブログの読者になる | 更新情報をチェックする

CakePHPフレームワークをざっと紹介

http://hades.phparch.com/ceres/public/article/index.php/art::cakephp::overview/0

を軽く訳してみました。

「CakePHPフレームワークの説明」

最近、PHPプログラミングで利用できるフレームワークがいろいろあります。
特に、ウェブ開発をすばやく進め、退屈な作業を減らし、より整理された形にすることを目指した、RAD(ラピッド・アプリケーション・デベロップメント、速攻アプリケーション開発)フレームワークが非常に多くなっています。CakePHPも、Ruby on Rails で非常に有名になったRADフィロソフィーを取り入れた、初期からのPHPプログラミング言語用フレームワークのひとつです。CakePHP v1.0は現在、PHPプログラミングでは非常に有名な、そして直感的なソリューションのひとつとなっています。
その理由は何でしょうか?

 PHPプログラミング言語がポピュラーになった理由の中には、開発者が簡単にパワフルなウェブアプリケーションを作成できる、ということがあります。
 PHPは動的に型づけされる言語で、手続き型言語として生まれ、当初は、単なるフォームインタプリタとして考え出されたものでした。当時は、いろいろなことが非常にシンプルでした。PHPの人気が出てくると、開発コミュニティが追加の関数や機能をコアの部分に含めて欲しいと求めるようになり、最新のPHP5では、WEB開発に関係したありとあらゆる機能が提供され、単なる基本フォームを扱うものから、プラットフォーム特有のシステム機能までもカバーしています。もちろんPHPにも弱点というものがあり、コアレベル(ネームスペースがない、命名規則が一貫していない、など。)でも、利用者レベルでも、きれいにまとまらない部分があります。PHPのコードは、HTMLページの中にそのまま埋め込むことができるので、たくさんの開発者(初心者から経験者まで)は、この特徴を使って、非常にからまったコードや、乱雑なスパゲッティコードのお手本のようなものを作っていました。

 確かに、1枚のphpファイルを使い、データベースに接続し、幾つかの結果を取り出し、それでいくらかの操作をしてHTMLのテーブルで表示する、というのでも動きはします。でも、良いコーディングをする習慣を作るためには、それでは不十分です。巨大な、1枚で完結するするスクリプトが大量にあって、それぞれに同じくらいの、こんがらかった複雑なコードが入っているところを想像してみてください。想像できるのは、動くし、実行させれば速く動くかもしれない非常にごちゃごちゃのコードで、管理し、バグを取るのはまさに悪夢、というものです。

 PHPコードを書く開発者たちとZendが最近まで特に「してこなかった」ことがあります。それは、こうしたカオス状態の中に秩序を作り、ある種の構造化や決まりごとを提供するフレームワークを公式に作成し、PHPアプリケーションの開発とメンテナンスを楽にする、ということです。ようやく新しいZendフレームワークで動き始めている、というところですが、おそらくそれは遅すぎたと言ってもよいかもしれません。新しいZendフレームワークはいまだ開発中であるのに対して、その代替策となる、驚くような効果を起こすことができる、安定したさまざまなフレームワークが登場しているからです。そして、"CakePHP"は間違いなく、その一つだと言うことができます。
posted by SDozono at 03:41| ロサンゼルス ☀| Comment(0) | TrackBack(0) | Japanese Translation | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。