[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
LL言語でもHudsonを使お
      う!
      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
Hudsonのインストールは簡単だ




    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
PHP継続プロファイリング環境構築




     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

LL言語でもHudsonを使おう!

  • 1. LL言語でもHudsonを使お う! 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. Hudsonのインストールは簡単だ 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. PHP継続プロファイリング環境構築 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