CakeMatsuriTokyo2009に参加してきた

昨日(10/31)、渋谷で開催されたCakeMatsuriTokyo2009の二日目のカンファレンスに参加してきました。
このようなカンファレンスに参加するのはこれまでほとんどなかったのですが、参加して良い刺激になりました。
昨年とは異なり、今年は有料とのことでしたがそれでも100人近くの方が参加されていました。

以下、僕が残したメモと感想になります。

基調講演 CakePHP道 - Yusuke Andoさん

  1. 価値
    • 全てのPHPユーザとは簡単に使いたい初心者&拡張しまくりたい上級者
    • CakePHPは障壁が低く、ユーザーが多い
    • ユーザーが多いことは価値
      • かなり局所的な技術
      • 技術だけではなく精神論を伴う
    • コミュニティ哲学
      • Give back much as you take:もらった分だけ返そう
      • Be polite:礼儀正しく
      • Think outside the box:自分の枠にとらわれないこと
    • 外部からの刺激は必要かつ重要なもの
      • ネットや勉強会で吸収
      • 吸収した内容を還元しよう
    • MVCと拡張のための仕組み
      • Component,Helper,Behaviorなど
      • Coreライブラリ内Set
        • Set::combine()⇒Cake特有の配列を簡素化
    • 公開されているソースコードから学ぶ
      • Remora,Croogo,Candycaneなど
      • すべては小さなクリーンなコードのために
  2. 世界
    • Bakeryはノウハウの宝庫
    • i18nで自分のアプリケーションを国際化できる
    • CakePHPで世界と繋がれ

CAKEPHP道とは

      • 外部からのINPUTとOUTPUTでインスピレーションを磨き続ける
      • さまざまなテクニックをつかって小さなコードを目指す
      • 世界とダイレクトに繋がって世界観を広げる
感想
  • ユーザが多いことはCakePHPに関する情報も増えることにも繋がりメリットは本当に大きいです。
  • 僕もGive back much as you take出来るように頑張ります。

事例紹介その1

CakePHPでつくる地域SNS - あつ さん
  • ドメインがばらばらなサイトに対する対応方法
    • 複数のサイト用に複数のDocumentRootに共通コードをコピー
  • 苦戦した点
    • Association
  • 用件定義日数
    • 30日
    • 日本語化ツールを開発したことで開発が容易になった
  • 今後の予定
    • 携帯への対応
    • Ktai Library
スズキ自販サイトでの Cakephp 活用事例 - syuhari さん

一つ目事例

  • 経緯
    • Cakeを知っていたという唯一つの理由
  • CakePHP構成
  • Controller:71,Model:100,View:522
  • DB:Postgress
  • 苦労した点
    • 開発当時は参考サイトがなかったこと

二つ目事例

  • システム構成
  • CakePHP構成
    • Controller:22,Model:27,View:402
    • DB:MySQL
  • 工夫した点
  • 苦労した点
    • CMSをどちらに使用するか
    • 携帯ライブラリを使わなかった点
  • CakePHPを使用した感想
    • FrameWorkをカスタマイズしてはいけない
    • 開発スピードが速い
    • 使用ユーザが多い
nanapiのレシピ - 和田修一 さん
  • What is nanapi
    • ライフレシピ共有サイト
    • CGMサイト
  • CakePHPを選んだ理由
    • 習得が高速
    • ドキュメントが豊富
    • 一人で開発しやすい
  • 設計ポリシー
    • CakePHPの使いどころを分けている
      • 評価・検索機能:CakePHP
      • 文章表示・トップページなど:Pure PHP
    • 速さを求めるところはCakPHPを極力避けている
  • データ構成
  • Lsyncd
    • 投稿時にファイルを生成。生成したファイルを別サーバに転送まで行ってくれる
  • ページ構成
    • 高速化を求められるパース済みHTMLを最初に読み込む
    • 高速の必要はない数値などはAjaxで後で取得
感想
  • どの事例も開発を進める上で工夫されている点があり、参考になりました。
  • 前半2つの事例がPostgreSQLを使っていましたが、MySQLPostgreSQL派どちらが多いのか気になりますね。
  • 表示で優先させなくていいデータは非同期で後から取りに行くことは表示速度を向上させるためには重要ということを認識。

ランチタイム

  • お昼ですがビールタイム

CakePHP: The framework strikes back 〜フレームワークの逆襲〜 - Graham Weldon 氏

  • CakePHP 1.2
    • 現在メンテナンスモード
    • 開発はCakePHP 1.3以降にフォーカス
  • CakePHP 1.3
  • CakePHP 2.0
    • PHPサポート
      • PHP4系列はサポート終了
      • PHP5.2以降をサポート
    • Model
      • モデルのやり取りを配列からオブジェクトへ
        • オブジェクトを返す場合、参照を返すだけなので、すべての要素を返す配列よりも軽いらしい
      • Data Mapper パターンの採用
    • A good look at things
      • 全般的にCakePHP1.3系列構成の見直し
      • メモリ使用率・速度向上の改善にフォーカス
      • メモリ使用量減少の目標数値とかは決まっていない模様  
感想
  • CakePHP1.3からjQueryがデフォルトになるのは普段jQueryを使用することの多い自分には嬉しい限り
  • CakePHP2.0はメモリ使用量や速度が改善されるらしいので、どのくらい改善されるか非常に楽しみです。
  • 発表内容とは関係ありませんが、スライドの途中に出てきた猫とペンギンがかわいすぎです。

事例紹介その2

CakePHPでつくる物件紹介ポータルサイト - bennylee さん
  • Why CakePHP?
  • 選定基準
    • PHP4,5両方対応
    • MVC
    • ある程度のCoC
    • 拡張性重視
    • ドキュメント充実、コミュニティが活発
  • 無制限画像アップロード機能
    • DB検索結果をキャッシュ
    • キャッシュにはCoreライブラリのCacheを利用
    • サムネイルは出力の1回目のみ画像生成し、2回目からはキャッシュ
研究分野でのCakePHPの活用事例とその周辺の話 - 飯塚康至 さん
  • みんなの研究生活P-Lab
    • Latexによる論文執筆機能
    • 参考文献管理機能
  • JavaScript
    • Ext.jsを使用
  • CakePHP位置づけ
    • 利点
      • Pagenationが素晴らしい
      • 自分のスタイルでお仕着せがない
    • 欠点
      • ビューが汚くなってしまう
      • 名前の付け方が難しい
        • bbsの単数形はbb
    • 開発環境とスタイル
  • プロジェクト
感想
  • 自らで改良を加えたフレームワークは運用が大変であることは非常に同意。
  • DropBoxにバージョン管理があるのは初めて知りました。
  • Ext.jsを使用している事例は、Ext.jsは機能が非常に豊富ですが、その分容量が大きく表示速度に影響はないのかなと思いました。

プラグイン活用法 - slywalker さん

感想

Key-Value Stores & Non-Relational Databases - Joel Perras 氏

  • Relational Databases
  • Modern Web Application
    • 可変スキーマを利用
      • 多くのフィールドが任意選択できる
      • BCNFではnull値は許可されていない
      • nullをい許可すると別の問題が発生
    • Complex many-to-many relationships
      • データベースの結合操作が必要
  • ウェブデベロッパーば行うべきこと
    • 単に流行に乗るのではなくテスト・検証を行ったものを使用するべき
  • The NonRDB Landscape
    • Key-Value stores / 分散テーブル
      • Tokyo Cabinet,Redis,Mecache DBなど
    • ドキュメント指向データベース
    • 列指向データベース
  • CakePHPとどうつなげていくか
  • Non Relational Store のポイント
    • インターフェースを無理やりRelationalにしない
    • 透明性よりもシンプルさ優先
    • MYSQLドライバのすべてを実装しようとはしない
      • 強みを生かすように作成する
感想
  • Key-Value Storeに関して関心があったのですが、非リレーショナルデータベースの知識もほとんどなかったため非常にためになりました。
  • TokyoTyrant,MecacheDB,CouchDBあたりはもっと勉強しないと。。。

パネルディスカッション - makiesさん 市川さん あつさん 新原さん 小山さん 岸田さん 紀子さん

内容が全て追いきれなかったので感想のみになります。

感想
  • RailsからCakePHPへ移行した人って多いんですね。
  • おれおれフレームワークからCakePHPに移行した人もそれなりに多いみたいでした。
  • 地方の勉強会には参加したことがないのですが、地方は勉強会が有料であることは驚きでした。
  • 地方の方が無料とばかり思っていました。。。
  • 勉強会はeventsで周知することが多いようです。
  • 自分はATNDをチェックは行っていますが、eventsの方はチェックしていませんでした。

LightningTalks

ウチのCakePHP - 新原雅司 さん
  • CakePHP拡張計画
  • Component,Behavior,Helper,気に入らないところはどんどん拡張

気になる箇所を見つけたらどんどん拡張ですね。

Learning CakePHP - 藤原敬弘 さん
  • CakePHP学習プロセス
  • とにかくつくる→すきなものをつくる→高度なものをつくる→つくったものをハックする

開発して覚えることは大事ですね

CakePHP弊社実例 - 渡辺翔太 さん
  • DataSourceを用いたCakePHP+API実装方法例の紹介
  • DataSourceメリット:使い回し可能、2行で簡単呼び出し、可用性が高い

DataSourceの長所が非常に分かりやすかったです。

CakePHPで作るiPhoneアプリ - 松浦 晃洋 さん

iPhoneアプリMacでのみ開発できると思っていたので
このLTは非常に驚きを感じました。

CakePHP Fusics - 小山健一郎 さん

これもAccontManagerPluginと同様に使ってみたい素敵なプラグインのようです。

CakePHP is good - こんのようすけ さん
  • CakePHP is Greatが伝わってくる内容
  • 大事なのはルール。規約に従うことができればメンテナンスも引継ぎも楽

運用や引継ぎの大変さは身をもって感じます。。。

Remember Me - パーハック キース さん
  • CakePHPとRememberMeを使った自動ログインに関する内容
  • RememberMeはログイン情報を保存する機能を提供

テストを行うことは重要ですね。
LTのTalkが非常におもしろかったです。

bind,unbindはもう古い!Containable Behaviorでrecursive=3だってこわくない!- 秋田真宏 さん
  • ContainableBehaviorを使うことでパフォーマンス向上,findの見通しもよくなる
  • AssosicationもBehaviorなら簡単に対応可能

ContainableBehaviorはCakeのコアコンポーネントらしいので標準で使えるみたいです。
Cakeを使う際は導入したいと思いました。

Hituji×Cake PHP(Story)- 北川大祐 さん
  • 現在開発している自社サイトのCakePHP実用例
  • CSSのコンフリクトの対処としてCSSファイルをコントローラ単位で分割

CSSがコンフリクトを起こしたことはありませんが、こういう対処法もあるのですね。

基本のお菓子―とりあえずこのプラグインさえ使えれば - 高橋征義 さん

僕はプラグインを開発したことがないので、これを機にプラグインを開発できるように努力したいと思いました。

懇親会
  • 毎年の恒例となったCakeケーキ
  • 3層なのはMVCモデルを表しているかららしいです

二日目のみの参加でしたが、非常に濃い1日でした。
主催者の方々、参加された皆様お疲れ様でした&ありがとうございました。