高橋 です

Webのデザインとかプログラムとか

CakePHP2.4を身につけておきたいなぁーという人向けの話

こんにちは〜みんなCakeやってる〜??ぼくもボチボチやってますよ〜 今回はCakePHP2.4をなるべく早く身につけてスマートに開発するための情報を紹介したいと思います。 割と自己流だったりするので肌に合わなかったらごめんなさい。

さて、Cake3のリリースが待ち遠しいところではありますが、今回はCake2系についてです。 というのも現場では常に最新バージョンが使える環境とは限りません。PHP5.3を使わざるえない状況は考えられますし、既存プロジェクトの改修案件とかもあります。その時はCake2系をやることもあるよねーというわけです。

対象は「PHPは知ってるけどフレームワークはあんまり...」という方向けです。

1. CakePHPを知る

まずは「Cakeってどういう風に開発すればいいの?」ってところですね。 正直、公式のブログチュートリアルがオススメです。

Blog Tutorial

http://book.cakephp.org/2.0/en/getting-started.html#blog-tutorial

Cakeの命名規則は独特かもしれません。慣れるまでに少し時間が必要ですが、Cakeでどういう風に開発すればいいか?という問いの答えは出てくると思います。

それからグンと足を伸ばしますがCroogoというCakePHP2で作られているCMSソースコードはすごくすごく参考になります。必ずチェックしましょう。またCakeが標準で持っているBakeというジェネレーターは強力で魅力的な機能です。こちらもで必ず身につけましょう。

2. MVC(というかモデル)を知る

次にやるべきはMVCに対する理解を深めるところだと思います。 このあたりの設計思想がしっかりしてないとフレームワークを活かすことができません。 特にモデルが重要です。もう一度言いますが、特にモデルが重要です。

CakePHPを使ったMVC設計のベストプラクティス

http://old-journal.sooey.com/2008/03/26/717/

この記事は2008年に書かれたためソースコードは使えませんが、内容がとても良いです。

・PHPerのMVCの一体どこが間違っていたのか

http://d.hatena.ne.jp/MugeSo/20121224/1356345261

余談ですけどPHPMVCっていなんていうかモヤモヤするなぁ。って思ってたらこの記事に書いていました。 「Webへの対応」という見出しの章が参考になるかと思います。

っていうか「MVC2」って言うんですね。へぇ〜

3. 開発を楽にする方法を知る

開発を楽にする方法とはパターン化したりプラグインを使ったりCakeの機能を把握することだと思います。

デバッグ

【CakePHP2.3】必須プラグイン(DebugKit) http://blog.livedoor.jp/spyder_5615/archives/25579823.html 超便利なDebugkitを画面キャプチャ付きで解説 http://d.hatena.ne.jp/cakephper/20090604/1244112188

・検索

Searchプラグインを使ってCakePHPに検索を実装する http://mawatari.jp/archives/introduction-of-cakedc-search-plugin-for-cakephp

・画像アップロード

cakePHP 2.x 画像アップロードプラグイン“upload”の使い方 http://www.workabroad.jp/posts/437

・メール

CakePHP2.X 「CakeEmail」 の使い方 http://takahashiyuya.hatenablog.com/entry/20120328/p1

ACL

CakePHP2でACLを超簡単管理できるプラグインACL Plugin 2」 http://takahashiyuya.hatenablog.com/entry/20120301/p1

4. おすすめ本

・詳解CakePHP辞典

http://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3CakePHP%E8%BE%9E%E5%85%B8%E2%80%952-0-2-1-2-2-2-3%E5%AF%BE%E5%BF%9C-%E6%BB%9D%E4%B8%8B/dp/479803746X/ref=sr_1_3?ie=UTF8&qid=1392887001&sr=8-3

リファレンスが必要な方はこの一冊があれば大丈夫でしょう。

・CakePHP2 実践入門

http://www.amazon.co.jp/CakePHP2-%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-WEB-PRESS-plus/dp/4774153249/ref=sr_1_2?ie=UTF8&qid=1392887001&sr=8-2

実践入門として日常的に使われているテクニックが学べます。テストの章が特にオススメです。

・Webアプリ開発を加速する CakePHP2定番レシピ119

http://www.amazon.co.jp/Web%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%82%92%E5%8A%A0%E9%80%9F%E3%81%99%E3%82%8B-CakePHP2%E5%AE%9A%E7%95%AA%E3%83%AC%E3%82%B7%E3%83%94119-%E9%95%B7%E8%B0%B7%E5%B7%9D-%E6%99%BA%E5%B8%8C/dp/4798039519/ref=sr_1_1?ie=UTF8&qid=1392887001&sr=8-1

このレシピ集は実践入門よりコアな内容となります。読んでいると知らなかったなーということが多くて勉強になりました。

上記3冊はCakeコミュニティの中心人物が勢揃いで書いているような感じですね。 みんな優しいし面白いしコミュニティにご興味がある方はカモンですよ。

それでは!

第一回CakeBeerTalk に参加してきた

こんばんは、高橋です。こんばんは。

寒空すらも色づいたと言われた 2/14 第一回CakeBeerTalkは開催されました。

会場はコエドという茅場町のコワーキングで、駅からすぐでした。 到着は19時半くらいだったけど、既に皆さんめっちゃ飲んでました。。。さすが。。。

ひろみさんの挨拶があって、さっそくLT開始!(LTリストは引用のため敬称略)

@hiromi2424:CakePHP2.3の新機能のうち一つ(仮)

トップバッターはひろみさんです。 Cake2.3での新機能や変更点についてザックリとお話頂きました。 けっこう細かい変更があったりするので抑えておきたいなぁという部分をザッと確認できて良かったです。 あと、超急ぎで喋ってたのに割りと時間余ってました。笑

@ cakephper:「CakePHP 1 to 2 Migration tips 100」

次はケイクペチペイパーこと市川さんの発表。なんとバージョン移行Tips100連発! さすがにLTで消化するのは無理だろう!と思っていました・・・が!なんと! いきなり好みのビールや自宅近辺の美しい風景写真を公開しはじめてやっぱり時間足りてませんでした! 発表資料の中にある __construct() はハマってしまいそうだなぁ。と思いました。

@takahashiyuya:「CakePHP2.3の新機能のうち一つ」

私の発表です! Cake2.3の新機能である onlyAllow() というメソッドに的を絞って解説しました。 結論を一言でいえば、「たった一行追加するだけで、不正やミスを防げるかも。」という事です。 詳しくはスライドをご覧ください。相変わらずページ少なくて申し訳ないですが

@kaz_29:「CakePHP2+BDD Plugin」

かなり面白かったです!BDD(振舞駆動開発)をサポートするプラグインのデモをしてくれました! 振る舞いを記述してテストを走らせるとブラウザが自動的に入力やらなんやらやってくれるんですね! ちなみに開発者の岸田さんがいらっしゃったので、後に裏LTがあったのもアツかったです!BDD Pluginすげぇ!

橋田 一秀:「CakePHPで簡単にABテスト」

ABテストという、テキストや画像・インターフェース等を変更して表示することで、どのケースのコンバーションがよかったかと統計を取るマーケティングの手法で、それをGoogleアナリティクスとの連携で簡単に導入できる方法の解説です。ビール買い出し行ってて聞けませんでした><なんてこったい

Yusaku Matsushita:「CakePHP+facebookAPIについて」

こちらもビール買い出し行ってて聞けませんでした><スライドないので内容も見逃しっぱなしでした。 ただ、安藤さんが補足的に裏LTをしてくださったおかげでFacebookアプリって意外と敷居低いかもと思いました!

LTの後の話

予定したLTの後にも飛び入り参加で発表がいくつかありました!!飛び入りって勇気いると思います!こういう積極的なアウトプットはみんな幸せにするはずなんで、私もやっていこうと思いました!

それからはピザ!ピザ!ビール!ビール!でした

CakeBeerTalk は月1でやっていく予定なので「ビール片手にCakeの話したいなー」とか「とりあえずCakeに興味あるけど、何すればいいんだろー」みたいな方は一度は参加してみてください!良い機会になると思います!特にハンズオンも予定してないのでパソコンを持ってなくても大丈夫ですよ!

それでは、ご参加頂いたみなさん、本当にありがとうございました!

PHP 配列のキーを振り直す方法

f:id:y_guriko:20130131211621p:plain

動的にフォームを生成してる場合などで役に立つ。

結論でいえば array_values() で出来ます。

しかしながら、名前からは想像しにくい結果となるので

function array_key_renumber($array = array()) {
    return array_values($array);
}

こんなラッパー関数を作ると良いですね。

↓ちなみに配列の添字(インデックス)を振り直すケースはこちら

/*
(array)$request => (
    (int)0 => ''
    (int)1 => ''
    (int)2 => '入ってる'
    (int)3 => ''
    (int)4 => 'ここも入ってる'
    (int)5 => ''
)

*/
foreach($request as $index => $value) {
    if (empty($value)) unset($request[$index]);
}
$data = array_key_renumber($request);
/*
(array)$data => (
    (int)0 => '入ってる'
    (int)1 => 'ここも入ってる'
)

*/

これなら虫食いのリクエストがきても、安心して対処が出来ます。