第3回grails/groovy勉強会名古屋「grails名古屋座談会」

36
Grails名古屋座談会 ディスカッション、コーディング、エトセトラ

Upload: tsuyoshi-yamamoto

Post on 15-Jan-2015

1.056 views

Category:

Documents


2 download

DESCRIPTION

第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」ディスカッション、コーディング、エトセトラ

TRANSCRIPT

Page 1: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Grails名古屋座談会ディスカッション、コーディング、エトセトラ

Page 2: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

自己紹介

ヤマモト@NCtwitter: tyamahatena: mottsnite

Page 3: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

基本的には

夏イベのコードをもとに、いろいろ試す?

Page 4: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

だが。

Page 5: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Grailsってご存じ?

JavaEEで実績のあるSpringフレームワークやHibernateをベースに、Groovyを活用して効率よくJavaEE開発を行うことのできる、フルスタックフレームワークです。

Page 6: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Groovy?

Groovy is Java!

Page 7: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Grails/Groovyで質問。

質問がない方!挙手!

Page 8: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

あらら

あらら

Page 9: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

課題GrailsなRESTとか試す?GrailsのFilterって何よ?1.1.1移行でプラグインリロードはできないのか?withFormatって使う? as JSONは?URLマッピング使ってる?ビールのみたい。layoutsの活用。テンプレートGSPCodecってなによ!

Page 10: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

課題みんなでプラグインを試してみたい。Grails-1.2の新機能をさわってみる。クラウドの話を雑談したい。NCの過去の傷跡(功績?)をみたい。Adobe Air/FLEX 連携(yossy)?上原さんのGroovyの話をもっと聞きたい。ベストなプロジェクト管理方法は?もう一度Grailsのクイックスタート。ドキュメントを上から順番に見ていく!?

Page 11: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

あらら

あらら

Page 12: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

やっぱり、まだまだ Quick Start

GrailsでWebアプリ作ってみよう

Page 13: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

準備どのようなWebアプリケーション開発を作るか?

今回のテーマ「イベント告知アプリ!?」を作ってみる

Page 14: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

プラン「イベント告知アプリ!?」イベントの登録・配信がおこなえる

準備使いたい機能を持ったプラグインの現時点での候補Calendaryui-css •Tips

•必要機能に適したプラグインの有無を確認。•プラグインを活用!•無駄を無くす。•プラグインからアイデアをもらう。

Page 15: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Page 16: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

設計必要項目ドメインクラスイベントを収納するテーブル

コントローラリスト表示 (list)作成・編集 (entry)editsave

詳細表示 (show)他ロゴレイアウト

Page 17: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

プロジェクトを作成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"

Page 18: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

試し起動$ grails run-app

Page 19: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

ドメインクラスモデル → 詳細(ドメインモデル) → ドメイン設計1. 必要な項目

イベントタイトル - eventName開催日 - eventDate開催時間など - eventDesc場所 - place主催団体名 - groupName内容 - content

2. 実際にドメインクラスを作る

3. コントローラを作成

$ grails create-controller org.jggug.Event

$ grails create-domain-class org.jggug.Event

Page 20: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

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}

Page 21: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

起動してみましょう!$ grails run-app

Page 22: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

調整!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 }

Page 23: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

調整! 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 = 開催時間など

Page 24: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
Page 25: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

ドメインが完成

Page 26: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

STEP.4 コントローラとビューgenerate-all して各ソースファイルを編集します。

起動します。

$ grails generate-all org.jggug.Event

$ grails run-app

Page 27: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

調整ポイント!カレンダープラグインで日付フォームをかっこよくリスト調整必要な部分だけ残して見た目調整。

詳細表示デザイン調整!

レイアウト調整

Page 28: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

カレンダープラグイン開催日のフォーム調整

★<head>タグの中に<calendar:resources lang="en" theme="tiger"/>

★対象の場所に<calendar:datePicker name="eventDate" defaultValue="${eventInstance?.eventDate}" dateFormat="%Y/%m/%d" />

★カレンダープラグインをインストール$ grails install-plugin calendar

Page 29: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

リスト調整

こんな感じに。タイトルはリンクに

Page 30: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

詳細表示調整

Page 31: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

レイアウト調整横にメニューのあるレイアウトに調整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" />

Page 32: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

メニュー調整・・・・・

Page 33: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

STEP.5 完成いろいろやり残しは有りますが・・

デプロイするとTomcat等のアプリケーションサーバーで運用可能です。$ grails wareventer-0.1.war が生成されます。

Page 34: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Grails-1.2M2

Page 35: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Grails-1.2M2Spring3に更新@Transactionalでのメソッド単位のトランザクションの実装ダイナミックファインダでのBoolean値の機能を追加GORMにhasOneマッピングをサポート名前付き問合せ定義が可能GORM 厳密なバリデーションエラーWARデプロイでのGSPプリコンパイルマルチ組込コンテナサポート、デフォルトはTomcatに!i18nでのクラス名プロパティ名をハンドル名称付きURLマッピングプロジェクトドキュメントエンジンプラグインメタジェネレータ

Page 36: 第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」

Thank you

2009/9/25 JGGUG名古屋支部