実"戦" CakePHP Plugin

        Kenichirou Oyama     (k1LoW)




CakePHP勉強会#5@Tokyo 福岡サテライト             1
Agenda
• About Me
• 実"戦"で使うPlugin/Component
• About 'futil'




CakePHP勉強会#5@Tokyo 福岡サテライト   2
About Me



CakePHP勉強会#5@Tokyo 福岡サテライト   3
About Me
• name:
  – Kenichirou Oyama (id:k1LoW)
     • from Fukuoka JAPAN
• membership:
  – 
  – 101000code/101000LAB
  – codecheck.in
• “cake.el” maintener
  – CakePHP Emacs Minor Mode
CakePHP勉強会#5@Tokyo 福岡サテライト        4
実"戦"で使う
        Plugin/Component



CakePHP勉強会#5@Tokyo 福岡サテライト   5
CakePHPで戦えますか?
• 入社からCakePHP導入を主導して現
  在まで3年、FusicのPHPチームのメ
  インフレームワークはCakePHPに。
• 実戦で使っているPlugin(   )や
                     導入済

  Component、さらに今後実戦投入予
  定のPlugin、Component( 投入予定
                         )を
  紹介します。



CakePHP勉強会#5@Tokyo 福岡サテライト    6
導入済




                 Debug Kit




CakePHP勉強会#5@Tokyo 福岡サテライト    7
説明不要



CakePHP勉強会#5@Tokyo 福岡サテライト   8
導入済




               Ktai Library




CakePHP勉強会#5@Tokyo 福岡サテライト     9
説明不要



CakePHP勉強会#5@Tokyo 福岡サテライト   10
cakeplus




CakePHP勉強会#5@Tokyo 福岡サテライト   11
導入済

                 cakeplus
• id:cakephperさん作成のCakePHP拡張
  Plugin
  – 自分がメインのプロジェクトでは常に使用
     • 個人的には当たり前レベル
• 特にバリデーション周りの拡張は重要
  – 日本でのシステムの一般的なバリデーション
    メソッドの充実
  – バリデーションエラーメッセージに__()が設
    定できる
• みなさん使っていますか?

CakePHP勉強会#5@Tokyo 福岡サテライト      12
Search




CakePHP勉強会#5@Tokyo 福岡サテライト   13
投入予定

                   Search
• CakeDC謹製の検索機能追加用Plugin
• 使ってみたらため息がでるほど簡単に検
  索機能を追加できた
• つづきはWebで検索!


  Fusic blog                 検索


CakePHP勉強会#5@Tokyo 福岡サテライト          14
TransitionComponent




CakePHP勉強会#5@Tokyo 福岡サテライト   15
投入予定

     TransitionComponent
• id:hiromi2424さん作成のページ遷移管理
  コンポーネント
• ここ最近のNo.1ヒット
• 日本のみんなが大好き(?)な確認画面なん
  てすぐ作れる




CakePHP勉強会#5@Tokyo 福岡サテライト     16
その他




CakePHP勉強会#5@Tokyo 福岡サテライト   17
その他
• QdmailComponent       投入予定
  – メール定番のQdmail用コンポーネント
• cakephp_exception_notifier   導入済

  – PHPエラーが起きたらメール送信
• Fatty   導入済

  – Gitリポジトリブラウザ。自作ながら個人的定番
• has_no     投入予定
  – bindModel()/unbindModel()に疲れた方に
• po   導入済
  – poファイル編集Plugin。cakeplusとあわせて個人的
    定番
CakePHP勉強会#5@Tokyo 福岡サテライト            18
About 'futil'




CakePHP勉強会#5@Tokyo 福岡サテライト     19
About 'futil'
• Fusic社内用CakePHP Plugin
  – FusicでのCakePHPプロジェクトか
    ら自分を中心に作成したライブラリ
    群
  – 汎用的なものよりも実戦的なものが
    多い
     • 環境依存も多数
  – 主に開発効率をあげるもの

CakePHP勉強会#5@Tokyo 福岡サテライト    20
futilの代表的な機能の紹介




CakePHP勉強会#5@Tokyo 福岡サテライト   21
f コマンド




CakePHP勉強会#5@Tokyo 福岡サテライト   22
$cake f

                       OR
$php cake/console/cake.php f




CakePHP勉強会#5@Tokyo 福岡サテライト     23
Library init


$cake f l

CakePHP勉強会#5@Tokyo 福岡サテライト    24
Library init
• PluginやComponent、PHPのライブ
  ラリまで選択するだけでインストー
  ルを行うコマンド
• 必要ならばソースに設定を書き加え
  る
• 現在インストール可能なライブラリ
  – debuglib, DebugKit, SimpleTest, cakeplus, po,
    has_no, simple_file, Search,
    TransitionComponent, Qdmail, Qdsmtp,
    wkhtmltopdf, Fatty


CakePHP勉強会#5@Tokyo 福岡サテライト                          25
Design init


$cake f d

CakePHP勉強会#5@Tokyo 福岡サテライト    26
Design init
• CakePHPのデフォルトテンプレート
  を書き換えるコマンド
  – bakeコマンドで生成されるソース
    ファイルも変更
• 必要なイメージ画像やjs、cssまで
  セットする
• 現在選択できるデザインは3つ
  – 簡単にテンプレートの追加が可能
    • CakePHP1.3の機能を使用
CakePHP勉強会#5@Tokyo 福岡サテライト   27
Design init




CakePHP勉強会#5@Tokyo 福岡サテライト   28
Design init




CakePHP勉強会#5@Tokyo 福岡サテライト   29
Design init




CakePHP勉強会#5@Tokyo 福岡サテライト   30
Design init



Pluginとしてオープンソース化予定

         ※急募:クールなPlugin名



CakePHP勉強会#5@Tokyo 福岡サテライト   31
Validation Pattern Behavior




CakePHP勉強会#5@Tokyo 福岡サテライト     32
Validation Pattern Behavior
• 同じモデルバリデーションを1つにま
  とめるBehavior
  – 例えば、一般ユーザの姓名のバリデー
    ションと管理ユーザの姓名のバリデー
    ションをそれぞれ書かなくてもよい
• cakeplusにもコミットしている謎の
  プログラマ"Kagasawa-san"作成の実
  戦に即したBehavior


CakePHP勉強会#5@Tokyo 福岡サテライト     33
Validation Pattern Behavior
<?php
class UserModel extends AppModel {

  var $validate = array(
                  // 姓
                  'family_name' => array(
                                  'notEmptyFamilyName' => array(
                                                       'rule' => 'notempty',
                                                       'allowEmpty' => false,
                                                       'last' => true,
                                                       ),
                                  'notSpaceOnlyFamilyName' => array(
                                                           'rule' => 'space_only',
                                                           'allowEmpty' => true,
                                                           'last' => true,
                                                           ),
                                  'zenkakuOnlyFamilyName' => array(
                                                          'rule' => 'zenkaku_only',
                                                          'allowEmpty' => true,
                                                          'last' => true,
                                                          ),
                                  ),
         );
}

CakePHP勉強会#5@Tokyo 福岡サテライト                                                            34
Validation Pattern Behavior
<?php
class UserModel extends AppModel {

  var $actsAs = array('Futil.ValidationPatterns');

  var $validate = array(
                  // 姓
                  'family_name' => 'family_name_pattern',
         );
}




CakePHP勉強会#5@Tokyo 福岡サテライト                                  35
Validation Pattern Behavior



    cakeplusにpull request予定

      id:cakephperさんお願いします!



CakePHP勉強会#5@Tokyo 福岡サテライト     36
その他
• app/tmp内のキャッシュファイルをコマ
  ンドで一括削除できたり
• .pdfをURLにつけるとpdf出力ができたり
• sqlとモデルファイルを分離できたり
• NetBeansハック用コメントを挿入できた
  り
• ユーザ認証をコマンドで実装できたり

CakePHP勉強会#5@Tokyo 福岡サテライト   37
まとめ
• いろいろなPluginがものすごい勢いでリ
  リース。
  – 特にgithubをチェック
• 最近は「システム依存は
  Helper/Component/Behavior。汎用的な
  ものはPlugin」というようになってきた。
• (社内)ツールをまとめたPluginおすすめ
  – id:slywalkerさんの言っていたことは本当
  – http://d.hatena.ne.jp/slywalker/20090523/1243059244
CakePHP勉強会#5@Tokyo 福岡サテライト                                38
告知



 7月CakePHP@Fukuoka開催予定!

          ※スペシャルゲストも!



CakePHP勉強会#5@Tokyo 福岡サテライト   39

実"戦"CakePHP Plugin