arcanum_jp’s blog

おっさんの日記

「G*ワークショップ 仙台」に行ってきました。

 G*はジー、アスタァーと読みます。

はじめてのGroovy

発表者:須江信洋 さん(日本IBM)

資料

2010/4/24に仙台にて開催されました、G*ワークショップにて発表させていただきました。

JGGUGのイベントでしゃべるのは昨年夏以来ですね。。。

2010-04-24

 Websphere sMashにかかわったひと
 Groovy in Action 翻訳のひと

Groovyとは

 

  • Java VM上で動く動的言語
  • 他のスクリプト言語のように、新規にAPIを学ぶ必要がない
  • 文法がJavaと殆ど同じでJavaのソースを修正なしでGroovyでほぼ動かせる
  • Javaを拡張するかたちになっている、拡張したものはGDKといい、Javaのクラスに持っていないメソッドなどを定義。(このことから、Javaを知っている技術者が比較的簡単に学習できる)
  • Javaから呼ぶこともできる、
  • オップショナルタイピング
    • 型を指定したいときは指定できる、指定しなくともよい。
  • 動的プログラミング
実行

 インストールは、サイトから圧縮ファイルをダウンロードして、好きな場所に解凍、パスを通すだけ。


 実行はいくつか方法があり・・・

  • コマンドから、Groovyのソースファイルを指定しての方法。
  • Groovyシェルからの実行
  • Groovyコンソールからの実行

 コンソールが一番使いやすい。VBのイミディエイトペインみたいな感じ。クラスは宣言しなくともよく、Groovyのやりたい文章をそのまま書けばよい。自動的にスクリプトクラスを生成し、実行される。


 IDEの対応はいくつかあり、NetbeansEclipseIntelliJが対応。NetBeansGrailsに対応しているが重い。IntelliJが一番補完がすごいが、年貢が必要。


 Groovy自体はインストーラ版もあるので、そちらが一番簡単に使うことができる。

言語仕様

 説明のなかで僕がへぇ〜って思ったものを書いてみる。Javaを拡張したもので・・・
 
 
 範囲型
(初期値..終了値)each{クロージャ}
初期値〜終了値で示された範囲内で、クロージャを繰り返す。

def x=0
(1..100)each{ i->
	print 'カウンタは' + x
	x++
}

 Expando
インスタンス生成後にメソッドやフィールドの追加が可能。JavaScriptのように。Grailsのモデルはコレを利用している。

 GroovyはXMLが得意

お得な情報

 Groovy Web Console

 Google app上に作られたエンジン。ブラウザで実行できる


Grailsとことん入門

発表者:山本剛 さん(ニューキャスト)
id:mottsniteさん

 講習では、Web開発っていろいろ覚えなくてはならなくて超めんどう。はじめは簡単なPerlとかを教えるが、そのうち学習者がCoCとか、みつけたらGrailsの学習に入る


 the search is over・・・何か大事な言葉か?と思ってとっさにメモしたが、笑った。凄い解釈。

Grailsとは

 通常のWeb開発で使っていたような、HTMLとかAJaxとか、Hibernateとかといった、言語以外で覚えなくてはならない、いろんなキーワードを使わなくとも分かりやすく書けばよいという感じ。


 コア技術をプラグインで連携するように設計してある。Railsのまねではなく、(始めはRailsの模倣から入った?が)今はGrailsの哲学で作られている。


 Grailsの仕組み

 Coreというプラグイン+色々なプラグイン+外部プラグイン

 各種コマンドにより、プロジェクト生成、、アプリケーション起動など行える。はじめからメモリ上で動くデータベースが付属(HSQLDB)し、サーバーはTomcatがバンドルされている。スカッフォルドも簡単につくれるよ。

新規プロジェクト作成

 grails create-app myapp ; cd myapp

 これでプロジェクトツリーを作ってくれる。Javaラーだと、自動生成されたフォルダのうちweb-appフォルダに色々作ればいいんでないかい?って考えてしまうが、それはGRails的ではないので注意。

ドメインクラス作成

 greils create-domain-class my.pack.Book

 ORマッピングが完了するが、データへの操作はGORM(ごーむ)で行う。データ操作のメソッドはドメインクラスに自動的に設定される。先ほどのExpandoで実装されている。


 たとえばBookと言うモデルクラスがあったとすると、GORMダイナミックファインダを使用し、

  • Book.findByXXXXXX(args...)
  • Book.findAllByXXXXXX(args...)
  • Book.countXXXXXX(args...)
  • Book.findByXXXXXLessThan...And...とか

 ※XXXXX=フィールド名

 みたいな感じでメソッドが追加されている。(実際に追加されるわけではなく正規表現を使ってメソッドがあるように見せかけているみたいな、ごにょごにょ・・・だそうな)

こんとろーら

 grails create-controller my.pack.Book

 コントローラ名が、URLに対応している

index = {処理・・・}

 コントローラ内に作ったこのクローじゃが/indexに対応

 コントローラに以下の1文を書くだけでスカッフォルドになる

def scaffold = true
ビュー

 以下を使える

  • GSP (Groovy Server Page)
  • JSPも使用可能
  • Grailsタグリブ
  • JSPタグリブ

 以下のコマンドでタグリブが簡単につくれるが、J2EEのタグリブのようにtld,web.xmlなどの設定は不要。

 grails create-tag-lib com....

の記述は不要

最期に

 正宗の漢詩
 意訳 すばらしい

Grailsでシステム構築

発表者:石川めぐみ さん(富士通東北システムズ)


 お客さんの理解あり、好きにやっていいよ!ってことで使った。それまでの経緯には、@bikisukeさんの後押しとかあったそうな。

 システムは商談獲得のためのデモシステムで、各ステークホルダーたちの要求は、

  • 画面の見た目重視(営業さん)
  • 機能面も考慮(SEさん)

 でも業務仕様書は殆どなしみたいな。

準備でこまったこと
  • 多くの情報が英語 ⇒ 調査時間が多くなる
  • 便利なプラグインを知らん!
  • 開発環境の準備が難しかった
実装でこまったこと
  • Hibernateではまる(Hibernateが邪魔をする!)
  • n+1問題ではまる
  • SQLを実行したときに取得されるデータの型が・・・
導入するなら
  • 少人数で
  • クリティカルな業務にはまだ向かないんじゃないか
  • 普段の業務をちょっと楽にするツールなどには向いている
  • 英語が得意な人をプロジェクトに入れよう
  • ビューを使用する場合テーブル自動生成後手動で作るのがいいよ。
  • はじめちいさく作って段階的に大きくしていくのがよろし
  • ペアプロしましょ(Grails玄人とGrailsシロウトのペアで)

Groovyではじめるアレやコレ

 発表者:いまいまさのぶ さん

 いろいろなネタ的なこと。そしてIntelliJの話題。そのなかで僕がいいなと思ったことは、バッチやシェルの代わりとしてGroovyは使えると言うこと。開発はWinで、実行環境はUnixでとかの場合、WinのバッチファイルとUnixのシェルで同じものを作る必要があったが、Groovyを使うと、シェルの変わりに使えるので、1つにできるということ。これいいね。


 Groovy in Actionをもらった武田ソフトさんは、実はRuby信者なので本を燃やすかもしれない・・・焚書坑儒?笑ってしまった。

懇親会

 僕は懇親会なんてのは始めて参加したんだけど、大変楽しかったです。名刺交換させていただいた方も、実はWeb上では有名な凄い人とか、なんか自分は場違いのような気がしましたが。


 今日発表した石川さんがGroovyたんのTシャツをもらっていました。

   こういうキャラのTシャツ
     ↓
 http://d.hatena.ne.jp/torazuka/20100124/groovy



 Groovy、使ってみたくなりました。