Author Archive

    はてなブックマーク - PHPMatsuri参加レポート(1/3) JIREI NIGHTで発表しました
    このエントリーをはてなブックマークに追加

    最近MacのEmacs環境がいつの間にか快適になってうれしい小山です。神様ありがとう。

    遅ればせながらPHPMatsuri参加レポートをしたいと思います。
    たぶん、全3回になると思います。

    既に多くのエントリーや写真が上がっていますが、第1回はFusicとしてJIREI NIGHTで発表した「JIREI」の裏話などをしたいと思います。

    発表はまさかの深夜

    PHPMatsurIは、ハッカソン形式のオールナイト開発がメインとなるイベントでしたが、これは本当に「ガチ」でオールナイトイベントでした。

    JIREI NIGHTもその流れで、発表時間はまさかの深夜

    私の発表はその中でも最後で、日付を超えるか超えないかのタイミングでした。
    もしかしたら数あるカンファレンスの公式セッションでの最遅の部類に入っているのではないかと思います。

    それにも関わらず会場には参加者のほとんどの方がいて、JIREI NIGHTにも半分以上の方が耳を傾けてくれていました。

    発表後もそのまま開発に移行し、私が寝たのが深夜4時過ぎ。コアデベロッパの皆さんも夜遅くまでコーディングをしていました。
    みんながもくもくと夜を通して開発をしている雰囲気、この空気感の経験は他ではなかなかできないことだと思います。
    自分も思う存分コーディングすることができました。

    JIREIと開発連携とPHPMatsuri

    私は「CakePHP + Gearman」というタイトルで発表させてもらいました。

    発表時刻も遅かったので(さらに時間も押していました)、当日は早足で話してしまいました。

    今回はこのJIREIの裏話でもしようかと思います。

    このJIREIで技術的に面白かったのはもちろんCakePHPとGearmanとの連携でしたが、それ以外に刺激的なことがあったので紹介したいと思います。

    このJIREIはアイフリークさんとのJIREIだったのですが、単なる受託案件というよりも、お互いが連携して開発を進めることができました。

    このJIREIで導入するシステムはいくつかの内部システムと連携をする必要があったのですが、
    それらに関係する仕様調整や、さらには業務と密に連携する細かな箇所の開発まで、アイフリークさんの技術チームと連携することで非常にスムーズに開発ができたと思っています。

    この経験は個人的にはとてもエキサイティングなものでした。普段は一緒にしない方とチームを組むというのは本当に刺激的です。
    JIREI NIGHTでもここらへんについても話したかったのですが、当日はできませんでした。
    こういう機会があったら今後も積極的に関わっていきたいなと思いました。

    で、思ったのですが、これってPHPMatsuriの状況と同じですよね。
    PHPMatsuriも、全国から開発者が集まって開発をしている一日中ずっと刺激的な環境でした。
    すごい環境だったんだなーと改めて思います。

    1つ反省点を上げるならば、もっといろいろな技術者と連携して開発ができたらもっと良かったのかなと思いました。
    次回またあったら是非チームを組みたいと思います。

    第2回に続きます。

      はてなブックマーク - 複雑なCakePHPテンプレートのファイルパスが一目瞭然。Viewpath Pluginの紹介
      このエントリーをはてなブックマークに追加

      ひょんなことからiPod Touchを手に入れて、ガラケーとのUIの違いに戸惑っている小山です。
      iPod Touch薄すぎて、なくしかけたのは内緒です。
      (iPod TouchをもらうきっかけとなったPHP Matsuriの話はまたのちほどまとめてしたいと思っています。)

      CakePHPの複雑なテンプレートファイル構造

      CakePHPで1つのページを表示するにはデフォルトでは2つのctpファイル(テンプレートファイル)で構成されます。
      また、element化などをして部分を切り出した場合はそれ以上の数のctpファイルで構成されます。
      さらにPrefixルーティング機能やTheme機能などを使った場合は、通常と異なるctpファイルが呼び出されることがあります。

      CakePHPにどっぷりつかった自分には全くもって問題ないのですが、これが協業していただくデザイナーさんにとってはかなり面倒なことになってしまうのが現状です。

      ただでさえ(Smartyなどではなく)PHPスクリプトが混在したファイルを触ってもらっているのに、さらにどのファイルが今のページを構成しているのかまで、理解してもらうのはかなり負担をかけてしまいます。

      Viewpath Plugin

      というわけで、作ってみたのがViewpathプラグインです。

      k1LoW’s viewpath at master – GitHub -

      これは現在のページを構成しているctpファイルのリストを作成してくれるプラグインです。
      DebugKitプラグインのように、常に左上に表示されているアイコンをクリックすると「現在のページを構成しているctpファイルのリスト」を表示してくれます。

      設置方法などはREADMEをみてください。
      たったそれだけのプラグインです。たぶんプログラマにはいらないでしょう。
      でも、きっとデザイナーの人は喜んでくれる(はず)。
      若干一部対応しきれていない箇所があるのですが、十分参考になると思います。

      いづれはDebugKitへの統合ができたらいいなと思っています。

      追記:slywalkerさんがDebugKitへの対応をしてくれました!これにより、単独利用だけでなくDebugKitへの統合も可能になります。

      よかった是非使ってみてください。

        はてなブックマーク - TransitionComponent for CakePHPで簡単確認画面実装
        このエントリーをはてなブックマークに追加

        最近はこればかり聴いている小山です。

        今回は、つい先ほど1.0がリリースされたTransition Componentを紹介します。
        (CakePHPのバージョンは1.3.2を想定しています。)

        Transition Component

        Webシステムで、実装が面倒なものとして例えば「確認画面」というものがあります。
        ようは「ページ遷移をともなって完結するような機能」ですね。
        他にも「ウィザード」や「アンケート回答」や「カート」でもいいかもしれません。

        Transition Componentは、そのような「ページ遷移」管理を一手に引き受けてくれるComponentで、hiromi2424さんによって開発がされています。

        Transition Componentは、セッションと、主にCakePHPのモデルバリデーションの機能を利用してページ遷移を管理しており、
        使いこなすとページ遷移管理を非常にすっきりとしたコードで実現することができます。

        今回は簡単な登録機能に確認画面を実装してみます。

        登録機能の実装

        今回はcaketransitionというデータベースにpostsというテーブルを作成します。

        postsの登録機能のMVCは以下のようなソースコードで作成します。

        post.php

        posts/add.ctp

        posts_controller.php

        Post.titleにnotemptyのバリデーションがある簡単な登録機能です。
        ただ、これだとまだ確認画面はありません。

        Transition Componentを利用した確認画面の実装

        ではTransition Componentを利用して実際に確認画面付きの登録機能を実装してみます。
        Modelは特に変更はないので、VとCだけ作成します。

        posts/add.ctp

        posts/add_confirm.ctp

        posts_controller.php

        たった、これだけですっきりした形で確認画面付き登録機能が実装できました。

        ポイント

        ページ遷移を伴う機能を実装するにあたって必要なのは以下の点です。
        また、Transition Componentでは以下のメソッドでそれらを担っています。

        • 正しい操作後の次のページへの遷移と入力データの保持 [TransitionComponent::checkData(), ::automate()]
        • 正しいページを通って来たかどうかのチェック [TransitionComponent::checkPrev()]
        • 各ページで入力されたデータの取得 [TransitionComponent::mergedData(), ::allData()]

        posts_controller.phpを見ても、とても直感的でわかりやすいかと思います。

        まとめ

        今回はTransition Componentの導入として簡単な確認画面付き登録機能を実装してみました。
        本当に簡単な導入部分だけを紹介しましたが、実際に使いこなすと非常に強力な機能を提供してくれます。
        個人的にはTransition Componentはここ最近のNo.1ヒットなCakePHPライブラリです。

        ぜひ使ってみることをお勧めします。

        詳細はREADMEhiromi2424さんのブログを確認してみてください。

        お知らせ

        7月3日(土)に第2回CakePHP勉強会@福岡を開催します。

        メインセッションも県外からのスピーカーセッションや、
        CakePHPベースCMS ”BaserCMS“の開発者の方のセッションなどがあり
        非常に充実していています。

        CakePHPで語りたい皆様、ぜひ参加してください。Transition Componentの使い方の質問なども是非。

        第2回CakePHP勉強会@福岡

        日時 / DATE :2010/07/03 14:00 to 18:00
        定員 / LIMIT :20 人
        会場 / PLACE :Fusic Co., Ltd. (福岡県福岡市中央区大名2-4-22 新日本ビル9F)

        申し込みはこちら→第2回CakePHP勉強会@福岡