エンジニアをリングする

プログラをミングしたり。

my web site twitter

第80回PHP勉強会、LT7本立て箇条書きまとめ!

第80回PHP勉強会のレポートです!
LTが7本で盛りだくさんの上、濃いお話ばかりでした!!

Laravel開発カフェ〜Railsアプリ『かんばんりすと』の移植 @jumilla さん

今熱いPHPフレームワーク、Laravelのお話です。

ちなみにLaravelについて、会場では

  • 名前を知っている人はほとんど
  • 使ったことがある人は3割ぐらい
  • 仕事で使っているのは1割ぐらい

という感じの挙手率でした!

Larabelとは?

Laravel開発カフェとは?

そこで着手したのが「かんばんりすと」というRailsアプリのLaravel移植版
8人で開発に着手しました。

始めてから発覚した問題点

  • 開発OSがみんな違う
  • 開発ツール(エディタ)がみんな違う
  • Webアプリの解析方法がなかった
    • みんなで触って一斉にURLを書き出したり
  • みんなRubyRailsも知らない

よかったこと

  • Rails3とLaravel4は結構似ていた
    • ルーティングなど
    • フォルダ構成
    • ORマッパー
    • パッケージ管理
  • Rails固有の機能もカバーできた
    • Asset Pipeline
    • device
  • ツールを開発できた
    • erb2blade
      • RailsのErbファイル(.*.erb)を、Laravel4のBladeファイル(.blade.php)に変換する
  • ペアプロ形式が好評
  • 飲み会が盛り上がった(5時間)

  • 結局1日じゃ終わらなかったけど、最終的には動くところまでいった

  • ソースコード公開中

PHPのセッション管理にDynamoDBを使う @inufs さん

セッション管理方法どうしてますか?

  • クライアントサイド
    • Cookie
      • 改ざんの危険性、容量の問題
  • サーバーサイド
    • FILE (PHP標準)
      • 複数サーバーあると困る
        • L7スイッチを入れる(会場より)
        • キャッシュの伝達が遅れたことがある(会場より)
    • memcached
      • メモリ上に持っているのでサーバー落ちたら消える
    • Redis
    • MySQL
      • 書き込みをスケールさせるのが困難
    • そこでDynamoDB

DynamoDBとは?

  • AWSのマネージドシステム
  • 3種類のデータセンターへ保存されているので安心感がある
  • NoSQLの一種
  • スキーマレス
  • 基本的に検索はテーブル作成時に指定したインデックスのみ

DynamoDBを使うメリット

  • サーバー管理をAWSにおまかせできる
  • 保証された読み書き性能
  • Session Handlerも用意されている

DynamoDBを使うデメリット

  • スパイクアクセス(急なアクセス上昇)に弱い
    • それはどの手法でも難しいのでは?(会場より)
  • 対処法としてはDynamic DynamoDBというツールを使うなど

使い方

  • PHPSDKを読み込む
  • Session Handlerへの登録
  • あとは普通に$_SESSIONを使うだけ(べんり)

料金体系

  • 自分で指定した書き込み・読み込み性能に応じて課金額が変わる
    • 参考) Read 100, Write 100で$66.25 / month

スクレイピングその後 @tomzoh さん

前回、スクレイピングの手順を紹介するLTをしました。

前回のオチ:自分がスクレイピングに使ったライブラリを最後に紹介しようとしたら404になっていた!!
その代わりにいろんな方がスクレイピング用のライブラリを教えてくれたので、考察など

  • phpQuery
    • DOM要素をjQuery風に選択できるライブラリ
    • インストールめんどい
    • jQueryっぽすぎてPHP的には引く
    • 閉じタグなくてもタグ入れ子でも文字コード変換してあげればいけた
    • ちょっとクセが強い
  • QueryPath
    • こちらもjQueryのようにセレクトできる
    • インストールはComposerで一行
    • HTML構文がちゃんとしてないとパースエラーが出る(厳しい)→なので諦めた
  • Goutte
  • WebDriver
    • 画面表示のないブラウザで要素を選択するようなもの?という印象
    • ちゃちゃっとやるには不向きと感じた

まとめ

いろいろあるけど個人的にはGoutteがイチオシ

「laravel.jp」と「Laravel Meetup Tokyo Vol.5」の告知 @mukaken さん

PHPカンファレンス2014

laravel.jp

Laravel Meetup Tokyo Vol.5

PHPとHHVMの速度比較 @y__uti さん

  • HHVMが速くて楽しい
    • HHVMとはFacebook製のPHP実行環境
      • 速いのが売り
    • 既存のPHPの構文がそのまま動く(誇張あり)
    • 別にHack言語じゃなくても大丈夫
  • 「Mandelbrot集合」の描画速度で比較をしてみる
  • 比較対象
    • PHP5.4.16
    • HHVM3.2.0-dev
    • PHPNG
  • 〜実演がありました〜
  • 結果
    • PHP5.4だと4.5秒ぐらいなのがHHVMだと0.2秒ぐらい(超速い)
    • PHPNGだと2.5秒ぐらい、現行のPHPよりはだいぶ速い
    • プログラムの特性によって速さがだいぶ変わる
      • ランダムフォレスト学習&描画だとPHP5.4が50分でPHPNGが2分ぐらい(はや!)、HHVMだと1分弱(はや!)
    • 計算処理がボトルネックになってる場合はHHVMの速さが活きる
  • ほか、実用的なところでは
    • Composerで最初にとってくる処理がHHVMだと5倍ぐらい速い(らしい)

PHP における機械学習 @pjxiao さん

スライド
PHP による機械学習 - Google スライド

えっと、内容が高度で専門的な内容だったためリアルタイムに聞いて理解するのがせいいっぱいで全然メモできませんでした・・・(;_;)(処理能力の限界)
でも私でも概要はわかりましたしすごく興味深く面白かったです!!
スライド、図もあってすごくわかりやすいのでぜひ見てみてください!!

「本当のオブジェクト指向は可読性を上げる」@wa_terada さん

  • オブジェクト指向は可読性が下がるから禁止しようという記事を見て悲しくなった
    • オブジェクト指向は可読性を上げるために作られたと言っても過言ではない!
    • でもそれがあまり伝わっていない!
  • オブジェクト指向とは、抽象化だ!!
    • 抽象化によって可読性を上げることができる
  • 抽象化とは
    • 処理と変数をまとめたオブジェクトに的確な命名を行うこと
    • 的確な名前がついていれば、毎回中身を見なくてもイイ!
    • 毎回実装を読まないといけないのであればその抽象化は失敗している
  • それなら関数切り出しでもいいのでは?
    • そうです
    • 関数切り出しも抽象化の方法です。
  • 関数切り出しとの違い
    • オブジェクトだと、変数とそれに関連する処理をまとめて抽象化できる。
  • じゃあ何度もクラスの中を見るMVCオブジェクト指向じゃないの?
  • 可読性向上以外の用途に使われることで、オブジェクト指向=可読性悪い、みたいな認識がついてしまう
    • デザインパターンとか
    • クラス2つで済むのに20個ぐらいになったりする
    • オブジェクトの層を作るのに適切な範囲を超えて「やりすぎ」てしまう人がいる(会場より)
      • プライベートで好きなだけオブジェクトを書いてオブジェクト欲求を解消するのが吉
  • 「オブジェクトに抽象化することで可読性が上がる」と思ったときに抽象化するのが真のオブジェクト指向だ!!

(感想)
設計思想みたいなお話は個人的にとても好きです。
そのぶん強いこだわりを持つ方同士でぶつかりやすい部分だと思うので、実際に会場で聞かずにまとめだけだと意図が誤って伝わらないかちょっと怖い気持ちがありますが・・・
ぜひスライドをご覧ください!!

おわり

LT盛りだくさんな上、どれも濃い内容で満腹感がすごかったです!!
発表者のみなさまおつかれさまでした&ありがとうございました。

終わったあとは恒例のワンナイト人狼で盛り上がりましたよーん。
回を重ねるごとに参加者の腕が上がっていく・・・(おもしろこわい)

さいごに、PHP勉強会のグループページはこちらです!
PHP勉強会@東京 | Facebook
PHP勉強会@東京 | Doorkeeper