続きまして、phpmatsuri2012 のフィードバックでございます。
おまたせいたしました。


* 相棒も一緒についてきました。

3回目の登場

なんだかんだ言って、3回目の登場です。
そして、おおーーー。ことし参加費安いじゃねーか。といってついうっかり「個人スポンサー」になってしまいました。
いや。しかしそれくらい払ってもいいイベントだと思っています。来るゲストはいつもながら豪華だったし、
内容もPHPだけに限らず、本当に幅広いことをやれるイベントだし。

そして、何より phpmatsuri の良さは開催場所の変化なのではないかなと思うわけです。
1回目の東京、そして2回目の大阪では、東京のリピーターと関西の人たちの mix-in が発生するわけです。
そして、3回目は、東京のリピーター・大阪のリピーター、あと九州の人たちの mix-in が起きました。
そして、来週は北海道との噂が囁かれているので、もっと mix-in がおきて、また新しい雰囲気になるのでは
とウキウキするわけであります。
@yando さん曰く、東京に戻った時が怖いかもということですがw

郡山△

郡山△ には合う度に郡山レジェンドを聞いている気がする。
この会も、そんな郡山さんの伝説が聞けるイベントの一つなのです。

“Dis Is It” という過去に行われた PHP Apocalypse というイベントの
キーノートを、さらにパワーアップしてビデオが追加されていました。
おそらく、このビデオはライブでないと見ることができなかったでしょう。
(本人曰く、これにパワーを注いだとかw)
私は、PHP Apocalypse に参加できなかったので、ライブで再び聞くことができてよかったです。


・十分に機能するか
・レイヤー可能か
進歩には漸進的な発展が必要

というのは、PHPという言語に限らず、もっと考えていきたい事ですな。。
郡山さんは、PHPという制約を正しく理解して、最高のものを作っていこうという感じにあふれている印象を
受けました。

闇イベント – レガシー戦隊登場

さて、phpmatsuri に突如去年から始まった夜中のプレゼン大会である
闇イベントが、今年もやって来ました。
今年の闇は、テーマが決まっていて「アン・リーダブルコード選手権」
というものでした。恐ろしい響きだ。

アン・リーダブルの恐ろしさを伝えるべく、結成された「レガシー戦隊レガシーズ」
http://www.flickr.com/photos/sanojimaru/8152331124/

レガシーブルーの人に詳しくお話を聞いたのですが、スライドは出さない
とのことでした。残念ですね!

複数人での開発になった途端、アン・リーダブルコードは生み出されるのでしょう。
脳みそが別物なのですから。早く脳みそのつながるマシーンとかできないかな

とか言ってました。
このようなイベントは貴重です。皆苦労しているのが、すごい伝わりました。

ファミコンゲームのUI研究してるだけなんだからね!!

作業が思ったより進んだのと、開発するパワーがなくなってきたので
夜中はファコミンで遊んでいました。@cakephper さんが持ってきたという
ファコミンソフトだったのですが、どれも中々キワモノが集まっておりました。
ファミコン世代まっただ中というわけではないので、ワリと新鮮です。

中でも、北斗の拳の操作方法がひどかった。
扉の移動方法が A+B+↑。ググってやっと判明wwwww

で、ファミコンをAM1時から4時くらいまでやってました。

今回の成果・大LT大会

phpmatsuri の醍醐味は、最後の大LT大会です。
なんと、今年は50人以上が LT しました。参加者の半分以上なのではないでしょうか。
毎回驚きます。

↓ ちなみに、私はこんな内容でやりました。

1. php-nabeの改良等

php-nabe は phpbrew や phpenv + phpbuild に不満を持ったため、個人的に作っている
phpのビルド、バージョン切替補助用のツールです。
phpのビルド部分は、bash script で書かているため、phpbrew のように php binary 自体を
必要としないこと、また extension のビルド・設定や、composer のインストールなども
補助するということを目標としています。 (最終的には composer.json に書かれた
ext-* を自動導入するような仕組みを作りたい)

今回は、ヘルプ機能をちゃんと動くようにしたり、 php-nabe use の挙動を、
phpunit などのインストールにも耐えられるようにしてみたり、
apt-get などで導入した、php を動かすために php-nabe disable コマンドを
用意してみたりしました。

個人的に作っているだけですが、フィードバックがありましたらぜひお声がけください。
https://github.com/kawahara/php-nabe

2. composer のドキュメント翻訳

Dustin のセッションの中でもありましたが、
composer は、広まるべきツールだと思いますが、日本語ドキュメントはありません。
というわけで、翻訳しています。
今回は、4章をやりました。4章を完成させ、5,6章を完成させればドメインを取るか
getcomposer.org に、日本語版ドキュメントを載せてもらえるよう交渉してみるなどを、
してみようと思います。

翻訳は、こちらです。
https://github.com/kawahara/composer/tree/japanese-doc-progress/jpdoc
手伝ってくれても、いいんじゃぞ!!

composer に関しては、git と一緒に、 XAMPP みたいなツールに乗れば
もっと広まるかなーと感じています。(とはいえ、どこに相談を投げればいいのかわからん
と感じました。)

3. Interactive Keynote の開発

日本の、keynote はインタラクティブ性にかける。ということで、平沢進の
インタラクティブライブに習い、Keynote にストーリー性をもたらすというものを
作っていました。 node.js で作っていますが、 phpjs を導入しているので
phpmatsuri でも問題無いです。

スライドに分岐が出てきたら、聞き手が どちらにするかというのをボタンを
押して決定するというシステムです。ソースコードも公開予定です。

最終的には、「異議あり!」ボタンとか「待った!」というボタンを
クライアント側に実装して、プレゼンの途中でもどんどん疑問をぶつけられる
雰囲気にしたいのですが、カプコンさん素材をクリエイティブ・コモンズにしてくれませんか?

また、「また、Fusic か…。」で、おなじみの、Fusic (phpmatsuriスポンサー) が
「それなんて、 ZENPRE 」という突っ込みをしていました。チャットや顔画面もあっていいですね!

まとめ

というわけで、私の、勝手に取得した秋休みは終わったわけです。
また仕事に戻ることを考えると、夏休みが終わってしまう小学生のような気分です。
今、福岡空港なのですが、間違えて沖縄便に乗りたいです。

投資家なしで、自由な発想でなにかを出していくっていうのは大事だと思うんですよ。
お金も大事だけど、そんなことより人間を幸せにするためにテクノロジーを真剣に考え、笑い合う。
そんなイベントだったと思います。

秋休みです。(勝手にそうしています。)

ただただ休む。というわけではなく、zendon2012 に参加してみたり、phpmatsuri2012 に参加してみたりとワリとちゃんと活動してます。
今日は、phpmatsuri2012 の疲れを回復させるべく、福岡 (太宰府) をブラブラしました。

さて、昨日まで福岡にて、ものすごいエネルギー交換が行われていた「phpmatsuri2012」のフィードバックを
するところでしたが、イベント中 郡山△ に、
ニコニコされながら “zendconのフィードバック書いてくださいよーーーーーー” と言われてしまったので、
phpmatsuri2012 フィードバックの前に先月末に行われた zendcon のまとめを書きますよ!
需要があるかはわかりませんが。

初一人海外

今のところ弊社エンジニアは会社のお金をつかって海外のカンファレンスに行けます。 #ステマ
参加費的にも距離的にもたいへん厳しいので、お金のないワカモノには嬉しい制度であります。
せっかくなので、2012年11月22日 〜 25日に、サンタクララコンベンションセンターで開催されていた zendcon2012 に行って来ました。
社内SNSで、「おまえら行こうぜー」的なことをやったのですが、結局居なかったので、一人で行って来ました!!
結果的に現地では誰も頼れないので、非常に良い訓練になりました。心寂しいこともありましたが、結果オーライです。

行き方メモ (今後サンタクララコンベンションセンターに勢いで行く人のためのTips として残しておく)
成田空港に行く -> ロサンゼルス空港で乗り換え
アメリカ入国では、乗り換えであってもスルーバーゲージ (目的地まで荷物自動転送) ではなく、最初に着いた場所で一旦、入国審査->ピックアップ->荷物再チェックインをする必要がありました。にこやかに無愛想で怖い入国審査官に Good morning!! と挨拶をして、目的と滞在日数を告げ、入国します。さらに、乗り換えてサンノゼ空港まで行きます。サンノゼ空港 (正式名称=ノーマン・Y・ミネタ・サンノゼ国際空港)は綺麗で良さげな空港の印象でした。2013年からは成田空港からの直行便が就航するとのことで 今後はもっと行きやすくなるのではないでしょうか。

VATの10番のシャトルバスに乗る (無料) -> VAT の Light Rail(路面電車)に乗って、Great America駅で下車。どう見ても、コンベンションセンター感が漂う建物が目の前に現れます。
なお、VATの Light Rail は、$2 で、クレジットカードでチケットを買えます。(1day pass=$6 を買うと、バスも乗れるので便利) 改札とかはないので、そのまま乗り込みます。下車の前に運転手にボタン (TAPE) で知らせます。

セッションハイライト

こんなセッションを聞いて来ましたという幾つかのピックアップ (ビデオはないのですが、セッションのスライドがほとんど存在します。)

・Design Patterns Bootcamp – デザインパターンブートキャンプ (1日目チュートリアル)
https://joind.in/talk/view/6857

デザインパターン (デザインの文法) について、Matthew Weier O`Phinney, Enrico Zimuel, Ralph Schindler の3人が教授するというものでありました。実際の実装例を PHP で示してくれたのと、デザインパターンによってZF2で解決した問題についてを聞くことができました。ZF2 でも DDD は鍵になっているようでした。特に、今回の zendcon では DDD の話題が多かったような気もします

・The PHP 5.4 Features You Will Actually Use – PHP5.4 でおまえらが実際に使うであろう機能について
https://joind.in/talk/view/7019

Lorna さんがお送りする、PHP5.4に関するセッション。個人的に、PHP5.4にしたい理由としては

  • PHP5.3 より高速
  • array の新しい書き方サポート
  • JsonSerializable

ってところでしょうか。

・Zend Framework 2 and Symfony2: The Perfect Team - Zend Framework2 と Symfony2: 最高のチーム
https://joind.in/talk/view/7035

Zendの中の人である Enricoさんと、Symfonyコミュニティの中の人である Stefanさんがお送りする内容。「もしかして: 宗教戦争」 と思いきや、PHPフレームワーク会の「国際連合」と表現されていた PHP-fig の登場と、それにより作られたコーディングルール PSR-*。PHPのライブラリの再利用をより機能的に行うことができるエコシステム Composer, Packagist の登場などなどといった、紹介から始まりました。
結果として、ZF2 と Symfony2 は互いの良い部分を互換に使うことができるんだ。という話。
スライドでは、 Symfony2 Framwork 上で ZF2 Library を使う方法、ZF2 上で Symfony2 Component を使う方法が紹介されています。
これを聞いてて思ったこととしては、PHPフレームワークの今後としてはそういったエコシステムの上で、それぞれのドメインにあわせて Library (Component) を組み合わせて使っていくような、雰囲気がどんどん強くなっていくのかなと感じたのであった。

・Behavioural Driven Development with Behat and Zend Framework 2 – Behat と ZF2 で BDD
https://joind.in/talk/view/7391

Behat により BDD (Story BDD) を ZF2 上でやるよ!というお話。
ZF2 上で使う話がメインかとおもいきや、BDDを掘り下げて話していただいたので、非常に勉強になった。
自分の中でBDDの認識を改めさせてくれた。自動化!自動化! と思っていたが、機能の価値・誰の為か・機能の詳細 というものを
しっかり書いていくことの必要性があったなーと自分の過去を反省。
スライドも非常にユーモアがあって、これだけでも非常にわかりやすいのでオススメです。

StoryBDD・SpecBDDの違いについては、 http://www.phpspec.net/ も見てみてください。
// あとで翻訳したいな。この StoryBDD と SpecBDD という言い方自体も Behat|PHPSpec 発のように見える -> 嘘だったらすいません
// 情報ください

まだまだピックアップしたいセッションはあったのですが、疲れたのでここまで。

まとめ

Zend のイベントなので、Zend Framework 使い多かった。次点、Symfony 使いといったところか。
(僕の出たセッションがそういう層ばかりなのかもしれないですが。)
あと、Zendcon で出た昼ごはんうまかったです!!
Zendserver の簡単なチュートリアルをするだけで緑色のphpゾウ (elePHPant) も入手しました。
可愛いですね。PHPのイベントには連れていきますので、お声がけください。

反省としては、もっと自分から話しかけてればよかったなーと。うん。ワリと内容は楽しく聞くことはできたのだけど
日本のセッションイベントにないインタラクティブさにもっと混ざりたいと思ったのである。
あと、会社指定の旅行代理店が用意してくれたホテル (zendconが推奨していたホテルではない)
に泊まったのだが、やはりこういうイベントは(多少高くとも)会場の目の前とか、会場とかのホテルを利用することが重要であると感じた。
なぜかというと、ハッカソンとか夜な夜な開催されているパーティーとかに著しく参加しにくいからである。ハッカソン大事やで。

(写真がないのはすいません。今福岡にいるのですが、デジカメをつなぐケーブルを家に忘れてしまいました。
11inch Mac Book Air はこういう時、SDカードを入れる場所がないので困りますね。
東京に戻ったら、いくつか写真追加します。)

Posted in PHP.

どもー。
かわはらです。

今日は、 Sami を実際に使ってみましたので、紹介します。

Sami は、Fabien がつくった、もうひとつの PHP API document generator です。

最近、このツールを実際に使ってみました。大きな理由としては、
PHP5.2対応のライブラリ (PSR-0準拠) にもバッチリ対応可能だったからです。
それもそのはずで、PHP5.2 にも対応できている Twig の API ドキュメント
これによって作られているわけです。
(ただし、Sami 自体の動作には PHP5.3 以上が必要)

個人的には、 phpDocumentor2 よりシンプルで、導入もしやすくて良しでした。

以下導入法まとめ

事前に、Composer を導入しておきます。
Composer の解説は、こちら。

Sami を入手し、Composer で依存を解決します。

git clone https://github.com/fabpot/Sami
cd Sami
composer update

これで、入手は完了

動くか確認

php sami.php

うごいたお。

試しにドキュメントを作ります。
例では、Twigのドキュメントを作ろうとしています。

Sami でドキュメントを作るには、 PHP の設定ファイルを作る必要があります。
設定ファイルの内容としては Sami\Sami のインスタンスを返すものになります。

<?php

use Sami\Sami;
use Symfony\Component\Finder\Finder;

// 生成対象
$iterator = Finder::create()
    ->files()
    ->name('*.php')
    ->in(__DIR__.'/lib');
;

return new Sami($iterator, array(
    'title'                => 'Twig API',
    // ビルド先とキャッシュ先
    'build_dir'            => __DIR__.'/apidoc/',
    'cache_dir'            => __DIR__.'/apidoc_cache/',
    // 最初にドキュメントを開いた時に、展開している名前空間の深さ
    'default_opened_level' => 2,
    // PHP5.2 スタイルのプロジェクトで _ 区切りの名前空間でドキュメントを作るときは true
    'simulate_namespaces'  => true
));

Sami のコンストラクタの第一引数には、 Finder によって作られた、ソースコードのファイルを取得することができる Iterator か、
または、単純に *.php が入っているディレクトリ名を指定します。

第二引数は設定です。(コメント行参照)

最後に、ドキュメントを生成します。

php /path/to/sami.php update 設定ファイルのパス

これにより、指定した場所にドキュメントができあがります。
かんたん!

他にも、テンプレートをカスタマイズする Twig が書けたり、
設定にバージョン管理周りの設定などを書くこともできるようなので
機能としては十分な気がします。

Posted in PHP.