• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Grailsのススメ(仮)
 

Grailsのススメ(仮)

on

  • 2,094 views

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

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

Statistics

Views

Total Views
2,094
Views on SlideShare
2,094
Embed Views
0

Actions

Likes
3
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Grailsのススメ(仮) Grailsのススメ(仮) Presentation Transcript

    • 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での開発を 柔軟に手助けする言語。 Groovy is Java Java is Groovy 8
    • 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
    • しくみ。 領域のルールを定義する。実装する。 => Artefact。 DSL。 DSL 規約 ドメイン固有言語。 Groovy プログラム 機能的に使うPlugins - 再利用&組換え可能にモジュール化。 DSL実装 Artefact ドメイン固有言語の動作実装。 ルールを動作させる仕組み。 17
    • Plugins - 再利用&組換え可能にモジュール化。 DSL実装 Artefact ドメイン固有言語の動作実装。 ルールを動作させる仕組み。その領域のフレームワークを開発する。 他のフレームワーク DSLの実装をフレームワーク化する。 他のフレームワークをDSLで、 動作できるように実装する。 モジュール化する。フレームワーク内でフレームワークを柔軟に使ったり。 フレームワークからフレームワークが派生したり。 18
    • Grailsはフレームワークの上に フレームワークを造らず、フレームワークの下に フレームワークを造らず。フレームワークでありながら、他のフレームワークと共存し、 さらにフレームワークを開発して派生できる。 ※強引!?・・・・。 19
    • Grails聖書から、 大事な言葉。 柔軟さを犠牲にせず シンプルさをアーカイブ 20
    • Grailsの概略図基本部分はJavaで実装されている。 中身は、おおよそ、Java(50%)-Grooy(50%)で実装DIコンテナにSpringO/RマッパーにHibernate Grails Groovy Spring Hibernate SiteMesh DSL 基礎部分はJava & Groovy JVM 21
    • GrailsはSpring! Grailsは、形を変えたSpring-MVC Spring + Hibernateを抽象化したものである プラグインの仕組みで Springフレームワークの定義を自動化 Spring Beanビルダー22 参考資料: “Grails for Spring Developers” by Graeme Rocher
    • 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 サービスレイヤのトランザクション トランザクション
    • Grailsクイックスタート! 24
    • Quick Start !! ダウンロードして 解凍! http://grails.org/Download 環境変数設定 export GRAILS_HOME=/opt/grails-1.3.1 export PATH=$PATH:$GRAILS_HOME/bin 25
    • 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
    • どうして動いた?コマンドターゲットプロジェクト作成、各種コード生成、アプリケーション起動等をコマンドターゲットで行う。 % grails run-app % grails test-appメモリ上で動くデータベースHSQLDBがバンドルされている。 ファイル動作も可能。 もちろん運用時はHibernate対応のDBが利用可能サーブレットコンテナ組込Tomcatがバンドルされている。リロードできる。但し一部不安定 (ryスカッフォルドベースになるコードを生成 (動的 or 静的)簡単なCRUDのみで良いマスタはこれでも充分。 27
    • Grailsの機能 GORM (Grails O/R Mapping) 簡単なタグライブラリ URLマッピングDSL REST対応 コンテントネゴシエーション Webフロー Filter AJAX Ivyベースの依存性管理 テスト環境 クラウドへのデプロイ 28
    • Grails プラグイン29
    • 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
    • GrailsプラグインGrailsコアもプラグイン!簡単インストール grails install-plugin acegi活発なプラグインコミュニティ 430種類以上!簡単開発 Grailsでの開発経験があればできます。 grails create-plugin myplugin grails package-plugin 31
    • Grailsプラグインチーム開発 - 公式プラグインのみではない! 自分のプラグインリポジトリ SVN Mavenモジュラ開発 インラインプラグイン 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.x Groovy1.7系に更新! JUnit4対応 Mavenリポジトリ対応 maven-publisher プラグイン依存性宣言 プラグインモジュラ開発の向上 Grails docのPDF書きだし(英語のみ) GORM派生プロパティ対応 GORMでのダーティーチェック ネームドクエリに、追加クライテリア、ネスト、チェイン クエリーキャッシュの向上 GSP joinタグ、unlessタグ グローバルアプリケーションレイアウト フィルタオーダリング TagLibテスト向上 37
    • 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
    • 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
    • Grails1.3.3 バグフィックス Database Mappingに、insertable、 updateable class Book { String title static belongsTo = [author: Author] … static mapping = { author insertable: false author updateable: false } }40
    • Grails1.3.4 予想。 Groovy 1.7.4 に更新? バグフィックス Maven Publisher プラグイン更新 未対応の内容は1.3.5へ引き継がれます。 41
    • 最近リリースされた 個人的注目の プラグイン 42
    • プラグインカタログ 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
    • プラグインカタログ-認証プラグインの八岐大蛇?- 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
    • プラグインカタログ 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
    • プラグインカタログ Geolocation http://grails.org/plugin/geolocation ブラウザの位置情報通知機能(Geolocation API)を扱 うプラグイン ダイナミックコントローラ http://grails.org/plugin/dynamic-controller コントローラを別管理して、定義により複数のコン トローラをミックスして使えるようにする。 46
    • その他。 47
    • 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
    • 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
    • inconsequential 50
    • inconsequential GrailsでのNoSQL実装。 iNconSeQuentiaL 意味 = 筋の通らない。論理的でない。 inconsequentialなデータベースに対応するという意 味であろうと、勝手に解釈。 現状、詳細な説明が無いのでソースコード を読むしかない。 51
    • inconsequential ソースコードによると。 コアがあり。 各NoSQLの実装。 appengine、cassandra、redis、JCR Grails アダプター GrailsApplicationMappingContext org.springframework.datastore.mapping.MappingContext AdaptedDomainClass、AdaptedDomainClassProperty そして、runtime-dynamic。 ソースコードを読むと、PersistentEntityにメソッドを追 加してダイナミック動作させている。 52
    • inconsequential Graeme氏がつぶやいた参考になるコード。 53
    • 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
    • inconsequential リリース時期は? 55
    • 過去の自分の資料も、参考になるらしい。 スライドは、 http://www.slideshare.net/tyama 56
    • 見出しだけ日本語Grailsドキュメント公開 公式サイト http://grails.org/doc/latest 日本語 Japanese doc. http://grails.jp/doc/latest
    • Q&A 58
    • 予告Grailsプラグイン攻略 発表日未定 59
    • 告知JGGUG 名古屋支部 主催「もくもくGroovy」 できる限り、毎週木曜日 19:00から 開催。 あなたも、2時間集中してGアスタな、 もくもくをしてみませんか? 60
    • Thank you. 日本Grails/Groovyユーザーグループ http://www.jggug.org/ 61