PHPカンファレンス2007メモ書きと初心者の所感(間違いがたくさんあるかな、、、迷い込んできた人は読み飛ばしてください。。。)

  • ①基調講演(PHPの動向2007)
    • PHP6.0のメインはUnicode対応
    • Unicode対応に伴い、mb_string関数はどうなる?
    • PHP4系は今年一杯でEOL(但し、致命的なセキュリティホールについては2008/8までサポート)
    • PHP4→5系への以降については、特にクラス部分の記述に注意。PEARのE_STRICTとZendEngineの互換〜で移行に伴う構文チェックを行う。
    • ベンチマークテストはphp_home/Zend/bench.phpで計測可能
    • セキュリティに関しては「www.hardened-php.net」「www.php-security.org」の辺りを参考に。後者はユーザの注意喚起の為に、悪意のあるコードを公開していたこともあった。
    • PEAR1.3もEOL。PEAR2.0に。2.0はPHP5.2以降に対応。
    • PHP6.0エクステンション:MySQLND(今まではThirdPartyのライブラリのため、PHP側のみでのメモリ管理ができなかったが、PHP側のみで管理できるように組み込み)
    • PHP6.0機能追加・改良:名前空間。ガーベージコレクタ。
  • 所感
    • 今年はPHP4→5への移行がメインなのかなぁというところもあるので、PHP6はまだまだ先の話のような気もしました。うーん、そもそもPHP4で満足してるユーザが大多数なのではないんでしょうか?わかりませんが。当初のPHP5が出たタイミングでのパフォーマンスの悪さが、移行の遅延を招いているのかもしれません。
  • ②A:大規模サイトの構築・運用ノウハウ(ウノウ㈱ 尾藤さん)
    • ウノウさんはBtoCメインでやっているらしい。
    • フォト蔵、vpop、ポケットブレイナーあたりのサイトを構築されたようです。後で見てみます。
    • 講演は、サーバの構築がメインでした。
    • 内容は「http://labs.unoh.net/2006/06/post_21.html」とか「http://labs.unoh.net/2006/07/post_26.html」の内容と同じみたいです。
    • 実際のパワポの画像もサイトのものと同じでしたね。。。
    • ケーブル処理やサーバのラッキングとかのノウハウ。
    • サーバハードウェア構成やOSはすべて統一する。
    • などなど、詳しくはサイト参照。
    • ZendOptimizer:コード最適化
    • xdebug:プロファイラ(ボトルネック解析)
    • PEAR::Benchmark: ベンチマーク
    • 上の3つでphpコードを最適化しましょう。
    • アクセス数が増えた際に、ハードウェアのリソース追加しやすいような設計を構築時におこなう。
    • DBは更新系クエリと参照系クエリに分け、JOINは使わない。
    • JOINをつかわなかったら、RDBMSの意味が無い?
    • 監視ツールはNagios,Cactiとか、一般的なやつ。
  • 所感:
    • ネットワークのあたりは、私が前の会社でやっていた内容のほうが良くできていましたね(笑)。業界が違うとこうも違うのかと思いました。おもしろかったです。あと、最近Nagiosを会社のサーバたちに入れて監視し始めましたが、やはりメジャーなソフトだったみたいです。Muninも入れたのですが、こっちは話には出てきませんでしたね。。。個人的には、DB系をもっと勉強しなきゃです。
  • ②B:大規模サイトの構築・運用ノウハウ(GREE㈱ 藤本さん)
    • GREEの情報。
    • PV:6000万〜1億/日、ユーザ数:200万人、サーバ台数:600〜1000台(!!!!!)
    • パフォーマンス向上の為に、DB分割、インデックス張り、キャッシュで高速化しましょう。(常套手段みたい)
    • rsync---普通に使うんですね。覚書。
    • LVS---ロードバランス。覚書。
  • 所感:
    • でたー。これがかの有名な藤本さんですか、、、という感じです。WebアプリケーションフレームワークEthna」ですね。最近使い始めました。はい。ていうか、サーバ台数が恐ろしいですね。こんなんどうやって管理するんだろ。
  • PHP Framework Update
  • ③A:symfony
    • ohloh.net---グラフ化サイト。後で見ます。
    • zend frameworkも使用可能。
    • 日本では9サイトしか使われていない(!?)
  • ③B:Cake PHP
    • RADフレームワーク
    • MITライセンス
    • cakephp.jp
    • Smartyとの連携可
    • 導入事例:topic.nifty.com 後で見ます。
    • PHP4でも5でもOK
    • PEARは使わない。外部ライブラリ無し。
    • 導入が楽。アーカイブを解凍して、適切なフォルダ配下に配置するだけでした。
    • テンプレートエンジン無し。Viewにphpスクリプトを記述。
    • scaffold機能により、自動的にメソッド追加される。
    • 1.2へのバージョンアップでページング処理などが追加されます。
  • ③C:Piece Framework
    • バリデーションのみとか、単体でフレームワーク利用可能。
    • 基本的にはEclipse上で使用。
    • Webフローコントロールにより、GUIで画面遷移を作成すると、自動的にリンク作成。(これはEclipseではなく、テキストでも記述可能)
    • まだまだバグが結構あるっぽいです。
  • ③D:Ethna
    • PHP4/5でも可---PHP4がEOLということもありあんまり意味ない?
    • 2.3.2は、バグフィックスがメインです。
    • ethna-users-ML あとでみます。
    • PEARに依存しているので少しずつ、依存部分を削る予定。
    • EUC-JP、Ajax、DB、、、このあたりが弱い。
  • 所感:
    • symfonyは良くわかりませんでした。yahoo(inc)に開発者がいるらしく、yahooでは使われ始めているらしいのですが、、、。
    • Cake PHPは使いやすそうですね。導入も楽だし。ちょっとさわってみたいです。ページングの自動生成とかはよさげ。
    • Pieceはおもしろかった。GUIで記述してそれが自動的に生成されるのはすごいと思いましたね。ただ、毎回あんな風に図示したら結構面倒かなぁというのもあるにはあるのですけど。開発環境にも踏み込んでいるというところが画期的ですね。
    • Ethnaは悪いところしか言ってませんでしたが、日本で一番普及しているので勝者の余裕が出てたでしょうか(笑)。ただ、流れ的にPEAR依存は確かにちょっと頂けないですね。あと、DB周りとかAjax周りを何とかって感じですか。でも使います。
  • PHP at Yahoo!JAPAN
    • 以前のイタリア講演の日本語訳だそうです。
    • これですね。http://www.sooey.com/journal/2007/05/26/648/
    • yahoo incにphp,pecl,symfonyの開発者がいます。
    • www.php.netもyahoo incが提供しています。
    • OSはFreeBSDを使用。ミドルウェアApache,MySQL,PHPOracleも使ってるそうです。
    • 汎用的なフレームワークは使ってません。
    • PHPは最小構成でビルド。パフォーマンスのため。
    • Yahoo JAPANもPHP4を使っているので、年内には5に移行するようです。
    • 不正アクセス対策には、プラットフォームレベルでのフィルタリングを行っている。
    • Scanmus:クロスサイトスクリプティング対策。Yahoo incのRasmus氏が開発。
    • rasmus氏はAPCの開発にも携わっている。
    • PHPエクステンションとして、CやC++で書いてPHPに取り込んでいるそうです。パフォーマンス重視のため。
    • セッションは使わない。POSTでつなげるか、Cookie。これもパフォーマンス重視のため。
    • テンプレート管理ツール r3をyahooで開発。オープンソース化しているみたいです。(テンプレートエンジンではなく、管理ツールだそうです。)
    • Smartyもオーバーヘッドのため、使っていません。
    • Yahoo!Bookmarksなどで、symfonyが使われたそうです。
    • あと社内ではCVSが使われているようです。
    • フレームワークは格エンジニアに任せているので、乱立しているみたいです。
  • 所感:
    • やはり、yahooのような超巨大サイトとなると、かなりのチューニングを要するようです。PHPApacheを最小構成でインストールして、CやC++で独自モジュールを組み込んだり、、、。なんだか、phpとかオープンソースを採用している意味があるのかないのかというかんじ(かな?)よくわかりませんが。とにかく、全然スケールが違いましたね。
  • ⑤パネルディスカッション(ビジネスの側面から語るPHP)
    • PHPの、というかWebアプリケーション開発のアウトプットとして何ができたら、技術者として合格なのか、基準があいまい。
    • 資格やスキルセットの整備が必要。
    • PHPは手軽にできるし、ライブラリをテキトーにコピペすればなんとなく動くのでステキなのですが、実際にハードウェアレベルでの動作を気にしなさすぎて、最近の若者はステキなコードをかけなくなっている。
    • 各言語の使い分けは、フロントはPHPでバックエンドはJavaなどの使い分けをしている。
    • PHP以外に取得しておくべきこととしては、Ajax、それよりもコンピュータの挙動の中身。
    • つまり基礎が重要。
    • エンドユーザに使い立場で仕事をするとよい。
    • というか、ユーザに怒られたほうがよい。
    • そうすれば自然とクオリティの高いものが出来上がる。
  • 所感:
    • 最初はPHPはいいよね、気軽だし、という話から、PHPを逸脱し、エンジニアはどうあるべきか?という議論になったのかなーと思います。つまるところ、興味さえあれば、それなりに深く勉強しますし、基礎的なところ(ハードウェアのなりたちとか、、、)を絶対勉強すると思います。そうすれば、必然的にプロダクトのクオリティも上がっていくわけですから。そもそも、深く追求しない人はエンジニアには向いてないと私は思ってます。


以上。落書き終わり。
いつかこれを振り返ってみるかな、、、。
偶然迷い込んできた人は、こんな初心者の所感なんて無視してください。はい。