CakeFest Berlin 2日目のまとめ

翌日になりましたが早起きしたので昨日のまとめを簡単に。
初日の分には書きませんでしたが、一日の流れにそった感じで紹介。


9:00 - 9:30 出席確認&モーニング
会場に着いた参加者には名前を印刷したシールが渡されるので各自、胸に貼ります。これは主催者も貼っているので、名前が分からない人は見ればわかるし話のきっかけにもしやすいので面白いです。また飲み物とおやつはいつでもつまめるようになっているので、朝はコーヒーなんかを飲んでいる人が多いですね。
名札のロゴも今回の為に書き起こしたみたいでかわいいです!(主催者はTシャツも作った模様)

Power Tools:Console Development
CakePHPが持っているコンソール系の機能の紹介とデモのセッション。講師はmgiglesiasことMarianoが担当。特に印象に残ったのはDispacherのオブジェクトをShellの中で作ってアクションをコールするという実装。コマンドラインからの実行だとHTTP_HOSTみたいな値が足りないのでそのあたりは事前に設定するという力技っぷりがすごいです。

サンプルコードはgithubに上がっていました。(chawじゃないんかい!)
サンプルコードへ


Foundation:Authentication
これはずばりAuthComponentの利用例の紹介のセッションです。講師はNateが担当。流れとしてはマニュアルに載っているのとほぼ同じで、componentにとりあえず指定してメソッド作って・・・といった流れ。SQLのログを確認したりしながらパスワードがハッシュ化されている事やハッシュロジックの変更方法などを紹介。
また付随してユーザー登録時にパスワードの確認(2回入力させるやつ)はconfirmのvalidationルールで実装できる例を紹介していました。こういった確認や規約同意のチェックボックスに紐づかないパラメータに対してもvalidateをする事をためらう必要はないようです。(そういう趣旨の質問をする人もいなかった)


Foundation:Internationalization
その名のとおり国際化対応についてのセッションで、講師は再びMaliano。個人的にgettextを使った国際化はすごく多用していたのですが、メインはtranslation behaviorの話でした。たぶんDBまで使った国際化を実装する例って日本では少ないんだと思いますが、英語とスペイン語みたいな組み合わせで療法実装するニーズは欧米だと高いのかもしれません。
これも実際の挙動にそってテーブルをJOINして翻訳する様子などを紹介していました。


Power Tool:Client Scripting
JavaScriptなどの扱いについてのセッション。このあたりで時間が押し気味になりちょっと巻きが入ってきます。JavaScriptヘルパーでなくResourceヘルパーを使うとルールベースで読みこむスクリプトを切り替えたりgzip圧縮に対応したりキャッシュのコントロールもできる!というような話でした。要点ではないですがMalianoとNateで「Cache」の発音がだいぶ違うのが面白かったです。


ランチ
ランチは会場内のレストランでみんなで取ります。事前にメインの料理を2つの中から選んで取りまとめが入ります。(たぶん、ベジタリアンへの配慮)初日は言葉だけのメニューだったんですがみんなが説明を求めるのが大変だったみたいで二日目はスライドをつかって画像でメニューを紹介していました。こういう配慮って日本のイベントで見たことないので新鮮でした。

料理もおいしく、ざっくばらんにいろんな話をしながらの食事は楽しいですね。多国籍に人が集まるのでなんだかんだで国の話とか法律の話とか失業率の話とかそんなのが多かったです。考えてみると天候の話とかは鉄板ネタと言ってよいですね。


Foundation:Caching
CakePHPが持っている各種キャッシュの機能の紹介です。講師はMaliano。ここまでは実習メインだったんですがわりとスライド寄りの説明になっていました。具体的にはCakeの持っているキャッシュがCacheEngineを使ったキャッシュ、Viewキャッシュ、QueryCacheなどがあってそれぞれ利用のポイントが違うよという話です。内容的にもみんな理解していたようであまり質問なども出なかったです。


Power Tool:Improving Performance
おそらく2日目の目玉であるセッションでnateが担当です。
作成したアプリケーションに対するチューニングを順番に行っていくというデモです。最初にチューニングに関するありがちな誤解として「神話」を挙げています。

  • 無駄な変数をコピーしない
  • ダブルクオートはシングルクオートにする
  • switch は if に変える

元ネタは別のブログか何かのようですが、こんなことに時間を費やしても効果が低いというのがまず前提条件。その上でけっきょくはIOをどれだけ削っていけるかが重要であるというような話でした。
デモはmacで行っていましたが、数値の計測をしながら少しづつIOを削っていき最終的には並列リクエスト数50で5トランザクション/秒くらいまで持っていっていました。また細かいコードの変更はせずに設定だけでもここまではできるし、それで十分でしょ?というようなトーンで細部を潰していくような日本的アプローチとの違いを感じた気がします。


おまけ
セッションが終わった後に庭でコアデベロッパー達が2本あったガーデンフォークを投げて遊び始めて「Fork Master」なる名前を付けてその場で公式サイトをGarrettが作っていました。たぶん1時間以上はフォークを投げていたと思います、彼ら。
のんびりした雰囲気のわかる出来事です。

フォークを構えるgwoo