agilephp @ ウィキ

メニュー



目次

第5章 Depotアプリケーション

  • 5.1インクリメンタル開発
  • 5.2Depot基本仕様
  • 5.3コーディング開始

第6章タスクA:商品の管理

第7章タスクB:カタログの表示

第8章タスクC:カートの作成

第9章タスクD:チェックアウト!

第10章タスクE:発送

第11章タスクF:ユーザ管理

第12章タスクT:テスト



リンク



cakePHPによるアジャイルWebアプリケーション開発


PHP初心者の私がcakePHPを習得するために「RailsによるアジャイルWebアプリケーション開発(初版)」の「第二部 アプリケーションを構築する」に掲載されているサンプルプログラムをcakePHPで作り直してみました。
CakePHPはRailsを意識したフレームワークとのことですが、RailsのサンプルをcakePHPにポーティングすることによってRailsとの違いを明確にすることによってより理解が深まるとの思いから取り組みました。

これからコンテンツを充実させていきます。ちなみに、ドラフトはすでに公開済みで徐々にドラフト内容をwikiにまとめていきます。
ドラフト:
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

サンプルソースのインストール
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 があります。これをコピーし忘れると正常に動作しないので注意してください。

セットアップ

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アプリケーションを開発するにはこれで十分じゃん。という機能を備えていると思います。

本日のアクセス数: 2