趣旨

PLAY! FRAMEWORKについて調べたことをメモしておく

playframeworkのいいところは、Javaでの開発なのにビルド時間がStrutsとかにくらべて、圧倒的に短い。

開発モードのdevモードとコンパイル済みのprodモードがある、速度的には2倍ぐらいの違いがあるが、おすすめはdevモードである。とにかく、ビルド時間が無いと思えるぐらい早い、PHPとかRubyとかつかっているんじゃないかとおもうぐらいだ。

大規模な開発になると、このビルドにかかる時間は無視できなくなる

それに、導入がとても簡単である。xmlで定義を書かなくても全然オッケーな感じだ。

一般の単語であるPLAYをつかっているため、検索に引っかかりにくいようだ。

目次

Play!の概要

Play framework は、Railsのような生産性の高い、JavaでもつかえるしScalaでもつかえるフレームワークといったところ。

リンク

日本語の分かりやすいサイト

http://playdocja.appspot.com/documentation/1.2.4/home

本家は、version2.0.1が出ているが、まずはこれを読もう。とても丁寧にかいてあるからだ。

チートシート(よくつかうコマンド一覧)

http://playdocja.appspot.com/documentation/1.2.4/cheatsheet/model

英語

http://playcheatsheet.appspot.com/show/ArtemMedeu/armed/play-cheatsheets

2.0のドキュメント(英語)

http://www.playframework.org/documentation/2.0.1/Home

ダウンロード

ダウンロードは下記のアドレスからダウンロードできる。90MBある。ちょっとしたボリュームだ。

http://download.playframework.org/releases/

playのインストールをしてみる実況

windowsで1.2.5をインストールしてみる

すでにpythonがインストールされている場合 下記の環境変数を設定する必要があるようです。

そうしないと下記のエラーが出る

'import site' failed; use -v for traceback

SET PYTHONPATH=C:\play-1.2.5\python
SET PYTHONHOME=C:\play-1.2.5\python

2.0.1の場合

cd c:\play-2.0.1
play new helloworld

なにやらたりないライブラリをとってきているようだ。

What is the application name?

と聞いてくる。

すでにhelloworldがはいっている

したがってそのままEnterキー

2 を選ぶ、あとでScalaでも同様のことをまなんでみよう。

動作確認

play run helloworld

this is not play application

とでる。

cd helloworld
..\play run

とやるとうごく。playのパスを環境変数に登録しておいたほうがよさそうだ。

SET PATH=%PATH%;c:\play-2.0.1
localhost:9000

にアクセスする。

裏でコンパイルが走っている模様

もう、ページが出てきた。マニュアルページだ。

コンソールに戻りたくなったので、CTRL+Dで戻る

こんどは

../play

コンソールがでてきた。

run

ってやってみた

うごいた

再びCTRL+D

プロジェクトをエクリプスのプロジェクトにする

エクリプスで開発

こんどは、

eclipsify

おおっエクリプスのプロジェクトできた

エクリプスたちあげて、

[ファイル]-[インポート]-[既存のプロジェクト]

jarファイルがたくさんみえるので、

[ウィンドウ]-[ビューの表示]-[ナビゲータ]

でみるとすっきりとした感じにみえる

チェックボックスの書き方

http://stackoverflow.com/questions/8204708/how-do-i-bind-a-checkbox-to-a-boolean-in-play-framework

Play Framework で OpenID に接続して、認証後のユーザ情報をセッションに格納するサンプルコード

https://gist.github.com/1523390

複数行の取り扱いについて

http://stackoverflow.com/questions/7417321/how-to-submit-a-list-of-objects-in-play-framework

モジュール

http://www.playframework.org/modules

scaffoldとか、javascript最小化モジュールとかいろいろある

ページ処理モジュール?

http://www.playframework.org/modules/paginate-head/home

play frameworkのバッチあてた版のダウンロード先

https://github.com/mbknor/play/tree/1.2.4-mbknor-custom-release

テスト

http://www.playframework.org/documentation/1.2.1/test

scaffold

http://yono05.wordpress.com/2011/11/03/play-scaffold%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/

フォームからのデータの受け取り方法

配列

INPUT TYPE="hidden" name="formList[0]" id="formList0" value="bar" />

Java側は変数名を上記のname属性と同一名とし、List型で受け取るようにする。

List formList

高速なテンプレートエンジン

http://www.playframework.org/modules/fastergt

http://kjetland.com/blog/2011/11/playframework-new-faster-groovy-template-engine/

http://yosuke-furukawa.hatenablog.com/entry/20111219/1324306476

https://groups.google.com/forum/?fromgroups#!topic/play-framework/fz_iakmj_uc

レンダリング結果の取得

これをつかえば、レンダリングの仕組みを、コード生成など、いろいろ別用途につかえますね。

情報源

http://garbagetown.github.com/blog/2012/07/10/08-57/

コード

private static String getHtml(String version, String id) {
   String html = null;
   if (Play.mode == Play.Mode.PROD && !isTextile(version)) {
     (snip)
   } else {
     (snip)
       Template template = TemplateLoader.load("Documentation/page.html");
       Map<String, Object> args = new HashMap<String, Object>();
       args.put("request", request);
       args.put("versions", versions);
       args.put("version", version);
       args.put("id", id);
       args.put("article", article);
       args.put("navigation", navigation);
       html = template.render(args);
   }
   return html;
}

Playframeworkでダウンロード後にファイル削除

http://swandouble.blogspot.jp/2012/04/playframework.html

勉強会

#play_ja で検索をするとtwitterで勉強会とかの情報をゲットできるかも

GAEにデプロイ

http://www43.atwiki.jp/ktlavans/pages/132.html

go言語を使ったplayframework

http://robfig.github.io/revel/

go 言語のその他のweb frameworkについてのリンク

http://stackoverflow.com/questions/12591445/what-web-framework-to-use-while-developing-in-go-language

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS