レポート

PHPカンファレンス2008開催

この記事を読むのに必要な時間:およそ 4 分

PHPでつくる ぐるなび

ぐるなびという事業

写真3 ⁠株)ぐるなび 佐藤 史彦氏

写真3 (株)ぐるなび 佐藤 史彦氏

基調講演に引き続き,大会場では⁠株⁠ぐるなび 佐藤 史彦氏による「PHPでつくる ぐるなび」と題した講演が行われました。

ぐるなびは,グルメ情報を検索できる大規模Webサイトで,1996年⁠株⁠NKBの一事業部として飲食店検索サイト「ぐるなび」が開設されたのが始まりです。その後2000年2月に⁠株⁠ぐるなびが発足し,今に至ります。

ぐるなび全体では,月間7億2,000万PV(2007年12月末現在)⁠会員数588万人(2008年4月5日現在)を誇る,日本有数の大規模なWebサイトとなっています。

ぐるなびのシステム

ぐるなびのシステムは,大きく「限定公開Webサービス」⁠一般公開Webサービス」の2種類に分かれており,それぞれが共通の店舗データを使って各種情報を配信しています。

過去を振り返ると,第1世代(1996~2002年)はWindows+IISによるシステム構築をしており,管理機能UIが付いていないなどかなりシンプルなシステムでした。

第2世代(2002~2004年)に全面リニューアルが行われ,このときPHPを大々的に導入することになりました。

おもな構成として,

  • 管理機能UI:PHP
  • 店舗データ:PostgreSQL
  • 店舗詳細:静的HTML(CMS)
  • 検索システム:検索用PostgreSQL
  • 店舗検索UI:PHP

となっており,WebシステムもLinux+Apacheというオープンソースソフトウェアによる構成となりました。

続く第3世代(2004~2007年)になり,検索システムに全文検索エンジンを採用し,カテゴリマスタなどをMySQLで配信するような構成となりました。

そして,現在の第4世代(2007年~)では,店舗データのDBをOracle/XMLによる管理に変更し,データ共有をXMLで行えるようにしているそうです。

このように,非常に多くのユーザを抱え,多大なトラフィックを生み出すサイトの更新の遷移など,普段は見ることのできない情報を見ることができ,来場者も大変興味深く聴講していたのが印象的です。また,現在のシステムではNASを活用し,そこに店舗情報XMLを蓄積し,それを元に管理機能や店舗詳細,店舗検索など各種機能に配信するようなシステム構成を取ることで,大規模トラフィックに対応しているといった,実践的なノウハウが紹介されました。

PHPの導入

第2世代で全面リニューアルした際,なぜPHPを導入したかという理由について,

  • 動的スクリプト言語
  • フロントエンドの軽量な実装
  • 日本語の取り扱い
  • 導入コストの低さ

といった特徴を挙げました。その他,PHPを使った特別な仕組みは用意していなく,トラフィック増加に対応すべく,Webサーバをスケールアウトしやすい構成を意識しているといったような,大規模システムを担当している方ならではのコメントも聞けました。

今後の課題としては,PHP 5への完全な移行,共通ライブラリやエンジンの導入,国際化への対応などを検討しているとのことです。

楽天×PHP

写真4 楽天⁠株⁠安藤 祐介氏

写真4 楽天(株)安藤 祐介氏

昼休憩後,午後の大会場では,午前のぐるなびに続いて,日本発の大規模サイトの1つwww.rakuten.co.jp/>楽天に関して,⁠楽天×PHP―楽天におけるPHPの過去・現在・未来」という講演が行われました。講演を担当したのは,楽天⁠株⁠安藤 祐介氏で,同氏はCakePHPの著書を持つなど,自身がPHPエンジニアとして豊富な経験と実績を持っています。

楽天の今

まず,楽天の概要として,東北楽天ゴールデンイーグルスの紹介から始まり,契約企業約6万5,000店,商品数約2,200万点を誇る日本最大のインターネットショッピングモールであると説明した後,最近のトピックとして,楽天技術研究所の設立およびRuby産みの親でもある,まつもとゆきひろ氏がフェローとして参画したニュースや新オフィスの紹介などが行われました。

楽天の開発体制

続いて,システムに関する話題に移り,楽天が社内で対応している開発分野として,

  • データセンター構築・設計
  • サーバ構築・管理
  • アプリケーション開発

を挙げ,ハードとソフトの両面を社内で対応していると発表しました。具体的な中身として,オープンソースおよび商用ソフトウェア,各種商用サーバ製品を,ニーズに合わせて使い分けるハイブリッドな環境を採用しているのが特徴とのことです。

このうち,オープンソースソフトウェアとして利用しているプロダクトの名前に,PHP,Tomcat,Ruby,MySQL,Senna,Apache,Linuxが挙げられました。オープンソースソフトウェアを使用するにあたって,十分な検証をしたうえで導入し,必要な場合はパッチを作成するなど,OSSのリスクをケアしながら大規模システムに利用しているそうです。

PHPを利用した大規模開発

楽天の特徴の1つが,大規模開発にPHPを利用している点です。具体的には,以下のような数値になっているそうです。

  • 150以上のアプリケーション
  • 800代以上のサーバ群
  • 約5,000万PV/
  • 最大1,000人以上のエンジニア

これらの数値は,PHPに関する部分のみから抜粋されています。

さらに,過去からの開発・改善の経緯が発表されました。まず,黎明期(2000年頃)はPHP3を採用して開発していたそうです。採用理由は当時のエンジニアが使っていたことがきっかけでした。

それから,2003年頃からは独自フレームワーク期に移り,楽天GORAなどのサービスで,Mojaviに似た楽天独自のフレームワークを開発し,適用しました。特徴としてさまざまな深田以作と十数名以上での並行開発が行えるそうです。

この流れに合わせてPHP4の移行とともに,Mojaviを正式導入したそうです。Mojaviを利用したことで,PHP4での開発スタイルが確立でき,さらに,過去のさまざまなノウハウを活用できた,とコメントしました。

その後,2006年になり,PHP5への移行とともに,現在の社内標準にもなっているsymfonyを標準フレームワークとして採用することになりました。理由として,Mojaviに構造が近い点やスケルトン生成機能を実装している点などを紹介しました。現在のサービスのうち,Infoseekメールなどはsymfonyを利用して開発されているそうです。

これからの展開

一方で,現在利用しているsymfonyには,⁠学習コストが高い」⁠Propelの活用」⁠小さいサービスには大規模すぎる」などの理由があることから,今後の展開として,CakePHPの導入が検討されていると説明されました。

安藤氏自身がCakePHPを積極的に活用していることもあり,すでにいくつかのサービス(モバイル版お気に入りブックマークなど)で試験的に使われているそうです。また,学習コストが小さい点や比較的軽量である点が,CakePHPの特徴だと紹介しました。

ただし,大規模開発への適正やライブラリが未整理であること,また既存資産やRuby on Railsとの兼ね合いといった課題があるため,これらを検討しながら「スピードとコストのバランスを両立した開発を目指していきたいです」と述べました。

その他,PHP5への完全以降,単体テストやIDE強化,PHP5.3/6の検討などを継続的に検討していくそうです。

最後に,これまで楽天のオープンソースソフトウェア活用があまり表に露出されなかったことをふまえて,これから積極的にノウハウを紹介していくなど,オープンソースソフトウェアにコミットしていきたいと述べ,まとめとしました。

写真5 PHPのイメージキャラクタの象

写真5 PHPのイメージキャラクタの象