hnwの日記

第六回闇PHP勉強会の発表資料まとめ

昨日11/22(日)に第六回闇PHP勉強会が開催されました。PHPの勉強会なのにPHPのコードが全部で10行も登場しないという毎度おなじみの展開でしたが、たくさんの方にご参加頂きました。本当にありがとうございました。


では、発表を順に紹介します。

@hnw 「OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた」


まずは僕の発表からでした。PHP7からの新機能であるOPcacheのファイルベースキャッシュについてソースコードを交えて仕組みを紹介しました。本機能について、個人的には若干ネガティブに見ていますが、今後「こういう状況では確かに便利だ」という事例が出てくれば判断も変わると思います。

@noldorinfoさん「SQLite2と3のエスケープ関数の違いとその対策」


SQLite3のエスケープ関数がSQLite2のものと実装が変わっており、バイナリアンセーフになっていて移行が面倒だった、という話題でした。概要だけ聞くと「???」という気分になるんですが、スライドを見ればなるほど、という感じの内容です。色々な意味で闇が深くて面白い内容でした(そもそもSQLite2の実装が闇っぽい)。

@do_akiさん「php7's ast」


PHP7でプログラム解釈時に構築される抽象構文木(AST)を可視化してみよう、という話題でした。僕はPHP7のASTはopcode構築前に捨てられてしまい取り出せないと思っていましたが、フックポイントが用意されているので適宜ASTをコピーしておけば後から利用できる、ということでした。なかなか夢が広がる話ですね。

@rskyさん「php-mecabをPHP7に対応させた話」

自作のPHP拡張モジュールをPHP7対応にする、という話題でした。


発表の最初で「PHP5とPHP7両対応の拡張モジュール書くのは無理、ブランチ切ろう」って話題がきたのが個人的にはツボでした。実際、大半の拡張モジュール作者が同じ判断をしているようで、大抵の人が別ブランチでPHP7対応している状況です。


クラスのインスタンス化関数がPHP5ではzend_obejct_valueを返していたのがPHP7ではzend_object *になったよ、のような移行のポイントをいくつか紹介されていて、これからPHP7対応する人の参考になる内容だったと思います。

@yoyaさん「SWFEditorのPHP7対応」




こちらも自作のPHP拡張モジュールをPHP7対応にする、という話題でした。一晩でだいたい対応できたとのことで、凄いですね!


@yoyaさんも1つのソースコードでPHP5/7両対応の拡張モジュールを書くのは無理と判断したものの、autoconfでコンパイル対象ファイルを切り替えて使うことで1パッケージでのPHP5/7両対応を実現していました。これは拡張モジュール開発者が参考にすべきテクニックだと言えそうです。


PHP7になってあちこちでzvalのポインタの段数が変わった話や、zend_string化されて引数の個数があちこち変わった話など、移行時の苦労も紹介していただきました。


@rskyさんも@yoyaさんもそこそこPHP7対応に苦労したと思うんですけど、その割に「PHP7になって拡張モジュールが書きやすくなった」という意見で一致していたのは印象的でした。

@strysdさん 「Zend Framework 3 と Zend Expressive の話」


ZendCon 2015の発表を紹介するプレゼンでした。Zend Framework 3では疎結合化・高速化・ドキュメントの充実といったところを目指すということで、昨今のフレームワークの流れを取り込んでいくのかなという印象を受けました。

感想など

まずは無事に勉強会が終了してホッとしています。僕自身は慣れない幹事業で、他の勉強会に比べると不備も多いなーと一人反省しておりますが、次回以降より良い勉強会にしていきたいと考えています。引き続きよろしくお願いします。


ちなみに、当面は半年に1回開催を目標にするつもりです。ゆっくりすぎますかね…?