Technote

by sizuhiko

CakeFest2012で発表&参加しました

<!– more –>

今年もBakerの祭典CakeFestが(昨年と同じ)マンチェスターで開催されました。

今年はCFPが通ってスピーカーとして参加することになり、だいぶ準備に時間をかけて….と思ったら実質2週間ぐらい前に夏休みの宿題状態で片付けたのでした。。。

CakeFestのカンファレンスは9/1と9/2の2日間で行われたのですが、私は休暇(30,31の)も含め8/29夜からマンチェスター入りをしていました。 ヒースローの乗り継ぎ(五輪効果で綺麗になっていた)や空港からの鉄道や徒歩など慣れたもので、飛行機や鉄道が遅れるという英国定番のトラブル(でもないらしい)で疲れての到着となりました。

カンファレンス1日目

簡単に1日目に参加したセッションをふりかえっておきます。

09:00 - 09:25 Keynote: CakeFest 2012 Introduction

これは本来グラハムがやる予定だったのですが、 急遽家庭の事情で来れなくなったので、最初のセッションがスキップされるかと心配された。時間になっても始まらないし、特に説明はないのだけれど、まぁCakeのコミュニティっぽいと言えばそうかなと思ったら、9:20になってマークが壇上に上がってなんとかキーノートを開始。

  • 今年は10カ国以上から参加者がいる。世界的に興味を持たれている
  • 2日間のワークショップと2日間のカンファレンス。2トラック、ライブストリーミングなど見どころがたくさん

実はマークとグラハムはSkypeでやろうと思ったけど、うまくつながらなかったというのを休憩時間に聞きました。

09:25 - 09:40 Keynote: Hell has Frozen Over

  • マイクロソフトのスポンサーセッション
  • 99.95% SLA
  • Linux,Mac,Windowsに対応したツールがある
  • 言語はASP.NETかNode.jsかPHP
  • FTPかGitでデプロイできる
  • 始めは無料だよ
  • サーバを作るときはリージョンとDBが選べる。MySQLが使えるよ
  • Gitリポジトリを設定して、ダウンロードできるよ
  • sharedインスタンスと、reserved(専用)インスタンスみたいなのがあって良いよ。最初sharedでresercedに移動も可能
  • ロードバランサでどこかが止まっても違うインスタンスに自動的に再デプロイされる
  • ビッグデータ、データベース、NoSQLストレージ、最適なネットワーク、キャッシュ(Memcacheとかね)、メッセージングなど使えるよ
  • 3ヶ月は無料
  • 詳しくは彼に聞いてね(午後のセッションをやる技術者らしい)、てきな振りで終わり w

09:40 - 10:30 Keynote: Making the most of 2.2

コアデベロッパーの中心人物であるマークとホセのセッション

ViewブロックがDRYじゃなくてなんとかしたかった

  • Jinja/Twigから影響を受けたよ
  • slots/blocksレイアウトがテンプレートで使える

JSONとかXMLとか面倒だった

  • _serializeというset名でビューに特別に使えるようにしたお

Setの問題があったね

  • Set::extractはいいけど、遅いよ
  • いくつかのxpathには対応していなかったし、解決できない問題もあった。内部はクレイジーだったぜ
  • ハッシュにして1.6倍ぐらい速くなったよ
  • ハッシュはsetの90%ぐらいが実装されている

CakeTimeとCakeNumberの問題があったね

  • HelperじゃなくてUtilライブラリで良いよね。HTML以外でも使うし
  • 良くテストされた datetimeを使っているよ

ロギングは特に問題だったね

  • pythonのscopesからアイデアをもらったよ
  • Configで設定すればmongoとかにもストアできる

イベント

  • いろんなところで使えるイベントシステム
  • いろいろとイベントが使えるようになっているよ
  • コールバックを使って簡単にできるよ
  • 独自イベントも簡単!

キャッシュ

  • assetコンパイルを使うと、部品をキャッシュできるよ
  • beforedispacherとかafterdispacherとか使うといいよ
  • Responseオブジェクトを使って設定するよ

キャッシュグループ

  • 何それ?
  • キャッシュに論理的なグループを作れるよ
  • 動的にはできないから、自分のstrategyで計画しなくちゃ行けない

バリデーション

  • 動的に追加、変更、削除できるようになったよ

11:00 - 11:30 Lightning Strikes from Windows Azure

ここから2トラックになる。 マイクロソフトのスポンサーセッションで技術担当のCoryによるテクニカルセッション

  • Macでも開発できるよ(ここ強調しているな)
  • 数クリックで開始できるよ
  • スケールを簡単に管理できるよ
  • 自動的にロードバランスするし、インスタンスを超えてストレージは共有される

Hello Worldのデモ

  • Macだぜ
  • azure site でオプションがいっぱい出る
  • azure site create ‘cf-cakegest’ –git
  • git add/commit/push
  • azureの管理画面で cf-cakefestが出ている
  • azure site browse – ブラウザが立ち上がった
  • pushすると自動的にdeployment historyがpushされているように見える
  • azure site deployment list – 一覧が見える
  • azure site deployment redeploy 'コミットID’
  • モニターでいろいろチェックして(404の数とか)追加で見れる
  • VMのOS選択はいろいろ選べるよ。もちろんLinuxも
  • azure vm コマンド使うよ
  • azure vm create -h とか
  • azure vm create 'name’ 'vm’ 'user’ 'password’ -l 'リージョン’
  • composerやgithubが使えるぜー

11:30 - 12:30 Create a RESTfull api

@ceeramのほうのマークによるセッション。

RESTとはの基本にとても時間をかけて説明していた(重要)。基本からPATCH、HATEOASまで全部入りだった。その後CakePHPでの適用方法について

router に追加するぞ

  • Router::parseExtensions(); // all
  • Router::parseExtensions('json’); // only json

RequestHandlerコンポーネント使うよ

  • viewClassMapを使うと変えられるよ
  • 'RequestHandler’=>array('viewClassMap’=>array('json’=>'RestJson’,'xml’=>'RestXml’))) とか

その他

  • 2.x からは _serialize を使って set すれば良いよ
  • 見つからなかったら NotFoundException とか
  • Router::mapResources(array('Cats’, 'Users’))とか使うとマップできるよ
  • APacheとかでPUTやDELETEを許可しておく必要があるよね
  • Router::resourceMap(array(array('action' => update','method'=>'PATCH'. 'id'=>true) みたいに書くといいよね
  • Router::mapResources(array('Cats’, 'USers’, 'Pizza.Orders’),array('prefix’=>’/api’) とか書くといいよ
  • Router::connect('url’, action… ) とかでもOK
  • CakeRequest::addDetector('patch’, array('env’=>'REQUEST_METHOD’, 'value’=>'PATCH’)); なんて書き方もできるよ(知らなかった)
  • CakeResponse 使ってね
  • 認証もいろいろサポート
  • Versioningが重要だよ

12:30 - 13:30 Lunch

カンファレンスに来たらランチが美味しいことはとても重要だと感じました。今年は本当においしかった!!

Random tips that will save your projects life

マリアーノのセッション。毎年興味深いセッションである。 内容はとにかく広範囲にわたっていて、

  • Git使えやー
  • Monitだろー
  • サーバ監視しろやー
  • PHPログはトラックした方がいいよね
  • Duckesboard
  • statsdとか
  • Google Analyticsもいいよね
  • やっぱ Varnishだよね
  • PHP -> Redis pub/sub -> Node.js -> soket.io -> Client でいいよね
  • Sphinx はスケーラビリティがあるし、PECLかSQL使えるし、リアルタイムインデックスだしいいよね

みたいな感じ。

How to make your CakePHP website into a Phone app

ここでは安藤さんのセッションの裏で、関西弁こてこてのリチャードさんによるセッションに参加。

  • PhoneGap では WebView を使ってappっぽく見せた
  • Zendで作ったけどね(笑)
  • 2,231,400 のユニークユーザを捌いたぜ。さすがBBC&オリンピック
  • 15,000,000 ページビュー/日だったぜ

その後

コアチームによるQ&Aセッションがあり、 いろいろ興味深いトークが繰り広げられました。

さらにLTがありの流れでビアタイムに。LTは発表者が何度もやったり、スライドはない方が多かったりドラはなかったり(まぁ当然か)、なんか日本のLTに慣れているとフワフワ感がたまりませんな(笑)

急遽#CakeRadioGaGaをGoogle+でやることになり、日本時間は日曜日の2時ぐらいだったのかな?ゲリラだったのに数名の閲覧者が見てくれました。

カンファレンス2日目

今日は発表日なのでなんか寝付きが悪くて、何度も目を覚ます事に。。。

09:00 - 10:00 Simple search with elastic search

2日目は最初から2トラックで。メイン会場はマークによりelastic seachのセッション。いわゆる検索エンジンで、よくApache Solrと比較されるやつ。マークのセッションはとてもわかりやすく、Cakeからのインテグレーション方法もよくわかった。これはスライドを見た方が良いね。

10:00 - 10:30 BDD for CakePHP applications

さて私のセッションですが、Twitterでの感想はなかなか好評だったみたいで、助かりました。マークからもランチのときにコメントをもらえたし。

トラブルが2つあって、

  • セッション中にレンタルしていた3G Wifiが死亡して、急遽ホテルのWifiへ切り替え。デモの最中に慌ててしまった
  • セッションのコンテンツ(英文)をDropboxに入れて、AndroidのMarkdownビューワーで見ながら話していたけど、Androidの自動回転がONのままで頻繁に回転が起きてしまう自体に。そうするとページTOPまでスクロールして、見直したら位置がおかしくなってアワアワしてしまった。自動回転はオフにしておかないとね。後半は記憶に頼って話しました。

で、ネタとしては、BDDのBはBeerだよね、というのは今年も鉄板でこれは世界中で通じる良い導入になります。それとマンチェスターなので香川ですな。和みました。

その後

なぜかここからざっくりとしたまとめになりますが、あまりCakeと直結する話題が少なくなったので、軽く。

  • あのYour code sucks, let’s fix itのRafaelによるセッションが。彼は現在アムステルダムに住んでいて、発表の内容からするとSymfonyガイなのかもしれないなと思いました。Composerの発表もしていたし。
  • 再びmackstarさんのセッションで、Backbone.js。これはCakeと直結しているのですが、まぁmackstarさんのgithubをチェックしましょう。Ember.jsについてはまだPHP界隈では使われていないし知っている人も少ないからBackbone.jsが良いねという話でした。
  • グラハムがやる予定だったFablicのセッションをマークが。ちょうど新原さんがTwitterでFablicについてつぶやいたのでストリーミング見ているのかと思ったら偶然だったらしく、びっくりしました

で、この後 PechaKuchaトークをやるまでの間に #CakeRadioGaGaの生放送を再び。日本では明日は月曜日なので早めの時間に。

この間にやっぱり結構帰る人がいて、さらに戻ってみるとラリーが機材を撤去していたり、何だろうと思ったら応募者がいなかったらしい。まぁLTでだいぶ発表があったのでそんなもんかなと。あとグラハムがいなくてイベントの仕切りが終始ふわふわしていたのも影響しているみたいでした。

もちろん定番のリアルケーキも出ましたよ。大きいものはホテルでは作れないということで、小さいものが7周年を記念して7つになったということでした。ランチデザートで出て、各テーブルに配られて行きました。そういえばケーキの前でのコアデベロッパー写真とか、全体の集合写真とかなかったなー えっ?レポートが段々尻すぼみだって?。いや、実際イベント全体のテンションもそんな感じで。。。。察してください www

まとめ

良かった事、反省点、いろいろあるけど、悪い事はないのでみんな海外のカンファレンスも出るといいね。もちろん発表することが重要で、ボクみたいにあんまり英会話得意じゃないけど発表すれば声もかけてもらえるし、プラグインや発表資料をチェックしてくれたりするので、それでフォローできればOKと思っています。

来年(こそ?)は、カルフォルニアらしいのでマンチェスターより行きやすい!。みんなで参加しよう!!