スポンサーサイト
一定期間更新がないため広告を表示しています
- 2014.12.23 Tuesday
- -
- -
- -
- -
- -
- by スポンサードリンク
xhprofはfacebookが開発した超・強力なプロファイリングツールです。コールグラフというどこがボトルネックになっているかを綺麗に画像にして見せてくれる機能が有名です。
しかし、残念なことに、phpのライブラリではなくphpの拡張なので、Windowsでは使うことができません(自分でビルドすればいいんですが、それが難しい…)
「そろそろmacにしたら…?」というお馴染みの声が聞こえてくる中、家庭の事情でWindowsのPCしか使えない私が色々試行錯誤して、xhprof使える方法を見付けたのでご紹介します。
結論:Vagrant使え!
え?ここで終わっちゃ、だめ?w
Vagrantって最近よく聞くけど何?という方も多いでしょう。
Vagrantは仮想OSを開発者にとって嬉しい状態にセットしてくれるありがたいソフトです。ぜんぶ無料で使えます(お金払うと快適な速度のほうが使えるらしいですが)。ま、私も2か月前に初めて知ったんですけどね!
さっそくやり方を書きます。
config.vm.box = "base" を config.vm.box = "precise64" に変更
# config.vm.box_url = "http://domain.com/path/to/above.box" を config.vm.box_url = "http://files.vagrantup.com/precise64.box" に変更
# config.vm.network :private_network, ip: "192.168.33.10" を config.vm.network :private_network, ip: "192.168.33.10" に変更
# config.vm.synced_folder "../data", "/vagrant_data" を config.vm.synced_folder "./data", "/var/www/vagrant_data" に変更
でOKです。今日(2013/07/25)の時点では、PHP5.3.10が入りました。sudo apt-get update sudo apt-get install php5
extension=xhprof.soをphp.iniに追記したらインストール完了です!Vagrant万歳!sudo apt-get install php-pear make sudo pecl install xhprof-beta
後は、Vagrantfileのあるフォルダの下に作ったdataフォルダの中にxhprofを試したいPHPアプリ(wordpressとかOpenPNEとか自作の何かとか)のソースを入れて、Ubuntu側に何かhttpサーバーを入れて、/var/www/vagrant_data(アプリによっては/var/www/vagrant_data/webとかになりますが)をドキュメントルートに設定するだけで、Windowsでも好きなようにxhprofでのプロファイリング結果を出して見ることができます。
xhprofの設定方法やプロファイル結果の見方については検索するとたくさん記事が出て来るのでググってみてください。
これだけなら単にVirtualBoxかVmwarePlayerを使えば従来でもできたことですが、Vagrantのすごいところは、dataフォルダに入れたPHPのソースをプロファイル結果に従ってその場で、しかもWindowsのPC側の使い慣れたエディタやIDEで編集できるところ(synced_folderのすごいところ、というべきか)。
色々と開発中の不便に悩むたびに「YOU macにしちゃいなYO!」と言われることが多いWindowsですが、Vagrantという強力な武器をゲットした今では、もうmacの誘惑も怖くないですね!
7/14〜7/15札幌で開催されたphpmatsuriに行ってきました!
わざわざ札幌まで行った理由としては、今すごいコミュニティ欲が高いシーズンが来ていて、更に、札幌は私の生まれ故郷で実家があるので子供達を連れて行っても預け先がある(子供を自宅に置いて行かなくて済むのでDAuth=ダンナauthが取りやすい)というだけです。ついでに、春先に一度倒れた祖父の見舞い(超元気でした)も行きたかったし、単に暑すぎる名古屋から涼しい札幌に少しでも涼みに行きたかったというのもありました。不純な動機ばかりですがw ともかく子供二人と自分、三人分の飛行機代をかけて札幌まで行きました。
OpenPNE3のcookbookと、そのcookbookを使ったVagrant環境を作りました。
なぜ作ろうと思ったかと言うと、素人さんは素人さんでもmac使いの人はいざとなれば自力でビルドしてもらえばいいのでまぁいいとして、windows使いの人にOpenPNE3が動く環境を作ってもらうのが難しいと前から考えていて、唯一おすすめできると思っていたのがxamppぐらい。でも、xamppの最新版はPHP5.4で、OpenPNE3が今のところPHP5.4で動かない(PNEが悪いわけではなくsymfony1.4とdoctrine1.2の問題で)という状態になっていました。
私自身、開発用xamppを5.4にしてからPNE3の案件が戻って来たときに非常に困っていたという事情もあります。私もPHPカンファレンス関西で安藤さんが紹介してくださったvagrantを使って開発環境を用意して回避したので、同様に一般向けに作ったらいいんじゃないかと思ったわけです。
開発は苦労しました。
まず、私のruby力不足。随分前にこのブログで「rubyを始めてみた」的なエントリーを書いた記憶があるのですが、必要に迫られなかったこともあり、実際はhello world以上のことをやったことがなかったのです。Vagrantfileはまだいいとしても、cookbookのほうを書くためには、制御構造(if,each…)の書き方やら連想配列の書き方からグーグル先生に訊きながらの作業になりました。しかも一日目夜のcandycaneのワークショップで「if文のブロックで囲むとインデントが深くなるのでnot_ifやonly_ifを使え」とか言われて慌てて直したり…。
さらに、会場の回線環境があまり良くなくてほぼスマフォのテザリングで頑張ったのですが、大量の依存パッケージ(apache,mysql,php…)をインストールさせることになるので、タイムアウトエラーが頻発してしまい、実際のPNEインストールに辿り着かせるまでが大変という状態でした。
最終的には、OSにprecise64を使い、かつsynced_folderなしであればインストール完了して画面が表示できるところまではなんとか作ることができました。
phpmatsuriは終わりましたが、phpmatsuriだけのために作ったcookbookやvagrant環境ではないので、今後も開発を続けたいと考えています。
具体的には、
* Vagrantを使う場合にsynced_folder内にソースを入れられるようにする
* 設定項目でもっと柔軟性を持たせたい(インストールするプラグインとか)
* precise64以外のOSにも対応したい(特にRedhat,CentOSはマストかと)
* ruby力をつける&モジュール分割するなどしてもう少しcookbook自体のコードを綺麗にしたい
という野望を持っています。目標は大きく!
初日に講演されたどなたか(失念…ごめんなさい><)を見習ってスライドは英語、喋りは日本語にしました。一人同時通訳にしたら絶対に時間が足りないと思ったので。結局、日本語だけ喋っても時間は足りませんでした…。
少しだけウケを狙った「〜〜済のものがこちらになります」が滑って悲しかったです。タイトルのひねりが足りなかったのではないかと反省。せっかくLT時間が3分間だったり、ネタがchefだったりしたので、『OpenPNE3 3分間クッキング』とかつけるべきでしたね。←反省するところ間違ってる?
結果20位台(魂抜けてて正確な順位は聞いてなかった)という評価をいただきました。次はもっと上を狙えるよう頑張りたいです!
OpenPNE関係で普段からお世話になっている手嶋屋の手嶋さん(鳩サブレありがとうございましたm(_ _)m)と「リアルでは初めまして」。川原さん・NEKOGETさん・cakephperさんとも以下同文。PHPメンターズの道場生仲間の佐藤さんとも初めまして。
更に、LTで「名古屋から来た」と言ったお陰で、岐阜から来た外人さんお二人からも声を掛けていただきました。名古屋在住と岐阜在住が札幌のphpmatsuriまで来て、子供の話とか保育園の話で盛り上がるという謎の展開^^;お二人が日本語で喋ってくれてるのに私が英語交じりで返すというアホっぷりを晒してしまい、申し訳なかったです。
偶然、福岡のfusicから来た前回・前々回の優勝者の方とずっと同じテーブルでハックするという幸運に恵まれました。が、お隣の同僚さんも含めて、すごすぎて何も盗んで来れなかった…orz
来年もぜったい行くぞー!というか名古屋でやろうよ!←