{ 2011.10.19 }

PHP Matsuri 2011に参加して得たこと(3/4)

    はてなブックマーク - PHP Matsuri 2011に参加して得たこと(3/4)
    このエントリーをはてなブックマークに追加

    3区担当の杉本です。
    PHP Matsuri
    でのハッカソンは10/16に終わりましたが、弊社ではまだマラソンが続いています。

    「ブログを書くまでが”Matsuri”」

    ※リレーブログ形式になったのは初日の誰かさんのせいですね。

    PHP Matsuriについて

    今回、初めてPHP Matsuriに参加しました。また、ハッカソンというのも初めての経験でした。
    コアデベロッパーの方やお世話になっているライブラリの開発者の方にお会いできるのを楽しみにしていました。

    Matsuriでは過ごし方を手探りしながら、初日は講演とワークショップに参加して、日付が変わったところから開発を始めました。
    ただ、もう少しいろんな方とお話しすればよかったなと今は思っています。

    デモ大会での発表について

    ハッカソンでは「CakePHPのbakeで確認画面(添付画像付き)含めたソースを楽して一括生成する」というテーマで参加しました。

    弊社ではCMSや業務系システムなどの案件が多く、「確認画面(添付画像付き)」という要件も少なくありません。
    これが結構面倒な処理になるのですが、「TransitionComponent(hiromi2424さん)」と「FilebinderPlugin」を使うことでかなり簡単に実装ができるようになりました。ほんと感謝感謝ですm(_ _)m
    それぞれのライブラリの使い方については割愛させていただきますが、色々な方が詳しく解説されていますので是非調べてみてください。
    ※弊社ブログでも過去にTransitionComponentについての記事が書かれています。

    ただ、それでも案件毎に、モデル毎に同じ処理を書くのが面倒になってきました。

    「もっと楽に、簡単に、ミスがないように」

    実装するために、確認画面ありのCRUDをbakeを使ってソースを生成したいと思うようになりました。

    そこで、CakePHP1.3+から導入されたTemplatesを使って、コアのbakeをいじらず、実装することにしました。
    今回は即実践投入を考えて、まずはCakePHP1.3で開発。

    CakePHP Templatesについて

    Templatesはcakeディレクトリにあるtemplates/default一式をappにコピーして作っていきます。
    Controller/Modelについてはソースを見れば、修正は簡単でしたが、
    課題はCRUDの4ファイル以外のctpファイルをどう生成するか、でした。

    Matsuriに参加するまではコアのbake周りをいじらないといけないかと思っていましたが、cakephperさんに相談したところ、コアデベロッパーのグラハムさんに直接質問できる機会ができ、templatesを使って任意のctpファイルを生成するサンプルコードを教えてもらい、見事解決しました。

    ちょっと緊張しましたが、グラハムさんとお話ができたこの瞬間が一番楽しかったです。(でもやっぱり英語勉強しないといけませんね。。。)
    本当にMatsuriに参加してよかったです。

    CrudPlusPluginについて

    ブログを書きながら(思いつきで)名前を決めました。
    使い方はapp/pluginsディレクトリに置いてbakeするだけ。

    php cake/console/cake.php bake all

    該当するモデルを選ぶところはいつもと同じです。異なるのは最後にテンプレートを指定するところです。

    ---------------------------------------------------------------
    You have more than one set of templates installed.
    Please choose the template set you wish to use:
    ---------------------------------------------------------------
    1. confirm_with_file
    2. default
    Which bake theme would you like to use? (1/2)
    [1] > 1

    これでadd.ctp/edit.ctp/index.ctp/view.ctpに加えて、add_confirm.ctpも同時に生成されます。今回のハッカソンでは時間が足りず、edit_confirm.ctpまで作れませんでした。
    あと改善したいのはTransitionComponent/FilebinderPluginの存在チェックをして、なければ取得・設置できるような処理を入れたいと考えています。
    近いうちに仕上げて、GitHubで公開します。

    最後に

    今回、目標の一つにCakePHP2.0を学ぶというのを掲げていました。年内にはstableが出るだろうから年明けにはガンガン使い出すという雰囲気でしたので。
    ところが福岡に帰ってきてみると、いつの間にかリリースされているというお土産つき!
    CakePHPワークショップ中にバグを直すという(予期しない)”イベント”があったので、まるで自分が開発チームのような、一緒に2.0をリリースしたような気分に勝手になっていました。
    これはただの妄想ですが、いつも使っているフレームワークやライブラリを開発している方と直に話をすることで、さらにこのフレームワークやライブラリが好きになりました。
    これは今回得たものの中でも予想外のことでした。

    今回このような素晴らしい機会に恵まれたことに感謝しています。
    そして、PHP Matsuriのスタッフの方にはこの場を借りてお礼を言いたいと思います。本当にありがとうございました。

    さて明日は最終走者、弊社小山です。
    初日の安藤さんや吉岡さんのように、熱く”Matsuri”を語って、このリレーマラソンを締め括ってくれると思います。
    みなさん、期待しておいてください。

    それではまたどこかで。

    Comments are closed.