Cakefest3@ベルリンに参加してきました

7/9から12に開催されたCakefest@ベルリンのカンファレンスに参加してきました。初ドイツです。
http://cakefest.org/
第1回はアメリカ、第2回はアルゼンチン、今回の第3回はドイツベルリンでした。


安藤さん(id:yandod)はワークショップからフルで参加してましたが、僕は日程の都合でカンファレンス(2日間)のみ参加しました。ワークショップは30人ぐらいの参加者だったみたいで、カンファレンスは60人ぐらいという感じでした。ワークショップから参加しておいたほうが良かった気がします。英語にも慣れるし、参加者と話せる時間も長くなるし。ただ、カンファレンスの2日間もものすごく濃い感じで、英語もしゃべる機会が多いので正直ホテルかえると疲れがどっと出ましたけど。


簡単に書くつもりでしたが、長文になってしまいました。下記の順で書いていますので、興味のあるところだけ読んでもらえればと思います。

  • 参加者
  • 発表
    • 1日目
    • 2日目
  • ランチ
  • 懇親会
  • その他
    • 英語についてとか、もろもろの感想

参加者

参加者はアメリカとドイツの人が多くて、それ以外にはクロアチアノルウェー、フランスなどヨーロッパの各地から来てました。世界は広い!
僕が話した人はCakeを使い始めて半年から1年ぐらいという人が多かったです。各国でローカルコミュニティは活発じゃなくて、勉強会みたいなイベントもないみたいです。その国の言語で書かれたCake本もたぶん日本語とドイツ語のものしかないみたい。

発表

とりあえずメモをざっくり載せておきます。

1日目

  • keynote by gwoo( from USA )
    • cakephp.orgにアクセスする人は増加中で、ユニークビジタが88547人で、毎月24%ぐらい新しいビジターがアクセスしてくる。
      • アクセス順位は、 us, japan, indie, france, germany, brazill,canada,poland, spainの順。
    • cake1.3では、データソースもプラグインの中に設置して動かせるようになるらしい
    • cake用プラグインリポジトリを作る予定
    • cake2用のbakery2を作る
  • webservice in cakephp by joel perras( from Canada )
    • http://nerderati.com/ の人
    • データソースにアクセス処理をまとめて利用する
    • 外部アクセスはCakeのコアコードのhttp socket, cake socket(http以外の場合)が利用できる
  • recipes for successful cakephp projects by felix ( from ドイツ )
    • http://debuggable.com の中の人。20歳ぐらいと若い!
    • テスト大事
      • test driven develop, top-down testing, performance testing
      • CI使って自動テスト化 hook git, run unit test
    • git最高
  • bake master by Neil Crookes( from ドイツ )
    • http://www.neilcrookes.com/ の人
    • svn logを見て、diffを見て、そのバージョンのbakeテンプレートにアップデートして、bakeして、その結果を画面で見てた。段取りをしっかりすればこのプレゼン手法は良いかも
    • bakeで独自バリデーションも選択できるようにしたらどうかとふと思った(市川)
  • Multi-tenancy with CakePHP by Robert Scherer( from ドイツ )
    • ドイツ語のCakePHP本を書いた人
    • Saasでよく出てくるマルチテナント
    • 複数組織の構造をcake auth, aclで解決
    • 可能な限りモジュール分割, configurable, 一般的なカスタマイズができるようにアプローチ
  • media plugin by Marius Wilms aka David persson ( from ドイツ )
    • ファイルアップロード、バージョン管理、マークアップ追加。
      • かなり便利そう。というかこれを使って足りないところを拡張していくのが良い(市川)
    • アップロードファイル名は例えばUUIDをファイル名にして推測されないように
    • バリデーションルールも用意 location 、size、pixels、extension、mime type
    • Postデータを擬似的に作成して不正データを送信してもバリデーションエラーでチェックできているデモ
    • サイズ変換とかも容易
  • CakePHP on Cloud by Dirk Brunsicke ( from ドイツ )
    • http://bruensicke.com/ の人
    • assembla.com
      • デプロイまでWEBからできる
      • commitタイミングで自動デプロイなど
    • 懇親会で会話した時に、assembla.comの中の人じゃなくて、エバンジェリストだと言ってた。中の人にもコンタクトとれるので、何か要望があれば言ってくれと言われました


2日目

  • git講座 by gwoo&jperras
    • ssh-keyを作ってgit使うまでの流れを説明
      • git log --graph でコンソール上でツリー表示
      • git gui で簡単なgui表示
    • コアデベロッパーの人はみんなにgitを使ってもらいたいみたい。熱心に操作説明してました
  • keynote by nate( from USA )
    • cakeリードデベロッパ
    • フルスクラッチからcake3を作る
    • namespace, high performance , 柔軟な拡張性
      • クラス名のバッティングを回避。プラグインもこれで安心
      • クロージャー使う
      • bootstrapを分けて使える
      • Environment::isメソッドで本番かテスト環境か判断できる
        • テスト環境用定義とか簡単に設定できる
    • cake2.0もstep by stepで開発していく
      • php4がいやなら、cake1.3を飛ばしてcake2.0を使う
  • Internationalizing CakePHP Applications by Mariano( from アルゼンチン )
    • http://www.cricava.com/blogs/index.php の人
    • multibyteクラス!!
      • http://api.cakephp.org/class/multibyte
      • mb_stringの機能がない場合はそれに変る機能を独自実装して同じように呼び出し。これによりPHPコンパイルオプションに関わらず、そのデータがマルチバイト文字を含めているかチェックしたり独自のstr_lenで文字数チェックしたりできる
        • cakeplusの日本語文字数チェックとかこれを使った方が良い気がするのでそのうち修正する(市川)
    • gettextをpo editor使って簡単に管理
    • translation behaviorでDB内の翻訳テーブルから文字を表示
  • building custom api by Charlie van de Kerkhof ( from オランダ )
    • http://cake-toppings.com の中の人
    • コントローラで、リクエストメソッドによってアクションをひもづける
    • urlの中のファイル名の拡張子(.htmlとか)をみて、$this->viewPathに読み込むファイルをセットする
  • performance by joel perras
    • 発表のつかみでクイズを出して、正解者にビールをあげてた
    • ツール:Gearman
      • 外部サーバにプロセスリクエストを投げれる
      • Queingサービスとかで使える(ビデオデータデコードのQueとか)
    • Bottoleneckを知ること、ベンチマークをとること!
      • xxxxがいいよと言われて信じてもしょうがない。自分の環境にあった対策を打たないと意味がない
    • 同じサーバにApacheとかDBとか入ってて、不要なネットワークIOとかを発生させないのもよい
    • 平均を取ると、遅いユーザのことが抜けやすいので、標準偏差で見る
        • 裾野が広い表になるのは気をつけたほうがいい。ユーザの体感速度がばらけているということなので
    • webサーバの設定
      • directory index (定義するindexの種類(index.cgiとか)は少ないほうがいい)
      • htaccess ( apcheのconfigに書いたほうがいい)
    • php micro tricks
      • include_path は少ないほうがいい
      • pecl / include は少ないほうがいい
      • APCを使う


資料は下記でいくつか公開されています。
http://cakephp.org/downloads/CakeFest/CakeFest%203%20-%20Berlin%202009/

スライドのリンクをまとめているページ
http://www.christianweigel.com/75-cakefest-2009-wrapup/

Cake3を含めたプロジェクトが下記で見れます
http://code.cakephp.org/projects


ランチ

ランチは会場敷地内にあるレストランで食べれたので、店を探すとか必要なかったです。同じ席に着いた人と簡単に挨拶した後にそれぞれの国のこととか、税金のこととか、物価のこととか、色々な話題が出ました。
1日目はクロアチアとフランスの人と話しましたが最初クロアチアという発音が聞き取れなくて良く分からず、ミルコクロコップがいるところだと言われて分かりました。2日目は5人ぐらいの人に、マルチバイト処理とかどうしてる?と聞いたんだけど、特に何も意識してないみたいな感じでした。

懇親会

毎晩何かしらのイベントがあるので、それが良かったです。ボーリングとかビリヤードとかのイベントだとそのトピックで話がしやすいのでいいですね。ビリヤードはほとんどやったことなかったけど、リードデベロッパーのNateとやってビギナーズラックで勝ってしまったw
みんなビールを飲む量が半端ないので、同じように飲んでるとかなり酔っ払うので気をつけないとだめですね。最終日はもう気に入ったホワイトビールをがぶがぶ飲みすぎて、次の日、目覚ましをスルーしてしまいましたw
懇親会は、大体3次会とか4次会ぐらいまであって、最終日は3次会まで行った後はもうしんどかったのでフランスから来たPierreと帰りました。安全そうだけど夜中に一人で歩くのはやっぱ怖いので、一緒に帰れて良かった。


その他

とりあえず怖がらずに気軽に話しかけるとそれなりに会話は続く感はありました。話をもっと盛り上げるためにも、ヨーロッパの国の位置と簡単な歴史ぐらいは学んでおいた方がよかった気がします。

自分の英語はうまくなくて、もう今さら急にどうにもできないので、発表で聞き取れない箇所はもうあきらめました。次のCakefestまでの課題にします。
他の人との会話ではぎりぎり英語でコミュニケーションできたというレベルです。とりあえずビールを飲んで酔っ払えば細かいことは気にしない能力がアップするので、飲んだ時の方がうまく話せてた気がしますw 最終日の3次会ではBakeryのモデレータであるAlkemanとスノーボード話で超盛り上がって、酔っ払った勢いもあってスラスラとしゃべれました。
こんな状態な僕でも楽しめたので、次回のCakefestはみなさん気軽に参加したら良いと思いますよー。


英語で話す場合、日本の発音とだいぶ違うので、イントネーションとか気をつけないと全然通じなかったりします。リポジトリ(ポにアクセント)とかMultibyte(マルティバイト)とか。あと言いたいことも英語で読んだ記事なら単語が出てきやすいので、英語記事をまめに読むのと、英語のプレゼンテーション動画を適当に見たりしていくのが良いと思いました。

名刺を持っている人の数は多くないですが、自分は積極的に渡しました。名刺にTwitterのアイコン画像も印刷しておいたほうが認識されやすくて良いです。twitter中心文化なので、アカウントは作っておいた方が良くて、できれば英語版のアカウントがあった方が良い気がします。

会話した人の中に、http://cakeapp.com というサービスを作っている人がいました。これはweb画面からDB定義をして、その後自動的にbakeして簡易アプリを作るものです。今はコードが汚くて無理やり動かしてるので、そのうちリファクタリングしたらコードを公開すると言ってました。

みんなかなり自由な感じでやってて、マジかよと思うところもありましたが、全体的には満足しました。気軽でいいんだ、自重?なにそれ?みたいな感じで、良かったです。
参加しないと、この雰囲気も分からないし、Cakeを引っ張る人、周りで使う人の感じもつかみにくいので、次回のCakeFestで参加できそうな場所とスケジュールだったら、絶対参加した方が良いと思いました。