0
JRubyでDSL作ってみた2012/04/04 akimatter
自己紹介秋間武志@akimatterJava10年、Ruby6年Ruby Business Commons運営委員株式会社グルーヴノーツテクニカルプロデューサー/プログラマ
ゲーム開発やってます http://www.groovenauts.jp/ https://twitter.com/Groovenauts http://www.facebook.com/Groovenauts.Inc
秋間の視点だとこんな感じ   イーシー・ワン クラウド事業部   ノーチラス・テクノロジーズ 福岡      グルーヴノーツ 福岡
2008/04イーシー・ワンで2008/07に出版するべく「JRuby徹底入門」を執筆開始。 秋間は原案のソースコードを書いただけ              http://www.amazon.co.jp/JRuby-徹底入門-        ...
2008/062008/05 Sunの粋な計らいで、福岡でのJRuby勉強会にJRuby開発者のCharles NutterとThomas Eneboが来てくれることが決定ちょっと頑張っちゃおうかなと決意SwingをRubyっぽく書けたら面白そ...
Rubeus
Rubeusの狙ったところRubeus provides you an easy access to Java objectsfrom Ruby scripts on JRubyJavaをRuby色に染めちゃえJRubyでも十分Rubyだけど、...
in Javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class JavaSwingExample01 {        public stat...
require rubygemsrequire "rubeus"          in JRuby with RubeusRubeus::Swing.irbJFrame.new("Rubeus Swing Example 01") do |f...
思い切ったDSLの設計JButtonのイベントハンドラなんて、クリックされた場合しかほとんど使わないんだからコンストラクタにブロックで指定すればいいじゃんJButton.new("append") do  @textpane.text += @...
JDBC with Rubeusrequire rubygemsrequire rubeusRubeus::Jdbc.irbDriverManager.connect("jdbc:derby:test_db") do |conn|   conn...
easy installJava をインストールrvm をインストールrvm install jrubygem install rubeus
getting started with irb$ irb> require ‘rubygems’> require ‘rubeus’> Rubeus::Swing.irb> f = JFrame.new> f.visible = true> ...
Charlesに見せた時の反応JRubyの勉強会で見せたんですが、“Oh, looks great.” の一言。だよねー、 使いどころあんまり無いし英語も通じてない? (́・ω・`)
なのでもうすっかり忘れていたわけですよ。しかし2年後
Thomasからのメール  Howdy,Can someone look at and apply files/patches submitted in Issues 13 and 14?  Also I am demoing Rubeus i...
うわーお、でもマジ?本業が忙しすぎて全然メンテしきらんとですよ > <なのでちょっと振ってみた
Thomasへの返事   Thank you, Tom.Are you writing a book !? Its great! Im looking forward to read your book.I applied your patch...
Thomasをコミッターにしちゃえ申し訳ないけど、それが一番手っ取り早いw
Thomasからの返事    Thanks for doing this. Yes, several JRuby people are writing a JRuby book:http://pragprog.com/titles/jruby/...
本当にコミットしてくれてるし
本当に載っちゃうし   http://pragprog.com/book/   jruby/using-jruby
まとめRubeusは思い切った割り切りが良かったっぽいrubyにまつわるツールが便利 rubygemsで簡単にインストール irbで簡単に試せる
http://rubybizcommons.jp/ja/articles/2010/07/28/2010727-rubydays-2010/
LT at JavaOne2012  JVM language BoF #jt12_b101
Upcoming SlideShare
Loading in...5
×

LT at JavaOne2012 JVM language BoF #jt12_b101

795

Published on

Published in: Technology, Art & Photos
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
795
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
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
  • Transcript of "LT at JavaOne2012 JVM language BoF #jt12_b101"

    1. 1. JRubyでDSL作ってみた2012/04/04 akimatter
    2. 2. 自己紹介秋間武志@akimatterJava10年、Ruby6年Ruby Business Commons運営委員株式会社グルーヴノーツテクニカルプロデューサー/プログラマ
    3. 3. ゲーム開発やってます http://www.groovenauts.jp/ https://twitter.com/Groovenauts http://www.facebook.com/Groovenauts.Inc
    4. 4. 秋間の視点だとこんな感じ イーシー・ワン クラウド事業部 ノーチラス・テクノロジーズ 福岡 グルーヴノーツ 福岡
    5. 5. 2008/04イーシー・ワンで2008/07に出版するべく「JRuby徹底入門」を執筆開始。 秋間は原案のソースコードを書いただけ http://www.amazon.co.jp/JRuby-徹底入門- 株式会社イーシー・ワン/dp/4881666452
    6. 6. 2008/062008/05 Sunの粋な計らいで、福岡でのJRuby勉強会にJRuby開発者のCharles NutterとThomas Eneboが来てくれることが決定ちょっと頑張っちゃおうかなと決意SwingをRubyっぽく書けたら面白そうRubeusと命名される
    7. 7. Rubeus
    8. 8. Rubeusの狙ったところRubeus provides you an easy access to Java objectsfrom Ruby scripts on JRubyJavaをRuby色に染めちゃえJRubyでも十分Rubyだけど、もっとRubyっぽくするためのDSLを提供しよう
    9. 9. in Javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class JavaSwingExample01 {    public static void main(String[] args) {        JFrame frame = new JFrame("Rubeus Swing Example 01");        frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));        JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);        frame.add(splitPane);        JPanel panel = new JPanel();        splitPane.setTopComponent(panel);        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));        final JTextField textField = new JTextField();        panel.add(textField);        final JTextPane textPane = new JTextPane();        textField.addKeyListener(new KeyAdapter() {                public void keyPressed(KeyEvent event) {                    if (event.getKeyCode() == 10) {                        textPane.setText(textPane.getText() + textField.getText() + "n");                        textField.setText("");                    }                }            });        JButton button = new JButton("append");        panel.add(button);        button.addActionListener(new ActionListener(){                public void actionPerformed(ActionEvent event) {                    textPane.setText(textPane.getText() + textField.getText() + "n");                    textField.setText("");                }            });        JScrollPane scrollPane = new JScrollPane(textPane);        splitPane.setBottomComponent(scrollPane);        scrollPane.setPreferredSize(new Dimension(400, 250));        frame.setSize(400, 300);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setVisible(true);    }}
    10. 10. require rubygemsrequire "rubeus" in JRuby with RubeusRubeus::Swing.irbJFrame.new("Rubeus Swing Example 01") do |frame|  frame.layout = BoxLayout.new(:Y_AXIS)  JSplitPane.new(JSplitPane::VERTICAL_SPLIT) do    JPanel.new do |panel|      panel.layout = BoxLayout.new(:X_AXIS)      @text_field = JTextField.new do |event|        if event.key_code == 10 # RETURN          @textpane.text += @text_field.text + "n"          @text_field.text =         end      end      JButton.new("append") do        @textpane.text += @text_field.text        @text_field.text =       end    end    JScrollPane.new(:preferred_size => [400, 250]) do |pane|      @textpane = JTextPane.new    end  end  frame.visible = trueend
    11. 11. 思い切ったDSLの設計JButtonのイベントハンドラなんて、クリックされた場合しかほとんど使わないんだからコンストラクタにブロックで指定すればいいじゃんJButton.new("append") do  @textpane.text += @text_field.text  @text_field.text = end
    12. 12. JDBC with Rubeusrequire rubygemsrequire rubeusRubeus::Jdbc.irbDriverManager.connect("jdbc:derby:test_db") do |conn| conn.query("SELECT * FROM TEST ORDER BY ID") do |rs| rs.each do |row| puts row.to_a.join(",") end endend
    13. 13. easy installJava をインストールrvm をインストールrvm install jrubygem install rubeus
    14. 14. getting started with irb$ irb> require ‘rubygems’> require ‘rubeus’> Rubeus::Swing.irb> f = JFrame.new> f.visible = true> f.title = “foo”
    15. 15. Charlesに見せた時の反応JRubyの勉強会で見せたんですが、“Oh, looks great.” の一言。だよねー、 使いどころあんまり無いし英語も通じてない? (́・ω・`)
    16. 16. なのでもうすっかり忘れていたわけですよ。しかし2年後
    17. 17. Thomasからのメール Howdy,Can someone look at and apply files/patches submitted in Issues 13 and 14? Also I am demoing Rubeus in a book and thesefixes also need to be put into a new Rubeus release.Can you also release a new version of Rubeus withthese changes?-Tom https://groups.google.com/forum/?hl=ja&fromgroups#!topic/rubeus/Y7CsIojnZaQ
    18. 18. うわーお、でもマジ?本業が忙しすぎて全然メンテしきらんとですよ > <なのでちょっと振ってみた
    19. 19. Thomasへの返事 Thank you, Tom.Are you writing a book !? Its great! Im looking forward to read your book.I applied your patch and released rubeus-0.0.9 just now. So it will be publishedin a few hours.And I created a repository for rubeus in githubhttp://github.com/akm/rubeusIf you wish, I append your account as acollaborator.Takeshi https://groups.google.com/forum/?hl=ja&fromgroups#!topic/rubeus/Y7CsIojnZaQ
    20. 20. Thomasをコミッターにしちゃえ申し訳ないけど、それが一番手っ取り早いw
    21. 21. Thomasからの返事 Thanks for doing this. Yes, several JRuby people are writing a JRuby book:http://pragprog.com/titles/jruby/using-jrubyOne section in our GUI chapter will be covering Rubeus. We are very happy topromote Rubeus in our book.Thanks for adding me to your repository ongithub. I will help provide fixes if I find any otherproblems.-Tom https://groups.google.com/forum/?hl=ja&fromgroups#!topic/rubeus/Y7CsIojnZaQ
    22. 22. 本当にコミットしてくれてるし
    23. 23. 本当に載っちゃうし http://pragprog.com/book/ jruby/using-jruby
    24. 24. まとめRubeusは思い切った割り切りが良かったっぽいrubyにまつわるツールが便利 rubygemsで簡単にインストール irbで簡単に試せる
    25. 25. http://rubybizcommons.jp/ja/articles/2010/07/28/2010727-rubydays-2010/
    1. A particular slide catching your eye?

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

    ×