Grails紹介

3,199 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,199
On SlideShare
0
From Embeds
0
Number of Embeds
52
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Grails紹介

  1. 1. 紹介 2008/1/17 上原潤二
  2. 2. 内容 Grailsとは 特徴 1. フレームワークのディストリ ビューション 2. CoC 3. DRY原則 4. Groovy まとめ デモ Q&A
  3. 3. とは
  4. 4. Grailsとは?(1 of 2) 誤解を恐れずに一言で 「Ruby on Railsの Groovy版」 Webアプリフレームワーク(OSS) 実績あるJavaインフラ上 Spring, Hibernateベース
  5. 5. Grailsとは?(2 of 2) もっと誤解を恐れずにいうと 「マトモなPHP」 Webアプリ・単純なDB機能向け ワンストップソリューション 複雑化するJava開発へのアンチ テーゼ
  6. 6. Grailsの歴史 2006年3/20に0.1版リリース 当初名称は「Groovy on Rails」だっ た 英仏など欧州で開発・利用が盛ん 2008/1/15現在1.0RC3が最新安定 ビルド 1ヶ月以内に1.0正式版が出る予定
  7. 7. Grailsで何ができるの? 「Webアプリフレームワー ク」の利点に加え 重複・煩雑さ排除 開発者関心を限定集中 →結果として生産性向上
  8. 8. 特徴 つ 1. フレームワークのディストリビュー ション 2. CoC 3. DRY原則 4. Groovy
  9. 9. 1. フレームワークのディス トリビューション
  10. 10. フレームワーク戦国時代 無数のフレームワーク 際限ないバージョンアップ それぞれ得失あり 相性問題
  11. 11. 解決策 Grails = フレームワークのディストリビューション 検証され実績のある組み合わせ
  12. 12. フルスタック・フレームワーク Grailsは標準で以下を含む ORMフレームワーク: Hibernate DIxAOPコンテナ: Spring テスティングフレームワーク: JUnit, canoo WebTest MVCフレームワーク: Spring MVC, Webflow ロギング: Log4j HTMLレイアウト: SiteMesh 試験用組み込みDB HSQLDB 試験用組み込みServletコンテナ: Jetty バッチ処理フレームワーク: Quartz プラグインで拡張可 インストーラ一発でインストール
  13. 13. 2. CoC
  14. 14. CoC Convention over Configuration “規約に従っていれば設定が省 略できる” さらばXML設定ファイル さまざまな利点
  15. 15. CoCの例(1) grails-app/taglib配下に “HogeTaglib.groovy”という名前のクラス 定義を置くとGSPカスタムタグとして動作 HELLO HogeTaglib.groovy Grails class HogeTaglib { def mytag = { test.gsp out << “HELLO” } } <g:mytag /> taglib/ views/ ※GSP=Groovy Server Pages. Groovy版JSP
  16. 16. CoCの例(2) クラス名が“Service”で終わる クラスは自動的にインスタンス 化されて依存性注入 HogeController.groovy HogeService.groovy class HogeTaglib { class HogeService { HogeService hogeService void sayHello() { : } hogeSrivice.sayHello() } }
  17. 17. 3. DRY原則
  18. 18. DRY原則 Don’t Repeat Yourself “重複を避けよ” 重複の例: • 設定ファイル内容と、 ソースコードの情報 • 毎回似たようなコード
  19. 19. DRY原則適用の例(1) 唯一のモデルクラス定義がさま ざまな処理の本ネタに Grails class Book { 自動生成 Spring Spring bean String title 自動生成 Person author } Hibernate RDBMS 自動生成 1回だけ 自動生成 BOOK TABLE 手書き Scaffolded Views id title author_id Scaffolded 0 “hoge” 3 Controllers 1 “fuge” 7
  20. 20. DRY原則適用の例(2) 定型処理コマンド群と雛形の自 動生成 grails <command> bootstrap bug-report clean compile console create-app create-controller create-domain-class create-integration-test create-plugin create-script create-service create-tag-lib create-unit-test doc generate-all generate-controller generate-views help install-plugin install-templates list-plugins package-plugin package plugin-info release-plugin run-app-https run-app set-proxy set-version shell stats test-app upgrade war
  21. 21. 4. Groovy
  22. 22. Groovyとは何か(1) 「GroovyはJava言語の拡張である」 C → C++ Java → Groovy JVM上で動作 動作原理やセキュリティモデル同じ Javaプログラマにとって親和性が高く容易に習得可
  23. 23. Groovyとは何か(2) 何が拡張されたか? C++ = C + オブジェクト指向 Groovy = Java + ? 動的な動作 高抽象・簡潔記述 + とても書ききれないほどの他の機能
  24. 24. Groovyコード例(1) Hello.java public class Hello { public static void main(String[] args) { System.out.println(”Hello World”); } } Hello.groovy println ”Hello World”
  25. 25. Groovyコード例(2) Java import java.util.*; public class HashMapTest { public static void main(String[] arg) { Map<String,Integer> map = new HashMap<String,Integer>(); map.put(quot;太郎quot;, 35); map.put(quot;次郎quot;, 30); map.put(quot;三郎quot;, 20); for (Map.Entry<String,Integer> entry : map.entrySet()) { System.out.println(entry.getKey()+quot;:quot;+entry.getValue()); } } } Groovy map = [太郎:35, 次郎:30, 三郎:20] map.each { println quot;${it.key}:${it.value}quot; }
  26. 26. につ いて他にも いろいろ
  27. 27. Grailsの構成 ユーザ 記述 Domain Service Taglib Controller View コード Test Cases Groovy Class Groovy Class Groovy Groovy Class GSP Groovyランタイム ユーザ Spring Hibernate filters Logging scaffold 非標準 非標準 Plugin Plugin Plugin Plugin Plugin ・・・ Plugin Plugin 記述 コア層 Plugin Grailsプラグイン基盤 Canoo 下位層 Spring Hibernate Log4J Jetty Sitemesh JUnit Webtest HSQLDB JDK Java VM
  28. 28. Grails on Java EE コマンドラインから > grails war と叩くと.warが生成されるので TomcatやWebsphareにでもデプロ イすればよい ここで生成されるwarは 「production releaseバージョン」で あり、動的性質が除去されている (設定ファイルをいじっても反映されない)
  29. 29. プロジェクト構成の標準化 grails create- appでここ以 Javaコードも 下の構造が ここに置けば 生成される。 再起動無しで 自動コンパイ Grailsアプ ル・更新可能 リとしての 基本構造 テスト コードとテ ストレ メッセージバ ポートは ンドルとか。 ここに。 grails warで 生成される Jarのための 情報
  30. 30. 他にもいろいろ(1 of 2) DSL ORM-DSL、悲観的ロック、キャッシュ制御 Spring DSL テスティング関係 テスト用RDBMS(HSQLDB) サーブレットエンジン(Jetty) シナリオベースのWebテスティングフレームワークCanoo Webtest HTTPベースのHTMLレイアウトエンジンSitemesh DB連携テスト用の自動テスティング(integration test) テスティングフレームワーク連携(JUnit) GORM: Grails ORM Hibernateを動的かつ簡易に扱うためのラッパー ダイナミックファインダー: 実行時に生成されるfinderメソッド群(findBy, findWhere, ) DAO不要 継承、1:多、多:多関連サポート
  31. 31. 他にもいろいろ(2 of 2) Webインターフェース レイアウトエンジンSiteMesh カスタムURLマッピング Webflow、カンバセーション、フラッシュスコープ ライブラリ独立AJAX(GWT、YUI、DoJoプラグイン..) GSPタグリブ: JSPカスタムタグと同等だがはるかに簡単で便利 Pluginシステム Grails = プラグインの集合体 依存性情報を伴う拡張モジュール 一発オンラインインストール 多種多様なプラグイン Spring Security(Acegi plugin) オンラインアップデート、更新反映 アプリ再起動を不要にするための更新検出/伝播制御、 リロードなどの枠組み EJB3連携 スキャフォルディング CRUDビューの動的(もしくは静的)生成
  32. 32. まとめ
  33. 33. Railsと比較 Railsは高機能で情報多し Grailsのメリット Java資産 • 既存ライブラリ/システム、 技術者のスキル、 教育投資、開発者・協力会社とのコネク ション、 ハードウェア・ミドルウェア資産、安 定性、実績、性能 JRuby on Railsと比べても意義がある
  34. 34. Grailsの(今の)問題点 重め 1.0前(RC3) 日本語情報ない(執筆中)。 現時点(2008/1)では実業務適用には 時期尚早か 試作や社内システム開発に是非
  35. 35. まとめ: Grailsの有用性 アジャイル開発 「動的性質」の活用・Javaの限界突破 モデル駆動 本質的作業に努力・関心を集中投下 “PHP”がわりの簡易さ、Javaとの継続性 限られた開発者資源で売り上げ向上 Spring, Hibernateの設定は難しい やってられるかっ!!
  36. 36. デモ
  37. 37. Q&A
  38. 38. 参考資料 http://grails.org/doc/1.0.x/ http://grails.org/ http://groovy.codehaus.org/ Groovyホームページ http://docs.codehaus.org/display /GRAILS/Success+Stories Grailsを使用したサイト

×