Play1系でplay導入に挑戦

135 views
Skip to first unread message

平山大輔

unread,
Nov 8, 2015, 8:02:04 PM11/8/15
to 日本Playframeworkユーザー会
はじめまして。大阪で開発業をしております平山と申します。

二次請けの際は元請けのFW、直請けでもstruts系が多かったので
strutsのサポート終了他、様々な事情を考慮してplayに挑戦することにしました。

1系にするか2系にするかかなり迷った・・・まだ少し迷っているのですが
Java経験者がメインなので1系で行こうとしています。

書籍はじめ情報としては2系が多いですが、公式ドキュメントも充実しているので
まずは1系で始めて、頃合いを見て2系、Scalaに挑戦できればなと考えています。

1系の情報の少なさや更新頻度の少なさを見てかなり不安になりつつやっているところに
ちょうど1.3.2、1.4がリリースされました。

それなりに枯れてこなれてきた頃なのでしょうか?
それとも1系のユーザーってあまりいらっしゃらないのですかね?
1系がいまいちだからなのか、1をやってた人は喜び勇んで2系に移行されていったのか・・
新しくやる方は基本2系なのでしょうか。
1と2の比較みたいな記事も2013年頃のものはそれなりに見つかりましたが最近のものはあまりなく・・・

まとまりませんが、アドバイス等、背中を押していただければ幸いです。

Kazuhiro Hara

unread,
Nov 8, 2015, 8:38:54 PM11/8/15
to play_ja
平山さん、こんにちは
原と申します。

Play 1系とPlay 2系で迷われているとのこと。
自分自身は、1系、2系共に本番導入しました。共にWebサービス系(バッチなど含む)です。

1系と2系での選択ポイントですが、一つはテンプレートが結構違います。
1はGroobyテンプレート、2はScalaテンプレートです。2系だと、例えばテンプレートに渡す
引数の数や型をがっつり指定して渡すので、メリットとしてはコンパイル時にコントローラ側と
ビュー側の不整合が発見できるというのがあります。
ただScalaテンプレートのほうがビューのコーディングが難しいと思います。

1系は新機能追加などはほとんどないですがサポートが続けられているので、十分枯れていると思います。
また、同じく1系インスパイヤで派生していったninja frameworkというのもあります。

2系だと、コアコードがScalaなので、2系を導入すると、少しずつScalaに触れる機会ができるので、
エンジニア的にはやっていて面白いということはあると思います。

また、1系と2系で結構違うのが、バッチ周りです。1系だとJobという仕組みを使うのですが
2系だとAkkaという並行処理や非同期処理を行う場合の耐障害性が高いフレームワークが
根底に採用されており、こちらを使うことになります。

僕の周りでも1系で開発しメンテをしているという人もいるので、利用者がいないということ
ではないと思います。個人的には将来的にScalaを見据えているのであれば2系を導入してしまうのも
手だと思います。

すごく私的な意見では、今から導入するなら2.4以降かなという感覚ではいます。

2系で注意すべきは、マイナーアップデート(バージョン0.1単位のアップ)の際に、結構機能変更が
行われるので、マイグレーションコストがかかることがありますので、そこは注意ポイント
かもしれません。

以上、1利用者として感じたことをつらつら書いてみました。


2015年11月9日 10:02 平山大輔 <syuk...@gmail.com>:

--
このメールは Google グループのグループ「日本Playframeworkユーザー会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには play_ja+u...@googlegroups.com にメールを送信してください。
このグループに投稿するには pla...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/play_ja からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
--
<!-- #signature
=================================================================
グレーティブ合同会社 代表 原  一浩
-----------------------------------------------------------------
  E-mail              mailto:ka...@greative.jp
  URL                 http://greative.jp/
  Phone               090-5009-2899
  Address             〒135-0063
                     東京都江東区有明3丁目7番26号
                     有明フロンティアビルB棟9階
-----------------------------------------------------------------
 + 書籍:Play Framework 2徹底入門
  http://www.amazon.co.jp/exec/obidos/ASIN/4798133922/ref=nosim
 + 書籍:プロセス オブ ウェブデザイン 企画からデザインへ
  http://www.amazon.co.jp/exec/obidos/ASIN/4798110590/ref=nosim
 + 書籍:Web制作標準講座 [総合コース]
    http://www.amazon.co.jp/exec/obidos/ASIN/4798127930/ref=nosim
 + 書籍:FFmpegで作る動画共有サイト
  http://www.amazon.co.jp/exec/obidos/ASIN/483992466X/ref=nosim
=================================================================
-->

Kenji Yoshida

unread,
Nov 8, 2015, 8:40:39 PM11/8/15
to pla...@googlegroups.com
1系の事情はそれほど詳しくなく、2系のScala使ってる者ですが、
1系と2系は、インターフェイスを似せただけで、フレームワークそのものを一から書き直したはずなので、
1と2はある意味別のフレームワークだと思っていたほうがいいかもしれません。

なので、もし1系から2系への移行を考えてるなら、そんなに簡単ではないかもしれません?(実際やったことあるわけじゃなのでわかりませんが)




2015年11月9日 10:02 平山大輔 <syuk...@gmail.com>:

junmt

unread,
Nov 8, 2015, 8:52:42 PM11/8/15
to 日本Playframeworkユーザー会
こんにちは。松田と申します。

3年ほど前にplay1系でプロダクト(SFA)を作り、つい最近まで運用していました。
その中の感想です。

・play1系はかなり安定している
 play1.2.3ぐらいまでは時々バグに悩んだこともありましたが、その先は気になったことがありません。
 また、フレームワークの実装が起因してサーバダウンしたこともありませんし、仕様変更で悩んだこともありません。

・javaエンジニアは理解すればサクサクコーディングができるが、javassistの影響で混乱もしやすい
 playのソースをみたら、動いているのに実装がないように見えるとか。
 これはplay2系でも同じかもしれません。

・play2系への移行は結構大変そう
 ちゃんと見たわけではありませんが、play2.4でアプリケーション生成したところ
 あまりの違いに驚きました。印象としてはちょっと似た別物。

私も将来的にplay2系にするのであれば、最初からplay2系の方が良いと思います。

松田


2015年11月9日月曜日 10時02分04秒 UTC+9 平山大輔:

平山大輔

unread,
Nov 9, 2015, 12:15:56 AM11/9/15
to 日本Playframeworkユーザー会
原さん、Kenji Yoshidaさん、松田さん

平山です。さっそくご返答いただきましてありがとうございます。
大変ありがとうございます。

>原さん
徹底入門は購入させて頂きました!
で、1系なら意味無いだろと思いつつ・・・


2点ほど言葉足らずでした。
・1系で作ったものを後で2系で作り変える計画をしているわけではないです。
また別の機会に別のシステムを2系で作る足掛かりになるかなという話です。
どうせ新しいなら初めから新しいので・・・というのはおっしゃる通りです。

・2点目ですが、前述しました2013年頃の情報を見ていると
「Javaで2系はイマイチ」というものが多かったもので
いきなりScalaはハードル高いなというのもあって1系を選択しようとした次第です。
まずはJavaでstrutsに代わる受け皿を作るのがミッションですので。

今なら2系でもJavaで全然いけるよーというのであれば2系でもいいのかなとは思っています。
テンプレートはどっちにしてもJSPと違うのでそこはいいとして。

2系で行くとすると原さんのおっしゃる2.4以降(今だと2.4.3?)になるのでしょうか。
2系の不安点は前述のJavaだとどうなの?というのと、
まさにおっしゃられるマイナーアップデート毎の機能変更、
後はどんどん新Verが出てるのでその際の乗り換えの必要性ですね。

別に2.4が出たからといって2.3で作ったものを何とかしないといけないわけではないとは思っていますが
そこはそれでよいですよね?

更新されてないから不安だと言ってみたり
どんどん更新されてるから不安だと言ってみたり
実に勝手な話なのですけれども。

よろしくお願いいたします。

Kazuhiro Hara

unread,
Nov 9, 2015, 1:25:55 AM11/9/15
to play_ja
平山さん

原です

追加情報ありがとうございます。

1系で作ったものを後で2系で作り変える計画をしているわけではないです。

はい、確かに2.0から2.4とかならまだしも、1系からはかなりアップデートが
しんどそうという気がします。フォーム周りなどまったく考え方が違う気がするので。
ただ、1系は派生フレームワークが作られるほど根強い人気があるので、
やみつきになる感は高いです。

個人的な印象
・1系 : 
Javaで書いていく割にはいろいろとよしなにやってくれる。

・2系 Java : 
Viewに至るまでとにかく型で整合性をつけていく。整ってしまえば、固くて安心感ある。
JsonベースとかのAPIサーバを作る場合はすごく向いている気がする

Javaでstrutsに代わる受け皿

ここ、実はちょっと気になってたポイントでして、今までJavaが担ってきたような部分を
置き換える場合、用途によってはもっとゆっくりとバージョンアップしていく
フレームワークのほうが向いているのかもという気もしたりします。
作るもの、そしてそれを何年つかうのかとかによるのだと思いますが。。

今なら2系でもJavaで全然いけるよーというのであれば2系でもいいのかな

Java版も実際コードの中をさぐっていくと結局ScalaでできたPlayの土台部分に
たどりつくので、あとは載っているJava用のAPIの部分の出来ということに
なると思います。以前はPlayの中に一枚岩のようにORMも組み込まれていましたが
外部プラグイン化なども進み、自由に組み合わせて使えています。
ベンチマーク結果などを見ると、Java版のほうが若干遅いのですが、これは
Scalaの上にAPI層が薄くいるので、そのオーバーヘッドもあると思っています。

ちなみに、Scalaのコードを混ぜることができるので、コレクションの操作のとこだけは
Scalaのコードで楽をしてたこととかあります。

2.4が出たからといって2.3で作ったものを何とかしないといけないわけではないとは思っていますが

実際、Play 2.0系や2.1系などをバグフィックスなどを当てつつ運用しているものも
ありますし、必要になり次第きちんと移行時間をつくって移行していけば
大丈夫なのではないでしょうか。

2.4系までは、コントローラのメソッドをstaticメソッドとして書いていく方式だったの
ですが、2.4系からDIが本格的に組み込まれ、インスタンスメソッドとして書いていく形
が使えるようになっています(従来のも使えるが、おそらくDIベースが主流になりそう感ある)

なので、やるならこの境界の違いがあるかなあと。
ちなみに1系でもコントローラはstaticメソッドベースです。




2015年11月9日 14:15 平山大輔 <syuk...@gmail.com>:

--
このメールは Google グループのグループ「日本Playframeworkユーザー会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには play_ja+u...@googlegroups.com にメールを送信してください。
このグループに投稿するには pla...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/play_ja からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

zephiransas

unread,
Nov 9, 2015, 1:53:39 AM11/9/15
to pla...@googlegroups.com
こんにちは。吉田と申します。

#横槍になるかもですが・・・

> まずはJavaでstrutsに代わる受け皿を作るのがミッションですので。

Playも選択肢はに十分はいると思いますが、例えばSpring BootやJavaEEなどはいかがでしょう?

Spring Bootはそれなりに情報がありますし、Springは歴史がありますので、Spring関連を触ったことのある
技術者を確保しやすい、といったメリットもあるのではないかと思われます。

また書籍もいい書籍があります。まずは
「はじめてのSpring Boot」
http://www.amazon.co.jp/dp/4777518655/ref=cm_sw_r_tw_dp_wgeqwb1BYPR30
が参考になるのではないかと思います。

JavaEEは日本語の書籍は少ないのですが、やはりJavaの標準であるということから、そこそこ安心感
はあるような気がします。

以上、ご参考までに・・・

#PlayのMLで、他のFWの話題を出しちゃったこと、ご容赦いただければ幸いです^^;
> --
> このメールは Google グループのグループ「日本Playframeworkユーザー会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには play_ja+u...@googlegroups.com
> にメールを送信してください。
> このグループに投稿するには pla...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/play_ja からこのグループにアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
いつもお世話になります。吉田です。

以上、宜しくお願いいたします。

平山大輔

unread,
Nov 9, 2015, 10:01:57 PM11/9/15
to 日本Playframeworkユーザー会
原さん
吉田さん

平山です。
引き続きアドバイスいただきましてありがとうございます。

Javaでstrutsに代わる受け皿
私自身もずっと引っかかっていたところでして、
迷わず「Playで行くよ!」となかなか言い切れない状況でした。

原さんのおっしゃるゆっくりバージョンアップしていくフレームワーク、
具体的には吉田さんのおっしゃるJavaEEやSpring Bootになるかと思いますが
そちらももちろん候補にはいれていました。

ですがこういう場で勧めていただきましたのであらためて向き合って
もう一度検討したいと思います。

Playはまた別の機会に使えるよう個人的にもうちょっと触っていきたいと思います。
正確に比較もできますし。

ありがとうございました。


ここからは蛇足で
じゃあPlayのどこに魅力を感じたのか、という点について

1にフルスタックであることは大きいです。
JavaEEにしたらWebサーバやサーブレットは何にするの?WebLogic買わないとだめなの?だとか
そのあたりの手間も無くせればという思いもあります。

2に生産性やテストのしやすさですが
こちらはまだどのFWもがっつり触っているわけではないので厳密に比較できておらず
一部のサンプルや動画でのイメージだけですね。
どれも良くなっているとは思っています。

3に、これは完全に雰囲気なのですがPlayの情報を探すと
Playやってる方はとても生き生きしているような気がしたので。
「楽しい」という表現される方が一番多いFWだと感じています。
・・・コンソールでいきなりhave fun!と言ってくることと無関係かはわかりませんが。

以上です。
2度目になりますが、ありがとうございました。

Reply all
Reply to author
Forward
0 new messages