SlideShare a Scribd company logo
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/

More Related Content

What's hot

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 #gdgkyoto
Shoot Morii
 
F#のすすめ
F#のすすめF#のすすめ
F#のすすめ
Hiromu Sasaki
 
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
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
Yoshinari Takaoka
 
PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
bleis tift
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
airtoxin Ishii
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
Toshihiko Shimokawa
 
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
 

What's hot (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をさわってみた
 

Viewers also liked

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
Babasab Patil
 
Reproducables spanish CREATE Toghether
Reproducables spanish CREATE ToghetherReproducables spanish CREATE Toghether
Reproducables spanish CREATE Toghether
estre64
 
Android Bazaar and Conference 2012 Spring
Android Bazaar and Conference 2012 SpringAndroid Bazaar and Conference 2012 Spring
Android Bazaar and Conference 2012 Spring
H2O Space. Co., Ltd.
 
Volunteer in Italy 2012
Volunteer in Italy 2012Volunteer in Italy 2012
Volunteer in Italy 2012
AYAvolunteer
 
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 accountant
Babasab Patil
 
Heartwalk banner
Heartwalk bannerHeartwalk banner
Heartwalk bannerICrawford56
 
读书笔记
读书笔记读书笔记
读书笔记You Yuwan
 
Ppt策划
Ppt策划Ppt策划
Ppt策划
You Yuwan
 
I cloud
I   cloudI   cloud
I cloud
정식 신
 
Programma pomezia
Programma pomeziaProgramma pomezia
Programma pomezia
maicagiulia
 
120414 foss4g nagoya_presentation1
120414 foss4g nagoya_presentation1120414 foss4g nagoya_presentation1
120414 foss4g nagoya_presentation1
Takayuki 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 mba
Babasab Patil
 
2012051101
20120511012012051101
2012051101ganaa_62
 

Viewers also liked (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
 

Similar to 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 algorithm
takesako
 
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_hack
kimukou_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
探検!SwiftyJSON
Yuka 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 で変わったところ「後編」 #cswift
Tomohiro Kumagai
 

Similar to 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
 

More from 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_b101
Takeshi 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
 
Llonsen object ruby
Llonsen object rubyLlonsen object ruby
Llonsen object ruby
Takeshi AKIMA
 
jrubykaigi2010-lt-rubeus
jrubykaigi2010-lt-rubeusjrubykaigi2010-lt-rubeus
jrubykaigi2010-lt-rubeus
Takeshi AKIMA
 
Oktopartial Introduction
Oktopartial IntroductionOktopartial Introduction
Oktopartial Introduction
Takeshi AKIMA
 
仕事で使ってるプラグイン
仕事で使ってるプラグイン仕事で使ってるプラグイン
仕事で使ってるプラグイン
Takeshi AKIMA
 

More from 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
 
仕事で使ってるプラグイン
仕事で使ってるプラグイン仕事で使ってるプラグイン
仕事で使ってるプラグイン
 

Recently uploaded

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 

Recently uploaded (14)

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 

LT at JavaOne2012 JVM language BoF #jt12_b101

Editor's Notes

  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