php conference 2014に行ってきた

まえがき

PHPカンファレンス2014 行ってきた。それに関する感想とかメモ的な何か。

基調講演 PHPの今とこれから2014

  • PHPの歴史知れてよかった。
  • PHP6がアレだったのは知ってたけど、正式にすっ飛ばすことが決まってたのは知らんかった。
  • PHP7の新機能良い
    • 非同期プログラミング
    • タイプヒンティング
      • とは言えここらへんHHVMでサポート済み

PHPコアから読み解くPHP5.5

内容的には

  • phpは、実行するときphpプログラムをオペコードという命令に変換してから実行される。
  • 5.5の変更点のyield追加、boolval()追加についてオペコードの観点から分析する。
  • 5.5の変更点のzend_execute()のオーバーライド負荷についてphpの実装から分析する。

というお話で、結論は

  • yield→積極的に使おう!
  • boolval→コールバックする時以外は使わなくていい
  • zend_execute()→結構変わってるから取り扱い注意
  • こういう風にphpの中身を知るとどう書くべきかも分かるので、皆中身にも興味持ってね!

という感じ。

個人的には

  • 中身を知ったとして得られるものが少ないので、ここらへんはPHPのエキスパートになるつもりじゃないと勉強する気にならない。
    • 使い方だけ知れればいいや。
  • yieldの便利さを知らなかったので、ループ処理とかを部品化出来て便利なのが分かって良かった。
    • ただ、yield使うと純粋関数にならなくて複雑になるので使うとしても本当に効果的なところでしか使う気がしない。
    • というかループ処理の部品化に関しては関数を渡せるようにしたら解決するっぽいから、そっち方向に進化してほしい

と思った。最近Scala書いてて、気づかないうちに自分の頭が関数型脳になってきてるのに気づいた。

フリマアプリ「メルカリ」の超高速開発を支える PHP

資料見つからなかった。タイトルどおり超高速開発をどう実現したか、という話。

  • 話を聞くまでは超高速な性能を持つプロダクトをどう開発したのか、という話だと勘違いしてた
  • PHPのいいところは身近であること」
    • すごい共感出来る。
    • 最近、仮に「完璧なプロダクトを作れるけど使える人はほとんどいない言語」と「誰でも使えるけどバグも入りやすいしメンテがきつい言語」があったとして、どっちがいいのかと言うのによく思いを馳せる。
  • 「最高だと思うものの6割で出す」
    • よく聞く話。はてなの中の人もそんなこと言ってた気がする。
  • 「迷ったら単純な方を選ぶ」
    • これあんまり知らなかったけど、よく聞く話らしい*1
    • なるほど、って思った。
    • 確かにとにかくものを作らないといけない段階だと特に使い方が簡単な方がさくっと使えて良い。
  • 「最初から大人数に使ってもらうことを想定して準備しない。ヒットしなかったらその分のコストが無駄。」
    • ほんまそれ。
    • とは言えスケールする設計にしておくのは大切だと思った。
  • 「テストはコスパの良いエンドツーエンドを書く」
    • 確かにスタートアップだと特に、いちいちユニットテスト一個一個書くよりテストのコスパ意識して書かないと成長速度に大きな影響を与えそう。

学生・新卒エンジニア向け講演 〜パーフェクト成長戦略

徳丸さんの話と迷ってこっち聞きに行った。内容というかsotarokさん目当て。

  • オープンソースとかのコード嫁」ってのはその通りと思いつつ実践出来てなくて耳が痛い話
    • 特に大きいプロダクトだと、どこから読んだらいいのか分かんなかったりするんですけど、皆どうしてるんですか。
  • 「人をdisらずコードをdisる」ってマジ大事。
    • ただ、自分はコードをdisってるのに、受け手が自分をdisられていると感じてしまうこともあるので、難しい話ではある

PHPにおけるI/O多重化とyield

I/Oの多重化をyield使って実現する話。

  • やっぱりyieldは性に合わない...
    • それをライブラリ側で全部隠蔽してくれればいいんだけど。
  • ただ、思わずHHVM/Hack使えばいいんじゃね?って思ってしまった
    • ってブコメに書いたら
    • PHP互換とは言ってもextensionに互換性がないので、「Hackへの移行+周辺ex書直し」vs「PHP>=5.5へのverup+yieldベースにFW修正」なら後者も選択肢としてアリだと思ってます。」
    • って返信もらった。確かに。

HHVM + Hack == PHP++

http://dl.hhvm.com/resources/conf/2014/OSCON/Include%20Hack.pdf

目玉講演。Facebookの中の人がHHVMとHackについて話してくれた。

  • PHPの今とこれから2014」にもあったとおり、非同期プログラミングとタイプヒンティングのサポートが魅力的すぎる。
  • 各種コレクションも用意してるの素晴らしい。
  • 型があるおかげでIDEの強力なサポートが可能なのめっちゃ良い(まだないっぽい
  • 「単純なベンチマークじゃあんまり意味が無いから、プロダクトに近いベンチマーク作った」
    • まさにHHVMが速いという自信の現れだと感じた
    • 公表するのがこの講演が初めて
      • っていうのを本人が英語で言った時と通訳さんが日本語に訳した時に拍手がばらけたのが面白かった*2
  • あと単純にプレゼンめっちゃうまかった。
  • 最後の質疑応答で「CentOSでパッケージ提供してくれないの?」って質問に、通訳さんが英語に訳す前から発表者の人頭抱えてて笑った。
  • この講演ではないけど、本人に「関数型要素はHackに入れないの?」って聞いたら「mapとかfilterは入れたい」って答えてたってツイート見かけてテンション上がった*3
    • yield使ってループ処理を部品化する、ってところがmapあれば(おそらく大半は)解決出来る。

Webアプリのデプロイ今昔物語

  • 資料わかりやすい
  • エンジニアになって2,3年なので、こういう昔話聞くと知らないこと多くて面白い。

おわり

当日聞けなかった分も資料見て書こうと思ったけど思いの外長くなったからやめとく*4

*1:https://twitter.com/yuma_iwasaki/status/520768690891935744

*2:もちろん僕は後者で拍手しましたが...

*3:https://twitter.com/okapies/status/520887859692052481

*4:別エントリで書くかも