2013年1月8日火曜日

bootstrapをAndroid2.3系で使えるようにするためにはApacheが必要になる | Play Framework2.0 ここんがんばれ!

bootstrap、よく使いますよね。

Play Frameworkではassertかassetsか何かを使ってNettyサーバ経由で画像やJavascriptを返すようになっています。(おそらくそういうことなんだろうと思ってます)

さて、通常のブラウザを使うぶんには何ら問題ないのですが、以下の組み合わせでモーダルダイアログが表示されないなどの現象が発生しました。

Play Framework 2.0.4
bootstrap
Android2.3

なかなかニッチな環境かもしれませんが、Android2.3系はまだバリバリ現役なので、注意が必要です。
http://www.playframework-ja.org/documentation/2.0.2/Assets

Play 2.0 には、公開アセットを提供する組み込みのコントローラが付属しています。デフォルトでは、このコントローラは、キャッシュ機能、ETag、gzip圧縮、JavaScript minify のサポートが提供されます。
とあるので、ここらへんが影響してる可能性がありそうですね。

Apache経由で静的ファイルを返すようにすることで回避できましたが、Play Frameworkはそれ単体だけでは完結できないのに、Tomcat用にwarファイルを作るのもできない(Play Framework1系では対応していたようですが、2系からはプラグインでの対応!?になったようです)のでちょっと残念です。

Modelが自動生成されない | Play Framework2.0 ここんがんばれ!

PHPのフレームワークである、SymfonyやGAEのフレームワークであるSlim3を触ってきた経験から、Play FrameworkにはモデルやServiceの自動生成がないのが非常に残念に感じます。

Symfonyはかなり律儀なやつで、ymlからモデルの自動生成をやってくれていました。(Play Frameworkも1系の頃にはそんなのもあったようだと聞きました。)
ymlにルールを記述して自動生成すると、ymlの定義に従ったBaseとなるModelが生成されます。そしてそれをオーバーライドする形でもう一つModelが生成され、通常はこちらにアクセスをするようになっていました。
また、Modelとは別に、Listの取得などを行うPeerと呼ばれるファイルも自動生成されいました。(Slim3で言うところのSeviceに当たりますね。)

今までの経験からPlay Frameworkの場合は以下が自動生成されてくれるようになるとより使い勝手が良く、複数人で開発をする場合も統一性が取れるのではないかと考えています。


  • DBの構造と完全に1対1で対応している基底となるModelクラス(自動生成のため、手作業による変更は行わない)
  • 基底クラスをオーバーライドするModelのクラス(例えば住所をつなげたものを返すなどのメソッドの追加などはこちらで行う。)
  • 基底クラスをオーバーライドするJson用のModelのクラス
  • save,deleteなどのモデルに対する操作を行うクラス
  • list等のモデルのデータ取得を行うクラス

Play Framework2.0 でSQLを出力する方法

Play FrameworkのJava版ではORMにEbeanが使えるのですが、どんなSQLが発行されているか、確認をしたいケースがあります。

そんな時には、application.confに以下のように追記することで、コンソールおよびログファイルに実際に発行されているSQLが出力されるようになります。


db.default.logStatements=true
logger.com.jolbox=DEBUG

Stackoverflowに載ってました。
http://stackoverflow.com/questions/9719601/play-framework-2-0-and-ebean-sql-logging

2012年9月28日金曜日

package名がダサい | Play Framework2.0 ここんがんばれ!(その1)

最近Javaのフレームワーク「Play Framework2.0」を使っております。
http://www.playframework.org/


http://www.playframework.org/

しばらく使ってみて色々と思うところがあったので、今回から書いて行きたいと思います。
Playは最近Version2.0がでたようです。というか、1の時代は知りません。
その特徴とは・・・いまいちよくわからないので調べてみました。
http://gihyo.jp/dev/serial/01/engineer_toolbox/0030
Playは,Ruby on Railsのように簡単なコマンドだけでMVCスタイルのWebアプリケーションの雛形を構築し,開発をスタートさせることができるフレームワークです。
そうだったのか。コマンドベースでモデルとかを作ったこと無いぞ・・・。
ちなみにPlayは Ruby On Railsの設計思想を受け継いでいるようです。

さて、そんなPlay2.0の特徴はと言えば・・・



  • JavaおよびScalaのネイティブサポート
  • 強力なビルドシステムの構築
  • 型安全性へのフォーカス
  • 非同期プログラミングのより強力なサポート
  • データストアとモデルのよりシームレスな統合
とのことです。

  • Java EEを使用しない軽量フレームワーク
  • 軽快な動作
  • 開発環境構築が簡単
  • 他のJavaフレームワークに比べて高い生産性

Scalaのネイティブサポートということで、フレームワーク自体はScalaで書かれています。フレームワークに手を入れようとすると、Scalaで書かなくちゃなりません。

ビルドシステム・・・
play compileでビルドできます。

動作軽快、なんですかね?

開発環境構築は割と簡単です。その後の開発スピードも上がるかどうかは別問題です。


で、実際使ってみてどうよ?というところですが、いいところもありますが、人間どうしても気になるところに目がいってしまいます。さてそんな気になる点をピックアップして行きましょう。


まず、パッケージ名がダサいです。
なんとなく作ろうとすると、

package controllers
package views

みたいなパッケージ名になります。

あれ・・・Javaお得意の
org.apache.common的なパッケージ名はどこ行った・・・?
と衝撃を受けます。

ああ、どうやら僕らは古いしきたりに縛られていたようです。

2012年8月22日水曜日

東京ノマドカフェマップを公開しました。

この度、東京ノマドカフェマップを公開しました。

ノマドは最近バズワードのように扱われていますが、ノマドワーカー向けにはドロップイン利用できるコワーキングスペースなどがあり、そのサポート環境は次第に整ってきています。
そういったノマドワーカーやコワーキングスペースを応援したいと思い、このサイトを立ち上げました。


http://www.rte.jp/