スキリプティンギ Java — Grails/Groovy による開発 —
原潤 †
JVM 言語 びWeb ョン ワ あ Groovy/Grails 開発
適用 こ ,信頼性 犠牲 こ 2〜3 割 生産性向 成 こ た.本
稿 例 適 用 通 得 た 効 果 い 分 析 , 直 面 た 課 題 対 処 い 説 明 . Groovy/Grails , 言語 比 Java 親和性 非常 高 ,Java開発 経験や
そ 形無形 Java資産 そ 活 こ こ 示 た.
Scripting Java with Groovy And Grails
Uehara, Junji
We get 20% to 30% improvement of productivity without sacrificing of reliability through applying Groovy and Grails, which is a script language on JVM and web application framework, to our software development projects. We show the analysis to our case studies and issues we confronted. Compared with other languages or frameworks that runs on the JVM, Groovy and Grails have a high affinity for Java, and it arrows developer to get maximum leverage out of assets includes know-hows and skills on Java.
1. はじめに
NTTソ Groovy/Grails い 技術蓄 積 普 及 活 動 , 書 籍 執 筆 や コ ュ 活 動 , 社 内 外
研修等 通 組 来 ,2012年 1
Grails推進 設置 組 さ 本格化さ
た.本稿 Groovy/Grails い 簡単 説明 ,開
発 例 紹介 た 適用 課題 示 .
2. Groovy について
Groovy[1] Java仮想機械 動作 動的言語
あ ,文法 Java 互換 あ .冗長
述(型 指 定 , 定 義 , チ 例 外 述 等) 省 略
こ , ソ 実行時 追加 解釈 動的言語機
能, び強力 言語機能(ClosureやJava標準
ソ 単 機能追加,AST 変換等) ,
ava 比較 2〜10分 1程度 コ 述
可能 生産性 高い言語 あ .
Java 主要 開発言語 使用 た企業
,既存Java資産(Javaコ や ,AP ワ ,開 発 運 用 ) そ 利 用 可 能
あ こ 利点 あ .特 Java経験者 ,学
習コ 僅少 済 こ , JVM 言語(Scala, JRuby, Clojure等) 比 利点 .
Groovy ,高い生産性 ,高い信頼性 時
成 言 語 あ , 信 頼 性 向 寄 以
う 機能 特徴 持 .
ョ 型付 (後述)
AST 変換 ン タ ン 化
静的解析 Codenarc
Groovy 2.0 静的型チ 機能
JVM キュ や信頼性 享
3. Grails について
Grails[2] ,Groovy 使 開発 OSS Web ョン ワ あ .Groovy Grails 関係 ,Ruby Ruby on Rails 関係 様 あ . Grails Groovy (簡潔 述,内部DSL††,動
的性質) 活用 ワ あ .
Grails ,Web ョン開発 必要
ワ や 数 多 組 合 た タ
ワ あ ,以 う 機能 持 .
規定さ た ョン構 設計
DB た 簡易GUI 自動生成 Scaffold
ン機構 多数 公式 ン817件 既存
コン ン 再利用
Java EE(Java 盤) 持 安定性, ビ ,資産
† NTTソ 株式会社 Grails推進 所属
††言語自身 タ ,処理対象概念 述 た
適 述 う .
そ 引 継
4. 適用事例と評価
2011年度 弊社 Grails適用 例 示 .
項 番
顧 工数削減効果 コ
比較(対 Java)††
規 模
1 A 自
社
詳 細 設 計 〜 結 合 工 程
,Java 約1/2~1/5 期間 開発
Java 約 1/10
50K L
2 B 自
社
詳細設計〜 作成工
程 ,Java 約半分 工数 開発(開発全体 工数2割減)
未測定 未
測 定
3 C 詳細設計〜結合 工程
,Java 約1/7~1/10 期 間 開発
Java 約 1/10
20K L
適用 通 評価結果 以 通 .
全体 ~ 割 工数削減 見 .
概要定義 , び 総 合 工 程 以 降 工 数 従 来
大 変わ い.こ 開発 従来 様
タ 開発 適用 たた あ .
結合 工程 削減効果 大 い.
詳細設計工程 い 工数削減 理由 ,
ョン 本的 構 い 設計 要 こ .
少 Groovy/Grails 適 た 採用 効果 大 い 言え .適 た
タ ベ コ 内 容 R U 作 成 表 示 変 更 削除 た 多数画面 含
開発前 要件 十分 確定 , ン
ンタ 機能拡張や変更 多い
以 ,項番2 ン 評価 示 .
習熟 容易 あ た.Grails ン キュ ン
, 本的 Groovy/Grails 知識 開発 行うこ .従来 あ JavaEE開発 必要 複数 要素技術(Spring, JavaEE, Hibernate, RDMBS)
習熟 い い 開発 開始 た.
Java キ 活 た.Java 言語 様 共通 , Java部分 開発 並行 作業 和感 少 い.
タ 開 発 向 い い . 画 面 DB 間 I/F Grails 規定さ ,こ 関 設計工数
削 減 , 開 発 開 始 直 後 段 こ
連携動作さ こ .
5. 課題
業務適用 通 直面 た課題 以 .
IDE 成熟度 い.一般 言語 IDE 要 性 い a v a 開 発 移 行 視 場合 IDE 適用 必須 .代表的 IDE あ Eclipse 対 VMware社 Groovy/Grails
提供 い [3] ,Java 対 比 完成度 やや い.代 IntelliJ IDEA(Grails 機
能 関 償,Groovy あ 無償利
用可) 利用 た ,高機能 完成度 高 た.
型チ 問題 .一般 動的型言語 変数 型
, た動的言語 動的 拡張( ソ 追加) 可 能 あ た , 自 動 補 完 や コ ン 時 チ
いこ 問題 (特 大規模多人数開 発 時). 言 語 一 般 , 単 体 充 実 さ
こ こ 問題 対 対処 ,Groovy/Grails 試験 機能 多 持 .加え Groovy , Java 様 型 言 行 う こ ( ョ 型 付 ),コ ン 規 約 型 情 報 言 こ
決 こ ,多 場合型 回避 ††.
性能 問題.実行性能 問題 た , 起
動時間 遅 ン 開発効率 阻害 た.
タ あ こ 問題解析 困難さ.
日本語情報 足.多 Javaベ 先進的 ワ い 共 通 , 日 本 語 情 報 少 い . Groovy い [4] あ Grails い
新版 追 日本語書籍 い.
6. まとめ
JVM 安 定 た 高 性 能 あ ,
Java 言語 い 冗長性 発生 変更
難 さ 迅 開 発 支 障 い . い
言 語 移 行 こ ,Java 関 連 資 産(人 的 資
源 含 ) 捨 こ 意 味 大 痛 伴 う .
Groovy/Grails 用い こ ,漸進的 生産性 向
Java 技術 た高信頼性 維持 時 見
込 こ .
参考文献
[1] http://groovy.codehaus.org/ [2] http://www.grails.org/ [3] Groovy/Grails Tool Suite
http://www.springsource.org/node/3594 [4] 関谷和愛, 原潤 ,須江信洋,中 靖治,
ン Groovy, 2011, 技術評論社
†削減効果 コ 比較対象 ,当社 見積 予測
††2012年6 さ たGroovy 2.0 静的型チ ( び静的結合ベ コン 機能) 採用 ,
Java 等 コン チ 性能向 可能 ,
IDE 補完 改善さ こ 期待さ .