JRuby on Rails JJUG  クロスコミュニティカンファレンス 田中 洋一郎 Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
自己紹介 <ul><li>田中 洋一郎 </li></ul><ul><ul><li>ATL Systems, Inc.  チーフアーキテクト </li></ul></ul><ul><ul><li>S2Wicket コミッタ </li></ul>...
アジェンダ <ul><li>JRuby の背景 </li></ul><ul><li>JRuby で Ruby on Rails を動かす理由 </li></ul><ul><li>JRuby on Rails の実践 </li></ul><ul>...
Script Engine <ul><li>AWK(Jawk 0.14), BeanShell(BeanShell 2.0b5), ejs, FreeMarker(FreeMarker 2.3.11), Groovy(Groovy 1.5.6)...
Script Engine <ul><li>AWK(Jawk 0.14), BeanShell(BeanShell 2.0b5), ejs, FreeMarker(FreeMarker 2.3.11), Groovy(Groovy 1.5.6)...
Ruby <ul><li>まつもとゆきひろ氏作のコンピュータ言語 </li></ul><ul><li>「オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。 エレガントな文法を持ち、自然に読み書きができます。」 ...
Ruby <ul><li>Ruby の特徴  〜 Ruby ホームページより〜 </li></ul><ul><ul><li>シンプルな文法 </li></ul></ul><ul><ul><li>普通のオブジェクト指向機能 ( クラス、メソッドな...
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 <ul><li>Ruby による Web アプリフレームワーク </li></ul><ul><li>「 Ruby on Rails is an open-source web framework that’s opt...
Ruby on Rails <ul><li>RoR の特徴 </li></ul><ul><ul><li>Model View Controller アーキテクチャ </li></ul></ul><ul><ul><li>Don’t Repeat ...
Ruby on Rails <ul><li>フルスタック </li></ul>Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 dispatcher.cgi rout...
Ruby on Rails <ul><li>コードセットの早期入手 </li></ul><ul><ul><li>rails コマンド、 script/generate スクリプトによる初期コードの自動生成 </li></ul></ul>Copy...
Ruby on Rails <ul><li>テスト環境の充実 </li></ul><ul><ul><li>Fixtures によるテストデータの自動投入 </li></ul></ul><ul><ul><li>Function Test による ...
Ruby on Rails <ul><li>その他にも </li></ul><ul><ul><li>Web アプリケーション開発は当然 </li></ul></ul><ul><ul><ul><li>MVC によるアーキテクチャ </li></u...
Ruby on Rails <ul><li>開発時のメリットは非常に大きい </li></ul><ul><ul><li>シンプルなアーキテクチャ </li></ul></ul><ul><ul><li>コードセットの早期入手 </li></ul>...
Ruby on Rails <ul><li>運用環境 </li></ul><ul><ul><li>Apache, mod_proxy, mod_proxy_balancer </li></ul></ul><ul><ul><li>LiteSpee...
Ruby on Rails <ul><li>RoR アプリの安定運用環境は非常に難しい </li></ul><ul><ul><li>UNIX 系サーバソフトウェアの知識が必要 </li></ul></ul><ul><ul><li>そもそも CG...
Java <ul><li>JavaEE (旧 J2EE )の歴史 </li></ul><ul><ul><li>初登場は 2000 年 </li></ul></ul><ul><ul><li>今年で 8 年目 </li></ul></ul><ul>...
Java <ul><li>JavaEE コンテナ </li></ul><ul><ul><li>Apache JServ </li></ul></ul><ul><ul><li>Apache Tomcat </li></ul></ul><ul><u...
Java <ul><li>運用時のメリットは非常に大きい </li></ul><ul><ul><li>選択肢の豊富さ </li></ul></ul><ul><ul><li>スケールアウトしやすいアーキテクチャ </li></ul></ul><u...
JRuby <ul><li>JavaVM 上で Ruby コードを実行可能にする </li></ul><ul><li>「 JRuby is an 100% pure-Java implementation of the Ruby program...
JRuby <ul><li>JRuby の機能  〜 JRuby ホームページより〜 </li></ul><ul><ul><li>A 1.8.6 compatible Ruby Interpreter written in 100% pre J...
JRuby <ul><li>JRuby のインストール </li></ul><ul><ul><li>JDK のインストール </li></ul></ul><ul><ul><ul><li>環境変数 JAVA_HOME を設定 </li></ul>...
JRuby <ul><li>JRuby のテスト </li></ul><ul><ul><li>Ruby on Rails アプリが稼働すること </li></ul></ul>Copyright(C) 2008 Yoichiro Tanaka. ...
JRuby on Rails <ul><li>JRuby 上で Ruby on Rails アプリを動かす </li></ul><ul><ul><li>開発時 </li></ul></ul><ul><ul><ul><li>Ruby 言語の特性が...
JRuby on Rails <ul><li>Ruby on Rails のインストール </li></ul><ul><ul><li>CRuby の場合 </li></ul></ul><ul><ul><ul><li>gem install ra...
JRuby on Rails <ul><li>Ruby on Rails の各種コマンド実行 </li></ul><ul><ul><li>通常 ruby とするところを jruby とするだけ </li></ul></ul><ul><ul><u...
JRuby on Rails <ul><li>データベース接続 </li></ul><ul><ul><li>Ruby on Rails に標準搭載の接続機構 </li></ul></ul><ul><ul><ul><li>Ruby on Rail...
JRuby on Rails <ul><li>JRuby での Ruby on Rails の実行形態 </li></ul><ul><ul><li>Development Mode </li></ul></ul><ul><ul><ul><li>...
JRuby on Rails <ul><li>war ファイル作成 </li></ul><ul><ul><li>goldspike </li></ul></ul><ul><ul><ul><li>jruby ./script/plugin ins...
JRuby on Rails <ul><li>goldspike </li></ul><ul><ul><li>Servlet によるマルチスレッドモデルになる </li></ul></ul><ul><ul><li>CGI に比べてパフォーマンス...
JRuby on Rails <ul><li>冗長化の際のセッションの扱い </li></ul><ul><ul><li>CookieSession の場合 </li></ul></ul><ul><ul><ul><li>そのままで問題なし </l...
JRuby on Rails <ul><li>JRuby ならではのアーキテクチャ </li></ul><ul><ul><li>EJB との連携 </li></ul></ul><ul><ul><ul><li>Model に EJB を適用 </...
JRuby on Rails <ul><li>JRuby on Rails と EJB </li></ul>Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30 EJB ...
JRuby on Rails <ul><li>サンプル </li></ul>package jp.eisbahn.ejb; import javax.ejb.Remote; @Remote public interface Hello { pu...
JRuby on Rails <ul><li>サンプル </li></ul>package jp.eisbahn.ejb; import javax.ejb.Stateless; public @Stateless class HelloImp...
JRuby on Rails <ul><li>サンプル </li></ul>InitialContext context = new InitialContext(); Object ref = context.lookup(“ejb/Hell...
JRuby on Rails <ul><li>サンプル </li></ul>require ‘java’ include_class ‘javax.naming.InitialContext’ include_class ‘javax.rmi....
JRuby on Rails <ul><li>JRuby ならではの Java 連携 </li></ul><ul><ul><li>オブジェクトのプロパティに対する操作 </li></ul></ul><ul><ul><ul><li>Java の場...
JRuby on Rails <ul><li>JRuby 上で Ruby on Rails アプリを動かす </li></ul><ul><ul><li>開発時 </li></ul></ul><ul><ul><ul><li>Ruby 言語の特性が...
JRuby on Rails <ul><li>JRuby 上で Ruby on Rails アプリを作る </li></ul><ul><ul><li>IDE の恩恵 </li></ul></ul><ul><ul><ul><li>NetBeans...
JRuby on Rails <ul><li>JRuby のデメリット </li></ul><ul><ul><li>何といっても日本語 </li></ul></ul><ul><ul><ul><li>UTF-8 以外は全滅と言ってもいいかもしれな...
まとめ <ul><li>JRuby の背景 </li></ul><ul><li>JRuby で Ruby on Rails を動かす理由 </li></ul><ul><li>JRuby on Rails の実践 </li></ul><ul><l...
最後に <ul><li>Blog  「天使やカイザーと呼ばれて」 </li></ul><ul><ul><li>http://www.eisbahn.jp/yoichiro/ </li></ul></ul><ul><li>こみゅすけ </li><...
ありがとうございました Copyright(C) 2008 Yoichiro Tanaka. All rights reserved. 08.4.30
Upcoming SlideShare
Loading in...5
×

JRuby on Rails

5,096

Published on

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

No Downloads
Views
Total Views
5,096
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
34
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

JRuby on Rails

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

    Clipping is a handy way to collect important slides you want to go back to later.

×