WOGroovyフレームワーク

鈴木鉄也 (suzuki@spice-of-life.net) WebObjects基礎研究室

WOGroovyフレームワークについて

WOGroovyフレームワークは、WebObjectsアプリケーションをGroovy言語で開発できるようにするフレームワークです。 Groovyスクリプトは動的にコンパイルされ、手軽にプロトタイプの開発を行うことができます。 現時点では Mac OS X + Xcode の組み合わせでのみ動作します。

このアーカイブには以下のファイルが含まれています。

Groovy
Groovyのjarファイルをフレームワーク化したものです。
WOGroovy
Groovyスクリプトの動的コンパイルを行うフレームワークです。 Project WONDERのERXCompilerProxyクラスをGroovy用に拡張しています。
Templates
Groovy用のファイルをプロジェクトに追加するためのテンプレート集です。
HelloWorld
サンプルアプリケーションです。

テンプレートは次のディレクトリにコピーしてください。 Xcodeを起動している場合はコピーしてもテンプレートに反映されません(Xcodeを再起動すると読み込まれます)。

ファイルコピー先
Groovy Basic Classes.pbfiletemplate /Library/Application Support/Apple/Developer Tools/File Templates/WebObjects/
Groovy Class.pbfiletemplate /Library/Application Support/Apple/Developer Tools/File Templates/WebObjects
Groovy Component.pbfiletemplate /Library/Application Support/Apple/Developer Tools/Target Templates

インストール

Project WONDERが必要です。 事前にインストールしておいてください。

  1. Groovy, WOGroovyプロジェクトをそれぞれビルドします。
  2. 生成されたフレームワーク(Groovy.framework, WOGroovy.framework)を /Library/Frameworks にコピーします。
  3. ~/WebObjects.Properties に次の行を追加します。
    er.extensions.GCompilerProxyEnabled=true

使い方

  1. ビルドフェーズの「フレームワークとライブラリ」の後にシェルスクリプトのフェーズを追加します。 (ERXCompilerProxyと同様の手順です)
    1. アプリケーションのターゲットを選択、編集画面を開きます。
    2. メニューから「プロジェクト」「新規ビルドフェーズ」「新規シェルスクリプト」を選択し、 ビルドフェーズの「フレームワークとライブラリ」の後に移動させます。
    3. 次のシェルスクリプトを入力します。
      sh "${TARGET_BUILD_DIR}/ERExtensions.framework/Resources/InstallCompilerProxySupport.sh"
      
  2. 次のフレームワークを追加します。

ここまででGroovyを使う準備ができました。 Groovyスクリプトは拡張子を.groovyにして、プロジェクトと同じディレクトリに置いてください。 ただし、プロジェクトに追加する必要はありません。 WOGroovyフレームワークはプロジェクトのディレクトリにあるすべてのGroovyスクリプトをコンパイルの対象にします。

コンポーネントやApplicationなどのWebObjectsが使用するクラスもGroovyで書くことができますが、元のファイルはプロジェクトから取り除かないでください。 これらのファイルはコンパイルしたGroovyスクリプトで置き換えられるのですが、消してしまうとアプリケーションが動作しません。 ダミーとしてそのままプロジェクトに残してください。

Groovy用にいくつかテンプレートを用意してあります。 それぞれ新規ファイルから選択してください。

Groovy Basic Classes
Application, Session, DirectAction, MainクラスのGroovyスクリプトです。 ターゲット選択時に入力するファイル名は無視されます。
Groovy Class
新しいクラスのGroovyスクリプトを追加します。
Groovy Component
Groovyスクリプトを含むコンポーネントを追加します。

注意点