「PHPカンファレンス2006」に行ってみました

研修の代休で今日までオヤスミのbonlifeです。なんだかもう髭が漂流民のようです…。8月19日の出来事。id:kidd-number5さんと「PHPカンファレンス2006」に行ってきました。kidd-number5さん、初対面の私に色々と教えてくださってTHANXです。(京ぽんや、MOLESKIN、RHODIAなど持ち物も良い感じの方でした。)ほど良い時間に会場に到着し、結構前の席で楽しんできました。(3列目ぐらいだったかしら。)
GREEなどでお馴染みの藤本さんの挨拶の後、まずは廣川類さんの基調講演。(あ、そういや廣川さんのはてなダイアリー、プライベートモードになっちゃいましたね。残念。)テーマは「PHPの今とこれから2006: PHPの最新事情」。気になったのはセキュリティ強化版PHP(hardened-php.net)のお話。速度低下が5%程度だったらオーケーな気がしちゃいます。(規模にもよるんでしょうけどね。)ここでの成果の一部はPHP6で取り込まれる可能性があるとか。PHP6におけるUnicode完全対応はインパクト大みたいです。mbstringが不要になっちゃうみたいですし。
続いて、Ethnaな藤本さん、symfonyな月宮さん、Mapleな高橋(id:kunit)さん、Zend Frameworkな(?)石川直人(ishinao)さんの4人によるフレームワークについてのパネルディスカッション。小山哲志さんがナヴィゲーター。なんとなくRailsインパクトの大きさを思い知る内容でしたよ。話の端々で「Railsのパクリ、いやインスパイア」ってフレーズが飛び出しちゃう感じ。藤本さんもRailsライクなPHPフレームワークCakePHPとか気にしてたようですし。Rails以前、以後でLLのフレームワークはだいぶ変わってきているようです。まさに戦国時代。フレームワークで出来ることがだいたい見えてきちゃってる的なことを藤本さんが言ってたなぁ。そこを乗り越えて次何を目指すか、というところにはまた大きなブレイクスルーがありそうな予感。とりあえずは、PHP本家ともいえるZendがZend Frameworkをそろそろ出すので、それによる変化をウォッチしていきたいです。とりあえず、それぞれのフレームワークの今後の展望について一言ずつコメントしていたものをメモ。

  • EthnaはRESTのCRUDActiveRecordライクに簡単に書けるようにしたい
  • symfonyはしばらくはチケットの処理に追われる雰囲気
  • Mapleはプレゼンテーション層に特化していたが、今後はフルスタックを目指す
  • Zend Frameworkはシンプルに (ってishinaoさんが開発してるわけじゃないけれども)

その先がやっぱり気になりますよね。仮にZend Frameworkデファクトスタンダードになったとして、その上のアプリケーション寄りの部分に各種フレームワークが乗ってくる感じになるのかしら。CUIベースからGUIベースになっていく動きについても注目しておきたいですね。Webブラウザ上でIDEが実現されて、簡単にWebアプリ作れちゃう時代が来たりするのかしら。ボタン1つでアプリが作れる時代になった時に技術者は何をすべきか、とかとか気になるところです。
午後はテクニカルな話題について。まずは小山哲志さんによる「AJAX with PHP」というテーマでのセッション。実際のサンプルアプリを使っての説明は非常に分かりやすかったです。(ホントに基本的な内容でしたが。)xhrって言葉が出てきて一瞬「何ソレ!」って思いましたが、XMLHttpRequestオブジェクトのことですね。勉強不足を痛感(苦笑)。JavaScriptの変数としてセッションIDを管理することでCSRFにも強いページを作れるってのが印象的でした。ただ、やっぱりログインした状態なのに画面を更新しただけでログイン画面に戻されちゃったらちょっと凹むケースも多いような。利便性とセキュリティって難しいわ。AjaxのUIの限界が見え隠れしてる今日この頃なので、個人的にはFlexあたりを交えたUIの話も聞きたかったです。
続いて大垣さんによる「危険なコード」についてのセッション。実際にsourceforgeで公開されているそこそこ人気がありそうなWebアプリのソースコードを使っての説明はリアルで面白かったです。「リスクはバウンダリにある」ってことをしっかり念頭においてWebアプリを開発しなさいよ!ってことですね。紹介されていた危険なコードとその対応について簡単にご紹介。

  • strip_tagsと共にallowable_tagsを設定した場合、許可したタグの属性部分にJavaScriptを埋め込まれちゃうことがありますよ
  • $_REQUESTを使うと属性ドメインの場合、DOSが簡単に起きちゃいますよ
  • PHP_SELFはパス情報を含むことが出来てしまうので、JavaScript埋め込まれちゃいますよ
    SCRIPT_NAMEで十分でしょう
  • クッキーの有効期限は短く
  • .incなんて拡張子にしてると丸見えになっちゃう可能性ありますよ
    .inc.phpで良いんじゃないの
  • Locationヘッダは絶対パス指定するところなのでお間違えなく

「危険なコード」の例が多過ぎて全部説明していただけなかったのが残念なところ。もっと色々と知りたかったなぁ。と思った方は以下の書籍を読むと良いらしいですよ。

Webアプリセキュリティ対策入門 ~あなたのサイトは大丈夫?

Webアプリセキュリティ対策入門 ~あなたのサイトは大丈夫?

続いてライトニングトーク。3人。まずは鈴木祥真さんによる「PEARに登録するまで」というテーマでのトーク。プレゼン内容とプレゼンの仕方が面白かったです。小山さんのもそうだったのですが、Applekeynoteのプレゼンはキレイですね。フォントが良い。(あれってOsakaかしら。)画面遷移のアニメーションもグルンとしててナイス。shomaさんは新たなプレゼン手法である「巻き戻し」も披露してました。ここは端折って…と飛ばしていくうちにラストのスライドが表示され、皆がビックリして注目したところで戻ってまとめについて説明するというスタイル。斬新!そういや、shomaさんは今流行のnewsingにも関係してるんですって。ほえー。
続いてSeiji Masugata(id:masugata)さんによるPHPコアのHackについてのトーク。変な動きをする関数の問題点をCのソースコードをたぐりながら追求していく様子を丁寧に説明してくれてました。ちょっとCに詳しい人だったら頑張れば出来そうな雰囲気でしたね。初心者の気分を忘れずにガッツで頑張る姿がアツかったです。最後に求職するなど、抜け目のなさも素敵。
最後はサイボウズ・ラボの鶴岡直也さんによる「Getting Rich with PHP4 (and Ethna)」というテーマでのトーク。ライトニングトークは普通5分でしょう!という突っ込みから始まる高橋メソッドでのプレゼン。(プレゼン資料で「Rich」って部分が欠けてる部分があったような気がしたのは気のせいかしら。)なんだかんだでPHP4でもEtnaやSimplePieとか使ってアレコレ出来るじゃん!って感じでした。そういや、廣川さんも基調講演で「私も何か作ろうと思ったらPHP4で書くと思います。」とか言ってたなぁ。
そしてそして、ラストはZeev Suraski氏による「PHP6 & The PHP Collaboration Project」というテーマでの講演です。(資料はこちら。)前日よりもなんとなく良い感じでした。内容については資料見ていただければだいたい書いてありますので割愛。そうそう、アシアル田中さんの通訳凄かったなぁ。時折内容飛ばしてたけど、前日のプロ通訳さんより話の内容を理解してるのでスムースでしたね。質疑応答では調べればすぐに分かる「PHP5ではいつ頃からOracleはサポートされますか?」なんて質問があってガッカリしましたが、質問をしようとする姿勢は見習いたいところですね。「PHP6はPHP5よりシンプルになりますか。」って質問はちょっと奥が深い気がしました。何をもってプログラミング言語を「シンプル」だと捉えるのか。便利な関数を沢山用意して、整理することで開発が簡単に行えるのがシンプルなのか、それとも無駄をそぎ落とした数少ないコマンドを組み合わせることで何でも実現できるようにするのか。(CISCRISCみたいな。)Zeevさんが考えるシンプルは前者っぽいですよね。違うかな。
なんだかんだありましたが、日本のPHP界を支えている有名人を間近で見ることができて、良い刺激になりました。もう少し勇気があったら懇親会に参加してお友達作りたかったなぁ。まぁ、緊張しぃの人見知りなので無理な話ですが。タイミングが合えば今後もこういった集まりに参加していきたいところです。
後、どうでも良い話ですが、LOFTの店頭でRHODIAに「ロージャ」ってフリガナがふってあったので、「へぇ、ローディアとかロディアじゃなくてロージャって読むんだぁ…。」と思っていたのですが、最近完全にロディアが優勢ですよね。結局のところ、日本人としてはどう発音したら良いのでしょう。ロディアで良いのかしら、どうなのかしら。