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

当日レポート[更新終了]

この記事を読むのに必要な時間:およそ 14.5 分

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

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

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

画像

WordCamp Tokyo 2012のレポートはこちらをご覧ください

今年のスタッフTシャツは,こんな感じです。

画像

休憩スペースは茶屋風で,和風な雰囲気。

画像

会場に来られない方のために,ベストエフォートでUstreamによる中継が行われています。各トラックのチャンネルは以下のとおりです。

廣川類さん『基調講演』

昨年と同様,今年もPHPユーザー会の廣川類さんによる基調講演「PHPの今とこれから 2012」からPHPカンファレンス2012は幕を開けました。 まずは,ポスト5.3時代のコードとしまして,Slimフレームワークのコードを例にComposedや名前空間,無名関数などについて語れらました。

次に,PHPのバージョンアップのメリット・デメリットについて語られました。

  • 更新する理由
    • セキュリティ・バグ修正
    • サポート切れ
  • 更新しない理由
    • 更新・確認の手間
    • 新機能・性能の魅力小
    • 周辺環境の更新が追いつかない

更新すればセキュリティやバグの修正など様々なメリットがあります。 しかし,更新するための確認の手間,周辺環境が対応してないなどを考慮すると実務ではなかなか更新できない場合も多いのかもしれません。

また,PHPのフレームワークと相互運用性の未来にもふれ,PSR(PHP-FIGによって策定されたコーディング規約)という決まりの元,開発していくことで,各フレームワークのいいとこ取りができるという話は会場の興味をひいていました。

最後にPHPの成功と未来について語られました。⁠学習の容易さ」⁠⁠進化の継続」の2点を挙げられていました。 PHPのドキュメントの豊富さは他の言語を圧倒してます。学習の容易さに繋がってますね。

まだまだ進化していくPHPに今後も期待されます。

画像

画像

上村宏紀さん『いまだからできる,ふつうのはなし』

レスポンスを素早く,確実に返す。そんな普通のことが,バックエンドのエンジニアの仕事と語る上村宏紀さんの講演がはじまりました。

長く続くサービスの基盤の作り方が大事とは書いているが,そもそも大規模とは何なのか? GREEなので大規模の話を期待される方が多いかもしれないですが,どうやって続けて行くのかの方が大事なのでそちらの話がメインになります。とのこと。少しだけ残念。

大規模の定義としては・

  • データ的に50億のレコードがあるとか⇒メモリやディスクに収まらなくなる
  • トランザクション的に100万トランザクション/secとか→スループットが足りなくなる
    ☆データがたくさんあってたくさん処理しなくては行けなくなるとか・

この辺りが大規模とのことです。これは分かり易いですね。

【最初から大きくなることが分かっているテーブルを分割して別々のサーバーに置くことを前提に作成する。】これが大事らしいです。

後から分割することもできるがとても難しいので,新しく作成する時にはあらかじめ分けてしまうのだそうで。 これはサーバーの数によって変わるのではないというのもなかなか興味深いです。

例えば購入履歴であれば日ごとのテーブルにしたり,所持カードのリストであればユーザーidでmodを取って100分割したテーブルをサーバにマッピングするそうです。実際のサーバーは5台で足りる場合は,1~20までをサーバー1へ,……みたいな作り方を考えておくと良いとのこと。勉強になります。

  • スループットを増やすには⇒スレーブを増やす。参照クエリの数が増える時は何とかなる。多段スレーブにする。が,やりすぎると遅延の問題が出てくるので,10台から15台くらいでおさめたい。スケールアップとしてメモリを増やしたり,Fusion-ioを使うとかでも対応する。
  • クエリのチューニングcoverning index(selectの取るカラムを全部indexに全部入れてしまう。容量は巨大になるが高速)⁠index full scan(これはここでは説明できないので,特殊なケースにおいて高速化できる。調べてください)このあたりで対応する。

スライドには記載されていませんでしたが,素晴らしい情報でした。

  • 負荷対策の実例として行ったことは
    →スケールアップとInnnoDB化。
  • 1master/6slaveで運用中のDBセット
  • 月に数回SlowQueryが発生してレプリケーションの遅延が発生する
  • memoryを16GBから24GBへ
  • Slaveを3台に

GREEではなんと,オンサービスでAlterを流さなければいけないらしく・会場からもすこしざわめきが。 さてどうするのでしょう・

現行セットは現行セットで存在させ,並列で新セットを作成(セットというのはマスターとスレーブを合わせた状態を言います)し,参照系だけを新セットに向ける。

一気に向けると,ページキャッシュが載っていないので,まずはページキャッシュをコピーするとよいそうです。 !!autoIncrimentをまずは調整(これをしないと大惨事)⁠! たしかに! レプリケーションが破壊されてしまいますし・

次に両方のマスタに対して書き込みをするようにプログラムを修正。 完全に新マスタに書いている状態になったら,新セットのみにするとのこと。たしかにこれなら・ただ,サーバーをたくさん使うので,コストは掛かりそうですね。GREEさんならでは!ですね。

で,ここに来て,ほぼすべての問題が解決してしまったとのこと。よく聞く話です・

その後いっさいSlowQueryは発生せず,さらにSlave台数の削除まで検討できるようになったそうです。

――結局機械で解決してしまった(クエリのチューニングをせずとも終わった)⁠――エンジニアとしては複雑。

とはいえ,クエリのチューニングの話もでました。 例えば,バッチの処理が遅くなって来ている

  • IDごとにレコードを更新。結果レプリケーション遅延が頻発
  • 4000/secのupdate文が飛んでいた。
  • in句でバルクupdateすることで対応。結果として70/secのupdate文へと変化

大昔に書かれた処理があるとき火を噴く例と語っておられました。。コード的には分かり易いので,書いてしまいそうですが,バッチとなれば,そんなことを言っていられませんね・

ここからまとめに入りました。さらーに講演のペースがアップ!!

完璧なシステムを作る!!というのは努力するべきことだが,それが必ずしもよいサービスにつながるわけではない。 その時点に置いて完璧なものではなく,継続的に変化できるようなシステムにしなければならない。 これでシステム完璧!ではなくて継続的に続けて行かなければ成らない。

大変興味深い内容でした。

画像

以降はGREEのアーキテクチャがどのように遷移して行ったかの話が語られました。

=以下,箇条書きで記載します。

  • 2005年GREEそのものができた
    • Ethnaで書かれていた
  • 2006年GREEメールというのができた
    • テーブル分割開始
    • フラットな1クラスで表現するには複雑な共通機能をserviceとしてまとめた
    • DAO導入。分割テーブル
    • SQLの動的な生成
  • 2007年serviceが重要に。
    • 多用な分割DBへの対応
    • SQL動的生成の廃止
    • よりチューニングのしやすさに特化
    • SQLそのもので書いた方が望ましい
    • 2011年まで続けた
  • 2011年激動。gitへの移行
    • Aoiカスケードというのができた
    • 階層化された構造の強制
    • KVS導入
      • memcache,flare導入
    • より厳密な型変換を行う。PHPとのやりとりはすべて文字列である!とした。

振り返り。

  • Ethnaがずっと存在している
  • 凄く良くも無いけど,別に困らない
  • 認証,リクエストの割当,バリデーション
  • DOAデーターオリエンテッドアーキテクチャ
    • SNSメインだった
  • SOAサービスオリエンテッドアーキテクチャ
    • モバイルゲームに移行した
    • 階層化による段階的な移行を行ったから可能になった。
      • 影響個所をごく一部に限定できる
         いまいちだった時に捨てられる
         複数のアーキテクチャが相乗りするので勉強するのが大変
         既存の機能は改善されないので,安定していることが前提
         地道な改善が必要
  • 監視は技術者みんなで行う。
  • 対応可能人員を増やす
  • gitHubを活用した開発スタイル
  • デプロイの速度を向上させている。

画像

総合のまとめ

  • ディスクから読んだら負け!!
  • フルスタックフレームワークは夢!
  • 早く見つけ早く直す!

これが大事とのことですね。

私も1エンジニアとしてうなずける内容の多い講演でした。

柏岡秀男さん『初心者セッション』

有限会社アリウープの柏岡さんにより,PHP再入門ということでセッションは始まりました。 今回は,PHPの歴史とPHPの学び方を中心にお話されていました。

PHPの歴史

  • 1995年 PHP Toolsとしてソースコード公開
  • 1998年 PHP3公開
  • 2000年 PHP4公開,PHPユーザー会ができる
  • 2002年以降 フレームワーク時代に突入
  • 2004年 PHP5公開,PHP5の長い時代の始まり
  • 2008年 マイクロフレームワーク登場

ようやくPHP6がでるかと思いきや,PHP5.4公開 ほぼメジャーバージョンアップに近いものだそうです。

新機能としては,

  • 配列の改良
  • Traitsの導入
  • ビルドインサーバ

などが導入されたとのことです。

PHPの学び方

初心者へのオススメな学び方としては

  • php.netのチュートリアル
  • WordPress等のカスタマイズ
  • 問い合わせフォームを作る
  • フレームワークのチュートリアル

などをやってみることがよいとのことです。 会場では,php.netの使い方等を説明されていました。

中級者の方には

  • WordPress等のプラグイン作成
  • 掲示板を作る
  • 外部サービスとの連携
  • フレームワーク・ライブラリ等のソースを読む

などをやってみることがよいそうです。

上級者の方には

  • サービスの一般公開
  • オープンソースアプリの開発
  • フレームワークを作る

などがどうでしょうか?とのことでした。

PHPはマニュアルが素晴らしいので,困ったときはマニュアルをみようとのことです。

画像

画像

kenjisさん『達人出版会からPHPの本を出版しよう』

画像

kenjisさんはPHP技術者認定上級試験の認定者の1人(まだ世界にに7人しかいません!?)です。

kenjisさんの著書はじめてのフレームワークとしてのFuelPHP」⁠好評発売中です。

なぜいま達人出版会なのか?

PDF&EPUB
電子書籍のPDFとEPUBの両方が対応している。 電子書籍は軽い!そして,検索可能です。
DRMfree
DRMもしくはソーシャルDRMになっていて,PC,タブレットなどいろんなデバイスで見ることができます。
無償アップデート
改訂版が無償でアップデートされています。

達人出版会いいよ!

Git/Redmine
達人出版会は原稿用のGit/Redmineを無償で提供してます。
自動組版
組版プロセスが自動で行われ,従来紙媒体のプロセスより簡単になっています。
ReVIEW
世界制覇をもくろむ電子書式入稿フォーマットです。
印税率が高い
紙媒体の5倍です。

まだ達人出版会はできて日の浅いサービスなので,知名度があまり大きくないですが, ReVIEWで書いて,Gitで原稿を入稿刷るといった,新しいエコな出版方法を提案しているよいサービスです。

企画受付フォームも用意されているので,本の企画を送ることができます。 皆さん,達人出版会から本をだしましょう。

達人出版会いいよ!! とのことでした。

著者プロフィール

小泉正人(こいずみまさと)

神奈川県横浜市在住。MovableTypeが好きでperlを始めるも,気がついたらPHPへ。仕事は画像処理関連など,PHPは家で書いてます。フレームワークはSymfonyが好きです。最近は地図と位置情報サービスが大好きです。

趣味は料理教室に通うこと。レシピが増えて,鯛もさばけるようになりました。

Twitter:@hamichamp

Facebook:koizumi.masato


中村慎吾(なかむらしんご)

東京都港区在住。仕事でPHPを使うようになって7年。楽しい事には何でもやってみるスタイル。趣味はプログラミング,仕事もプログラミング。PHPのフレームワーク「Symfony」が大好きで,ユーザー会立ち上げにも参加。

URL:http://d.hatena.ne.jp/n416/

Twitter:@n416


村松健太郎(むらまつけんたろう)

東京都足立区在住。PHPに限らず,java,objective-c,ruby,actionscript3.0,C#,C++など様々な言語を弄る器用貧乏。趣味はアプリ作成とスノーボード。現在、年内リリースを目標に毎週末アプリ作成に没頭中。

URL:http://blog.kentaroumuramatsu.com/

Twitter:@ken_b4u

Facebook:kentarou.muramatsu


八木勝海(やぎかつみ)

千葉県松戸市在住。PHP,perlを好んでしゃべります。Android,javascript,pythonも少しだけ。

趣味はカメラ,ギターなど。最近はFuelPHPに興味を持ち,何かサービスを作りたいと考えている。

URL:http://connvoi.hatenablog.com/

Twitter:@connvoi_tyou

Facebook:ka2mi.yagi

コメント

コメントの記入