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

CakePHP は、MVC ソフトウェアデザインパターンにしたがっています。MVC でプログラムすると、アプリケーションは大きく分けて三つに分かれます:

  1. モデルは、アプリケーションのデータを表します。

  2. ビューは、モデルデータの表示方法を扱います。

  3. コントローラは、ユーザによるリクエストを受け取って振り分けます。

Figure 1

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

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

  • リカルドさんのクリックしたリンクは http://www.example.com/cakes/buy につながっていて、ブラウザは web サーバにリクエストを送信します。

  • ディスパッチャ(dispatcher)は、リクエストされた URL (/cakes/buy) をチェックし、リクエストを正しいコントローラに手渡します。

  • コントローラは、アプリケーション独自のロジックを実行します。例えば、リカルドさんがログインしているかどうかをチェックするなどです。

  • また、コントローラはモデルを使用して、アプリケーションのデータにアクセスします。たいていの場合、モデルはデータベースのテーブルを表していますが、LDAP エントリ、RSS フィード、システムのファイルにすることも可能です。この例では、コントローラは、モデルを使ってリカルドさんの最新の購入履歴をデータベースから取得します。

  • コントローラがひとたびデータをマジックのように取り出すと、コントローラはそれをビューに送ります。ビューはこのデータを受け取り、ユーザにどのように見せるかを準備します。CakePHP のビューは、たいていの場合は HTML フォーマットになりますが、必要に応じて、ビューは簡単に、PDF、XML フォーマット、JSON オブジェクトなどにすることも可能です。

  • ビューがコントローラからのデータを使用し、完全にビューを出力すると、そのビューの内容はリカルドさんのブラウザに返信されます。

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

利点

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

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