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