y_uti のブログ

統計、機械学習、自然言語処理などに興味を持つエンジニアの技術ブログです

PHP Conference 2015 に参加

PHP Conference 2015 に参加してきました。今年は 2000 人を超える参加登録があり、会場の大田区産業プラザ PiO を貸し切っての開催だったようです。PHP の生みの親である Rasmus Lerdorf 氏をはじめ海外からの招待講演も多数あり、何を聴こうか直前まで悩んでいたのですが、純粋にタイトルで興味のある発表を選ぶという方向で、結局すべて国内の方の講演を聴くことにしました。phpcon.php.gr.jp

以下、参加した各セッションの感想などを書いてみます。

PHPの今とこれから 2015

www.slideshare.net

オープニングセッションは PHP7 の話題が中心でした。最初に会場に向かって、現在使っている PHP のバージョンを尋ねる質問がありましたが、やはりそれほど新しくはないようです。私は最近プライベートでは PHP7 しか使っていないのですが*1、仕事ではなかなかそうもいかないのでしょう。

PHP7 との比較として HHVM についても触れられました。HHVM もまだまだ高速化を頑張っていて、PHP7 より 10% から 20% ほど高速だということです。私の経験でもその程度の違いだという印象ですが、このくらいの差をどう思うかはそれぞれでしょうね。私は、2 倍 3 倍違うならともかく、この程度の差なら PHP から移行するほどのことはないかな、という思いを持っています。

Composerではじめるアプリケーション開発

speakerdeck.com

Composer について比較的入門的な内容の発表でした。とはいえ私は前提知識がほとんどなく、これまで何となくパッケージ管理システムとして Composer を使っていた程度だったので、composer init で対話的に composer.json を生成できることや、composer update の引数にパッケージ名を指定して個別に更新できることなど、今さら情けない話ですが大変参考になりました。

おそらく、こういった内容はちょっとドキュメントを読むなどして調べればすぐに分かることなのでしょうが、特段の興味がないことはなかなか調べないもので、そういうことを知る機会を得られるのが勉強会に参加する意義なのかなとも思います。思えば昔は make を実行して数十分というのはざらで、逆にそういう経験が染み付いているので、composer update して終わるまでコーヒー休憩という状況に今まで疑問を感じていなかったのかもしれません。反省しなければいけませんね。

超高速WordPress~PHP7 vs HHVM vs PHP5.6

www.slideshare.net

業務として大量のアクセスをさばく必要のある環境で、PHP 5.4*2での実行から始めて、キャッシュの導入、PHP7 や HHVM への置き換えといった手段でどんどん高速化されていくという話でした。私は、昨年は HHVM に興味を持って試してみたりしていたのですが、PHP 7 でも高いパフォーマンスが得られる状況になってから、そちらの方が手軽だということもあって HHVM を触らなくなっていました*3。この発表で HHVM にも再び興味が出てきました。

発表では、WordPress を題材にした処理時間が比較されていましたが、こういった大きなアプリケーションでの結果を見ると、結局何が要因なのかが気になってしまいます。PHP のウェブアプリケーションの場合は、大抵はフレームワークのコードが巨大だと思いますので、まずは APC, OPCache といった仕組みで高速化されるだろうことは想像できるのですが、そのうえで PHP7, HHVM にすることでさらに高速化されると、何が効いているのかをもっと詳細に知りたくなります。

なお、発表スライドでは PHP7 での結果として RC4 での実行時間が示されていましたが、これは 10/1 にリリースされたばかりで、その環境での結果が早速スライドに反映されている点は見習いたいですね。私などは「RC4 が出ていますが今回は RC3 での結果です」とお茶を濁してしまいそうです。

Hack言語に賭けたチームの話

www.slideshare.net

この時間帯は Rasmus Lerdorf 氏の基調講演と重なっていて悩んだのですが、やはり Hack 関連の話を聴きたいと思ってこちらに参加しました。一年遅かったら PHP7 にしていたかもしれないというのは共感できます。これは邪推なのかもしれませんが、逆に、HHVM が話題になっていなければ PHP7 の開発もこれほど早く進むことはなかったのではないでしょうか。

発表でも述べられていたように、Hack/HHVM については、まず PHP 互換の高速な VM として HHVM が話題の中心になってしまいましたが、Hack というプログラミング言語自体もとても面白いと思っています。私は、ある程度以上の規模では静的な型システムが開発効率を向上させると思っていて、どちらかというと Hack のように静的な型チェックのある言語が好きです。PHP7 でも scalar type hinting が導入されたりしていますが、こちらはあくまでも実行時チェックであって、そこは考え方が違うのだろうと思っています。

そういえば Hack については、Hack から PHP へのコード変換を行う h2tp というツールが提供されていましたが、これは現在も活発に開発されているのでしょうか。私が以前試したときには、性能のよい PHP のコードを出力するとはお世辞にも言えない状況でしたが、h2tp が良いコードを出してくれれば、いざとなれば Hack で書いた資産を PHP に変換して使えるわけですから、その点の安心感は増すかもしれません。

フリマアプリ「メルカリ」の急成長を支えるエンジニアリング

speakerdeck.com

「メルカリ」というアプリで、大量のアクセスを処理するサーバサイドの内容についての発表でした。今日の発表の中で、私には難しかったものの一つです。インフラの方の話はまったくと言ってよいほど分からなかったのですが、slack の活用などは私の勤め先には無いことで、企業としての文化を感じました。

発表の後半ではログ分析の話がありました。社内のデータサイエンティストからの要望を受け、分析での利便性を考えながらログ設計を検討して基盤を構築したということです。参考になります。

いまどきのPHP開発現場 -2015年秋-

www.slideshare.net

PHPStorm, Vagrant+Ansible, Laravel, Travis (or Jenkins) + Scrutinizer CI, Heroku といった、PHP での開発に用いるツール群の話でした。私は、個人的にも仕事でも、こういったツールを効果的に組み合わせた「いまどきの」開発になかなかキャッチアップできていないので、とても刺激的な発表でした。Travis や Scrutinizer CI は以前 PHP 勉強会で聞いて個人では少しだけ触ってみたのですが、そのときは面白いと思うものの、やはり仕事で継続的に使う環境がなければなかなか難しいですね。

私自身が保守的な性格だということもあると思うのですが、仕事で使うとなると、実績がどうとか学習コストがどうとか、そういうことが気になってしまいます。発表の中で出てきた「ツールに導かれる」という言葉は重く響きました。

PHPデプロイツールの世界

www.slideshare.net

各種デプロイツールを比較しながら紹介するといった話だと思います。これも私にとっては難しかった発表です。紹介されたツールの中では、Deployer というのが完成度も高そうで、機会があれば触ってみたいと思いました。仕事では、私はそれほどシビアな運用環境での業務は担当していないのですが、それでも本番環境へのデプロイ作業の自動化は嬉しいことですね。必要になるたびに自作のシェルスクリプトを書いたりしているのですが、そのメンテナンスなど、やはり面倒なものです。作成したスクリプトの使い方を忘れないようにメモを残したりと、本末転倒だという思いを抱くこともあります。

前の発表にも通じますが、こういうツールの活用というのは、それ自体がどれだけコストを削減できたかという話もさることながら、それを通じて開発者の意識を変えていくことに意味があるのかもしれません。

Lightning Talks

ライトニングトークでは 12 件の発表がありました。技術的にも面白かったのはもちろんですが、場を盛り上げる発表が多く楽しく過ごせました。「ランダムデータを PHP で作る」という発表は、rand や mt_rand を比較しつつメルセンヌツイスターの話などをされるのかと思い込んでいたら、まったく違いました。「サンタクロースを支えるIT技術 チャリティーサンタ」の発表は最初登壇されたときは一体何事かと思ったのですが、素敵な話でした。YAPC Asia でロングバージョンの発表があったようです。

[2015-10-07 追記] 発表スライドへのリンクを追加しました。

*1:趣味では、機械学習関連などで CLI の小さなプログラムを実装して試す程度なので、速いことが最重要で、extension の対応状況などはほとんど問題にならないという事情があります。

*2:CentOS 7.0 での標準の PHP のバージョンです。

*3:あくまでも個人的な印象ですが、HHVM は PHP に比べてソースコードが難解だという理由もあります。