SlideShare a Scribd company logo
1 of 17
Download to read offline
Groovy
              2.1.0が凄い
       2013/1/18 JGGUG G*Workshop
            NTTソフトウェア Grails推進室
                           上原潤二


   http://www.flickr.com/photos/mrhermit/3214708288/
13年1月18日金曜日
自己紹介
       上原潤二(@uehaj)
         NTTソフトウェア株式会社Grails推進室
         JGGUG(日本Grails/Groovyユーザグループ)
         運営委員
         書籍執筆: プログラミングGROOVY(技術評
         論社), Grails徹底入門(翔泳社)
         ブログ「Grな日々」
         GroovyServ, LispBuilder, GVM,
         staticalizer開発者



        Slide #   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
Groovy 2.1.0の新機能
      invoke dynamic(Indy)フルサポート
      GPars 1.0へのアップグレード
      @DelegateToアノテーション
      拡張可能な型検査
      メタアノテーションシステム
      カスタムベーススクリプトクラスの指定
      コンパイラ設定スクリプト
      コンパイラ設定ビルダー
      コマンドラインからGroovyスクリプトを指定するため
      のURLプリフィックスjar://, file://サポート
        Slide # 3   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
記事かいた
      G*Magazine Vol.6
      Groovy臨機応変(第一回)
      動中の静…Groovy 2.1.0の新
      機能その1



        Slide # 4   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
何が凄いのか?

        Slide # 5   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
静的Groovyに
     関連する機能拡
     張が凄い。(個人の感
     想です)
        Slide # 6   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
Groovy 2.1.0の静的Groovyに関連する機能拡張

              @DelegatesToアノテーション
              カスタム型チェク拡張査
              カスタムベーススクリプトクラ
         スの指定
              コンパイラ設定スクリプト
              コンパイラ設定ビルダー
        Slide # 7   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
@DelegatesToアノテーション
      メソッド宣言におけるメソッド引数(クロージ
      ャ)に指定
      def foo(@DelegatesTo(<Class>) Closure c) {
        …
      }
      このメソッドの引数に渡したクロージャが呼
      び出されるときにはdelegateプロパティに
      @DelegatesToに指定した型<Class>のイン
      スタンスが代入されているということを、呼び
      出し側が判るように宣言する。
        Slide # 8   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
つまりこういうこと(1)
   def foo(Closure c) {
     …
   }


   foo {




    toUpperCase() // String#toUpperCase()が呼び出
   される
   }
        Slide # 9   JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
つまりこういうこと(2)
   def foo(@DelegatesTo(String) Closure c) {
     …
   }
   @TypeChecked // 静的型チェックのもとで
   foo {
       // このクロージャ内では、delegateプロパティは
       // Stringインスタンスを保持していると仮定できる
       toUpperCase()                                   静的型チェックもしくは静的
                                                      コンパイルできる。
   }                                                  (DelegatesToが無ければ静
                                                      的型チェックエラー)

        Slide # 10 JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
つまりこういうこと(3)
   def foo(@DelegatesTo(String) Closure c) {
     …
   }
   @TypeChecked
   foo {
       // delegateはStringインスタンスを保持
       // していると仮定できる
       toooUpperCase()
   }                                                   コンパイル時エラーになる



        Slide # 11 JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
何ができるのか?

        Slide # 12 JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
何ができるのか?
      delegateを用いて実装されたビ
      ルダーやDSLの静的型チェック
      が簡単にできる。
         「カスタム型チェック拡張」よりも簡単だが
         制約は比較的大きい。
      IDEが対応すれば補完も
      ドキュメントとしても役立つ

        Slide # 13 JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
やってみた(1)
      静的型チェック可能なMarkupBuilderモドキ
          @TypeCheckeddef	
  test()	
  {
          	
  	
  new	
  HtmlBuilder().html	
  {
          	
  	
  	
  	
  head	
  {
          	
  	
  	
  	
  	
  	
  title	
  "Groovy	
  2.0.1は凄い!"
          	
  	
  	
  	
  }
          	
  	
  	
  	
  body	
  {
          	
  	
  	
  	
  	
  	
  p	
  "Groovy	
  2.0.1は凄い!"
          	
  	
  	
  	
  	
  	
  ul	
  {
          	
  	
  	
  	
  	
  	
  	
  	
  li	
  "リスト1"
          	
  	
  	
  	
  	
  	
  	
  	
  ul	
  "リスト2"
          	
  	
  	
  	
  	
  	
  }
          	
  	
  	
  	
  	
  	
  h1	
  "凄いわ!"              コンパイル時エラーになる
          	
  	
  	
  	
  }                                 →flymake-groovyでデモ
          	
  	
  }
          }                                   https://gist.github.com/4563201
        Slide # 14 JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
やってみた(2)
     import	
  groovy.transform.*
     class	
  HtmlBuilder	
  {
     	
  	
  def	
  html(@DelegatesTo(Html)	
  Closure	
  c)	
  {
     	
  	
  	
  	
  c.delegate	
  =	
  new	
  Html()
     	
  	
  	
  	
  println	
  "<html>";	
  c();	
  println	
  "</html>"
     	
  	
  }
     }
     class	
  Html	
  {
     	
  	
  def	
  head(@DelegatesTo(Head)	
  Closure	
  c)	
  {
     	
  	
  	
  	
  c.delegate	
  =	
  new	
  Head()
     	
  	
  	
  	
  println	
  "	
  <head>";	
  c();	
  println	
  "	
  </head>"
     	
  	
  }
     	
  	
  def	
  body(@DelegatesTo(Body)	
  Closure	
  c)	
  {
     	
  	
  	
  	
  c.delegate	
  =	
  new	
  Body()
     	
  	
  	
  	
  println	
  "	
  <body>";	
  c();	
  println	
  "	
  </body>"
     	
  	
  }
     }
     class	
  Head	
  {
     	
  	
  def	
  title(String	
  s)	
  {	
  println	
  "	
  	
  <title>$s</title>"	
  }
     }
     class	
  Body	
  {
     	
  	
  def	
  h1(String	
  s)	
  {	
  println	
  "	
  	
  <h1>$s</h1>"	
  }
     	
  	
  def	
  p(String	
  s)	
  {	
  println	
  "	
  	
  <p>$s</p>"	
  }
     	
  	
  def	
  ul(@DelegatesTo(Ul)	
  Closure	
  c)	
  {
     	
  	
  	
  	
  c.delegate	
  =	
  new	
  Ul()
     	
  	
  	
  	
  println	
  "	
  	
  <ul>";	
  c();	
  println	
  "	
  	
  </ul>"
     	
  	
  }
     }
     class	
  Ul	
  {
     	
  	
  def	
  li(String	
  s){	
  println	
  "	
  	
  	
  <li>$s</li>"	
  }
     }

        Slide # 15 JGGUG G*Workshop                  Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
カスタム型チェック拡張でたぶんできそうなこと

     Grailsのdynamic finderを、DBスキーマをコンパイ
     ル時に参照することで静的型チェック
     コンパイル時にメソッドが存在しない場合、Groovy
     のモジュールをGrapeでダウンロードしてメソッド
     を追加する
     メソッドが存在しない場合、invokeMethod呼び出
     しにする(Groovy++のmixedモードコンパイル相当)
     sprintf()のフォーマットと引数型のチェック
     任意のチェッカ(コーディング規約チェックとか)
     AST変換が道を開いたGroovyコンパイラのオープン
     化の一環
        Slide # 16 JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日
まとめ

     Groovy 2.1.0の
     静的Groovyに関
     連する機能拡張が
     凄い。(詳しくはG*Magで)
        Slide # 17 JGGUG G*Workshop   Copyright(C) 2012 NTT Software Corporation All rights reserved.
13年1月18日金曜日

More Related Content

What's hot

Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
Nobuhiro Sue
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 

What's hot (20)

Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
 
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
 
Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST APIUse JWT access-token on Grails REST API
Use JWT access-token on Grails REST API
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
Groovyの紹介20130323
Groovyの紹介20130323Groovyの紹介20130323
Groovyの紹介20130323
 
基礎からのCode Contracts
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode Contracts
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
 
Groovy indy 20120222
Groovy indy 20120222Groovy indy 20120222
Groovy indy 20120222
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
 
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development life
 
Qt5 の Input Method
Qt5 の Input MethodQt5 の Input Method
Qt5 の Input Method
 
こんにちはGroovy
こんにちはGroovyこんにちはGroovy
こんにちはGroovy
 
ZynqMPのQEMU
ZynqMPのQEMUZynqMPのQEMU
ZynqMPのQEMU
 
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 NagoyaQtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
 

Similar to groovy 2.1.0 20130118

明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
 
Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309
Uehara Junji
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
Mori Shingo
 
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組みJJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
日本Javaユーザーグループ
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
Nobuhiro Sue
 
Gwt+objectifyでラクラクGAEアプリ開発
Gwt+objectifyでラクラクGAEアプリ開発Gwt+objectifyでラクラクGAEアプリ開発
Gwt+objectifyでラクラクGAEアプリ開発
Y OCHI
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
kimukou_26 Kimukou
 
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)
openrtm
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1st
toshi_pp
 

Similar to groovy 2.1.0 20130118 (20)

明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
C#でOpenCL with OpenTK + Cloo
C#でOpenCL with OpenTK + ClooC#でOpenCL with OpenTK + Cloo
C#でOpenCL with OpenTK + Cloo
 
Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
ClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろうClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろう
 
Hudson using Groovy #jggug
Hudson using Groovy  #jggugHudson using Groovy  #jggug
Hudson using Groovy #jggug
 
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組みJJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用
 
Power Assert and perl.js
Power Assert and perl.jsPower Assert and perl.js
Power Assert and perl.js
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
 
Android4.2徹底解剖!
Android4.2徹底解剖!Android4.2徹底解剖!
Android4.2徹底解剖!
 
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
 
Gwt+objectifyでラクラクGAEアプリ開発
Gwt+objectifyでラクラクGAEアプリ開発Gwt+objectifyでラクラクGAEアプリ開発
Gwt+objectifyでラクラクGAEアプリ開発
 
今日からはじめるGPars
今日からはじめるGPars今日からはじめるGPars
今日からはじめるGPars
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
Gopenflow demo v1
Gopenflow demo v1Gopenflow demo v1
Gopenflow demo v1
 
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)
 
8F Emacs seminar 1st
8F Emacs seminar 1st8F Emacs seminar 1st
8F Emacs seminar 1st
 

More from Uehara Junji

Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224
Uehara Junji
 
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)
Uehara Junji
 
Seasar Conference2008 Grails(Final)
Seasar Conference2008 Grails(Final)Seasar Conference2008 Grails(Final)
Seasar Conference2008 Grails(Final)
Uehara Junji
 
Groovy Conference2008 Nttsoft
Groovy Conference2008 NttsoftGroovy Conference2008 Nttsoft
Groovy Conference2008 Nttsoft
Uehara Junji
 

More from Uehara Junji (15)

Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418
 
JJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsJJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/Grails
 
Groovy 1.8の新機能について
Groovy 1.8の新機能についてGroovy 1.8の新機能について
Groovy 1.8の新機能について
 
Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...
Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...
Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...
 
Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224
 
Easy Going Groovy 2nd season on DevLOVE
Easy Going Groovy 2nd season on DevLOVEEasy Going Groovy 2nd season on DevLOVE
Easy Going Groovy 2nd season on DevLOVE
 
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)
 
Clojure
ClojureClojure
Clojure
 
Groovy, Transforming Language
Groovy, Transforming LanguageGroovy, Transforming Language
Groovy, Transforming Language
 
Jggug Nagoya 20090925 Groovy
Jggug Nagoya 20090925 GroovyJggug Nagoya 20090925 Groovy
Jggug Nagoya 20090925 Groovy
 
Lisp Builder
Lisp BuilderLisp Builder
Lisp Builder
 
G*WS 3rd Lightning talk
G*WS 3rd Lightning talkG*WS 3rd Lightning talk
G*WS 3rd Lightning talk
 
Groovy Now And Future
Groovy Now And FutureGroovy Now And Future
Groovy Now And Future
 
Seasar Conference2008 Grails(Final)
Seasar Conference2008 Grails(Final)Seasar Conference2008 Grails(Final)
Seasar Conference2008 Grails(Final)
 
Groovy Conference2008 Nttsoft
Groovy Conference2008 NttsoftGroovy Conference2008 Nttsoft
Groovy Conference2008 Nttsoft
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Recently uploaded (12)

Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 

groovy 2.1.0 20130118

  • 1. Groovy 2.1.0が凄い 2013/1/18 JGGUG G*Workshop NTTソフトウェア Grails推進室 上原潤二 http://www.flickr.com/photos/mrhermit/3214708288/ 13年1月18日金曜日
  • 2. 自己紹介 上原潤二(@uehaj) NTTソフトウェア株式会社Grails推進室 JGGUG(日本Grails/Groovyユーザグループ) 運営委員 書籍執筆: プログラミングGROOVY(技術評 論社), Grails徹底入門(翔泳社) ブログ「Grな日々」 GroovyServ, LispBuilder, GVM, staticalizer開発者 Slide # JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 3. Groovy 2.1.0の新機能 invoke dynamic(Indy)フルサポート GPars 1.0へのアップグレード @DelegateToアノテーション 拡張可能な型検査 メタアノテーションシステム カスタムベーススクリプトクラスの指定 コンパイラ設定スクリプト コンパイラ設定ビルダー コマンドラインからGroovyスクリプトを指定するため のURLプリフィックスjar://, file://サポート Slide # 3 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 4. 記事かいた G*Magazine Vol.6 Groovy臨機応変(第一回) 動中の静…Groovy 2.1.0の新 機能その1 Slide # 4 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 5. 何が凄いのか? Slide # 5 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 6. 静的Groovyに 関連する機能拡 張が凄い。(個人の感 想です) Slide # 6 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 7. Groovy 2.1.0の静的Groovyに関連する機能拡張 @DelegatesToアノテーション カスタム型チェク拡張査 カスタムベーススクリプトクラ スの指定 コンパイラ設定スクリプト コンパイラ設定ビルダー Slide # 7 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 8. @DelegatesToアノテーション メソッド宣言におけるメソッド引数(クロージ ャ)に指定 def foo(@DelegatesTo(<Class>) Closure c) { … } このメソッドの引数に渡したクロージャが呼 び出されるときにはdelegateプロパティに @DelegatesToに指定した型<Class>のイン スタンスが代入されているということを、呼び 出し側が判るように宣言する。 Slide # 8 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 9. つまりこういうこと(1) def foo(Closure c) { … } foo { toUpperCase() // String#toUpperCase()が呼び出 される } Slide # 9 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 10. つまりこういうこと(2) def foo(@DelegatesTo(String) Closure c) { … } @TypeChecked // 静的型チェックのもとで foo { // このクロージャ内では、delegateプロパティは // Stringインスタンスを保持していると仮定できる toUpperCase() 静的型チェックもしくは静的 コンパイルできる。 } (DelegatesToが無ければ静 的型チェックエラー) Slide # 10 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 11. つまりこういうこと(3) def foo(@DelegatesTo(String) Closure c) { … } @TypeChecked foo { // delegateはStringインスタンスを保持 // していると仮定できる toooUpperCase() } コンパイル時エラーになる Slide # 11 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 12. 何ができるのか? Slide # 12 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 13. 何ができるのか? delegateを用いて実装されたビ ルダーやDSLの静的型チェック が簡単にできる。 「カスタム型チェック拡張」よりも簡単だが 制約は比較的大きい。 IDEが対応すれば補完も ドキュメントとしても役立つ Slide # 13 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 14. やってみた(1) 静的型チェック可能なMarkupBuilderモドキ @TypeCheckeddef  test()  {    new  HtmlBuilder().html  {        head  {            title  "Groovy  2.0.1は凄い!"        }        body  {            p  "Groovy  2.0.1は凄い!"            ul  {                li  "リスト1"                ul  "リスト2"            }            h1  "凄いわ!" コンパイル時エラーになる        } →flymake-groovyでデモ    } } https://gist.github.com/4563201 Slide # 14 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 15. やってみた(2) import  groovy.transform.* class  HtmlBuilder  {    def  html(@DelegatesTo(Html)  Closure  c)  {        c.delegate  =  new  Html()        println  "<html>";  c();  println  "</html>"    } } class  Html  {    def  head(@DelegatesTo(Head)  Closure  c)  {        c.delegate  =  new  Head()        println  "  <head>";  c();  println  "  </head>"    }    def  body(@DelegatesTo(Body)  Closure  c)  {        c.delegate  =  new  Body()        println  "  <body>";  c();  println  "  </body>"    } } class  Head  {    def  title(String  s)  {  println  "    <title>$s</title>"  } } class  Body  {    def  h1(String  s)  {  println  "    <h1>$s</h1>"  }    def  p(String  s)  {  println  "    <p>$s</p>"  }    def  ul(@DelegatesTo(Ul)  Closure  c)  {        c.delegate  =  new  Ul()        println  "    <ul>";  c();  println  "    </ul>"    } } class  Ul  {    def  li(String  s){  println  "      <li>$s</li>"  } } Slide # 15 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 16. カスタム型チェック拡張でたぶんできそうなこと Grailsのdynamic finderを、DBスキーマをコンパイ ル時に参照することで静的型チェック コンパイル時にメソッドが存在しない場合、Groovy のモジュールをGrapeでダウンロードしてメソッド を追加する メソッドが存在しない場合、invokeMethod呼び出 しにする(Groovy++のmixedモードコンパイル相当) sprintf()のフォーマットと引数型のチェック 任意のチェッカ(コーディング規約チェックとか) AST変換が道を開いたGroovyコンパイラのオープン 化の一環 Slide # 16 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日
  • 17. まとめ Groovy 2.1.0の 静的Groovyに関 連する機能拡張が 凄い。(詳しくはG*Magで) Slide # 17 JGGUG G*Workshop Copyright(C) 2012 NTT Software Corporation All rights reserved. 13年1月18日金曜日