Grailsのススメ(仮)
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Grailsのススメ(仮)

  • 2,222 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
2,222
On Slideshare
2,222
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