SlideShare a Scribd company logo
GroovyServ
                高速起動Groovy
                JGGUG スペシャルG*ワークショップ

                      2010/7/24
                  NTTソフトウェア株式会社
                       上原潤二

2010年7月27日火曜日
自己紹介
                上原潤二
                NTTソフトウェア株式会社
                JGGUG運営員
                ブログ「Grな日々」
                「Grails徹底入門」2章執筆
                kobo(工房)プロジェクト
                  groovyserv, kobo-commons, String#tr()
                  目的: 日本発のGroovyへの貢献
2010年7月27日火曜日
目次
            概要編                       使ってみよう編
                GroovyServって何?         インストール
                起動が速いと何がうれしいの?         使い方
                どのぐらい速い?(Win,Mac)      groovyclient
                GroovyServ構成図          groovyserver
                通常のGroovy実行            デモ
                スクリプト開発               その他編
                効果が薄い用途                制約について
                                       セキュリティについて
                                       ロードマップ
                                       まとめ



2010年7月27日火曜日
GroovyServ
                高速起動Groovy

                  <概要編>

2010年7月27日火曜日
GroovyServって何?
                スクリプト起動速度が爆速に!
                (x10 ∼20)
                Groovy処理系を常駐起動(groovyserver)
                Groovyスクリプト実行は、処理を
                groovyserverに移譲する小さなCプログラム
                で行う(groovyclient)
                 groovyserver-client間はsocket通信


2010年7月27日火曜日
起動が速いと何がうれしいの?
                dankogai氏曰く
                       そんなわけで、現存の言語では最も美人な Scala な
                       のだが、Scala の最大の特長である「Java上で動
                       く」というのは、最大の欠点でもある。(中略)最も
                       それを強く感じるのは、Scalaをスクリプトとして
                       使ったときだろう。

                       たとえば、上の Hello, World! のサンプルは、今時の
                       パソコンでも実行に一秒を要する。Java VMを立ち
  起動0.27秒じゃ            上げ、Scala環境を初期化するのにそれだけかかるの
   遅いyo!!              だ。(中略) コンパイルした場合でも、0.27秒。ワン
                       ライナーを書くのにも最適な Scala なのに(後略)

                       http://blog.livedoor.jp/dankogai/archives/51275491.html
2010年7月27日火曜日
どのぐらい速い?(Win編)
                   groovy -e println hello world

                                                      実行時間(sec)                        比率

                     normal groovy                          3.041                      1.0

                    Installer版groovy                        1.262                      2.4

                    groovyclient(C版)                        0.155                      19.6

                 groovyclient(Ruby版)                        0.193                      15.8


                •Groovy 1.7.3, GroovyServ 0.4-SNAPSHOT, WinXP SP3,Core2Duo 2GHz,JDK1
                •timeコマンドでreal時間を計測。10回実行した平均。

2010年7月27日火曜日
どのぐらい速い?(Mac編)
                  groovy -e println hello world

                                                       実行時間(sec)                       比率

                     normal groovy                           1.112                     1.0

                Mac Ports版groovy(1.7.2)                      0.321                     3.5

                   groovyclient(C版)                         0.031                     35.8

                 groovyclient(Ruby版)                         0.041                     27.1

          •Groovy 1.7.3, GroovyServ 0.4-SNAPSHOT, MacOSX 10.6.3, MacBook Core2duo 2.53GHz, JDK1.6.0u20
          •timeコマンドでreal時間を計測。10回実行した平均。


2010年7月27日火曜日
GroovyServ構成図
                    Shell Environment                                 User Groovy
                                                                         Srcipt
                  C
                   LA
                       SS
                  cm

                         PA

                                                                 System.in
                           TH
                    d.




                                                                System.out
                             lin

                               en
                                 e


                                  v

                                                                SYstem.err
                                   ar
                                      gs




                  Ctrl-C              groovyclient      TCP/IP
                                                                      groovyserver
                            i   n
                       s td
                         de t
                       st d o u
                           rr




                                                                             JavaVM
                          st




                                    exit status
                                                  File System

                                                  Authentication
                                                   Cookie File



2010年7月27日火曜日
通常のGroovy実行
                            User Groovy
                   Shell Environment
                                          Srcipt
                 C
                  LA


                                                     System.in
                      SS
                 cm

                        PA

                                                    System.out
                          TH
                   d.




                                                    SYstem.err
                            lin

                              en
                                e


                                 v
                                  ar
                                     gs




                 Ctrl-C                   groovy


                           i   n
                      s td
                        de t
                      st d o u




                                           JavaVM
                          rr
                         st




                        exit status
                                                    File System




2010年7月27日火曜日
スクリプト開発
                Groovyは本来、PerlやRubyにも拮抗しうる
                強力なスクリプト言語
                ワンライナー
                フィルタ、パイプ
                コンパイル不要
                でも、レスポンス悪いとやる気が出ない
                トライ&エラーを繰り返すため
                そこで、GroovyServですよ

2010年7月27日火曜日
効果が薄い用途
                サーバ開発
                 起動が頻繁ではない
                GUIアプリケーション
                 起動が頻繁ではない
                CUIアプリでシェルのように起動して操作するもの
                 起動が頻繁ではない
                cronで定期的に起動
                 起動レスポンスが重要ではない


2010年7月27日火曜日
GroovyServ
                高速起動Groovy

                <使ってみよう編>

2010年7月27日火曜日
インストール
                http://kobo.github.com/groovyserv




                展開したフォルダのbinにPATHを通す
                HOMEを設定する(0.3まで)
                GROOVY_HOMEを確認
                好みにより、aliasを設定
                (DOS窓ではdoskeyで設定可)



2010年7月27日火曜日
使い方
                コマンド、2つ。
                groovyclient
                groovyserver




2010年7月27日火曜日
groovyclient
                groovyコマンドの代わり
                 初回起動時にgroovyserverがバックグラウ
                 ンド起動
                 引数・オプションはgroovyserverにそのま
                 ま渡される
                エイリアス/マクロ定義が便利
                 alias groovy=groovyclient (U*IX,cygwin)
                 doskey groovy=groovyclient (windows)
2010年7月27日火曜日
groovyserver
                groovyserv本体
                使い方
                 groovyserver             明示的な起動
                 groovyserver -r
                 groovyserver -k
                                      再起動
                                          停止          }  win/非cygwin
                                                           で利用不可

                 groovyserver -v          詳細ログ
                  ログ出力先:        /.groovy/groovyserv/groovyserver.log


2010年7月27日火曜日
デモ




2010年7月27日火曜日
GroovyServ
                高速起動Groovy

                 <その他編>

2010年7月27日火曜日
制約について
                CWD問題
                 異なるカレントディレクトリを持
                 つような複数スクリプトを同時に
                 は実行できない
                非cygwin版では-r,-kが利用できない
                Permgen問題


2010年7月27日火曜日
セキュリティについて
                何もしないと何でも外部から実行でき
                てしまうため防御が必要
                 秘密のcookieファイルによる認証
                   ファイルシステムベース
                 localhostからの接続のみに制限
                どうしても分散実行したい場合、今のと
                ころssh port forwarding + NFSで。


2010年7月27日火曜日
ロードマップ
                Groovyserv 0.4リリース…8/4
                 多くのbugfix、win設定簡易化
                将来希望
                 Native Installerに組み込んだ上で
                 Windows Installer版で提供
                   groovy --with-groovyserv


2010年7月27日火曜日
まとめ
                groovyservをよろしく
                 是非お試しください
                 バグ報告大歓迎です




2010年7月27日火曜日

More Related Content

GroovyServ concept, how to use and outline.

  • 1. GroovyServ 高速起動Groovy JGGUG スペシャルG*ワークショップ 2010/7/24 NTTソフトウェア株式会社 上原潤二 2010年7月27日火曜日
  • 2. 自己紹介 上原潤二 NTTソフトウェア株式会社 JGGUG運営員 ブログ「Grな日々」 「Grails徹底入門」2章執筆 kobo(工房)プロジェクト groovyserv, kobo-commons, String#tr() 目的: 日本発のGroovyへの貢献 2010年7月27日火曜日
  • 3. 目次 概要編 使ってみよう編 GroovyServって何? インストール 起動が速いと何がうれしいの? 使い方 どのぐらい速い?(Win,Mac) groovyclient GroovyServ構成図 groovyserver 通常のGroovy実行 デモ スクリプト開発 その他編 効果が薄い用途 制約について セキュリティについて ロードマップ まとめ 2010年7月27日火曜日
  • 4. GroovyServ 高速起動Groovy <概要編> 2010年7月27日火曜日
  • 5. GroovyServって何? スクリプト起動速度が爆速に! (x10 ∼20) Groovy処理系を常駐起動(groovyserver) Groovyスクリプト実行は、処理を groovyserverに移譲する小さなCプログラム で行う(groovyclient) groovyserver-client間はsocket通信 2010年7月27日火曜日
  • 6. 起動が速いと何がうれしいの? dankogai氏曰く そんなわけで、現存の言語では最も美人な Scala な のだが、Scala の最大の特長である「Java上で動 く」というのは、最大の欠点でもある。(中略)最も それを強く感じるのは、Scalaをスクリプトとして 使ったときだろう。 たとえば、上の Hello, World! のサンプルは、今時の パソコンでも実行に一秒を要する。Java VMを立ち 起動0.27秒じゃ 上げ、Scala環境を初期化するのにそれだけかかるの 遅いyo!! だ。(中略) コンパイルした場合でも、0.27秒。ワン ライナーを書くのにも最適な Scala なのに(後略) http://blog.livedoor.jp/dankogai/archives/51275491.html 2010年7月27日火曜日
  • 7. どのぐらい速い?(Win編) groovy -e println hello world 実行時間(sec) 比率 normal groovy 3.041 1.0 Installer版groovy 1.262 2.4 groovyclient(C版) 0.155 19.6 groovyclient(Ruby版) 0.193 15.8 •Groovy 1.7.3, GroovyServ 0.4-SNAPSHOT, WinXP SP3,Core2Duo 2GHz,JDK1 •timeコマンドでreal時間を計測。10回実行した平均。 2010年7月27日火曜日
  • 8. どのぐらい速い?(Mac編) groovy -e println hello world 実行時間(sec) 比率 normal groovy 1.112 1.0 Mac Ports版groovy(1.7.2) 0.321 3.5 groovyclient(C版) 0.031 35.8 groovyclient(Ruby版) 0.041 27.1 •Groovy 1.7.3, GroovyServ 0.4-SNAPSHOT, MacOSX 10.6.3, MacBook Core2duo 2.53GHz, JDK1.6.0u20 •timeコマンドでreal時間を計測。10回実行した平均。 2010年7月27日火曜日
  • 9. GroovyServ構成図 Shell Environment User Groovy Srcipt C LA SS cm PA System.in TH d. System.out lin en e v SYstem.err ar gs Ctrl-C groovyclient TCP/IP groovyserver i n s td de t st d o u rr JavaVM st exit status File System Authentication Cookie File 2010年7月27日火曜日
  • 10. 通常のGroovy実行 User Groovy Shell Environment Srcipt C LA System.in SS cm PA System.out TH d. SYstem.err lin en e v ar gs Ctrl-C groovy i n s td de t st d o u JavaVM rr st exit status File System 2010年7月27日火曜日
  • 11. スクリプト開発 Groovyは本来、PerlやRubyにも拮抗しうる 強力なスクリプト言語 ワンライナー フィルタ、パイプ コンパイル不要 でも、レスポンス悪いとやる気が出ない トライ&エラーを繰り返すため そこで、GroovyServですよ 2010年7月27日火曜日
  • 12. 効果が薄い用途 サーバ開発 起動が頻繁ではない GUIアプリケーション 起動が頻繁ではない CUIアプリでシェルのように起動して操作するもの 起動が頻繁ではない cronで定期的に起動 起動レスポンスが重要ではない 2010年7月27日火曜日
  • 13. GroovyServ 高速起動Groovy <使ってみよう編> 2010年7月27日火曜日
  • 14. インストール http://kobo.github.com/groovyserv 展開したフォルダのbinにPATHを通す HOMEを設定する(0.3まで) GROOVY_HOMEを確認 好みにより、aliasを設定 (DOS窓ではdoskeyで設定可) 2010年7月27日火曜日
  • 15. 使い方 コマンド、2つ。 groovyclient groovyserver 2010年7月27日火曜日
  • 16. groovyclient groovyコマンドの代わり 初回起動時にgroovyserverがバックグラウ ンド起動 引数・オプションはgroovyserverにそのま ま渡される エイリアス/マクロ定義が便利 alias groovy=groovyclient (U*IX,cygwin) doskey groovy=groovyclient (windows) 2010年7月27日火曜日
  • 17. groovyserver groovyserv本体 使い方 groovyserver 明示的な起動 groovyserver -r groovyserver -k 再起動 停止 } win/非cygwin で利用不可 groovyserver -v 詳細ログ ログ出力先: /.groovy/groovyserv/groovyserver.log 2010年7月27日火曜日
  • 19. GroovyServ 高速起動Groovy <その他編> 2010年7月27日火曜日
  • 20. 制約について CWD問題 異なるカレントディレクトリを持 つような複数スクリプトを同時に は実行できない 非cygwin版では-r,-kが利用できない Permgen問題 2010年7月27日火曜日
  • 21. セキュリティについて 何もしないと何でも外部から実行でき てしまうため防御が必要 秘密のcookieファイルによる認証 ファイルシステムベース localhostからの接続のみに制限 どうしても分散実行したい場合、今のと ころssh port forwarding + NFSで。 2010年7月27日火曜日
  • 22. ロードマップ Groovyserv 0.4リリース…8/4 多くのbugfix、win設定簡易化 将来希望 Native Installerに組み込んだ上で Windows Installer版で提供 groovy --with-groovyserv 2010年7月27日火曜日
  • 23. まとめ groovyservをよろしく 是非お試しください バグ報告大歓迎です 2010年7月27日火曜日