PHP フレームワーク 勉強会 第2回(PHP 中級者 勉強会 第6回)で発表して来ました

日曜日にphpフレームワーク勉強会で発表してきました。

この勉強会はphp初心者勉強会から派生したphp中級者勉強会の企画で、CakePHP, Symfony, Zend Framework, CodeIgniterの4つのフレームワークの中から、やってみたいフレームワークを選んで3, 4人チームで一つの課題に取り組むというものです。

自分は初めCakeやってみたいなぁと思っていたのですが,この人と一緒に開発してみたいなぁという人がCodeIgniterをやるというので,名乗り出てCodeIgniterに変更したのでした。

また、そのあと、CodeIgniter徹底入門asin:4798116769ている方(CodeIgniterユーザ会の安藤さんという方)が前々からphp初心者勉強会のディスカッションに投稿していたのですが、今回、アドバイザー的な立場で関わって頂けるということで、勉強をする環境は万全になったのでした。

まずは今回までに

  • インストール完了
  • デフォルトページの表示
  • ページのカスタマイズ
  • 複数ページの表示
  • データベースへのアクセス
  • データベースの操作(SELECT、INSERT、UPDATE)
  • フォームの出力

までは出来るようにとの主催者の方から宿題が出たので,CodeIgniter徹底入門片手に開発に着手しました。

本来は作業を分担して機能を作って行くところなのですが、チームのメンバー3人の中で自分だけがフレームワーク初心者なので,基本的な部分は自分が作ります!ということでやっています。

導入ページ(勉強会のGoogleグループ内にあり)は安藤さんが作成して下さったので、それに沿って進めたら
あっさり完了。CodeIgniterは導入がとても簡単でした!

phpで書かれた設定ファイルを1つ(DBを使うなら2つ)いじるだけで開発が始められます。

ただ、CodeIgniter徹底入門に書いてあったところと違うところがあったので早速質問。
本の作者に質問できるなんてこんな贅沢なことはないですね!

すると、その部分はCodeIgniterの設定というよりはApache(mod_rewrite)の設定部分なので、まずは最低限の設定で動かしてみてCodeIgniterの使い方、楽しさを体験してみて下さいとのこと!
確かに自分のような初心者は、設定は最低限で、手を動かす(=コードを書く)ことの方が大事ですね^^;

ということで本を読みつつまずは商品一覧を作ってみました。
Controller→Shop(Controllerクラスを継承)

<?php

class Shop extends Controller {

	function Shop()
	{
		parent::Controller();
	}
}

Model→Shop_model(Modelクラスを継承)

<?php
class Shop_model extends Model {

	function Shop_model()
	{
		parent::Model();
	}
}

のように書くのがお決まりのようです。

データベースを扱うにはActiveRecordクラスが用意されていたので使ってみました。
簡単なSQLを発行するにはあまり恩恵は少ないかもしれませんが、これから開発が進んでいくにつれ、
便利さが実感できるかもしれません。

フォームを使うにはフォームヘルパーが用意されているので、これを使います。
フォームバリデーションクラスと組み合わせて楽に入力チェックをすることができます。

URL構成はセグメントベースと呼ぶようなのですが、

http://ドメイン名/index.php/コントローラ名/メソッド

というURLになるようです。

そういえば、たまにWebページでこんなURLを見かけることがありますね!

こんな感じで本格的なフレームワークに初めて触れて、楽しくなって、結局発表までに

  • 一覧画面
  • 商品検索、ソート
  • ログイン
  • ユーザ登録
  • カートに入れる
  • 注文処理(トランザクションもちゃんと入れました!)

まで実装することができました!

もちろん、全部一人で解決できたわけではなく、トランザクション、ページ間の値の保持などについては、安藤さんからありがたいアドバイスを頂きつつ進めていきました。

勉強会当日は他のメンバーが出席できないので、自分が発表をさせて頂きました。

緊張してて早口になっていて聞きづらかったかもしれませんが><
発表の後、

  • フォームのバリデーションはコントローラではなくモデルに書くべきでは?
  • CodeIgniterは他のフレームワークに比べてパワフルさに欠けるかも?

という突っ込みをもらいました。
バリデーションについては、自分で調べてみようと思います。
パワフルさに欠けるという点では確かにSymfony, Cake等の発表を聞く限り、同意です!
コマンドラインでアプリのひな形を作れるなんでスゴイです。

ただ、裏を返せばシンプルという言い方もできますし、どのようなアプリを作るかで欲しい機能も変わるので,一概にマイナスポイントではないのかぁというところでしょうか。

と長くなってしまいましたが、無事発表が終わって良かったです。
発表資料ですが、Googleグループのページと、SlideShareにあげてあります!
最後の2ページに先日リリースしたATND検索の紹介もちゃっかり入ってますが(笑)

次回は1ヶ月後です。基本的な書き方は分かってきたので、これからは他のメンバーと機能の割り振りを相談しつつ、ガリガリ開発していきたいと思います!

追記

SlideShareのスライド、結構崩れちゃってますね...
MacのPowerPoint2008、フォントがヒラギノは相性が悪いのかもしれません!