2011年9月10日

PHPカンファレンス2011に行ってきた


”カンファレンス参加はブログ投稿まで”と誰かが言ってたような気がするので、今年もつらつら書いてみます。


■基調講演
”PHPの今とこれから”として、PHPの歴史を振り返りながら今後の予定と次期バージョンのPHP5.4の説明が行われました。
PHP5.4のTraitsや絵文字サポートはちょっと使ってみたいです。

- リリースサイクルは1年、ライフサイクルは3年を目標に
  - 6.0は2014年頃?
- PHP5.4は9月にベータ版
  - レガシー機能の削除(さよならregister_globals)
  - E_STRICTがE_ALLに内包される
- 5.4からは更に高速化
  - こちらはこの後の"Taking PHP to the next level"で40%近く上がるケースも
- Trait→言語がサポートする"コードのコピペ"
  - 多重継承を安全に
- short_open_tagがデフォルトで有効化
  - " 'bar');が$a = [1, 'foo' => 'bar'];と書けるように
  - 配列デリファレンス(こんなの→$this->foo()[0])もサポート
- コールタイプヒント
- マルチバイト対応が標準化
  - mbstringに携帯絵文字などの文字コードが追加
  - UTF-8対応がより厳密に
  - 絵文字変換もサポートするが、要UNICODE6.0対応
- PHPのコード品質は高い
  - NSAの試験ではPHPは結構好成績(Rubyはもっと高い)
- PHPのいいところ
  - scale: 小規模サイトから大規模まで
  - easy to learn: 言語がシンプル、ドキュメントが豊富
  - easy to manage: 必要十分な現実的な解を提供(webの進化に対応)

■PHPライブラリの歩き方
早速プレゼン資料が公開されていました→こちら
オートローダやPyrusのお話がとても参考になりました。

- PEAR/PECLは500近く。Rubyなど他言語は2万近く
  - 但しZendなどフレームワーク系コンポーネントがたくさん
- 名前空間をつける
  - 1番目にはベンダー名を
  - "P"で始まる単語/造語は既に取られているケースあり(→事前にググッて調べる)
- PSR-0に従う
  - オートローダの実装は各ライブラリさまざま→ベンチマークあり
- 例外を使う
  - SPLの例外を使う
- マジックメソッド"__call"
  - 学習を困難にする
- Pyrusを使う
  - 任意ディレクトリでPEARのインストールなど

■Taking PHP to the next level
ORCHESTRAという会社のCTOを勤めていらっしゃるDavid Coallierさんの講演。
基調講演の内容を復習しつつ、デモを交えながら海外の方のお話は貴重でした。

- PHPの過去の勢いは失われつつある
  - RoRなどの登場
- namespaceは慣れていくしかない
- PHP5.4の配列簡略表記はJSONとの住み分け
  - "{}"が使えない理由?ここのくだりはよく聞き取れなかった
- Function Array Dereferencing
- PHPの9年間で最もクールな実装→Traits
- Session Handlerクラス
  - まだ機能には入っていない
  - セッションハンドラをクラスで簡単に実装できる
- Built-in Web Server
  - ここで動作デモ。タイピングめっちゃ速いw
- Webページを作るためだけのPHPではもはや無い
  - Javaと並んで最も成熟した言語
- CodeSniffer
  - ソースコードが標準に準拠しているかチェック
- LAMPからLNNPへ
  - Linux, nginx, NoSQL(MongoDBなど), PHP

■Large-Scale Data Processing with Hadoop and PHP
Bitextenderのfounderを勤めていらっしゃるDavid Zuelkeさんの講演。
本来はJavaで記述する必要のあるHadoopのMapper/ReducerをPHPで記述できるHadooPHPを開発されているそうです。

- データは読み込みよりも処理の方が速い
  - I/Oを並列化する→MapReduce
- GoogleのMapReduceの論文を元に実装されたHadoop
  - "Hadoop"の由来は、開発者の子供が黄色いゾウにつけた名前らしい
  - Hive@Facebook, Pig@Yahoo!などの事例
- HadooPHPフレームワークと動作デモ
  - 動画サイトdailymotionのaccess_logをHadoop&PHPで分析
  - PHPだと遅いらしい(→試験用。本番運用はJavaで書き直す)
  - SQLDBからデータを入力する事も可能

■Microsoft love PHP ~3rd Stage ~ WebMatrix + Windows Azure!
クラウディアたんに釣られてMongoDBのトラックが満員だったので、Windows Azureの動作デモ見たさに拝聴。
てっきり管理コンソールのみの提供かと思っていたら、ちゃんとリモートデスクトップで接続できでソース編集などの操作を行える事を知りました。

■GREE at PHP
"GREEの中の人"の講演ということで、国内のPHPによる大規模サイト運用事例として社内の失敗事例など面白おかしく?聴く事ができました。

- GREE内部ではPHP5を使用
- subversionからgitへ移行中
  - perse errorのPHPをコミットする人の対策として、php -lにhookを追加
  - git-dailyを使ってリリース(PHP製)
  - php-gitと連携
- APC/flare/memcachedの用途
  - APC: 消えてもいい、更新あった時消えてて欲しい場合には向かない
  - flare: 消えてはいけない、書き込み激しい場合は向かない
  - memcached: 消えてもいい、keyが分散しない用途には向かない
- swfed→聖戦ケルベロスやモンプラなどのFlash内で使われるコンテンツの差し替え
  - 画像の差し替え
  - MovieClipの合成
  - param値の埋め込み
- ソースコードアーキテクチャ
  - FrontEnd/BackEndの分離→Android/iOSなどへの対応
  - 既存コードベースの分離→海外エンジニアとのやり取りに対応
  - Ethna_Plugin_Debugtoolbar
- GREE Common Library→まとまったロジックを切り出し
  - ランキング
  - Wall(フィード)
  - NeighborList(友だち一覧)
  - Pure PHPで書かれたFlash解析ツール
- 社内失敗事例
  - require_once
  - intあふれ
  - 定数の大文字/小文字論争
  - strtotimeで31日に"+n month"して31日が無い月に当たってバッチが実行されない
- ボトルネックはDB部分はほぼ解消
  - 将来的にはPHP使っているサーバは無くしていくかも?

■LT
PHPカンファレンスの最後の締めはやはり5分間でPHPにまつわるさまざまな発表が行われるライトニングトーク。
今年のドラ娘さんは去年のチャイナドレスに比べて落ち着いた感じでしたw

MongoDBのトラックに参加できなかったのは残念でしたが、いくつかの講演では早速プレゼン資料も公開されているみたいですし、自分のメモ書きより詳細なまとめを行われている方もいらっしゃるみたいですので、そちらを参考にして復習したいと思います。