ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

PHPカンファレンス2013参加レポート

Yahoo!デベロッパーネットワークの中野(@Hiraku)です。先日お伝えした通り、2013/9/14(土)にPHPカンファレンス2013が開催され、Yahoo! JAPANも参加しました。 トラックが複数走る大ボリュームで、当日全体のレポートはとても書ききれないので、技術評論社さまによる当日レポートや、TogetterのまとめUSTREAM 一階奥会場USTREAM 二階小展示ホールUSTREAM 六階会議室などを合わせてご覧いただければと思います。

この記事では、Yahoo! JAPANとしてどのような発表をしたのか、セッションについての補足などが書ければと思います。

セッションレポート

PHPコアから読み解く定石の嘘ホント

(USTREAM前半) (USTREAM後半)

PHPのコーディングにおける定石と言うと、「エラー抑制演算子@は使ってはならない」「値の比較は===演算子を使うべき」「printよりechoを使った方が速い」などなど、いくつかありますが、この理由についてはご存知でしょうか? 単純な速度に関してはmicrotime関数を使って計測すればわかります。このセッションではPHPコードを元に生成されるOPcodeを読み解くことで、なぜその違いが出るのかを解説しました。

冒頭に登場する「エラーが発生する場合、エラー抑制演算子を使った方がコードが速くなる」という例は、びっくりした方も多いのではないでしょうか。なぜなら定石では「エラー抑制演算子@は使ってはならない」としてよく知られているからです。

エラー抑制演算子は一時的にerror_reportingの設定を0にしてエラーの出力を抑制します。つまり余計なことをするので通常は@を付けた方が遅くなるのですが、エラーが起きる場合は別です。エラーが発生するとエラーを出力するため、コストがかかります。この場合、「@によるコスト」と「エラー出力のコスト」ではエラー出力の方が重く、速度が逆転するのです。

(もちろん、エラーが起きないように書いて、@をつけなくても動作する方がベストです。)

このように、前提が変わる(コードの綺麗・汚いを無視して、とにかくどっちが速いか、など)と、定石は役に立たなくなることがあります。 定石を丸暗記したりコピペするのではなく、なぜそうなるのか考える方が大切なのです。ただ暗記するよりも考えてみた方が楽しいし覚えられますよね、応用もできますよね、という結論でした。

本当に怖いパフォーマンスが悪い実装

(USTREAM)

小さなコストであっても、大規模に積み重なると大きな差が出ます。プレゼンでは3つの例を挙げて対応策を解説しています。

  • 頻繁なリソース確保と解放のコスト
  • define関数による定数定義のコスト
  • サーバーホスト名取得のためにexec('hostname')するコスト

ちなみに、紹介した内容はいずれもYahoo! JAPAN内での経験に基づいています。実は「これが原因で損失がいくら出ました…」という暴露話も準備していたのですが、ヤバすぎてストップがかかりまして、上記のような内容になったのでした。

パフォーマンス…、本当に怖いですね。

大事なのは、失敗から目を背けず、失敗を繰り返さないための工夫です。 例えばパフォーマンステストもJenkinsを使って自動化することで、パフォーマンス問題の危険な兆候を見つけることを提案しています。

ブースレポート

Yahoo! JAPANのブースでは、Yahoo!きっず公式キャラクターのちょボットがお出迎えです。 Yahoo! JAPANブース

Yahoo! JAPANのノベルティグッズとして爆速シール600枚、Y!ロゴ入りペットボトル320本、ロゴ入りの文房具などを配布していました。いずれも大人気で、お昼過ぎには完売してしまいました。無事ゲットできた方は自慢して頂ければと思います。 大人気ブース

なお、ブースに設置していたディスプレイで動画を配信していたのですが、お気づきになられたでしょうか? 弊社社長の宮坂による"なんでも答えます"動画と、2013年2月に行われたOpen Hack Day Japanの作品発表動画を再生していました。 いずれも、YouTubeのYahoo! JAPANチャンネルHackDayチャンネルにて全編見ることができますので、見逃した方は下記のリンクよりどうぞ。

カンファレンスの醍醐味

「勉強会やカンファレンスに行く意義は何か」というような話は、定期的に話題になります。 ここでは1人のエンジニアの立場で意見を書いておこうと思います。

私個人が最初にPHPカンファレンスに参加したのは2010年のことです。PHPの開発者であるRasmus Lerdorfが来日すると聞いて、見に行ったのでした。 彼のセリフ「PHPの好きなところは、本来ウェブサイトを作れなかった人たちも作れるようになったところ。広く言うとここにいる皆さんです」が今でも印象に残っています。

言語の開発者が言語についてあまり自慢しないのはPHPの特徴だと思いますが(笑)、なんだか感動したものです。

今回のPHPカンファレンス2013もそうですが、このような場に行くと会場の影響を受けて“コミュニティの熱気にあてられた”ような状態になれます。失敗談をする人がいます。憧れのコミッタが目の前で話をしています。設計について熱く語る人がいます。最先端の開発環境を追求している人がいます。色々な人が集まっています。

「理解できなかった話もあるけれど、何だかすごい」「自分も何かしたい」そんな風に思えてくるのがカンファレンスの効能だと思っています。

エンジニアは普段から技術を勉強せねばならず、しかもすぐ陳腐化する技術もあってキリがなく、手に入るのは細かすぎて伝わらないチューニングノウハウだったりして人に通じず、まあ楽しいけど大変な仕事でもあります。ずっとバグ修正ばかりで開発が進まないと「才能がないのかな」なんて思ったりして惨めな気持ちになることもあるかもしれません。大変ならせめて、仲間が欲しいですよね。

もちろん、講演したり人に会ったり技術ネタを仕入れたりビジネスにつなげたり、他にも色々な目的を持つこともできますが、そこまで気負わずに、まずは“コミュニティの熱気を浴びよう”ぐらいでも十分な価値があるのではないでしょうか。

今年のPHPカンファレンスのテーマは「PHPの夢を語ろう」でした。たくさんの夢が集まっていたと思います。 運営スタッフの皆様には素晴らしい場を提供して頂き、感謝いたします。

関連記事

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました

このページの先頭へ