2011年6月18日土曜日

Play framework で Scala を 試してみる

Scala Play




Typesafe.comのページを見ていたところ、右下に、

for Play


の、アイコン&リンクがあるのに気づき、クリックしたところ、前述のscala.playframework.orgの Play framework Scala ページにたどり着きました。
なんだか面白そうなので、試してみることにしました。


  1. バイナリダウンロード
    http://www.playframework.org/downloadより、Play frameworkバイナリをダウンロードします。

    Play download


  2. ダウンロードファイル解凍

    $ unzip Downloads/play-1.2.1.zip
    Archive: Downloads/play-1.2.1.zip
    Play! 1.2.1
    (省略)

  3. リンク作成

    $ ln -s play-1.2.1 play-latest


  4. 環境変数PATHに追加
    以下の様なものを.bashrcに追加し、反映させます。

    $ cat ~/.bashrc
    export PLAY_HOME=${HOME}/play-latest
    export PATH=${PATH}:${PLAY_HOME}
    $ . ~/.bashrc


  5. テスト

    $ play -version
    ~ _ _
    ~ _ __ | | __ _ _ _| |
    ~ | '_ \| |/ _' | || |_|
    ~ | __/|_|\____|\__ (_)
    ~ |_| |__/
    ~
    ~ play! 1.2.1, http://www.playframework.org
    ~
    ~ Usage: play cmd [app_path] [--options]
    ~
    ~ with, new Create a new application
    ~ run Run the application in the current shell
    ~ help Show play help
    ~
    ~ Invalid command: -version
    ~

    問題無し。

  6. play scalaインストール

    $ play install scala
    ~ _ _
    ~ _ __ | | __ _ _ _| |
    ~ | '_ \| |/ _' | || |_|
    ~ | __/|_|\____|\__ (_)
    ~ |_| |__/
    ~
    ~ play! 1.2.1, http://www.playframework.org
    ~
    ~ Will install scala-0.9
    ~ This module is compatible with: 1.2
    ~ Do you want to install this version (y/n)? y
    ~ Installing module scala-0.9...
    ~
    ~ Fetching http://www.playframework.org/modules/scala-0.9.zip
    ~ [--------------------------100%-------------------------] 28983.6 KiB/s
    ~ Unzipping...
    ~
    ~ Module scala-0.9 is installed!
    ~ You can now use it by adding it to the dependencies.yml file:
    ~
    ~ require:
    ~ play -> scala 0.9
    ~


  7. サンプルアプリ作成

    $ play new myScalaWebapp --with scala
    ~ _ _
    ~ _ __ | | __ _ _ _| |
    ~ | '_ \| |/ _' | || |_|
    ~ | __/|_|\____|\__ (_)
    ~ |_| |__/
    ~
    ~ play! 1.2.1, http://www.playframework.org
    ~
    ~ The new application will be created in /Users/igawa/src/myScalaWebapp
    ~ What is the application name? [myScalaWebapp]
    ~
    ~ Resolving dependencies using /Users/igawa/src/myScalaWebapp/conf/dependencies.yml,
    ~
    ~ play->scala 0.9 (from playLocalModules)
    ~
    ~ Some dependencies have been evicted,
    ~
    ~ play 1.2 is overriden by play 1.2.1
    ~
    ~ Installing resolved dependencies,
    ~
    ~ modules/scala-0.9 -> /Users/igawa/play-1.2.1/modules/scala-0.9
    ~
    ~ Done!
    ~
    ~ OK, the application is created.
    ~ Start it with : play run myScalaWebapp
    ~ Have fun!
    ~
    $ find myScalaWebapp -type f
    myScalaWebapp/app/controllers.scala
    myScalaWebapp/app/views/Application/index.html
    myScalaWebapp/app/views/errors/404.html
    myScalaWebapp/app/views/errors/500.html
    myScalaWebapp/app/views/main.html
    myScalaWebapp/conf/application.conf
    myScalaWebapp/conf/dependencies.yml
    myScalaWebapp/conf/messages
    myScalaWebapp/conf/routes
    myScalaWebapp/modules/scala-0.9
    myScalaWebapp/public/images/favicon.png
    myScalaWebapp/public/javascripts/jquery-1.5.2.min.js
    myScalaWebapp/public/stylesheets/main.css
    myScalaWebapp/test/Application.test.html
    myScalaWebapp/test/data.yml
    myScalaWebapp/test/Tests.scala


  8. 実行

    $ cd myScalaWebapp/
    $ play run
    ~ _ _
    ~ _ __ | | __ _ _ _| |
    ~ | '_ \| |/ _' | || |_|
    ~ | __/|_|\____|\__ (_)
    ~ |_| |__/
    ~
    ~ play! 1.2.1, http://www.playframework.org
    ~
    ~ Ctrl+C to stop
    ~
    Listening for transport dt_socket at address: 8000
    04:57:23,101 INFO ~ Starting /Users/igawa/src/myScalaWebapp
    04:57:23,107 INFO ~ Module scala is available (/Users/igawa/play-1.2.1/modules/scala-0.9)
    04:57:25,615 WARN ~ You're running Play! in DEV mode
    04:57:25,720 INFO ~ Listening for HTTP on port 9000 (Waiting a first request to start) ...
    04:57:40,996 INFO ~ Application 'myScalaWebapp' is now started !

    アプリケーションの起動までに結構時間がかかるので注意。
    ブラウザでhttp://localhost:9000/にアクセスし、以下の画面が表示されれば成功。

    Play Scala sample application



  9. 若干モディファイ
    自動的に変更が反映されるのか?を
    http://localhost:9000/@documentation/modules/scala/hello-world
    のチュートリアルを参考に確認してみます。

    Scala Play sample application



    動いた。
    チュートリアルにはまだまだ続きがありますが、続きはまた気が向いたらやります :-)

2011年6月15日水曜日

Scalaスケーラブルプログラミング(コップ本)購入

Scalaスケーラブルプログラミング

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)(コップ本)を購入しました。

まだ、1章を読み終え、2章に入ったばかりですが、
原題にある「Step-by-step Guide」というものの通り、
非常にいい感じでわかりやすいと思います。

実は、このコップ本の前に、
Scalaプログラミング入門
を、図書館で借りて読んでいたのですが、何となく「わかりづらいなー」と、
感じていました。
もしかしたら、もうちょっとコップ本で学習してから、
もう一度読むと良いのかもしれません。

2011年6月11日土曜日

Mac で Scala と Lift を使ってみる(2) Cloud Foundry編

「Mac で Scala と Lift を使ってみる」の2回目

今度は、作成したアプリをCloud Foundryへpushしてみます。
つい最近、Cloud FoundryScala-Liftに対応したので可能になりました。

今度は、「ゆろよろ日記」さんのサイト:
http://d.hatena.ne.jp/yuroyoro/20080808/1218168453
記述を参考にしました。


  1. アプリを作成

    $ mvn archetype:create -U -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype-basic -DarchetypeVersion=0.9 -DremoteRepositories=http://scala-tools.org/repo-releases -DgroupId=org.orzlabs -DartifactId=hello-lift


  2. パッケージ作成

    $ cd hello-lift/
    $ mvn package
    $ ls -l target

    warファイルが作成されていることを確認します。

  3. Cloud Foundryへpush
    以下手順からは、事前に、Cloud Foundryにて、sign upを済ませておく必要があります。

    $ gem install vmc (vmcをインストールしてない場合)
    $ vmc target api.cloudfoundry.com
    $ vmc login
    $ vmc push --path target/
    (以下の内容を聞かれるので、適当に入力)
    Application Name: xxxxx (アプリケーション名。好きな様につけて良い。)
    Application Deployed URL: 'xxxxx.cloudfoundry.com'? (デフォルトで良ければ単にEnter。アクセスするURLを指定する)
    Detected a Java Web Application, is this correct? [Yn]: (Enter)
    Memory Reservation [Default:512M] (64M, 128M, 256M, 512M or 1G) (デフォルトで良ければ単にEnter)
    Creating Application: OK
    Would you like to bind any services to 'nano'? [yN]: (DBを使用したければy。今回はとりあえず不要なのでN)
    Uploading Application:
    Checking for available resources: OK
    Processing resources: OK
    Packing application: OK
    Uploading (7M): OK
    Push Status: OK
    Staging Application: OK
    Starting Application: OK


  4. Webブラウザでアクセス

    Scala-Lift app push to CloudFoundry


    これだけ!。超絶簡単にScala-Liftアプリを公開できる!




TODO:

  • Cloud Foundryでの(DB)サービスの利用

  • Scala学習

  • Lift学習

  • もっとまともなアプリ作成

2011年6月10日金曜日

Mac で Scala と Lift を使ってみる(1) インストール編

Scala と Lift が気になってきたので、インストール。
くろだろぐさん: http://kuroda.exblog.jp/12093277/ の記述を参考に、
最新版っぽいscala29をインストールした。


sudo port selfupdate
sudo port upgrade outdated
sudo port install scala28 scala29 maven2
sudo port select --set maven maven2
sudo scala_select scala29
scala -version
sudo port install sbt
mvn archetype:generate -U \
-DarchetypeGroupId=net.liftweb \
-DarchetypeArtifactId=lift-archetype-basic_2.8.1 \
-DarchetypeVersion=2.3 \
-DarchetypeRepository=http://scala-tools.org/repo-snapshots \
-DremoteRepositories=http://scala-tools.org/repo-snapshots \
-DgroupId=your.com \
-DartifactId=sample \
-Dversion=1.0
cd sample
sbt update
sbt ~jetty-run


で、できた。

mac de Scala/Lift sample