PHP Matsuri 2011 レポート

PHP Matsuri 2011 ハッカソンレポート

10月15,16日の2日間にわたり、大阪市港区のホテルコスモスクエア国際交流センターにおいて、PHP Matsuri 2011 in Osakaが開催されました。

セッション・ワークセッションレポートの前編に続き、後編となる今回は2日目に行われたLT大会を中心に、ハッカソンの模様をレポートします。

そもそもハッカソンとは?

PHP Matsuriのメインイベントであるハッカソンとは、"Hack"と"Marathon"を合わせた造語で、プログラマが集まり一緒にプログラミングなどのハックをして楽しむイベントです。和製英語ではなく、世界的に使われている言葉なんだそうです。

ハッカソンの様子

PHP Matsuriでは、セッションやワークショップへの参加は自由です。そのため、どちらにも参加せずに黙々とハックを続ける参加者もいたようです。

会場の片隅で黙々とハックする参加者
会場の片隅で黙々とハックする参加者

今回はセッション・ワークショップともにプロジェクタを使用していたため、1日目の早い時間から会場は照明を抑え薄暗い状態になっていました。そのためか、会場はまるで夜中にハックしているかのような雰囲気に包まれ、リラックスして作業に没頭できた参加者の方も多かったのではないでしょうか。

床に座って考え込む姿も…
床に座って考え込む姿も…

そしてPHP Matsuriの一番の醍醐味と言えば、なんといっても徹夜のハッカソンではないでしょうか。

参加者の中でもハッカソンイベントに慣れている方は、事前準備を万全にした上で当日は仕上げだけで済ませていたようですが、特にハックのテーマを用意していなかった方でも、会場の雰囲気に背中を押されて何かをハックしはじめてしまい、気がつくと朝方になっていた…ということが起こるのがPHP Matsuriです。

もちろん、今年も例外なく徹夜ハッカソンは行われました。数名の方は一睡もせずに2日目の朝を迎え、さらに半数近い方がごく短時間の仮眠だけで済ませてハックに没頭されたとのことです。

午前3時ごろの会場の様子
午前3時ごろの会場の様子

Titanium Mobileの増井さんは参加者と交流しつつ、イベント会場の様子を1時間ごとに定点観測した写真をTwitterにアップロードするという面白い試みを実施していました。また、Garrettさんは深夜遅くにコンビニでアイスを買ってきて参加者に配るなどの気づかいもあったとのことです。他のゲストの方々も朝方まで会場に残り、参加者からの質問に答えたり歓談したりと、ハッカソンは大いに盛り上がりました。

朝方になっても起き続けるGarrettさんとGrahamさん
朝方になっても起き続けるGarrettさんとGrahamさん

41名参加の大LT(ライトニングトーク)大会

2日目のメインイベントは、各々がPHP Matsuriにおけるハッカソンの成果を発表する大LT大会です。

今年は昨年を上回る41名が参加し、持ち時間の3分を余すとこなく使って壮絶なLTを繰り広げました。その中で見事ハッカー賞に輝いたのは、⁠CakePHP2.0でAndroidアプリ」という発表で会場を沸かせた@s_kozoさんでした。

ハッカー賞の賞品はiPad2でした
ハッカー賞の賞品はiPad2でした

その他に、Titanium Mobile賞として「電源検索Lite」の@mogyaさん、CakePHP賞として「ExtJS Plugin for CakePHP2.0」の@kaz_29さん、Lithium賞として「li3_wordpress」の@macstarさん、Symfony賞として「いろいろ通知サービス」の@tejimaさんがそれぞれ選ばれました。

また、各賞の次点賞などで多くの人が選ばれる結果になりました。

残念ながら今回は表彰されなかったみなさんの発表も素晴らしいものでしたので、以下に簡単にご紹介します。⁠発表順、名前はTwitter ID)

@nojimageさん「CakePHP Pluginを2.0対応しました」

自作のCakePHPプラグインをCakePHP2.0に対応させたそうです。また、その代表作として、簡単なコマンドでCakePHPのプロジェクトを生成することができるKickstartというプラグインを紹介していました。

@s_hagiwaraさん「Csv-Combine-Plugin」

CakePHP1.3と2.0に対応した、CSVを簡単に扱うことができるプラグインを作成したそうです。野球ファンということで、野球に関するデータを使ってデモをされていたのが印象的でした。

@k1LoWさん「Calendar Plugin」

iCalendarの規格であるRFC2445に対応したCalendarを表示、操作できるプラグインを作成したそうです。なんと1日で240ものテストケースを実装し、すべてパスできたとのことで大変驚きました。

@NEKOGETさん「自分用まとめサイトを作ってみた」

動画アップロード職人をしているが、いろいろな動画サイトにアップした動画を管理するのが面倒なので動画まとめサイトに挑戦したそうです。完成には至らなかったそうですが、今後も開発を続けていくとのことでした。ご本人はなんと、Macbook Pro 15インチとiPadとペンタブレット(!)という重装備で参加されており会場を驚かせていました。

@brtriverさん「Customize the route compiler for Silex」

Symfony2のComponentを使用しているマイクロフレームワークであるSilexをカスタマイズされたそうです。SilexのRouterに新機能を実装したそうで、Silex作者であるFabienさんにアドバイスをもらうなどの貴重な経験ができたそうです。

@yohxxさん「TIと忍者と私」

Titanium Mobileを使いバスケットボールのスコアをつけるアプリを作成したそうです。一通りの動作を実装したようですが、デモに失敗してしまいながらも参加者の笑いを誘っていました。

@withelmoさん「CakePHP Bake Templatesで楽する」

CakePHPの自動生成用テンプレートをカスタマイズし、画像アップロード可能な確認画面付きの登録画面を自動生成するデモを行いました。開発プロジェクトなどでありがちな機能を簡単なコマンドで生成できるという実用的なハックでした。

@kazuhiro_kondoさん「ピュアを目指して頑張ってみた」

CakePHPやSymfonyなどのフレームワークを使った発表が多い中、フレームワークに頼らずにアクセス解析ツールを作成したそうです。⁠PHPを愛しているんだ!」という台詞が印象的でした。

@hyoshiokさん「Titanium SDKをUbuntuにインストールした」

ゲストであるよしおかさんは、Titanium SDKをご自身のUbuntu Linuxにインストールするまでの紹介を行いました。画面がプロジェクターに表示できないトラブルに見舞われながらも、最後はマイク片手にトークのみで会場を沸かせていました。

@mon_satさん「MontBlancSucks」

ご自身が中心となり活動しているモンブランサックスというチームと、そこで運営しているtipshare.infoというサービスの紹介を行いました。曰く、"モンブラン"とはCakePHPで書かれたスパゲッティなコードを指すそうです。

@u_matumotoさん「PHPで人工無能を作る」

Mecabによる形態素解析とマルコフ連鎖アルゴリズムを用いて人工無能を作成されたそうです。言葉に意味を持たせる機能は実装していないそうですが、この人工無能がクスリと笑えるフレーズを生成していたのが印象的でした。

@tumfさん「PHP Matsuri 2011 demo?」

ご自身が運営されているPHPer.jpというPaaSサービスのログビューアを実装し、余った時間でCakePHP2.0とOpenPNE3.6の動作確認をしたそうです。インフラ運営者ならではの視点でCakePHPやSymfonyの設計について考察されていたのが印象的でした。

@s_kozoさん「CakePHP2.0でAndroidアプリ」

CakePHP2.0の自動生成機能を拡張し、Androidアプリ用のJavaソースコードを自動生成する機能を実装したそうです。また、Titanium Mobile用のJavascriptソースコードを自動生成する機能も同時に実装したそうです。その斜め上を行く発想で、会場を大いに沸かせていました。

@kiyotuneさん「Titanium Mobileを使った写真共有アプリ」

Titanium Mobileを使い、撮った写真をWEBにアップロードするアプリに挑戦したそうです。完成には至りませんでたが、Twitter連携のためのXAuth認証に成功するところまでをデモしていました。

@hiromi2424さん「CakeWebSocket」

node.jsやSocket.ioの流行などにより話題になっているwebsocketの技術をPHPで使うためのハックをしたそうです。PHP WebSocketというライブラリをCakePHPに組み込み、CakePHPによる通常のWEB開発と同様のコードでWebSocketを使用できるようになったとこのことでした。時計を気にして息を切らしながら早口でプレゼンする姿に、会場は笑いに包まれました。

@harisenbon79さん「ABTestシンプルプラグイン」

ABテスト(スプリットテスト)をシンプルに実行できるCakePHPプラグインを作成したそうです。⁠シンプルとは単純という意味ではなく、素早く導入することができるという意味です」という言葉が表すように、充分な機能を素早く使えるプラグインに仕上がっていたように思います。

@yandoさん「NyanCat for Candycane」

ruby on rails製のプロジェクト管理システムであるRedmineのCakePHP製クローンであるCandycaneのプラグイン管理システムを作成されたそうです。ディレクトリにアップロードするだけでプラグインを読み込む仕組みが一通り動作するようになったので、今後も改善を進めていくとこのことでした。

@atakigさん「Excel脱出計画」

Excelで管理されているレガシーな開発において、Excelから脱出するための議事録当番表システムに挑戦されたようです。Lithiumに挑戦したとのことですが、rubyの開発環境が競合してしまうといったトラブルに見舞われ完成には至らなかったそうですが、Lithiumが気に入ったので今後も使ってみたいとこのことでした。

@hidenorigotoさん「BEHAT TEST RUNNER ON STAGEHAND_TESTRUNNER」

STAGEHAND_TESTRUNNERというテスト支援ツールを拡張し、Behatというテストフレームワークを自動実行することに挑戦したそうです。まだ作成途中なので動作が不安定だということですが、ファイルを保存すると自動でテストが実行される様子をデモしていました。

@msuzuuukiさん「IT勉強会カレンダーをPHPを使って整形」

IT勉強会カレンダーがgoogleカレンダーそのままだと見づらいので、PHPを使ってhtml出力して整形表示してみたそうです。一般的なPHPのWEBアプリとはひと味違い、googleカレンダーからデータを取り込み静的なhtmlファイルを出力するPHPプログラムでした。

@jiskanuloさん「symfony1.4で使う国土地理協会の住所データを読み込むプラグインを作ってました」

仕事が終わらず会場で仕事をしていたという@jiskanuloさんは、国土地理協会の住所データを読み込むプラグインを作ったそうです。ソースコードも公開するとのことでしたが、実はこのデータは有料だったというオチで会場を沸かせていました。

@kunitさん「Cakeを試食する」

Facebook社が公開しているPHPのインタラクティブシェルであるphpshを使い、CakePHPの各機能をインタラクティブに使用するためのプラグインを作成したそうです。phpsh上でCakePHPのクラスをロードするなど実用的なデモが印象的でした。

@tejimaさん「いろいろ通知サービス」

OpenPNEから、Twitter,Facebookや携帯電話などいろいろなものに通知するサービスを作成されたそうです。WEB APIからSMSを送信するサービスや、電話を呼び出すことができるサービスなどいろいろなことに挑戦されたそうで、実際のデモではiPhoneが繰り返し鳴り続けました。

@ooharabucyouさん「Sismoをいじくる」

sensio labsが公開しているCIサーバーであるSismoに、メール通知機能とTwitter通知機能を追加されたそうです。発表の時点ですでにGithubに公開してあり、誰でも使うことができるようになっているとのことでした。

@tenkomaさん「深夜のPHP Golf Matsuri」

プログラミングの練習問題などで有名なFizzBuzz問題が少し変化した、FibBuzzという問題でCode Golfに挑戦したそうです。ファイル末尾の改行コードを削るなどの工夫で、結果的に92バイトまで削ることができたそうです。

@remoreさん「Ajaxを使った庶民的で実験的なスライドショーのデモ ※WebSocket不使用」

Ajaxを使い、複数端末間で同期を取りながら動作するスライドショーを実装されたそうで、複数のノートPCやiPhoneのブラウザなどで同期して同じ写真を再生するスライドショーのデモを行いました。徹夜で開発した感想も発表しており、深夜の会場の様子を紹介し会場を沸かせていました。

@saito_jpさん「rebuild style_of_me」

WEB開発の初心者であるという@saito_jpさんは、PHP Matsuriの感想を発表されていました。今自分が置かれている開発環境の危うさを改善するためにPHP Matsuriに参加されたそうで、テスト駆動開発やバージョン管理システムなどたくさんのことを学ぶことができたそうです。

@kaz_29さん「ExtJS Plugin for CakePHP2.0」

ExtJSというリッチなUIを提供するJavascirptライブラリを組み込んだ画面をCakePHPで自動生成するプラグインを作成されたそうです。生成された画面はAjaxを使ったリッチなUIとなっており、ぜひとも使ってみたいと思わせる発表であったように思います。

@j_nakadaさん「PHP拡張モジュール使ってみた」

C言語で書くPHPの拡張モジュールに挑戦し、円周率を計算する拡張モジュールを作成したそうです。実際に作ったモジュールで円周率を計算したところ、PHPでは42秒だったのに対し拡張モジュールでは1.8秒で終わるなど20倍程度高速化したとのことでした。また、さらに調べるうちにPHPの標準関数であるsubstr関数の高速化にも成功したそうです。

@mugesoさん「HadooPHPをクラウドで動かす」

会場のネットワーク環境に悩まされながらも、HadoopをPHPから使うためのHadooPHPをさくらのクラウドで動かすことに挑戦したそうです。クラウドによる分散処理には失敗したものの、1台のサーバーで動作させることには成功したとのことでした。

@sizuhikoさん「Cakeときゅうりの美味しい関係」

PHPのBDDフレームワークであるBehatをCakePHPに組み込むプラグインであるCakeBehatをCakePHP2.0に対応させたそうです。Ruby on RailsのCucumberのように、CakePHPの振る舞いテストを自然言語に近い形で記述できるCakeBehatは非常に実用的かつ必要とされているものだと思いました。

@macstarさん「li3_wordpress」

Wordpressやjoomla、drupalなどのユーザーベースCMSに悩まされていたという@macstarさんは、LithiumにWordpressを組み込むli3_wordpressというプラグインを開発したそうです。まだ未完成ながらも、WordpressとLithiumの画面が上手く統合されたデモを行いました。これが完成すればCMSのカスタマイズが必要な箇所だけLithiumで実装することができるようになるそうで、その思いに会場中が共感していたように思いました。

@JP_tomoさん「li3_docsを使ってみた。」

Lithiumのドキュメントを生成するライブラリであるli3_docsでCakePHP2.0のドキュメントを使ってみたそうです。LithiumにライブラリとしてCakePHP2.0を組み込むことで、不完全ながらもCakePHP2.0のドキュメントを表示することができたとのことです。

@papettoTVさん「webと、こたつ」

CakePHP2.0に挑戦したが上手く動作しなかったそうで、急遽自宅のこたつの電源の話をしていました。こたつの電源スイッチに「入」と表示されている時に、それが状態と動作のどちらを表しているのかわからないという興味深い問題提起でしたが、結論にたどり着く前に時間切れになってしまいました。

@binbin4649さん「ゴトウキンセン?」

Twitterをもっとシンプルにしたい!という考えのもと、Titanium MobileでTwitterをさらにシンプルにするアプリを作成したそうです。画面には喜怒哀楽の4つのボタンが用意されており、それぞれのボタンを押すとその感情と現在位置がTwitterに投稿されるという非常にシンプルなアプリで会場を沸かせていました。

@suzukiさん「CakeEmail Hack」

CakePHP2.0で追加されたCakeEmailというクラスをハックしたそうです。このクラスに以前からあったバグを修正したことと、マルチバイト対応に関してゲストのgrahamさんと相談して仕様の変更を許可してもらったことが今回の成果とのことでした。日本語に関する問題についてコアデベロッパーと直接議論できるというPHP Matsuriならではの成果だったと思いました。

@hamacoさん「Cake2.vim?」

Cake2.vimというvimプラグインを作るつもりでしたが間に合わず、急遽Titanium Mobileで@mon_satさんが運営するtipshare.infoのビューアーアプリを作成されたそうです。Titanium Mobileワークショップで作られたコードを少し変えただけですぐにできたそうで、Titanium Mobileの開発効率の良さを感じ取れる発表でした。

@mogyaさん「電源検索Lite」

モバイラーズオアシスというサイトを運営しており、また電源検索という有料iPhoneアプリも公開されているそうで、今回はTitanium Mobileを使い無料版の電源検索Liteというアプリを作成したそうです。電源の使えるカフェなどを地図上で検索できるという実用的なアプリでした。また、今回のようなデモに役立つAndroid Screen MonitorというAndroidの実機の画面をPCに表示できるアプリケーションがオススメとのことでした。

@gwooさん「ORCHESTRA DEMO」

ゲストであるGarrettさんは、ご自身が勤めるORCHESTRAというPaaSサービスのデモを行いました。3分という僅かな持ち時間の中で、2分半ほどでインスタンスを立ち上げてデモアプリを立ち上げ、残りの時間はノリの良い音楽で会場を沸かせていました。

@sanojimaru(筆者)「わったい菜とはなんだったのか」

私は、自分が所属する「わったい菜」という協賛企業の紹介を簡単に行ったのち、Ruby on Rails向けのpjax_railsという簡単なプラグインをCakePHPに移植したという発表を行いました。3分という短い時間で発表することの難しさを体験できました。

@bash0C7さん「事業変革のためのコード定義と処理系開発」

人の心を動かすためのコードとして、プレゼンテーション用スライドを生成するためのRuby DSLを実装されたそうです。プログラマにとって、Rubyのコードでスライドを作成できるというのは実用的なツールになるのでは無いかと思いました。

ハッカー賞の他にもいくつかの賞がありました
ハッカー賞の他にもいくつかの賞がありました

闇PHP Matsuri

1日目の夜に、闇PHP Matsuriというライトニングトークイベントが開催されました。⁠闇が、また、この世界を、覆い尽くす…」という言葉とともに忍者が会場に現れ、このライトニングトークイベントを取り仕切りました。

忍者の登場に会場は大盛り上がり
忍者の登場に会場は大盛り上がり

"闇"というタイトルが示すように、とてもマニアックなテーマから余所では言えない裏話まで、発表者が自分の中の闇を存分に発表し、大いに盛り上がりました。

ライトニングトークの制限時間である5分を経過するとともに、忍者の手によって発表者が次々と切られていくという演出に、海外ゲストの方々を含めて会場中が笑いの渦に包まれていました。

大活躍のドラ忍者
大活躍のドラ忍者

スイーツ&ビール

1日目の午後には、協賛企業であるわったい菜に提供いただいた大量のスイーツが用意され、参加者はセッションを聞いたりワークショップに参加しながらスイーツを楽しむことができました。

また、2日目のLT大会ではビールをはじめとするお酒が用意され、発表者の中には乾杯の挨拶でライトニングトークをはじめる方もいました。

わったい菜提供のスイーツ
わったい菜提供のスイーツ

まとめ

この2日間は多くのイベントがありましたが、やはりPHP Matsuriの醍醐味は2日目のライトニングトーク大会にあるといっても過言ではないと思いました。

参加者の半数近い41名が次々と自分の成果を発表していくことで、会場中が不思議な一体感に包まれ、とてもエキサイティングな体験を共有することができたのではないでしょうか。

今年は2回目の開催ということもあり、よりハッカソンらしく、一般的なカンファレンス形式のイベントとはひと味違うイベントに仕上がったと思います。

また、闇PHP MatsuriやTitanium Mobileなどの新しい試みがなされ、着実に進化しているという印象を受けました。

多くの人や企業の協力により、来年も絶対に参加したいと言っていただけるような素晴らしいイベントとなったPHP Matsuriの空気感が、このレポートによって読者の方に少しでも伝われば幸いです。

最後に撮影した記念写真
最後に撮影した記念写真

公式サイトにも感想ブログや写真などがまとめてあります。また、セッションなどのの動画はvimeoのPHP Matsuri 2011チャンネルに随時アップロードしていますので合わせてご覧ください。

おすすめ記事

記事・ニュース一覧