SlideShare a Scribd company logo
JRuby on Rails JJUG  クロスコミュニティカンファレンス 田中 洋一郎 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
自己紹介 田中 洋一郎 ATL Systems, Inc.  チーフアーキテクト S2Wicket コミッタ こみゅすけ管理人 言語歴 Java 13 年目 Ruby  半年と少々 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
アジェンダ JRuby の背景 JRuby で Ruby on Rails を動かす理由 JRuby on Rails の実践 JRuby ならではの Java 連携 JRuby on Rails のメリット・デメリット Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Script Engine AWK(Jawk 0.14), BeanShell(BeanShell 2.0b5), ejs, FreeMarker(FreeMarker 2.3.11), Groovy(Groovy 1.5.6), Jaskell(Jaskell 1.0), Java, JavaScript(Rhino 1.6R7), Jelly(Jelly 1.0), JEP(Java Math Expression Parser 2.4.0), Jexl(Jexl 1.0), jst(TrimPath JavaScript Template 1.0.38), JudoScript(JudoScript 0.9), JUEL(JUEL 2.1.0-rc2), OGNL(OGNL 2.6.9), Pnuts(Pnuts 1.1), Python(Jython 2.2.1), Ruby(JRuby 1.1), Scheme(SISC 1.16.6), Sleep(Sleep 2.0), Tcl(Jacl 1.3.3), Velocity(Velocity 1.5), XPath, XSLT JavaFX Script, AppleScript, Bex Script, OCaml Script, PHP, Smalltalk, CajuScript Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Script Engine AWK(Jawk 0.14), BeanShell(BeanShell 2.0b5), ejs, FreeMarker(FreeMarker 2.3.11), Groovy(Groovy 1.5.6), Jaskell(Jaskell 1.0), Java, JavaScript(Rhino 1.6R7), Jelly(Jelly 1.0), JEP(Java Math Expression Parser 2.4.0), Jexl(Jexl 1.0), jst(TrimPath JavaScript Template 1.0.38), JudoScript(JudoScript 0.9), JUEL(JUEL 2.1.0-rc2), OGNL(OGNL 2.6.9), Pnuts(Pnuts 1.1), Python(Jython 2.2.1),  Ruby(JRuby 1.1) , Scheme(SISC 1.16.6), Sleep(Sleep 2.0), Tcl(Jacl 1.3.3), Velocity(Velocity 1.5), XPath, XSLT JavaFX Script, AppleScript, Bex Script, OCaml Script, PHP, Smalltalk, CajuScript Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby まつもとゆきひろ氏作のコンピュータ言語 「オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。 エレガントな文法を持ち、自然に読み書きができます。」  〜 Ruby ホームページより〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby Ruby の特徴  〜 Ruby ホームページより〜 シンプルな文法 普通のオブジェクト指向機能 ( クラス、メソッドなど ) 特殊なオブジェクト指向機能 (Mixin 、特異メソッドなど ) 演算子オーバーロード 例外処理機能 イテレータとクロージャ ガーベージコレクタ ダイナミックローディング 移植性の高さ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Programming Language Wars 〜 radar.orailly.com より〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Programming Language Trends 〜 radar.orailly.com より〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails Ruby による Web アプリフレームワーク 「 Ruby on Rails is an open-source web framework that’s optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration. 」  〜 Rails ホームページより〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails RoR の特徴 Model View Controller アーキテクチャ Don’t Repeat Yourself ( 同じことを繰り返さない ) Convention over Configuration ( 設定よりも規約 ) Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails フルスタック Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 dispatcher.cgi routes.rb Controller View Model Database ActionPack ActiveRecord 呼び出す Controller を特定 O/R マッピング Model への操作と View の決定 HTML や XML のレンダリング
Ruby on Rails コードセットの早期入手 rails コマンド、 script/generate スクリプトによる初期コードの自動生成 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails テスト環境の充実 Fixtures によるテストデータの自動投入 Function Test による Controller のテスト assert_select によるレンダリング結果のテスト Integration Test によるシナリオテスト 上記は全てコード記述&繰り返し実行が可能 Ruby on Rails において、最も重要 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails その他にも Web アプリケーション開発は当然 MVC によるアーキテクチャ プラグインによる機能拡張 RESTful サービスの実装プラットフォーム XML⇔Model 変換や Builder 、 Routing など WebService 系実装( SOAP など)もサポート MQ も対応可能 サクサク開発 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails 開発時のメリットは非常に大きい シンプルなアーキテクチャ コードセットの早期入手 テスト環境の充実 運用面は? Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails 運用環境 Apache, mod_proxy, mod_proxy_balancer LiteSpeed, Pound Lighttpd, FastCGI Mongrel, Mongrel Cluster mod_rails Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Ruby on Rails RoR アプリの安定運用環境は非常に難しい UNIX 系サーバソフトウェアの知識が必要 そもそも CGI なので・・・ 経験が浅く、公開されている情報が少ない 負荷分散を図りにくい ビジネストランザクションに対応できない 成功例が極端に少ない Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Java JavaEE (旧 J2EE )の歴史 初登場は 2000 年 今年で 8 年目 多くの企業が採用実績を持つ スケールアウト可能 運用監視面の強さ 競争原理の導入と実績 多くのコンテナが成長 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Java JavaEE コンテナ Apache JServ Apache Tomcat BEA Weblogic IBM WebSphere Oracle Application Server SunOne Application Server JBoss Application Server Hitachi Cosminexus Web OTX Interstage Geronimo GlassFish Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Java 運用時のメリットは非常に大きい 選択肢の豊富さ スケールアウトしやすいアーキテクチャ 運用監視の充実 多くの稼働実績 情報の豊富さ 開発時は? Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby JavaVM 上で Ruby コードを実行可能にする 「 JRuby is an 100% pure-Java implementation of the Ruby programming language. 」  〜 Ruby ホームページより〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby JRuby の機能  〜 JRuby ホームページより〜 A 1.8.6 compatible Ruby Interpreter written in 100% pre Java Most Builtin Ruby classes provided Support for interacting with and defining java classes from within ruby Bean Scripting Framework(BSF) support Distributed under a tri-license(CPL/GPL/LGPL) Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby JRuby のインストール JDK のインストール 環境変数 JAVA_HOME を設定 アーカイブを展開 http://dist.codehaus.org/jruby/jruby-bin-1.1.1.tar.gz 環境変数 JRUBY_HOME を設定 環境変数 PATH に $JRUBY_HOME/bin を追加 jruby -v を実行 ruby 1.8.6 (2008-04-28 rev 6555) [i386-jruby1.1.1] Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby JRuby のテスト Ruby on Rails アプリが稼働すること Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby 上で Ruby on Rails アプリを動かす 開発時 Ruby 言語の特性がメリットとなる Ruby on Rails の開発環境の良さをそのまま得られる 運用時 JavaEE の運用環境の良さをそのまま得られる より多くの選択肢を手にすることができる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails Ruby on Rails のインストール CRuby の場合 gem install rails --include-dependencies JRuby の場合 jruby -S gem install rails --include-dependencies gem は JRuby に同梱されている jruby -S rails -v を実行 Rails 2.0.2 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails Ruby on Rails の各種コマンド実行 通常 ruby とするところを jruby とするだけ jruby -S rails  〜 jruby -S rake  〜 jruby ./script/generate  〜 jruby ./script/server  〜 ・・・ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails データベース接続 Ruby on Rails に標準搭載の接続機構 Ruby on Rails 標準のやり方に沿えば良い ActiveRecord-JDBC jruby -S gem install activerecord-jdbc database.yml adapter: jdbc driver: [JDBC ドライバのクラス名 ] jndi: [ データソース名 ] environment.rb にもおまじないを追記 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby での Ruby on Rails の実行形態 Development Mode WEBrick を起動  - jruby ./script/server Test Mode jruby -S rake test Production Mode war ファイルを作成し、 AP サーバにデプロイ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails war ファイル作成 goldspike jruby ./script/plugin install svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike jruby -S rake war:standalone:create warbler ( 内部で goldspike を利用 ) jruby -S gem install warbler warble config warble war あとは war ファイルを AP サーバにデプロイするだけ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails goldspike Servlet によるマルチスレッドモデルになる CGI に比べてパフォーマンス的に有利 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 RailsServlet Rails App JRuby ActiveRecord-JDBC JDBC Driver Database
JRuby on Rails 冗長化の際のセッションの扱い CookieSession の場合 そのままで問題なし ActiveRecordSession の場合 そのままで問題なし FileSession の場合 冗長化構成では使えない MemCachedSession の場合 MemCached のクラスタ化で対応可? Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby ならではのアーキテクチャ EJB との連携 Model に EJB を適用 Java AP サーバ提供の分散 Tx 環境を利用可能 RMI の利用 他システム連携として適用 既存システムを活用できる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby on Rails と EJB Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 EJB Database dispatcher.cgi routes.rb Controller View ActionPack リモート呼び出し
JRuby on Rails サンプル package jp.eisbahn.ejb; import javax.ejb.Remote; @Remote public interface Hello { public void sayHello(String name); } Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails サンプル package jp.eisbahn.ejb; import javax.ejb.Stateless; public @Stateless class HelloImpl implements Hello { public void sayHello(String name) { return “Hello! “ + name + “-san.”; } } Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails サンプル InitialContext context = new InitialContext(); Object ref = context.lookup(“ejb/Hello/remote”); Hello target = (Hello)PortableRemoteObject.narrow(ref, Hello.class); target.sayHello(“yoichiro”); Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails サンプル require ‘java’ include_class ‘javax.naming.InitialContext’ include_class ‘javax.rmi.PortableRemoteObject’ include_class ‘jp.eisbahn.ejb.Hello’ context = InitialContext.new ref = context.lookup(‘ejb/Hello/remote’) hello = PortableRemoteObject.narrow(ref, Hello) hello.sayHello(‘yoichiro’) Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby ならではの Java 連携 オブジェクトのプロパティに対する操作 Java の場合 model.setName(‘yoichiro’); String name = model.getName(); JRuby の場合 model.name = ‘yoichiro’ name = model.name Ruby らしいメソッド呼び出し Java の場合 action.doProcess(); JRuby の場合 action.do_process Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby 上で Ruby on Rails アプリを動かす 開発時 Ruby 言語の特性がメリットとなる Ruby on Rails の開発環境の良さをそのまま得られる 運用時 JavaEE の運用環境の良さをそのまま得られる より多くの選択肢を手にすることができる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby 上で Ruby on Rails アプリを作る IDE の恩恵 NetBeans 6.1 は Ruby コーディングに向いている デバッガが使えるのはやっぱり強力 GlassFish の JRuby サポート JRuby がコンポーネントとして登録可能 glassfish gem: GlassFish へのデプロイが手軽になる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
JRuby on Rails JRuby のデメリット 何といっても日本語 UTF-8 以外は全滅と言ってもいいかもしれない 携帯アプリを作ろうと思うと致命的 動いちゃえば速い でも起動が遅い jruby -S rake test を繰り返し実行するのが苦痛になる 安定はするが、瞬発力はまだまだ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
まとめ JRuby の背景 JRuby で Ruby on Rails を動かす理由 JRuby on Rails の実践 JRuby ならではの Java 連携 JRuby on Rails のメリット・デメリット Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
最後に Blog  「天使やカイザーと呼ばれて」 http://www.eisbahn.jp/yoichiro/ こみゅすけ http://commusuke.eisbahn.jp/ JRuby on Rails on GlassFish 続きは「パネルディスカッション」で・・・ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
ありがとうございました Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30

More Related Content

PPTX
技術勉強会(Solr入門編)
PDF
Unified JVM Logging
PDF
TOPPERSプロジェクト紹介 OSC2016京都
PPTX
java.lang.OutOfMemoryError #渋谷java
PPTX
Introduction to JIT Compiler in JVM
PDF
Java 10でぼくたちの生活はどう変わるの?
PDF
20160906 pplss ishizaki public
PDF
有用なRtcの紹介
技術勉強会(Solr入門編)
Unified JVM Logging
TOPPERSプロジェクト紹介 OSC2016京都
java.lang.OutOfMemoryError #渋谷java
Introduction to JIT Compiler in JVM
Java 10でぼくたちの生活はどう変わるの?
20160906 pplss ishizaki public
有用なRtcの紹介

What's hot (9)

PDF
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
PDF
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
PDF
JVM のいろはにほ #javajo
PDF
HeapStats @ Seasar Conference 2015 LT
PDF
OpenCVをAndroidで動かしてみた
PPTX
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
PDF
2013 summercamp 02
PDF
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
PDF
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
JVM のいろはにほ #javajo
HeapStats @ Seasar Conference 2015 LT
OpenCVをAndroidで動かしてみた
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
2013 summercamp 02
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
Ad

Similar to JRuby on Rails (20)

PDF
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
PDF
Public 20100828 j_ruby_kaigi_10things_jror_with_javaee
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
KEY
Real world rails
PPT
何でRuby
PDF
nomlab_okayamaruby_slide
PDF
The Essence of Using Ruby on Rails in Corporations
PDF
Summary of Ruby
PDF
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
PDF
超高速アプリ開発法
PDF
JavaとRubyのすてきな関係
KEY
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
PDF
Ruby Enterprise Environment
PDF
Sinatraでwebアプリケーション開発を学ぶ
PDF
ゼロからのプログラミングRails講座 Codeanywhere版
KEY
JRubyで作るapiサーバー
PPTX
そんな装備で大丈夫か?
PDF
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
PDF
Ruby on Rails 入門
PPT
Ruby on rails on hudsonの活用事例
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
Public 20100828 j_ruby_kaigi_10things_jror_with_javaee
Ruby on Rails を用いたWEBアプリケーションの開発
Real world rails
何でRuby
nomlab_okayamaruby_slide
The Essence of Using Ruby on Rails in Corporations
Summary of Ruby
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
超高速アプリ開発法
JavaとRubyのすてきな関係
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
Ruby Enterprise Environment
Sinatraでwebアプリケーション開発を学ぶ
ゼロからのプログラミングRails講座 Codeanywhere版
JRubyで作るapiサーバー
そんな装備で大丈夫か?
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Ruby on Rails 入門
Ruby on rails on hudsonの活用事例
Ad

More from Yoichiro Tanaka (15)

PPTX
Navigate users from assistant app to android app
PPTX
Chrome Extensionsの基本とデザインパターン
PPTX
Chrome Extensionsから見るWebExtensions
PPTX
みんなの知らないChrome appsの世界
PPTX
Chromeウェブストア - Html5とか勉強会42
PPTX
Info scoop opensource
PDF
SocialWeb-Japan Vol.2 20090428
PPT
JavaEdge第3回ライブセッション
PPT
maven2+aptで楽々ドキュメント
PPT
丸山先生レクチャーシリーズ2007-2008
PPT
Sun Tech Days 2007 Mash up
PPT
体操競技のルール改正と今後の日本の方向性
PPT
Wicket勉強会2
PPS
世間の荒波を乗りこなせ!
Navigate users from assistant app to android app
Chrome Extensionsの基本とデザインパターン
Chrome Extensionsから見るWebExtensions
みんなの知らないChrome appsの世界
Chromeウェブストア - Html5とか勉強会42
Info scoop opensource
SocialWeb-Japan Vol.2 20090428
JavaEdge第3回ライブセッション
maven2+aptで楽々ドキュメント
丸山先生レクチャーシリーズ2007-2008
Sun Tech Days 2007 Mash up
体操競技のルール改正と今後の日本の方向性
Wicket勉強会2
世間の荒波を乗りこなせ!

JRuby on Rails

  • 1. JRuby on Rails JJUG クロスコミュニティカンファレンス 田中 洋一郎 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 2. 自己紹介 田中 洋一郎 ATL Systems, Inc. チーフアーキテクト S2Wicket コミッタ こみゅすけ管理人 言語歴 Java 13 年目 Ruby 半年と少々 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 3. アジェンダ JRuby の背景 JRuby で Ruby on Rails を動かす理由 JRuby on Rails の実践 JRuby ならではの Java 連携 JRuby on Rails のメリット・デメリット Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 4. Script Engine AWK(Jawk 0.14), BeanShell(BeanShell 2.0b5), ejs, FreeMarker(FreeMarker 2.3.11), Groovy(Groovy 1.5.6), Jaskell(Jaskell 1.0), Java, JavaScript(Rhino 1.6R7), Jelly(Jelly 1.0), JEP(Java Math Expression Parser 2.4.0), Jexl(Jexl 1.0), jst(TrimPath JavaScript Template 1.0.38), JudoScript(JudoScript 0.9), JUEL(JUEL 2.1.0-rc2), OGNL(OGNL 2.6.9), Pnuts(Pnuts 1.1), Python(Jython 2.2.1), Ruby(JRuby 1.1), Scheme(SISC 1.16.6), Sleep(Sleep 2.0), Tcl(Jacl 1.3.3), Velocity(Velocity 1.5), XPath, XSLT JavaFX Script, AppleScript, Bex Script, OCaml Script, PHP, Smalltalk, CajuScript Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 5. Script Engine AWK(Jawk 0.14), BeanShell(BeanShell 2.0b5), ejs, FreeMarker(FreeMarker 2.3.11), Groovy(Groovy 1.5.6), Jaskell(Jaskell 1.0), Java, JavaScript(Rhino 1.6R7), Jelly(Jelly 1.0), JEP(Java Math Expression Parser 2.4.0), Jexl(Jexl 1.0), jst(TrimPath JavaScript Template 1.0.38), JudoScript(JudoScript 0.9), JUEL(JUEL 2.1.0-rc2), OGNL(OGNL 2.6.9), Pnuts(Pnuts 1.1), Python(Jython 2.2.1), Ruby(JRuby 1.1) , Scheme(SISC 1.16.6), Sleep(Sleep 2.0), Tcl(Jacl 1.3.3), Velocity(Velocity 1.5), XPath, XSLT JavaFX Script, AppleScript, Bex Script, OCaml Script, PHP, Smalltalk, CajuScript Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 6. Ruby まつもとゆきひろ氏作のコンピュータ言語 「オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。 エレガントな文法を持ち、自然に読み書きができます。」 〜 Ruby ホームページより〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 7. Ruby Ruby の特徴 〜 Ruby ホームページより〜 シンプルな文法 普通のオブジェクト指向機能 ( クラス、メソッドなど ) 特殊なオブジェクト指向機能 (Mixin 、特異メソッドなど ) 演算子オーバーロード 例外処理機能 イテレータとクロージャ ガーベージコレクタ ダイナミックローディング 移植性の高さ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 8. Programming Language Wars 〜 radar.orailly.com より〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 9. Programming Language Trends 〜 radar.orailly.com より〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 10. Ruby on Rails Ruby による Web アプリフレームワーク 「 Ruby on Rails is an open-source web framework that’s optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration. 」 〜 Rails ホームページより〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 11. Ruby on Rails RoR の特徴 Model View Controller アーキテクチャ Don’t Repeat Yourself ( 同じことを繰り返さない ) Convention over Configuration ( 設定よりも規約 ) Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 12. Ruby on Rails フルスタック Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 dispatcher.cgi routes.rb Controller View Model Database ActionPack ActiveRecord 呼び出す Controller を特定 O/R マッピング Model への操作と View の決定 HTML や XML のレンダリング
  • 13. Ruby on Rails コードセットの早期入手 rails コマンド、 script/generate スクリプトによる初期コードの自動生成 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 14. Ruby on Rails テスト環境の充実 Fixtures によるテストデータの自動投入 Function Test による Controller のテスト assert_select によるレンダリング結果のテスト Integration Test によるシナリオテスト 上記は全てコード記述&繰り返し実行が可能 Ruby on Rails において、最も重要 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 15. Ruby on Rails その他にも Web アプリケーション開発は当然 MVC によるアーキテクチャ プラグインによる機能拡張 RESTful サービスの実装プラットフォーム XML⇔Model 変換や Builder 、 Routing など WebService 系実装( SOAP など)もサポート MQ も対応可能 サクサク開発 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 16. Ruby on Rails 開発時のメリットは非常に大きい シンプルなアーキテクチャ コードセットの早期入手 テスト環境の充実 運用面は? Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 17. Ruby on Rails 運用環境 Apache, mod_proxy, mod_proxy_balancer LiteSpeed, Pound Lighttpd, FastCGI Mongrel, Mongrel Cluster mod_rails Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 18. Ruby on Rails RoR アプリの安定運用環境は非常に難しい UNIX 系サーバソフトウェアの知識が必要 そもそも CGI なので・・・ 経験が浅く、公開されている情報が少ない 負荷分散を図りにくい ビジネストランザクションに対応できない 成功例が極端に少ない Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 19. Java JavaEE (旧 J2EE )の歴史 初登場は 2000 年 今年で 8 年目 多くの企業が採用実績を持つ スケールアウト可能 運用監視面の強さ 競争原理の導入と実績 多くのコンテナが成長 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 20. Java JavaEE コンテナ Apache JServ Apache Tomcat BEA Weblogic IBM WebSphere Oracle Application Server SunOne Application Server JBoss Application Server Hitachi Cosminexus Web OTX Interstage Geronimo GlassFish Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 21. Java 運用時のメリットは非常に大きい 選択肢の豊富さ スケールアウトしやすいアーキテクチャ 運用監視の充実 多くの稼働実績 情報の豊富さ 開発時は? Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 22. JRuby JavaVM 上で Ruby コードを実行可能にする 「 JRuby is an 100% pure-Java implementation of the Ruby programming language. 」 〜 Ruby ホームページより〜 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 23. JRuby JRuby の機能 〜 JRuby ホームページより〜 A 1.8.6 compatible Ruby Interpreter written in 100% pre Java Most Builtin Ruby classes provided Support for interacting with and defining java classes from within ruby Bean Scripting Framework(BSF) support Distributed under a tri-license(CPL/GPL/LGPL) Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 24. JRuby JRuby のインストール JDK のインストール 環境変数 JAVA_HOME を設定 アーカイブを展開 http://dist.codehaus.org/jruby/jruby-bin-1.1.1.tar.gz 環境変数 JRUBY_HOME を設定 環境変数 PATH に $JRUBY_HOME/bin を追加 jruby -v を実行 ruby 1.8.6 (2008-04-28 rev 6555) [i386-jruby1.1.1] Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 25. JRuby JRuby のテスト Ruby on Rails アプリが稼働すること Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 26. JRuby on Rails JRuby 上で Ruby on Rails アプリを動かす 開発時 Ruby 言語の特性がメリットとなる Ruby on Rails の開発環境の良さをそのまま得られる 運用時 JavaEE の運用環境の良さをそのまま得られる より多くの選択肢を手にすることができる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 27. JRuby on Rails Ruby on Rails のインストール CRuby の場合 gem install rails --include-dependencies JRuby の場合 jruby -S gem install rails --include-dependencies gem は JRuby に同梱されている jruby -S rails -v を実行 Rails 2.0.2 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 28. JRuby on Rails Ruby on Rails の各種コマンド実行 通常 ruby とするところを jruby とするだけ jruby -S rails 〜 jruby -S rake 〜 jruby ./script/generate 〜 jruby ./script/server 〜 ・・・ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 29. JRuby on Rails データベース接続 Ruby on Rails に標準搭載の接続機構 Ruby on Rails 標準のやり方に沿えば良い ActiveRecord-JDBC jruby -S gem install activerecord-jdbc database.yml adapter: jdbc driver: [JDBC ドライバのクラス名 ] jndi: [ データソース名 ] environment.rb にもおまじないを追記 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 30. JRuby on Rails JRuby での Ruby on Rails の実行形態 Development Mode WEBrick を起動 - jruby ./script/server Test Mode jruby -S rake test Production Mode war ファイルを作成し、 AP サーバにデプロイ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 31. JRuby on Rails war ファイル作成 goldspike jruby ./script/plugin install svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike jruby -S rake war:standalone:create warbler ( 内部で goldspike を利用 ) jruby -S gem install warbler warble config warble war あとは war ファイルを AP サーバにデプロイするだけ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 32. JRuby on Rails goldspike Servlet によるマルチスレッドモデルになる CGI に比べてパフォーマンス的に有利 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 RailsServlet Rails App JRuby ActiveRecord-JDBC JDBC Driver Database
  • 33. JRuby on Rails 冗長化の際のセッションの扱い CookieSession の場合 そのままで問題なし ActiveRecordSession の場合 そのままで問題なし FileSession の場合 冗長化構成では使えない MemCachedSession の場合 MemCached のクラスタ化で対応可? Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 34. JRuby on Rails JRuby ならではのアーキテクチャ EJB との連携 Model に EJB を適用 Java AP サーバ提供の分散 Tx 環境を利用可能 RMI の利用 他システム連携として適用 既存システムを活用できる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 35. JRuby on Rails JRuby on Rails と EJB Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 EJB Database dispatcher.cgi routes.rb Controller View ActionPack リモート呼び出し
  • 36. JRuby on Rails サンプル package jp.eisbahn.ejb; import javax.ejb.Remote; @Remote public interface Hello { public void sayHello(String name); } Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 37. JRuby on Rails サンプル package jp.eisbahn.ejb; import javax.ejb.Stateless; public @Stateless class HelloImpl implements Hello { public void sayHello(String name) { return “Hello! “ + name + “-san.”; } } Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 38. JRuby on Rails サンプル InitialContext context = new InitialContext(); Object ref = context.lookup(“ejb/Hello/remote”); Hello target = (Hello)PortableRemoteObject.narrow(ref, Hello.class); target.sayHello(“yoichiro”); Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 39. JRuby on Rails サンプル require ‘java’ include_class ‘javax.naming.InitialContext’ include_class ‘javax.rmi.PortableRemoteObject’ include_class ‘jp.eisbahn.ejb.Hello’ context = InitialContext.new ref = context.lookup(‘ejb/Hello/remote’) hello = PortableRemoteObject.narrow(ref, Hello) hello.sayHello(‘yoichiro’) Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 40. JRuby on Rails JRuby ならではの Java 連携 オブジェクトのプロパティに対する操作 Java の場合 model.setName(‘yoichiro’); String name = model.getName(); JRuby の場合 model.name = ‘yoichiro’ name = model.name Ruby らしいメソッド呼び出し Java の場合 action.doProcess(); JRuby の場合 action.do_process Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 41. JRuby on Rails JRuby 上で Ruby on Rails アプリを動かす 開発時 Ruby 言語の特性がメリットとなる Ruby on Rails の開発環境の良さをそのまま得られる 運用時 JavaEE の運用環境の良さをそのまま得られる より多くの選択肢を手にすることができる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 42. JRuby on Rails JRuby 上で Ruby on Rails アプリを作る IDE の恩恵 NetBeans 6.1 は Ruby コーディングに向いている デバッガが使えるのはやっぱり強力 GlassFish の JRuby サポート JRuby がコンポーネントとして登録可能 glassfish gem: GlassFish へのデプロイが手軽になる Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 43. JRuby on Rails JRuby のデメリット 何といっても日本語 UTF-8 以外は全滅と言ってもいいかもしれない 携帯アプリを作ろうと思うと致命的 動いちゃえば速い でも起動が遅い jruby -S rake test を繰り返し実行するのが苦痛になる 安定はするが、瞬発力はまだまだ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 44. まとめ JRuby の背景 JRuby で Ruby on Rails を動かす理由 JRuby on Rails の実践 JRuby ならではの Java 連携 JRuby on Rails のメリット・デメリット Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 45. 最後に Blog 「天使やカイザーと呼ばれて」 http://www.eisbahn.jp/yoichiro/ こみゅすけ http://commusuke.eisbahn.jp/ JRuby on Rails on GlassFish 続きは「パネルディスカッション」で・・・ Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
  • 46. ありがとうございました Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30