8時間耐久CakePHP2勉強会を大阪で開催します!
先日下北沢で開催した8時間耐久CakePHP2勉強会を今週末(2/5)に大阪で開催します。
参加登録はATND上で受け付けています。
http://atnd.org/events/24800
フレームワーク初心者でもCakePHPを動かせるような内容になっていますが、すでにCakePHPを使っている人でまだCakePHP2を使っていない人にとってはポイントの確認もできるかと思います。(プラス始めての方のヘルプもお願いすると思いますが)
時間も長いこともあって前回もざっくばらんに質問をしたり雑談したりと和気あいあいとした会でしたので今回もそんな雰囲気になればよいなと思います。
また2/12には福岡で同様の勉強会を開催する予定です。その他の都市も要望があれば行ってみたいと思っていますので希望があればお知らせ下さい。
WordCamp Tokyo 2011 が開催されます
11月 10, 2011 by yandod · Leave a Comment
今回は11月27日(日)に東京の楽天タワー2号館で開催されるWordCamp Tokyo 2011のリレーブログのランナーとしてイベントの紹介をします。普段はブログ関係のコミュニティにはあまり参加していないのですが、これまで見て来たWordCampの情報をまとめてみます。
WordCampのすごい所を簡単にまとめると下記の3点です。
- 参加者の数がすごい
- プログラマー、デザイナー、ブロガーが一同に会する
- セッションを見るとブログを書きたくなる
参加者の数がすごい

photo by naokomc
WordCampは単一のオープンソースプロダクトのイベントとしては驚異的な集客です。今年の9月に神戸で行われたWordCamp KOBEでは600人近い集客があり、今回の東京の開催でも1000人に迫るような人数の方に来場してもらえそうです。これだけの人数が集まるとそれだけですごい雰囲気です。そしてその殆どの人がWordPressを知っていたり、使ったことがあったりという方々。こういった雰囲気を味わえる機会はなかなか無いと思います。
プログラマー、デザイナー、ブロガーが一同に会する
WordPressのユーザーはWEBサイトのデザインやコンテンツの管理に興味あるデザイナーや、プラグイン開発に興味のあるプログラマー、さまざまなポストを書くブロガーなど幅広い参加者が集まります。普段カジュアルに開催される勉強会はどうしても参加者が偏るものですが、WordPressという題材を通じて普段は知り合いにくいような人と出会えるかもしれません。イベント中にはランチタイムやアンカンファレンス、懇親会など交流を図る時間がたくさんあります。最初の一言はきっと簡単です。
- 「WordPress使ってるんですか?」
- 「どこから来たんですか?」
- 「どんな事をブログに書いていますか?」
- 「最近みた面白いブログで・・・」
いくらでも思いつきそうですね。
セッションを見るとブログを書きたくなる
ブログを書く上で一番難しいのが、モチベーションの維持です。すでにブログを持っている人は更新を続けるのが難しかったり、ブログを持っていない人はなかなか始められなかったり。全てはモチベーションの問題ですね。WordCampで色々なトピックの情報を聞くと、きっとブログを書いてみたいネタを思いつくでしょう。またネタが無くても試してみたいプラグインの為に久しぶりにダッシュボードを開いてみたくなったり、ブログのテーマをいじってみたくなったり。
そういった刺激はきっとブログを書く助けになるのではないでしょうか。
参加登録はまだ間に合います。日曜日かつ、会場が楽天タワー2号館(周辺にはコンビニが一軒あるのみ)ということで昼食付きのチケットを購入するのがオススメです。ぜひWordCamp Tokyoに参加して雰囲気を楽しみ知り合いを増やしてブログを書いてみてください。
参加を考えている方はツイートやブログで興味を発信しておくといいですね。同じ興味を持つ人を見つけるにはまずはアウトプットが効果的です。
会場でお会いできる事を楽しみにしています。
PHPMatsuriの楽しさは参加者自身です
10月 19, 2011 by yandod · Leave a Comment
参加者の写真やブログも公開されてきてまだまだ熱気が醒めやらない感じですが今年のPHP Matsuriが無事に終りました。あまりにも多くの事が頭を巡っているのですが、特に大きいものをいくつかまとめて書こうと思います。
Epic Sax Guy

参加された方で来日したGarrettの人柄とEpic Sax Guyが印象に残っていない人は皆無なのではないでしょうか。強烈に明るくオープンでひょうきんな彼のキャラクターはハッカソンの空気を支配していましたね。前回はLithiumの機能についての評判を多く耳にしましたが、今回は逆にLithiumをGarrettの人柄の話題が食っていた気がします。最新のフレームワークの機能やツールは確かに魅力的ですがそれ以上に魅力的なのはその人自身なのではと彼に会ってから感じています。そして毎日数時間はEpic Sax Guyを聞いてしまうわけです。
言葉では伝わらない体験

今年は昨年よりもさらに増えて総勢で90名を越える規模でのハッカソンになりました。初めての参加者の方も居ましたが多くの方から聞いたのが「どういうイベントなのかよくわからなかった」というものです。2年連続の参加となるSioさんも誤解していたようにハッカソンとはどういう雰囲気なのかを言葉で伝えるのは難しい所があります。
朝のあいさつでも話しましたがPHPMatsuriはヤフーが開催しているOpen Hack Day(現在は Hack Uに改名された模様)をコピーしたイベントです。画像やビデオ、文章などのさまざまな手段では伝わらない楽しさを伝える為に自分たちで開催してしまおうと思ったのがきっかけです。
実際にスタッフの1人である@shin1x1さんも「2日目のデモ発表の時間になってみてこういうイベントだったのかとわかった」と言っていました。参加者のレポートから漂う謎の熱気を理解したい方は実際に参加する事が唯一の方法なのだと思います。
参加者の力

豪華ゲストによる講演や忍者軍団、スイーツ、ワークショップと企画が目白押しですが、PHPMatsuriの本当の目玉コンテンツは参加者の皆さん自身です。参加した方それぞれが感じた楽しさは参加者が実際に開発した発表した体験そのものが中心になっていると思います。参加したけれど発表をしなかった方が「次回は発表する」と強く思う人が多いのも周囲を見ていてそれを感じているからではないでしょうか。
今年も@sizuhikoさんをはじめとしたスタッフの献身的な努力で無事にイベントを終える事ができました。まだ余韻に浸っている段階ですが今後も参加者自身の活動が中心となるハッカソン形式のイベントをさらに幅を広げて行って行きたいと思います。
参加者の皆さん、スタッフの皆さんお疲れさまでした!
※写真は@koyhogeさんと@suzukiさんのFlickrから引用しています。素晴らしい写真をありがとうございます!
プログラマがコードを書き、公開する事の価値
9月 26, 2011 by yandod · 2 Comments

年に一度のPHPの祭典、PHPMatsuriが10月15日から大阪で開催されます。PHPMatsuriはゲストによる講演と開発スペースでの開発大会(ハッカソン)を同時に行うというイベント形式でいわゆるカンファレンス、セミナーとは少し違っています。今回はイベントの開催に向けたリレーブログの先陣を切る形でハッカソンに参加すると事の価値を考えてみようと思います。
プログラミングはコードを書く事抜きには理解できない
プログラミングの世界では次から次へと新しいフレームワークやライブラリ、ツールなどが登場します。興味を持った技術についてWEBページや書籍を読んだりする事は新しい知識を入手する最初の方法です。しかし、本で読んだだけのプログラミング言語やフレームワークを「理解した」と言えるでしょうか?ポール・グラハムのエッセー「ハッカーと画家」にこんな一節があります。
作家や画家や建築家が、創りながら作品を理解してゆくのと同じで、 プログラマはプログラムを書きながら理解してゆくべきなんだ。
多くの場合は実際に書いてみると、自分が理解していなかった点がありうまくいかなかったり、手を動かしてみて初めて理解できたと実感した経験は誰でもあるのではないでしょうか。実際にプログラムを書くという行為は絶対に必要な要素と言って良いでしょう。ハッカソンにはその為の時間と場所があります。
コードを公開する事による効果は予測を越える

実際にコードを書く際にGoogleなどで色々検索するというのは普遍的なアプローチです。ちょっとしたオプション指定やエラーメッセージ、gitのコマンドの使い方などで毎回検索しているものが誰にでもありますよね。しかしそういった内容を自分自身が公開した回数は検索する回数よりもずっと少なかったり、あるいは0だったりしませんか?
コードを公開するというのは心理的に抵抗があるものです。汚いとか拙いという批判を受けたら困るとか、そもそも自分の書いた断片にそこまでの価値は無いだろう、もうすこし出来上がってからでいいだろうなんていう理由がすぐに出てきます。しかし実際の所コードを公開する際には規模や完成度は必須条件ではないはずです。僕自身もRedmineをPHPに移植したCandyCaneを公開する事でヨーロッパや南米といった予想もつかなかった所からの反応を得る事ができました。また逆に同じくRedmineを移植しようとして最初の画面だけで放置していたフランスの方を発見して協力して貰う事もできました。もし彼が作りかけのコードを公開してくれていなかったら、僕は彼を捜す事はできなかったですし、フランス語の翻訳が行われるのももっとずっと後になっていたと思います。
どんな小さな断片であってもコードを公開した効果はどこかで現れます。そしてそれはバタフライ効果のように自分の想像以上の形で返って来る事があります。
非日常に参加する事で自分のセンスを呼び起こす

プログラムを書いてみようと思ってもなかなか実行できないのが世の常です。またそもそも毎日業務で書いているとそれ以外の事をする余力が生まれてこないのも仕方ない事と言って良いでしょう。ですがハッカソンは非日常の世界です。(なのでジェダイの騎士も登場します)
その雰囲気は高校の文化祭の前夜のような不思議な連帯感と何があっても許されるような雰囲気、自分でも想像もしないような根気が生まれて来るそんな空間です。
また海外からのゲストと直接やりとりする事ができるというのも特別な出来事です。時間はたっぷりとありますし、動かそうとしているコードという題材もあってコミュニケーションは取りやすいです。海外ゲストでなくても気になっているプログラマーや技術があれば近くに陣取るだけで色々なインスピレーションが得られるでしょう。
PHPMatsuriの参加チケットはイベントの1週間前か、予定数に達した時点で販売を閉め切ります。特にこれまでハッカソンに参加した事が無い方にこの時間を経験してもらいたい!と思って準備を進めています。すでに予定数の3割くらいの参加者がチケットを購入していますので、ぜひとも参加を検討してみてください。お祭りの会場で待っています!
では明日のリレーブログ担当の@hidenorigotoさんにバトンをお渡しします。
CandyCaneの発表で感じた発信と恩返しの大切さ
9月 6, 2011 by yandod · 3 Comments
前回のポストで書いたようにイギリスのマンチェスターで開催されたCakePHPの公式イベント、CakeFestに参加してきました。今回はスピーカーとしてこれまで開発を続けて来たCakePHP版Redmine、CandyCaneについての発表を行い感じた事をまとめます。
発表までの経緯と内容
CandyCaneはRedmineをCakePHPに移植すればもっと使いやすい課題管理システムになるのではというアイデアからスタートしたオープンソースプロジェクトです。2009年の4月に行った開発合宿での成果を元に地道に開発を続け、現在は140ほどのページが動作しバグの管理ができる状態になっています。日本のCakePHPでは少しは知られているソフトウェアですが、日本のCakePHP以外のコミュニティや海外のコミュニティではあまり知られていない状態でした。
昨年のCakeFestにも応募したのですが、再挑戦した今年に公式カンファレンスでの機会を得る事ができました。
今回の発表では特に日本で人気が高いと思われるRedmineの紹介とCandyCaneの開発の経緯と実際にインストールして使用するデモという構成でした。
自分の考えを発信する事の大切さ

(会場内のバーでの交流の様子)
拙い英語による発表でしたが、発表後にはさまざまな反応を会場にいた人やオンラインで見ていた人達から貰う事ができました。またRedmineを実際に使っている人が参加者の3割くらいに達していたことも驚きでした。(すでにTracからは離れた人が予想よりも多かった)実際にもらった反応は下記のような感じです。
来場者のイングランドのWill Wilsonさん
「Redmineからの移行はどうすればいいのか?」という質問を貰い、その後レストランで話した所「Redmineいいなと思ったけれど、PHPで運用したい」というまさにCandyCaneを開発する前に僕が思った事と同じ反応。またプロジェクト作成からメンバーの追加などのステップが分かりにくい点を改善したい等、発表で重視して説明した内容について熱く語ってくれました。
CakePHPのコア開発者の1人でもあるGraham Weldonさん
「今後の開発予定は?」という質問と10月に大阪で行われるハッカソンでは「CandyCaneのCake2移行をやるよ」「CakeDCの内部で使っているRedmineをCandyCaneに変えたい」というこれもまた熱い反応を貰いました。
オンラインで発表を見ていたマレーシアの@sumarudiさん
最初は来場者の誰かなのかと思っていましたが、オンラインで見ていたという事でした。是非使ってみたいという反応を貰いました。
貰った反応はどれも自分がこれまでに感じた内容そのものだったり、「使ってみたい」という前向きな反応で本当に嬉しく感じました。日々の生活の中で感じた事や自分の為に手を動かした内容を発表したからこそこういった反応を得る事が出来たのだと思います。また特に反応をしなかった人からも「CandyCaneをやっている日本のyando」というキャラ認識を受け、コミュニケーションがしやすくなりました。ブログだったりプレゼンテーションだったり、プログラムだったり文章だったりと手段はさまざまですが自分自身が何かを発信したからこそこういった貴重な体験をする事が出来たのだと思います。日々の生活の中で継続的にアウトプットを行う事は簡単ではないですが、自分がどんな人間なのか、どんな事を考えているのかを発信する事の大切さをあらためて実感しました。
またインターネットというツールを使う事でプログラムそのものや英語のコンテンツは世界中に伝わります。今回もマレーシアやイングランドの人から反応が貰えるとは全く予想していませんでしたし、バングラディシュのFahadさんと2年越しくらいで初対面をした際にも「初めて会ったのに、そんな気がしない」なんて話していました。インターネットはやはりすごい。
恩返しの大切さ
(CakeFestのパーティの様子)
読み手やオープンソースの利用者として見た場合、自分が見たものや使ったものへ反響を返すという事も大きな意味があると思います。facebookが広まった事でついつい「イイネ」をクリックしたりリツイートする事で賛同の意思を伝える事が増えてきました。たしかにそういった反響もうれしいですが、それ以上に文章や直接の言葉で貰う反応はうれしいものです。そういった反響をくれた人の事は強く記憶に残りますし、がんばってアウトプットを続けようという大きなモチベーションになります。またオープンソースソフトウェアであれば実際にバグを修正したり、ドキュメントや記事を書くなどの方法もあります。
CakePHPも海兵隊から除隊された後にOSCommerceのカスタマイズなどをしていたphpnutがポーランド人のマイケルの作った”Cake”に対してすごくいいねと反応を返し、面倒なプロジェクト運営やサーバー管理は全部、俺がやるから一緒にやろうと誘ったのがきっかけだったそうです。自分が良いなと思ったものに対してポジティブなフィードバックをしたり、ちょっとした協力をする事で何か大きな事が生まれていくと思うと、そういった日々の恩返しも大切だと感じました。
自分自身から発信する事の大切さ、恩返しの大切さはオープンソースを知っている者としてはけして目新しい事ではなく、元々分かっていた事でした。不思議ですがその知っていた事をとても新鮮かつ染み入るように実感する事が出来ました。今後も開発をがんばろうというやる気が湧きましたし、日頃目にしているサービスや記事、ソフトウェアに対してきちんと恩返しをしていこうと思います。
長文になりましたが、読んで頂いてありがとうございました。
WordCamp San Francisco 2011に参加しました
このブログでも使っているブログエンジン、WordPressのサンフランシスコで開催されたカンファレンス、WordCamp San Francisco 2011に参加してきました。参加チケットは1000人分以上を完売した盛り上がったイベントでしたが、ウェブメディアの力を感じました。あまりたくさんのセッションを見ていないのですが、印象に残ったキーワードと全体の印象を紹介します。
全体の雰囲気
会場はミッションベイのカンファレンスセンターで2トラックのセッションと海沿いのピア38にあるAutomatticラウンジでの初心者向けワークショップという構成でした。どの会場も座席を探すのが難しいほどの来場者でまた参加者も老若男女幅広いのがプログラミング言語系のカンファレンスとは大きく違います。子供どころか孫も居そうな人が本当に珍しくなく、WordPressでブログを作るという行為がそこまで浸透している事を実感できます。また爽やかなイケメンの印象だったファウンダーのMattが漂流者のようなワイルドなスタイルに変貌している事に個人的に衝撃を受けました。
セッション
セッションは大きく分けてデベロッパー向けのセッションとユーザー向けのセッションに別れていました。デベロッパー向けのセッションではコードの断片やさまざまなソフトウェアを活用したスケールアウトの手法などが多く、ユーザー向けのセッションではさまざまな事例やメディア論のような利用者を啓蒙する内容、ハウツーのような形です。
下記は参加してセッションで気になった事のメモ。
-
Coding, Scaling, and Deploys… Oh My! by Mark Jaquith
デプロイの方法についてのセッション。本番機上でコーディングする「カウボーイコーディング」と呼び脱却する為にCapistranoを使う方法を紹介していました。またローカルの設定ファイルを分離して開発用の設定を本番に持ち越さない工夫などを紹介していました。 - Ask Barry (About Scaling, Servers, or WordPress.com Infrastructure) by Barry Abrahamson
WordPress.comのインフラ面を担当しているBarry氏によるセッション。2億8千万の登録ユーザー、250億PV/月をWordPressでホストしているインフラに対して、さまざまな質問が寄せられました。300台ほどの各種サーバーでこれだけのパフォーマンスを出す事が出来るというのはかなり心強いですね。秒感数万クエリーのデータアクセスを数百台のMySQLデータベースのレプリケーションなどの対応をHyperDBというプラグインで行っている事や、キャッシュの活用など基本的な技術をうまく活用している点などが興味深かったです。wordpress.comにはTechCrunchやCNN、NewYorkTimesなどがホスティングされており、強力なインフラである割に日本での利用が進んでいない点はとても不思議です。各種インフラ面の為にカスタマイズしたソフトウェアも公開されています。 - Building Custom CMS applications on WordPress by Michael “Mitcho” 芳貴 Erlewine
CMSとしても広く使われているWordPressですが、CMSとしてカスタマイズして作り混む前に考えるべき点などについてわかりやすく解説したセッションでした。コンテンツがどのようなワークフローでマネジメントされていくかという点と、サイトのコンテンツがなんで有るかという部分をしっかりと分析してからアプローチする事の重要性を訴える内容は面白かったです。WordPressの場合は特にサイトのメインのコンテンツに併せてカスタムフィールドやメディアの種類のカスタマイズを行う事の重要性を動画などの管理をWordPressで行った事例を元に説明したあたりが目から鱗です。またWordPressのコンテンツをファイルシステムとしてマウントするpressfsという変態チックなプラグインの存在も驚きでした。
WordPressのプラットフォーム性
WordPressが膨大な数のプラグインとカスタマイズ性でブログに留まらないプラットフォームになっているという技術的な特徴はよく知られています。ですが今回それ以上に印象的だったのがカンファレンスを運営するAutomatticのメンバーの層の厚さです。企業がオープンソースソフトウェアを開発している例は多く有りますが、WordPressの場合はデベロッパ向けの活動や、エンドユーザー向けの活動、コミュニティやイベントの運営といったそれぞれの分野に専念できるほどの人数のスタッフが居るようでした。3つのトラックを平行で運営するだけでも相当な苦労だと思いますが、その中で翌日のセッションのリハーサルに別のスタッフがアドバイスをしたりするような光景はとても安定した未来を予想させます。
技術的な実装といてWordPressと同等のエンジンを開発する事がもし出来たとしても、そこにこれだけの豊富なコミュニティとサポートを構築する事は困難でしょうし、それだけの有機的な基盤こそがWordPressをプラットフォームにしている要因なのではと思います。
というか、大抵のオープンソースプロジェクトはなんとか開発を継続するだけのデベロッパ集団を維持するのが精一杯なのが殆どだと思う中で、これは本当にすごいです。
その他にも今後の開発の方向性や実績を振り返るマットのセッションはまるでアップルの基調講演のような感じで楽しかったです。動画での視聴もできるようになるはずなので、興味が有る方はご覧になってみてください。
最初の一歩を踏み出しませんか?
6月 14, 2011 by yandod · Leave a Comment
CakePHPのイベントが2つ開催されますね。

まず1つは再来週に東京で開催されるCakePHP2.0 勉強会@Tokyo。こちらはCakePHP2のネタを中心に昼から夕方までということでがっつりと情報収集ができそうです。また懇親会は会場でそのままということで知り合い作りにもいい機会になるのではないでしょうか。東京のCakePHP勉強会は年に数回なので、今年もう一度開催されるかは微妙なところです。座席の空きがあるうちに予定をつけて参加申し込みをするといいと思います。
なお初めて参加する方はツイッターなどで気になっている人に先に連絡をとってみてとりあえずその人と話しにいくとか考えると気楽になりますよ。あとはLTに参加するのもいいと思います。

もう1つはCakePHPの公式カンファレンス、CakeFestです。僕も今年参加できれば3年連続の参加になりますがとてもアットホームな雰囲気で参加しやすいカンファレンスです。とくにCakeは英語ネイティブじゃない人の参加がけっこう多い印象もあり、英語が苦手でも気楽です。去年は市川さんが発表者として参加していましたね。
「海外のカンファレンスに参加するなんて、自分には無理だ」と思う人はぜひ市川さんのこの投稿を読んでみてください。
ただ、世界の壁は高いと思ってたけど、そんなに英語での発表は敷居が高くない。
発表するものがあるなら、それが旬のうちに発表したほうが良いです。チャンスはすぐに逃げていきます。発表者登録のサブミットボタンを押すのを躊躇することもありますが、最後は何も考えずに細かいことはいいんだよと思って、とりあえず押してみると世界が変わるかもしれません。その前に、この記事を読むことをオススメします。僕はこの記事に勇気付けられました。
市川さんの文章は海外のカンファレンスで発表するという事について書いていますが、参加するだけでも同じ事ですね。
「勉強会に初めて参加する」「初めて発表をしてみる」「初めて海外のカンファレンスに参加してみる」どれもやってみる前はとても重たく感じますが、実際やってみるとそんなに大変でもなく、それ以上の収穫が自分に残ります。そして市川さんも言っているとおりそれに挑戦できる瞬間というのは決して多くはありません。人それぞれ違うステップを目の前にしていると思いますが、ぜひ最初の一歩を踏み出してみましょう。不安があればツイッターなどで助けを求めればきっと助けてもらえるはずです。
追記:
自分でやるイベントを忘れていました。10月に大阪でPHPMatsuriというハッカソンをやります。ハッカソンというのは泊まり込みで開発した内容を翌日にLTのような形式で発表するというものです。こちらはまた改めて紹介します。
CSSやJSファイルの配信を最適化するAsseticが便利そう
3月 2, 2011 by yandod · Leave a Comment
ニューヨークのPHPコミュニティ、NYPHPに参加してきました。今回はSymfony Liveでも行われたAsseticのセッションに興味があったので参加してきました。(前回はカンファレンス2日目の最終セッションだったので疲れてあまり内容が頭に入らなかったので)今回は内容もすっきり理解できたのでセッションの内容を簡単にまとめて紹介します。
複数のCSSやJavaScriptを連結して1つにするAssetic
サイトの構造が複雑化するとさまざまなJSファイル(JQuery本体やプラグイン、独自のコード、アクセス解析用コードetc)やCSSファイルを外部ファイルとしてロードするようになります。そうする事によって簡単にリッチな機能を実現できる反面、ページを表示する際に複数のファイルを呼び出すリクエストが発生する為にページの読み込みは遅くなります。特に同一ドメインのファイルを複数読み込む場合や外部ドメインから読み込む場合に顕著です。このような問題をファイルを連結する事で解決するPythonのライブラリwebassetにインスパイアされて作られたのがPHP5.3用(Symfony2用ではない事に注意)のライブラリ、asseticです。
基本的な使い方
asseticはSymfonyのコアチームの一員であるKrisさんが開発していますが、あくまでスタンドアロンなライブラリです。Asseticのクラス群がロードできる用になっていれば、単純なスクリプトの中からも呼び出す事が出来ます。
$js = new AssetCollection(array( new GlobAsset('/path/to/js/*'), new FileAsset('/path/to/another.js'), )); // the code is merged when the asset is dumped echo $js->dump();
この例では特定のパス以下にあるJSファイルと、指定したJSファイルをdumpする事で連結して出力します。JSが必要な各ページからは個別のJSを読み込むのではなく、このスクリプトをlinkタグなどで読み込めば単一のリクエストで複数のファイルをロードする事ができます。これによりレンダリング速度の向上やSEOの改善が期待できます。
ファイルの圧縮などを行うFilter
単純にファイルを連結するだけでもリクエスト数の削減は可能ですが、さらにファイルの余分な内容をはぶくといった操作を行う事でデータの量を小さくする事ができます。asseticではこのような処理をFilterを利用して適用できます。実際の圧縮に使うAPIはさまざまな物が利用可能です。
$css = new AssetCollection(array( new FileAsset('/path/to/src/styles.less', array(new LessFilter())), new GlobAsset('/path/to/css/*'), ), array( new Yui\CssCompressorFilter('/path/to/yuicompressor.jar'), )); // this will echo CSS compiled by LESS and compressed by YUI echo $css->dump();
この例ではファイルをYUIの処理を使って圧縮しています。既に実装されているFilterは下記の通りとのことです。またJSファイルの圧縮はデバッグなどの妨げになるので開発時はオフになるようにオプションを指定するのが望ましいです。(スライドの63ページ目に例があります)
CoffeeScriptFilter: compiles CoffeeScript into Javascript CssRewriteFilter: fixes relative URLs in CSS assets when moving to a new URL GoogleClosure\CompilerApiFilter: compiles Javascript using the Google Closure Compiler API GoogleClosure\CompilerJarFilter: compiles Javascript using the Google Closure Compiler JAR LessFilter: parses LESS into CSS StylusFilter: parses STYL into CSS Sass\SassFilter: parses SASS into CSS Sass\ScssFilter: parses SCSS into CSS SprocketsFilter: Sprockets Javascript dependency management Yui\CssCompressorFilter: compresses CSS using the YUI compressor Yui\JsCompressorFilter: compresses Javascript using the YUI compressor
キャッシュ、CDNの利用
ファイルの連結をリクエスト毎に行うのは非効率なのではと思った方もいるでしょう。実際に会場でもある女性がその質問をしていました。asseticにはキャッシュの仕組みも用意されています。下記は連結したファイルを特定のパスにキャッシュする実装の例です。
$yui = new Yui\JsCompressorFilter('/path/to/yuicompressor.jar'); $js = new AssetCache( new FileAsset('/path/to/some.js', array($yui)), new FilesystemCache('/path/to/cache') ); // the YUI compressor will only run on the first call $js->dump(); $js->dump(); $js->dump();
さらに連結したファイルをローカルファイルではなくAmazonS3のようなサービスに書き出す事も出来ます。
$am = new AssetManager(); $am->set('foo', $foo); $writer = new AssetWriter('s3://mybucket'); $writer->writeManagerAssets($am);
このような書き出し処理はコマンドラインスクリプトなどから叩く形でデプロイの手順に盛り込むのが良いでしょうね。
Symfony2との統合
最後にこれらの機能を簡単にSymfony2から呼び出せるように作られたのがAsseticBundleです。asseticそのものはファイルを置くパスや初期化の方法などはオープンですが、これをSymfony2の構造に併せて制御できるようにするのがBundleの役目ですね。PHP5.3であればasseticは動作するので他のフレームワーク用のプラグインなども誰かが作るかもしれません。
Symfony2から利用する場合、ひとまずは特定のパス以下のファイルを全て連結するように動作するようです。つまりファイルをweb配下に置けば全てが連結されてビューから読み込まれるという事ですね。
設定
assetic:
debug: %kernel.debug%
use_controller: %kernel.debug%
read_from: %kernel.root_dir%../web
write_to: s3://mybucketページからの読み込み
<link href="{{ asset_url }} rel="stylesheet">デフォルトのレイアウトに上記の記述があれば常に全てのCSSが連結されて読み込まれますね。そして設定さえすればファイルがS3から参照できたりもするという。
まとめ
問答無用でこの状態から開発が始まると戸惑うかもしれませんが、ページのレスポンスを向上させる仕組みをCDNまで考慮して実装してくれるというのは素晴らしい機能ですね。また質疑応答では画像ファイルをエンコードしてCSS内に埋め込む、スプライティングを行うと言った処理も組み込む予定があると言っていました。Symofony2的にはWEB以下の静的ファイルが全て連結されるようなイメージになる事になりますね。ということで効果的にアクセスを捌く必要がある場合にはasseticの利用を検討してみると良いのではないでしょうか。
セッションの動画もありました
Symfony Live 2011 San Francisco動画レポート
2月 21, 2011 by yandod · Leave a Comment
2011年2月5日から2月9日までの期間でSymfony Live 2011がサンフランシスコで開催されました。延べ300人以上の参加者が世界中から集まりSymfony2を利用した事がある人が9割近いなどトレンドを感じさせるイベントになりました。会期中に撮影した動画とSymfonyのエバンジェリストとして知られる元YahooのDustin Whittleさんのインタビューの動画を作成したのでご覧ください。
イベントハイライト動画(日本語字幕)
この動画ではDustinのインタビューのハイライトを中心にイベントの様子を点描しています。会話中でも触れられていますが、マイクロソフトで行われたカンファレンスには1日150人の来場があり非常に盛況です。またSymfony2を使ってみた人が9割以上でSymfony2を使った事がないならSymfonyユーザー失格と言っても過言ではない状況でした。ちなみに本番環境でSymfony2を利用している人も10名ちょっと居ました。またSymfony2では開発をgithub中心のスタイルに変更し、ZendFrameworkのロガーを標準のロガーとして採用するなど全てを自前で実装していたSymfony1とは大きな方向性の転換があります。開発が進んでいる為、ドキュメントとの差分も発生していますがやはりサンドボックスを動かして実際に触れてみるのが王道といってよいでしょう。
なおDustinのインタビューのフルバージョンはこちらです。(字幕なし)
セッション
セッションのスライドを全て埋め込むとページが重くなるので、タイトルをスライドにリンクしています。
The path to Symfony in the USA – Dustin Whittle
インタビューとほぼ同様の内容でSymfonyの発展の歴史をDustinの視点から紹介する内容。ted.comがSymfonyで出来ているとは知りませんでした!!
Unit-testing a guide to writing clean, testable code that will be easy to maintain and extend – Bulat Shakirzyanov
実はこの方、以前のニューヨークでのmeetupでお会いしたことがあります。ザッカーバーグばりにオフィス内ではサンダルでSymfonyはSymfony2しから知らないというかなりのニューウェイブぶり。内容はユニットテストの意義や手法などについての内容で最近のカンファレンスでは必ず一コマある内容ですね。
Apostrophe: a Symfony-powered CMS your clients will love – Tom Boutell
Symfonyで構築したCMSについての発表。
Contributing with Git : Reducing the frictions of Open Source collaboration with the Git VCS – Scott Chacon
Githubの中の人によるGitの使い方と理論についてのセッション。従来型のSCMのブランチの扱いの違いやデータ管理の手法といった内容を紹介していました。githubの利用はオープンソースにとって非常に重要になってきており、こちらも基礎知識としてのセッションでした。
Nice performance using Sf2 cache wrapping Sf1 application. – Emmanuel Cohen , Marc Weistroff
Sensioから来た二人による事例の紹介。ここでいうキャッシュはmemcacheのような物ではなくEdge Side Inculdeを使ってCDNやプロキシ上にコンテンツをキャッシュさせる事を制御する手法である点に注意してください。こんなん相当なアクセスが無いと使わないと思いますけど。。。
phpBB4: Building end-user applications with Symfony2 – Nils Adermann
PHPBBをバージョンアップしていく際にSymfonyへ移行するに至った経緯の解説。Symfony2のフットプリントの小ささを利用してJoomlaの内部でPHPBBを動作させる等の実例が紹介されていました。
Migrating relational data to the cloud and consuming it from PHP – Bruno Terkaly
事情によりセッションが中止されました
Symfony2 – from the trenches – Lukas Kahwe Smith, Jonathan Wage
PHP MatsuriでおなじみのKris WallsmithさんとDoctrineの作者、Jonathan Wageさんが在籍している事で知られるOpenSkyの事例の紹介。ECサイトにSymfony2を投入するというものすごいアーリーアダプタな事例で培ったTIPSを3人のトークで紹介していました。
Being dangerous with Twig – Ryan Weaver
テンプレートエンジン、Twigの利用方法を丁寧に解説したセッション。簡単に触っただけだったんですが、利点などをわかりやすく整理する事が出来て非常に有益なセッションでした。もはやSmartyを使う理由は技術的には無くなったように思いますね。
HTTP Cache – Fabien Potencier
FabienによるHTTPの解説から始まりESIまでの解説セッション。HTTPの仕様を読んだ事が無い参加者はもれなくFabienにおしかりを受けました。
Don’t use a screw when you need a nail – Stefan Koopmanschap
PHP以外に目を向けてみましょうという内容のセッション。Stefanさんはオランダで行われているDutch PHP Conferenceの中心メンバーで幅広いネットワークをお持ちのようでした。オランダなら英語が通じるので出来れば言ってみたいなと思っています。セッション内ではJenkinsことHudsonやRedmineといったPHP以外の言語で実装されているツールなどの紹介をたくさんしていました。(海外でRedmineの話を聞いたのはこれが初めてです)
Doctrine in the Real World – Jonathan Wage
作者本人によるDoctrineを活用する方法についてのセッション。SoftDeleteの利点を話す際にはFlickrで発生したデータの削除事件を例にとっていました。あまり会場の反応は良くなかったのであのニュースは割と日本での方がインパクトがあったんですかねぇ。
Behavior Driven Development for Symfony2 – Konstantin Kudryashov
講演者がアメリカに入国するビザが取得できずキャンセル
Doctrator, behaviors in Doctrine2 – Pablo Díez
DoctrineをActiveRecord的に利用するというハックの例の紹介。コードの記述を減らすための実践なのですがちょっとスペイン語訛りがきつくてよくわかりませんでした。。。
Introducing Assetic: Asset Management for PHP 5.3 – Kris Wallsmith
PHP MatsuriシャツをまとったKrisによるAsseticの紹介。Pythonインスパイアな静的コンテンツを統合するコンポーネントの紹介。こちらは間もなくコアに取込まれるのではと思われます。
まとめ
セッションの内容はオーソドックスな内容が多くLT等もありませんでしたが、Symfonyのコミュニティが全力でSymfony2に向かっている事がよく確認できたイベントでした。また参加者のSymfonyの活用方法は似たりよったりといった感じで割とまじめそうな参加者の人が多かった気がします。特にコミュニティの運営方法が変わり、拡張機能の開発などで開発に参加する機会も多くなりそうなSymfony2をぜひとも試してみてください。
Symfony Liveカンファレンスに参加中(ハックデイ)
2月 7, 2011 by yandod · Leave a Comment
PHPフレームワークSymfonyの公式イベント、Symfony Liveに参加する為にサンフランシスコに来ています。カンファレンスのセッションは明後日の火曜日からですが、昨日今日と開催されたハックデイにも延べ50人近いユーザーが集まり活発に交流していました。
参加者層
ハックデイには両日ともに20名ほどの参加者が参加し、僕が見聞きした範囲では参加者はアメリカ、カナダ、オーストラリア、コロンビア、ドイツ、ベルギー、オランダ、フランスとかなり多彩です。見た目だけではどこから来たのかの判別は出来ないので「Where do you come from?」から始まって名前を聞き、TwitterやFacebookのアカウントを聞くという会話を何度もしました。なんとなくの感想ですが、欧米のユーザーに比べると日本人はツイートが多すぎるような気がします。日本では起きたとか病院に行ったとかをいちいちツイートする人がけっこう居るという話をしたらわりとウケました。またファビアンとはフランス語で会話している人も多かったですね。ちなみに彼の会社は求人中だそうです。外国人でも構わないそうですが、フランス語が必須との事。
参加者の話題はSymfony2

作業時間はほとんどのユーザーがSymfony2のsandboxを使って何かを開発していました。今回のハックデイには残念ながら発表タイムなどは無かったのですが、Formが動かないとかBundleが動かないとかあれやこれやと話し合いながら各自が作業をしていました。ファビアンはマージリクエストが無いといって悠々自適。ダスティンはハッカソンのオーガナイズで忙しい様子でした。
Symfony2に触れるにはSandboxとBundle
-300x111.png)
僕自身もOAuth認証のBundleを使ったアプリをチュートリアルを見ながら作っていましたが、Bundleの導入の為にコードの変更と設定ファイルの変更が必要になり期待した所までは到達しませんでした。(定義しなければいけないメソッドの追加、禁止された設定ファイルの項目などの影響)
全世界のユーザーの注目を集めていると思われるSymfony2ですが、現状は大きな変更が行われる事も多くすでに公開されているバンドル(プラグインに変わるコードの共有方法)が導入しても動かないという事が頻繁に発生します。ドキュメントも用意されていますが、実装との差分が出ている部分もあるので今の時点で覚えたノウハウは間もなく消え去ってしまう可能性も高そうです。なおSymfony1ユーザー向けの紹介としてはこのページに情報がまとまっているのでなんとなく見ておきたい場合はここを見ると良いでしょう。いずれにせよ3月に予定されているアルファ版以降、段階的に安定性とドキュメントが充実しそうです。
カンファレンス開始後に今回のカンファレンスのオープニングスピーカーを務めるダスティンのインタビューを撮影する予定です。無事に撮影が出来ればなるべく早くに公開しようと思います。
日本から弾丸スケジュールで来た@cocoitibanさんもブログを更新していました。
symfony live 一日目









