PHPカンファレンス2011に参加してきた #phpcon2011
今年の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カンファレンス関西、開催。
- 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で構文が便利に
- オープンタグの短縮形(テンプレート記述が分かりやすくなる)
- 配列定義の簡略表記(配列の定義が簡単に)
- 配列デリファレシング(配列を返す定数/メソッドの処理簡略化)
- 2進数表現
- コール可能な引数に対するタイプヒント
- PHP5.4で日本語の扱いが便利に
- PHP5.4でUTF-8がより安全に
- 従来の携帯絵文字変換
- PHP5.4の絵文字変換
- PHPとセキュリティ
- PHPとQA
初心者セッション「もうHello Worldはいらない!」〜テンプレート編集からはじめるPHP入門〜
- 自己紹介
- PHP紹介
- テンプレートMVC
- テンプレート?
- VIEW?
- テンプレート:文書などのコンピュータデータを作成する上で雛形となるデータ。
- View:表示担当部分
-
- MVCの利点
- プログラムのメンテナンス性アップ
- データはデータで、テンプレートはテンプレートで扱う
- プログラムとデザインの分離
- MVCの利点
- PHPセクション:カスタマイズ
- 最低限の知識は必要
- プログラム構築出来る程は必要無し
- 大体読めば分かります。
-
- 関数
- PHPを行う処理
- ()がついている
- 返り値の有無に注意
- 関数
-
- 変数
- $xxxx で表される
- echoで出力
- 条件判定に使われたり
- プログラムで取得された
- 変数
- $echo関数の説明
- :構文(コロン構文))の説明
- 通常のPHP構文と違う書き方
- HTMLタグに近い。
- if/elseの説明
- for/do〜whileループの説明
- foreach/whileの説明
- 配列の説明
アジャイル開発とTDDを半年間実践してみた顛末と、これから
- アジャイル開発とTDDを半年間実践してみた顛末と、これから
- View more presentations from Kei Sawada
セッション資料が事前に公開されていたので、メモは少なめ。
- 自己紹介
- NIJIBOXの人。
- 立ち位置説明
- セッションが参考になるかも知れない人
- セッションがあまりさんこうにならないかもしれないので心配な人
- 1982年生まれ、札幌育ち。
- ウォーターフォーラーだった。
- 半年前にNIJIBOXに転職
- 細く長くPHPを愛用
- ニジボックスに転職

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣
- 作者: Venkat Subramaniam,Andy Hunt,木下史彦,角谷信太郎
- 出版社/メーカー: オーム社
- 発売日: 2007/12/22
- メディア: 単行本(ソフトカバー)
- 購入: 35人 クリック: 995回
- この商品を含むブログ (291件) を見る
- ビフォー/アフター
- 掛かったコスト(TDDについて)
- テストコードを書く時間
- 社内勉強会参加時間
- これからの課題
- TDDが自然に社内に伝播→我流TDDが生まれてしまう事への対応
- 社内でTDD講習会を開く
- CIが継続出来ていない
- Jenkins
- TDDが自然に社内に伝播→我流TDDが生まれてしまう事への対応
- 独断と偏見ベースだけど・・・
- 顧客の考える価値は常に変わる=仕様も常に変わる
- いまTDDを学ぶべき理由
- Kent Beck Wtote
- 保守的な登山家は、4本の手足のうち必ず3本は地面に付けるという習慣を持つ
- WFの現場でもアジャイル開発を学ぶ意義は大きい。
- TDD事始め:テスティングフレームワーク選び
- PHPUnit(本命)
- lime/SimpleTest
- その他:もやし日記さんのまとめが詳しい。
- TDD教材選び:以下の2冊がオススメ!

- 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2003/09
- メディア: 単行本
- 購入: 45人 クリック: 1,058回
- この商品を含むブログ (162件) を見る

Growing Object-Oriented Software, Guided by Tests (Addison-Wesley Signature Series (Beck))
- 作者: Steve Freeman,Nat Pryce
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2009/10/12
- メディア: ペーパーバック
- 購入: 3人 クリック: 76回
- この商品を含むブログ (32件) を見る
- 社内でテストコード書く会を開いたり、TDDBCに参加してみると良いよ!
- TDDの導入は挫折の連続
- TDDつまずくあるある
- 自分なりの乗り越え方のまとめ
- TDDを実践してわかったTDDつまつ?くあるあると自分なりの乗り越え方まとめ
- View more presentations from Kei Sawada
- TDDを実践してわかったTDDつまつ?くあるあると自分なりの乗り越え方まとめ
PHPとテストとCIと私〜愛するあなたのため〜
- PHPカンファレンス2011 で"PHPとテストとCIと私〜愛するあなたのため〜"というタイトルで発表してきました - Yamashiro0217の日記
- PHPカンファレンス2011 PHPとテストとCIと私〜愛するあなたのため〜
- View more presentations from Yutaka Yamashiro
- PHPカンファレンス2011 PHPとテストとCIと私〜愛するあなたのため〜
- 自己紹介
- 最前線(の一歩手前くらいのところに)配属
- 長い戦い史
- 四天王
- 師曰く
- 3本柱(←といいつつ四本足の椅子)
- バージョン管理
- テスティング
- 自動化
- 3本柱(←といいつつ四本足の椅子)
- テストの無いコードはレガシーコードだ

レガシーコード改善ガイド (Object Oriented SELECTION)
- 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/14
- メディア: 大型本
- 購入: 45人 クリック: 673回
- この商品を含むブログ (157件) を見る

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (312件) を見る
- Bug #55439
- PHPのバージョンによって標準関数の挙動が違う
- 違うのならテストを書くしかないじゃない!
- TDD
- 開発者のためのテスト
- 俺のためのテスト
- 黄金の回転(from ジョジョの奇妙な冒険)
- RED-Green-Refactoring(赤髪の人→緑髪の人→金髪の人/全てドワンゴ社の人。)
- PHPテストツール
- SimpleTest
- PHPUnit
- MakeGood
- 今日は結婚式(僕のじゃないよ!)の帰りでスーツでした
- より自動化をめざして
- StageHand Test Runner
- 自動化→CI
- いつでもリリース可能
- 問題発生時のチェック
- コードを綺麗に保てる
- CI:継続的インテグレーション
- チェックアウト
- ビルド
- テスト
- 静的チェック
- デプロイ
- 毎日。毎時。コミット毎。
- コミット毎に実行したとする。手動だと…?
- 1回のビルド5分
- 1日10回コミット
- 毎年200日
- 40年。
- 400000分=6666時間=833日。
- 年老いてしまう・・・
- コンピューターが出来る事はコンピュータにやらせよう。
- CIツールの定番:Jenkins
- Why?
- 導入が簡単。
- 日本人が開発している。
- プラグインで拡張が出来る。
- Why?
- よくある誤解。
- Jenkinsの情報:以下のサイトが詳しいです。(@yamashiroさんの記事)
- 導入するには?
- 1.普通感を出す(地獄のミサワ風に:高等技術を要する)
- 2.一人で始めちゃう
- 3.少しずつ始める
- それでも挫折した時は?
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
本日の目玉である『徳丸本』著者の徳丸浩さん。方々から凄さは聞いていましたが、噂に違わずスゴイお方、PHP愛に満ちた方であるという事が感じ取れた講演でした。
- 徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
- View more presentations from Hiroshi Tokumaru
- 自己紹介は割愛。
- 本を書きました。おかげさまで大増販。

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2011/03/01
- メディア: 単行本
- 購入: 119人 クリック: 4,283回
- この商品を含むブログ (146件) を見る
-
- 史上最強のレビューア軍団、ありがとうございます。
- 今日は『10の鉄則』を紹介。
鉄則10:安全なPHP入門書で学習する
- 安全なPHP入門書って?
- そこそこでも安全な入門書には出会ったことがない…?
- 逆引きレシピとかは良いけど、入門書的位置付けとは言い難い。

PHP 逆引きレシピ (PROGRAMMER'S RECiPE)
- 作者: 鈴木憲治,安藤建一,山田直明,八木照朗,山本義之,河合勝彦
- 出版社/メーカー: 翔泳社
- 発売日: 2009/06/30
- メディア: 単行本(ソフトカバー)
- 購入: 42人 クリック: 291回
- この商品を含むブログ (33件) を見る
-
- せめてXSSとSQLインジェクションくらいは最初から正しく教えて欲しい・・・
- 一見対策している『つもり』の例
- (コード例を挙げ、問題点を指摘。
- 指摘された書籍。(な、名指し…(-.-;)w)

- 作者: たにぐちまこと
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2010/09/14
- メディア: 単行本(ソフトカバー)
- 購入: 43人 クリック: 1,002回
- この商品を含むブログ (54件) を見る
鉄則9:入力-処理-出力で適切な対処をすること
鉄則8:安全なSQLライブラリを選定して正しく使う
- 以下が詳しい。
- 基本的には、Prepared Stetementを用いるべし。
鉄則7:XSS対策の第一歩はhtmpspecialcharsを上手く使う
- 文字エンコーディングを正しく使う事。
- htmpspecialcharsのを正しい使い方
- XSS対策の基礎の基礎
- HTTPレスポンスヘッダに文字エンコーディングを指定
- javascriptのリテラル生成は危険。(徳丸本P.113あたりを参照)
鉄則6:ファイルアップロードは罠がいっぱい
- PHP逆引きレシピのアップロードサンプル
- 素晴らしい。
- 残念なところ
- チェックがきびしすぎてie8以前でpng画像のアップロードがエラーになる
- ファイル名の生成に現在時刻(秒単位)を使っているのでファイル名の衝突の可能性あり
- (→徳丸本 P.266)
- 全体としては逆引きレシピ本、かなりいいよ♪

PHP 逆引きレシピ (PROGRAMMER'S RECiPE)
- 作者: 鈴木憲治,安藤建一,山田直明,八木照朗,山本義之,河合勝彦
- 出版社/メーカー: 翔泳社
- 発売日: 2009/06/30
- メディア: 単行本(ソフトカバー)
- 購入: 42人 クリック: 291回
- この商品を含むブログ (33件) を見る
鉄則5:今時文字コードのセキュリティを気にしなくて良いのは小学生までだよね〜
- 文字コードのセキュリティまとめ
- 文字コードの基本的なところを勉強しよう(徳丸本第6章)
- 文字コードを正しく扱う基本
- 文字円コーディングの妥当性で防げない脆弱性に注意
- 5C問題によるSQLインジェクション
鉄則4:2010年代のWEBサイトはクリックジャッキング対策をしよう
鉄則3:パスワードの保存はhash(pass.salt)の繰り返し(Stretching)
- どうして暗号化ではなくハッシュなの?
- 暗号化の場合、鍵管理が難しい
- アプリでは鍵を使わないといけないが、攻撃者には鍵を見せたくない
- PlayStationNetworkの事件では、権限昇格されたことになっているので、暗号鍵も盗まれていると想定
- ハッシュで保存されたパスワードは本当に安全なの?
- RainbowTable デモ実演
- Saltって何?
- ハッシュの元データ(パスワード)に追加する文字列
- 見かけのパスの長さを長くする
- ユーザ毎にソルトを変えることで、パスが同じでも、異なるハッシュが得られる
- ソルトの要件
- ある程度の長さを確保する事
- ユーザ毎に異なるものにすること
- ストレッチングって何?
- ハッシュの計算を繰り返す事
- ハッシュの計算を遅くすることにより、辞書攻撃や総当たり攻撃に対抗
- 1万回ストレッチすると、『GPUで7時間である』が7万時間になる計算
- 7万時間= 2916日 = 約8年
- 『悪い』パスワードまで救えるわけではない
- 充分長いパスワードをつけてもらえれば、ストレッチは必要ない
- メリットデメリットあるので導入の有無と回数を良く検討すること
鉄則2:PHPのバージョンアップにとことん付き合う信念
鉄則1:徳丸本を買ってよく読め
- 場内大喝采。
以上で個人的にはスケジュールを全て消化。LT以降の予定も組まれていたのですが、ひとまずここまでの聴講でお腹いっぱいになったので満足し、帰宅の途へ。
PHPを勉強するにはまず『徳丸本』を読むことから始めれば良いのだな、という事が良く分かったカンファレンスでした(笑) (←微妙に違うとも言いきれない部分も有るのが徳丸本/徳丸さんの凄さでもある。『初心者本で良いのがない』と嘆いておられたが、それならいっその事徳丸さんが100点の初心者本を出せば良いのに…と思ってみたり。)
その他関連URL:
- PHP Conference 2011 - a set on Flickr:カンファレンスでの写真いろいろ。