LL言語でもHudsonを使お
      う!
      2010/02/25
   研究開発部 佐々木健一



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




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

• 名前
  – 佐々木健一
• 沿革
  – ~2009年8月
    • プロジェクトマネジメント部に在籍
    • 自社向け携帯サイト開発フレームワーク作成(Java)
    • Hudsonをコツコツ使う
  – 200...
Hudson(CIサーバ)に対する誤解


 • Java専用CIサーバ?
  –Java界隈では話題
  –LL言語には使えないのでは
 • インストール面倒?
  – JavaVMのインストール
  – Tomcatのインストール
  – ...
CI (Continuous Integration)サーバ?

 • 携帯サイト展開後不具合出しは大変
    – 結合してから判明する不具合もある
    – 切羽詰ってるし
 • 問題は早期に検出したほうがよい
    – しかも手間なく...
Hudsonとは
 Webアプリ
   です




                                                              複数ジョブ
               ジョブの状況をお天   ...
Hudsonのインストールは簡単だ




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

• TomcatとかServletコンテナ不要
  – ファイルはhudson.warひとつだけ
  – java -jar hudson.war で起動できる
    • Winstoneという超小型Serv...
Windows

 • JNLP(Java WebStart)経由で動かせる
   – http://wiki.hudson-
     ci.org/display/HUDSON/Installing+Hudson+as
     +a+Wi...
Debian GNU/Linux (lenny)

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

 • Hudson配布元を追加
 # wget -O - http://hudson-ci.org/debian/hudson-ci.org....
PHP継続プロファイリング環境構築




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

 • 確かにHudsonはjavaで書かれている
  – shellスクリプト呼べる
  – LL言語用Pluginもある
  – 使う上でJavaの知識必須ではない
    • HudsonのPlugin...
継続プロファイリング環境とは

•       開発中からプロファイリングを行う
    •   単体テストと同じ考えで
    •   継続して行う
    •   回帰的に行う
    •   結果を時系列に可視化
•       意義
 ...
継続プロファイリング環境 - 構成要素

•   Hudson
    – 今回の主役
•   Bazaar
    – 弊社で使用中の分散SCM (git とか Mercurial
      の仲間)
•   XDEBUG
    – PH...
継続プロファイリング環境 - 構成要素




                                                         http://hudson-srv/webgrind
     bzr push
...
構築手順(1/4) on Debian GNU/Linux (lenny)

 • PHP / Xdebug拡張

# aptitude install php5-dev
# aptitude install php5-mysql
# pecl...
構築手順(2/4) on Debian GNU/Linux (lenny)

 • bazaar
     – CVS、Subversion、gitでもOK
     – debianで配布されているものは古い
     – pipで取得 (p...
構築手順(3/4) on Debian GNU/Linux (lenny)

 • webgrind
    – Xdebugが出力するcachegrind.outの可視化
    – PHPで記述
    – http://code.goog...
構築手順(4/4) on Debian GNU/Linux (lenny)

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




                  ...
demo

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




       Copyright 2010 KLab Inc. All rights reserved.
                          ...
webgrind




           これがボトルネックになって
              いることがわかる                           関数単独で要
                            ...
まとめ

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


      やらなきゃ☆Hudson!

   ...
参考資料(1/2)

 • Hudson
   – http://hudson-ci.org/
 • Hudson Debian packages
   – http://hudson-ci.org/debian/
 • Installing ...
参考資料(2/2)

 • Xdebug
   – http://xdebug.org/index.php
 • WebGrind
   – http://code.google.com/p/webgrind/
 • Profiling PHP...
ご静聴ありがとうございました

                            質問た~~~いむ




   Copyright 2010 KLab Inc. All rights reserved.
                ...
Upcoming SlideShare
Loading in …5
×

LL言語でもHudsonを使おう!

6,601 views

Published on

2010/02/25開催 Cyber Agent様 × KLab勉強会資料

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,601
On SlideShare
0
From Embeds
0
Number of Embeds
2,475
Actions
Shares
0
Downloads
17
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

LL言語でもHudsonを使おう!

  1. 1. LL言語でもHudsonを使お う! 2010/02/25 研究開発部 佐々木健一 Copyright 2010 KLab Inc. All rights reserved. 1
  2. 2. 自己紹介 Copyright 2010 KLab Inc. All rights reserved. 2
  3. 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. 4. Hudson(CIサーバ)に対する誤解 • Java専用CIサーバ? –Java界隈では話題 –LL言語には使えないのでは • インストール面倒? – JavaVMのインストール – Tomcatのインストール – XMLとの戦い – ああ、ヤダヤダ Copyright 2010 KLab Inc. All rights reserved. 4
  5. 5. CI (Continuous Integration)サーバ? • 携帯サイト展開後不具合出しは大変 – 結合してから判明する不具合もある – 切羽詰ってるし • 問題は早期に検出したほうがよい – しかも手間なく – 小人さんが自動でやってくれるとうれしいな あ • そんな小人さん – Continuous Integration (継続結合)サーバ Copyright 2010 KLab Inc. All rights reserved. 5
  6. 6. Hudsonとは Webアプリ です 複数ジョブ ジョブの状況をお天 を登録でき 気アイコンで表示 る ジョブを自動的に実施して結 果を残してくれる Hudson先生 Copyright 2010 KLab Inc. All rights reserved. 6
  7. 7. Hudsonのインストールは簡単だ Copyright 2010 KLab Inc. All rights reserved. 7
  8. 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. 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. 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. 11. PHP継続プロファイリング環境構築 Copyright 2010 KLab Inc. All rights reserved. 11
  12. 12. HudsonはJava専用ではない • 確かにHudsonはjavaで書かれている – shellスクリプト呼べる – LL言語用Pluginもある – 使う上でJavaの知識必須ではない • HudsonのPlugin開発にはJavaの知識必要 • PHP環境向けにセットアップ – Shellスクリプト呼べるのでPHPでも問題ない – 継続プロファイリング環境を構築してみた Copyright 2010 KLab Inc. All rights reserved. 12
  13. 13. 継続プロファイリング環境とは • 開発中からプロファイリングを行う • 単体テストと同じ考えで • 継続して行う • 回帰的に行う • 結果を時系列に可視化 • 意義 • 性能問題の早期発見 • 問題の可視化はモチベーションあがる Copyright 2010 KLab Inc. All rights reserved. 13
  14. 14. 継続プロファイリング環境 - 構成要素 • Hudson – 今回の主役 • Bazaar – 弊社で使用中の分散SCM (git とか Mercurial の仲間) • XDEBUG – PHP拡張。プロファイリングやコードカバ レージを可能にする。 • webgrind – プロファイル結果web可視化ツール Copyright 2010 KLab Inc. All rights reserved. 14
  15. 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. 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. 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. 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. 19. 構築手順(4/4) on Debian GNU/Linux (lenny) • Hudsonから Bazaarコマンドを呼び出すた め – Hudson Bazaar plugin 必要なpluginにチェック入れて 「インストールボタンクリッ ク」 Copyright 2010 KLab Inc. All rights reserved. 19
  20. 20. demo • パフォーマンス問題コードを用意 • 解消されるまでを確認 Copyright 2010 KLab Inc. All rights reserved. 20
  21. 21. webgrind これがボトルネックになって いることがわかる 関数単独で要 したコスト 関数呼び出し先も 含んで要したコス ト Copyright 2010 KLab Inc. All rights reserved. 21
  22. 22. まとめ • HudsonはJava以外でも使える • Hudson自体のインストールは簡単 – PHP環境の方が大変 • CIをLL言語にも導入してソースの健康維 持を図りましょう やらなきゃ☆Hudson! Copyright 2010 KLab Inc. All rights reserved. 22
  23. 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. 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. 25. ご静聴ありがとうございました 質問た~~~いむ Copyright 2010 KLab Inc. All rights reserved. 25

×