9月10日、大田区産業プラザPiOにて「PHPカンファレンス2011 」が開催されます。本稿では、本イベントの各セッションの模様を随時更新の形式でレポートしていきます。
会場設営が大分終わり、参加者の皆さんを待っているメイントラックのホールです。
今年のスタッフTシャツです。
会場に来られない方のために、ベストエフォートでUstreamによる中継が行われています。各トラックのチャンネルは以下のとおりです。
廣川類さん「基調講演」
PHPカンファレンス2011は、PHPユーザー会の廣川類さんによる基調講演で幕を開けました。
まずは「PHPの歩み」として、PHPがブレイクしたきっかけとなったバージョン4から現在の5.3についてのおさらい、そして次期バージョンの5.4についての解説が続きます。PHP 5.4では、10~15%のパフォーマンス改善、コードの再利用性を改善する「Traits」 、マルチバイト対応の強化などが盛り込まれ、今月末にはRC1が出る予定とのことです。
Traitsの具体例や新構文($a = [1,2,3]; といった配列定義の簡略表記など) 、UTF-8のチェック強化、携帯絵文字変換の改善などを紹介しました。PHP5.4で導入される新機能の紹介は会場の興味を引いていました。
また、PHP 5.3.7で発生したcrypt()関数のバグの話にも触れ、XFAIL(experimental fail)という新しい仕組みの導入が検討されている話も紹介しました。
PHPが成功した理由として、「 Scales」( 小規模サイトからFacebookなどの大規模サービスまで対応するスケール) 、「 Easy to learn」( 言語のシンプルさやドキュメントの豊富さによる学びやすさ) 、「 Easy to manage」( 必要十分な現実会を提供する)の3点を挙げていました。今後もWebの進化に対応してゆくPHPから、目が離せません。
sasezakiさん「PHPライブラリの歩き方・作り方」
Zend Framework 2やSymfony 2のコントリビューターであるsasezakiさんによる、PHPライブラリについての講演です。
PHPのライブラリは、9月5日現在でPEARに570本、PECLに272本しかなく、2万本前後のライブラリがあるPerlやRuby、Pythonに水を開けられています。「 欲しいライブラリが見つからなかったら自分で作るしかない」ということで、PHPライブラリを作る上での注意点を話しました。
まずは名前空間の付け方として、Doctrine\Common\Cacheのようにベンダー名・ライブラリ名を必ず先頭の名前空間とし、次にパッケージ名を付けることが重要と言います。新しくライブラリを作る場合は、まだ使われていないベンダー名で新たに命名すべきだが、pで始まる単語や造語は大抵取られているそうです。
次いで、クラスの読み込みは「PSR-0」( PHP Standard Working Groupによる「オートローダーの相互利用性を確保するための必須要件」の標準化)に従うべきと言います。また、ファイルの読み込みに失敗した時などのエラー時に、独自の例外ベースクラスから派生した例外をスローすると、ランタイムの例外なのかロジック上の例外なのかが例外名から判断するほかなかったというZend Framework 1の過ちを例に引き、このような場合はSPL(Standard PHP Library)のRuntimeExceptionとLogicExceptionをスローするとよいとのことです。ほかにも、モダンプログラミングがベストプラクティスとは限らない(マジックメソッドによる自動化は学習を困難にさせる)などの実践的な話が続きました。
最後に、パッケージの依存性の問題を解消するために、PyrusでプロジェクトローカルなPEAR環境を作る手順について説明がありました。
「今回話せなかった内容はいろいろある。『 オープンソースソフトウェアの育て方』がオンラインで読める のでぜひ読もう!」と述べて、セッションは締めくくりました。
柏岡秀男さん「30初心者セッション「もうHello Worldはいらない!」~テンプレート編集からはじめるPHP入門~」
PHPユーザ会発起人の一人、そしてPHPハンドブックの著者でもある柏岡さんのセッションです。
まずはじめにPHPの概論を話しました。PHPは1994年という説もありますが1995年Rasmusさんが作たこと、初期のコードはすごく簡単で<?--incliude /text/jeader.html-->みたいな感じだったことが語られました。また、PHPの良いところは初期から今に至るまで変わっていないとし、以下の点を挙げました。
1週間くらいあれば習得が容易
利用可能なプラットフォームが多数
htmlとの親和性が高いこと
豊富なOSSアプリが存在
「硬く構えずに、どんどん覚えていきましょう」と述べていました。
続けて、MVCを説明しました。MVCとは「Model:データの集まりを扱う」「 View:表示を扱う」「 Controler:MとVのコントロールを行う」と紹介し、このように分けることでプログラムのメンテナンス性はアップすることや、プログラムとデザインの分離を図り、平行作業が行えることを説明しました。
その後、PHPの基礎を説明しました。PHPの知識は「最低限の知識が必要です。でも3日程度」「 プログラム構築できるほどは必要はありません」「 大体読めば分かります」と言います。さらに、関数は「PHPが行う処理」「 ( )が付いている」「 <?php get_header(); ?>という感じ」「 返り値の有無には注意」とし、変数は「$xxxxxで表されるもの」「 条件判定に使われたりする」と示しました。また、echoは表示のもっともメジャーでよく見ることになり、フレームワーク等ではショートタグにて同様の処理の記述をするものもあるそうです。
構文は通常のPHPの構文と違う書き方、例としては以下のような形になります。構文を使うとhtmlのっぽいことを説明しました。
<?php if($a == 5):?>
<p>hogehoge</p>
<?php endif?>>
その他にも繰り返し処理を行うfor/do~whileループの構文を説明しました。
最後に、各種フレームワークOSCの説明がありました。WordPressセクション、CodceIgniterセクション、Ethnaセクションと分けて、テンプレートの実例を紹介しました。どれを触るにしても、そんなに難しくはないから、色々触ってみるのが良いです!という心強い言葉で締めくくられました。
田窪亜矢さん、有滝貴広さん「ウェブデザイナー向けPHP解説&入門」
テックトラックでのセッション第一弾は、田窪亜矢さん有滝貴広さんによるPHPの習得を考えているWEBクリエイターを対象とした初心者向けのセッションとなります。
田窪亜矢さん
最初に、田窪亜矢さんよりWEBクリエイターがPHPを習得するメリットが紹介されました。
WEBクリエイターが身につけたい技術としてPHPはディレクター職・デザイナー職共に上位にランクしており、コスト削減・案件の受注額アップ・給与アップに繋がるなどWEBクリエイターにとっても重要な技術となっているそうです。
有滝貴広さん
続いて、有滝貴広さんよりプログラミング言語としてのPHPが紹介されました。
WEBクリエイターにとってプログラミングというものは「難しい」というイメージを持たれがちですが、PHPがいかに簡単かを説明するために実際に5分程度の時間を使い、掲示板のサンプルプログラムを作成し紹介しました(サンプルプログラムでエラーが発生し、その場でスタッフの助言で解決するというアクシデントもありました) 。
David Coallierさん「Taking PHP to the next level」
Orchestra のCTO、David Coallierさんによる講演です。
「PHPの歴史を振り返りたい」として、PHP 5.3の名前空間、クロージャ、λなどのおさらいから入ります。「 5.3に盛り込まれた機能はたくさんあるが、知らないものや使ったことがないものもあるだろう」でとして、PHP-FPMやAdvanced DateTime、Pharファイルを挙げました。
続いて話題はPHP 5.4へと移ります。「 PHP 5.4は、個人的には『Little PHP 6』と呼びたい」と言います。PHP 6で盛り込まれる予定の機能がほとんどサポートされているからです。配列の簡略記法、「 $obj->method($var)[2];」のようなJavaScriptでは見慣れた記法、Traitsの簡単な説明をしました。-S オプションをつけて起動するとWebサーバーになる話の後、「 5.3以前のPHPは、喩えて言うなら西洋式のトイレだ。トイレはそれ単体で機能し、隣にはビデがある。それがWebサーバーだ」と述べると、スライドには日本のウォシュレットが映し出され、「 5.4はより完璧で一体感があり、日本のトイレのようだ」と言及し、会場の笑いを誘います。
「もはやPHPは、ウェブページを書くためだけの言語ではない」として、PHPUnitやXDebug、CodeSnifferなどのツール、Symfony 2やZend Framework 2などのフレームワークを取り上げます。また、アプリケーションのデプロイを簡略化するソリューションとして、ご自身が開発しているOrchestraの紹介もありました。
最後に、会場に向かって「今までに何らかのオープンソースにコントリビュートしたことのある人?」と質問を投げかけたDavidさん。挙がった手の少なさに「もっと貢献してほしい。オープンソースへのコントリビュートは、達成感のある経験だと思う。自身のキャリアにも、コミュニティにとってもプラスになる」「 何もコードを書くだけが貢献ではない。私の妻はイベントを組織したり、言語ファイルを翻訳したりしている」と、日本の開発者へメッセージを送りました。
anatooさん「PHPをハックしてオレオレ文法を追加する」
もう少しこの言語便利だったら…と思う人はいても、実際にhackする人はなかなかいません。
そんな少数派の試みをおこなったanatooさんの講演です。
講演内容は、hello world; でhello worldを出力しようという、簡単なモノから始まり、ruby likeに無名関数を作る方法やスカラーっぽく書く方法などなど、とても面白い内容でした。
PHPが実行されるまでの言語処理の流れをコード付で順を追って解説したため、とても分かりやすく感じました。
字句解析(re2c) phpソースをトークンに分解、構文解析(bison)、zendエンジンへのコンパイル(PHP->C) 、zendエンジンでの言語によって細部は若干異なるものの、言語のカスタマイズをする際に共通して使える考え方でした。
最後の質疑応答の際の回答が素晴らしいものでした。「 使えるから研究するのではなく、楽しいから勉強して、結果仕事に活きる」そうです。とてもいいマインドですね!
chobieさん「PHP doesn't suck!」
PHP Extensionで記載したほうが早いところか、PHPをがあるか見極める必要があるとのことでした。永続的な値の保存方法をひとつ取り上げながら、実際に使用するメリットの説明もありました。
「飢えと希望と絶望を与えてくれるPHPにZendEngineStudyを!」と述べた時は会場になんともいえない失笑が響きました。
「30分でわかる PHP Extensionの作り方を学べる記事をかいたよー \(^o^)/ 」という記事にまとまっているので是非見てほしいと述べました。今後はノウハウややりたいことのまとめを行いますと宣言していました。
中村智洋さん「スタート Sphinx」
Sphinxはドキュメンテーション出力ツールで、ツリー構造の文章を記述できるアプリケーションとのことです。実はPHPの話ではありませんが、文章を書くことが魔法のように楽しくなるツールなので是非覚えましょうと話します。
Windowsでもスタンドアローンインストールを使えば簡単にインストールできるため、まずはインストールをすることを薦ていました。
続いて、Linuxで実際にドキュメントが生成されるまでのデモを行いました。インストールの概要は、製作者の名前、生成する場所(ディレクトリパス) 、プロジェクト名などをクイックスタートに言われるままに入力することでドキュメントが生成されるという形で進んで行きました。また、ドキュメントの修正方法についてもその場でデモが行われました。
OSSで使われている事例については、PHPのフレームワークであるSymfonyを挙げていました。Sphinxはドキュメント生成ツールなので、htmlの出力も、PDFの出力も可能です。サンプルもインターネットを探せば沢山ありますので、どんどん使ってみましょうと締めくりました。
最後の質疑応答でWikiに比べての優位性が問われたところ、Wikiはネットからの編集、Sphinxはネットワークに繋がずに編集できるというメリットがあると述べていました。
亀井亜佐夫さん「Cena-DTA:HTML5のローカルDBを使ったアプリ開発」
HTML5の代表的な新機能であるローカルDBを活用したアプリ開発に関して亀井亜佐夫さんからの講演です。
まず、ローカルDBの活用事例として、
すべてのデータをダウンロード
ローカルで一括編集
一括アップロード
という流れで作業を行うのではないかと紹介しましたが、IDの自動発番と同期の問題が発生します。そこでDB間の同期を保証する仕組みとして、Cena-DTAを紹介しました。
続いて、Cena-DTAのインストールと利用方法のデモが行われました。
現在のところ接続先のDBはMySQLによる動作しか検証されていないようです。インストールが完了しDB接続情報の設定が正常に行なえたら、その後の作業は全てブラウザ上で行えます。ローカル(ブラウザ)で編集を行い、アップロード処理を行うとサーバー上のDBに同期されるような流れとなります。
Cena-DTAの実行環境としては、
サーバー:PHP5.3 & MySQL
クライアント:Google Chrome推奨
となるそうです。
HTML5ということで、現在のところ最もHTML5の実装が進んでいるChromeが推奨ブラウザということになっているのだと思います。
最後に類似技術を紹介しました。Random IDはGoogleカレンダーで使用されている技術だそうです。Cena-DTAの優位性としては確実に同期できること、一般的なRDBに対応できることを挙げていました。問題点としては簡単ではないこと、ORMに依存していること、そして活用方法は考えていないが特許を取得した事を挙げていました。
まだ過渡期の技術ですが今後どんどん開発が進んでいく注目の技術かもしれません。
David Zuelkeさん「Large-Scale Data Processing with Hadoop and PHP」
ドイツのミュンヘンから、Agaviの開発者であるDavid Zuelkeさんをお招きして、PHPからHadoopを使うための講演が行われました。
Facebookの1日当たりのログデータが、2008年3月には200GBだったものが、2009年4月には2TB、10月には4TB、2010年3月には12TBと爆発的に増えているというデータを示し、「 例えば180GBのデータをディスクから読み取るだけでも45分かかる」「 データ処理の速度は読み込みよりもずっと速い」という事実に基づいて、MapReduceとHadoopへと話を繋げていきます。
MapperとReducerの基本的な解説に続いてHDFS (Hadoop Distributed File System)を紹介し、「 小さな問題として、Javaでコードを書かなくてはいけない」と話した後、自身が開発したHadooPHP を紹介しました。会場ではApacheのアクセスログの解析デモも行いました。
JavaのHadoopに比べ、HadooPHPはかなり遅いため、DavidさんはプロトタイプにはHadooPHPを使い、実運用にはJavaのHadoopを利用しているとの話でした。
澤田径さん「アジャイル開発とTDDを半年間実践してみた顛末と、これから」
「以前はウォータフォール開発にどっぷりはまってた」と語る、半年前現在の会社に転職してPHPとアジャイル開発には携わるようになった澤田径さんの講演です。
アジャイル開発に興味を持ったきっかけは、開発期間が短く仕様変更が頻繁に発生するソーシャルアプリ開発では、ウォーターフォールでは無理だと感じたことだそうです。そして、社内勉強会などを企画し、自身も学びながら経験したアジャイル開発について紹介しました。
半年後の成果として、テストコードを書くエンジニアが0人から5人に増えたそうです。それによって、運用中アプリのデグレードが激減し、既存バグなども修正ができたそうです。また、仕様変更に柔軟に対応できるようになったようです。逆に現在の課題としては、TDDは自然に伝播していった結果、我流過ぎるやり方が発生していることを挙げました。
アジャイルを学ぶメリットとしては、より価値のあるソフトウェアづくりを求める普段の意思が伝わること、顧客の考える価値は常に変わる=仕様も常に変わる、という当たり前のことに気づけたことが大きいと澤田さんは語っていました。そして、今後組織的な成功を目指す人にお勧めしたいそうです。
TDDを学ぶべき理由としては、PHPerには特にTDDを実践している人が少ないおとが挙げられ、それが澤田さんは悔しいそうです。今後導入していくに当たっては、まず押し付けないこと、横文字が多発するが業務に合わせた形で翻訳して伝えることが重要であるとの考えを述べていました。また、学習コストを常に意識することが重要だそうです。
まとめとして以下2冊の本をお勧めされました。
興味のある方は是非読んでみてはいかがでしょうか。
yamashiroさん「PHPとテストとCIと私~愛するあなたのため~」
yamashiroさんよりTDDに関する講演です。
まず、ソフトウェアについては以下の3本柱があると紹介しました。
バージョン管理
テスティング→TDD
自動化→CI→Jenkins
バージョン管理はyamashiroさんの会社に既に導入されていたらしく、テスティングの例としてEclipseを使用したテストのデモが行われました。自動化に関しては、CIツールの定番としてJenkinsを紹介しました。理由としては導入が簡単であること、日本人が開発していること、プラグインで拡張できることを挙げました。JenkinsはJava用とよく言われるそうですが、プラグインで実行可能だそうです。Jenkinsにプラグインを入れた状態で、PHPのコードをチェックした場合の表示に関するデモも行いました。
また、導入方法を説明しました。「 普通感を出すことが重要」と言うことですが、まずは一人で始めてみることをお勧めしていました(Jenkinsは簡単に導入することができるので) 。
yamashiroさんは非常にプレゼンテーション慣れした方で、爆笑の連続というとても楽しいセッションでした。筆者にそれを伝える文章力がないことを申し訳なく思います。最後にyamashiroさんが何度も取り上げていた書籍を紹介します。
アジャイル開発の書籍と合わせて、興味のある方は是非読んでみてはいかがでしょうか。
池田百合子さん「世界標準ウェブツール WordPress と PHP のすてきな関係」
WordPressには単体インストール型とそうでないものがありますが、今日は単体インストール型の話であることを説明しました。
WordPressの人気の秘訣は基本テーマに加えて、Twitter風、萌え風など、1400を超えるテーマと、入力フォームのプラグイン、携帯表示をするプラグイン、コードの色づけをするプラグインなどのたくさんのプラグインにあると言います。実に恵まれた周辺環境であると述べました。
続いて、WordPressの哲学が語られました。「 テーマはPHPそのもので、PHPをヒラに書いている感覚で、スキンを生成できる。PHPの哲学に習う構成でつくられているので、突然echoしても大丈夫」「 テンプレートはループも基本はPHPで書く」「 ウィジェットはクラス。そっちのほうが使いやすいから」などを指摘します。このうちのいくつかは、セキュリティ的にまずいところがあるが、「 使いやすさのために割り切っている」という哲学こそWordPressなのだと言います。
最後にWordPressの各種サイトを紹介しました。全体的に非常にテンポの良いトークでした。
吉田悟さん「40コーディングからチューニングまで 早わかりZend Studio 8 日本語版」
Zend Studioは、ローカルでもリモートでもデバグができる統合開発環境と言います。プロファイル機能やユニットテスト支援、ドキュメント生成機能などの各種機能をれぞれを説明しました。
続いて、デモプログラミングを行いました。まずはDocがどのように反映されるのかをデモを通して示しました。非常に早くスムーズに表示されている様子を見ることができました。その後、ソースの整形やマジックナンバーの警告、他にも様々なリファクタリング機能のデモを行いました。そしてZendサーバーの接続する…というところで時間切れ。「 もう少し聞きたいと思う方はZendに問い合わせてください!」と述べていました。
関田文雄、新村剛史さん「Microsoft ♥ PHP ~ 3rd Stage ~ WebMatrix + Windows Azure!」
一昨年のWeb Platform Installer、去年のWebMatrixの講演に引き続き、今年はWebMatrixとWindows Azureの講演です。
まずはWebMatrix についての復習として、WebMatrixを使ってWebサイトを作成し、公開するデモが行われました。WebMatrixの機能だけでほとんどの作業が完結することがデモを通して理解できます。PHP以外の言語対応や入力支援の強化、Azure対応などを盛り込んでいるバージョン2が間もなくリリース予定とのことで、楽しみです。
後半はマイクロソフト社のクラウド(PaaS)サービス、Windows Azureの紹介です。開発にはVisual StudioもEclipseもWebMatrixも特に要らないことを強調し、PaaSなので管理が不要なこと、データセンターが数十万台規模であることなどの解説もありました。
PHPとWindows Azureの事例として、TOYOTA FIFAクラブワールドカップのFacebookキャンペーンサイトや、チョロQのフィーチャーフォン向けゲームのインフラなどを紹介しました。「 1,000インスタンス程度ならいつでもどうぞ」とのことですので、大規模Webサービスを予定する時はWindows Azureも選択肢に入れたいものです。
最後に、「 WebMatrixは無償ツールなので、マイクロソフトの製品だからって毛嫌いせずぜひ試してみてください」「 Windows Azureの30日間無料パスを展示エリアで配布しています」と述べて、締めくくりました。なお、当日はブースに等身大のクラウディア窓辺 のパネルが置かれてあり、記念撮影が人気でした。
窪田博昭さん「PHP+MongoDBで作ったメディアプラットフォーム」
窪田博昭さんよりMongoDBを活用したプラットフォーム開発に関する講演です。
国内では大規模サイトの代表格である楽天における、発生課題と解決のために導入したツールについて紹介しました。
PHPで大規模システムを開発した場合、PHPはコンパイル型言語に比べて速度が遅いためPVが増えると問題が発生することが多いそうです。そういった場合、非同期リクエストを使って処理するためcurl_multiなどを使うことになりますが、一般的ではないし、ここまで来るとフレームワークのサポートは皆無となるようです。
最終的に課題として以下のものが残ったらしく、それらの解決策として併記するツールを導入することにしたそうです。
クラウド化した時に通信経路の確保+プロセス監視→Zookeeper
並行処理→0MQ
高速でシンプルなレンダリング→ClearSilver
分散DB→MongoDB
運用面→Capistrano
これらを使用して楽天ではAlbatross(開発名)というPHPのWEBフレームワークを開発したと述べ、Albatrossの構成について説明しました。
最後にAlbatrossを使った開発方法について紹介しました。
また、Albatrossは最終的にオープンソース化を予定しているそうです。大規模サイト向けになると思いますが、国内製ということで、オープンソース化したら注目のフレームワークとなるかもしれません。
cakephperさん「 CakePHP x MongoDB」
cakephperさんによるCakePHPとMongoDBに関する講演です。
まず最初にCakePHPの国際カンファレンスを紹介しました。このカンファレンスが行われた日はCakePHP2.0がリリースされた日だったそうで、盛大に行われたそうです。
続いてCakePHPとMongoDBで作成したWEBページとPHPでの使い方を紹介しました。PHPはMongoDBと相性がよく、RDBを扱うように手軽に使えるそうです。ですが、設定は必要となるのでPHPの設定、CakePHPの設定方法について説明しました。また、CakePHPにMongoDBを使う方法に関して、ソースコードレベルで使用するメソッド・パラメータの設定方法などについて具体的に説明しました。MongoDBにおいてもセキュリティ対策が必要となるのですが、インジェクション対策はPHPのみ必要なのだそうです。
最後に、今年10月15日〜16日に大阪で行われるPHPMatsuri2011というイベントの宣伝がありました。
小川雄大さん、Kenjiさん、桜井厚さん、sasezakiさん、前田雅央さん、デジコン株式会社さん、MugeSoさん「フレームワークアップデート」
Symfony2:小川雄大さん
今年Symfony2リリース2.0.1が最新版とのことです。Symfony2ではGitHub上でもっともForkされているプロジェクトだそうです。Facebookのプラグイン以上のフォーク率です。2.1はLongTermSuportになるので長い間サポートされる予定とのことです。
技術的に難しい話が多いのですが、温泉合宿をしたり、ユーザー会MLがあったりと非常に楽しそうなコミュニティが築かれている様子でした。とにもかくにも技術者のスキルアップになるフレームワークとのことです。導入事例としてはcrocosのFacebookアプリを紹介していました。
推薦図書としてエリックエヴァンスのドメイン駆動開発が紹介されました。同時に、実践PHPという本が今後出てくるので、来年はそれも読もう!と薦めていました。
CodceIgniter2:KenjiSuzukiさん
CodceIgniter2は、今最も注目されているフレームワークであると言います。その理由は「最も動作が早い」「 最も覚えやすい」「 最も自由」だからだそうです。今年は開発が2つに分かれ、2.0が作られ、カンファレンスが開かれ、さらにまた一つのバージョンになった等の目立ったトピックを説明しました。
フォルダ構成も変わり、分かりやすくなった様子です。Getが使えない仕様だった1系は終わり、2系は普通に使えますという話です。理由がセキュリティ対策というのもあわせて驚きの内容でした。ユーザーガイドの日本語翻訳作業を手伝ってくれる人を募集中だそうです。
Yiの紹介:桜井厚さん
最初はグチャグチャは書かれてあったものが、Yiフレームワークを使ってみたら整理できたとのことです。高速なMVC、Stay.com、プログラムの自動生成で300秒でブログができる!?という興味深い話が続きました。Webベースのコードジェネレーションが実施できる様子です。そして実際にブログの作成のデモが行われました。Yiは使って楽しいフレームワークです。でもまだ日本のユーザーは少ないとのことです。はじめるなら今なのかもしれません!
ZendFramewark:sasezakiさん
5年煮込んだフレームワークというキャッチでスタートしました。ZendFramewarkは説明責任を果たすフレームワークであると述べていました。素晴らしいですね。現在も活発なコミットが行われています。Zend2はたくさんの書き換えを実施し、最新のテクノロジーを投入したとのことです。
続いて、今もコアを触りつつ、様々な改良を加えられていると説明しました。気になる方はGitHubに上がりつつあるので,是非フォークしましょうと締めくくりました。
Silex:前田雅央さん
Symfonyユーザー会に参加しているのに、Silexのお話ばかりしているプレゼンテーターと語る前田さん。Silexはsinatraをオマージュしているフレームワーク。そしてコアは、Symfony2となっている変わったフレームワークなんですと紹介しました。
Silexを勉強すればSymfony2を学べるとのことです。これはお得ですね。マイクロフレームワークと呼ばれていますが、様々なエクステンションが準備されていて、大規模にすることもできると説明が続きました。
ドキュメントはSilexユーザーガイドで検索してくださいとのことです。今も少しづつ進化しているので要注目で、シンプルでとにかく楽しいですと述べました。
CakePHP2.0:デジコン株式会社さん
「主に使ったことのある人向けの話になります。使ったことがある人!」と質問したところ,会場の4分の1から手が挙がりました。今回の話は、主に使ったことのある人向けの話だそうです。
AuthComponentの3つの認証形式の話,ログインメソッドの呼び出し方法、パスワードのハッシュ化の話、SecurityComponent、FormHelper、PHPUnitに合わせたTestツールなど、盛りだくさんの内容でした。
agavi:ugeSoさん
PHPカンファレンスプログラム責任者であるugeSoさん。agaviは本物のMVCが売りです!という謳い文句スタートしました。
agaviはMojaviの後継でSymfonyの兄なフレームワークだそうです。
実例に基づく多彩なバリデーション機能のお話は非常に興味深い内容でした。
Agavi用のNetBeans拡張登場!外部ライブラリ等にもどんどん対応しています,どんどん色々追加されているのでここでは説明しきれません!チェンジセット必見です!との事です。
是非調べてみましょう!今後の追加としてはESI対応等こちらも様々追加されて行く様子です。
近々勉強会が開かれますので,参加してみてください!と締めくくられました。
徳丸浩さん「徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011」
「徳丸本」こと『体系的に学ぶ 安全なWebアプリケーションの作り方』 の著者、徳丸浩さんによる講演です。徳丸本は3月に発行されたばかりですが、7月28日には第4刷が出たというベストセラーです。
最初の鉄則10は「安全なPHP入門書で学習する」として、「 そこそこでも安全なPHP入門書には出会ったことがない」と話し、会場の笑いを誘います。一見対策しているつもりでも実際には穴がある例を実際の書籍から挙げ、「 せめてXSSとSQLインジェクションくらいは最初から正しく教えてほしい」「 どなたか安全な入門書を書いてください」と話していました。
以下、徳丸本に沿った内容で、「 入力-処理-出力で適切な処理を書くこと」「 今どき文字コードのセキュリティ気にしなくていいのは小学生までだよね」といった鉄則が並びます。鉄則2では「PHPのバージョンアップにとことん付き合う信念」として、「 午前中の基調講演で、PHPのライフサイクルは3年という話があった。3年間とは言っても、ライフサイクルの後半で導入すれば1年くらいしかサポートされないこともある」と話し、「 最近のPHPは安全になってきていると思うが、なるべく新しいバージョンのPHPを追いかけるべき」とアドバイスしました。
残り時間も少なくなり、講演時間延長かと思われましたが、最後の鉄則1はひとこと、「 徳丸本を買ってよく読め」 。会場は爆笑の渦に包まれ、割れんばかりの拍手が送られました。
梶原大輔さん「PHP at GREE」
ギークトラック最後のセッションは梶原大輔さんによるGREEにおけるPHP活用事例に関する講演です。
最初にGREEとPHPについて説明しました。現在はソース管理をSubversionからgitへの移行を行っているそうです。続いてPHPで使用しているExtensionを紹介しました。GREEでは自前で作成しているExtentionもあるそうで以下のようなExtensionを作成しているそうです。
Cライブラリとのブリッジ
PHP→Cにして高速化
ZendAPIを使いたい場合
今後の強化ポイントとしては、やはり高速化となるようです。
アーキテクチャとしては今後以下を目指しているそうです。
frontend/backend分離
既存コードベースとの分離
GREEおけるその他のPHPの利用事例としては、
デプロイツール
非同期処理バッチ
Flash解析
Skypeボット
などで代表的なサイト以外でも利用されています。
テストツールとしてはJenkins、ドキュメントはSphinxが利用されているそうです。
続いて、GREEのPHP事件簿を紹介しました。
「 require_onse問題」 、「 INT溢れ問題」 、「 定数論争」 、「 ?>事件」などが挙げられました。これらの問題はGREEに限らずどのような開発でも起こり得る問題だと思いますが、GREEではPHPを愛してやまないため(梶原さん談) 、PHP本体のソースコードを解析して原因を特定したそうです。
GREEではPHP以外の言語も使われていて、Python(機械学習用) ・Perl(集計スプリクト) ・Ruby(nanofs、インフラ系管理ツール) ・C/C++(Flare・Apache handler・PHP Extensionsなど) ・Java(Android系) ・Objective-C(iPhone系)などが使われているそうです。
ライトニングトーク
「Making DSL with []」
5.3以前のPHPでは、配列を作る時にいちいち「array」と書く必要があり、DSL(ドメイン特化言語)を作るには記述が冗長すぎて不向きでしたが、5.4からは配列を [] で作れるようになり、DSLを作りやすくなりました。
そこで作ったのが「Paml: というDSLで、配列をHTMLに変換してくれるものです。「 PHPは配列とハッシュとの違いがないのが便利」とのことで、最後には何と配列をLispのソースに変換する「LisPHP: 」を紹介し、会場の爆笑を誘いました。
「PHP技術者認定ウィザード」
「初級」と「上級」があるPHP技術者認定試験に、超上級者を対象とした「ウィザード試験」が加わります。しかも受験料は無料! であることを話しました。ただし受験資格として、上級試験合格者であることと、申し込みカテゴリーに関連した1,500字以内の論文を提出して合格することが必要であると説明しました。
カテゴリーは「セキュリティ」「 パフォーマンス」「 フレームワーク」「 インターナル」の4つ。来年4月の募集開示に向けて準備中とのことです。詳しくは、PHP技術者認定機構のサイト をどうぞ。
「Sismoを使ってみる」
CI(継続的インテグレーション)ツールのSismoは、PHPで作られていて導入が簡単です。
config.phpを編集してGitHubの場所を指定し、ビルドしてみるデモが行われました。続いて、わざとテストを失敗してみるデモに入りましたが、あえなく時間切れ。「 とにかく便利なものなので、使ってみてください!」で聴衆を笑わせていました。
「古いシステムを移行せよ!その危険な落とし穴」
PHP 5.1.6とSymfony 0.6.3で動いてたシステムをPHP 5.3へ移行した経験談です。
Symfony 1.x以前ではテンプレートに値を渡す方法は2つあり、そのシステムでは「ものぐさ」な書き方である「$this->foo = 'bar';」の構文が使われていました。ところがこの方法は、$fooというメンバー変数がアクションクラスに定義されていると動きません。PHP 5.1.6ではなぜか動くのですが、PHP5.3.3では動かず、膨大な修正を余儀なくされたという話でした。
「Symfony2 HTTP キャッシュ」
「色々なPHPフレームワークのパフォーマンスを比較 - cakephperの日記(CakePHP, MongoDB) 」の図を引用し、Symfony2でHTTPキャッシュを使う方法について説明しました。
実はSymfony2にはリバースプロキシが組み込まれているので、キャッシュカーネルを有効にした上で、キャッシュを有効にするコントローラーでResponseにキャッシュプロパティをセットするだけで共有キャッシュが動作するとのことです。「 HTTPキャッシュを積極的に使いましょう」の一言で締めくくられたLTでした。
「いろんなクラウドをくらべてみたよ」
mixiアプリを公開するに当たり、インフラはクラウドを使おうと思っていろいろ調べた結果、ニフティクラウドを選んだらリリース後に火を噴いたと言います。原因はクラウドのハードディスクが遅すぎたことでした。
bonnie++を利用していろいろなクラウドサービスでのランダム書き込みの速度を計測してみたところ、GMOアプリクラウドが一番速かったそうです(グラフ ) 。理由は、物理ハードディスクをアサインしているからで、ほかにはFreeBitもこの形式だとか。「 SSDをアサインしてくれればもっと速くなるはず。誰かやって!」とのお願いもありました。
「闇鍋的PHP魔改造」
Pure PHPはいじる所が少なそう、PECLは内部実装が分からない。でもコンパイラの知識はある。そこでPHP 5.4 alpha3のコードを10日間かけてmakeを100回以上実行して改造して作ったのが、日本語プログラミング言語「ぺちぺち」です。functionは「関数」 、{ と } は「ここから」と「ここまで」のように、あらゆるキーワードを日本語化したPHPのデモは、会場を爆笑の渦に巻き込みました。$_GET['y'] は日本語化されていないことにまた会場から笑いが。内部構造を知らなくてもここまでの改造ができることに驚かされました。
「Cakeときゅうりの美味しい関係」
RubyのBDD(ビヘイビア駆動開発)フレームワークにCucumberがあり、PHPにはBehatがあります。このBehatをCakePHPから使うプラグイン、CakeBehat の紹介とデモを行いました。
CakeBehatではCakePHPの機能も利用可能で、さらにはCakePHP 2.0化にあわせてCakeBehatもプラグインになる予定とのことです。
「クライアントサイド PHP AV 拡張」
PHPカンファレンス2010のLTで、PHP4用だったPHPOpenGLをPHP5で動くようにした話をしたよやさんが、今年はPHPOpenGLをWindowsで動かし、PHPOpenALも一部機能をWindowsで動かした話をしました。
WindowsでPHPをビルドする際の注意点 として、ヘブライ語のコメントなどはアルファベットに変換することなどを挙げていました。
デモ機がうまくプロジェクターに繋がらなかったため、デモ画面を見ることはできず、客席からは音が聞こえるだけでしたが、LT司会の小山さんが後ろから覗き込んで「おー、動いてる」と説明。「 音、聞こえますよね?」と客席に質問した瞬間にドラが鳴ってしまいました。
「バグ発見ツールPHPBugsのご紹介」
「バグとカレーが大好物」と自己紹介するhnwさんは、bugs.php.netで18件のバグ報告をしてきました。
PHPでよくあるのは、extractやstrip_tagsなど「素人お断り」の関数や引数、== や参照などの挙動の推測が難しいこと、PHPそのもののバグ修正や仕様変更などで、「 その書き方は危険だよ」というものが多いという指摘です。そこで、PHPのプログラムをPHP本体と同じ字句解析・構文解析にかけてバグ候補を指摘し、PHPコードでバグ候補が登録できるツールを作った……という妄想だったのさ、の一言で会場がどっと沸きました。
もっとも、コアになるクラス群はすでに作ったそうなので、リリースが楽しみですね。
「大規模開発でのPHP 光と闇」
某人気Webサービス開発現場で実際に起きた経験談をLTで話しました。
2年前は5人で開発していたこのサービス、今はコード規模が43万行にまで育ち、20人以上が携わっているそうです。
開発規模が大きくなるにつれ、コア情報をarrayで管理していたものが肥大化してvar_dumpの結果が画面に収まらなくなり、Viewが複雑化してあるかないか分からないパラメータが出てきたと言います。「 開発規模が大きくなると、まずいと言われている概念は本当にまずい」「 優秀なコーダーが揃っていてもダメ」という現場発の話は、説得力があります。
とにかくシンプルにすること、多くの場所から使われるデータはarrayではなくclassにすること、経路依存性は狭い場所に押し込めることなどのアドバイスで締めくくりました。
「Ethna Update」
去年のPHPカンファレンスの「フレームワークアップデート」で、Ethnaの公式マスコット「えすにゃん」がコミケデビューした話をしたら、今年は「フレームワークアップデート」に呼ばれなかった、という冗談で会場を和ませました。
現在、PHP5.3対応プラスアルファのバージョン2.6が開発中です。グリーが2.6 Beta2を使っていると聞いたので、今年の12月に2.6正式版をリリースしたいと話していました。
クロージング
本イベントの最後に、実行委員長である、ゆどうふさんがクロージングの挨拶をしました。
懇親会
本イベント終了後、同会場にて懇親会を催しました。歓談を楽しみながら、デモのリベンジやLT、スポンサーからいただいた物品を景品としたじゃんけん大会などが行われていました。