お金をかけずにクラウドサービスでWebアプリを作って動かしてみたい人に捧げる、Grails+STS+Cloud Foundry環境導入超入門

■0. Cloud Foundry って?

VMWare が作ってオープンソースとして公開しているクラウドサービス。類似のサービスとしては、Heroku、CloudBees、DotCloud、RedHat OpenShift、JElastic、Rackhub等がありますね。Java(SpringやRooなど)、Ruby(RailsSinatra)、Node.js、Groovy(Grails)、Scalaなどを動かすことができて、しかも無料で使えてしまいます。データの格納するDBも、MySQLPostgreSQL、RabbitMQ、Redis、MongoDBが使えるという豪華なラインナップ。冷静に考えてもすごすぎる。
これから紹介する通り、開発に必要なツールも全部無料で揃えられます。

■1. STS導入

Grailsの開発に便利なIDE(統合開発環境)として、SpringSource Tool Suite(スプリングソース・ツール・スイート;以下STS)があります。Eclipseベースなので、Grailsと同様クラスプラットフォームな良い子です。
http://www.springsource.com/developer/sts
「Download STS」をクリック、
「I agree and accept the license terms and export restrictions associated with this product.」をチェック、
「download page」クリック、
でダウンロードページに行けるので、そこから自分のマシンに合ったものをダウンロードします。Mac OSLinuxな人向けのバイナリは「OTHER DOWNLOADS >」クリックすると出てきます。ダウンロードしたファイルを実行すればインストーラが立ち上がるので、言われるがままにインストールしましょう。
Select the installation path: でインストール先を聞かれますが、デフォルト値はイケてないので自分ごのみのpathを指定しましょう。C:\STS とか /Applications/STS とか /home/username/STS とか、自分の環境にあったものを指定してあげればおkです。
Select the packs you want to install: では、Spring Roo は使わないのでチェックを外しても良いです。
Select the JDK path: ではJDKのpathを指定しましょう。C:\Program Files\Java\jdk1.7.0_03 とか /Library/Java/Home とか /usr/java/default とか、環境によって違いますね。

■2. STSの日本語化
Pleiades http://mergedoc.sourceforge.jp/ を使います。
Pleiades 本体ダウンロード」の「最新版」から pleiades.zip を落としてきて解凍します。

features
plugins

というディレクトリが出てくるので、これらをそのままSTSインストール先( C:\STS\sts-2.9.1.RELEASE とかね)の同名ディレクトリに上書きします。あとはreadme_pleiades.txtに書かれているように、 STS.ini に Pleiades の設定を追記すればOKですね! STS.ini を開くと -vmargs という行があるので、その下に以下のように行を追記します。

Windows では STS.ini はインストール先の C:\STS\sts-2.9.1.RELEASE にあります。
 -vmargs
 -javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

● Mac OS では STS.ini は STS.app/Contents/MacOS/STS.ini にあります。
相対パスで指定する場合
 -vmargs
 -javaagent:../../../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
絶対パスで指定する場合
 -vmargs
 -javaagent:/Applications/STS/sts-2.9.1.RELEASE/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

(Mac持ってないので間違ってたら指摘ください)
以下、日本語化されている前提で書いてます。

■3. STSの起動とプロジェクトの作成

初回起動時に、ワークスペースどこにするの?って聞いてきます。好みのディレクトリを指定しましょう。 C:\STS\workspace とか /Develop/workspace とかね。起動したら、「Open Dashboard」から Dashboard を開きましょう。Dashboard の左下に「拡張」というタブがあるので(小さいです)、そこを開きます。

の4つをチェックして、「インストール」しましょう。ダウンロードが走るので、少し待たされます。「警告:署名なしコンテンツを含む〜」とかっていうのが出てきますが、OKして問題無いです。Grails 2.0.3を既にインストールしてある人は、Grails (current production release)をチェックせずに、メニューの

ウィンドウ
→設定
→Groovy
→Grails

の「追加」ボタンからロケーションを指定して追加することもできます。現時点では Grails (current production release) は Grails 2.0.1 なので、最新の Grails 2.0.3 を使いたい人はこちらの方法が良いですね。
「パッケージ・エクスプローラ」上で右クリックして「新規」→「Grails Project」を作りましょう(画面上にパッケージ・エクスプローラがなければ、「ウィンドウ」→「ビューの表示」からどうぞ)。プロジェクト名は前回と同じく「hello-world」とします。Grailsパースペクティブにするか聞かれるので、「はい」をしましょう。
「プロジェクト・エクスプローラ」に「hello-world」が追加されているので、そいつを右クリックして「新規」→「コントローラー」から

名前: SayController

を作ってやります。あとは前回と同様に

 package hello.world

 class SayController {

     def index() { 
         render "Hello World!"
     }
 }

と編集して、メニューの「実行」→「実行」→「Grails Command (run-app)」を実行してやれば、同じようにHello World!できてますね。

■4. Cloud Foundryの登録
https://my.cloudfoundry.com/signup
で、EmailとPromo Codeを入れて「I have read and agree to the Terms of Service」にチェックし、CAPTCHAを入力して、「Request Invite」すればOK。入力したメールアドレス宛にパスワードが送られてきます。
Promo Code は http://plancast.com/p/afel/cloud-foundry-open-tourspringone-road-londonhttps://www.facebook.com/events/269942399752207/ に書いてあるように、「CFOpenTour2012」と入れると待たされないそうです。
「Welcome to Cloud Foundry - Your signup is approved!」というメールは送られてきましたか? https://my.cloudfoundry.com/micro から、送られてきたTemporary Passwordを使ってログインします。初回はライセンスの確認がありますので、「I have read and agree to the EULA」にチェックして「Accept」してあげましょう。
そうすると、 https://my.cloudfoundry.com/micro/dns に移動していると思うので、Cloud Foundryの登録は終わりです。

■5. Cloud Foundryへのデプロイ

STSに戻って、「サーバー」ビューの上で右クリックして「新規」→「サーバー」から「Cloud Foundry」を選択し、

サーバーのホスト名: localhost (初期値のまま)
サーバー名: VMware Cloud Foundry (初期値のまま)
(次へ)
Eメール: 登録に使ったメールアドレス
パスワード: 送られてきたパスワード(もしくは自分で変更したパスワード)

これで、Cloud FoundryのサーバをSTS上で設定できました。

お次はJavaコンパイラの設定です。プロジェクト・エクスプローラの「hello-world」を右クリックして「プロパティ」から「Javaコンパイラー」を選択し、「プロジェクト固有の設定を可能にする」にチェックを入れ、「コンパイラー準拠レベル」を「1.6」にします。
これは、Cloud FoundryはJava6で動作してるので、Java7で作成したバイナリは動かないためです。
(※参考: http://groups.google.com/a/cloudfoundry.org/group/vcap-dev/browse_thread/thread/788518d1c93fab18/04b69f138b209bbc?show_docid=04b69f138b209bbc&pli=1 )

続いて、プロジェクトにcloud-foundryプラグインのインストールをします。プロジェクト・エクスプローラの「hello-world」を右クリックして「Grails Tools」→「Open Grails Command Prompt」から

install-plugin cloud-foundry

としましょう。

最後に、プロジェクトをCloud Foundryにデプロイしましょう。プロジェクト・エクスプローラの「hello-world」をドラッグし、サーバーの「VMWare Cloud Foundry」にドロップします。

名前: hello-world (なんでもいいです)
(次へ)
Deployed URL: hello-world.cloudfoundry.com 
 (URLが他の人とかぶるとダメなので、他に使ってる人がいなさそうなURLを指定すること!)
Memory Reservation: 512M (Default)

「完了」すると、そのままデプロイが始まります。しばらく待って

INFO: Server startup in 6666 ms

みたいな表示がコンソールに出たら、さっきDeployed URLに指定したURLにブラウザからアクセスしてみましょう。GrailsのWelcome画面は表示されましたか?そして「hello.world.SayController」をクリックすると…!
Hello World!」が表示されましたね!
いま、あなたが作ったWebアプリが、Cloud Foundryで動作した瞬間です!