SlideShare a Scribd company logo
1 of 42
Download to read offline
Grails-1.1を斬る!
       ∼+Grails-1.1からのチーム開発∼
 第0.9回 名古屋Grails/Groovy勉強会「もうやっこでいこみゃ∼か!」




def speaker = new Cast(name:”T.Yamamoto”,version:”GRN-0.9-2009-03-19”)
自己紹介
名前:山本 剛 (やまもとつよし)
所属:ニューキャスト


「Grails徹底入門」9-11章、書きました。


ブログ
 http://xmldo.blogspot.com/
 http://d.hatena.ne.jp/mottsnite/
おさらい
Grailsとは?
よく聞く説明では、
「Groovyで実装されたRuby on Rails」!?
  合ってるようで間違い
Java+Groovyで実装された、CoC、DRYの概念を取り入
れた( RoR にインスパイアされた)、Webアプリケーション
開発環境。
  基礎はJavaでの開発で信頼されたSpring,Hibernate等を
  使用している。
  そして、それらをシンプルに利用できる環境。


Grails, 開発プラットフォーム (DGG2引用)
Grailsの構成図
           Grails                Groovy
 Spring   Hibernate   SiteMesh
          基礎部分はJava(+Groovy)
                    JVM

Hibernate:ORマッピング
Spring: DIコンテナ・多機能なラッパーフレームワーク
SiteMesh:レイアウトフレームワーク

Jetty: サーブレットコンテナ
HSQLDB:ピュアJavaなデータベース
デモ
grails create-app demo
cd demo
grails create-domain-class Book
grails create-controller Book
grails run-app
--止める--
grails install-plugin acegi
--プラグインインストールは前より早くなった!!
GRAILS-1.1
Grails-1.1リリース
Ant+IvyとMavenビルドのサポート
スタンドアロンGORM
プラグインの新機能:グローバルプラグイン、他動推移的なプラ
グイン解決、ローカルリポジトリー対応、他
Springネームスペースサポート
劇的に向上したパフォーマンス
テストフレームワーク
MVCレイヤーとGORM等のGrailsコアへの多くの新機能と改善

Groovyは最新の1.6に更新
長くなるので、
 一気に紹介!
GORM
 スタンドアロンでGORMが使用可能!
   Spring MVCでのサンプル、GRAILS_HOME/samples/petclinic-mvcを参照                                            ty
                                                                                              E nti
 applicationContext.xmlにデータソースと、<gorm:sessionFactory/>の定義                                nce.
                                                                                 si  ste
<gorm:sessionFactory base-package="org.grails.samples"                     . per
   data-source-ref="dataSource"                                        ils
                                                                  tgra                                     y
   message-source-ref="messageSource">
                                                           im por y          {                      gr oov
                                                                  it      on                     .
      <property name="hibernateProperties">                     t      rs
                                                            @En s Pe name                    son
         <util:map>                                              s                        Per
                                                             cla tring
            <entry key="hibernate.hbm2ddl.auto"                  S
               value="update"/>                                    ...
         </util:map>                                           }
      </property>
</gorm:sessionFactory>

 GORMイベント - イベントbeforeInsert,beforeUpdate,beforeDeleteに、さらにafterInsert,
 afterUpdate and afterDeleteが追加された。                              :String]
                                                     any = [name
 他に、 基本型(String,Integer)、 Enum でのコレクション。 static hasM
                                                                                     .read(        1)
 読み取りのみのオブジェクト取得。ソートのデフォルト値の設定。                                     def b ook = Book
 バッチフェッチ。                                                  static m
                                                                    apping =
                                 static mapping = {           sort "na       {
 ダイナミックファインダの向上。                    batchSize 15                       me"
                                                              books so
                                                                       rt:"titl
 joinTable!                      }                        }                     e"
 generatorの指定
                  static mapping = {
                     id generator:"org.hibernate.id.enhanced.SequenceStyleGenerator",
                        params:[sequence_name:'item_id_seq',initial_value:1000,increment_size:1]
                  }
GSP(Groovy Server Pages)
GSPでのJSPタグライブラリのサポート
  <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

  JSPタグを使う!
  <fmt:formatNumber value="${10}" pattern=".00"/>

  メソッドのように使う!
  ${fmt.formatNumber(value:10, pattern:".00")}

                                       _tableRow.gspの中身
テンプレートネームスペース
                                       <tr>
                                           <td class="prop">${label}</td>
                                           <td class="value">${value}</td>
                                       </tr>
                                       ネームスペースtmpl+ _ を無くしたファイル名で呼び出す。
                                       <tmpl:tableRow label="one" value="two" />


Server Side Includes - <g:include>タグで別のコントローラ、ア
クションを呼び出せる。                    <g:include controller="book" action="list"/>

                               コントローラあるいはタグライブラリでは、メソッドとして呼出も可能!
                               def content = include(controller:"book", action:"list")


パフォーマンスの改善
データバインディング
サブセットプロパティ
 今までは、以下の方法で全プロパティがバインドされました。
 person.properties = params
 サブセットプロパティの対応で、指定した項目のみバインド!
 person.properties["firstName","lastName"] = params
 同じ方法でアクセスも可能!
 person.properties["firstName","lastName"].each { println it }



コレクション型への対応
 <g:textField name="books[0].title" value="the Stand" />
 <g:textField name="books[1].title" value="the Shining" />
 <g:textField name="books[2].title" value="Red Madder" />
 自動的に収集してまとめてくれます。
コントローラ関連
RESTfulマッピングの指定方法の向上
  "/books"(resource:"book") の指定で、
  GET, PUT, POST, DELETEを自動的に、
   アクション"show", "save", "update", "delete"に設定
多重サブミット対策
フォームに、<g:form useToken="true">を指定すると、コントローラ
内で、withFormを使用してフォームの多重サブミットを判別できるよ
うになった。                        withForm {
                                 // 正常なリクエスト
                                         }.invalidToken {
                                            // ダブルクリックしたな?
リクエストのフォワード                              }

 forward controller:"home", action:"index"

エラーハンドルの宣言
 UrlMappingsにエラーハンドルの宣言が可能に。
                 "500"(controller:"errors", exception:IllegalArgumentException)
Scaffolding
ダイナミックスカッフォルディングとテンプレート
ダイナミックスカッフォルディング時のテンプレート
は、grails install-templates コマンドでインストールされ
たテンプレートを使用するようになった。
ダイナミックなのに微調整できる!
スカッフォルドでのM-to-M対応!
その他
Maven統合
Ant + Ivy統合 - Grailsが生成するAntのbuild.xmlとivy.xmlで、Grails
がインストールされていない環境(CIサーバ等)でもビルド可能。
Log4j DSL
Environment(環境) 、Metadata(メタ情報) API          MENT              EL   OP
                                                    nme nt.DEV
                                         nv   iro                      rrent
                              ls. util.E                    tad ata.cu
                          grai                     .u til.Me e
                                        ta = grails ationNam
                                                    c
                           de f  metada data.appli
                                       eta
                           pri  ntln m

非インタラクティブモード
BeanBuilderでSpringネームスペースに対応
テストフレームワーク - Testingプラグインは、本体に統合!
Encrypted Data Sources - データソースパスワードの暗号化
まだまだ有ります。
   ここからは、
チーム開発に便利!?な・・
BuildConfig.groovy
プロジェクトのビルドに関連する情報をカスタマイズでき
る定義ファイル
Grails-1.0.x系では、Grailsのコンパイルされたクラスなどは、
$USER_HOME/.grails/<バージョン>/以下に固定されていましたが、
Grails-1.1からは指定変更可能になりました。
ファイルの設置場所
$PROJECT_HOME/grails-app/conf/BuildConfig.groovy
中はこんな感じ↓

  grails.project.plugins.dir="work_tmp/plugins"
  grails.project.work.dir="work_tmp/work"
  grails.plugin.location."feeds"="./plugins/feeds-1.4"
BuildConfig定義できる内容
※主な項目のみ
grails.project.work.dir
    プロジェクトの作業ディレクトリ
    (このディレクトリ以下に classes,resources,plugins等が配置される)
    デフォルト:$USER_HOME/.grails/<バージョン>/projects/<プロジェクト名>/
作業ディレクトリ以下を個別に指定も可能
grails.project.plugins.dir
    プラグインのディレクトリ。
    grails-1.0.xでの、$PROJECT_HOME/plugins
    デフォルト:$USER_HOME/.grails/<バージョン>/projects/<プロジェクト名>/plugins
grails.project.test.reports.dir
    テストリポート書きだし先。
grails.project.class.dir
    クラスの書きだし先。
何でBuildConfigで設定変える必要があるの?
個人的な意見・・・。
grails.project.class.dirのように、コンパイルクラスを置く場所はよいとして、Grails-1.1
からプラグインの場所が変わってしまったので、Grails-1.0.xを使っていたユーザには、プ
ラグインのディレクトリが近くにいないのは・・・・。
で、 grails.project.plugins.dirで場所を変更すると、プラグインの場所が近くで管理でき
るのでわかりやすい。
ビルドサーバなどでの事情もあるし!
  変な所にファイル置かれても・・
   じゃあ、変えられればOKでしょ!




    管理できるのは良いこと!
プラグイン個別のパス指定
プラグインを個別に指定することもできます。
grails.plugin.location."ext"="./plugins/ext-0.1"
grails.plugin.location."form-maker"="./plugins/form-maker-0.1"
grails.plugin.location."rhino"="./plugins/rhino-0.1.1"
grails.plugin.location."waku-script"="./plugins/waku-script-0.2-SNAPSHOT"
grails.plugin.location."yui"="./plugins/yui-2.6.0"
grails.plugin.location."resources"="./plugins/resources-0.1"
grails.plugin.location."taggin"="/works/experiment/grails-taggin/trunk"




プラグイン開発に便利!
どの辺がチーム開発?
 で、ここで強引に
 プラグインの話!
Grailsプラグインとは?
自分のプロジェクトに便利な拡張機能を追加できる
 公式プラグインも有ります!ユーザ認証機能とか、メールとか、
コマンド install-pluginで簡単に追加できる
そもそもGrails自身がプラグインの集合体!
通常のGrailsプロジェクトと構造が同じ!
 ∼GrailsPlugin.groovyファイルの有無


詳しくは!
ん?
プラグインで機能分けすると、開発を分担できそうだ!

                           プラグインA
             インストール    (プロジェクトの一部の機能)


                           プラグインB
             インストール    (プロジェクトの一部の機能)
 メインプロジェクト
                          グラフ機能プラグイン
             インストール
                       (今後も再利用できそうな機能)

                         ユーザ認証プラグイン
             インストール
                      (公式のプラグイン+カスタマイズ)




この辺がチーム開発!+再利用性!
前から有るのに、何故いまさら主張するの?
Grails-1.0.xでは、プラグインはプロジェクトのディレクト
リにインストールされて、チーム開発で使うと、結構それぞ
れがプラグインの内容をさわってしまって・・・・
結局、後でまとめ直したりと・・・
プロジェクトによってプラグインの派生ができてしまったり
で、便利のようで実は管理しにくかったのです。
そこで!
Grails-1.1からの、プラグインの新機能
グローバルプラグイン
複数のプラグインリポジトリ
他動的なプラグイン自動解決
 (Automatic Transitive Plugin Resolution)
プラグインでのモジュール式アプリケーション開発
プラグインスコープと環境定義
グローバルプラグイン
"-global"オプションを指定することによって、プラグインは
グローバルプラグインとして管理されます。
インストールされたプラグインは、同じ場所に保管されて、
一度インストールすれば、同じバージョンのGrailsで他のア
プリケーション開発するときは再度インストールすること
なく使用することができます。

     grails install-plugin acegi -global
グローバルは、
 必ず毎回とりこまれる
 有る意味便利だけど・・

・・・物によっては不便!? orz
そんなあなたにこんな新機能!
プラグインでのモジュール式アプリケーション開発
他動的なプラグイン自動解決
(Automatic Transitive Plugin Resolution)
複数のプラグインリポジトリ
プラグインでのモジュール式アプリケーション開発
Grails-1.1からプラグインは基本的に
application.propertiesにメタ情報で管理されます。
  app.version=0.1
  plugins.acegi=0.5.1
  app.servlet.version=2.4
                                                         ン
  app.grails.version=1.1-SNAPSHOT
                                                 名= バージョ
  plugins.hibernate=1.1-beta3           s.プ ラグイン
  app.name=relationsample         plugin




プラグインの追加削除、バージョン変更は、プロジェクトの
application.propertiesの内容を変更するだけでよいので
す。
これで、他のチームメンバーへのプラグイン変更通知も
楽々。
しかも!
他動的なプラグイン自動解決
他動的なプラグイン自動解決 (※仮翻訳)
(Automatic Transitive Plugin Resolution)


application.propertiesの情報を元に、
自動的にバージョン確認して、
インストール、アンインストールを行ってくれます。



間違った操作を防げます!
これって、
    プラグインリポジトリの
プラグインにしか対応していないぢゃん!
複数のプラグインリポジトリ
Grails-1.1から独自のプラグインリポジトリを設定すること
ができるようになりました。
設定方法
 USER_HOME/.grails/settings.groovy 又は、grails-
 app/conf/BuildConfig.groovyに情報定義。
 例えば、チームのプラグインリポジトリに使用するSvnの
 Urlが、"http://127.0.0.1/gp"だとしたら
grails.plugin.repos.discovery.local="http://127.0.0.1/gp"
grails.plugin.repos.distribution.local="http://127.0.0.1/gp"



grails.plugin.repos.discovery.リポジトリ名称="リポジトリへのHttpベースのURL"
grails.plugin.repos.distribution.リポジトリ名称="リポジトリへのHttpベースのURL"
複数のプラグインリポジトリ
独自のプラグインリポジトリ設定をすることによって、プラ
グイン関連のコマンドlist-plugins,install-pluginで設定し
たプラグインリポジトリも同時に参照してくれます。
個別に参照する場合は、以下のように設定したリポジトリ
名称を指定します。
grails list-plugins -repository=リポジトリ名称
独自のプラグインリポジトリに
             プラグインをリリース
プラグインプロジェクトディレクトリでrelease-pluginに-
repository=対象リポジトリ名称を指定して実行。

   grails release-plugin -repository=リポジトリ名称



 以下の内容を行ってくれます。
1. プラグインのパッケージング
2. プラグインリポジトリへのプラグインの追加(grails-プラグ
 イン名の階層に、tags trunkを追加)
3. プラグインのバージョンを自動でタグ切り
4. プラグインリポジトリにある、プラグイン管理用
 の.plugin-meta/plugins-list.xmlを更新
チーム用の
プラグインリポジトリ!
いろいろ
GRAILS-1.1は便利です。
元々

                          プラグインA
            インストール    (プロジェクトの一部の機能)


                          プラグインB
            インストール    (プロジェクトの一部の機能)
メインプロジェクト
                         グラフ機能プラグイン
            インストール
                      (今後も再利用できそうな機能)

                        ユーザ認証プラグイン
            インストール
                     (公式のプラグイン+カスタマイズ)
これから!
                                  チーム用プラグインリポジトリ
     Grails公式プラグイン




                     チーム用リポジトリ




プラグイン自動解決

                                           独自プラグインリポジトリで管理

            メインプロジェクト
                                                         プラグインB
                                                     (プロジェクトの一部の機能)
               使用する
            プラグインの情報を
                                                プラグインA
               定義
                                            (プロジェクトの一部の機能)


               チェックアウト              グラフ機能プラグイン
                                 (今後も再利用できそうな機能)



      チームメンバー


                              ユーザ認証プラグイン
                           (公式のプラグイン+カスタマイズ)
        プラグイン自動解決
まとめ
application.propertiesにプラグイン情報を保持するため、
チームメンバー間でのプラグインバージョン管理が楽に!
BuildConfig.groovyで、開発時のビルド場所や、プラグイ
ン情報をまとめやすくなった。
 見えないゴミ減る!
 プラグイン開発時のソース分けが以前より楽に!


開発プロジェクト内容の切り分けをプラグイン別にし、
チーム用プラグインリポジトリを活用することで、開発した
内容をプラグインとしての再利用が期待できる!
つづく.......

More Related Content

What's hot

Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明furusin
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)Fujio Kojima
 
Spectacular Future with clojure.spec
Spectacular Future with clojure.specSpectacular Future with clojure.spec
Spectacular Future with clojure.specKent Ohashi
 
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)Kohei KaiGai
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccYujiSoftware
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011TokyoRyuichi Ueda
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsYoshifumi Kawai
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Yoshifumi Kawai
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"deepblue will
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼうDaiki Ichinose
 
Haskell超初心者勉強会11
Haskell超初心者勉強会11Haskell超初心者勉強会11
Haskell超初心者勉強会11Takashi Kawachi
 

What's hot (20)

Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
 
Spectacular Future with clojure.spec
Spectacular Future with clojure.specSpectacular Future with clojure.spec
Spectacular Future with clojure.spec
 
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
 
R -> Python
R -> PythonR -> Python
R -> Python
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
Gossip事始め
Gossip事始めGossip事始め
Gossip事始め
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyo
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
LINQ in Unity
LINQ in UnityLINQ in Unity
LINQ in Unity
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼう
 
Haskell で CLI
Haskell で CLIHaskell で CLI
Haskell で CLI
 
Nginx lua
Nginx luaNginx lua
Nginx lua
 
Haskell超初心者勉強会11
Haskell超初心者勉強会11Haskell超初心者勉強会11
Haskell超初心者勉強会11
 
test
testtest
test
 

Viewers also liked

Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。Tsuyoshi Yamamoto
 
Groovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークGroovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークTsuyoshi Yamamoto
 
G*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンG*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンTsuyoshi Yamamoto
 
Jggug 2010 330 Grails 1.3 観察
Jggug 2010 330 Grails 1.3 観察Jggug 2010 330 Grails 1.3 観察
Jggug 2010 330 Grails 1.3 観察Tsuyoshi Yamamoto
 
groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」Tsuyoshi Yamamoto
 
G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~Tsuyoshi Yamamoto
 

Viewers also liked (9)

Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。Grailsx@ロンドンへ行ってきた報告。
Grailsx@ロンドンへ行ってきた報告。
 
JGGUG 2011-02 LT
JGGUG 2011-02 LTJGGUG 2011-02 LT
JGGUG 2011-02 LT
 
Groovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトークGroovy ネタ NGK 忘年会2009 ライトニングトーク
Groovy ネタ NGK 忘年会2009 ライトニングトーク
 
G*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンG*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョン
 
Jggug 2010 330 Grails 1.3 観察
Jggug 2010 330 Grails 1.3 観察Jggug 2010 330 Grails 1.3 観察
Jggug 2010 330 Grails 1.3 観察
 
groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」groovyプラプラとか「はやい、はやいよ」
groovyプラプラとか「はやい、はやいよ」
 
はじめてのGroovy
はじめてのGroovyはじめてのGroovy
はじめてのGroovy
 
G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~G*なクラウド ~雲のかなたに~
G*なクラウド ~雲のかなたに~
 
JGGUG grails-spring-boot
JGGUG grails-spring-bootJGGUG grails-spring-boot
JGGUG grails-spring-boot
 

Similar to 「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」

負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめKazumune Katagiri
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Shintaro Fukushima
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...Kazuya Wada
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナーTakahiro Iwase
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxNobuhiro Sue
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)Masanori Machii
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSAyumi Goto
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングkunihikokaneko1
 
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)Tatsuya Ishikawa
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーAyumu Kawaguchi
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門tak9029
 

Similar to 「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」 (20)

負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめ
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
IgGrid 入門編
IgGrid 入門編IgGrid 入門編
IgGrid 入門編
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
 
Apache Tapestry
Apache TapestryApache Tapestry
Apache Tapestry
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
Aizu lt tokyo_luxion
Aizu lt tokyo_luxionAizu lt tokyo_luxion
Aizu lt tokyo_luxion
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
 
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
 

More from Tsuyoshi Yamamoto

JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootTsuyoshi Yamamoto
 
Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Tsuyoshi Yamamoto
 
多治見IT勉強会 Groovy Grails
多治見IT勉強会 Groovy Grails多治見IT勉強会 Groovy Grails
多治見IT勉強会 Groovy GrailsTsuyoshi Yamamoto
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門Tsuyoshi Yamamoto
 
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」Tsuyoshi Yamamoto
 
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」Tsuyoshi Yamamoto
 
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
名古屋SGGAE/J勉強会 Grails、GaelykでハンズオンTsuyoshi Yamamoto
 
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-Tsuyoshi Yamamoto
 
JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、Tsuyoshi Yamamoto
 
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! GrailsプラグインTsuyoshi Yamamoto
 
GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!Tsuyoshi Yamamoto
 

More from Tsuyoshi Yamamoto (18)

JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-boot
 
Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告
 
Grailsx@London 2011 報告
Grailsx@London 2011 報告Grailsx@London 2011 報告
Grailsx@London 2011 報告
 
Grails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLTGrails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLT
 
G * magazine 1
G * magazine 1G * magazine 1
G * magazine 1
 
G * magazine 0
G * magazine 0G * magazine 0
G * magazine 0
 
多治見IT勉強会 Groovy Grails
多治見IT勉強会 Groovy Grails多治見IT勉強会 Groovy Grails
多治見IT勉強会 Groovy Grails
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門
 
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
 
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
 
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
 
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
 
JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、JGGUG Camp 2009 いっぽう熱海では、
JGGUG Camp 2009 いっぽう熱海では、
 
ExtJS勉強会@名古屋
ExtJS勉強会@名古屋ExtJS勉強会@名古屋
ExtJS勉強会@名古屋
 
G* on GAE/J 挑戦編
G* on GAE/J 挑戦編G* on GAE/J 挑戦編
G* on GAE/J 挑戦編
 
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
 
GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!GrailsでSpringをGroovyにしよう!
GrailsでSpringをGroovyにしよう!
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」