PHP初心者の私がcakePHPを習得するために「RailsによるアジャイルWebアプリケーション開発(初版)」の「第二部 アプリケーションを構築する」に掲載されているサンプルプログラムをcakePHPで作り直してみました。
CakePHPはRailsを意識したフレームワークとのことですが、RailsのサンプルをcakePHPにポーティングすることによってRailsとの違いを明確にすることによってより理解が深まるとの思いから取り組みました。
CakePHPはRailsを意識したフレームワークとのことですが、RailsのサンプルをcakePHPにポーティングすることによってRailsとの違いを明確にすることによってより理解が深まるとの思いから取り組みました。
これからコンテンツを充実させていきます。ちなみに、ドラフトはすでに公開済みで徐々にドラフト内容をwikiにまとめていきます。
ドラフト:
http://docs.google.com/leaf?id=0B9EAgTWhLYhiZjZhZDZmNzUtOGRjYS00M2VhLWFkNGMtMjVlZWUzOGI0Y2Y2&hl=ja
ドラフト:
http://docs.google.com/leaf?id=0B9EAgTWhLYhiZjZhZDZmNzUtOGRjYS00M2VhLWFkNGMtMjVlZWUzOGI0Y2Y2&hl=ja
参考図書
この2冊とネットの情報のみで勉強しました。cakePHPの書籍は購入していません。


第2部 アプリケーションを構築する
「RailsによるアジャイルWebアプリケーション開発(初版)」(以降、オリジナル本と呼びます)の5章はサンプルアプリの概要ですので、実際のcakePHPへのポーティング作業は6章からになります。
| メモ | cakePHP | |||
| 第5章 | Depotアプリケーション | サンプルプログラムの概要です | 見る | |
| 5.1 | インクリメンタル開発 | |||
| 5.2 | Depot基本仕様 | |||
| 5.3 | コーディング開始 | |||
| 第6章 | タスクA:商品の管理 | |||
| 6.1 | イテレーションA1:動くものを作る | DBの設定とscaffold | 見る | |
| 6.2 | イテレーションA2:足りない列の追加 | テーブルスキーマの変更 | 見る | |
| 6.3 | イテレーションA3:検証! | モデルのヴァリデーション | 見る | |
| 6.4 | イテレーションA4:もっと美しく | ビューのカスタマイズ | 見る | |
| 6.5 | この章のまとめ | 見る | ||
| 第7章 | タスクB:カタログの表示 | |||
| 7.1 | イテレーションB1:カタログリストの作成 | bakeによるコントローラの生成 | 見る | |
| 7.2 | イテレーションB2:ページに装飾を追加 | レイアウトの変更 | 見る | |
| 7.3 | この章のまとめ | 見る | ||
| 第8章 | タスクC:カートの作成 | |||
| 8.1 | セッション | セッションの設定 | 見る | |
| 8.2 | テーブルとモデルの追加 | bakeによるモデルの生成 belongs_toでのモデルの関連付け |
見る | |
| 8.3 | イテレーションC1:カートの作成 | AppModelを継承しないカートモデルの実装 | 見る | |
| 8.4 | イテレーションC2:エラー処理 | Flashを使ったエラー表示 | 見る | |
| 8.5 | イテレーションC3:カートの仕上げ | 独自ヘルパーの実装 | 見る | |
| 8.6 | この章のまとめ | 見る | ||
| 第9章 | タスクD:チェックアウト! | |||
| 9.1 | イテレーションD1:注文情報の取得 | フォームヘルパー | 見る | |
| 9.2 | イテレーションD2:チェックアウトページでのカート内容の表示 | ビューのエレメント機能 | 見る | |
| 9.3 | この章のまとめ | 見る | ||
| 第10章 | タスクE:発送 | |||
| 10.1 | イテレーションE1:基本的な発送処理 | モデルのコールバックメソッド | 見る | |
| 10.2 | この章のまとめ | 見る | ||
| 第11章 | タスクF:ユーザ管理 | 管理画面にアクセスできるユーザを管理する機能を実装します。 | ||
| 11.1 | イテレーションF1:ユーザーの追加 | ログインコントローラの作成 | 見る | |
| 11.2 | イテレーションF2:ログイン | Authコンポーネント | 見る | |
| 11.3 | イテレーションF3:アクセス制限 | beforeDeleteコールバック/例外 | 見る | |
| 11.4 | 仕上げ | phpdoc | 見る | |
| 11.5 | 参考情報 | オリジナルのRails本ではセッションにリクエスト時のパラメータを保持し、 ログイン後にリクエスト時のURLへリダイレクトする手法の説明がありますが、 cakePHPのAuthコンポーネントはこの機能を持っていますので、いままで説明したコーディングで既に実現されています。 |
||
| 11.6 | この章のまとめ | 見る | ||
| 第12章 | タスクT:テスト | simpletest によるテスト | 見る | |
| 12.1 | Railsによるテストのサポート | |||
| 12.2 | モデルのテスト | フィクスチャーを使ったテスト | 見る | |
| 12.3 | コントローラーのテスト | リダイレクトでテストが終了する問題への対策 | 見る | |
| 12.4 | モックオブジェクトの使用 | クラスメソッドを再定義するにはrunkitというのが必要?MAMP環境でrunkitのインストール方法がわかってないのでモックのテストは一旦保留 | ||
| 12.5 | テスト駆動開発 | 商品の検索機能をテスト駆動開発 | 見る | |
| 12.6 | Rakeによるテスト実行 | テストの一括実行/コマンドラインからの実行/統計の生成 | 見る | |
| 12.7 | パフォーマンステスト | webgrindプロファイラーの導入 | 見る | |
| 12.8 | この章のまとめ | 見る |
番外:セキュリティ
建設予定地:サンプルにはセキュリティ関係の記述が無いので追加する予定
サンプルソースコード
ポーティングしたソースコードは以下のURLで公開しています。
http://code.google.com/p/agile-with-cakephp/source/browse/#svn/trunk
http://code.google.com/p/agile-with-cakephp/source/browse/#svn/trunk
サンプルソースのインストール
1. ソースをダウンロードしてドキュメントルートに配置 (cakePHP 1.2.5も同梱しています) http://code.google.com/p/agile-with-cakephp/downloads/list 2. データーベースの作成 app/db ディレクトリにスキーマーがありますのでこれを実行します。 % mysql -u root -p depot_development < app/db/create.sql 3. app/config/database.php を修正 環境にあわせてdatabase.php を修正してください。
注意事項!!
cakePHPのインストールファイルを展開したら、ディレクトリの直下に.htaccess があります。これをコピーし忘れると正常に動作しないので注意してください。
cakePHPのインストールファイルを展開したら、ディレクトリの直下に.htaccess があります。これをコピーし忘れると正常に動作しないので注意してください。
セットアップ
1. ユーザ登録 http://localhost:8888/depot/admin/login/add_user にアクセスして管理者を登録します。 これで動作するはずです。ショップ機能と管理者機能へのURLはそれぞれ以下になります。 http://localhost:8888/depot/store/ http://localhost:8888/depot/admin/login/login
動作環境
macosx 10.4 (tiger) MAMP MAMPに含まれるプログラムのバージョン(FAQより) Apache 2.0.63 MySQL 5.1.37 PHP 4.4.9 & 5.2.11 APC 3.0.19 & APC 3.1.2 eAccelerator 0.9.5.3 XCache 1.2.2 phpMyAdmin 2.11.9.5 & phpMyAdmin 3.2.0.1 Zend Optimizer 3.3.3 SQLiteManager 1.2.0 Freetype 2.3.9 t1lib 5.1.2 curl 7.19.5 jpeg 7 libpng-1.2.38 gd 2.0.34 libxml 2.7.3 libxslt 1.1.24 gettext 0.17 libidn 1.15 iconv 1.13 mcrypt 2.5.8 YAZ 3.0.47 & PHP/YAZ 1.0.14
開発環境
eclipse+PDT 3.5 (carbon)
感想
やってみた感想ですが、Railsのよいところ、cakePHPのよいところのそれぞれが理解できたと思います。
Railsの良さはまずなんといってもRubyによる柔軟性とテストからベンチマークといった開発サイクル全般の機能がワンセットになっていてすぐに使えるところでしょう。
cakePHPの良さはなんといっても手軽さでしょう。PHPすらよくわかってない私でも短期間で習得できました。
それでいてWEBアプリケーションを開発するにはこれで十分じゃん。という機能を備えていると思います。
Railsの良さはまずなんといってもRubyによる柔軟性とテストからベンチマークといった開発サイクル全般の機能がワンセットになっていてすぐに使えるところでしょう。
cakePHPの良さはなんといっても手軽さでしょう。PHPすらよくわかってない私でも短期間で習得できました。
それでいてWEBアプリケーションを開発するにはこれで十分じゃん。という機能を備えていると思います。
本日のアクセス数:
2
このwikiの更新情報RSS