PHPカンファレンス2013 スペシャルレポート

PHPカンファレンス2013 当日レポート[更新終了]

9月14日、大田区産業プラザPiOにてPHPカンファレンス2013が開催されています。本稿では、本イベントの各セッションの模様を随時更新形式でレポートしていきます。

なお、本年は5トラック構成のため、すべてのセッションをレポートできません。気になるセッションはUstream中継等をご覧ください。

今年はWordCamp Tokyo 2013と共催で、1階のホールでは会場を分けて使用しています。

画像

今年のスタッフTシャツは次のとおりです。テーマが「PHPの夢を語ろう。」ということで、それをあしらったものになっていますね。

画像

基調講演「PHPの今とこれから2013」⁠日本PHPユーザ会 廣川類さん⁠

昨年と同様、今年もPHPユーザー会の廣川類さんによる基調講演「PHPの今とこれから 2013」からPHPカンファレンス2013は幕を開けました。

今回のPHPカンファレンスのテーマは「PHPの夢を語ろう⁠⁠。この基調講演では、PHP5.5、これからのPHPの話をしました。

基本的なPHPのおさらいしました。

  • リリースから100万→2億人ユーザー
  • スクリプト言語では一番人気
  • W3tech.com 2013年9月より、サーバサイドプログラミングの81%くらいはPHP。2012年9月より3%増加
  • PHPバージョン分布として、5.3が52%。昨年に比べ、5.2から15%以上5.3へバージョンアップした
  • 5.3では大きな機能改善が行なわれた

PHPリリースとPHP5.3 EOLについて次のように取り上げました。

  • リリースサイクル1年、ライフサイクル3年(バグ修正サイクル2年)
  • 2013年6月の5.5のリリースにより5.3のEOL宣言

PHP5.5の改善/変更ポイントとして次の事柄などを挙げました。

  • 速度改善5~10%
  • ジェネレータ構文
  • 大量の反復処理を行なう場合に使用メモリ低減が可能
  • パスワードハッシュ
    • ポイントは、標準化されたこと。トリッキーなコード、わかりにくいものを使わなくて良い。従来はsalt文字を作るのが面倒だった。パスワードのリハッシュなどもサポートされるようになった。UTF-8がより安全に。
  • オペコードキャッシュの基準搭載
    • 5.6にキャッシュがつくことになっていた。コンパイルしたものをメモリ上にキャッシュをして時間短縮をする。Zend社がOptimizerを搭載。Zend OPcacheに改名。オペコードキャッシュのみサポート、APCより高速。Zend/bench.phpのさらなる高速化、他の言語より遅いと言われてきたが速くなっている。

PHP5.6については、次のことを言及しました。

  • 2014年6月に出る
  • PHP5.5と同様に小幅な改訂の見込み
  • 内部演算子オーバーロード実装

PHP開発の今に関しては、次の事柄を取り上げました。

  • Rasmus 語録:問題を解くためのシンプルなツール
  • PHP開発にはロードマップがないと言われるが、柔軟性がある。

PHPの未来については、次の事柄を取り上げました。

  • TIOBE Indexの話
  • ZF2がPHP人気上昇の理由と分析(Wordpressをはじめとするアプリの広がりが理由かも)
  • Webの進化に柔軟な対応
  • 高性能かつ現実的な解を提供する
  • スケーラブル:ブログから最大級のSNSまで

最後に、日本PHPユーザ会にぜひご参加くださいと述べていました。

画像

画像

基調講演の後は各会場で一斉にセッションが始まります。

CMSアップデート

各CMSを覚えて帰ってください!と始まった「CMSアップデート」のセッション。各CMSについてのパネルディスカッションが豪華メンバーによって行なわれました。

baserCMSはECworks 代表 滝下真玄さんによる発表です。国産(福岡)ベースがCakePHPでできておりとても親しみがもてます。

Drupal Groupsは阿部正幸さんが登壇しました。Drupalは政府系のもので、欧米で使われスタンフォードやハーバードのWebサイトはDrupalで作られているそうです。

GeeklogはGeeklog Japanese代表の今駒哲子さんが解説しました。日本人コミッターは2名です。ソフトウェア関連の法律ブログGroklawはGeeklogで作られてます。

NetCommonsはコモンズネット理事の永原篤さんによる発表です。管理画面がとにかく使いやすそうでした。

Novius Open Sourseは水野史土さんによる解説です。日本語化に際しては、Novius OS Chibaという千葉という地名が使われているそうです。

WordPressは10周年、ロックロブスター三好隆之さんによる発表です。WordPressはCMSとしての利用が69%、blog/CMSどちらもの方は20%、blogだけの用途で使っている方は6%という話が印象的でした。

そしてEngine Yard 安藤さんによる司会で行なわれました。⁠突撃となりの管理画面」⁠スマートフォン対策」⁠セキュリティ対策」⁠各CMSの夢」のお題を取り上げ、とても盛り上がりました。

画像

画像

inside pixiv's infrastructure(ピクシブ株式会社 久保達彦さん)

PHP conferenceステージではピクシブのインフラ担当である久保達彦さんよりpixivでのPHPの利用について講演がありました。

pixvは多くのイラストレーターに親しまれているイラストコミュニケーションサービスです。画像をたくさんpixivではアプリケーションクラスタとコンテンツクラスタがありますが、今回はアプリケーションクラスタの話がメインでした。

メインのコードはPHPで書いていて、周辺ツールにRuby等を使っいるとのこと。それ以外にもPHPで書かれたデーモンがあるとのことで、PHPをガッツリ使っていることがうかがえます。どんなデーモンを動かしているのか気になるところです。

PHPのデータを他の言語から取得するために専門チームによってAPIを開発しており、高速化に苦労したそうです。プロファイラでボトルネックを調査したところ、silexの初期化(特にrouting)が遅く、コントローラーが増えると遅くなる問題があったのです。それを改善したことで、例えば、ログインAPIに90msくらいかかっていたものが8msに短縮したとのことです。現在では独自のフレームワーク(tateseta)を開発し、それによって1ms強で処理できるようになりました。

他にも、デプロイやテスト失敗時にIRCでbotがつぶやくなど、独特の運用の工夫がありました。

PHPは今でも一番使っていて、システムの巨大化には抽象化で対応してがんばっているとのことです。PHPで運用する画像メインの大規模サービスとして、pixivさんにはこれからもPHPを使い倒してほしいですね。

画像

画像

PHP初心者セッション2013(PHPユーザ会 有限会社アリウープ 柏岡秀男さん)

有限会社アリウープの柏岡さんにより、PHPの「基礎」「学び方」に関する講演がありました。柏岡さんが初心者セッションを担当するのは今年でなんと12回目とのこと。会場は超満員、9割以上が「PHPを学び始めて1年以内」ということで、PHPへの関心の高さが伺えました。

講演の前半は次のことを紹介しました。

PHPの基本:

  • HTML埋め込み型スクリプト言語
  • サーバサードスクリプト
  • サーバー内でhtmlに変換され、実行される

PHPの得意なこと:

  • その1:HTMLとの親和性が高いこと→PHPのところだけ抜き出して書ける
  • その2:WEBに関連する関数が豊富→setcookie関数、header関数など
  • その3:メジャーOSSの多くがPHPでできている→ブログのWordpress、CMSのDrupalなど
  • その4:マニュアルがすばらしいこと→関数の解説なども豊富(※PHPハンドブックもオススメ!)

PHPの苦手なこと:

  • その1:サーバに通信してもらわないと仕事ができないこと→JavaScriptなどとの違い
  • その2:PHPが使えるサーバが無いと動かない→自分で設定しないといけない。PHP自体のアップデートなどにも対応しなければならないのは大変
  • その3:高速ではないこと→高速のレスポンスや大量のデータの処理はできない
  • その4:PHPだけでリッチなページが作れる訳ではないこと→jQueryなどデザインの知識も必要なことも多い

PHPでできること:

問い合わせフォームから直接メール送信、楽天やAmazonから情報を引っ張るなどいろいろありますが、⁠Webできている事は大体できる(サーバ側のみ⁠⁠」とのことでした。

PHPを実際に使うには?

Linux、MacOS、Windows等多くのOSで動かすことができますが、実際は「使えるサーバを借りてしまえばいい」とのことでした。なぜなら、⁠サーバー管理の必要がない」からだそうです。

すぐに使えるPaas:

Windows Azure、Amazon Elastic Beantalk、Engine Yardを挙げました。PaasとIaasの違いはEngine Yardのページに詳しく解説されています。まずは、PHP自体のアップデートなどにいちいち対応しなくていいPaasがオススメとのことです。

最近のトレンドは「Vartual Box+chef+Vagrant」とし、設定ファイルでサーバ環境を管理ができ、Github等で環境を共有できるとしました。さらにPHPを活用するにはということで、講演の後半はライブラリとフレームワークの話に展開していきました。

PEAR(PHP Extension and Application Repository⁠⁠、PECL(The PHP extension communiyu library)などのライブラリはAjax,DB,キャッシュ等の機能を提供しており、機能的にはPHPのネイティブ関数でも可能ですが、簡略化できたり、使いやすくなるものが多いとのことでした。

フレームワークの利点として、次のことを挙げました。

  • 毎回、同じようなコードを書かなくてすむ
  • XSS, CSRF, SQLインジェクション等の対策
  • デザインと機能の分離ができる

慣れれば「開発スピードが上がる」効果も期待できるそうです。

比較的メジャーなフレームワークにはCakePHP、Symfony、Zend Framework、CodeIgniterなどがありますが、最近は比較的手軽に導入できるマイクロフレームワーク(FuelPHP、Lithum 、SILEX)などが登場してきているようです。

これらのフレームワークはとりあえず「車を選ぶ」ように好きなものを使ってみて、自分が一番使いやすいものを選べば良いとのことでした。

また、最低限これだけ覚えておけば大丈夫!なPHPの関数として、array()、echo、if、foreach、print_r()を挙げました。PHPマニュアルでごりごり調べてみてください。

最後に習得を目指すべきスキルとやってみると良い課題を取り上げました。

PHPerとして必要なスキル:

  • サーバの知識(Linux、Windows)
  • データベースの知識(MySql、PostgresSql、ORACLE)
  • Webサーバ(Apache、nginx、IIS)
  • フレームワーク
  • フロントエンド技術(HTM、CSS、JS)

やってみると良い課題:

  • LV1:Wordpressのテーマカスタマイズ
  • LV2:問い合わせフォームの作成
  • LV3:フレームワークのチュートリアル
  • LV4:Amazon APIやTwitterを使ったプログラム
  • LV5:壮大なアプリ

画像

画像

モデルとの向き合い方:ドメイン駆動設計体験ワークショップ(PHPメンターズ)

PHPカンファレンスでは数少ないワークショップです。時間最後まで居られないのが残念ですが、できる限りレポートします。

DDDの概要

PHPでDDDは適用可能で実用段階になってきている。前提として、良いソフトウェアとは何か?を考えるのは難しいですが、良くないものは上げやすい。例えば、次の事柄です。

  • メンテナンスしづらい
  • テストができない
  • コードが読みづらい

特にコードが何故読みづらいのかというと、規約や長さ、設計が語られることが多いと言います。そして、読みづらいもの例として、wpと記載されていますねmainのコードが示しました。これを、上から登壇している後藤さんが説明していきます。そうすると、headerを記載する行の後に404を出していると思われる行が出てきました。確かにコレは分からないですね。

つまり、コードとしては書いてあっても、上から読んだ時に読めない。これが読みづらいコードであるとメンターズは定義。⁠メンタルモデルとコードがかけ離れないようにするのは凄く難しい」と述べていました。実感としてもありますから説得力たっぷりです。

そして、⁠モデルを忠実に表現し、乖離しないように気をつけるべき。DDDとは、設計上の意思決定を行うためのフレームワークであり、ドメイン駆動設計について議論するための技術的な語彙である。アプリの設計に出て来た言葉と業務の言葉の紐付けを行う、ユビキタス言語を更新するようにモデルとは簡素化である。モデリングは設計の手がかりである」ということを説明していました。

DDD実践方法として

DDD実践方法として、次の2つは把握しておく必要があると言います。

  • ユビキタス言語
  • モデル駆動設計

その上で次の順番で学んで行けば、設計から実装までを回すことができるとしました。

  • ドメイン辞書(用語集のようなもの)
  • ドメインモデル ミニマムビルディングブロック
  • ユースケース起点(ユースケースに始まる設計)

実際にやってみよう(ワークショップ開始)

実際のワークショップです。テーマとして「山村(ヤマゾン)書店の店舗販売とネットショップの併用をしている会社にシステムのヒアリングをする。現場の言葉は概念をゆがめてしまっている可能性があるため、調整しながら、話を進めていく」ことになりました。

この後、それぞれの担当者のコメントが記載され、実際のシステム設計に近い話になってきました。以降どのようなワークショップが繰り広げられたのか興味がありますが、レポーターのタイムアウトになりました……。こちらにスライドが掲載されているので興味のある方は是非ご覧ください。

画像

画像

ミッションクリティカル&ハイパフォーマンスシステムにおける技術統合と運用の勘所(株式会社VOYAGE GROUP アジャイル戦略室 / 株式会社Zucks アドネットワーク事業部 こしばとしあきさん)

株式会社VOYAGE GROUPのこしばとしあきさんよりPHPがハイパフォーマンスシステムでどのように活躍しているかについて講演がありました。箇条書きでまとめます。

こしばさんについて

  • スマートフォン向けクリック課金アドネットワークZucksのフルスタックエンジニア
  • 東京ruby会議の実行委員長
  • PHP Matsuri2011の中の、闇PHP Matsuri2011の首謀者

システムの概要

  • フレームワークはsymfony、Gaucheなど要所要所で使い分けており、PHPだけでなくservletも利用している

インフラ

  • AWS
  • 手順書を整備すると作業の再現性がなくなるのでテンプレートを定義しているCloud Formationを利用している
  • ネットワークは金をじゃんじゃんかけて富豪構成で組んでいる

モニタリング

  • glows forxestを使用している
  • 事前に定義する必要なくいきなりデータを投げるだけでグラフを描画してくれるので便利である

工夫

  • 多少バッチが遅れてもかまわないけれど「配信ができないこと」⁠計測ができないこと」は絶対さけなければいけない
  • S3から広告情報を取得しているが、取得失敗してもキャッシュから古いものを配信している
  • fastcgiで先にレスポンスを返した後にログに書き込んで、別プロセスがDBに書き込みをしている
  • この部分にはfruentedを使うことにより、事実上のリアルタイム処理を実現している

PHP

  • どうしてもパフォーマンスを優先したがために、PHPをやめるといった手もある
  • スカラに置き換えて3倍早くなったという例もあが、やはりPHPの良さというのも捨てがたい
  • PHPにも長所短所があるので、動かして測定して、⁠あなたがそれで良いと思えるなら選択すれば良い」

今後は新しい事業展開も考えていて、どんどん速度が求められるようになるために、⁠もっとシンプルに、もっと高速に、変わり続けていきたい」と語るこしばさん。⁠暁の水平線に勝利を刻め」とカッコ良く締めていただきました。

画像

画像

Zend OPcacheの速さの秘密を探ろう(KLab株式会社 hnwさん)

APCより速いと話題のZend OPcacheですが、どんな秘密があるのでしょうか? KLab株式会社のhnwさんが説明しました。

  • Zend OPcacheとはPHP5.5から標準で入っていてAPCの代替として期待されている。Zendの商用製品をオープンソース化したもの。KVS機能が無いので困るという人はAPCu(KVSだけ切り離したもの)を使えばいい
  • バイトコードの最適化を行ってくれる
  • バニラ(何も弄っていない状態)でも結構速くなる
  • 仕組み上APCに比べて有利らしい

そもそも最適化って何?

Zend OPcacheの最適化は、最後のZendVMが読む所のコードを最適化する(キャッシュ前に最適化する)ことを指すそうです。例えばPHPは絶対に通らない所であっても、一通りは読む形になっているが、要らない所はばっさり切ってしまうというような最適化をしてくれるとのことです。

さらに詳しく

高度な最適化をしているのではなくて、例えば、あらかじめ評価できる式を評価してします。$hoge = 60*20;をそのまま流すのではなく、式の処を1200としてしまう。また、命令数を減らす最適化です。++$i;と$i++;は、交換可能だったりするので、速い方を使うようになると言います。

やってくれないこととして、次のことを挙げました。

  • 共通部分式の削除とかは削除してくれない
  • ループの中の式を再度行わないようにすることはしてくれない

残念ながらgccとかはするのに、やってくれないのです。

APCと比べて…

APCはずっとベータです。高負荷サイトにて、たまに白画面になる事故があるため、ベータが取れないそうです。また、5.5以降をサポートしていない。ソースは外に出ているので、ある程度の信頼感はあります。

OPCacheはもう10年も経っている製品であるため、大丈夫かもとのことです。ただし、ソースが外に出ていなかった分、ポカはあるかもしれない。APCより安定しているという所感を持っているそうです。

未実装なものが多いので、やりたい人募集!というのがセッションの趣旨だった模様です(笑)

画像

画像

いよいよPHPerもリーンで行こう(tchikubaさん)

tchikubaさんによるリーン開発の話です。リーンで重要なことを中心に説明しました。

あらかじめしっかりXXするというのはアンチパターンであり、アジャイルな開発はなんちゃってではいけないと言います。ツールの紹介の後、重要なのは「人を大切にすること」と指摘していました。

事情により、レポート時間が数分しかありませんでしたので、スライドをご覧ください。

安全なPHPアプリケーションの作り方2013(HASHコンサルティング株式会社 徳丸浩さん)

通称「徳丸本」でも有名なPHPセキュリティのスペシャリストである、HASHコンサルティング株式会社の徳丸浩さんのセッションは、メインステージで数十人規模の立ち見が出るほどの人気ぶりを発揮していました。

「PHPのライフサイクルにどうつきあうか」といった課題にWindows XPのサポート終了と比較して説明しました。お決まりのPHPの脆弱性に関する解説ももちろんあり、後半はスマホサイトなどで必需となっているHTML5のセキュリティについてコード例を用いての解説がありました。

PHPのライフサイクルにどうつきあうか

  • RHELやCentOSのサポートパッケージで乗り換えていくのはあり
  • centosはちょっと古いが無償で10年サポートを受けられる

strict sessions

  • 大垣さんによって5.5.2から実装された
  • 今はバグがあるが5.5.4で直ると思われる
  • セッションを消してもセッションIDがかわらなかったり、勝手なセッションIDが使えていたが、それをセキュアなものに書き換えてくれるようになった
  • session regenarate idはこれからも必要と警告しました

パスワードの守り方

  • saltをユーザーごとに変える必要がある
  • ユーザー数×saltでパスワードパターンができるので総当たり攻撃が実質できなくなる
  • saltの回数を任意回数(1万回とか)計算してハッシュの計算するストレッチングが有効である
  • 1文字長くするとストレッチング90回分に相当するので長いパスワードをつけるべきである
  • password_hash関数がPHP5.5から追加されたのでハッシュ化がしやすくなった

HTML5のセキュリティ

後半は今流行のHTML5について、セキュリティ的に確立されていないとし、架空のレジストラであるおname.comを例に、どういった脅威があってどう考えるべきなのか、サンプルコードを交えての解説がありました。

  • DOM bases XSS
  • JSON HIJACK
  • JSONでのXSS
  • CSRF
  • postmessage
  • 混ぜるな危険
    • ローカルストレージに攻撃コードを埋め込み、ページ表示時にその攻撃コードを実行するなど。それぞれの脆弱性に対応しても合わせると攻撃が可能になってしまう場合がある

画像

画像

今ドキのPHPの書き方 -PHP逆引きレシピ改訂版-(PHP逆引きレシピ 改訂版 執筆チーム)

PHP逆引きレシピ 改訂版 執筆チームによる発表です。本書は5.2以降、Webの全く初心者ではなく、上級者では無い人にとってのコンテンツになっていると言います。そのため、PHPプログラミングの初心者にはとても使いやすい本になっているそうです。PHP逆引きレシピは10月下旬発売とのことなので、ぜひご購入ください!とアピールしていました。

画像

画像

本当に怖いパフォーマンスが悪い実装(Yahoo!JAPAN Masakazu Nagayaさん)

Yahoo! JAPANのMasakazu Nagayaさんによる実装のパフォーマンスに関する講演です。次のことを取り上げていました。

  • 実行回数が多くなる処理に注意
  • 賢人でもミスがある
  • 賢人でもテストを省くことがある
  • ツールの支援による継続的なテストは 課題解決のための良い方法のひとつ
  • Yahoo! JAPANではJenkinsを使用

きちんとツールを使ってパフォーマンスの良い実装を心がけようと思いました。

画像

画像

Twilioを使ってPHPから電話をかけよう(Webサービスに新しい付加価値を) (市川快さん)

cakephperこと、市川快さんによるTwilioに関する発表です。箇条書きで内容を紹介します。

PHP×Twilio:

  • 電話発信 電信API(050番号取得)
  • ダイヤル操作、録音、音声再生、テキスト、スピーチ
  • SMS Voip連携
  • 電話番号利用 490円
  • 電話を受けてサーバ連携
  • 電話番号取得
  • SMS送信
  • 1,匿名通話 Twillio電話番号
    • 他者間通話
  • 2,要素認証 bit forest
    • Scutum SaaS型WAFサービス

Twillioの利点:

  • Webサーバ連携が簡単(短期開発)
  • 1つの電話番号で同時着信が可能
  • 電話番号を使ってユーザ識別可能
  • 他国のSMS事情を気にせず送信可能

セキュリティ:

  • Twilioサーバからの通信の判別
  • サーバにBasic認証をかける
  • Twilioの署名を検証 SSL Siguniture

注意点:

  • 自己署名証明書は使えない

画像

画像

PHPerのためのデータサイエンス入門(株式会社クロコス 柄沢聡太郎さん)

レットブルといえば@sotarok。⁠パーフェクトPHP」の著者としても有名なクロコスCTO、柄沢聡太郎さんが、どのように効率的にデータを収集・解析し、ビジネスに役立てる指標とするのかを語りました。

データサイエンスに関して、詳細な内容はデータサイエンティスト養成読本に書いているそうですが、今日は入門編ということでいかにPHPを用いてデータを解析するのかについて話がありました。

そもそもデータサイエンスとは?

データサイエンスとは「蓄積されたデータを分析・モデリングして、ビジネスを遂行するために重要な指標を得る(ことを繰り返す⁠⁠」ことだと言及し、特にいかにしてビジネスに役立つ指標を抽出するのかが重要である点を強調していました。

この説明だけでも、幅広い知識が必要となることが分かります。

具体的には、業務理解・データ理解・データ抽出・データ加工・モデリング・効果検証・サービス実装という一連のステップを指すそうです。

そもそもデータとは?

データにはデータベースやログなど様々なものがありますが、今日はログ、特に大量のアプリケーションログをどのように収集し、集計するのかに関する話を取り上げるとしました。今回は、ログ収集と分析の悩み、PHPアプリケーションのログ収集、分析ついて説明がありました。

ログ収集と分析の悩み

ログ収集と分析には様々な問題があります。

  • どう集めて→ネットワーク帯域の問題
  • ためて→ディスク容量の問題
  • 取り出して→処理時間の問題
  • 集計するのか→ビックデータ処理の問題

これらすべてがTreasure Dataを使えば解決できるそうです。⁠Treasure Dataを使えば、 Treasure Data側にデータがたまり、クエリを投げるとあちらでHadoopが起動して結果を返してくれる」とのことでした。

ということは、厄介なデータの集計・集積・データ処理はTreasure Dataがすべてやってくれるため、本質的に重要な「どのようなデータを」⁠どのように集計するのか」の設計・実装にコミットできるとのことでした。これはすごいですね!

クロコスでは実際、アプリケーションログにおいてはFacebookの属性情報に基づく分析、属性別、経路別のトランザクション数を、イベントログに関してはソーシャルへのシェアを中心に分析しているようです。

PHPアプリケーションのログ収集

ログと言えばサーバーのログを思い浮かべる人が多いですが、本当にほしいのは、どんなユーザーが、どんな端末で、どこから、いつ、なにをしたのか? どんなボタンをクリックしたのか?といった情報で、これらはそれぞれ次のデータに相当します。

  • どんなユーザーが?:ユーザー登録情報
  • どんな機器で?:UA
  • どこから?:GEO
  • いつ何をしたのか?:URI/アクション

そのために登場するのが、スキーマレスログです。スキーマレスログとは、次のようなスキーマがないログのことです。

  • 1カラム目:time
  • 2カラム目:status
  • 3カラム目:uri
  • 4カラム目:user_id

これを使うことで、分析者と収集者の認識差異による事故などをなくせます。

それではどのようなログの設計にすれば良いのかという点について3つのポイントを挙げました。

  • 1. 1アクセス1レコードとなるように記録する
    • レスポンス引っ掛ける。フレームワークに大体あるレスポンスイベントへのフックポイント、SymfonyならonKernelResponseを活用すれば良いとのことです。
  • 2. 基本的なスキーマを決める
    • LTSVっぽい名前にあわせておくと分かりやすいそうです。
  • 3. アプリケーションの知り得る属性を非正規化してレコードに含める
    • user_idやsession_idなどは万が一のときに備えてhash化しておくと良いとのことです。

分析

この後の分析のやり方に関しては、スライドをご覧ください。

この分析を経たら、あとは統計的解析手法やモデリングをして、ビジネスに対してクリティカルな指標の算出と改善プロセスの確立ができれば良いとのことでした。

まとめ

まとめとして、ログを集めたり分析したりするのは大変なので、次の技術などを挙げていました。

  • FluentdやHadoopを使う
  • Treasure Dataを使えばOK!

また、どういうログを集めれば良いのかということに対しては、次の事柄を挙げていました。

  • 1アクセス1レコードの非正規化ログ
  • ログフォーマット自体の設計
  • スキーマレスの活用

画像

画像

ElasticBeantalkで作るPHP動作環境(株式会社クリスク 染野修之さん)

クリスクの染野修之さんによるElasticBeantalkについての発表です。

ElasticBeantalkとは?

ElasticBeantalkはPaaSと呼ばれるものの一種です。Web上で実行環境を一括で構築できるため、サービスの本質の作成に集中したいのであれば是非検討してみほしいと話します。

ElasticBeantalkの良さを次のように挙げていました。

  • EC2,ELB,オートスケーリングの設定をWEB上で行うことができる
  • PHP以外にもPython, Ruby, Node.js, .NetFramework等をインストールすることもできる
  • ポートの追加も行える
  • サーバーが複数台あって、デプロイするのが難しいという状況であっても、デプロイ機能を使って実施することができる
  • zipでアップロード、gitでpushの方法でデプロイできる
  • 過去にアップロードしたバージョンに戻す事も容易(自分はそのためにshを書いているので、ちょっと試してみたいと思います)

以上、15分でしたが、濃いセッションでした。

MySQL Adminが見たDevsの常識、DBAは非常識(日本MySQLユーザー会 yoku0825さん)

こちらは日本MySQLユーザー会(MyNA)のyoku0825さんが参加者からの質問に親切に回答していくセッションです。

MySQL4.0を使っているのですが、どのようにバージョンをあげればいいでしょうか?

  • MySQL4.0を使っている人は来場者には皆無
  • データファイルに互換性があればmysqlを止めてバイナリーを入れ替える
  • オンラインだと一個上のメジャーバージョンまでしかアップグレードすることができない

レコードが多すぎるのですが、どのように対処するべきでしょうか?

  • 3,000万件のレコードは多くない
  • innodbはinsert, delete, updateすべてにおいてinnodb_boofer_poolに載せる
  • クエリがチューニングされている前提でスケールアップ
  • IOdriveにするくらいなら、先にメモリを限界までつむ
  • メモリの方が大事なのでcpuは一個で良い

SQLレビューの意味を問われたですが、どうすれば?

  • SQLレビューの文化がある会社の人は10人くらい
  • レコード件数変わるとindexを見誤るのでデータが増えた時のことを想定してレビューしないと意味がない
  • explainでDEPENDENT SUBQUERYはやばい

親テーブルと子テーブルで不整合がおきるのですが、どうすれば?

  • 外部キーをいやがる人が多いが付いている場合が一番早かった
  • 不整合を自動で直すのではなく、そもそも不整合を起こさない

クエリが遅いのですが、どうすれば?

  • 相関サブクエリ
    • 外側のクエリを参照するようなサブクエリは重くなる
    • 外側で100万個にしか絞れないと100万回実行するので重くなる
    • explainが帰ってこないパータンはこれ
  • インデックスが足りない
    • andの左右は交換可能だからいつでもいい
    • limitを使うならインデックスで先にソートすることが早い場合もある
    • インデックス使えないとcountは重い
  • パラメータがイケテナイ
    • innodb_boofer_poolはデータ格納容量の75%に設定する
    • マウントアプションnoattimeを足すとファイルシステムへの無駄な書き込みが減る
    • オラクルの人曰く、クエリキャッシュはCPUの並列性が悪い

いけてないクエリを特定するにはどうすれば?

  • スロークエリが出ないレベルでも5.1以降はオンラインでlong_query_timeを書き換えられる
  • SHOW FULL PROCESSLIST を1秒感覚で連打して長く生き残っているクエリを注視

PHPカンファレンスにも関わらずPHPのことが一切出てこないセッションでしたが、PHPと相性の良いDBとして有用な話でした。

画像

画像

PHP 5.5ネーティブキャッシュの話(日本PHPユーザ会 廣川類さん)

廣川さんによるZend OPcacheに関する発表がありました。

とは?

Zend OPcacheは5.5以降は標準で実装されているため、php.iniを触って動かせます。5.3, 5.4でもmakeすれば実装できるそうです。APCの上位互換的な動作をすると言及していました。

ツール

どれくらいキャッシュを破棄されているかを調べるツールがあります。例えば、キャッシュ管理コンソールで検索するといくつか出てきます。PHPの作者が作っているツールもあります。

データキャッシュは無い

OPCacheはデータキャッシュは無いので、キャッシュ用のエクステンションを使うと良いそうです。APCuとかYac, memcache等になりますが、APCuがおすすめとのことです。

爆速が強調されていました。これは使いましょう!

画像

画像

フロントエンド制作向けビルドツールGruntをPHPバックエンド開発で利用する(石川将行さん)

石川将行さんからGruntについて話がありました。

PHP開発でGruntの使い道を知る

Gruntはフロントエンドでは標準的なツールになりつつあると言います。ですが、PHPerには縁がないかもしれません。node.js製のフロントエンド開発支援ツールでありファイルのビルドを行うツールであると紹介しました。圧縮したりもするそうです。開発環境にいれるだけで使うことができるとのことです。

PHPソースを監視して、ユニットテストを走らせる

PHPソースを監視して、ユニットテストを走らせるにはgrant-watchを使います。また、ミニファイができるそうです。

PHPUnitやLintを通すことができそうです。もう少し聞きたかったのですが、諸事情でレポートはここまでになります。

画像

画像

PHPで稼ぐには。-高額給料を獲得した実際の資料を紹介します-(PHP技術者認定機構吉政忠志さん)

技術系のセッションが多いPHPカンファレンスの中で異質な存在として、PHP技術者認定機構の吉政忠志さんより、PHP技術者が如何に高額給与を稼ぐかについて熱い話がありました。

概要

  • PHPは2.44億サイトで使われている
  • PHP技術者20万人に加え20万人のPHP技術者になりたい人が居ると推定される
  • 人気言語ランキング2位に上昇
  • さらにPHP利用者成長率250%を誇っている
  • プログラマの年収は平均400万くらいだが上級の人間は1000万を超える方が多い
  • PHPエンジニアで年収900万以上が5.2%もいる

PHP技術者が給料をあげるには何をするべきか?

技術力+企画力+文章力+性格力だとしました。

履歴書

  • 大きい企業は給与のレンジがあり人に合わせて±50万円程度の差をつけている
  • 人事が履歴書を見てレンジを決めていくため履歴書が大事である
  • 良い履歴書とは自分がやりたい仕事に必要な分野の経験が記載されているもの
  • 資格は離籍書に有効

Webから問い合わせれば、転職を7回も経験している吉政さんの履歴書を見せていただけるそうです。

執筆

  • エンジニアは文章書くのが苦手な人が多いため、ほかの人ができないことができることが重要
  • 月間10本くらい連載を担当しているが学生時代は国語が苦手だった
  • 最初の入り込みが難しいので「こういう文書を書きたい」という企画書を送ってメディアに売り込むのが良い

企画書

  • 会社では企画書を作って稟議をあげていくため自分から企画書をもっていける人が強い
  • 偉くなるほど企画書漬けになるので若い人ほどインパクトが出る
  • 過去にパソナとかの社長にいきなり企画書を宅急便で送ったことがある
  • 偉い人を対象にするほど時間がないので3枚程度で短く簡単にまとめよう
  • 「あのヒット商品のナマ企画書が見たい!」がオススメ
  • エンジニアであればコードとかサイト作ると良い

PHP技術者認定試験

  • サイトはこちら
  • 初級は学生から2年目程度を対象としている
  • PHP上級は合格率6.5%の難関試験となっていてPHPエンジニアとしての存在感は抜群
  • 資格の王道で弁護士級に位置づけられた

最後にプレゼント企画として、⁠PHP技術者認定試験上級問題集』などPHPに関する書籍が当たる、じゃんけん大会があり大盛況で終わりました。ゆくゆくは1,000万PHPプレイヤーになりたいものですね。

画像

画像

Vagrantで作るPHP開発環境 実践編(新原雅司さん)

新原雅司さんによるVagrantの講演です。サーバーサイドのことも、Webエンジニアなら触れるべきですね。

ということで、実践あるのみです。WebとDBを用意します。PHP+Apache+PostgreSQLです。そして、プロジェクトのソースをチェックアウトして、vagrant upで仮想環境構築を作成していきます。

Vagrantについて次の事柄を紹介しました。

  • Vagrantファイルはソースの中に入れてしまうが、コミットはしないようにignoreにいれると良い
  • プロビジョニングをうまくやってあげるのが重要
  • 良く分からないひとは、ひとまずシェルで書いてあげると良い
  • シェルスクリプトで書いた内容をvagrantが実行してくれるだけ
  • apacheのconfとかもファイルで準備しておいて、置くだけ
  • PHPも実行できるので、便利
  • シェルスクリプトならばVagrantfileになんでも書けるし、そこだけで終わる

またsynced_folderを使えば、ローカルとグローバルを同期できると言います。NFSを使うと高速にできるようになりますが、NFSを知らない人は辞めたほうがいいそうです。

クラウド環境については、EC2にサーバーをコマンド1つで作ることもできると示しました。

まとめとして、Vagrantの良いところに次の事柄があると挙げました。

  • 1つのPCで様々なバージョンの仮想環境が作れる
  • CIサーバーとしても使える(使い捨て)
  • いつでも構築できる安心感
  • 秘伝のタレを作らないでいける

いつでも誰にでも共有できそうな夢を見せてくれました。

画像

画像

PHP利用者のためのスクレイピング入門(sasezakiさん)

sasezakiさんによるスクレイピングの発表です。

発表された@sasezakitさんのQiitaへの投稿でPHPでスクレイピングという記事がありましたので、こちらを参照してください。

画像

画像

サハラマラソンとWebエンジニア(ブリッジドット株式会社 佐藤雄大さん)

Fuel PHPでおなじみの佐藤雄大さんの発表です。今回はPHPとは関係がないサハラマラソンについてです。

佐藤さんはサハラマラソン、230kmを走破されたそうです。距離でいうと芦ノ湖までの駅伝くらい。重要なのはノータイムポチリをすることだと言います。1年前に夢であるサハラマラソンを完走すると決め、サハラマラソンを申し込むとそれに沿った行動をするようになったと話していました。

最後に佐藤さんは「未来を確定すると行動が変わる。行動が変わると未来が変わる」というカッコイイ名言でセッションを締めていました。

画像

画像

Let's mashup !! アイデアとWebAPIで大ヒットサイトを構築しよう(KDDIウェブコミュニケーションズ 阿部正幸さん)

阿部正幸さんによるWebAPIでを用いたサイトの作成についての発表です。

WebAPIとは

WebAPIは開発を効率的に行うための技術で、工数削減になると言います。例えば、ソーシャルAPIもWebAPI、GoogleAnalyticsもWebAPIです。GoogleMapAPIもWebAPIで、知らず知らずの間に使われていることもあります。

注目しているWebAPI

注目しているWebAPIをいくつか挙げました。

  • ゼンリンAPI
    • 混雑状況やエリア指定人数がリアルタイム表示できたり、1時間ごとにどれくらいの人がどこに居るかが取得できる。
  • 駅データ.jp
    • 鉄道アラームで、遅延していたとしてもアラームが鳴るようなものも作れる。
  • dropbox
    • ホームページをバージョン管理できる。

作りたいサービスがある!

そして、ニーズを掴んで、メンターに相談できるサービスを考えることが大事だと話していました。また、システムとして次のものを使うと良いことを言及しました。

  • ログインはFacebook認証
  • 通話システムはtwilio
  • オンライン決済はWebPay(かなり格安でクレジットカード認証のシステム構築ができる)
  • 内部はdrupal(これはAPIではないですが)

画像

画像

PHPコアから読み解く定石の嘘ホント(ヤフー株式会社 蒋東龍さん)

このセッションではヤフー株式会社の蒋東龍さんより、プログラムの良さを問う2択問題を出題して参加者が検討して答える形式で行われました。

まず、PHPプログラミングにおける定石について話がありました。

  • 定石や数字・理論の両方から計る必要がある
  • 数字はmkcrotime()で計測する
  • 論理はスクリプトのオペコードを解析する

そして、参加者に問う2択問題を出しました。例を挙げると、エラー制御演算子の問題は次のようなものです。

  • 存在しないファイルをincludeする場合エラー制御演算子をつけるのとつけないのどちらが早いか
    • エラーがいっぱい出ると遅くなるのではないかと思う人が多かった
    • エラー制御演算子が有った方が早い
    • エラー演算子をつけたコードは内部でBEGIN_SILENCEとEND_SILENCEで挟まれる
    • ある方がオペコード行数は多いが、エラーがあった時は出力が減るので早くなる

また、比較比較演算子の問題は次のようなものでした。

  • ==と===で比較する場合どちらが早いか
    • ===の方が厳密に精査するのでその分処理が増えるのではないかと予測する人が多かった
    • ===が早い
    • ===は型が違ったら何もしない

printとechoの違うを問う問題も出ました。

  • printとechoどっちが早いか
    • echoの方が早い
    • intの中でechoを読んで戻り値1を必ず返しているから

蒋さんがマイクを持って客席に近づいていくとお客さんの顔が険しくなるのが特徴の楽しいセッッションでした。

フレームワークアップデート

様々なフレームワークがありますが、2013年の定番は何になるのでしょうか。各フレームワークを利用している方が一人ずつ登壇し、トークセッションを行いました。

ここでは各フレームワークごとに話をまとめます。

CakePHP

CakePHPの利用率はバングラディッシュがトップだが、これはとあるCMSの開発国なためらしい。日本は4位で、ドキュメントとチュートリアルが充実していて、日本での活動は翻訳が主なものになっている。設定より規約という文化があるが、それほど規約は多くない。CakePHP3がリリースされるかもと言及。

Codeigniter

Codeigniterは、非常に多数の案件で利用されている。企業が開発したオープンソースで、6年過ぎている。キューバの人口が多い。Webサイトを構築する人向けのアプリケーション開発フレームワークで、CMSエンジンとしてのプロダクトを支えている。2.1.4が最新版。

FuelPHP

Codeigniterの派生。日本語のドキュメントが多い。世界的には微妙だけど、日本だとすごい。HMVCモデルでMVCをいくつつか束ねるようなモデルいなっている。OILコマンドラインツールがある。Restコントローラーが使いやすい。1.6からComposer対応。

Laravel

Laravelのロゴはデジタルハリウッドに似てる。Laravel4はSymfony派生。2年しか経っていないが、資本主義の国の中では利用率が上位。

Phalcon

Phalconはとにかく爆速! Cで書かれていて、PHPのエクステンションとして動作する。多くのアクセスが捌ける。Rails風味。TWIGに似ている形式で記載できる。日本語のドキュメントもできた。

Symfony

Symfony2は新しい技術を積極的に採用。ドキュメントが充実して、コミュニティが活発。また、セキュリティポリシーが明確で、エンタープライズを意識している。LTSもある。2017年のリリーススケジュールもある。

yii

よりプログラマブルなCalePHP。共産圏で人気…でPHP5.1から動くPHP界のカラシニコフ? yii2がまだアルファ版で出てみた来年くらいに出そう。モダンなフレームワークになる予定。

Zend Framework

Zendのライブラリの話をしているのに気づいてもらえない。ずっとリリースし続けている。カンファレンスとかも支援している。Zend Framework 2は1に対して見通しの良い改良を加えた。

まとめ

次のようなことを言及していて、各フレームワークの方向性が色々とでてきている印象でした。

  • 大きなものはSymfony
  • PHP初心者向けのCodeigniterやFuelPHP
  • 既存でたくさん使われているCakePHP
  • Symfonyとの関係を維持しつつ成長を続けているLaravelやZend Framework
  • いいとこ取りをしようとしているyii
  • とにかく軽いPhalcon

画像

画像

PHPアプリケーションのバージョンアップ(株式会社paperboy&co. 栗林健太郎さん)

ぺちぱー・ぺちぱーという言葉の創始者であり、paperboy&co.で技術の基盤を支える@Kantaroこと栗林健太郎さんが、いかにして継続的に、効率的にPHPのバージョンをアップしていくのかにについて話しました。

先日、PHP5.3がおそらく来年には終わりますというアナウンスが出ましたが、このようなことはこれからもおこります。今は5.5.3が最新ですが、いろいろな機能の追加やセキュリティフィックスのために今後も継続的にアップデートされていきます。さらに、PHPを構成するのは言語そのもにだけではなく、コミュニティやライブラリ、ドキュメントなどもあるので、変化はさけられません。

つまり、OSSはソフトウェア自体は無料でも、その運用にはコストがかかるということです。⁠このコストを軽視している人が多すぎる!」とのことでした。例えば5.2と5.3.2の間には越えられない壁があるとし、いろいろな便利ツール、ライブラリ(例えばcomposerやnewrelicといったもの)が5.3以前は無視されつつあるという傾向すらあります。

バージョンアップしないで放置すると、次のジレンマに陥ります。

  • 便利ツールが使えなくなり、
  • レガシーコードが増え、
  • コメントを読まないと理解出来ない不要なコードが増え、
  • ますます開発のスピードが低下する

このあたりのことはWEB+DB PRESS Vol.75の特集1「継続的Webサービス改善ガイド」に書きましたので参考にしてくださいと述べていました。

バージョンアップの際、コードを変更するだけならそんなに難しくないですし、一度だけやる分にはそこまで時間がかかりません。しかしながら、何度も継続的にバージョンアップしないといけないのが大変です。これはWEBサービスの宿命です。

バージョンアップに必要なものは次の事柄です。

  • サーバーの構成管理
  • PHPライブラリの管理
  • 包括的なテスト
  • 自動デプロイ環境
  • モニタリングの仕組み

サーバーの構成管理は、設定ファイルやパッケージ、ミドルウェアやPHPライブラリ、ソースコードがサーバーに手動で突っ込まれている状態では、コードを少しでもかえるだけでも大変な手間がかかります。そのため、コードによって明示的に記述することが大切だとしました。

構成管理の方針では、次の事柄が重要だと挙げました。

  • いきなりすべてを管理下に置こうとしないこと
  • 必ず本番環境に適応すること
  • 今動いている本番をこわなさいこと
  • できるところから少しずつやること

詳しくは入門Puppetを参照してください。

超実践的な導入法として、ツールはPuppet、Chefなどなんでもいいと言います。まずは一つでもよいので簡単な設定ファイルから作成していくことだとしました。また、本番環境からコピーしてきて、レポジトリにコミット。このファイルについては絶対に手動で更新しないことだとしました。そして、できるだけ簡単に行うことが大事で、⁠Chef Serverなどが面倒であれば、knife-soloで適用できるようにする。最初にそういう仕組みを作ることが大切」と述べていました。

また、開発環境を見直すことの重要性については、誰かが構築した共用サーバ、誰かが構築したVM、誰かが構築したAMIみたいなものをなくすことが大切だとしました。そしてDevOpsとして、アプリケーション開発者もPuppetマニュフェストを書き、システム構成はPuppetで、PHPライブラリ管理はcomposerでするというような開発体制にすることが重要だと話していました。

PHPのバージョンアップについては特にいい方法などないとしながらも、とにかく複雑性を縮減することが大切なようです。具体的には、Apacheとの密結合を止め(PHP-FPMにし⁠⁠、 バージョンの組み合わせを減らす方向で考えるとよいそうです。

まとめとして、次のポイントを挙げていました。

  • 演歌に継続的に対応し続けるのはWebサービスの宿命
  • 構成管理を、小さいところから、効果的に進める
  • PHPそのものよりシステムの複雑性の方が問題
  • 永続的にバージョンアップできることが大切

詳細な内容はスライドを参照してください。

画像

画像

ライトニングトーク大会

イベントの最後に、同じ会場で併催されていたWordCampと合同でライトニングトーク大会が行われました。皆さん、ビールを片手に楽しんでいたようです。

どのようなLTがあったのか、全部ではありませんが簡単に紹介します。

まず最初のLTでは、concreteというCMSが紹介されました。高機能で、簡単に操作できることを示していました。

清野奨さんのLTでは、Wordcampのスタッフをするべきと話がありました。問題の解決方法や、WordPress愛=触れる時間を増やすことがWordCampで無償で手に入ると述べていました。

宮川さんのLTでは、CodeIgniter3とライセンス問題を取り上げました。弁護士の方にきちんと聞いてみたところ、ライセンスの問題はないということです。

日本アフェリエイト協議会の中の人である、かさいほくとさんのLTでは、広告収入を得るための5大チェックポイントを挙げていました。誰が運営しているのかを書くこと、著作権や肖像権に気をつけること、テーマとプラグインの選び方のコツが信頼と共感にあることなどを示していました。

海老沢聡さんのLTでは、デザイナー向けプログラム部のP4Dの紹介がありました。P4Dでの制作物やエンジニアとデザイナーが仲良く活動していることを話していました。@satococoaや#p4dをTwitterで確認してほしいとのことです。

一戸健宏さんのLTでは、WordPressの公式ディレクトリ掲載テーマを作ること、使うことのメリットを述べていました。

summerfiled84さんのLTでは、WordPressが公式で主催しているWeekly Photo Challengeに参加した経緯や楽しさを述べていました。

山省さんのLTは、PHP5.5によるブラウザゲームのスピード開発方法についての話です。フレームワークはCOSMOS Web Frameworkを使ったそうです。少ないコード量による開発が可能で、コードが少ないことは正義と述べていました。

酒井優さんのLTでは、楽しくWordPressのことが覚えられる、WordPressカルタについて説明していました。

以上でレポートは終了です。最後までお読みいただきまして、ありがとうございました。

おすすめ記事

記事・ニュース一覧