Table of Contents : マニュアル

CakePHPを使ってみよう

ぱたぱた、こねこね…

前書き

web開発天国にようこそ

テクニカルマニュアルの前書きを読んでいる、ということは、かなり暇な時間があるということですかね。私たちはセレブではないわけで、この資料の目的を考えると、この余分なセクションを飛ばしてさっそく実地といきましょう。

読者対象

このマニュアルを読むには、PHPに関するある程度の知識が必要です。オブジェクト指向プログラミングに関する知識は役立ちますが、このマニュアルの導入部分でそのあたりの事柄も扱う予定です。ですから、このマニュアルは、堅牢で管理の楽なアプリケーションをすばやく、そして楽しみながら作成したいという、あらゆるレベルの開発者を対象に書かれています。

このマニュアルで扱うべき範囲を超える技術について言及する部分があるかもしれません。AJAXやJavaScriptの詳細な点などについて触れることもありますが、基本的にはCakePHPに関する内容が中心になります。

CakePHP入門

CakePHPって何?使う理由は?

CakePHPは、フリー、またオープンソースで作成されている、PHP高速開発 フレームワークです。それは、プログラマーがwebアプリケーションを作る際の基本的な骨組みとなります。私たちの主要な目標は、柔軟性を失うことなく、構造化されたすばやい仕方での開発を可能にすることです。

CakePHPは、web開発から単調な作業を取り除きます。また、本当にするべきコーディング、つまり、アプリケーション固有のロジックに関するコーディングを始めるためのツールがすべて準備されています。新しいプロジェクトを始める時には、毎回、車輪の再開発をする代わりに、CakePHPのコピーをチェックアウトして、アプリケーションの本質部分の開発にすぐに取り掛かれます。

CakePHPにはアクティブな開発チームコミュニティが存在し、プロジェクトに貢献しています。CakePHPを使用する、ということは、車輪の再開発を避けるだけでなく、あなたが開発するアプリケーションのコア部分がよくテストされ、常に改良されている、ということになります。

CakePHPの使用で益を受ける幾つかの点をざっと挙げると次のようなものがあります:

  • アクティブ、フレンドリーなコミュニティ
  • フレキシブルなライセンス
  • PHPのバージョン4と5に対応
  • データベースとのやり取りのための、CRUDが統合済み
  • アプリケーションのscaffolding(足場組み)
  • コード生成
  • MVC アーキテクチャ
  • クリーンでカスタマイズ可能なURLsとroutesを用いるリクエストディスパッチャー
  • バリデーションを内蔵
  • 高速で柔軟性のあるテンプレートシステム(PHP構文、各種ヘルパー)
  • AJAX、JavaScript、HTMLフォーム、などなど各種のViewヘルパー
  • Eメール、クッキー、セキュリティ、セッション、リクエストハンドリングなどのコンポーネント
  • 柔軟なACL
  • データのサニタイズ
  • 柔軟なキャッシュ
  • ローカライゼーション
  • どんなwebサイトdirectoryからでも動作。Apacheの設定は最小限のみ

情報の探し方

Cookbook

http://book.cakephp.org

このサイトからスタートするのが良い方法です。このマニュアルは、疑問の解決のための最初の場所になるはずです。他のさまざまなオープンソースプロジェクトと同じように、常に新しい仲間が入ってきます。疑問の答えをこの場所で探してみてください。時間がかかるかもしれませんが、貴重な知識を多く身につけることができるでしょう。また、どんなサポートがあるのかについても見えてくるはずです。マニュアルとAPIの両方の情報がオンラインで入手可能です。

 

API

http://api.cakephp.org/1.2

直接的な答えがコア開発者から直接得られるので、CakePHP API (Application Programming Interface)は、フレームワークの内部動作に関する詳細に関する、もっとも総合的なドキュメントです。直接的なコードリファレンスなのでプロペラ帽子を準備しましょう。

 

IRC channel

#cakephp @ irc.freenode.net

途方にくれたら、CakePHPのIRCチャンネルで叫んでみましょう。(注:ただし英語)北アメリカと南アメリカの昼間の時間帯であれば、たいていは開発チームのだれかがそこにいます。助けが必要な場合でも、同じ地域での知り合いが必要でも、最新のスポーツカーを寄付したいという場合でも、喜んで聞いてくれるはずです。

 

Bakery

http://bakery.cakephp.org

CakePHPのBakeryは、CakePHPに関する情報中継所(clearing house)です。チュートリアル、事例研究、コード例などについて情報が得られます。CakePHPに関する理解が深まったらログインして知識をコミュニティと共有し、名声と富を手に入れましょう。

 

CakeForge

http://www.cakeforge.org

CakeForgeは、CakePHPプロジェクトを他の人に公開できる、もう一つの開発者用リソースです。すばらしいコンポーネントやすごいプラグインを探している(または公開したい)のなら、CakeForgeをチェックしてみましょう。

 

公式CakePHPウェブサイト

http://www.cakephp.org

公式CakePHPウェブサイトは、いつでも見に行く価値のある素敵な場所です。よく使う開発ツール、スクリーンキャスト、寄付の方法、ダウンロードなどへのリンクがあります。

 

Google Group

http://groups.google.com/group/cake-php

CakePHPには、非常にアクティブなGoogleグループがあります。過去に話し合われた解決策、よくある質問、直近の問題に対する解答などを見つけることのできる、優れたリソースセンターになるでしょう。(注:日本語では、http://cakephp.jpもどうぞ。)

 

Model-View-Controller(モデル-ビュー-コントローラ)を理解する

概要

上手に書かれたCakePHPアプリケーションは、MVC (モデル-ビュー-コントローラ)ソフトウェアデザインパターンにしたがっています。MVCでプログラムすると、アプリケーションは大きく分けて三つに分かれます。モデルはアプリケーションのデータを扱い、ビューはモデルデータの表示方法を扱い、コントローラは、ユーザによるリクエストを受け取って振り分けます。

イメージ

図 1: 基本的なMVCリクエスト

図1は、CakePHPの基本的なMVCのリクエスト例です。説明のために、例えば、リカルドさんが、広告から入ってきたページの“特注ケーキを今すぐ購入!”というリンクをクリックしたとしましょう。

  1. リカルドさんのクリックしたリンクは http://www.example.com/cakes/buy につながっていて、ブラウザはwebサーバにリクエストを送信します。
  2. ディスパッチャ(dispatcher)は、リクエストされたURL(/cakes/buy)をチェックし、リクエストを正しいコントローラに手渡します。
  3. コントローラは、アプリケーション独自のロジックを実行します。例えば、リカルドさんがログインしているかどうかをチェックするなどです。
  4. また、コントローラはモデルを使用して、アプリケーションのデータにアクセスします。たいていの場合、モデルはデータベースのテーブルを表していますが、LDAPエントリ、RSSフィード、システムのファイルにすることも可能です。この例では、コントローラは、モデルを使ってリカルドさんの最新の購入履歴をデータベースから取得します。
  5. コントローラがひとたびデータをマジックのように取り出すと、コントローラはそれをビューに送ります。ビューはこのデータを受け取り、ユーザにどのように見せるかを準備します。CakePHPのビューは、たいていの場合はHTMLフォーマットになりますが、必要に応じて、ビューは簡単に、PDF、XMLフォーマット、JSONオブジェクトなどにすることも可能です。
  6. ビューがコントローラからのデータを使用し、完全にビューを出力すると、そのビューの内容はリカルドさんのブラウザに返信されます。

アプリケーションに対する、ほぼすべてのリクエストがこの基本的なパターンに従います。後で幾つかのCake特有の点について説明しますので、それまでこの点を忘れないようにしてください。

利点

なぜMVCを使うのでしょうか。なぜなら、それはアプリケーションを管理しやすく、モジュラー化し、高速開発できるパッケージに変える、実証済みのソフトウェアデザインパターンだからです。アプリケーションの動作をモデル、ビュー、コントローラの三つに分けると、アプリケーションは非常にフットワークがよくなります。新しい機能を簡単に追加でき、既存の機能をさっとリニューアルできます。モジュラー化と分離デザインによって、高速にプロトタイプが作れるようになることなどをはじめとして、開発者とデザイナーが同時に作業できるようになります。この分離スタイルにより、開発者は、他の部分に影響を与えることなく、ある部分に変更を加えることができます。

この方法でアプリケーションを作った経験が無い場合には、慣れるまでにしばらくかかるかもしれません。しかし、あなたがひとたび最初のCakePHPアプリケーションを作れば、もう後戻りはしたくなくなるであろうと、私たちは確信しています。