Shinya’s Daily Report このページをアンテナに追加 RSSフィード

2011/09/10(土)

[][]PHPカンファレンス2011に参加してきた #phpcon2011 19:22 PHPカンファレンス2011に参加してきた #phpcon2011を含むブックマーク PHPカンファレンス2011に参加してきた #phpcon2011のブックマークコメント

f:id:absj31:20110910100651j:image

今年のPHPカンファレンスは、技術者のための楽しい祭典という立場に立ち戻り、
様々なテーマをちりばめた「ごった煮のお祭り」を目指します!
楽しいお祭りという事で、公募中心のプログラムとなっています。
みなさまのお越しを心からお待ちしております!

PHP自体はPukiWikiを自宅鯖や会社鯖で運用してた関係上、改善等の機会に触っていた程度だったのですが、今回のカンファレンスの存在を知り、またこの際だから基本的な部分位は覚えておこうかなぁ、軽く何か作れる位には覚えたいな〜、といった感じで参加してきました。

開催場所は大田区産業プラザPiO京急蒲田駅から近い場所にある施設です。

今回は以下の講演・セッションに参加(全てのメモは取り切れていません。また、御指摘箇所などありましたら宜しくお願い致します)。

・基調講演:PHPの今とこれから2011(廣川 類さん)
・初心者セッション「もうHello Worldはいらない!」〜テンプレート編集からはじめるPHP入門〜(有限会社アリウープ 柏岡 秀男さん)
・アジャイル開発とTDDを半年間実践してみた顛末と、これから(澤田 径さん)
・PHPとテストとCIと私〜愛するあなたのため〜(yamashiroさん)
・徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011(徳丸 浩さん)

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

  • 廣川 類さん
  • PHPのあゆみ
    • 2000年 Ver4.0でブレイク、PHPユーザー会も発足
    • 2004年 Ver5.0 オブジェクト指向
    • 2008年位にVer6.0が出る予定だったんだけど・・・Unicode関連で紆余曲折を経てキャンセルになった。
    • 2009年06月 Ver5.3
      • これをVer6.0と言っても良いんじゃないか?という位の変更
      • Ver6.0は鬼門らしい
    • 今日話すのはVer5.4について。
    • Ver5.5についてはまだ何が変わるかというところはまだ見えていない。
    • 今年
  • PHP標準リリースプロセス
    • リリースサイクルは1年
    • ライフサイクルは3年(バグ修正2年、セキュリティ修正のみ1年)
    • 同一メジャーリリース(例:5.x)では下位互換性を確保
    • 同一マイナーリリース(例:5.3.x)ではバイナリ互換性を確保
  • PHP5.4 改善・変更のポイント
    • 速度改善:10〜15%
    • Traits:コードの再利用性改善
    • レガシー機能の削除
    • マルチバイト対応強化(mbstring機能強化)
    • (テスト用)組み込みWebサーバ
    • default_charset:ISO-8859→UTF-8
    • エラー設定:E_STRICTがE_ALLに含まれるようになった
  • PHP5.4でより早く、快適に。
    • 更なる高速化、省メモリ化
    • 19%高速化。(5.3と比較)
  • PHP5.4でコード再利用:Traits
    • 単一継承の言語でコードを再利用する仕組み
    • 言語がサポートするコピー/ペースト(多重継承よりシンプル)
    • クラスや他のTraitsとメソッド名の衝突を解決する仕組み
  • PHP5.4で日本語の扱いが便利に
    • Zendエンジンマルチバイト対応標準化バイナリ互換性改善
    • 16進数値文字参照の追加
    • RFC3629準拠のUTF-8にチェック強化(最大4バイト)
    • mbstring(libmbfl)に文字コード追加
  • PHP5.4でUTF-8がより安全に
    • RFC3629標準のUTF-8にチェック強化(最大4バイト)
    • PHP5.3まで:最大6バイト、非最短形式を許容/出力しない
    • 非最短形式のUTF-8の例
    • 不正なUTF-8の例
  • 従来の携帯絵文字変換
    • 各キャリアはSJISUTF-8外字領域に絵文字を定義
    • キャリア内変換(SJISUTF-8)、キャリア間変換を定義
    • 独自の変換をライブラリで定義:HTML_emoji, Text_Pictgram_Mobileなど
  • PHP5.4の絵文字変換
    • Unicode 6.0へ絵文字収録:携帯以外でもサポート
    • Unicode 6.0を介したキャリア内/キャリア間相互変換を定義
    • 各キャリア用SJISUTF-8ISO-2022-JPKDDIのみ)を定義
  • PHPとQA
    • PHPのコード品質は比較的高い
    • テストされていないコードには欠陥がある
    • PHP5.3.7でcrypt関数MD5)が動作しなかった
    • 軽微な未修正の問題についてもテストケースがコミットされFAILする原因となっている。
      • →提案『XFAIL(experimental fail)を導入し、FAILの出現の判別を容易にする』
  • PHPの成功と未来
    • Scales:小規模サイトからFacebook/Yahooまで
    • Easy to learn:言語がシンプル、ドキュメントが豊富
      • 多様な要求に応えつつ分かり易さを保つことが必要
      • 地道な活動が重要、ローカルなPHPリファレンス、勉強会等
    • Easy to manage:必要十分な現実的な解を提供(Webの進化に対応)

初心者セッション「もうHello Worldはいらない!」〜テンプレート編集からはじめるPHP入門〜

  • 自己紹介
    • PHPユーザ会発起人の一人
    • PHP絡みのを色々やっています
    • Webの何でも屋
    • 火消し案件多数
    • PHPハンドブック出版しました。
    • 会場に来た方特典:直接質問に答えます。
    • 懇親会でプレゼントに出ます。
  • MVCとは
    • Model/View/Controller
      • Model:データの集まりを扱う
      • View:表示を司る
      • Controller:全体のコントロールを行う
    • MVCの流れ
      • Controller
        • リクエストの受付
        • Modelから値を取得
        • Viewの選択
  • PHPセクション:カスタマイズ
    • 最低限の知識は必要
    • プログラム構築出来る程は必要無し
    • 大体読めば分かります。
    • 関数
      • PHPを行う処理
      • ()がついている
      • 返り値の有無に注意
    • 変数
      • $xxxx で表される
      • echoで出力
      • 条件判定に使われたり
      • プログラムで取得された
  • $echo関数の説明
  • :構文(コロン構文))の説明
    • 通常のPHP構文と違う書き方
    • HTMLタグに近い。
  • if/elseの説明
  • for/do〜whileループの説明
  • foreach/whileの説明
  • 配列の説明

アジャイル開発とTDDを半年間実践してみた顛末と、これから

セッション資料が事前に公開されていたので、メモは少なめ。

  • 立ち位置説明
    • セッションが参考になるかも知れない人
    • セッションがあまりさんこうにならないかもしれないので心配な人
    • 1982年生まれ、札幌育ち。
    • ウォーターフォーラーだった。
    • 半年前にNIJIBOXに転職
    • 細く長くPHPを愛用
  • ニジボックスに転職
    • 携帯向けのゲームを作っている。
    • 現場のスペック
      • ソーシャルアプリの自社開発がメイン
      • 少人数、開発期間は短い
      • チームメンバーが流動的
      • 開発中〜リリース直前まで仕様変更頻繁、常に仕様が変わる
    • この現場ではWFは無理だな・・・
    • アジャイルやってみるか
    • 試しに社内勉強会で『アジャイルプラクティス』読んで見よう
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

  • 掛かったコスト(TDDについて)
    • テストコードを書く時間
    • 社内勉強会参加時間
  • これからの課題
    • TDDが自然に社内に伝播→我流TDDが生まれてしまう事への対応
      • 社内でTDD講習会を開く
    • CIが継続出来ていない
  • 独断と偏見ベースだけど・・・
    • 顧客の考える価値は常に変わる=仕様も常に変わる
  • いまTDDを学ぶべき理由
    • TDD実践文化は急にはスケールしない
    • PHP/PHPerの人口の割に、テスト人口が少ない(TDDBC調べ)。悔しい!
      • TDDBCでの使用言語数の比較
        • PHP少ない(4件、Javaの3分の1)
          • 話題になってる割にテストされてなくない?
          • TDD実践者・PHPユーザ総数が重なる部分が少ない?
        • 少ない予想
          • 水は低きに流れる
          • 必要性を感じている人が少ない
  • Kent Beck Wtote
    • 保守的な登山家は、4本の手足のうち必ず3本は地面に付けるという習慣を持つ
  • アジャイルの導入方法=価値の説明方法
    • 横文字ばっかり。それらを押しつけないで。
    • 使えそうなプラクティスから使う。
    • 学習コストを常に意識。
  • TDD教材選び:以下の2冊がオススメ!
Growing Object-Oriented Software, Guided by Tests (Addison-Wesley Signature Series (Beck))

Growing Object-Oriented Software, Guided by Tests (Addison-Wesley Signature Series (Beck))

  • 社内でテストコード書く会を開いたり、TDDBCに参加してみると良いよ!

PHPとテストとCIと私〜愛するあなたのため〜

  • 最前線(の一歩手前くらいのところに)配属
  • 師曰く
    • 3本柱(←といいつつ四本足の椅子)
  • PHPのバージョンによって標準関数の挙動が違う
    • 違うのならテストを書くしかないじゃない!
  • 今日は結婚式(僕のじゃないよ!)の帰りでスーツでした
  • より自動化をめざして
    • StageHand Test Runner
  • 自動化→CI
    • いつでもリリース可能
    • 問題発生時のチェック
    • コードを綺麗に保てる
  • コミット毎に実行したとする。手動だと…?
    • 1回のビルド5分
    • 1日10回コミット
    • 毎年200日
    • 40年。
    • 400000分=6666時間=833日。
    • 年老いてしまう・・・
  • CIツールの定番:Jenkins
    • Why?
      • 導入が簡単。
      • 日本人が開発している。
      • プラグインで拡張が出来る。
  • 導入するには?
    • 1.普通感を出す(地獄のミサワ風に:高等技術を要する)
    • 2.一人で始めちゃう
    • 3.少しずつ始める
  • それでも挫折した時は?
    • レガシーコード第24章:もうウンザリです。何も改善できません
      • プログラムは楽しい
      • 新規に作っても絶えずシステムは変わる
      • 隣の芝生は青く見える。
      • レガシーで成功する鍵は『やりがい』
      • 黄金の回転
      • オアシスが出来ると楽しいもの
      • 五輪の書日本で最初のアジャイラー:宮本武蔵曰く、
        • 『1対1で戦うべし。』

徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011

f:id:absj31:20110910162821j:image

本日の目玉である『徳丸本』著者の徳丸浩さん。方々から凄さは聞いていましたが、噂に違わずスゴイお方、PHP愛に満ちた方であるという事が感じ取れた講演でした。

  • 自己紹介は割愛。
  • 本を書きました。おかげさまで大増販。
    • 史上最強のレビューア軍団、ありがとうございます。
  • 今日は『10の鉄則』を紹介。

鉄則10:安全なPHP入門書で学習する

  • 安全なPHP入門書って?
    • そこそこでも安全な入門書には出会ったことがない…?
  • 逆引きレシピとかは良いけど、入門書的位置付けとは言い難い。
PHP 逆引きレシピ (PROGRAMMER’S RECiPE)

PHP 逆引きレシピ (PROGRAMMER’S RECiPE)

    • せめてXSSSQLインジェクションくらいは最初から正しく教えて欲しい・・・
    • 一見対策している『つもり』の例
      • (コード例を挙げ、問題点を指摘。
      • 指摘された書籍。(な、名指し…(-.-;)w)
よくわかるPHPの教科書

よくわかるPHPの教科書


鉄則9:入力-処理-出力で適切な対処をすること


鉄則8:安全なSQLライブラリを選定して正しく使う


鉄則7:XSS対策の第一歩はhtmpspecialcharsを上手く使う


鉄則6:ファイルアップロードは罠がいっぱい

  • PHP逆引きレシピのアップロードサンプル
    • 素晴らしい。
    • 残念なところ
      • チェックがきびしすぎてie8以前でpng画像のアップロードがエラーになる
      • ファイル名の生成に現在時刻(秒単位)を使っているのでファイル名の衝突の可能性あり
      • (→徳丸本 P.266)
    • 全体としては逆引きレシピ本、かなりいいよ♪
PHP 逆引きレシピ (PROGRAMMER’S RECiPE)

PHP 逆引きレシピ (PROGRAMMER’S RECiPE)


鉄則5:今時文字コードセキュリティを気にしなくて良いのは小学生までだよね〜


鉄則4:2010年代のWEBサイトはクリックジャッキング対策をしよう

  • iframeを用いたセキュリティ攻撃手法の1つ。
  • XSRFと同等の影響・危険性がある。(徳丸本P.63等を参照)
  • クリックジャッキングされると困るページには、X-FrAme-OPTIONsヘッダを指定(徳丸本P.63等を参照)
  • CSRF対策のトークンを発行しているページが対象となる。

鉄則3:パスワードの保存はhash(pass.salt)の繰り返し(Stretching)

鉄則2:PHPバージョンアップにとことん付き合う信念


鉄則1:徳丸本を買ってよく読め

  • 場内大喝采。


以上で個人的にはスケジュールを全て消化。LT以降の予定も組まれていたのですが、ひとまずここまでの聴講でお腹いっぱいになったので満足し、帰宅の途へ。

f:id:absj31:20110910172007j:image

PHPを勉強するにはまず『徳丸本』を読むことから始めれば良いのだな、という事が良く分かったカンファレンスでした(笑) (←微妙に違うとも言いきれない部分も有るのが徳丸本/徳丸さんの凄さでもある。『初心者本で良いのがない』と嘆いておられたが、それならいっその事徳丸さんが100点の初心者本を出せば良いのに…と思ってみたり。)


その他関連URL