狠狠撸

狠狠撸Share a Scribd company logo
尝尝言语でも贬耻诲蝉辞苍を使お
      う!
      2010/02/25
   研究開発部 佐々木健一



    Copyright 2010 KLab Inc. All rights reserved.
                                                    1
自己紹介




Copyright 2010 KLab Inc. All rights reserved.
                                                2
自己紹介

? 名前
  – 佐々木健一
? 沿革
  – ~2009年8月
    ? プロジェクトマネジメント部に在籍
    ? 自社向け携帯サイト開発フレームワーク作成(Java)
    ? Hudsonをコツコツ使う
  – 2009年9月~
    ? マネジメントよりモノづくりが好きで現部署へ
    ? LL言語にもCIの必要性を感じつつ今へ至る
? 技術
  – 大昔はC,C++
  – 今はJavaな人です。
  – PythonやRuby、Haskell、Scalaをかじった


               Copyright 2010 KLab Inc. All rights reserved.
                                                               3
Hudson(CIサーバ)に対する誤解


 ? Java専用CIサーバ?
  –Java界隈では話題
  –LL言語には使えないのでは
 ? インストール面倒?
  – JavaVMのインストール
  – Tomcatのインストール
  – XMLとの戦い
  – ああ、ヤダヤダ

          Copyright 2010 KLab Inc. All rights reserved.
                                                          4
CI (Continuous Integration)サーバ?

 ? 携帯サイト展開後不具合出しは大変
    – 結合してから判明する不具合もある
    – 切羽詰ってるし
 ? 問題は早期に検出したほうがよい
    – しかも手間なく
    – 小人さんが自動でやってくれるとうれしいな
      あ
 ? そんな小人さん
    – Continuous Integration (継続結合)サーバ

               Copyright 2010 KLab Inc. All rights reserved.
                                                               5
Hudsonとは
 Webアプリ
   です




                                                              複数ジョブ
               ジョブの状況をお天                                      を登録でき
                気アイコンで表示                                        る


                                        ジョブを自動的に実施して結
                                           果を残してくれる
   Hudson先生
              Copyright 2010 KLab Inc. All rights reserved.
                                                                      6
贬耻诲蝉辞苍のインストールは简単だ




    Copyright 2010 KLab Inc. All rights reserved.
                                                    7
インストールを簡単にする工夫が

? TomcatとかServletコンテナ不要
  – ファイルはhudson.warひとつだけ
  – java -jar hudson.war で起動できる
    ? Winstoneという超小型Servlet Container内包
  – Tomcatに組み込むことも可能
? 各種OS向けPackageが用意されている
  – 佐々木はdebian lennyで使ってみました




            Copyright 2010 KLab Inc. All rights reserved.
                                                            8
Windows

 ? JNLP(Java WebStart)経由で動かせる
   – http://wiki.hudson-
     ci.org/display/HUDSON/Installing+Hudson+as
     +a+Windows+service
 ? Windows Serviceとして登録




              Copyright 2010 KLab Inc. All rights reserved.
                                                              9
Debian GNU/Linux (lenny)

 ? debianパッケージとして提供されてる

 ? Hudson配布元を追加
 # wget -O - http://hudson-ci.org/debian/hudson-ci.org.key | sudo apt-key add -
 # vi /etc/apt/sources.list
 deb http://hudson-ci.org/debian binary/


 ? インストール
 # apt-get update
 # aptiude install openjdk-6-jdk
 # aptitude install hudson



                          Copyright 2010 KLab Inc. All rights reserved.
                                                                                  10
笔贬笔継続プロファイリング环境构筑




     Copyright 2010 KLab Inc. All rights reserved.
                                                     11
HudsonはJava専用ではない

 ? 確かにHudsonはjavaで書かれている
  – shellスクリプト呼べる
  – LL言語用Pluginもある
  – 使う上でJavaの知識必須ではない
    ? HudsonのPlugin開発にはJavaの知識必要
 ? PHP環境向けにセットアップ
  – Shellスクリプト呼べるのでPHPでも問題ない
  – 継続プロファイリング環境を構築してみた



           Copyright 2010 KLab Inc. All rights reserved.
                                                           12
継続プロファイリング環境とは

?       開発中からプロファイリングを行う
    ?   単体テストと同じ考えで
    ?   継続して行う
    ?   回帰的に行う
    ?   結果を時系列に可視化
?       意義
    ?   性能問題の早期発見
    ?   問題の可視化はモチベーションあがる


             Copyright 2010 KLab Inc. All rights reserved.
                                                             13
継続プロファイリング環境 - 構成要素

?   Hudson
    – 今回の主役
?   Bazaar
    – 弊社で使用中の分散SCM (git とか Mercurial
      の仲間)
?   XDEBUG
    – PHP拡張。プロファイリングやコードカバ
      レージを可能にする。
?   webgrind
    – プロファイル結果web可視化ツール

               Copyright 2010 KLab Inc. All rights reserved.
                                                               14
継続プロファイリング環境 - 構成要素




                                                         http://hudson-srv/webgrind
     bzr push
                               開発者                                    自動チェックアウ
                                                                      ト&
                                                                      デブロイ


                http://scm-svr/~sasaki-k/bzr-repo/


                    ソースリポジトリを監視

  scm-svr                                                          hudson-srv
                   Copyright 2010 KLab Inc. All rights reserved.
                                                                                      15
構築手順(1/4) on Debian GNU/Linux (lenny)

 ? PHP / Xdebug拡張

# aptitude install php5-dev
# aptitude install php5-mysql
# pecl install xdebug

 ? ”You shuld add “extension=xdebug.so” to php.ini” と出
   力されるが無視
     – 間違いらしいので注意(Xdebug本家サイトより)
 ? 正しくは
     – zend_extension=“xdebug.soへのフルパス”
     – /etc/php5/apache2/conf.d/xdebug.iniへ記述
 ? 有効にするには
     – xdebug.ini へ xdebug.profiler_enable = 1 を追記



                         Copyright 2010 KLab Inc. All rights reserved.
                                                                         16
構築手順(2/4) on Debian GNU/Linux (lenny)

 ? bazaar
     – CVS、Subversion、gitでもOK
     – debianで配布されているものは古い
     – pipで取得 (pip = setuptoolsの後継)

  # aptitude install python-dev
  # aptitude install libroot-python-dev
  # wget http://peak.telecommunity.com/dist/ez_setup.py
  # python ez_setup.py
  # easy_install pip
  # pip install bzr




                        Copyright 2010 KLab Inc. All rights reserved.
                                                                        17
構築手順(3/4) on Debian GNU/Linux (lenny)

 ? webgrind
    – Xdebugが出力するcachegrind.outの可視化
    – PHPで記述
    – http://code.google.com/p/webgrind/ より取得
         ? DocumentRootの適当な場所へ配置
                                                                       webgrind自身が
                                                                       プロファイリング
                                                                       されないように
  # cat .htaccess
  php_flag xdebug.profiler_enable 0




                       Copyright 2010 KLab Inc. All rights reserved.
                                                                                     18
構築手順(4/4) on Debian GNU/Linux (lenny)

 ? Hudsonから Bazaarコマンドを呼び出すた
   め
    – Hudson Bazaar plugin




                                               必要なpluginにチェック入れて
                                               「インストールボタンクリッ
                                                        ク」
               Copyright 2010 KLab Inc. All rights reserved.
                                                                   19
demo

 ? パフォーマンス問題コードを用意
 ? 解消されるまでを確認




       Copyright 2010 KLab Inc. All rights reserved.
                                                       20
webgrind




           これがボトルネックになって
              いることがわかる                           関数単独で要
                                                  したコスト

                                                                関数呼び出し先も
                                                                含んで要したコス
                                                                   ト
                Copyright 2010 KLab Inc. All rights reserved.
                                                                       21
まとめ

? HudsonはJava以外でも使える
? Hudson自体のインストールは簡単
  – PHP環境の方が大変
? CIをLL言語にも導入してソースの健康維
  持を図りましょう


      やらなきゃ☆Hudson!

        Copyright 2010 KLab Inc. All rights reserved.
                                                        22
参考資料(1/2)

 ? Hudson
   – http://hudson-ci.org/
 ? Hudson Debian packages
   – http://hudson-ci.org/debian/
 ? Installing Hudson
   – http://wiki.hudson-
     ci.org/display/HUDSON/Installing+Hudson
 ? HudsonでPHPのユニットテスト
   – http://d.hatena.ne.jp/ssogabe/20081102/1225
     642743

               Copyright 2010 KLab Inc. All rights reserved.
                                                               23
参考資料(2/2)

 ? Xdebug
   – http://xdebug.org/index.php
 ? WebGrind
   – http://code.google.com/p/webgrind/
 ? Profiling PHP with Xdebug and Webgrind
   – http://www.chrisabernethy.com/php-profiling-
     xdebug-webgrind/




               Copyright 2010 KLab Inc. All rights reserved.
                                                               24
ご静聴ありがとうございました

                            質問た~~~いむ




   Copyright 2010 KLab Inc. All rights reserved.
                                                   25

More Related Content

What's hot (20)

PPTX
OpenShift from Easy way to Hard ? Way
ロフト くん
?
PDF
はじめての CircleCI
Yosuke Mizutani
?
PDF
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
Takeshi Morikawa
?
PDF
ProjectAtomic-and-geard
Naoto TAKAHASHI
?
PDF
顿辞肠办别谤は2016年の秋现在どのような状况なのか~忙しい人の5分で分かる顿辞肠办别谤~
Masahito Zembutsu
?
PDF
【アシアル塾】Linux超入門編?第二回 仮想サーバー上にLAMP環境を構築してみよう
アシアル株式会社
?
PDF
自前CF環境を整えよう 2013年11月版
Kazuto Kusama
?
PDF
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
?
PPTX
开発环境を痴补驳谤补苍迟から诲辞肠办别谤に移行してみた
pyar6329
?
PDF
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
Masashi Shinbara
?
PDF
尘颈苍苍别で学ぶクラウド脳
Uchio Kondo
?
PPTX
Ansible+Docker
正太 佐久本
?
PDF
コンテナ時代だからこそ要注目! Cloud Foundry
Kazuto Kusama
?
PDF
マイクロサービス時代の生存戦略 with HashiCorp
Masahito Zembutsu
?
PDF
Niigata.pm #1
hayajo Imai
?
PDF
Reading NATS
Katsunori Kawaguchi
?
PDF
顿辞肠办别谤の仕组みと滨滨闯社内での利用例
maebashi
?
PDF
BOSH-lite で 1VM Cloud Foundry
i_yudai
?
PPTX
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
cyberblack28 Ichikawa
?
PDF
2015-07-27 Docker Introduction ?Dockerの基礎とユースケースに関する考察?
Shuji Yamada
?
OpenShift from Easy way to Hard ? Way
ロフト くん
?
はじめての CircleCI
Yosuke Mizutani
?
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
Takeshi Morikawa
?
ProjectAtomic-and-geard
Naoto TAKAHASHI
?
顿辞肠办别谤は2016年の秋现在どのような状况なのか~忙しい人の5分で分かる顿辞肠办别谤~
Masahito Zembutsu
?
【アシアル塾】Linux超入門編?第二回 仮想サーバー上にLAMP環境を構築してみよう
アシアル株式会社
?
自前CF環境を整えよう 2013年11月版
Kazuto Kusama
?
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
?
开発环境を痴补驳谤补苍迟から诲辞肠办别谤に移行してみた
pyar6329
?
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
Masashi Shinbara
?
尘颈苍苍别で学ぶクラウド脳
Uchio Kondo
?
Ansible+Docker
正太 佐久本
?
コンテナ時代だからこそ要注目! Cloud Foundry
Kazuto Kusama
?
マイクロサービス時代の生存戦略 with HashiCorp
Masahito Zembutsu
?
Niigata.pm #1
hayajo Imai
?
Reading NATS
Katsunori Kawaguchi
?
顿辞肠办别谤の仕组みと滨滨闯社内での利用例
maebashi
?
BOSH-lite で 1VM Cloud Foundry
i_yudai
?
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
cyberblack28 Ichikawa
?
2015-07-27 Docker Introduction ?Dockerの基礎とユースケースに関する考察?
Shuji Yamada
?

Similar to 尝尝言语でも贬耻诲蝉辞苍を使おう! (20)

PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
?
PDF
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
?
PPTX
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
Ryusaburo Tanaka
?
PDF
ハ?ーシ?ョンアッフ?に负けないためのフ?ラクティス
Yuji Tokuda
?
ODP
Hudson (JJUG CCCにて)
Kohsuke Kawaguchi
?
PDF
ドリコム闯别苍办颈苍蝉勉强会资料
Go Sueyoshi (a.k.a sue445)
?
PDF
笔贬笔における搁滨础事情と开発
konekto
?
KEY
ゆるかわ笔丑辫
Ryota Mochizuki
?
PDF
Gitと出会って人生変わった テックヒルズ2013-03-22
Shota Umeda
?
PPTX
エンジニアという职业について
Hisatoshi Kikumoto
?
PDF
闯别苍办颈苍蝉と箩惭别迟别谤で负荷テストの自动化
Satoshi Akama
?
PPT
Albatross
Hiroaki Kubota
?
KEY
搁辞搁周辺知识15项目
saiwaki
?
PDF
レガシーコード改善はじめました 横浜道場
Hiroyuki Ohnaka
?
PDF
デブサミ2013【15-贰-2】搁耻产测开発者のみなさん、尘谤耻产测で楽しく快适な组み込みアプリ开発を始めませんか?
Developers Summit
?
PDF
Trac Plugin Developement with Jenkins
Takahisa Wada
?
PDF
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
?
PDF
地方公司がソーシャルゲーム开発を成功させるための10のポイント
Kentaro Matsui
?
PDF
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
?
PDF
Jjug springセッション
Yuichi Hasegawa
?
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
?
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
?
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
Ryusaburo Tanaka
?
ハ?ーシ?ョンアッフ?に负けないためのフ?ラクティス
Yuji Tokuda
?
Hudson (JJUG CCCにて)
Kohsuke Kawaguchi
?
ドリコム闯别苍办颈苍蝉勉强会资料
Go Sueyoshi (a.k.a sue445)
?
笔贬笔における搁滨础事情と开発
konekto
?
ゆるかわ笔丑辫
Ryota Mochizuki
?
Gitと出会って人生変わった テックヒルズ2013-03-22
Shota Umeda
?
エンジニアという职业について
Hisatoshi Kikumoto
?
闯别苍办颈苍蝉と箩惭别迟别谤で负荷テストの自动化
Satoshi Akama
?
Albatross
Hiroaki Kubota
?
搁辞搁周辺知识15项目
saiwaki
?
レガシーコード改善はじめました 横浜道場
Hiroyuki Ohnaka
?
デブサミ2013【15-贰-2】搁耻产测开発者のみなさん、尘谤耻产测で楽しく快适な组み込みアプリ开発を始めませんか?
Developers Summit
?
Trac Plugin Developement with Jenkins
Takahisa Wada
?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
?
地方公司がソーシャルゲーム开発を成功させるための10のポイント
Kentaro Matsui
?
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
?
Jjug springセッション
Yuichi Hasegawa
?
Ad

More from 碍尝补产株式会社 (14)

PDF
碍尝补产の厂滨事业について
碍尝补产株式会社
?
PDF
KLab si_case
碍尝补产株式会社
?
PDF
KLab si_operation
碍尝补产株式会社
?
PPT
Cheerz presentation110217
碍尝补产株式会社
?
PPT
アクセルメール小冊子2010「安定?確実な携帯メール配信マニュアル ~『届かない』『遅延する』『文字化けする』の回避~」(抜粋版)
碍尝补产株式会社
?
PPT
New cheerz slideshare_version
碍尝补产株式会社
?
PPT
大ヒットソーシャルアプリの里侧
碍尝补产株式会社
?
PDF
尝补尘辫で作るソーシャルアプリの负荷対策~アプリとインフラの调和のテクニック~
碍尝补产株式会社
?
PDF
KLab Social Game Platform ~Symfony1.4活用事例~
碍尝补产株式会社
?
PDF
顿蝉补蝉周りのお话
碍尝补产株式会社
?
KEY
Apache2.3 探訪
碍尝补产株式会社
?
PPT
ベイジアンフィルターによる ユーザー投稿フィルタリングエンジンIshigroid
碍尝补产株式会社
?
碍尝补产の厂滨事业について
碍尝补产株式会社
?
KLab si_operation
碍尝补产株式会社
?
Cheerz presentation110217
碍尝补产株式会社
?
アクセルメール小冊子2010「安定?確実な携帯メール配信マニュアル ~『届かない』『遅延する』『文字化けする』の回避~」(抜粋版)
碍尝补产株式会社
?
New cheerz slideshare_version
碍尝补产株式会社
?
大ヒットソーシャルアプリの里侧
碍尝补产株式会社
?
尝补尘辫で作るソーシャルアプリの负荷対策~アプリとインフラの调和のテクニック~
碍尝补产株式会社
?
KLab Social Game Platform ~Symfony1.4活用事例~
碍尝补产株式会社
?
顿蝉补蝉周りのお话
碍尝补产株式会社
?
Apache2.3 探訪
碍尝补产株式会社
?
ベイジアンフィルターによる ユーザー投稿フィルタリングエンジンIshigroid
碍尝补产株式会社
?
Ad

Recently uploaded (9)

PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
色について.pptx .
iPride Co., Ltd.
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?

尝尝言语でも贬耻诲蝉辞苍を使おう!

  • 1. 尝尝言语でも贬耻诲蝉辞苍を使お う! 2010/02/25 研究開発部 佐々木健一 Copyright 2010 KLab Inc. All rights reserved. 1
  • 2. 自己紹介 Copyright 2010 KLab Inc. All rights reserved. 2
  • 3. 自己紹介 ? 名前 – 佐々木健一 ? 沿革 – ~2009年8月 ? プロジェクトマネジメント部に在籍 ? 自社向け携帯サイト開発フレームワーク作成(Java) ? Hudsonをコツコツ使う – 2009年9月~ ? マネジメントよりモノづくりが好きで現部署へ ? LL言語にもCIの必要性を感じつつ今へ至る ? 技術 – 大昔はC,C++ – 今はJavaな人です。 – PythonやRuby、Haskell、Scalaをかじった Copyright 2010 KLab Inc. All rights reserved. 3
  • 4. Hudson(CIサーバ)に対する誤解 ? Java専用CIサーバ? –Java界隈では話題 –LL言語には使えないのでは ? インストール面倒? – JavaVMのインストール – Tomcatのインストール – XMLとの戦い – ああ、ヤダヤダ Copyright 2010 KLab Inc. All rights reserved. 4
  • 5. CI (Continuous Integration)サーバ? ? 携帯サイト展開後不具合出しは大変 – 結合してから判明する不具合もある – 切羽詰ってるし ? 問題は早期に検出したほうがよい – しかも手間なく – 小人さんが自動でやってくれるとうれしいな あ ? そんな小人さん – Continuous Integration (継続結合)サーバ Copyright 2010 KLab Inc. All rights reserved. 5
  • 6. Hudsonとは Webアプリ です 複数ジョブ ジョブの状況をお天 を登録でき 気アイコンで表示 る ジョブを自動的に実施して結 果を残してくれる Hudson先生 Copyright 2010 KLab Inc. All rights reserved. 6
  • 7. 贬耻诲蝉辞苍のインストールは简単だ Copyright 2010 KLab Inc. All rights reserved. 7
  • 8. インストールを簡単にする工夫が ? TomcatとかServletコンテナ不要 – ファイルはhudson.warひとつだけ – java -jar hudson.war で起動できる ? Winstoneという超小型Servlet Container内包 – Tomcatに組み込むことも可能 ? 各種OS向けPackageが用意されている – 佐々木はdebian lennyで使ってみました Copyright 2010 KLab Inc. All rights reserved. 8
  • 9. Windows ? JNLP(Java WebStart)経由で動かせる – http://wiki.hudson- ci.org/display/HUDSON/Installing+Hudson+as +a+Windows+service ? Windows Serviceとして登録 Copyright 2010 KLab Inc. All rights reserved. 9
  • 10. Debian GNU/Linux (lenny) ? debianパッケージとして提供されてる ? Hudson配布元を追加 # wget -O - http://hudson-ci.org/debian/hudson-ci.org.key | sudo apt-key add - # vi /etc/apt/sources.list deb http://hudson-ci.org/debian binary/ ? インストール # apt-get update # aptiude install openjdk-6-jdk # aptitude install hudson Copyright 2010 KLab Inc. All rights reserved. 10
  • 11. 笔贬笔継続プロファイリング环境构筑 Copyright 2010 KLab Inc. All rights reserved. 11
  • 12. HudsonはJava専用ではない ? 確かにHudsonはjavaで書かれている – shellスクリプト呼べる – LL言語用Pluginもある – 使う上でJavaの知識必須ではない ? HudsonのPlugin開発にはJavaの知識必要 ? PHP環境向けにセットアップ – Shellスクリプト呼べるのでPHPでも問題ない – 継続プロファイリング環境を構築してみた Copyright 2010 KLab Inc. All rights reserved. 12
  • 13. 継続プロファイリング環境とは ? 開発中からプロファイリングを行う ? 単体テストと同じ考えで ? 継続して行う ? 回帰的に行う ? 結果を時系列に可視化 ? 意義 ? 性能問題の早期発見 ? 問題の可視化はモチベーションあがる Copyright 2010 KLab Inc. All rights reserved. 13
  • 14. 継続プロファイリング環境 - 構成要素 ? Hudson – 今回の主役 ? Bazaar – 弊社で使用中の分散SCM (git とか Mercurial の仲間) ? XDEBUG – PHP拡張。プロファイリングやコードカバ レージを可能にする。 ? webgrind – プロファイル結果web可視化ツール Copyright 2010 KLab Inc. All rights reserved. 14
  • 15. 継続プロファイリング環境 - 構成要素 http://hudson-srv/webgrind bzr push 開発者 自動チェックアウ ト& デブロイ http://scm-svr/~sasaki-k/bzr-repo/ ソースリポジトリを監視 scm-svr hudson-srv Copyright 2010 KLab Inc. All rights reserved. 15
  • 16. 構築手順(1/4) on Debian GNU/Linux (lenny) ? PHP / Xdebug拡張 # aptitude install php5-dev # aptitude install php5-mysql # pecl install xdebug ? ”You shuld add “extension=xdebug.so” to php.ini” と出 力されるが無視 – 間違いらしいので注意(Xdebug本家サイトより) ? 正しくは – zend_extension=“xdebug.soへのフルパス” – /etc/php5/apache2/conf.d/xdebug.iniへ記述 ? 有効にするには – xdebug.ini へ xdebug.profiler_enable = 1 を追記 Copyright 2010 KLab Inc. All rights reserved. 16
  • 17. 構築手順(2/4) on Debian GNU/Linux (lenny) ? bazaar – CVS、Subversion、gitでもOK – debianで配布されているものは古い – pipで取得 (pip = setuptoolsの後継) # aptitude install python-dev # aptitude install libroot-python-dev # wget http://peak.telecommunity.com/dist/ez_setup.py # python ez_setup.py # easy_install pip # pip install bzr Copyright 2010 KLab Inc. All rights reserved. 17
  • 18. 構築手順(3/4) on Debian GNU/Linux (lenny) ? webgrind – Xdebugが出力するcachegrind.outの可視化 – PHPで記述 – http://code.google.com/p/webgrind/ より取得 ? DocumentRootの適当な場所へ配置 webgrind自身が プロファイリング されないように # cat .htaccess php_flag xdebug.profiler_enable 0 Copyright 2010 KLab Inc. All rights reserved. 18
  • 19. 構築手順(4/4) on Debian GNU/Linux (lenny) ? Hudsonから Bazaarコマンドを呼び出すた め – Hudson Bazaar plugin 必要なpluginにチェック入れて 「インストールボタンクリッ ク」 Copyright 2010 KLab Inc. All rights reserved. 19
  • 20. demo ? パフォーマンス問題コードを用意 ? 解消されるまでを確認 Copyright 2010 KLab Inc. All rights reserved. 20
  • 21. webgrind これがボトルネックになって いることがわかる 関数単独で要 したコスト 関数呼び出し先も 含んで要したコス ト Copyright 2010 KLab Inc. All rights reserved. 21
  • 22. まとめ ? HudsonはJava以外でも使える ? Hudson自体のインストールは簡単 – PHP環境の方が大変 ? CIをLL言語にも導入してソースの健康維 持を図りましょう やらなきゃ☆Hudson! Copyright 2010 KLab Inc. All rights reserved. 22
  • 23. 参考資料(1/2) ? Hudson – http://hudson-ci.org/ ? Hudson Debian packages – http://hudson-ci.org/debian/ ? Installing Hudson – http://wiki.hudson- ci.org/display/HUDSON/Installing+Hudson ? HudsonでPHPのユニットテスト – http://d.hatena.ne.jp/ssogabe/20081102/1225 642743 Copyright 2010 KLab Inc. All rights reserved. 23
  • 24. 参考資料(2/2) ? Xdebug – http://xdebug.org/index.php ? WebGrind – http://code.google.com/p/webgrind/ ? Profiling PHP with Xdebug and Webgrind – http://www.chrisabernethy.com/php-profiling- xdebug-webgrind/ Copyright 2010 KLab Inc. All rights reserved. 24
  • 25. ご静聴ありがとうございました 質問た~~~いむ Copyright 2010 KLab Inc. All rights reserved. 25