第3回grails/groovy勉強会名古屋「grails名古屋座談会」
DESCRIPTION
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」ディスカッション、コーディング、エトセトラTRANSCRIPT
Grails名古屋座談会ディスカッション、コーディング、エトセトラ
自己紹介
ヤマモト@NCtwitter: tyamahatena: mottsnite
基本的には
夏イベのコードをもとに、いろいろ試す?
だが。
Grailsってご存じ?
JavaEEで実績のあるSpringフレームワークやHibernateをベースに、Groovyを活用して効率よくJavaEE開発を行うことのできる、フルスタックフレームワークです。
Groovy?
Groovy is Java!
Grails/Groovyで質問。
質問がない方!挙手!
あらら
あらら
課題GrailsなRESTとか試す?GrailsのFilterって何よ?1.1.1移行でプラグインリロードはできないのか?withFormatって使う? as JSONは?URLマッピング使ってる?ビールのみたい。layoutsの活用。テンプレートGSPCodecってなによ!
課題みんなでプラグインを試してみたい。Grails-1.2の新機能をさわってみる。クラウドの話を雑談したい。NCの過去の傷跡(功績?)をみたい。Adobe Air/FLEX 連携(yossy)?上原さんのGroovyの話をもっと聞きたい。ベストなプロジェクト管理方法は?もう一度Grailsのクイックスタート。ドキュメントを上から順番に見ていく!?
あらら
あらら
やっぱり、まだまだ Quick Start
GrailsでWebアプリ作ってみよう
準備どのようなWebアプリケーション開発を作るか?
今回のテーマ「イベント告知アプリ!?」を作ってみる
プラン「イベント告知アプリ!?」イベントの登録・配信がおこなえる
準備使いたい機能を持ったプラグインの現時点での候補Calendaryui-css •Tips
•必要機能に適したプラグインの有無を確認。•プラグインを活用!•無駄を無くす。•プラグインからアイデアをもらう。
図
設計必要項目ドメインクラスイベントを収納するテーブル
コントローラリスト表示 (list)作成・編集 (entry)editsave
詳細表示 (show)他ロゴレイアウト
プロジェクトを作成Grailsプロジェクトを作成
BuildConfig.groovy (オススメ)
作業ディレクトリやビルド時の環境指定が可能。grails-app/conf/BuildConfig.groovyファイルを作成
DBの設定 grails-app/conf/DataSource.groovyファイルを編集
$ grails create-app eventer$ cd eventer
grails.project.plugins.dir="work_tmp/plugins"grails.project.work.dir="work_tmp/work"
development { dataSource { dbCreate = "update" url = "jdbc:hsqldb:file:work_tmp/devDB;shutdown=true"
試し起動$ grails run-app
ドメインクラスモデル → 詳細(ドメインモデル) → ドメイン設計1. 必要な項目
イベントタイトル - eventName開催日 - eventDate開催時間など - eventDesc場所 - place主催団体名 - groupName内容 - content
2. 実際にドメインクラスを作る
3. コントローラを作成
$ grails create-controller org.jggug.Event
$ grails create-domain-class org.jggug.Event
Event.groovypackage org.jggug
class Event {
/** イベントタイトル */ String eventName /** 開催日 */ Date eventDate /** 開催時間など */ String eventDesc /** 場所 */ String place /** 主催団体名 */ String groupName /** 内容 */ String content Date dateCreated Date lastUpdated
static constraints = { }}
EventController.groovypackage org.jggug
class EventController { def scaffold = true}
起動してみましょう!$ grails run-app
調整!idをuuid.hexにする。
バリデーション全て null不許可、空白不許可contentに4000文字制限
Event.groovyclass Event implements Serializable {
static mapping = { id generator:'uuid.hex', params:[type:'string'] } String id...
static constraints = { eventName nullable:false,blank:false eventDate nullable:false,blank:false eventDesc nullable:false,blank:false place nullable:false,blank:false groupName nullable:false,blank:false content nullable:false, blank:false,maxSize:4000 dateCreated display:false lastUpdated display:false }
調整! i18n (1.2M2の新機能)i18n (1.2M2の新機能)messages_ja.propertiesにフィールド名称を定義
コマンドとか有れば良いのに....無いのでテキストエディタで置換!
/** イベントタイトル */String eventName
/** 開催日 */Date eventDate
/** 開催時間など */String eventDesc
event.label = イベントevent.eventName.label = イベントタイトル
適当だけど/\*\*(.*)\*/\n(.*) (.*)
event.$3.label = $1
event.eventName.label = イベントタイトル event.eventDate.label = 開催日 event.eventDesc.label = 開催時間など
ドメインが完成
STEP.4 コントローラとビューgenerate-all して各ソースファイルを編集します。
起動します。
$ grails generate-all org.jggug.Event
$ grails run-app
調整ポイント!カレンダープラグインで日付フォームをかっこよくリスト調整必要な部分だけ残して見た目調整。
詳細表示デザイン調整!
レイアウト調整
カレンダープラグイン開催日のフォーム調整
★<head>タグの中に<calendar:resources lang="en" theme="tiger"/>
★対象の場所に<calendar:datePicker name="eventDate" defaultValue="${eventInstance?.eventDate}" dateFormat="%Y/%m/%d" />
★カレンダープラグインをインストール$ grails install-plugin calendar
リスト調整
こんな感じに。タイトルはリンクに
詳細表示調整
レイアウト調整横にメニューのあるレイアウトに調整yui-cssを使う!
http://grails.jp/sample/grails-yui-css-2.7.0-M2.zip
コマンドを実行
★yui-cssのプラグイン(非公式)をインストールgrails install-plugin http://grails.jp/sample/grails-yui-css-2.7.0-M2.zipgrails yui-css
<head>内の以下の部分 content=”main”を “yui-t1”に変更<meta name="layout" content="main" />
<meta name="layout" content="yui-t1" />
メニュー調整・・・・・
STEP.5 完成いろいろやり残しは有りますが・・
デプロイするとTomcat等のアプリケーションサーバーで運用可能です。$ grails wareventer-0.1.war が生成されます。
Grails-1.2M2
Grails-1.2M2Spring3に更新@Transactionalでのメソッド単位のトランザクションの実装ダイナミックファインダでのBoolean値の機能を追加GORMにhasOneマッピングをサポート名前付き問合せ定義が可能GORM 厳密なバリデーションエラーWARデプロイでのGSPプリコンパイルマルチ組込コンテナサポート、デフォルトはTomcatに!i18nでのクラス名プロパティ名をハンドル名称付きURLマッピングプロジェクトドキュメントエンジンプラグインメタジェネレータ
Thank you
2009/9/25 JGGUG名古屋支部