CakeMatsuri Tokyo 2009

CakeMatsuri Tokyo 2009に参加してきた。

2009.10.30 – 31 渋谷にて。

http://matsuri.cakephp.jp/

ワークショップとカンファレンス両方参加するつもりで申し込んだが、ワークショップは外せない会議が入ってしまいカンファレンスのみ参加した。

当日のメモをベースにカンファレンスの感想を。当然、理解の間違いやら、好みにより取捨選択ありです。

もっとちゃんと書かないとと思うが、書いてる時間もないしこのままだとCakeMatsuriが終わらないので、自分メモってことで出すことに決定。こんなんだったらもっと早く出しとけばよかった。早くだせば、こんなのでもまだ意味あったような気がするが、今になっては今さらな感は否めない。

CakePHP道

安藤さん、楽天勤務なのか。

フランクな雰囲気を出そうとしてる。

すでに、CakePHPは他のメジャーなフレームワークより露出している。

障壁が低い。ユーザーが多い

CakePHPの哲学
give back much as you take. もらったものだけ返す
オープンソースの哲学と同じ
礼儀正しく

自分の書いたコードをパブリックに公開する。
大事だよね。なかなか出来ない。

外部からの刺激が必要。
コードレビューなど。自分の方法に固執しない。

CoreライブラリのSetが便利らしい

Croogo
CMS。バングラディッシュの人が書いた。結構よく作られているそうだ。
JSONとのコンバートに使うEncodeBihaviorとか便利そう。

外部からインプットとアウトプット両方やらないとだめ。
自分の間違いに気がつかない。

安藤さん。Peggyつかってるな。

事例紹介

地域SNS(あつ さん)

開発は岐阜県らしい。会社の社屋?がでてたが、山小屋?みたいでかっこええ!
こういうの夢だ。いいのぉ。

ドメインがバラバラのサイトの作りかた。
WEB 1台 + DB 1台の構成
Cakeディレクトリは共有。

ドメインがばらばらで、デザインもばらばら。

プログラムの知識がないのに、デザインはそれぞれのオーナーさんが変えられるの? > プログラムの知識がない人がさわってる。
メインコンテンツの位置などは、文字列を指定して、str_replace()で置き換えてる。
テンプレートへのPHPのプログラムの混入は出来るだけ避けている。

要件定義からはじめて30日程度。
CakePHPで短縮出来た。

アソシエーションで苦労。
やっぱり、直接Model->query()はデフォルトでつかう。
findのパラメーターでjoinsを指定。

スズキ自動車販売のサイト

(syuhariさん)

スズキの中古バイクのサイト構築もやった。
PostgreSQLを使った。ふむぅ。
table 131, view 46。でけぇ。

PostgreSQLでビューを作成して、ビューに対してモデルを作る方法を採用していた。

当時資料がなくて苦労。また携帯対応に苦労した。

できたてのスズキ自動車販売のサイト
スズキ自販サイト(スズキ自販浜松が例に出ていた)

2009.8 – 2009.10
当初は2ヶ月予定で、1ヶ月増やしてもらう。

CMSはWordPress MU
登録、検索をCakePHP

apache 2.2
php 5.3
Mysql 5.0

Cake 1.2利用
GoogleMap, WordPressと通信するコンポーネントを作成

反省点:
MySQLでもビューをモデルに。
携帯ライブラリを使わなかったのは、失敗。

CakePHP部分のメインプログラマは優秀だけど台湾の人だって。今は外国の人と普通にチームなのか!!

CakePHPの感想
コアを直接カスタマイズしてはいけない
開発スピードがはやい
使える人がおおい

使える人がおおくて、デスマーチになったけど、補充が楽だった。

質疑応答
パフォーマンスは問題にならなかったのか? (コアデベロッパより)
やっぱり、遅いとテスト公開畤にクライアントにいわれた。
しかし、調べたらボトルネックはその時はテスト環境の回線だった。プログラムが遅いとは限らない。

nanapi

(ロケットスタート 和田さん)

生活の知恵を共有するサイト(CGM
PV150万程度(月間)
公開2ヶ月くらい

CentOS 5.3
NetBeansで開発

インフラが専門だった。

便利だけど重い
> 全部CakePHPで作るんではなく、必要な所だけ使う

PHP + Clearsilver(テンプレートエンジン)

clearsilver
google groupなどでつかわれてる。
Cでかかれている

apacheのエイリアスでCakePHPとpurePHPなどの振り分けをしてる。

豪華なシステムは組めない。
データさえ分散できれば、スケールアウトは容易

評価の数字、PVの数字 > TokyoTyrantを使ってキャッシュしてる
(ページ?)キャッシュなど > memcached
HTMLしたデータ、文章データ ファイル
ドキュメントデータ、会員情報など  > MySQL

投稿時のデータをMySQLに入れて、それをHTMLにしてキャッシュ

Lsyncdで指定したディレクトリを監視し、リモートサーバーにファイルを転送

文章分(コンテンツの本質的な部分)を最優先で表示させる(速度が早く見えるように)
それ以外のログイン数などのパーツは、遅くてもいい。
コンテンツ本体のテキストデータはキャッシュしたものを利用

CakePHP: The framework strikes back ~フレームワークの逆襲~

(graham Weldon)

CakePHP 1.2
メンテナンスモード

CakePHP 1.3
JavaScript関係が主
JQueryが標準
templateサポート(bakeで出すときのベースのものみたい)
routingのプリフィックスがadmin以外にも対応
データソースプラグイン
プラグインからデータソースにアクセス可能
複数のデータソースへのアクセスが容易になる
migration guide / http://code.cakephp.org/wiki/1.3/new-features

CakePHP 2.0
PHP4はサポートしない
PHP 5 strict modeのみ
PHP 5.2以降? not just supporting PHP 5.2/5.3
PHP 6?

DataSourceの扱いがDataMapperみたいになるらしい
検索結果としてObjectそのものがかえされる。
アレイを返すことも可能。

モデルはlazy loading 必要な時のみロード

CakePHP Questions
cakeqs.org
cakeqs.org/register
質問サイト
デベロッパーチームが70%くらい参加している
現状、
クローズドベータ

— QA

cakephp 1.3
templateってなに?
コンソールで利用できるテンプレートが拡張可能という意味らしい

cakephp 2.0
配列が嫌いなのでオブジェクトがかえるのはうれしいが、遅くならないか
配列は値渡しで無駄がおおい。オブジェクトにすれば、参照渡しですむので早い。

contributeはどこにアクセスすればいい
出発点としてはバグリポートが早い

事例紹介2

leebennyさん

おれおれフレームワークからの脱却
CakePHP採用 CodeIgniterもよかった

不動産案件
1.5人月くらい
既存のZendFrameworkからの移植。
管理者側の管理を自前のコンポーネントを実装
ajaxを利用してアップロード (メモリリミット対応)
DBの結果はキャッシュする

DHCのExpressionEngineと連携した案件
稼動12人日
CookieComponent/SessionComponentは強力だった

研究分野でのCakePHPの活用 (飯塚さん)

話が楽しい。いいね、上手い人は。

参考文献管理機能
LaTexによる論文執筆機能
もうかってない。

もうかってないといってるのに、公開するとエンジェルなどから連絡がくる。公開するべし。

ext.jsを使ってる
Ajaxをフルに使うことで、HTMLとPHPを分離できる。
SQLをかかなくてすむ。

Peggyを使っていたが、EclipseのPleiadesに統一
FTPはFireFTP(Firefox)を利用
仕様、コミュニケーションはGoogleDocs、Googleグループ
バージョン管理はsvn、DropBox

請負契約ではなく準委任契約(弁護士と同じ)
お客さんへ
10分1000円
作業者
10分500円

生産性が高いので思ったより稼げない
お客さんの要件決めで時間がかかる

プラグイン活用法

slywalkerさん

有名?なのはDebugKit
説明ではaccount_managerを利用して説明

CakePHPを複数のアプリケーションで使う場合
ROOT/plugins/xxx
bootstrapで個々のアプリケーション用設定をする

プラグインで多言語化
__(…)
ではなく、
__d(…)
を利用

pluginでviewを使う
themed機能が使える

Key-Value Stores & Non-Relational Databases

github.com/jperras

RDBMSはなくならない。
長い実績があり、理論の裏打ちもある。

1、2台のDBサーバーでは無理な大規模サイト用にKVSがある。

可変するschemaという問題
電話はあるがFAXがないとか、電話が複数あるとか。
オプションで使われないfieldが増える。

複雑なmany to many relationship

対策:
load balancer

しかし特効薬ではない。銀の玉ではない。

流行しているからではなく、ベンチマーク/テストしてして実用的なので採用すべき

対抗する技術3種:
KVS/DHT(Distributed hash table)
ドキュメント指向DB
列指向DB

今年のマジックワード:Data sources

CouchDBを使ったもの
github.com/jperras/divan

githun.com/jperras/tyrannical

非リレーショナルなデータソースを設計する時に透明性よりもシンプルを優先

Lightning Talk

新原さん

Exceptionを使ってる!

独自にBehavior, Componentなどをまとめてpluginにしてる。

ko1LoWさん

ERDなどを作ってくれる。githubにある。

akiyanさん

ContainableBehavior
アソシエーションがついてても欲しいモデルだけとれる!!!
unbindModelやbindModelをしなくてもいい。

全体的な印象

Mac率高い!
アルミのユニボディが結構いた。Macのほうが多かったかも?

電源と無線LANは完備。やっぱりこうでないとね。
カンファレンスは70人くらいかな。

PostgreSQL率高い(発表者)。やっぱり国内だからか?

MySQLよりPostgreSQLがいいが、案件で使おうとしたら使えるPostgreSQLが7.4未満で駄目だったんだよなぁ。古いとスキームとる所とかの機能が使えずダメだった記憶がある。

コアでも拡張でもまだまだ使ってない/知らない機能が多い。すぐにでも実戦投入出来そうなものもあった。

知識とかそういう面では参考になることがおおかったが、知らない人と交流するという祭の目的という意味では大減点。

ほとんど話すことも出来ず、パーティーも結局でずに帰宅した。翌日ぶったおれたことを考えると帰宅で正解だったかもしれないが、自分の閉鎖的性格には辟易するな。

追記(2009.11.11):

もっとまともなレポートはこちら http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=2117&forum=16