第34回PHP勉強会で話してきました

金曜日のCakePHP勉強会に引き続き、第34回PHP勉強会に参加し、発表もしてきました。


Ustreamにて録画した映像が見れます。
http://www.ustream.tv/channel/php-study0806
録画してくださったyandodさんありがとうございます!

アプリを作り出す前に

発表者:id:maru_cc 私です。
ひとつは、プログラムが少し書けるようになった人が次のステップとして、意識していってほしいところと、
もうひとつは、実際にいま困っているバージョン管理からのデプロイ方法について。

前半はちょっと当たり前すぎたかなぁ。
後半は実際に行っている方法とかをできるだけ具体的に出せればと思いました。どのくらい伝わったかな。
資料は、ちょっと準備不足でしたが、話したかったことは話せたと思います。


以下にスライドアップしました。
http://docune.jp/doc/5642

スライドに書いてなくて話したことがあったりしますので、別途エントリをあげて細かく書きたいと思います。


終わった直後の休憩中に、デプロイ方法や開発環境などについて、話ができたのがよかったです。
その時は時間がなくて後でとなってしまったのに、懇親会でもっと突っ込んで話ができなかったのが悔やまれます。
また、次の機会やほかの場所でも、もっとほかの人が考えていたり行っている方法を聞いてみたいと思いました。

PostgreSQLで日本語全文検索

発表者:id:kaz_29さん
PostgreSQLは使っていないので、細かいところがわかりませんでしたが、実際に日本語全文検索で結構実用的な数値が出ていました。
なんか、そのまま過去ログ検索サービスにしちゃえばいいんじゃないかな?


あまり全文検索が必要な要件が無いので、追っかけていないのですが何かできそうですね。

ちょっと極めるXML on PHP5

発表者:id:sotarokさん
実際のサンプルを交えながらの、XMLphpで扱う時の方法など。
10M超のXMLとかは、さすがに扱ったことないのですが、そういう需要もあるのだなぁと思いました。


SimpleXMLの方が、使いどころは楽だが、最初にパースする分、動きだすまでに時間がかかるという点と、メモリを食うというのは参考になりました。
XMLReaderのところの説明で、ちょっと「ん?」と思ったところ。

このスライドの説明で、以下のようなプログラムを実行して結果を示していました。
ここでは、id:sotarokさんが書いていたテストコードから、各値を表示するのに echoからvar_dumpに書き換えています。

<?php
$xml = new XMLReader;
$xml->open("rss2.xml");
$i = 0;
while ($i++ <= 4) {
    $xml->read();
    var_dump($xml->nodeType);
    echo " : ";
    var_dump($xml->name);
    echo " : ";
    var_dump($xml->value);
    echo "\n";
}


サンプルとして出しているXML

<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xml:lang="ja">
    <channel>
        <title>GRANADA Hatena @ sotarok</title>
        <link>http://d.hatena.ne.jp/sotarok/</link>
    </channel>
</rss>

XMLの構造を壊さない範囲で、要素を省略しています。


結果

$ php test.php
int(1)
 : string(3) "rss"
 : string(0) ""

int(14)
 : string(5) "#text"
 : string(5) "
    "

int(1)
 : string(7) "channel"
 : string(0) ""

int(14)
 : string(5) "#text"
 : string(9) "
        "

int(1)
 : string(5) "title"
 : string(0) ""

これは、id:sotarokさんが書いているのと同じですが、間の、Significant Whitespaceノードの説明の仕方が少し違うかな?と思いました。


たとえば、このXMLのタグ間の改行とインデントのスペースを取り除いて実行してみます。

<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xml:lang="ja"><channel><title>GRANADA Hatena @ sotarok</title><link>http://d.hatena.ne.jp/sotarok/</link></channel>
</rss>

これを同じスクリプトにかけてみると、

$ php test.php
int(1)
 : string(3) "rss"
 : string(0) ""

int(1)
 : string(7) "channel"
 : string(0) ""

int(1)
 : string(5) "title"
 : string(0) ""

int(3)
 : string(5) "#text"
 : string(24) "GRANADA Hatena @ sotarok"

int(15)
 : string(5) "title"
 : string(0) ""

間の改行とスペースのみの値がなくなりました。
というわけで、こんな感じの図の方がイメージに近いかなーと思います。

LT:動かしてコードの流れを追う

発表者:shin1x1さん (http://www.1x1.jp/blog/)

神LTでした!
面白かった!!

「プログラムは思った通りに動かない。書いた通りに動く
ソースのどこかに書いてあるはず!」
名言です。
変な挙動や意図しない動きをしている、または、どしてそう動くかわからないなど、必ずどこかに原因があります。
場合によっては、サーバや設定、その他別の要因の場合もありますが、再現が簡単にするかは別として必ず原因がどこかにあるはず。

debug_print_backtrace_source は知りませんでした。
かなりよさげ。


PHP本体にパッチを当ててのコードログ すばらしすぎます。
オチは XDebugで出来るという話になっていましたが、それでもすごすぎます。

LT:DBセッションについてgdgdですが。。。

発表者:gusagiさん (http://www.gusagi.com/)

DBセッションを使うための方法について。
個人的にはすでに使用している技術なので、目新しさはありませんでしが、これから使う人には参考になる発表だったのではないでしょうか?
惜しむのは、字が小さくてちょっとUstreamだと辛いことでしょうか。
あと、コードの表示が早くて、わかっている人じゃないと、ついていけなかったように思います。。

LT:ProjectZeroでPHP

発表者:nemo_kazさん (http://twitter.com/nemo_kaz/)

スライドの文字がかわいかった
あと、テンポが良くておもしろかったです。

内容については、ちょっとそもそもがよくわかっていなかったので、今度使ってみようと思います。

懇親会

id:Yudoufuさんが幹事をしてくださった懇親会。
韓国料理のお店でした。
人数が多く、全員とは話せませんでした。。
懇親会の出席率多いですね。時間がはやかったせいもあるのかな。


途中、PHPユーザ会をどうするかという話になったりとか、いろいろ話しました。

やっぱり、懇親会でいろいろな人と話すのが楽しいし、刺激になります。
最近は、勉強会が埋まるのが早いので、別の会場でUstraem聞いて、懇親会から合流とかどうだろうとか話してました。

二次会

えーっと、どこに行ったっけかな?
たしか、前日のCakePHPの懇親会のお店だったと思います。

記憶がCakePHPの懇親会とごっちゃになって、何話していたのかよく覚えていません (^^;

三次会

和民に移動して、結局朝の5時過ぎまで、あれやこれや話していました。
月宮さんをまじえた教育の話はとても実があり、すごいおもしろかった。
これだけで、勉強会かカンファレンスのコンテンツになるのではないだろうか?


なんだかんだいって、6時半ぐらいに家に帰ってきました。
最近忙しく、どたばたしていたのですが、充実した週末を過ごせました!

最後に

今回も場所を提供してくださった、株式会社トライコーンさまと、suzukiさんありがとうございます!
あとあと、司会進行の id:cocoitiさん
Ustreamの配信をしてくださった yandodさん
ありがとうございました!