SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CakePHPチュートリアル

CakePHPフレームワークによる快速WEB開発

生産性を向上するPHP4/PHP5用RADフレームワークの利用

  • X ポスト
  • このエントリーをはてなブックマークに追加

bake.phpスクリプトを活用しよう!

 DBがある場合、大抵は、アイテムの作成、読み出し、編集、削除の機能が必要になります。このCRUD(Create、Read、Update、Delete)機能画面を自動的に作成するのが、「cake/scripts/bake.php」です。Windows環境であれば、コマンドプロンプトを起動して(Linuxの場合はコンソール/ターミナルから)、次のように実行しましょう(筆者は、エクスプローラの任意のフォルダ上で右クリックするだけでコマンドプロンプトが出るようにしています)。

c:\> (phpのパス)\php.exe  (cakeのパス)\scripts\bake.php

 モデル、コントローラ、ビューをそれぞれ指定すると、あっという間にコードが生成されます。

 下記の説明とスクリーンショットは、CakePHP 1.1.8.3544時点のものです。2006/11/08現在、CakePHP 1.1.10.3825がリリースされ、「bake.php」もさらに多機能になってプロジェクトフォルダを指定できるようになっています。
 しかし、当方のWindows上のテストでは、1.1.10.3825の場合、コマンドプロンプトのカレントディレクトリを「cake をインストールした一番上の階層」にして実行した場合にのみ、bakeに成功しています。一例として、PHPが「c:\php5」、Apacheが「c:\apache\apache2\」にある場合は、次のようにすると動作しています。
  1. 「c:\apache\apache2\htdocs\cake>c:\php5\php.exe cake\scripts\bake.php -project testapp」でプロジェクトフォルダを生成
  2. 「c:\apache\apache2\htdocs\cake>c:\php5\php.exe cake\scripts\bake.php -app testapp」で各クラスを生成

ステップ1:クラスの選択画面

 モデル(M)、ビュー(V)、コントローラ(C)のどれを生成するかを選択します。ここでは、まずモデルを選択することにします。コントローラの生成はステップ5を、ビューの生成はステップ6以降を参照してください。

ステップ1:クラスの選択画面
ステップ1:クラスの選択画面

ステップ2:モデルの選択

 モデルを選択すると、現在接続しているDBのテーブルから生成できるモデルの一覧が表示されます。

ステップ2:モデルの選択
ステップ2:モデルの選択

ステップ3:モデル生成確認

 バリデーション(値の検証)や、テーブルアソシエーション(テーブル同士の親子関係)などを設定したい場合はここで選択します。後から自分で書き足すことも可能です。確認画面が出たら「y」を選択します。

ステップ3:モデル生成確認
ステップ3:モデル生成確認

ステップ4:モデル生成確認

 すべての情報の入力を終えると、Unitテスト用のファイルも生成するかを聞いてきます。今回は「n」を選択しました。

ステップ4:モデル生成確認
ステップ4:モデル生成確認

ステップ5:コントローラ生成

 続いてコントローラを生成します。「plural」は、「複数形で記入してください」という意味です。interactively(対話)で作る必要がない場合には、「n」を選択することでCRUD機能を一括生成できます。

ステップ5:コントローラ生成
ステップ5:コントローラ生成

ステップ6:ビューの生成(1)

 最後にビューを生成します。ビューの画面でも、クラス名は「samples」と複数形で入力してください。

ステップ6:ビューの生成(1)
ステップ6:ビューの生成(1)

ステップ7:ビューの生成(2)

 自動的に、index、view、add、editの画面が生成されます。実体は単なるhtmlファイルなので、楽に日本語化できますし、デザイナーに渡すこともできます。

ステップ7:ビューの生成(2)
ステップ7:ビューの生成(2)

ステップ8:完成した画面

 該当URLを開くと、生成された画面が見えます。MVCが分離した分かりやすいコードが書き込まれていますので、これを自分のニーズに合わせて修正・加工していきましょう。

ステップ8:完成した画面
ステップ8:完成した画面

ステップ9:デザインの変更

 生成されたファイルは、デザイン部分が分かれているので、デザインの変更も別作業で進めることができます。全体の枠組みとなるテンプレートは、「/view/layout」ディレクトリに置くことができます。

 一例として、「/view/layout」ディレクトリにファイルを追加しただけで、下記のように外観が変化しました。

テンプレートを入れた画面
テンプレートを入れた画面
 自分でデザインを作ることもできますし、テンプレートを最初に作っておくことも可能です。
参考テンプレート
筆者のはじめたdecorateプロジェクト

 筆者のはじめたdecorateプロジェクトを使用すると、「bake.php」とまったく同じ手順で、

  • ページネーション
  • 複合ソート
  • フィルタリング(検索)

 などの機能を追加したページを生成できます。いずれ、グラフなどのレポート関係のページも自動生成できるように改良したいと考えています。

decorate.phpで生成した画面
decorate.phpで生成した画面
 「app/config/routes.php」内に、最初に表示されるページの設定があります。ここを書き換えると、任意のページを選択できます。
 「scaffolding」という方法もあります。クラスにscaffoldという変数を準備するだけでCakeがCRUDの面倒をすべてみてくれる、というものです。
参考になる各種資料
  1. cakesheet.pdf
  2. CakePHPフレームワークのルールが1枚にまとめられているので、印刷して持っておくと便利です。
  3. cakephp.orgのサイトにあるマニュアル
  4. このマニュアルにはかなり詳細な点まで書いてあります。どんな情報があるのか見ておくことをお勧めします(英語)。
  5. sitepointの簡単なチュートリアル(英語)

まとめ

 CakePHPを使うと、短期間で効率的にサイトを構築できますし、チームで働く場合にも活用できます。英語コミュニティには既に数千人が登録していますので、大抵の問題は解決方法が見つかります。筆者が所属する株式会社コミュニケーションビジネスアヴェニューでは、日本語コミュニティサイトを作成して、日本でもユーザーが増えるようサポートしていきたいと思います。生じる問題や新技術の取り込み方などについてもアイデアがきっと見つかります。ぜひCakePHPフレームワークを使ってWeb開発に挑戦してみませんか。

参考文献

  1. http://www.cakephp.org ……CakePHPのプロジェクトサイトです。
  2. cakephp マニュアル ……英語ですが分かりやすくまとまっています。
  3. cakephp 日本語コミュニティ ……CakePHPに関する最新情報を日本語で確認できます。
  4. decorateプロジェクト ……bake.phpを拡張するプロジェクトです。
  5. cakephpのおいしい食べ方 ……CakePHPに関する個人ブログです。
修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
CakePHPチュートリアル連載記事一覧
この記事の著者

堂園 俊郎(ドウゾノ シュンロウ)

(株)コミュニケーション・ビジネス・アヴェニュー技術担当。著書「CakePHPガイドブック」。CentOSサーバによる大小のコールセンター立ち上げ業務のかたわら、オープンソースプロダクトのコンサルティングを行う日々。http://cakephp.jpの管理人。ブログ:「CakePHPのおいしい食べ方」http://cakephp.seesaa.net 、「trixbox/asterisk技術者の365/a VoIP engineer in Japan」http://douzo.seesaa.net など。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/670 2007/12/13 16:06

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング