Your SlideShare is downloading. ×
[質問]お仕事でJavaを使っている方    (予想:10人位?)    (発表後追記:2人しかいませんでした...)
本日のお客様
「もっと柔軟に システム構築したい!」   というJavist
「俺はRubyで  仕事がしたいんだ!」   というJavist
「 隣のRubyistと    仲良くなりたい!」    というJavist
そんなあなたにおすすめなのが  こちら
JRuby
という事でJRubyの活用パターンを    ご紹介します
JavaとRubyのすてきな関係 @garden_tree
本日ご紹介する活用パターン
本日ご紹介する活用パターン初級編: Ruby On Java
本日ご紹介する活用パターン初級編: Ruby On Java中級編: Java Meets Ruby
本日ご紹介する活用パターン初級編: Ruby On Java中級編: Java Meets Ruby上級編: Its A Java World
初級編Ruby On Java
構成イメージ
構成イメージJava
構成イメージJavaJava
構成イメージJavaJava   Java
構成イメージ          RubyJavaJava   Java
イメージ図         Ruby  Java
例
普通のJava        java demo.JavaOnly で起動https://github.com/gardentree/demo20120222
普通のJava        java demo.JavaOnly で起動               1.SQLを作成https://github.com/gardentree/demo20120222
普通のJava        java demo.JavaOnly で起動               1.SQLを作成                          2.データベースにアクセスhttps://github.com/gard...
普通のJava        java demo.JavaOnly で起動               1.SQLを作成                          2.データベースにアクセス               3.検索結果を出...
普通のJava        java demo.JavaOnly で起動               1.SQLを作成    書きづらい                          2.データベースにアクセス              ...
普通のJava        java demo.JavaOnly で起動               1.SQLを作成    書きづらい                          2.データベースにアクセス              ...
Ruby On Javajruby beginner.rb で起動
Ruby On Javajruby beginner.rb で起動        1.ヒアドキュメントでSQLを作成
Ruby On Java         jruby beginner.rb で起動                 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス
Ruby On Java         jruby beginner.rb で起動                 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス                      ...
Ruby On Java         jruby beginner.rb で起動                   でも、おまじないが必要                 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータ...
[利点]•Rubyでプログラミング出来る•既存のJavaプログラムを使える        [欠点]•Rubyに見せかけてJava•おまじないが必要
[利点] •Rubyでプログラミング出来る •既存のJavaプログラムを使える         [欠点] •Rubyに見せかけてJava •おまじないが必要=>これじゃRubyistと仲良くなれない!
では欠点を克服するには?
中級編Java Meets Ruby
構成イメージ提供:NASA/JPL-Caltech
構成イメージ                      Java提供:NASA/JPL-Caltech
構成イメージ                               Ruby                      Java提供:NASA/JPL-Caltech
イメージ図       RubyJava
イメージ図       RubyJava
イメージ図           RubyJRubyで作る Java
イメージ図           RubyJRubyで作る   使う Java
つまり          Java            +        RubyDSL(domain-specific language)
例
Java        java demo.Intermediateで起動https://github.com/gardentree/demo20120222
Java        java demo.Intermediateで起動      Rubyメソッドを定義https://github.com/gardentree/demo20120222
Java        java demo.Intermediateで起動      Rubyメソッドを定義        RubyDSLを評価する =>RubyDSLへhttps://github.com/gardentree/demo201...
RubyDSL (続き)
RubyDSL (続き)  初級編と同じ
RubyDSL  (続き)   初級編と同じSQLとブロックを指定
RubyDSL         (続き)          初級編と同じJavaで提供されたメソッドを使用する =>Javaへ      SQLとブロックを指定
Java(続き)
Java         (続き)RubyDSLからSQLとブロックが渡される
Java              (続き)     RubyDSLからSQLとブロックが渡されるSQLを使用して、データベースにアクセス
Java              (続き)     RubyDSLからSQLとブロックが渡されるSQLを使用して、データベースにアクセス         1レコードずつ、ブロックに渡す =>RubyDSLへ
RubyDSL (続き)
RubyDSL (続き)  レコードを出力
RubyDSL (続き)+おまじないは不要  レコードを出力
[利点]RubyDSLはRubyそのもの      [欠点]Javaの実装はちょっと複雑
[利点]  RubyDSLはRubyそのもの         [欠点]   Javaの実装はちょっと複雑=>これならRubyistと仲良くなれる!
さらに世界を広げてみましょう!
上級編Its A Java World
Javaで書かれたRuby実装    JRubyについて   お話ししてきました
これまでの構成
イメージ図Ruby        Java
イメージ図Ruby  JRuby          Java
イメージ図Ruby  JRuby          Java
Javaで書かれた実装は    他にもあるよ
Javaで実装されたJavaScript      Rhino
イメージ図Ruby  JRuby          Java
イメージ図                  JavaRuby                 Script  JRuby          Java
イメージ図                      JavaRuby                     Script  JRuby          Rhino          Java
イメージ図                      JavaRuby                     Script  JRuby          Rhino          Java
と、いうことは・・・?
イメージ図                      JavaRuby                     Script  JRuby          Rhino          Java
イメージ図       つながる!    JavaRuby               Script
Javaを介して別々の言語をつなげよう!
構成イメージ
構成イメージ  Ruby
構成イメージ  Ruby         JavaScript
構成イメージ  Ruby         JavaScript            Python
構成イメージ  Ruby         JavaScript            Python             Scala
構成イメージ  Ruby           JavaScript              Python               Scala  Groovy
構成イメージ          Ruby                   JavaScript                      Python                       ScalaClojure          ...
構成イメージ          Ruby                   JavaScript  Tcl                 Python                       ScalaClojure          ...
構成イメージ          Ruby                   JavaScriptScheme  Tcl                 Python                       ScalaClojure    ...
構成イメージ          Ruby                   JavaScriptScheme  Tcl                 Python          Java                       Sc...
構成イメージ          Ruby                   JavaScriptScheme  Tcl                 Python          Java                       Sc...
例
RubyでJavaScriptの Testを書く
用意するもの•RSpec•Underscore.js•Jambalaya(自作)
用意するもの•RSpec•Underscore.js•Jambalaya(自作) RubyとJavaScriptの相互変換ライブラリ
仕組み  Ruby   ↓↑   Java   ↓↑JavaScript
Jambalayaを使うと
Jambalayaを使うと        JavaScriptが_.filter([1,2,3,4,5,6],function(n){  return n % 2 == 0;});
Jambalayaを使うと        JavaScriptが_.filter([1,2,3,4,5,6],function(n){  return n % 2 == 0;});       Rubyで動かせる_.filter([1,2,3,4,...
だから
だからUnderscore.jsの
だからUnderscore.jsの   Testが
だからUnderscore.jsの   TestがRSpecで書ける!
実装についてもご紹介したいところですが・・・
実装についてもご紹介したいところですが・・・ 詳しくはWebでね★ https://github.com/gardentree/jambalaya
まとめ
これとか          RubyJavaJava   Java
これとか                               Ruby                      Java提供:NASA/JPL-Caltech
これで          Ruby                   JavaScriptScheme  Tcl                 Python          Java                       Scala...
隣のRubyistと仲良くなれるよ!
そう、JRubyならね。
JavaとRubyのすてきな関係 @garden_tree
Upcoming SlideShare
Loading in...5
×

JavaとRubyのすてきな関係

6,541

Published on

JRuby活用パターンの紹介

Published in: Entertainment & Humor
0 Comments
19 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,541
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
19
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "JavaとRubyのすてきな関係"

    1. 1. [質問]お仕事でJavaを使っている方 (予想:10人位?) (発表後追記:2人しかいませんでした...)
    2. 2. 本日のお客様
    3. 3. 「もっと柔軟に システム構築したい!」 というJavist
    4. 4. 「俺はRubyで 仕事がしたいんだ!」 というJavist
    5. 5. 「 隣のRubyistと 仲良くなりたい!」 というJavist
    6. 6. そんなあなたにおすすめなのが こちら
    7. 7. JRuby
    8. 8. という事でJRubyの活用パターンを ご紹介します
    9. 9. JavaとRubyのすてきな関係 @garden_tree
    10. 10. 本日ご紹介する活用パターン
    11. 11. 本日ご紹介する活用パターン初級編: Ruby On Java
    12. 12. 本日ご紹介する活用パターン初級編: Ruby On Java中級編: Java Meets Ruby
    13. 13. 本日ご紹介する活用パターン初級編: Ruby On Java中級編: Java Meets Ruby上級編: Its A Java World
    14. 14. 初級編Ruby On Java
    15. 15. 構成イメージ
    16. 16. 構成イメージJava
    17. 17. 構成イメージJavaJava
    18. 18. 構成イメージJavaJava Java
    19. 19. 構成イメージ RubyJavaJava Java
    20. 20. イメージ図 Ruby Java
    21. 21.
    22. 22. 普通のJava java demo.JavaOnly で起動https://github.com/gardentree/demo20120222
    23. 23. 普通のJava java demo.JavaOnly で起動 1.SQLを作成https://github.com/gardentree/demo20120222
    24. 24. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 2.データベースにアクセスhttps://github.com/gardentree/demo20120222
    25. 25. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 2.データベースにアクセス 3.検索結果を出力https://github.com/gardentree/demo20120222
    26. 26. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 書きづらい 2.データベースにアクセス 3.検索結果を出力https://github.com/gardentree/demo20120222
    27. 27. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 書きづらい 2.データベースにアクセス 3.検索結果を出力 面倒https://github.com/gardentree/demo20120222
    28. 28. Ruby On Javajruby beginner.rb で起動
    29. 29. Ruby On Javajruby beginner.rb で起動 1.ヒアドキュメントでSQLを作成
    30. 30. Ruby On Java jruby beginner.rb で起動 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス
    31. 31. Ruby On Java jruby beginner.rb で起動 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス 3.簡潔に検索結果を出力
    32. 32. Ruby On Java jruby beginner.rb で起動 でも、おまじないが必要 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス 3.簡潔に検索結果を出力
    33. 33. [利点]•Rubyでプログラミング出来る•既存のJavaプログラムを使える [欠点]•Rubyに見せかけてJava•おまじないが必要
    34. 34. [利点] •Rubyでプログラミング出来る •既存のJavaプログラムを使える [欠点] •Rubyに見せかけてJava •おまじないが必要=>これじゃRubyistと仲良くなれない!
    35. 35. では欠点を克服するには?
    36. 36. 中級編Java Meets Ruby
    37. 37. 構成イメージ提供:NASA/JPL-Caltech
    38. 38. 構成イメージ Java提供:NASA/JPL-Caltech
    39. 39. 構成イメージ Ruby Java提供:NASA/JPL-Caltech
    40. 40. イメージ図 RubyJava
    41. 41. イメージ図 RubyJava
    42. 42. イメージ図 RubyJRubyで作る Java
    43. 43. イメージ図 RubyJRubyで作る 使う Java
    44. 44. つまり Java + RubyDSL(domain-specific language)
    45. 45.
    46. 46. Java java demo.Intermediateで起動https://github.com/gardentree/demo20120222
    47. 47. Java java demo.Intermediateで起動 Rubyメソッドを定義https://github.com/gardentree/demo20120222
    48. 48. Java java demo.Intermediateで起動 Rubyメソッドを定義 RubyDSLを評価する =>RubyDSLへhttps://github.com/gardentree/demo20120222
    49. 49. RubyDSL (続き)
    50. 50. RubyDSL (続き) 初級編と同じ
    51. 51. RubyDSL (続き) 初級編と同じSQLとブロックを指定
    52. 52. RubyDSL (続き) 初級編と同じJavaで提供されたメソッドを使用する =>Javaへ SQLとブロックを指定
    53. 53. Java(続き)
    54. 54. Java (続き)RubyDSLからSQLとブロックが渡される
    55. 55. Java (続き) RubyDSLからSQLとブロックが渡されるSQLを使用して、データベースにアクセス
    56. 56. Java (続き) RubyDSLからSQLとブロックが渡されるSQLを使用して、データベースにアクセス 1レコードずつ、ブロックに渡す =>RubyDSLへ
    57. 57. RubyDSL (続き)
    58. 58. RubyDSL (続き) レコードを出力
    59. 59. RubyDSL (続き)+おまじないは不要 レコードを出力
    60. 60. [利点]RubyDSLはRubyそのもの [欠点]Javaの実装はちょっと複雑
    61. 61. [利点] RubyDSLはRubyそのもの [欠点] Javaの実装はちょっと複雑=>これならRubyistと仲良くなれる!
    62. 62. さらに世界を広げてみましょう!
    63. 63. 上級編Its A Java World
    64. 64. Javaで書かれたRuby実装 JRubyについて お話ししてきました
    65. 65. これまでの構成
    66. 66. イメージ図Ruby Java
    67. 67. イメージ図Ruby JRuby Java
    68. 68. イメージ図Ruby JRuby Java
    69. 69. Javaで書かれた実装は 他にもあるよ
    70. 70. Javaで実装されたJavaScript Rhino
    71. 71. イメージ図Ruby JRuby Java
    72. 72. イメージ図 JavaRuby Script JRuby Java
    73. 73. イメージ図 JavaRuby Script JRuby Rhino Java
    74. 74. イメージ図 JavaRuby Script JRuby Rhino Java
    75. 75. と、いうことは・・・?
    76. 76. イメージ図 JavaRuby Script JRuby Rhino Java
    77. 77. イメージ図 つながる! JavaRuby Script
    78. 78. Javaを介して別々の言語をつなげよう!
    79. 79. 構成イメージ
    80. 80. 構成イメージ Ruby
    81. 81. 構成イメージ Ruby JavaScript
    82. 82. 構成イメージ Ruby JavaScript Python
    83. 83. 構成イメージ Ruby JavaScript Python Scala
    84. 84. 構成イメージ Ruby JavaScript Python Scala Groovy
    85. 85. 構成イメージ Ruby JavaScript Python ScalaClojure Groovy
    86. 86. 構成イメージ Ruby JavaScript Tcl Python ScalaClojure Groovy
    87. 87. 構成イメージ Ruby JavaScriptScheme Tcl Python ScalaClojure Groovy
    88. 88. 構成イメージ Ruby JavaScriptScheme Tcl Python Java ScalaClojure Groovy
    89. 89. 構成イメージ Ruby JavaScriptScheme Tcl Python Java ScalaClojure Groovy みんな友達!
    90. 90.
    91. 91. RubyでJavaScriptの Testを書く
    92. 92. 用意するもの•RSpec•Underscore.js•Jambalaya(自作)
    93. 93. 用意するもの•RSpec•Underscore.js•Jambalaya(自作) RubyとJavaScriptの相互変換ライブラリ
    94. 94. 仕組み Ruby ↓↑ Java ↓↑JavaScript
    95. 95. Jambalayaを使うと
    96. 96. Jambalayaを使うと JavaScriptが_.filter([1,2,3,4,5,6],function(n){ return n % 2 == 0;});
    97. 97. Jambalayaを使うと JavaScriptが_.filter([1,2,3,4,5,6],function(n){ return n % 2 == 0;}); Rubyで動かせる_.filter([1,2,3,4,5,6]){¦n,i,c¦ n % 2 == 0}
    98. 98. だから
    99. 99. だからUnderscore.jsの
    100. 100. だからUnderscore.jsの Testが
    101. 101. だからUnderscore.jsの TestがRSpecで書ける!
    102. 102. 実装についてもご紹介したいところですが・・・
    103. 103. 実装についてもご紹介したいところですが・・・ 詳しくはWebでね★ https://github.com/gardentree/jambalaya
    104. 104. まとめ
    105. 105. これとか RubyJavaJava Java
    106. 106. これとか Ruby Java提供:NASA/JPL-Caltech
    107. 107. これで Ruby JavaScriptScheme Tcl Python Java ScalaClojure Groovy みんな友達!
    108. 108. 隣のRubyistと仲良くなれるよ!
    109. 109. そう、JRubyならね。
    110. 110. JavaとRubyのすてきな関係 @garden_tree

    ×