SlideShare uma empresa Scribd logo
1 de 26
JRubyでDSL作ってみた
2012/04/04 akimatter
自己紹介
秋間武志

@akimatter

Java10年、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-徹底入門-
              株式会社イーシー・ワン/dp/4881666452
2008/06

2008/05 Sunの粋な計らいで、福岡でのJRuby勉強会に
JRuby開発者のCharles NutterとThomas Eneboが来てく
れることが決定

ちょっと頑張っちゃおうかなと決意

SwingをRubyっぽく書けたら面白そう

Rubeusと命名される
Rubeus
Rubeusの狙ったところ

Rubeus provides you an easy access to Java objects
from Ruby scripts on JRuby

JavaをRuby色に染めちゃえ

JRubyでも十分Rubyだけど、もっとRubyっぽくするため

のDSLを提供しよう
in Java
import 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);
        }
}
require 'rubygems'
require "rubeus"          in JRuby with Rubeus
Rubeus::Swing.irb

JFrame.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 = true
end
思い切ったDSLの設計
JButtonのイベントハンドラなんて、クリックされ
た場合しかほとんど使わないんだからコンストラ
クタにブロックで指定すればいいじゃん

JButton.new("append") do
  @textpane.text += @text_field.text
  @text_field.text = ''
end
JDBC with Rubeus
require 'rubygems'
require 'rubeus'
Rubeus::Jdbc.irb
DriverManager.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
   end
end
easy install

Java をインストール

rvm をインストール

rvm install jruby

gem install rubeus
getting started with irb
$ irb
> require ‘rubygems’
> require ‘rubeus’
> Rubeus::Swing.irb
> f = JFrame.new
> f.visible = true
> f.title = “foo”
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 demo'ing Rubeus in a book and these
fixes also need to be put into a new Rubeus release.
Can you also release a new version of Rubeus with
these changes?

-Tom

                     https://groups.google.com/forum/?hl=ja&fromgroups#!topic/rubeus/Y7CsIojnZaQ
うわーお、でもマジ?

本業が忙しすぎて全然メンテしきらんとですよ > <



なのでちょっと振ってみた
Thomasへの返事
   Thank you, Tom.
Are you writing a book !? It's great! I'm looking forward to read your book.
I applied your patch and released rubeus-0.0.9 just now. So it will be published
in a few hours.

And I created a repository for rubeus in github
http://github.com/akm/rubeus

If you wish, I append your account as a
collaborator.
Takeshi


                        https://groups.google.com/forum/?hl=ja&fromgroups#!topic/rubeus/Y7CsIojnZaQ
Thomasをコミッターにしちゃえ




申し訳ないけど、それが一番手っ取り早いw
Thomasからの返事
    Thanks for doing this. Yes, several JRuby people are writing a JRuby book:
http://pragprog.com/titles/jruby/using-jruby

One section in our GUI chapter will be covering Rubeus. We are very happy to
promote Rubeus in our book.


Thanks for adding me to your repository on
github. I will help provide fixes if I find any other
problems.


-Tom
                       https://groups.google.com/forum/?hl=ja&fromgroups#!topic/rubeus/Y7CsIojnZaQ
本当にコミットしてくれてるし
本当に載っちゃうし

   http://pragprog.com/book/
   jruby/using-jruby
まとめ

Rubeusは思い切った割り切りが良かったっぽい

rubyにまつわるツールが便利

 rubygemsで簡単にインストール

 irbで簡単に試せる
http://rubybizcommons.jp/ja/articles/2010/07/28/2010727-rubydays-2010/

Mais conteúdo relacionado

Mais procurados

Go言語のスライスを理解しよう
Go言語のスライスを理解しようGo言語のスライスを理解しよう
Go言語のスライスを理解しようYasutaka Kawamoto
 
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノート
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノートゼロからプログラミング講座(Perl) #1 @越谷 講義ノート
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノートWataru Sekiguchi
 
菩薩でもわかる!Rで動かすExcelアドインの作り方
 菩薩でもわかる!Rで動かすExcelアドインの作り方  菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方 Nagi Teramo
 
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信ryo_mm2d
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言Yuya Takeyama
 
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)Kenichiro MATOHARA
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoShoot Morii
 
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackcon
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackconYATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackcon
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackconHiroaki KOBAYASHI
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみるairtoxin Ishii
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようmax747
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話infinite_loop
 
Sencha Touchをさわってみた
Sencha TouchをさわってみたSencha Touchをさわってみた
Sencha TouchをさわってみたTomonori Ohba
 

Mais procurados (17)

Go言語のスライスを理解しよう
Go言語のスライスを理解しようGo言語のスライスを理解しよう
Go言語のスライスを理解しよう
 
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノート
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノートゼロからプログラミング講座(Perl) #1 @越谷 講義ノート
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノート
 
菩薩でもわかる!Rで動かすExcelアドインの作り方
 菩薩でもわかる!Rで動かすExcelアドインの作り方  菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
 
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
 
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
F#のすすめ
F#のすすめF#のすすめ
F#のすすめ
 
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackcon
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackconYATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackcon
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackcon
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
Sencha Touchをさわってみた
Sencha TouchをさわってみたSencha Touchをさわってみた
Sencha Touchをさわってみた
 

Destaque

Futures options and swaps ppt @ bec doms bagalkot
Futures options and swaps ppt @ bec doms bagalkotFutures options and swaps ppt @ bec doms bagalkot
Futures options and swaps ppt @ bec doms bagalkotBabasab Patil
 
Reproducables spanish CREATE Toghether
Reproducables spanish CREATE ToghetherReproducables spanish CREATE Toghether
Reproducables spanish CREATE Toghetherestre64
 
Android Bazaar and Conference 2012 Spring
Android Bazaar and Conference 2012 SpringAndroid Bazaar and Conference 2012 Spring
Android Bazaar and Conference 2012 SpringH2O Space. Co., Ltd.
 
Volunteer in Italy 2012
Volunteer in Italy 2012Volunteer in Italy 2012
Volunteer in Italy 2012AYAvolunteer
 
France presentation eleanor
France presentation eleanorFrance presentation eleanor
France presentation eleanorPhilip Copeland
 
Czech easter traditions
Czech easter traditionsCzech easter traditions
Czech easter traditionsLenka Jacko
 
孤獨與品味
孤獨與品味孤獨與品味
孤獨與品味olivia1360
 
困髮族五大原因
困髮族五大原因困髮族五大原因
困髮族五大原因formosa858
 
Classification of cost accountant
Classification of cost accountantClassification of cost accountant
Classification of cost accountantBabasab Patil
 
Heartwalk banner
Heartwalk bannerHeartwalk banner
Heartwalk bannerICrawford56
 
读书笔记
读书笔记读书笔记
读书笔记You Yuwan
 
Programma pomezia
Programma pomeziaProgramma pomezia
Programma pomeziamaicagiulia
 
120414 foss4g nagoya_presentation1
120414 foss4g nagoya_presentation1120414 foss4g nagoya_presentation1
120414 foss4g nagoya_presentation1Takayuki Nuimura
 
Attitudes beliefs values ppt @ bec doms bagalkot mba
Attitudes beliefs values ppt @ bec doms bagalkot mbaAttitudes beliefs values ppt @ bec doms bagalkot mba
Attitudes beliefs values ppt @ bec doms bagalkot mbaBabasab Patil
 
2012051101
20120511012012051101
2012051101ganaa_62
 

Destaque (20)

Futures options and swaps ppt @ bec doms bagalkot
Futures options and swaps ppt @ bec doms bagalkotFutures options and swaps ppt @ bec doms bagalkot
Futures options and swaps ppt @ bec doms bagalkot
 
Reproducables spanish CREATE Toghether
Reproducables spanish CREATE ToghetherReproducables spanish CREATE Toghether
Reproducables spanish CREATE Toghether
 
Android Bazaar and Conference 2012 Spring
Android Bazaar and Conference 2012 SpringAndroid Bazaar and Conference 2012 Spring
Android Bazaar and Conference 2012 Spring
 
Menjar
MenjarMenjar
Menjar
 
Fotoscurso
FotoscursoFotoscurso
Fotoscurso
 
Volunteer in Italy 2012
Volunteer in Italy 2012Volunteer in Italy 2012
Volunteer in Italy 2012
 
France presentation eleanor
France presentation eleanorFrance presentation eleanor
France presentation eleanor
 
Czech easter traditions
Czech easter traditionsCzech easter traditions
Czech easter traditions
 
孤獨與品味
孤獨與品味孤獨與品味
孤獨與品味
 
困髮族五大原因
困髮族五大原因困髮族五大原因
困髮族五大原因
 
Classification of cost accountant
Classification of cost accountantClassification of cost accountant
Classification of cost accountant
 
Heartwalk banner
Heartwalk bannerHeartwalk banner
Heartwalk banner
 
读书笔记
读书笔记读书笔记
读书笔记
 
Mobile Monday : Retour du Mobile World Congress 2012
Mobile Monday : Retour du Mobile World Congress 2012Mobile Monday : Retour du Mobile World Congress 2012
Mobile Monday : Retour du Mobile World Congress 2012
 
Ppt策划
Ppt策划Ppt策划
Ppt策划
 
I cloud
I   cloudI   cloud
I cloud
 
Programma pomezia
Programma pomeziaProgramma pomezia
Programma pomezia
 
120414 foss4g nagoya_presentation1
120414 foss4g nagoya_presentation1120414 foss4g nagoya_presentation1
120414 foss4g nagoya_presentation1
 
Attitudes beliefs values ppt @ bec doms bagalkot mba
Attitudes beliefs values ppt @ bec doms bagalkot mbaAttitudes beliefs values ppt @ bec doms bagalkot mba
Attitudes beliefs values ppt @ bec doms bagalkot mba
 
2012051101
20120511012012051101
2012051101
 

Semelhante a LT at JavaOne2012 JVM language BoF #jt12_b101

ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】株式会社ランチェスター
 
Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)Ryo Asai
 
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!仕事でも Groovy を使おう!
仕事でも Groovy を使おう!Oda Shinsuke
 
Node.js - sleep sort algorithm
Node.js - sleep sort algorithmNode.js - sleep sort algorithm
Node.js - sleep sort algorithmtakesako
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
Node.js - JavaScript Thread Programming
Node.js - JavaScript Thread ProgrammingNode.js - JavaScript Thread Programming
Node.js - JavaScript Thread Programmingtakesako
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackkimukou_26 Kimukou
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__Tomohiro Kumagai
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」yoshiaki iwanaga
 
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章YOSHIKAWA Ryota
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室Yusuke Ando
 
探検!SwiftyJSON
探検!SwiftyJSON探検!SwiftyJSON
探検!SwiftyJSONYuka Ezura
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説賢次 海老原
 
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法yhara
 
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftSwift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftTomohiro Kumagai
 

Semelhante a LT at JavaOne2012 JVM language BoF #jt12_b101 (20)

ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】ちょっと詳しくJavaScript 特別編【悪霊の神々】
ちょっと詳しくJavaScript 特別編【悪霊の神々】
 
Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)
 
もしトラ
もしトラもしトラ
もしトラ
 
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!仕事でも Groovy を使おう!
仕事でも Groovy を使おう!
 
JavaScript入門
JavaScript入門JavaScript入門
JavaScript入門
 
Node.js - sleep sort algorithm
Node.js - sleep sort algorithmNode.js - sleep sort algorithm
Node.js - sleep sort algorithm
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Node.js - JavaScript Thread Programming
Node.js - JavaScript Thread ProgrammingNode.js - JavaScript Thread Programming
Node.js - JavaScript Thread Programming
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室
 
探検!SwiftyJSON
探検!SwiftyJSON探検!SwiftyJSON
探検!SwiftyJSON
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説
 
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
 
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftSwift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
 
Processing
ProcessingProcessing
Processing
 

Mais de Takeshi AKIMA

DSL by JRuby at JavaOne2012 JVM language BoF #jt12_b101
DSL by JRuby at JavaOne2012  JVM language BoF #jt12_b101DSL by JRuby at JavaOne2012  JVM language BoF #jt12_b101
DSL by JRuby at JavaOne2012 JVM language BoF #jt12_b101Takeshi AKIMA
 
20120324 git training
20120324 git training20120324 git training
20120324 git trainingTakeshi AKIMA
 
20120121 rbc rails_routing
20120121 rbc rails_routing20120121 rbc rails_routing
20120121 rbc rails_routingTakeshi AKIMA
 
jrubykaigi2010-lt-rubeus
jrubykaigi2010-lt-rubeusjrubykaigi2010-lt-rubeus
jrubykaigi2010-lt-rubeusTakeshi AKIMA
 
Oktopartial Introduction
Oktopartial IntroductionOktopartial Introduction
Oktopartial IntroductionTakeshi AKIMA
 
仕事で使ってるプラグイン
仕事で使ってるプラグイン仕事で使ってるプラグイン
仕事で使ってるプラグインTakeshi AKIMA
 

Mais de Takeshi AKIMA (8)

20120831 mongoid
20120831 mongoid20120831 mongoid
20120831 mongoid
 
DSL by JRuby at JavaOne2012 JVM language BoF #jt12_b101
DSL by JRuby at JavaOne2012  JVM language BoF #jt12_b101DSL by JRuby at JavaOne2012  JVM language BoF #jt12_b101
DSL by JRuby at JavaOne2012 JVM language BoF #jt12_b101
 
20120324 git training
20120324 git training20120324 git training
20120324 git training
 
20120121 rbc rails_routing
20120121 rbc rails_routing20120121 rbc rails_routing
20120121 rbc rails_routing
 
Llonsen object ruby
Llonsen object rubyLlonsen object ruby
Llonsen object ruby
 
jrubykaigi2010-lt-rubeus
jrubykaigi2010-lt-rubeusjrubykaigi2010-lt-rubeus
jrubykaigi2010-lt-rubeus
 
Oktopartial Introduction
Oktopartial IntroductionOktopartial Introduction
Oktopartial Introduction
 
仕事で使ってるプラグイン
仕事で使ってるプラグイン仕事で使ってるプラグイン
仕事で使ってるプラグイン
 

Último

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 

Último (9)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 

LT at JavaOne2012 JVM language BoF #jt12_b101

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n