PHPカンファレンス2010スペシャルレポート

1日目,ビジネスデイレポート[随時更新]

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

高原芳浩さん「ユニットホスティングを使った効率的なPHPプラットフォームのご紹介」

株式会社ディノの高原さんによる,自社開発のホスティングサービスユニットホスティングについての講演です。

1998年に東京工業大学発のベンチャーとして始まったディノは,今では22名のPHPエンジニアが在籍しています。開発者として,自分たちが欲しかったホスティングは何かと考えた時,

  • 10分以内にサーバを立ち上げる
  • 1分以内にCPUやメモリを増やす
  • 要らなくなったらすぐ捨てる

などの条件に思い至りましたが,既存のレンタルサーバにこれらすべてを満足するものがなかったと言います。ユニットホスティングでは,メモリとディスクとCPUを独立して時間単位に増減可能で,とある大人気のECサイトの例を挙げて話をしてくれました。そのECサイトはセール時には非常にアクセスが増えるのですが,WebサーバではCPUを増やすのが効果的なのに対し,DBサーバではキャッシュの効きをよくするためにメモリを増やすのが効果的です。従来のレンタルサーバではCPUとメモリがセットで増えますが,ユニットホスティングではその点に柔軟性があります。

ユニットホスティングの設計思想は,⁠短期で無精で無計画な人向け」⁠全世界に提供できるサービス」⁠利用者同士がコミュニケーションによって創造できる」の3本だと話す高原さん。最後のコミュニケーションについては「ユーザを独立したものとは考えていない」と言い,ユーザスクリプト機能によって自分のサーバを他の人が複製できたり,別の人が管理できたりする機能を一部公開中です。ゆくゆくはユーザ同士でサーバを販売したり,有償サポートを提供したりできるようにしたいと語る高原さんに,期待が膨らみます。

画像

画像

手嶋守さん「~モバイルオープンソーシャルにも対応!~ OpenPNE Ver3.6紹介」

株式会社手嶋屋の手嶋 守さんからモバイルオープンソーシャルに対応したOpenPNE Ver3.6,および次期バージョンの3.7系の展望などが紹介されました。

Open PNEはもともと株式会社手嶋屋で開発したSNSアプリケーションですが,より多くの人に使ってもらうために現在ではオープンソースとして公開されています。これには、ただサイトを作るためのツールではなく,誰でもプラットフォームを作ることができるようにしたいという思いが込められているそうです。

オープンソース化以降たくさんのユーザーに利用されていて,今では週100〜150サイトが新規設置されるほどのペースだそうです。SNSといえばmixi・GREEなど大手SNSのイメージが大きいですが,手嶋さんは「規模が小さかったり社内に限定されているようなSNSこそが本来の姿」だと思っているので,それぞれ独自のスペースを作っていって欲しいとのこと。

また、セッション中盤ではバージョン3.6を使って実際の画面を使ったデモが行われました。SNSではユーザー画面と管理画面の大きく2種類の機能がありますが、特に管理画面の使い方を強調していました。普段はユーザー画面しか見る機会はないと思いますが,管理画面を見ることで管理者がどのようにユーザー画面を構成しているのかを想像することができます。バージョン3.6では要望の多いTwitterのタイムライン表示ができるようになったり、各要素の場所や表示/非表示を簡単に切り替えられるようになっています。

OpenPNEはSymfonyをベースに開発されており,Symfonyのサンプルソースを探している開発者にもたくさん使われているそうです。OpenPNEにプラグインを導入するために,Symfonyのプラグイン機構を使用するなどフレームワークの長所を活かして開発されており,フレームワークを使ったアプリケーションのベストプラクティスとして参考にされています。

今後も機能追加を予定しており、特に大規模化・複雑化に対応していくとのこと。パフォーマンスへの対応はもちろんのこと、ID連携や外部サービスとの連携、またOpenPNE同士の連携なども考えているそうです。

質疑応答では,スマートフォン対応への質問がでましたが,携帯版の改造だけでは不十分だと考えており,3.7系ではiPhone対応が決定しており今後もマルチデバイス対応を進めていくようです。

画像

画像

高田敦史さん,新田祐介さん「大ヒットソーシャルアプリの裏側

「恋してキャバ嬢」などのソーシャルアプリを開発している,KLab株式会社の新田さんと高田さんによるお話です。

「サービスを気軽に立ち上げられるソーシャルアプリは,他のアプリとの差別化が必要不可欠」と語る新田さん。⁠キャバ嬢」という新しい分野を開拓した「恋してキャバ嬢」は大当たりしましたが,公開翌日に毎秒580ページビュー,最大で毎秒2000ページビュー以上という,普通のウェブアプリでは考えられないアクセスによって,サーバーの負荷対策を余儀なくされました。

また,しばらくすると,似たようなアプリケーションが他社からリリースされ,差別化のために機能追加が行われます。しかし企画者の持って来た企画書どおりに作ると,作り終わってから「やっぱりここはこうして」という注文が出て,手戻りが発生することもしばしば。手戻りでリリースが遅れると,それだけ機会損失になります。新田さんは,企画書が来たら「ここはこうしたほうが面白いんじゃない?」と逆に提案するようにしました。こうすることで企画の意図がよく理解できるようになり,手戻りもだいぶ減ったといいます。⁠エンジニアも,少しでいいから企画のフィールドに首を突っ込むと楽になれる」と話していました。

サーバーの負荷対策については,高田さんから説明がありました。大量のHTTPリクエストが高頻度に発生し,マスターデータベースに負荷が集中するソーシャルアプリケーションでは,なるべくデータベースに接続せず,かつデータベースへの接続時間を短くすること,キャッシュを最大限に活用すること,更新の一部をKVS(キーバリューストア)に分散することなどが有効とのお話でした。興味深かったのは,KVSとSQLでは一貫性の保証された更新は困難なので,⁠ユーザーが得をする順序で処理を行う」のがキモという話です。例えば,

  1. ユーザーの利益になる処理(体力回復など)
  2. MySQLへの更新処理(アイテム消費など)
  3. ユーザーが損をする処理(体力消費など)

の順に処理を行えば,仮に途中で処理に失敗してもユーザーは「トクをした,ラッキー」となってトラブルにはなりにくいという,現場ならではの知恵に感嘆の声が上がっていました。

なお,KLabではDSASという高負荷・大規模サイト構築用インフラ統合技術を提供しているので,⁠お気軽にご相談ください」とのことです。

画像

画像

大垣靖男さん「新しいPHPアプリケーションのテスト手法」

大垣さんによるセキュリティセッション「新しいPHPアプリケーションのテスト手法」では,バージョンアップ効率化というテーマでお話しされました。

WEBアプリの動作確認は難しく,例えばIPアドレス,HTTPヘッダ,クッキー,DB,キャッシュなど様々な条件に左右され,確認環境に関しても各ブラウザやiPhone,Androidで確認しなければならず非常に手間がかかるというお話がありました。

PHPのバージョンアップのテストのために,⁠PROVE for PHP」というものを開発されているそうです。これは,アプリケーションレベルのテストスイートであり,特にバージョンアップ時のテストに有効であるそうです。サポート予定のPHPは,4.3/5.1/5.2/5.3 です。

PROVE for PHP のアーキテクチャはZendEngineをラッピングするモジュールとして作ってあるそうです。一番のメリットは,本当に実働アプリケーションのテストが可能であることがあげられます。TRACEモード・VALIDATIONモードの2つがあり,TRACEモードでは,リクエスト・関数呼び出しなどを監視しデータを貯め,前と同じように動いてるかどうかをバリデーションすることができるそうです。

VALIDATIONモードでは引数の検証と戻り値のオーバーライドができます。このような単機能のテストはユニットテストの得意分野です。

これからの追加予定の機能として,バリデーションモードのWEBベースGUI,ソースカバレッジ分析,オーバーライド関数の追加,PROVE for ANY(powered by PHP)などがあげられました。

また,PROVE for SQL/PHP も追加機能としてあげられ,これはSQLクエリをログするシンプルなツールです。テスト用ではなくセキュリティ対策用として使用するもので,SQLクエリとPHP変数(例えば $_SESSION['user_id'])を一緒にダンプすることができるそうです。

PHP 4をまだ使い続けたい方向けに「PHP 4セキュリティ保守サービス」をやられており,パッチ数は30以上以上あり,そのうちのいくつかはリモート攻撃が可能であるものだという説明がありました。

最後に,PHP認定機構という団体の説明があり,これはこれからWeb業界に入る方向けのものだそうです。できる限り安価な仕組みを作っており,ベータ試験が今週開催予定だというお話で締められました。

画像

画像

著者プロフィール

佐藤佳祐(さとうけいすけ)

株式会社オトバンク ウェブ配信事業部 開発チーム所属。北海道出身。nequalというエンジニアグループでOpenpearの開発を担当。最近はLOCALの活動が気になって仕方がない。

URLhttp://riaf.jp / twitter:riaf


春原宏保(すのはらひろやす)

長野市在住。最近はC++とDelphiばかりで,PHPからは遠ざかっている。あちこちの勉強会やカンファレンス,セミナーへ参加しては議事録を執筆し,ブログに公開するのが趣味。

URLhttp://d.hatena.ne.jp/suno88// twitter:suno88


藤本洋一(ふじもとよういち)

株式会社BeProud所属。

会社でもnequalでも毎日コードしか書いてません。最近はPythonでDjangoで生活を楽しく面白くする何かをつくってます。

URLhttp://wozozo.jp/ / twitter:wozozo


ヤガー

エンジニアブロガーとして個人ブログCreazy!にPHPやJavaScriptのTipsを更新する傍ら,ツイポーートTwitGIFなどPHPで開発したWEBサービスを多数運営している。

現在は絶賛求職中。

URLhttp://creazy.net/ / twitter:yager

コメント

コメントの記入