読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

【framework】play2.0とGrails2.3を触ってみた感想【SaStrutsからの脱却】

f:id:treeapps:20131229211245j:plain
【java】Grailsを学ぶ:Vol.01:GORMのDB定義【framework】 - treeのメモ帳
【java】Grailsを学ぶ:Vol.02:resource pluginでcss・jsをinclude!【framework】 - treeのメモ帳

最近SaStrutsから脱却すべく、Grailsを勉強中のtreeです。
Playの方はドキュメントを全て読んで少し触ってみた程度で、
Grailsは実際にwebアプリの開発中です。

両者を触ってみた小学生並の感想を書いてみたいと思います。

SaStrutsとの比較など

両者とも先進的なフレームワークである

両者とも文句なしに先進的なフレームワークだと思いました。
Playの方はakkaと統合していたり、servletから脱却していたり、restfull対応しています。
GrailsRORの機能を取り込んでいたり、gemのようにplugin形式で簡単に機能追加できます。

Springについては、そもそもGrailsはSpringがベースになっているので今回は比較対象にしません。

Grailsは、実はGrailsという皮を被ったSpring MVCアプリケーションです。 Spring MVCSpring frameworkに含まれているMVCウェブアプリケーションフレームワークです。 Spring MVCStrutsのようなフレームワークと同様に、使いやすさの面においては多少難があるため悩まされますが、その上に他のフレームワークを構築するには申し分ないフレームワークであり、Grailsにとってはすばらしい設計とアーキテクチャであるといえます。

http://grails.jp/doc/latest/guide/spring.html#theUnderpinningsOfGrails

Seasar Sastrutsと比較して

Sastrutsstrutsの薄いラッパー的なものだからかもしれませんが、原始時代にタイムスリップしたと錯覚する程の低機能に感じます。
便利ではありますが、rest対応してないのは化石としかいいようがありません。
jsonを取得するのにあれこれ頑張らないと取得できないというはちょっと・・・

データのバインディング周りとバリデーションも貧弱です。
ビルド・デプロイ周りへの配慮は全く無く、全部自分でやってね、テヘッ♪という感じでため息がでます。

ただ、s2jdbcだけはいいと思っています。ほどほどの機能で習得も容易です。

PlayとGrailsそれぞれの感想

Play

良いと思った点

  • akkaとの統合は良い。先進的な並列処理が簡単に使える。
  • servletからの脱却している。が、それがいい事なのか解らない。
  • WSクラスによるhttpリクエストが簡単・便利過ぎ!!HttpClient4?何それ?
  • routesファイルのルーティングが良い。routesを見るだけでURL一覧代わりにもなる。
  • ビルドがsbtベース(ビルドシステム)
  • FWの機能に無い事もjavaで強引に解決できる。
  • 機能が多くないので習得はし易い。

HTTPリクエスト関連はPlayの方が圧倒的に使いやすく、高機能でパフォーマンスも高いです。
今までHttpClient4を頑張って使っていた方は、今すぐ窓の外に投げ捨てたくなります。

悪いと思った点

  • Grailsより生産性は低い。
  • scalaを中途半端に使っている点が気になる。
  • ver1→2のアップ時にいきなりテンプレートエンジンのgroovyを捨て去りscalaに変更。次回メジャーアップデートが恐い。
  • 独特なscalaのビューがキモイ。

そもそもPlay開発元のTypesafe社は、Scala言語の創始者が立ち上げた会社です。
つまり最初からScala推しなのは解っている事なのですが、v1で何故groovyだったのか謎です。
最初からscalaにしておけば、無用な心配は与えなかったでしょう。

良いと思った点

resource系(js,css等)が強いです。jsに至っては標準で自動的にcombineまでしてくれます。
更にそれらをキャッシュするかしないかも簡単に設定可能です。

悪いと思った点

  • 多機能故に習得に時間がかかる。
  • mavenを使っているのが残念。なぜGradleでないのか。
  • 個人的にhibernateは嫌い。重厚過ぎる。

共通

良いと思った点

  • 日本語ドキュメントがきっちり存在している。playgrails
  • ORMは標準搭載。PlayはEbean、GrailsはHibernate4。
  • migration機能有り。Playはエボリューション機能、GrailsはDatabase Migration Plugin。
  • Rest対応しているので、backbone.js等のclient mvc frameworkと非常に相性が良い。
  • ビルド・デプロイが標準機能として存在。PlayはSBT、GrailsはAntかMaven

悪いと思った点

  • 書籍が少ない。記事の最後に、Playの分厚い良書を紹介しています。Grailsは・・・
  • シンプル・高機能なメール送信機能が欲しい。

現実的な選択

会社ではPlay、個人ではGrails
となってしまうでしょう。
Grailsは今までのjava frameworkとは大分毛色が違うので習得に時間がかかります。
一方PlayはSaStrutsやSpringが解れば習得も容易です。

個人的には未来を考えるとGrailsを推しますが、現実的には会社ではPlay派に押されると思われます。
というか、実際私の会社ではPlay派しかいないし、Grailsの使用実績が0です・・

なんか個人的にはPlayを触っても、確かな先進性は感じるものの、劇的な進化を感じないのが嫌なんですよね。。。
とはいえ仕事ではGrailsの生産性よりPlayの習得の容易さと使い易さが選ばれる事が多いので、習得しておいて損は無いというか、習得しないと置いてかれますね。

ちなみに嫌とかいいつつ私は↓のPlay本を購入し、読みふけっています。
ようやく日本語のボリュームたっぷりなPlay本が発売されたので、是非読みましょう!
ちなみに↓のPlay本は、なんと529ページもあります!!

ここまで小並感を書きましたが、世間ではどっち派が多いのでしょうかね。
あなたはPlay派ですか?Grails派ですか?

Grails徹底入門

Grails徹底入門

  • 作者: 山田正樹,山本剛,上原潤二,永井昌子,杉山清美,杉浦孝博,笠原史郎,香月孝太,福岡竜一,伊堂寺北斗
  • 出版社/メーカー: 翔泳社
  • 発売日: 2008/08/26
  • メディア: 大型本
  • 購入: 3人 クリック: 42回
  • この商品を含むブログ (28件) を見る