Grailsのススメ(仮)

  • 1,655 views
Uploaded on

JGGUG総会+スペシャルG* ワークショップ …

JGGUG総会+スペシャルG* ワークショップ
2010/7/24
「Grailsのススメ(仮)」
発表者: 山本剛 (ニューキャスト)
ここのところリリースラッシュのWebフレームワーク「Grails」。Grailsのクイックスタートから、Grails 1.3.x+αな最新情報、個人的注目プラグイン情報等、紹介します。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,655
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Grailsのススメ(仮) 「天は人の上に人を造らず、人の下に人を造らず」 @JGGUG 2010年7月24日def speaker = new Cast(name:"T.Yamamoto",version:"G*-2010-07-24") 1
  • 2. 自己紹介山本 剛仕事:テクニカルDTPアーキテクトtwitter: @tyamaはてな id: mottsniteブログ↑JGGUG名古屋支部長Grails Acegiプラグインのコミッター「Grails徹底入門」共著 9∼11を執筆 2
  • 3. 最近マイコミ記事。書かせて頂きました。http://bit.ly/a40O4G 3
  • 4. 実は以前にも。uehajさんと一緒にこっそり記事書いてました 4
  • 5. ・・・のすゝめ 5
  • 6. Groovy!? 6
  • 7. Groovyハ言語ノ上ニ言語ヲ造ラズ、 言語ノ下ニ言語ヲ造ラズ。 ※いろいろな解釈ができる・・・・。 7
  • 8. Java自体をリプレースする物では無く、Javaでの開発を 柔軟に手助けする言語。 Groovy is Java Java is Groovy 8
  • 9. Grails!? 9
  • 10. ? ??Grailsはフレームワークの上に フレームワークを造らず、フレームワークの下に フレームワークを造らず。 ? ?? ん??・・・・。 10
  • 11. Grails!? 11
  • 12. 簡単に。 Springフレームワークを、Groovyでダイナミックに柔軟にして、 Webアプリケーション開発をする フルスタックフレームワーク。 12
  • 13. Grailsのみで、Webアプリケーションが、サクサク開発できます。既存の技術を活用して。 13
  • 14. 信頼性! Java。Spring フレームワーク。 Hibernate。 Sitemesh。 Tomcat。 14
  • 15. そしてそれらで、 15
  • 16. CoCな開発。TDD。ドメインドリブン開発。 DSLで読みやすく、わかりやすく、 必要な部分記述する。 Groovyで記述。 Javaっぽく書ける。 16
  • 17. しくみ。 領域のルールを定義する。実装する。 => Artefact。 DSL。 DSL 規約 ドメイン固有言語。 Groovy プログラム 機能的に使うPlugins - 再利用&組換え可能にモジュール化。 DSL実装 Artefact ドメイン固有言語の動作実装。 ルールを動作させる仕組み。 17
  • 18. Plugins - 再利用&組換え可能にモジュール化。 DSL実装 Artefact ドメイン固有言語の動作実装。 ルールを動作させる仕組み。その領域のフレームワークを開発する。 他のフレームワーク DSLの実装をフレームワーク化する。 他のフレームワークをDSLで、 動作できるように実装する。 モジュール化する。フレームワーク内でフレームワークを柔軟に使ったり。 フレームワークからフレームワークが派生したり。 18
  • 19. Grailsはフレームワークの上に フレームワークを造らず、フレームワークの下に フレームワークを造らず。フレームワークでありながら、他のフレームワークと共存し、 さらにフレームワークを開発して派生できる。 ※強引!?・・・・。 19
  • 20. Grails聖書から、 大事な言葉。 柔軟さを犠牲にせず シンプルさをアーカイブ 20
  • 21. Grailsの概略図基本部分はJavaで実装されている。 中身は、おおよそ、Java(50%)-Grooy(50%)で実装DIコンテナにSpringO/RマッパーにHibernate Grails Groovy Spring Hibernate SiteMesh DSL 基礎部分はJava & Groovy JVM 21
  • 22. GrailsはSpring! Grailsは、形を変えたSpring-MVC Spring + Hibernateを抽象化したものである プラグインの仕組みで Springフレームワークの定義を自動化 Spring Beanビルダー22 参考資料: “Grails for Spring Developers” by Graeme Rocher
  • 23. Out of the Box Hibernate上に構築された、簡単に利用できる O/Rマッピングレイヤ データベース 表現豊かなビューテクノロジー View Groovy Server Pages (GSP) MVC2 コントローラレイヤは Spring MVCを利用 コマンドラインスクリプト環境には ビルドシステム Groovy版のAnt Gant リロード可能に設定された組込 Tomcat コンテナ 組込 Spring DSLによる依存注入 DI 国際化 SpringのMessageSourceで実装されたi18n対応 Springフレームワークのトランザクション実装による23 サービスレイヤのトランザクション トランザクション
  • 24. Grailsクイックスタート! 24
  • 25. Quick Start !! ダウンロードして 解凍! http://grails.org/Download 環境変数設定 export GRAILS_HOME=/opt/grails-1.3.1 export PATH=$PATH:$GRAILS_HOME/bin 25
  • 26. Quick Start !! grails create-app myapp cd myapp grails create-domain-class work ドメインクラス編集 grails create-controller work コントローラに “static scaffold = true” 追記 起動: grails run-app 内容がまとまったら grails generate-all chat そして調整 26
  • 27. どうして動いた?コマンドターゲットプロジェクト作成、各種コード生成、アプリケーション起動等をコマンドターゲットで行う。 % grails run-app % grails test-appメモリ上で動くデータベースHSQLDBがバンドルされている。 ファイル動作も可能。 もちろん運用時はHibernate対応のDBが利用可能サーブレットコンテナ組込Tomcatがバンドルされている。リロードできる。但し一部不安定 (ryスカッフォルドベースになるコードを生成 (動的 or 静的)簡単なCRUDのみで良いマスタはこれでも充分。 27
  • 28. Grailsの機能 GORM (Grails O/R Mapping) 簡単なタグライブラリ URLマッピングDSL REST対応 コンテントネゴシエーション Webフロー Filter AJAX Ivyベースの依存性管理 テスト環境 クラウドへのデプロイ 28
  • 29. Grails プラグイン29
  • 30. Grailsの仕組み ur ity S ec low Controller i1 8n Flex bF We Codec Quartz Domain 他の プラグインGrails lug in JMS MyP Core Quartz ag gin Service UrlMapping T Filters 30
  • 31. GrailsプラグインGrailsコアもプラグイン!簡単インストール grails install-plugin acegi活発なプラグインコミュニティ 430種類以上!簡単開発 Grailsでの開発経験があればできます。 grails create-plugin myplugin grails package-plugin 31
  • 32. Grailsプラグインチーム開発 - 公式プラグインのみではない! 自分のプラグインリポジトリ SVN Mavenモジュラ開発 インラインプラグイン BuildConfigにプラグインプロジェクトパスを指定。将来 OSGi化されたプラグイン? 32
  • 33. 最近のGrails事情 33
  • 34. マメな更新リリース早っ!2010-05-11 1.3.0 リリース! ∼6日後2010-05-17 1.3.1 リリース ∼1ヶ月後2010-06-17 1.3.2 リリース ∼21日後2010-07-08 1.3.3 リリース ∼21日後2010-07-29 1.3.4 (予定) 34
  • 35. Grails 1.3.x 35
  • 36. Grails1.3.x 詳しくは公式リリースノートを参照。 http://www.grails.org/1.3+Release+Notes ブログに、まとめてあります。 http://d.hatena.ne.jp/mottsnite 36
  • 37. Grails1.3.x Groovy1.7系に更新! JUnit4対応 Mavenリポジトリ対応 maven-publisher プラグイン依存性宣言 プラグインモジュラ開発の向上 Grails docのPDF書きだし(英語のみ) GORM派生プロパティ対応 GORMでのダーティーチェック ネームドクエリに、追加クライテリア、ネスト、チェイン クエリーキャッシュの向上 GSP joinタグ、unlessタグ グローバルアプリケーションレイアウト フィルタオーダリング TagLibテスト向上 37
  • 38. Grails1.3.1 フィルタオーダリング dependsOnプロパティを定義することで、フィルタの実 行順番を定義できる。 class MyFilters { def dependsOn = [MyOtherFilters] def filters = { … } } GSP タグ "unless" <g:unless test="${cacheEnabled}"> Tag Body Goes Here </g:unless> 名前つきクエリーのネスト TagLib テスト 38
  • 39. Grails1.3.2 Groovy 1.7.3、Spring 3.0.3 更新 スクリプトのもしかして機能 ~/workspace/testapp $ grails create-doman-class testapp.Author Welcome to Grails 1.3.2 - http://grails.org/ Licensed under Apache Standard License 2.0 … Script CreateDomanClass not found, did you mean: 1) CreateDomainClass 2) CreateApp_ 3) CreateScript 4) CreateFilters 5) CreateUnitTest Please make a selection or enter Q to quit: findメソッドのクエリーキャッシュサポート Book.findAll( "from Book as b where b.author=:author", [author:Dan Brown], [cache: true]) 39
  • 40. Grails1.3.3 バグフィックス Database Mappingに、insertable、 updateable class Book { String title static belongsTo = [author: Author] … static mapping = { author insertable: false author updateable: false } }40
  • 41. Grails1.3.4 予想。 Groovy 1.7.4 に更新? バグフィックス Maven Publisher プラグイン更新 未対応の内容は1.3.5へ引き継がれます。 41
  • 42. 最近リリースされた 個人的注目の プラグイン 42
  • 43. プラグインカタログ Application Info http://grails.org/plugin/app-info Grailsアプリケーションのあらゆる情報を閲覧でき る。 参考資料 http://burtbeckwith.com/blog/?p=344 Sharding Plugin http://grails.org/plugin/sharding データベースシャーディング 参考資料 http://jeffrick.com/2010/07/13/a-grails- plugin-for-sharding/ 43
  • 44. プラグインカタログ-認証プラグインの八岐大蛇?- Spring Security 8つのプラグイン http://burtbeckwith.github.com/ 1. Spring Security Core plugin S2のコアプラグイン。 Acegiをベースに開発。 リリースされてる 2. Spring Security OpenID plugin - OpenID実装 3. Spring Security ACL plugin - ドメインオブジェクトセキュリ ティ (ACL) 4. Spring Security CAS plugin - CAS対応 5. Spring Security LDAP plugin - LDAP対応 まだリリースされていないがリポジトリ確認 6. Spring Security OAuth Consumer - OAuth対応 7. Spring Security OAuth Provider - OAuthプロバイダー 8. Spring Security UI - ユーザ管理UI提供 44
  • 45. プラグインカタログ SmartGWT SmartClientのJavaScriptコンポーネントを使って GWTアプリケーションを構築するためのAPIを実装 したプラグイン。 http://grails.org/plugin/smartgwt http://code.google.com/p/smartgwt/ Stories http://grails.org/plugin/grails-stories 他のテストフレームワークに依存しないBDDプラグ イン 45
  • 46. プラグインカタログ Geolocation http://grails.org/plugin/geolocation ブラウザの位置情報通知機能(Geolocation API)を扱 うプラグイン ダイナミックコントローラ http://grails.org/plugin/dynamic-controller コントローラを別管理して、定義により複数のコン トローラをミックスして使えるようにする。 46
  • 47. その他。 47
  • 48. Grails Plugin Collective http://grails.org/Grails+Plugin+Collective Grailsプラグインをメンテナンスする、ボラ ンティア団体 主な活動は、バグFix、テスト、新しいGrailsのリ リースで動作確認。 grails-fixtures grails-joda-time grails-rendering grails-selenium-rc grails-springcache 48
  • 49. GrailsとNoSQL プラグインがあります。 CouchDB http://grails.org/plugin/gorm-couchdb HBase http://grails.org/plugin/gorm-hbase MongoDB http://grails.org/plugin/gorm-mongodb Neo4j http://grails.org/plugin/neo4j Cassandra http://grails.org/plugin/cassandra 49
  • 50. inconsequential 50
  • 51. inconsequential GrailsでのNoSQL実装。 iNconSeQuentiaL 意味 = 筋の通らない。論理的でない。 inconsequentialなデータベースに対応するという意 味であろうと、勝手に解釈。 現状、詳細な説明が無いのでソースコード を読むしかない。 51
  • 52. inconsequential ソースコードによると。 コアがあり。 各NoSQLの実装。 appengine、cassandra、redis、JCR Grails アダプター GrailsApplicationMappingContext org.springframework.datastore.mapping.MappingContext AdaptedDomainClass、AdaptedDomainClassProperty そして、runtime-dynamic。 ソースコードを読むと、PersistentEntityにメソッドを追 加してダイナミック動作させている。 52
  • 53. inconsequential Graeme氏がつぶやいた参考になるコード。 53
  • 54. inconsequential そういえば、Redisは、VMwareですね。 Springが持って無くてもVMwareが持ってるって事か・・。Redisとは? オープンソースとして開発されているKVS 利用実績Github,Craigslist,The Gardian,Engine Yard等。 key-value型、リスト型、集合型、順序付き 集合型などのデータ構造が扱える。 1対Nのマスター・スレーブ構成に対応。http://code.google.com/p/redis/参考資料 http://www.atmarkit.co.jp/news/201003/16/redis.html 54
  • 55. inconsequential リリース時期は? 55
  • 56. 過去の自分の資料も、参考になるらしい。 スライドは、 http://www.slideshare.net/tyama 56
  • 57. 見出しだけ日本語Grailsドキュメント公開 公式サイト http://grails.org/doc/latest 日本語 Japanese doc. http://grails.jp/doc/latest
  • 58. Q&A 58
  • 59. 予告Grailsプラグイン攻略 発表日未定 59
  • 60. 告知JGGUG 名古屋支部 主催「もくもくGroovy」 できる限り、毎週木曜日 19:00から 開催。 あなたも、2時間集中してGアスタな、 もくもくをしてみませんか? 60
  • 61. Thank you. 日本Grails/Groovyユーザーグループ http://www.jggug.org/ 61