2008年7月21日、大田区産業プラザにて「PHPカンファレンス2008」が開催されました。同カンファレンスは、今回で9回目を迎える、日本で最大規模のWebデベロッパーやWebデザイナーなどPHPユーザのためのイベントです。
※本レポート記事に掲載した写真はPHPユーザー会の月宮紀柳さんに提供いただきました。
基調講演
基調講演を務めたのは、日本PHPユーザ会の廣川 類氏。「PHPの今とこれから 2008」と題し、PHPを取り巻く現状、技術的動向について述べました。
まず、現在のPHPの普及具合に触れ、Nexsen Servicesのデータを元に、WebサーバにおけるPHPのシェアが34%であること、また、TIOBE Softwareが行った人気プログラミング言語でPHPが9.5%(トップはJavaの21%)という数字を提示した他、MicrosoftのIISやIBMのProject Zeroなど、大手ベンダによるPHPサポートがスタートしていることを紹介しました。
また、使用しているPHPのバージョンについて、来場者からの挙手によるアンケートを採ったところ、大まかにPHP4が2~3割、PHP5が7~8割という結果になりました。しかし、実際にはまだまだPHP4を使っているユーザが多い状況の中、PHP4→5への移行のポイントとして、
- オブジェクト(クラス)に関係する部分は要確認
- E_STRICT(E_DEPRECATED)による構文互換性チェック
- Zend Engine 1互換モード
- 一部の関数の処理が非互換?
などを挙げたうえで、PHP5への移行に関するPHPマニュアルを勧めました。
PHP 5.3の話題
続いて、2008年10月ごろのリリースが予想されるPHP 5.3に関する話題が取り上げられました。PHP 5.3のおもな特徴のうち、
- 循環コレクタ
- MySQL NDのネイティブ実装
- Namespace(名前空間)のサポート
- ラムダ関数/クロージャ
- ext/intl
- Late Static Binding
- 文法の拡張
などについて取り上げ、PHP 6へのつなぎという位置付けではあるものの、当面の本命であると説明しました。
PHPとQA、テストへの参加
次に、PHPそのものの品質に関する話題に移り、Coverity, Inc.と米国国土安全保障省による「Scan Report on Open Source Software 2008」の結果から、PHPが高い信頼性を持っているという評価を得たことを紹介しました。
ただし、きちんとテストされていないコードにはまだ欠陥があること、そして、それを解決するためにたくさんのテスト参加者が必要であると述べ、「オープンソースソフトウェアはユーザが改善に参加できます」と、来場者へテストへの参加を促しました。
PHP 6.0
この後、PEARやPECLの最新アップデートに触れた後、次期メジャーバージョンアップとなるPHP 6.0の機能紹介がされました。PHP 6.0では、国際化やレガシーコードの削除、エクステンションに関してアップデートされる予定です。これらの改善や機能追加に対し、日本語対応がどのぐらいか、文字コードの検出がどの程度なのかなど、とくに日本語周りに対して課題が見られると解説しました。
PHPの未来
最後に、PHPの未来と題し、
- つねに改善・改良を求めること(オープンソースの活力維持)
- 新たな開発者に参加してもらう工夫
- 改善/機能強化の提案方法
など、これからのPHPのさらなる発展に対する課題と期待のコメントを述べ、まとめの言葉としました。
PHPでつくる ぐるなび
ぐるなびという事業
基調講演に引き続き、大会場では(株)ぐるなび 佐藤 史彦氏による「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
昼休憩後、午後の大会場では、午前のぐるなびに続いて、日本発の大規模サイトの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の検討などを継続的に検討していくそうです。
最後に、これまで楽天のオープンソースソフトウェア活用があまり表に露出されなかったことをふまえて、これから積極的にノウハウを紹介していくなど、オープンソースソフトウェアにコミットしていきたいと述べ、まとめとしました。
激論!PHPの次に学ぶ言語はこれだ
今回のPHPカンファレンスの中でもとくに注目を集めたのが、パネルディスカッション「激論!PHPの次に学ぶ言語はこれだ」です。
まず、司会の個々一番(新井啓太)氏より、このパネルディスカッションが企画された経緯を紹介したうえで、PHPユーザの多くがPHPしかしらないのでは、といったことから実現したと説明されました。
PHPに関しては、パネリストはそれぞれ以下のように見ているとのことです。
- 竹迫氏:
ほとんどのレンタルサーバで動くことやキラーアプリが多い点がメリットである一方で、手軽に利用できるために、ステップアップするためのモチベーションを持つ必要がありますね。
- 高橋氏:
- 実際の業務ではお世話になっている言語。ただし、文法らしさがないなど、言語設計をする立場からするとひどいという面もあります。とは言っても、皆PHPのような文法にあこがれているところもあるのではないでしょうか。
- 柴田氏:
- 大衆向け言語だと思います。理由としてプログラマ・非プログラマ(デザイナー)の両方が触れるからです。そのため、できあがるアプリケーションのクオリティが下がる危険性がありますね。Pythonと比較すると、ノリが異なります。
- ひが氏:
- 自分自身、Flashが好きということもあるのですが、実はPHPを参考にFlashからJavaへの実装を作り、それがSeasar Zeroになりました。そういう経験もあり、PHPはFlashに親和性の高い言語だと思います。
- amachang氏:
- PHPはイメージ的にさわやかだと思います。ただし、言語仕様で見ると、現状ラムダがないなど嫌な面がありますね。
また、次に学ぶ言語は?という質問に対し、amachang氏(JavaScript)、ひが氏(ActionScript)、柴田氏(Python)、高橋氏(Ruby)、竹迫氏(Perl)と、それぞれが推す言語を改めて推したのですが、このうちPHPはバッティングする言語ではないので両方覚えるほうが良いという意見と、PHPからの乗り換えを勧める意見の両方が出ました。
その中でとくに印象的だったのが、竹迫氏が述べた「そもそもなぜ言語を学ぶのかと考えたときに、メインの言語を習得しているのであれば、次の言語を習得するモチベーションは知的好奇心から来るものだと思います。その観点から見て、PHP以外の言語に触れることは他の言語の文化に触れることもでき、その人が賢くなるきっかけにもなるのではないでしょうか」というコメントです。今回のパネルディスカッションでは、この「文化に触れる」というテーマがフォーカスされ、単にスキルや機能的な面で比較するだけではなくて、別の要素をふまえて使用言語を決めていくことが重要ではないか、という流れでまとまりました。
さらに質疑応答の場面では、それぞれが推す言語だけではなく、基本となるC/C++といった言語の知識の重要性などにも話が広がり、来場者にとっては単なる言語比較ではない、プログラミングの本質に迫る内容に触れられた時間になりました。
この他、大小さまざまなセッション、セッション終了後には懇親会が開催されるなど、PHPユーザにとって有意義な1日となりました。