第35回PHP勉強会 参加レポート

本日、第35回PHP勉強会に参加してきました。
第35回PHP勉強会 - events.php.gr.jp

その後、世田谷にバスケしに行ったのでかなりの強行軍で今ヘトヘトです。

レポート書こうと思いますが、発表の資料はその内UPされると思うのでそれにリンクするとして、気になったところや資料に書いてない話なんかを中心にメモろうかと思います。

はじめに

  • 進行はhaltさん
  • PHP勉強会は月1回開催されています。
  • 運営スタッフが足りないので手伝って!
  • 参加資格とかはないです。mail、ML、IRCとか何でも良いので連絡を。

無料で開催されている勉強会を有志で運営しているわけだから色々大変なはずです。
オイラに手伝える事が何かあるだろうか。

CakePHP使いはじめた人へのテクニック集公開(私はいかにしてevents.php.gr.jpをEthnaからCakePHPにおきかえたか)

  • 発表者:haltさん
  • events.php.gr.jp
    • 会社のフリーフライデー制度(金曜は業務以外の事やっていい)を使って開発
  • EthnaもCakePHPもオープンソースだからCodeReposに置いてあるよ
  • TypeKey→OpenIDへ移行
  • Cakeで簡単OpenIDは第3回CakePHP勉強会でやったらしいので資料をあとでチェックしよ
  • vimは片手で操作できるのでプレゼンのときに便利w>左手でvim、右手でマイク
  • Ethnaではリレーションを持ったデータ引っ張ってくるのがメンドイ
  • CakeではbindModelでできるよ
  • bindModel
    • Model側でリレーション作っちゃうとリレーションいらない時に余計なコストかかる
    • bindModelならコントローラー側でhasOne、hasManyできる。必要な時に必要なだけとる。
  • unbindModel
    • bindModelと逆に、リレーションをあとから切る事もできる
    • Modelにたくさんリレーション作っておいて、コントローラーでいらない時はunbindする
  • 近日中にOpenIDからログインできるようになるよ

以下、質疑

  • ぶっちゃけbindModelするとSQLのコストってどうなの?
    • めっちゃ重いw。Cakeは丁寧にリレーションはったりしてくれない
    • でも、画面でみると速い
    • MySQLではJOINするとテンポラリーを使うので遅くなる
    • 小さいクエリーをたくさん投げる方が、速度は速いという話もある
    • 通常はModelを使ってbindModelする。
    • パフォーマンスが悪かったら、Modelを捨ててSQL書いてチューニング
  • haltさんは今後Ethna/CakePHPのどっち使うの?
    • 「こんにちはEthnaコミッターのhaltですw」
    • Cakeが良いのは認めざるをえない。使って行きそう
    • もともとEthnaでCakeっぽい使い方をしていた
    • Ethnaは勉強するのに良いという評判(藤本さんの書いたソース[変更:リンク先間違えてました。正しくはGREEの藤本さん])

フリーフライデー制度って開発者にとっては魅力的な仕組みですね。
時間あればAZIKっていう省入力化の説明する予定だったらしいので、それも後で調べてみよ。
bindModelについて、パフォーマンス云々については細かいクエリたくさん発行の場合と、JOINした場合のベンチ比較とかを自分でやってみないと納得できないかなぁと思った。多分、そこそこの大規模システムでも問題ないレベルのパフォーマンスだって事なんだろうけど。

Cakeは1年以上前に既存システムに導入しようと思って検証したんだけど、カラムの命名規則だったり、リレーションだったりが全然フレームワークに合わなくて結局SQL書いてたり、当時PostgreSQL7.x系でそもそも対応していないのを無理矢理hackしたり、なんかフレームワークのメリットを余り享受できていなかったので、改めて使いどころを探しつつ勉強しないとなと思いました。

出欠確認 兼 自己紹介

  • 参加者リスト順に自己紹介していった

定員40名くらいでも全員自己紹介とかやるんですね。
初参加で顔と名前が一致しない人ばかりだったので良い機会でした。
さすがに全員は覚えられず、発表者+αくらいは覚えられたかも。
この辺は懇親会いっとかないとなぁ。

PHPでもテスト駆動開発だよ

  • 発表者:kunitさん
  • 株式会社ディノ
    • 飴の件(スミマセン知りませんでした)
  • テストの種類
    • Developer Testing -- 開発者が行う単体テスト
    • Customer Testing -- お客さんと行う機能の確認
    • QA Testing -- テスターがやる品質保証のため
  • この内Developer Testingについてのお話
  • 開発者は仕様書作るのが大キライw
    • 文章で書くんじゃなくて、コードで書けばいいんじゃね?
    • PHPerならPHPで仕様かけばいいんじゃね?
  • テスト駆動開発(TDD)の基本
    • RED -- わざと失敗させる
    • GREEN -- 汚くても一先ず動かす
    • REFACTOR -- コードを洗練させる
  • DocTest
    • この辺?>テスト厨になりたいあなたのための、DocTest
    • PHPUnit、SimpleTestのラッパー
    • DocCommentの中にテスト用記述を書く
    • クラスコメントにもメソッドコメントにも書ける
    • unixのターミナルでは色付きで結果だせる
    • あるディレクトリ以下のファイルを監視して、変更を検知して結果をすぐに出してくれる仕組みもある(ネタバレ)
  • コメントが長くなっちゃうんじゃない?
    • なりますw
    • コメント多すぎになってる場合、一つのメソッドにロジック詰め過ぎじゃない?っていう考え

以下、質疑

  • privateメソッドのテストは?
    • 議論されています。
    • リフレクションさせてやるとか
    • runkit入れてやればできるとか
    • テストしたいやつはprivateにしなくていいんじゃね?とか
    • まだまだ課題です
  • action(コントロール)クラスはunitテストの対象ではない
    • リクエストとか異物に汚染されすぎている
    • 結合テスト的な意味ではSeleniumみたいのでやるべき

テストライブラリを使ったUTとかまだ全然板についてない自分としては「テストプログラムが付いてないソース使いたくない」って言う言葉はかなり刺さった。ちゃんとやんなきゃ、ってマジ今年の目標です。

DocTestの使い方もためになったけど、テストに対する考え方とかがすごい勉強になりました。

symfonyでモバイル開発なんてどうですか。

  • 発表者:ゆどうふさん
  • モバイル開発
    • キャリア/端末の違いを意識した開発
    • HTML/CSSのきりわけ
    • 文字コード
    • 絵文字
    • セッション(COOKIEが使えないキャリア)
  • 今回は3G以降限定のお話
  • au、SBは外部CSS使える。ドコモはインラインだけ
  • はまりどころ
    • fontサイズの実装バラバラ
    • input要素の入力モード制御(デフォで英字選択されてたりとか)
    • mailtoの文字コードはSBだけUTF-8
  • キャリア毎にテンプレ作らないとキツい
  • 文字コードはドコモ|auはSJIS、SBはUTF-8
  • symfony
    • ライブラリや拡張をうまくつかおう
    • symfonyには独自のautoloadライブラリが付属してる
  • キャリア判別
    • Net_UserAgent_Mobile
  • 絵文字
    • sfPictogramMobilePlugin
  • CSS
    • HTML_CSS_Mobile
  • まとめ
    • filterやコンポーネントの拡張をつくる(hackじゃないよ)
    • plugin化もむずかしくないよ

symfonyは使った事無かったからピンとこなかったんだけど、
モバイル開発は今後やらざるをえないかもしれない(w)ので紹介されていたライブラリとかは(あとでリンクします)ちゃんとチェックしておこう。他にもモバイル系のライブラリがたくさん出てきているので一昔前に比べたら随分楽になっているのかもしれませんね。

[LT] ProjectZeroでPHP part2

  • 発表者:nemo_kazさん
  • 資料:ProjectZeroでPHPpart2 - Google Docs
  • P8 runtime
    • PHPランタイムはJVM用に構築
    • JavaとPHPの連携
    • ブリッジです。PHPからjavaインスタンス作成、メソッドコール
    • 例外ハンドリングもできる!

飛び入りされたLTだったのですが、JVMでPHP連携とかどんだけ〜っていうw
自分がJavaからプログラミングを始めたので、この技術自体には興味は覚えたんだけど(ってかスゲー)、「PHPより堅牢なJavaを使って」とかちょっと気になる発言もあったり。

個人的には複数の言語がシームレスに動くっていうメリットよりも、複数の言語を使う事によるシステムの複雑化とパフォーマンス低下の懸念の方が気になるな。どうしてもこういう構成でやらないといけないって時に仕組みが用意されているのはありがたい事なんだろうけどね。そういうケースには当たりたくないな、正直w

初参加しての反省点

  • 直前まで降りる駅を、四ッ谷三丁目じゃなくて新宿三丁目だと思ってた。
  • しかも、方向的に新宿御苑で降りた方が早い事が分かってギリギリ間に合った
  • 夜バスケの予定があったので勉強会とは思えない荷物だった
  • しかも、駅周辺でコインロッカーもみつからず
  • 懇親会にも参加できなかったので、名刺交換は数名としかできなかった
  • 休憩時間とかにも声かければ良かった(空気読めず)

まとめ

全部の発表で得るものがありました。
haltさんはしきりに「グダグダでスミマセン」なんて言ってたけど、
雰囲気がゆるいってだけで、発表自体は期待以上のクオリティでした。

ちなみに勉強会って発表だけじゃなくて質疑の時とかも濃い内容でるんだよね。
そういうところも一々勉強になりました。
あと懇親会は本当に残念。次回は是非懇親会込みでよろしくです。
(飲めないけどね)

同じカテゴリーの記事

このページの一番上に戻る
  • Facebook
  • Twitter
  • Tumblr
  • Instagram
  • miil