18

Click here to load reader

第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

Embed Size (px)

DESCRIPTION

第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

Citation preview

Page 1: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

はじめてみよう! Grailsプラグイン

初級編

2009/07/22 @Yokohama

def speaker = new Cast(name:”T.Yamamoto”,version:”G*4-2009-07-22”)

Page 2: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

自己紹介名前:山本 剛 (やまもとつよし)

所属:株式会社ニューキャスト組版屋、印刷系Webアプリ開発など。案件は90%Grailsを使ってます。

JGGUG(じぇいがぐ) 名古屋支部 担当です。「Grails徹底入門」9-11章を書きました。 Grails Acegi Plugin作った人。

ブログhttp://d.hatena.ne.jp/mottsnite/

Page 3: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

Grailsって?Grails, the Platform (DGG2引用)

Groovy,Java,Spring,Hibernate等を使ってアジャイルに開発!

GrailsGrailsGrails GroovySpring Hibernate SiteMesh

Groovy

基礎部分はJava(+Groovy)基礎部分はJava(+Groovy)基礎部分はJava(+Groovy)基礎部分はJava(+Groovy)JVMJVMJVMJVM

•ダウンロードして 解凍!

•http://grails.org/Download

•環境変数設定•export GRAILS_HOME=/opt/grails-1.1.1•export PATH=$PATH:$GRAILS_HOME/bin

Page 4: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

Grailsプラグイン概要・基礎Grailsにあらゆる機能を実装する仕組み。簡単インストール grails install-plugin acegi

Grails本体もプラグインで構成されている。例えば、サービス実装、コントローラー実装、ドメイン実装、hibernate実装なども。

Grailsアプリケーションを、そのままプラグイン化可能※一部の機能を除く。

活発な公式プラグインコミュニティーチーム専用のプラグイン管理もできる

Page 5: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

プラグインの作り方

Page 6: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

プラグイン開発・難易度難易度[低] 通常のGrailsアプリケーション開発ができれば簡単に開発できる内容 JavaScriptファイル、CSSファイルなどを提供する 基本アーティファクトなどを提供する

難易度[中] Springフレームワークの知識、サーブレットなどの知識が必要 Springフレームワークを用いた機能拡張 web.xml操作

難易度[高] ダイナミックメソッド追加→GroovyのExpandoの知識が必要 Gantスクリプトを追加→GantおよびAntの知識が必要 独自アーティファクトの追加

Page 7: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

どんな時に作るの?思いたった時こそが!よく使う機能をみつけた時!パッケージされたコピーもと!?ザックリ直せるコピーもと!?管理できるコピーもと!?

完成したサイト全体をプラグイン化完成した機能全体をプラグイン化

Page 8: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

単純なプラグインを作ってみようDEMOGrailsプラグインプロジェクト作成 grails create-plugin jggugercd jggugerプラグインをパッケージgrails package-plugin

Page 9: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

GrailsプラグインプロジェクトGrailsプラグインプロジェクトの内容は通常のGrailsアプリとほぼ同じプラグイン定義用ファイルプラグイン名GrailsPlugin.groovy

インストール時などに動作するスクリプトファイルも付属してる。

Page 10: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

デモ既存Grailsアプリの一部をプラグイン化!ザックリ!とりあえずザックリ!Jggugerプラグインロゴ画像&スタイル(CSS)をプラグイン化MiniWikiEngineプラグインWikiEngineタグリブをプラグイン化

Page 11: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

プラグイン専用の変数pluginContextPathJS,CSS等がプラグインのパスになるため、パスを自動解決するための変数例えば grails-some-0.1の場合 パスは plugins/some-0.1/<g:resource dir="${pluginContextPath}" file="css/myplugin.css"/>          ↓ ↓ ↓ ↓ ↓ ↓ ↓<g:resource dir="plugins/myplugin-1.0/css" file="myplugin.css"/>

おまけ Grailsアプリからプラグイン側のテンプレートを参照<g:render template="header" plugin="yuiCss" />

Page 12: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

プラグイン管理・リポジトリGrails-1.1から管理が容易になった。

プラグイン開発者BuildConfig.groovyで直に参照も可能。チーム専用プラグインリポジトリ。[デモ] grails release-plugin -repository=local

配信専用プラグインリポジトリ。プラグイン利用者

基本は、application.propertiesに記述される。Grailsアプリ起動時に自動解決。

Page 13: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

ちょっとした、web.xml追加doWithWebDescriptor

def doWithWebDescriptor = { webXml -> def servletElement = webXml.'servlet' def lastServlet = servletElement[servletElement.size()-1] lastServlet + { 'servlet' { 'servlet-name'("simpleResource") 'servlet-class'("SimpleResource") 'load-on-startup'("1") } } def mappingElement = webXml.'servlet-mapping' def lastMapping = mappingElement[mappingElement.size()-1] lastMapping + { 'servlet-mapping' { 'servlet-name'("simpleResource") 'url-pattern'("/resources/*") } }}

Page 14: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

ちょっとした、Bean追加doWithSpring

def doWithSpring = { javascriptService(net.xmldo.grails.plugins.rhino.services.RhinoService){bean-> bean.autowire = true }}

Page 15: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

心がけること汎用性依存を気にするdef dependsOn = [:]

優しさドキュメントdef documentation = "サイトURL"

使いやすさなるべく簡単に使えるように簡単なコマンドで動くと便利!

Page 16: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

プラグイン活用予想図Grails公式プラグイン

チーム用プラグインリポジトリ

メインプロジェクト

使用するプラグインの情報を

定義 プラグインA (プロジェクトの一部の機能)

グラフ機能プラグイン (今後も再利用できそうな機能)

ユーザ認証プラグイン (公式のプラグイン+カスタマイズ)

プラグインB (プロジェクトの一部の機能)

チーム用リポジトリ

独自プラグインリポジトリで管理

チームメンバー

チェックアウト

プラグイン自動解決

プラグイン自動解決

プラグイン

メタ情報で自動管理

プラグイン

Page 17: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

サイトGroovy公式http://groovy.codehaus.org/Grails公式http://grails.org/JGGUG公式http://www.jggug.org

Grails.jphttp://grails.jp/wiki/Grails関連のAPIリンク集http://grails.jp/links.html

Page 18: 第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

日本 Grails/Groovy ユーザーグループhttp://www.jggug.org/

Thank you.