PHP at Yahoo! JAPAN
from PHPカンファレンス2007
PHP at Yahoo! JAPAN(ヤフー株式会社 荻原一平さん)
- Yahoo! Japanについて
- トップページは13億38百万 PV / 日
- ログインは1996万 ID / 月
- 140ものサービス
- きっと日本で一番PHP使ってる・・・
- Yahoo!とPHPの関係
- Yahoo! Inc(アメリカのYahoo!)に在籍する人
- PHP作った人
- PECLメンテナ
- Symfonyエバンジェリスト
- コミュニティへの貢献
- 機能拡張や拡張モジュールのコントリビュート
- バグレポート
- www.php.netはYahoo! Incが提供
- Yahoo! Inc(アメリカのYahoo!)に在籍する人
- PHPの導入経緯
- 1994年の時点ではすべて自前のサーバー環境だった
- オープンソース火の波
- 1996年にWebサーバーをFiloServerからApacheへ
- 1999年にDBをフラットファイルからMySQLへ
- 2002年9月にスクリプトをyScriptからPHPへ
- ちなみに、OSはFreeBSD
- オープンソース以外では用途に応じてOracleなども
- C/C++レベルでの独自技術が豊富でPHPから呼び出せるようにしている
- Yahoo! Japanは2004年ごろから当時のPHP4.3に切り替え
- 現在のフロントエンドはほぼすべてPHP
- なぜPHPか?
- yScriptのメンテが面倒だった
- さまざまな言語を調査した
- 2002年5月にPHPを採用することを決定した
- 条件
- 高いパフォーマンス
- 堅牢で安全
- C/C++による拡張
- FreeBSDで動作
- 動的コンパイル言語
- 国際化サポート
- 選択理由
- ライブラリや拡張機能が充実
- IDEやデバッガがたくさんある
- トレーニングコストが低い
- PHPの依存関係管理
- インストールは、disable-all
- 共有ライブラリ化
- 不必要な依存を避ける
- メモリの使用量低下
- Yahoo!では最大公約数的な環境が無理なのでベース環境を用意して個々のサービスごとに拡張
- PHP5への対応
- Yahoo!はPHP4の社内サポートは年内まで
- 2007年末までには5に移行
- 2008年までにはほぼすべて5.2へ
- セキュリティ対策
- 開発ルール
- 個人情報の取り扱いルール
- 実装方法の指定
- 脆弱性スキャナによるチェック
- チェックリストで確認
- プラットフォームの整備
- フィルタ
- フェイルセーフから標準設定
- ユーザー入力のフィルタリング
- XSS・SQLインジェクション攻撃・・・ブラウザからのデータは信用しない
- input_filterフックを使用
- フィルタの拡張を行う
- CSRF対策
- Crumbを使用
- 開発ルール
- パフォーマンス
- Opecode Cache:Yahoo!ではAPCを採用
- プロファイラ・デバッガ:Yahoo!ではxdebugを採用
- PHPエクステンション
- 高速で、C/C++のノウハウを活かせる
- 開発が面倒、マニュアルがない、メモリーリーク
- PHP embed
- セッションは利用しない
- Cookie+暗号化
- 画面遷移に必要なデータはPOST
- Crumb
- Yahoo! Incの国際化
- テンプレート管理ツール R3を使用
- 社内アプリだったが、オープンソース化して、7月末にVer1.0.0リリース
- PEARでインストールできる
- フレームワーク、CMS
- オープンソースのは汎用的なのでダメ
- スクリプトレベルでの実装はエンジニア任せ
- Smartyはオーバーヘッドが嫌なので使わない
- Symfonyを使い始めた、ただしYahoo!の拡張はしている
- CakePHPは評価中
- Drupal(CMS)も評価中