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 | このブログの読者になる | 更新情報をチェックする
×

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